EDAC, sb_edac: Modify H/W event reporting policy
authorChen, Gong <gong.chen@linux.intel.com>
Fri, 6 Dec 2013 06:17:09 +0000 (01:17 -0500)
committerBorislav Petkov <bp@suse.de>
Wed, 11 Dec 2013 17:19:25 +0000 (18:19 +0100)
Newer Intel platforms support more than one method to report H/W event.
On this kind of platform, H/W event report can adopt new method and
traditional EDAC method should be disabled. Moreover, if EDAC event
report method is set to *force*, it means event must be reported via
EDAC interface. IOW, it overrides the default event report policy.

Signed-off-by: Chen, Gong <gong.chen@linux.intel.com>
Acked-by: Tony Luck <tony.luck@intel.com>
Link: http://lkml.kernel.org/r/1386310630-12529-3-git-send-email-gong.chen@linux.intel.com
[ Boris: massage commit and error messages ]
Signed-off-by: Borislav Petkov <bp@suse.de>
drivers/edac/sb_edac.c

index 8472405..e2e2cb3 100644 (file)
@@ -1829,6 +1829,9 @@ static int sbridge_mce_check_error(struct notifier_block *nb, unsigned long val,
        struct mem_ctl_info *mci;
        struct sbridge_pvt *pvt;
 
+       if (get_edac_report_status() == EDAC_REPORTING_DISABLED)
+               return NOTIFY_DONE;
+
        mci = get_mci_for_node_id(mce->socketid);
        if (!mci)
                return NOTIFY_BAD;
@@ -2142,9 +2145,10 @@ static int __init sbridge_init(void)
        opstate_init();
 
        pci_rc = pci_register_driver(&sbridge_driver);
-
        if (pci_rc >= 0) {
                mce_register_decode_chain(&sbridge_mce_dec);
+               if (get_edac_report_status() == EDAC_REPORTING_DISABLED)
+                       sbridge_printk(KERN_WARNING, "Loading driver, error reporting disabled.\n");
                return 0;
        }