Ying,

can you please try this patch to see if the problem is gone on your side?

Thanks,
-Aubrey


On 2015/3/26 20:13, Li, Aubrey wrote:
> On 2015/3/25 15:22, Huang Ying wrote:
>> [   28.745155] genirq: Flags mismatch irq 8. 00000080 (mmc0) vs. 00000000 
>> (rtc0)
> 
> okay, I replicated this on my side now.
> 
> Firstly, I don't think the patch did anything wrong. However, the patch
> exposes a few issues FWICT currently:
> 
> - Should we enable RTC Alarm the kind of Fixed hardware event in
> hardware-reduced ACPI mode? I found RTC required registers in ACPI PM
> block are not valid(register address = 0)
> 
> - I checked RTC device in ACPI table, there is no interrupt resource
> under RTC(firmware bug?), So irq 8 should be a hardcoded number. The
> question is, shouldn't we update bitmap of allocated_irqs here? Or we
> assume irq0~15 is reserved? If we assume IRQ0~15 is reserved, then
> requesting IRQ8 without updating bitmap of allocated_irqs is fine.
> 
> - Because we don't update bitmap of allocated_irqs when RTC request
> IRQ8, so when MMC driver allocate irq resource, it's possible it gets
> irq8, so we saw "genirq: Flags mismatch irq 8. 00000080 (mmc0) vs.
> 00000000 (rtc0)". So here is another question, when we dynamically
> allocate irq from irq domain, shouldn't we start from IRQ16? Yes, if
> allocated_irqs bitmap is updated, then it should be fine if we start
> from IRQ1.
> 
> What the patch does is, it changes the behavior of how we allocate irq
> from irq domain. Previously we have legacy IRQs so we statically assign
> IRQ numbers for IOAPICs to host legacy IRQs, and now we allocate every
> IRQ dynamically.
> 
> For me I think I can deliver a patch against RTC driver to update
> allocated_irqs bitmap, also, we should free irq when we found RTC ACPI
> registers are not valid.
> 
> Certainly I'm open to any suggestions.
> 
> Thanks,
> -Aubrey
> 

>From 46524ace94eaf68c9719725472ab4ea28d079a7b Mon Sep 17 00:00:00 2001
From: Aubrey Li <aubrey...@intel.com>
Date: Mon, 30 Mar 2015 10:50:09 -0500
Subject: [PATCH] x86/platform, acpi: Statically assign IRQ numbers in ACPI
 hardware reduced mode

We should be able to dynamically assign IRQ number on the platform in ACPI
Hardware-reduced mode, but on the Bay Trail-T(ASUS-T100) platform, there is
a RTC device still using the legacy hardcoded IRQ8, which could cause the
following error:

7486341a98f: genirq: Flags mismatch irq 8. 00000080 (mmc0) vs. 00000000 (rtc0)

So we want to statically assign IRQ numbers in ACPI hardware reduced mode to
fix this error

Signed-off-by: Li Aubrey <aubrey...@linux.intel.com>
Cc: Alan Cox <a...@linux.intel.com>
Cc: Len Brown <len.br...@intel.com>
Cc: Rafael J. Wysocki <rafael.j.wyso...@intel.com>
Cc: Arjan van de Ven <ar...@linux.intel.com>
---
 arch/x86/kernel/acpi/boot.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index 803b684..4cd0761 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -460,8 +460,12 @@ acpi_parse_ioapic(struct acpi_subtable_header * header, const unsigned long end)
 
 	acpi_table_print_madt_entry(header);
 
-	/* Statically assign IRQ numbers for IOAPICs hosting legacy IRQs */
-	if (ioapic->global_irq_base < nr_legacy_irqs())
+	/*
+	 * Statically assign IRQ numbers for IOAPICs hosting legacy IRQs,
+	 * Or for the platform in Hardware-reduced ACPI model
+	 */
+	if (ioapic->global_irq_base < nr_legacy_irqs() ||
+		acpi_gbl_reduced_hardware)
 		cfg.type = IOAPIC_DOMAIN_LEGACY;
 
 	mp_register_ioapic(ioapic->id, ioapic->address, ioapic->global_irq_base,
-- 
1.9.1

Reply via email to