Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 1 May 2009 14:50:13 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        Magnus Kling <klingfon@gmail.com>
Cc:        freebsd-acpi@freebsd.org
Subject:   Re: Fwd: Kernel panic on 7.2-RC1 when booting with ACPI enabled kernel.
Message-ID:  <200905011450.13899.jhb@freebsd.org>
In-Reply-To: <43b1bb350905011130q4f58c018g66a9e4624c364b65@mail.gmail.com>
References:  <43b1bb350904230622u4b7790f0p9f665b649c97a3b@mail.gmail.com> <200904300836.34238.jhb@freebsd.org> <43b1bb350905011130q4f58c018g66a9e4624c364b65@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Friday 01 May 2009 2:30:28 pm Magnus Kling wrote:
> 2009/4/30 John Baldwin <jhb@freebsd.org>
> 
> > On Saturday 25 April 2009 6:27:23 am Magnus Kling wrote:
> > > 2009/4/24 John Baldwin <jhb@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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200905011450.13899.jhb>