EDACはどのようにエラー通知を受け取りますか? BIOSまたはメモリコントローラから?

EDACはどのようにエラー通知を受け取りますか? BIOSまたはメモリコントローラから?

EDAC を使用して DIMM のエラーを監視します。

EDACがこれらのエラーについてどのように通知するのか疑問に思います。

  1. メモリコントローラにはBIOSに通知する割り込みがあり、BIOSはOSに通知します。
  2. メモリコントローラは、オペレーティングシステムに割り込みを直接通知します。

キーワードを見ました。ファームウェア優先モード。

この設定はBIOSまたはメモリコントローラに設定されていますか?

dmesg丸太:

dmesg | grep -i edac
[    0.346813] EDAC MC: Ver: 3.0.0
[   97.989717] EDAC sbridge: Seeking for: PCI ID 8086:2fa0
[   97.989727] EDAC sbridge: Seeking for: PCI ID 8086:2fa0
[   97.989738] EDAC sbridge: Seeking for: PCI ID 8086:2f60
[   97.989742] EDAC sbridge: Seeking for: PCI ID 8086:2fa8
[   97.989745] EDAC sbridge: Seeking for: PCI ID 8086:2fa8
[   97.989748] EDAC sbridge: Seeking for: PCI ID 8086:2f71
[   97.989751] EDAC sbridge: Seeking for: PCI ID 8086:2f71
[   97.989754] EDAC sbridge: Seeking for: PCI ID 8086:2faa
[   97.989757] EDAC sbridge: Seeking for: PCI ID 8086:2faa
...
...
[   97.989927] EDAC MC0: Giving out device to module sb_edac controller Haswell SrcID#0_Ha#0: DEV 0000:ff:12.0 (INTERRUPT)
[   97.989927] EDAC sbridge:  Ver: 1.1.2

答え1

状況によって異なり、どちらも可能です。

メモリコントローラはエラーを一度報告するとエラーがクリアされます。したがって、システムファームウェアとオペレーティングシステムの両方がEDACレポートを処理しようとすると、競合状態が発生し、エラーが欠落する可能性があります。したがって、適切に構成されたシステムは、EDACレポートを直接処理したり、システムファームウェアをループから取り出したり、適切なACPIドライバ(GHES)を使用してシステムファームウェアからエラーを受け取ります(これは「ファームウェア優先」モードです)。

「直接」EDACドライバを使用すると、オペレーティングシステムはメモリコントローラのマシンチェック例外(MCE)を処理し、適切な処置をとることができます。 GHESドライバにより、システムファームウェアはMCEを処理し、オペレーティングシステムに通知することができます。

シナリオによって異なるログが表示されます。起動ログは設定が何であるかを知らせる必要があります。メモリエラーが発生した場合は、ファームウェア優先モードのログに「ソフトウェアイベント」と表示され、それ以外の場合は「ハードウェアイベント」と表示されます。

これらの設定は、ファームウェア設定とオペレーティングシステム構成の組み合わせです。ほとんどの「ローエンド」ECC対応システムには、対応するファームウェア構成(アクセスログのみ)がなく、すべてOSによって異なります。高度なサーバーにはファームウェア構成に設定があり、そのマニュアルに記載されている構成方法(オペレーティングシステムと共に)があります。

関連情報