All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCHv1] x86: rtc_cmos platform device requires legacy irqs
@ 2015-12-03 10:43 David Vrabel
  2015-12-03 11:23 ` Vitaly Kuznetsov
                   ` (3 more replies)
  0 siblings, 4 replies; 21+ messages in thread
From: David Vrabel @ 2015-12-03 10:43 UTC (permalink / raw)
  To: x86
  Cc: David Vrabel, Thomas Gleixner, Ingo Molnar, H. Peter Anvin,
	linux-kernel, xen-devel, Konrad Rzeszutek Wilk, Boris Ostrovsky

Adding the rtc platform device when there are no legacy irqs (no
legacy PIC) causes a conflict with other devices that end up using the
same irq number.

In a single VCPU Xen PV guest we should have:

/proc/interrupts:
           CPU0
  0:       4934  xen-percpu-virq      timer0
  1:          0  xen-percpu-ipi       spinlock0
  2:          0  xen-percpu-ipi       resched0
  3:          0  xen-percpu-ipi       callfunc0
  4:          0  xen-percpu-virq      debug0
  5:          0  xen-percpu-ipi       callfuncsingle0
  6:          0  xen-percpu-ipi       irqwork0
  7:        321   xen-dyn-event     xenbus
  8:         90   xen-dyn-event     hvc_console
  ...

But hvc_console cannot get its interrupt because it is already in use
by rtc0 and the console does not work.

  genirq: Flags mismatch irq 8. 00000000 (hvc_console) vs. 00000000 (rtc0)

The rtc_cmos device requires a particular legacy irq so don't add it
if there are no legacy irqs.

Reported-by: Sander Eikelenboom <linux@eikelenboom.it>
Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Tested-by: Sander Eikelenboom <linux@eikelenboom.it>
---
 arch/x86/kernel/rtc.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/x86/kernel/rtc.c b/arch/x86/kernel/rtc.c
index cd96852..07c70f1 100644
--- a/arch/x86/kernel/rtc.c
+++ b/arch/x86/kernel/rtc.c
@@ -14,6 +14,7 @@
 #include <asm/time.h>
 #include <asm/intel-mid.h>
 #include <asm/rtc.h>
+#include <asm/i8259.h>
 
 #ifdef CONFIG_X86_32
 /*
@@ -200,6 +201,10 @@ static __init int add_rtc_cmos(void)
 	}
 #endif
 
+	/* RTC uses legacy IRQs. */
+	if (!nr_legacy_irqs())
+		return -ENODEV;
+
 	platform_device_register(&rtc_device);
 	dev_info(&rtc_device.dev,
 		 "registered platform RTC device (no PNP device found)\n");
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2015-12-08 21:28 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-12-03 10:43 [PATCHv1] x86: rtc_cmos platform device requires legacy irqs David Vrabel
2015-12-03 11:23 ` Vitaly Kuznetsov
2015-12-03 11:23 ` [Xen-devel] " Vitaly Kuznetsov
2015-12-03 15:06   ` David Vrabel
2015-12-03 15:06   ` [Xen-devel] " David Vrabel
2015-12-04 14:06 ` David Vrabel
2015-12-04 14:06 ` [Xen-devel] " David Vrabel
2015-12-04 15:24   ` David Vrabel
2015-12-04 15:35     ` Boris Ostrovsky
2015-12-04 15:52       ` Vitaly Kuznetsov
2015-12-04 16:14         ` Boris Ostrovsky
2015-12-04 16:14         ` [Xen-devel] " Boris Ostrovsky
2015-12-04 15:52       ` Vitaly Kuznetsov
2015-12-04 15:35     ` Boris Ostrovsky
2015-12-08 21:02     ` [Xen-devel] " Thomas Gleixner
2015-12-08 21:15       ` Boris Ostrovsky
2015-12-08 21:27         ` Thomas Gleixner
2015-12-08 21:27         ` [Xen-devel] " Thomas Gleixner
2015-12-08 21:15       ` Boris Ostrovsky
2015-12-08 21:02     ` Thomas Gleixner
2015-12-04 15:24   ` David Vrabel

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.