lkml.org 
[lkml]   [2015]   [Mar]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [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
\
 
 \ /
  Last update: 2015-03-30 11:01    [W:0.074 / U:0.600 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site