x86/MCE, xen/mcelog: Make /dev/mcelog registration messages more precise
authorJuergen Gross <jgross@suse.com>
Tue, 20 Jun 2017 21:16:37 +0000 (23:16 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Tue, 20 Jun 2017 21:25:19 +0000 (23:25 +0200)
When running under Xen as dom0, /dev/mcelog is being provided by Xen
instead of the normal mcelog character device of the MCE core. Convert
an error message being issued by the MCE core in this case to an
informative message that Xen has registered the device.

Signed-off-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: xen-devel@lists.xenproject.org
Cc: Tony Luck <tony.luck@intel.com>
Cc: linux-edac <linux-edac@vger.kernel.org>
Link: http://lkml.kernel.org/r/20170614084059.19294-1-jgross@suse.com
arch/x86/kernel/cpu/mcheck/dev-mcelog.c
drivers/xen/mcelog.c

index a80427c30c93958bf2d96b3e7e5d9d19b77e27b3..10cec43aac389790e591f76be31de5cda0780c1c 100644 (file)
@@ -415,9 +415,15 @@ static __init int dev_mcelog_init_device(void)
        /* register character device /dev/mcelog */
        err = misc_register(&mce_chrdev_device);
        if (err) {
-               pr_err("Unable to init device /dev/mcelog (rc: %d)\n", err);
+               if (err == -EBUSY)
+                       /* Xen dom0 might have registered the device already. */
+                       pr_info("Unable to init device /dev/mcelog, already registered");
+               else
+                       pr_err("Unable to init device /dev/mcelog (rc: %d)\n", err);
+
                return err;
        }
+
        mce_register_decode_chain(&dev_mcelog_nb);
        return 0;
 }
index a493c7315e94007f2a621f037e83a34bce7e7a47..6cc1c15bcd847f380e2aa19a97382e751baca2c5 100644 (file)
@@ -408,6 +408,8 @@ static int __init xen_late_init_mcelog(void)
        if (ret)
                goto deregister;
 
+       pr_info("/dev/mcelog registered by Xen\n");
+
        return 0;
 
 deregister: