Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 23 Feb 2012 06:44:49 +0000
From:      Alexey Dokuchaev <danfe@FreeBSD.org>
To:        John Baldwin <jhb@freebsd.org>
Cc:        Bruce Cran <bruce@cran.org.uk>, freebsd-current@freebsd.org
Subject:   Re: Loading uart module fails
Message-ID:  <20120223064449.GA19082@FreeBSD.org>
In-Reply-To: <201101190814.19810.jhb@freebsd.org>
References:  <20110109140215.000011b8@unknown> <201101181125.38198.jhb@freebsd.org> <20110119100810.000026b2@unknown> <201101190814.19810.jhb@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Jan 19, 2011 at 08:14:19AM -0500, John Baldwin wrote:
> On Wednesday, January 19, 2011 5:08:10 am Bruce Cran wrote:
> > On Tue, 18 Jan 2011 11:25:38 -0500
> > John Baldwin <jhb@freebsd.org> wrote:
> > 
> > > Oh, the uart[01] devices already exist.  I suspect if you removed the
> > > hints from /boot/device.hints and then kldloaded uart you would be
> > > ok.  I think this is an "old" bug that might also be in 8.x.
> > 
> > I'm running -CURRENT from a couple of weeks ago so it if it's an old
> > bug it apparently hasn't been fixed yet.
> 
> Yes, I don't think it is fixed, and I think 8.x is likely broken in this 
> regard as well.  Can you verify that removing the hints "fixes" the issue?

Same thing here, default uart settings in /boot/device.hints prevent the
module from loading correctly.  Moreover, unloading it and then doing
"devinfo -rv" panics my 8.3-PRERELEASE laptop:

Fatal trap 12: page fault while in kernel mode
fault virtual address   = 0xc5511205
fault code              = supervisor read, page not present
instruction pointer     = 0x20:0xc05783ad
stack pointer           = 0x28:0xe789c994
frame pointer           = 0x28:0xe789c99c
code segment            = base 0x0, limit 0xfffff, type 0x1b
                        = DPL 0, pres 1, def32 1, gran 1
processor eflags        = interrupt enabled, resume, IOPL = 0
current process         = 2522 (devinfo)

(kgdb) bt
...
#10 0xc05783ad in strlcpy (dst=0xe789c9d8 "",
    src=0xc5511205 <Address 0xc5511205 out of bounds>, siz=32)
    at /usr/src/sys/libkern/strlcpy.c:54
#11 0xc050b1df in sysctl_devices (oidp=0xc06f4880, arg1=0xe789cc04, arg2=2,
    req=0xe789cb8c) at /usr/src/sys/kern/subr_bus.c:4575
#12 0xc04efb23 in sysctl_root (oidp=Variable "oidp" is not available.
) at /usr/src/sys/kern/kern_sysctl.c:1455
#13 0xc04efdc2 in userland_sysctl (td=0xc5d6c5c0, name=0xe789cbf8,
namelen=5,
    old=0xbfbfea9c, oldlenp=0xbfbfea94, inkernel=0, new=0x0, newlen=0,
    retval=0xe789cc58, flags=0) at /usr/src/sys/kern/kern_sysctl.c:1565
#14 0xc04f014a in __sysctl (td=0xc5d6c5c0, uap=0xe789ccec)
...
(kgdb) f 11
#11 0xc050b1df in sysctl_devices (oidp=0xc06f4880, arg1=0xe789cc04, arg2=2,
    req=0xe789cb8c) at /usr/src/sys/kern/subr_bus.c:4575
4575                    strlcpy(udev.dv_desc, dev->desc, sizeof(udev.dv_desc));
(kgdb) l
4570            udev.dv_handle = (uintptr_t)dev;
4571            udev.dv_parent = (uintptr_t)dev->parent;
4572            if (dev->nameunit != NULL)
4573                    strlcpy(udev.dv_name, dev->nameunit, sizeof(udev.dv_name));
4574            if (dev->desc != NULL)
4575                    strlcpy(udev.dv_desc, dev->desc, sizeof(udev.dv_desc));
4576            if (dev->driver != NULL && dev->driver->name != NULL)
4577                    strlcpy(udev.dv_drivername, dev->driver->name,
4578                        sizeof(udev.dv_drivername));
4579            bus_child_pnpinfo_str(dev, udev.dv_pnpinfo, sizeof(udev.dv_pnpinfo));

HTH, feel free to ask for more...

./danfe



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