Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759815AbbLCKno (ORCPT ); Thu, 3 Dec 2015 05:43:44 -0500 Received: from smtp02.citrix.com ([66.165.176.63]:15904 "EHLO SMTP02.CITRIX.COM" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752459AbbLCKni (ORCPT ); Thu, 3 Dec 2015 05:43:38 -0500 X-IronPort-AV: E=Sophos;i="5.20,377,1444694400"; d="scan'208";a="322346707" From: David Vrabel To: CC: David Vrabel , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , , , Konrad Rzeszutek Wilk , Boris Ostrovsky Subject: [PATCHv1] x86: rtc_cmos platform device requires legacy irqs Date: Thu, 3 Dec 2015 10:43:24 +0000 Message-ID: <1449139404-25101-1-git-send-email-david.vrabel@citrix.com> X-Mailer: git-send-email 2.1.4 MIME-Version: 1.0 Content-Type: text/plain X-DLP: MIA1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2009 Lines: 65 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 Signed-off-by: David Vrabel Tested-by: Sander Eikelenboom --- 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 #include #include +#include #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 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/