diff options
author | jhb <jhb@FreeBSD.org> | 2005-02-22 21:52:52 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2005-02-22 21:52:52 +0000 |
commit | 4de6f1e433a699c92a0ee859d8bb9b075a2699e3 (patch) | |
tree | 32e5628fcba47c25c098c00ac80aa38383ab081f /sys/i386/acpica/madt.c | |
parent | 3e29ea0b707aade068f0b0ee6890d559a7aa32d3 (diff) | |
download | FreeBSD-src-4de6f1e433a699c92a0ee859d8bb9b075a2699e3.zip FreeBSD-src-4de6f1e433a699c92a0ee859d8bb9b075a2699e3.tar.gz |
- Add a new quirk to indicate that pin 0 of the first I/O APIC is really
IRQ 0 and not an ExtINT pin. The MADT enumerators ignore the PC-AT flag
and ignore overrides that map IRQ 0 to pin 2 when this quirk is present.
- Add a block comment above the quirks to document each quirk so that we
can use more verbose descriptions quirks.
MFC after: 2 weeks
Diffstat (limited to 'sys/i386/acpica/madt.c')
-rw-r--r-- | sys/i386/acpica/madt.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/i386/acpica/madt.c b/sys/i386/acpica/madt.c index 43a0a88..22598e0 100644 --- a/sys/i386/acpica/madt.c +++ b/sys/i386/acpica/madt.c @@ -367,7 +367,7 @@ madt_setup_io(void) } /* First, we run through adding I/O APIC's. */ - if (madt->PCATCompat) + if (madt->PCATCompat && !(acpi_quirks & ACPI_Q_MADT_IRQ0)) ioapic_enable_mixed_mode(); madt_walk_table(madt_parse_apics, NULL); @@ -595,8 +595,14 @@ madt_parse_interrupt_override(MADT_INTERRUPT_OVERRIDE *intr) enum intr_polarity pol; char buf[64]; + if (acpi_quirks & ACPI_Q_MADT_IRQ0 && intr->Source == 0 && + intr->Interrupt == 2) { + if (bootverbose) + printf("MADT: Skipping timer override\n"); + return; + } if (bootverbose) - printf("MADT: intr override: source %u, irq %u\n", + printf("MADT: Interrupt override: source %u, irq %u\n", intr->Source, intr->Interrupt); KASSERT(intr->Bus == 0, ("bus for interrupt overrides must be zero")); if (madt_find_interrupt(intr->Interrupt, &new_ioapic, |