"Multiple entries for PCI IRQ 16" and "xlock already held"
panics on 5.3-BETA(3,4,5)
John Baldwin
jhb at FreeBSD.org
Thu Sep 23 09:53:09 PDT 2004
On Thursday 23 September 2004 10:29 am, John Baldwin wrote:
> On Thursday 23 September 2004 12:24 am, Pavel Gubin wrote:
> > On Wed, Sep 22, 2004 at 04:28:51PM -0400, John Baldwin wrote:
> > > > 1) When MPS 1.4 is enabled with the BIOS setting and ACPI disabled
> > > > either by BIOS or by unsetting `acpi_load' loader variable, the
> > > > kernel panices immediately with "panic: Multiple entries for PCI IRQ
> > > > 16" message. As one can see from #1 Bootlog, there are really two
> > > > entries for IRQ16. I think this is the BIOS bug, but I also think the
> > > > diagnostics for this situation should be more precise than that.
> > >
> > > There's not much more precise that can be done. mptable output would
> > > be extremely helpful here.
> >
> > =========================================================================
> >== ====
> >
> > MPTable, version 2.0.15
> >
> > -------------------------------------------------------------------------
> >-- ----
> >
> > MP Floating Pointer Structure:
> >
> > location: BIOS
> > physical address: 0x000fb960
> > signature: '_MP_'
> > length: 16 bytes
> > version: 1.4
> > checksum: 0x7f
> > mode: Virtual Wire
> >
> > -------------------------------------------------------------------------
> >-- ----
> >
> > MP Config Table Header:
> >
> > physical address: 0x000f62b0
> > signature: 'PCMP'
> > base table length: 256
> > version: 1.4
> > checksum: 0xcb
> > OEM ID: 'SiS '
> > Product ID: '740 '
> > OEM table pointer: 0x00000000
> > OEM table size: 0
> > entry count: 25
> > local APIC address: 0xfee00000
> > extended table length: 0
> > extended table checksum: 0
> >
> > -------------------------------------------------------------------------
> >-- ----
> >
> > MP Config Base Table Entries:
> >
> > --
> > I/O Ints: Type Polarity Trigger Bus ID IRQ APIC ID PIN#
> > INT active-lo level 0 2:A 2 16
> > INT active-lo level 0 2:A 2 23
>
> This is the real bug and I guess I can improve the message. Then problem
> is not two lines for IRQ 16, but that the PCI interrrupt for bus 0, device
> 2, pin #A has two different IRQs listed, so we don't know which one we are
> supposed to use. This is definitely a BIOS bug and your motherboard
> manufacturer needs to harassed into giving you a BIOS update.
Also, I have a patch to make the error message more useful if you want to try
it:
--- //depot/vendor/freebsd/src/sys/i386/i386/mptable.c 2004/07/01 07:50:36
+++ //depot/user/jhb/acpipci/i386/i386/mptable.c 2004/09/23 14:34:52
@@ -935,7 +935,9 @@
if (args->vector == vector)
return;
KASSERT(args->vector == -1,
- ("Multiple entries for PCI IRQ %d", args->vector));
+ ("Multiple IRQs for PCI interrupt %d.%d.INT%c: %d and %d\n",
+ args->bus, args->irq >> 2, 'A' + (args->irq & 0x3), args->vector,
+ vector));
args->vector = vector;
}
--
John Baldwin <jhb at FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve" = http://www.FreeBSD.org
More information about the freebsd-current
mailing list