Skip to contentSkip to conversation

xen/mce: don't issue error message for failed /dev/mcelog registration

PATCH Superseded Juergen Gross 2 participants 7 messages Jun 13, 2017

Subsystems (2)

v1 of 3 Superseded Latest is v3 →

lore
Share & tools
lore

Juergen Gross

author maintainer
#0 lore raw

PATCH 1/1 xen/mce: don't issue error message for failed /dev/mcelog registration

When running under Xen as dom0 /dev/mcelog is being registered by Xen instead of the normal mcelog driver. Avoid an error message being issued by the mcelog driver in this case. Instead issue an informative message that Xen has registered the device.

---
 arch/x86/kernel/cpu/mcheck/dev-mcelog.c | 6 +++++-
 drivers/xen/mcelog.c                    | 2 ++
 2 files changed, 7 insertions(+), 1 deletion(-)
arch/x86/kernel/cpu/mcheck/dev-mcelog.c +5 -1
index 9c632cb88546..43fbe2a70051 100644
@@ -14,6 +14,7 @@
 #include <linux/slab.h>
 #include <linux/kmod.h>
 #include <linux/poll.h>
+#include <xen/xen.h>
 
 #include "mce-internal.h"
 
@@ -387,10 +388,13 @@ static __init int dev_mcelog_init_device(void)
 
 	/* register character device /dev/mcelog */
 	err = misc_register(&mce_chrdev_device);
-	if (err) {
+	/* Xen dom0 might have registered the device already. */
+	if (err && (err != -EBUSY || !xen_initial_domain() ||
+		    !IS_ENABLED(CONFIG_XEN_MCE_LOG))) {
 		pr_err("Unable to init device /dev/mcelog (rc: %d)\n", err);
 		return err;
 	}
+
 	mce_register_decode_chain(&dev_mcelog_nb);
 	return 0;
 }
drivers/xen/mcelog.c +2 -0
index a493c7315e94..6cc1c15bcd84 100644
@@ -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:
Signature · 1 line
2.12.3
maintainer
#1 lore raw
Quoted 24 lines · Juergen Gross

When running under Xen as dom0 /dev/mcelog is being registered by Xen instead of the normal mcelog driver. Avoid an error message being issued by the mcelog driver in this case. Instead issue an informative message that Xen has registered the device.

---
 arch/x86/kernel/cpu/mcheck/dev-mcelog.c | 6 +++++-
 drivers/xen/mcelog.c                    | 2 ++
 2 files changed, 7 insertions(+), 1 deletion(-)
arch/x86/kernel/cpu/mcheck/dev-mcelog.c +1 -0
index 9c632cb88546..43fbe2a70051 100644
@@ -14,6 +14,7 @@
 #include <linux/slab.h>
 #include <linux/kmod.h>
 #include <linux/poll.h>
+#include <xen/xen.h>
 
 #include "mce-internal.h"
 

arch/x86/kernel/cpu/mcheck/dev-mcelog.c static __init int dev_mcelog_init_device(void) · line 394

Quoted 8 lines
arch/x86/kernel/cpu/mcheck/dev-mcelog.c +3 -1
@@ -387,10 +388,13 @@ static __init int dev_mcelog_init_device(void)
 
 	/* register character device /dev/mcelog */
 	err = misc_register(&mce_chrdev_device);
