Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9cd8047b authored by Krzysztof Oledzki's avatar Krzysztof Oledzki Committed by Linus Torvalds
Browse files

Fix very high interrupt rate for IRQ8 (rtc) unless pnpacpi=off

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 <shaohua.li@intel.com>

Signed-off-by: default avatarKrzysztof Piotr Oledzki <ole@ans.pl>
Cc: "Li, Shaohua" <shaohua.li@intel.com>
Cc: Bjorn Helgaas <bjorn.helgaas@hp.com>
Cc: Andi Kleen <ak@suse.de>
Cc: Adam Belay <ambx1@neo.rr.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 7ef36390
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -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);