Fwd: Kernel panic on 7.2-RC1 when booting with ACPI enabled kernel.

John Baldwin jhb at freebsd.org
Fri May 1 19:08:36 UTC 2009


On Friday 01 May 2009 2:30:28 pm Magnus Kling wrote:
> 2009/4/30 John Baldwin <jhb at freebsd.org>
> 
> > On Saturday 25 April 2009 6:27:23 am Magnus Kling wrote:
> > > 2009/4/24 John Baldwin <jhb at freebsd.org>
> > > > Can you do 'frame 10' followed by 'p *(struct acpi_pci_devinfo
> > > > *)child->ivars'
> > > >
> > > > --
> > > > John Baldwin
> > >
> > >
> > > Sure, no problem. This is a none critical server so I can do alot of
> > > debugging and testing if that is needed.
> > >
> > >
> > > (kgdb) frame 10
> > > #10 0xc0db4ca8 in acpi_pci_child_location_str_method (cbdev=0xc2212680,
> > >     child=0xc2243400, buf=0xc22c2400 "slot=0 function=0 handle=",
> > > buflen=1024)
> > >     at /usr/src/sys/modules/acpi/acpi/../../../dev/acpica/acpi_pci.c:150
> > > 150             strlcat(buf, acpi_name(dinfo->ap_handle), buflen);
> > >
> > > (kgdb)  p *(struct acpi_pci_devinfo *)child->ivars
> > > $1 = {ap_dinfo = {pci_links = {stqe_next = 0xc0b00f8c}, resources = {
> > >       stqh_first = 0xc0b00f8c, stqh_last = 0x1030000}, cfg = {dev = 0x0,
> > >       bar = {4, 0, 0, 3257136600, 0, 0}, bios = 0, subvendor = 0,
> > >       subdevice = 0, vendor = 0, device = 0, cmdreg = 0, statreg = 0,
> > >       baseclass = 0 '\0', subclass = 0 '\0', progif = 0 '\0', revid = 0
> >
> > Hmm, this is all completely wrong and trashed.  What if you do 'p *child'?
> >
> > --
> > John Baldwin
> >
> (kgdb) p *child
> $2 = {ops = 0xc2161800, link = {tqe_next = 0xc2243380, tqe_prev =
> 0xc2243484}, devlink = {tqe_next = 0xc2243380, tqe_prev = 0xc224348c},
>   parent = 0xc2212680, children = {tqh_first = 0xc2262880, tqh_last =
> 0xc2262704}, driver = 0xc0b7066c, devclass = 0xc211e240, unit = 0,
>   nameunit = 0xc2241640 "atapci0", desc = 0xc223f900 "Promise PDC20621
> UDMA100 controller", busy = 0, state = DS_ATTACHED, devflags = 0,
>   flags = 13, order = 0 '\0', pad = 0 '\0', ivars = 0xc223f5c0, softc =
> 0xc2244800, sysctl_ctx = {tqh_first = 0xc2264380, tqh_last = 0xc2241594},
>   sysctl_tree = 0xc223f840}
> (kgdb)

Maybe try adding KTR traces for all calls to device_set_ivars().  I wonder if 
something is trashing this device's ivars.

Oh, dear.  The ata(4) driver overwrites the ivars of some PCI devices it 
attaches to.  This is very, very wrong.  Which ATA controller do you have?

-- 
John Baldwin


More information about the freebsd-acpi mailing list