-	if (err) {
+	/* Xen dom0 might have registered the device already. */
+	if (err && (err != -EBUSY || !xen_initial_domain() ||
+		    !IS_ENABLED(CONFIG_XEN_MCE_LOG))) {
 		pr_err("Unable to init device /dev/mcelog (rc: %d)\n", err);

Let's simplify that:

	if (err) {
		if (err == -EBUSY)
			const char *s = ", already registered";
		else
			const char *s = "";

		pr_err("Unable to init device /dev/mcelog (rc: %d)%s\n", err, s);

	}

Thanks.

Signature · 9 lines
Regards/Gruss,
    Boris.

Good mailing practices for 400: avoid top-posting and trim the reply.

_______________________________________________
Xen-devel mailing list
[email protected]
https://lists.xen.org/xen-devel
maintainer
#2 lore raw
In reply to Juergen Gross
Quoted 24 lines · Juergen Gross

When running under Xen as dom0 /dev/mcelog is being registered by Xen instead of the normal mcelog driver. Avoid an error message being issued by the mcelog driver in this case. Instead issue an informative message that Xen has registered the device.

---
 arch/x86/kernel/cpu/mcheck/dev-mcelog.c | 6 +++++-
 drivers/xen/mcelog.c                    | 2 ++
 2 files changed, 7 insertions(+), 1 deletion(-)
arch/x86/kernel/cpu/mcheck/dev-mcelog.c +1 -0
index 9c632cb88546..43fbe2a70051 100644
@@ -14,6 +14,7 @@
 #include <linux/slab.h>
 #include <linux/kmod.h>
 #include <linux/poll.h>
+#include <xen/xen.h>
 
 #include "mce-internal.h"
 

arch/x86/kernel/cpu/mcheck/dev-mcelog.c static __init int dev_mcelog_init_device(void) · line 394

Quoted 8 lines
arch/x86/kernel/cpu/mcheck/dev-mcelog.c +3 -1
@@ -387,10 +388,13 @@ static __init int dev_mcelog_init_device(void)
 
 	/* register character device /dev/mcelog */
 	err = misc_register(&mce_chrdev_device);
-	if (err) {
+	/* Xen dom0 might have registered the device already. */
+	if (err && (err != -EBUSY || !xen_initial_domain() ||
+		    !IS_ENABLED(CONFIG_XEN_MCE_LOG))) {
 		pr_err("Unable to init device /dev/mcelog (rc: %d)\n", err);

Let's simplify that:

	if (err) {
		if (err == -EBUSY)
			const char *s = ", already registered";
		else
			const char *s = "";

		pr_err("Unable to init device /dev/mcelog (rc: %d)%s\n", err, s);

	}

Thanks.

Signature · 4 lines
Regards/Gruss,
    Boris.

Good mailing practices for 400: avoid top-posting and trim the reply.
author maintainer
#3 lore raw
Quoted 36 lines · Borislav Petkov
Quoted 24 lines · Juergen Gross

When running under Xen as dom0 /dev/mcelog is being registered by Xen instead of the normal mcelog driver. Avoid an error message being issued by the mcelog driver in this case. Instead issue an informative message that Xen has registered the device.

---
 arch/x86/kernel/cpu/mcheck/dev-mcelog.c | 6 +++++-
 drivers/xen/mcelog.c                    | 2 ++
 2 files changed, 7 insertions(+), 1 deletion(-)
arch/x86/kernel/cpu/mcheck/dev-mcelog.c +1 -0
index 9c632cb88546..43fbe2a70051 100644
@@ -14,6 +14,7 @@
 #include <linux/slab.h>
 #include <linux/kmod.h>
 #include <linux/poll.h>
+#include <xen/xen.h>
 
 #include "mce-internal.h"
 

arch/x86/kernel/cpu/mcheck/dev-mcelog.c static __init int dev_mcelog_init_device(void) · line 394

Quoted 8 lines
arch/x86/kernel/cpu/mcheck/dev-mcelog.c +3 -1
@@ -387,10 +388,13 @@ static __init int dev_mcelog_init_device(void)
 
 	/* register character device /dev/mcelog */
 	err = misc_register(&mce_chrdev_device);
-	if (err) {
+	/* Xen dom0 might have registered the device already. */
+	if (err && (err != -EBUSY || !xen_initial_domain() ||
+		    !IS_ENABLED(CONFIG_XEN_MCE_LOG))) {
 		pr_err("Unable to init device /dev/mcelog (rc: %d)\n", err);

Let's simplify that:

Quoted 7 lines
	if (err) {
		if (err == -EBUSY)
			const char *s = ", already registered";
		else
			const char *s = "";

		pr_err("Unable to init device /dev/mcelog (rc: %d)%s\n", err, s);

I'd rather avoid the pr_err() in the -EBUSY case. What about:

if (err) {
	if (err == -EBUSY)
		pr_info("Unable to init device /dev/mcelog, already registered");
	else
		pr_err("Unable to init device /dev/mcelog (rc: %d)\n", err);
}

Juergen

_______________________________________________
Xen-devel mailing list
[email protected]
https://lists.xen.org/xen-devel

author maintainer
#4 lore raw
In reply to Borislav Petkov
Quoted 36 lines · Borislav Petkov
Quoted 24 lines · Juergen Gross

When running under Xen as dom0 /dev/mcelog is being registered by Xen instead of the normal mcelog driver. Avoid an error message being issued by the mcelog driver in this case. Instead issue an informative message that Xen has registered the device.

---
 arch/x86/kernel/cpu/mcheck/dev-mcelog.c | 6 +++++-
 drivers/xen/mcelog.c                    | 2 ++
 2 files changed, 7 insertions(+), 1 deletion(-)
arch/x86/kernel/cpu/mcheck/dev-mcelog.c +1 -0
index 9c632cb88546..43fbe2a70051 100644
@@ -14,6 +14,7 @@
 #include <linux/slab.h>
 #include <linux/kmod.h>
 #include <linux/poll.h>
+#include <xen/xen.h>
 
 #include "mce-internal.h"
 

arch/x86/kernel/cpu/mcheck/dev-mcelog.c static __init int dev_mcelog_init_device(void) · line 394

Quoted 8 lines
arch/x86/kernel/cpu/mcheck/dev-mcelog.c +3 -1
@@ -387,10 +388,13 @@ static __init int dev_mcelog_init_device(void)
 
 	/* register character device /dev/mcelog */
 	err = misc_register(&mce_chrdev_device);
-	if (err) {
+	/* Xen dom0 might have registered the device already. */
+	if (err && (err != -EBUSY || !xen_initial_domain() ||
+		    !IS_ENABLED(CONFIG_XEN_MCE_LOG))) {
 		pr_err("Unable to init device /dev/mcelog (rc: %d)\n", err);

Let's simplify that:

Quoted 7 lines
	if (err) {
		if (err == -EBUSY)
			const char *s = ", already registered";
		else
			const char *s = "";

		pr_err("Unable to init device /dev/mcelog (rc: %d)%s\n", err, s);

I'd rather avoid the pr_err() in the -EBUSY case. What about:

if (err) {
	if (err == -EBUSY)
		pr_info("Unable to init device /dev/mcelog, already registered");
	else
		pr_err("Unable to init device /dev/mcelog (rc: %d)\n", err);
}

Juergen

maintainer
#5 lore raw
Quoted 8 lines · Juergen Gross

I'd rather avoid the pr_err() in the -EBUSY case. What about:

if (err) {
	if (err == -EBUSY)
		pr_info("Unable to init device /dev/mcelog, already registered");
	else
		pr_err("Unable to init device /dev/mcelog (rc: %d)\n", err);
}

Sure.

Thanks.

Signature · 9 lines
Regards/Gruss,
    Boris.

Good mailing practices for 400: avoid top-posting and trim the reply.

_______________________________________________
Xen-devel mailing list
[email protected]
https://lists.xen.org/xen-devel
maintainer
#6 lore raw
In reply to Juergen Gross
Quoted 8 lines · Juergen Gross

I'd rather avoid the pr_err() in the -EBUSY case. What about:

if (err) {
	if (err == -EBUSY)
		pr_info("Unable to init device /dev/mcelog, already registered");
	else
		pr_err("Unable to init device /dev/mcelog (rc: %d)\n", err);
}

Sure.

Thanks.

Signature · 4 lines
Regards/Gruss,
    Boris.

Good mailing practices for 400: avoid top-posting and trim the reply.