Subject: Re: port-i386/35618: ioapic hangs a kernel boot
To: None <port-i386-maintainer@netbsd.org, gnats-admin@netbsd.org,>
From: Cherry G. Mathew <cherry.g.mathew@gmail.com>
List: netbsd-bugs
Date: 02/25/2007 10:50:02
The following reply was made to PR port-i386/35618; it has been noted by GNATS.
From: "Cherry G. Mathew" <cherry.g.mathew@gmail.com>
To: gnats-bugs@netbsd.org
Cc: port-i386-maintainer@netbsd.org, gnats-admin@netbsd.org,
netbsd-bugs@netbsd.org
Subject: Re: port-i386/35618: ioapic hangs a kernel boot
Date: Sun, 25 Feb 2007 10:45:28 +0000
On 2/15/07, Bernd Ernesti <pr200701@veego.de> wrote:
> >Number: 35618
> >Category: port-i386
> >Synopsis: ioapic hangs a kernel boot
> >Confidential: no
> >Severity: non-critical
> >Priority: high
> >Responsible: port-i386-maintainer
> >State: open
> >Class: sw-bug
> >Submitter-Id: net
> >Arrival-Date: Thu Feb 15 22:15:00 +0000 2007
> >Originator: Bernd Ernesti
> >Release: NetBSD 4.99.7
> >Organization:
> >Environment:
> System: NetBSD 4.99.7
> Architecture: i386
> Machine: i386
> >Description:
> The kernel stops after printing the "ioapic0: enabling" line.
> Btw, there is no manpage about ioapic.
>
> >How-To-Repeat:
> Compile an ACPI kernel with "ioapic* at mainbus? apid?" and notice
> that it stops after the "ioapic0: enabling" output.
> e.g. GENERIC.MPACPI
>
> An older kernel (<3.99.22) or a kernel without ioapic doesn't stop.
>
> This is an Gigabyte GA-K8NSC-939 board.
> dmesg log of the last working kernel before the changes mentioning
> below and an acpi dump can be found on ftp.netbsd.org:~veego/tmp/k8nsc/
>
> I could pin it down to the following source changes where this problem
> started:
>
> Module Name: src
> Committed By: christos
> Date: Tue Jul 4 00:30:24 UTC 2006
>
> Modified Files:
> src/sys/arch/amd64/amd64: mainbus.c
> src/sys/arch/amd64/conf: GENERIC GENERIC_ACPI INSTALL_ACPI
> src/sys/arch/i386/conf: GENERIC GENERIC.MP GENERIC.MPACPI INSTALL.MP
> VIRTUALPC
> src/sys/arch/i386/i386: mainbus.c
> src/sys/arch/x86/conf: files.x86
> src/sys/arch/x86/include: intr.h mpacpi.h mpbiosvar.h mpconfig.h pic.h
> src/sys/arch/x86/pci: pci_intr_machdep.c pci_machdep.c
> src/sys/arch/x86/x86: acpi_machdep.c i8259.c intr.c ioapic.c mpacpi.c
> mpbios.c
> src/sys/dev/acpi: acpi.c acpi_quirks.c acpivar.h files.acpi
> src/sys/dev/pci: pccbb.c
> Added Files:
> src/sys/dev/acpi: acpi_pci_link.c
>
> Log Message:
> Apply fvdl's acpi pci interrupt configuration code.
> - MPACPI is no more.
> - MPACPI_SCANPCI -> ACPI_SCANPCI
>
> >Fix:
>
>
Possible fix below.
--- acpi_machdep.c.~1.13.~ 2007-02-22 02:00:50.000000000 +0000
+++ acpi_machdep.c 2007-02-25 01:34:09.000000000 +0000
@@ -152,7 +152,7 @@
for (i = 0; i < mp_nbus; i++) {
for (mip = mp_busses[i].mb_intrs; mip != NULL;
mip = mip->next) {
- if (mip->global_int == (int)InterruptNumber) {
+ if (mip->bus_pin == (int)InterruptNumber) {
h = mip->ioapic_ih;
if (APIC_IRQ_ISLEGACY(h)) {
irq = APIC_IRQ_LEGACY_IRQ(h);
@@ -213,6 +213,7 @@
mip->flags &= ~3;
mip->flags |= MPS_INTPO_ACTLO;
mip->redir |= IOAPIC_REDLO_ACTLO;
+ pin = mip->bus_pin;
}
#endif
--
~Cherry