Date: Thu, 23 Feb 2012 08:28:47 -0500 From: John Baldwin <jhb@freebsd.org> To: Alexey Dokuchaev <danfe@freebsd.org> Cc: Bruce Cran <bruce@cran.org.uk>, freebsd-current@freebsd.org Subject: Re: Loading uart module fails Message-ID: <201202230828.48022.jhb@freebsd.org> In-Reply-To: <20120223064449.GA19082@FreeBSD.org> References: <20110109140215.000011b8@unknown> <201101190814.19810.jhb@freebsd.org> <20120223064449.GA19082@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thursday, February 23, 2012 1:44:49 am Alexey Dokuchaev wrote: > 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)); Hmm, can you see what 'dev->nameunit' is? Maybe just do 'p *dev' actually and reply with that. -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201202230828.48022.jhb>