Messages in this thread Patch in this message | | | Date | Mon, 30 Mar 2015 16:28:00 +0800 | From | "Li, Aubrey" <> | Subject | Re: [LKP] [x86/platform, acpi] 7486341a98f: genirq: Flags mismatch irq 8. 00000080 (mmc0) vs. 00000000 (rtc0) |
| |
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.li@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.li@linux.intel.com> Cc: Alan Cox <alan@linux.intel.com> Cc: Len Brown <len.brown@intel.com> Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Cc: Arjan van de Ven <arjan@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
| |