From owner-freebsd-current@FreeBSD.ORG Fri Jun 8 15:21:33 2012 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 209F7106566C for ; Fri, 8 Jun 2012 15:21:33 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigknife-pt.tunnel.tserv9.chi1.ipv6.he.net [IPv6:2001:470:1f10:75::2]) by mx1.freebsd.org (Postfix) with ESMTP id EACB28FC18 for ; Fri, 8 Jun 2012 15:21:32 +0000 (UTC) Received: from jhbbsd.localnet (unknown [209.249.190.124]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 5C4A0B91C; Fri, 8 Jun 2012 11:21:32 -0400 (EDT) From: John Baldwin To: freebsd-current@freebsd.org Date: Fri, 8 Jun 2012 10:45:15 -0400 User-Agent: KMail/1.13.5 (FreeBSD/8.2-CBSD-20110714-p13; KDE/4.5.5; amd64; ; ) References: <4FD1B365.2010209@yandex.ru> <4FD1B60E.2060803@yandex.ru> In-Reply-To: <4FD1B60E.2060803@yandex.ru> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201206081045.15763.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Fri, 08 Jun 2012 11:21:32 -0400 (EDT) Cc: Ruslan Mahmatkhanov Subject: Re: lock order reversal in sys/kern/vfs_mount.c X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Jun 2012 15:21:33 -0000 On Friday, June 08, 2012 4:21:34 am Ruslan Mahmatkhanov wrote: > Ruslan Mahmatkhanov wrote on 08.06.2012 12:10: > > Good day, > > > > After updating to yesterdays -current, I got this on boot: > > > > lock order reversal: > > 1st 0xfffffe0007b04c38 ufs (ufs) @ /usr/src/sys/kern/vfs_mount.c:1254 > > 2nd 0xfffffe0007ed9478 devfs (devfs) @ /usr/src/sys/kern/vfs_subr.c:2158 > > KDB: stack backtrace: > > db_trace_self_wrapper() at db_trace_self_wrapper+0x2a > > kdb_backtrace() at kdb_backtrace+0x37 > > _witness_debugger() at _witness_debugger+0x2c > > witness_checkorder() at witness_checkorder+0x853 > > __lockmgr_args() at __lockmgr_args+0x113a > > vop_stdlock() at vop_stdlock+0x39 > > VOP_LOCK1_APV() at VOP_LOCK1_APV+0xbf > > _vn_lock() at _vn_lock+0x47 > > vget() at vget+0x7b > > devfs_allocv() at devfs_allocv+0x13f > > devfs_root() at devfs_root+0x4d > > dounmount() at dounmount+0x45c > > vfs_unmountall() at vfs_unmountall+0x4c > > kern_reboot() at kern_reboot+0x84b > > sys_reboot() at sys_reboot+0x68 > > amd64_syscall() at amd64_syscall+0x2e0 > > Xfast_syscall() at Xfast_syscall+0xf7 > > --- syscall (55, FreeBSD ELF64, sys_reboot), rip = 0x40ebbc, rsp = > > 0x7fffffffd6c8, rbp = 0x65 --- > > > > Reverting to old kernel (that was built about a week ago) helped to > > avoid this. Any thoughts? > > And this one comes up with the recent update too: > > driver bug: Unable to set devclass (class: acpi_sysresource devname: > (unknown)) > driver bug: Unable to set devclass (class: acpi_timer devname: (unknown)) > cpu0: on acpi0 > driver bug: Unable to set devclass (class: acpi_sysresource devname: > (unknown)) > cpu1: on acpi0 > driver bug: Unable to set devclass (class: acpi_sysresource devname: > (unknown)) > cpu2: on acpi0 > driver bug: Unable to set devclass (class: acpi_sysresource devname: > (unknown)) > cpu3: on acpi0 > > What the additional info should I supply to understand what's wrong? > Here is my full dmesg; http://people.freebsd.org/~rm/dmesg.txt Is this a verbose boot? Also, can you try this to get more details in the log message: Index: subr_bus.c =================================================================== --- subr_bus.c (revision 236680) +++ subr_bus.c (working copy) @@ -1988,7 +1990,7 @@ device_probe_child(device_t dev, device_t child) devclass_t dc; driverlink_t best = NULL; driverlink_t dl; - int result, pri = 0; + int error, result, pri = 0; int hasclass = (child->devclass != NULL); GIANT_REQUIRED; @@ -2019,17 +2021,18 @@ device_probe_child(device_t dev, device_t child) else if (result != 0) continue; if (!hasclass) { - if (device_set_devclass(child, - dl->driver->name) != 0) { + error = device_set_devclass(child, + dl->driver->name); + if (error != 0) { char const * devname = device_get_name(child); if (devname == NULL) devname = "(unknown)"; printf("driver bug: Unable to set " "devclass (class: %s " - "devname: %s)\n", + "devname: %s): %d\n", dl->driver->name, - devname); + devname, error); (void)device_set_driver(child, NULL); continue; } -- John Baldwin