Skip to content

Commit

Permalink
Fix very high interrupt rate for IRQ8 (rtc) unless pnpacpi=off
Browse files Browse the repository at this point in the history
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]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
Krzysztof Oledzki authored and Linus Torvalds committed Oct 17, 2007
1 parent 7ef3639 commit 9cd8047
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions drivers/pnp/pnpacpi/rsparser.c
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,16 @@ static void pnpacpi_parse_allocated_irqresource(struct pnp_resource_table *res,
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);
Expand Down

0 comments on commit 9cd8047

Please sign in to comment.