On Thu, 27 Sep 2007, [EMAIL PROTECTED] wrote:
http://bugzilla.kernel.org/show_bug.cgi?id=5243
------- Comment #14 from [EMAIL PROTECTED] 2007-09-27 18:32 -------
(In reply to comment #13)
Created an attachment (id=12951)
--> (http://bugzilla.kernel.org/attachment.cgi?id=12951&action=view) [details]
Working workaround for this PNP BIOS bug
Now it seems that the patch can solve the problem. Will you please send the
patch to the acpi maillist?
Attached.
Best regards,
Krzysztof OlędzkiFrom: Krzysztof Oledzki <[EMAIL PROTECTED]>
Workaround for broken systems with BIOS that makes RTC interrupt level
triggered and/or active low.
See http://bugzilla.kernel.org/show_bug.cgi?id=5243
Based on the patch from Shaohua Li <[EMAIL PROTECTED]>
Signed-off-by: Krzysztof Piotr Oledzki <[EMAIL PROTECTED]>
Cc: "Li, Shaohua" <[EMAIL PROTECTED]>
Cc: Bjorn Helgaas <[EMAIL PROTECTED]>
Cc: Andi Kleen <[EMAIL PROTECTED]>
Cc: Adam Belay <[EMAIL PROTECTED]>
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
---
diff -puN
drivers/pnp/pnpacpi/rsparser.c~fix-very-high-interrupt-rate-for-irq8-rtc-unless-pnpacpi=off
drivers/pnp/pnpacpi/rsparser.c
---
a/drivers/pnp/pnpacpi/rsparser.c~fix-very-high-interrupt-rate-for-irq8-rtc-unless-pnpacpi=off
+++ a/drivers/pnp/pnpacpi/rsparser.c
@@ -85,6 +85,16 @@ static void pnpacpi_parse_allocated_irqr
if (i >= PNP_MAX_IRQ)
return;
+#ifdef CONFIG_X86
+ if (gsi < 16 && (triggering != ACPI_EDGE_SENSITIVE ||
+ polarity != ACPI_ACTIVE_HIGH)) {
+ pnp_warn("BIOS BUG: legacy PNP IRQ %d should be edge trigger, "
+ "active high", gsi);
+ triggering = ACPI_EDGE_SENSITIVE;
+ polarity = ACPI_ACTIVE_HIGH;
+ }
+#endif
+
res->irq_resource[i].flags = IORESOURCE_IRQ; // Also clears _UNSET
flag
res->irq_resource[i].flags |= irq_flags(triggering, polarity);
irq = acpi_register_gsi(gsi, triggering, polarity);
_