Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 Jul 2008 16:56:10 +0300
From:      "Yony Yossef" <yonyossef.lists@gmail.com>
To:        "Kris Kennaway" <kris@freebsd.org>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: options WITNESS and locks
Message-ID:  <20def4870807150656y761a8bcfo858b85b760d0f93f@mail.gmail.com>
In-Reply-To: <487CA8DC.2090703@FreeBSD.org>
References:  <20def4870807140902y4e5aad69r649d577fb5f5ad84@mail.gmail.com> <487BE91E.1020202@FreeBSD.org> <20def4870807150605w6e3de82eq4a999360e9b49b6c@mail.gmail.com> <487CA8DC.2090703@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
>
>
> Something is still unclear. All my locks are MTX_DEF type, which means
>> sleepable, including the one specified in the crash report (MTNIC state
>> semaphore).
>> This crash happens when I try to call bus_resource_alloc_any for a SYS_REQ
>> which is trying to obtain the second lock (ACPI root bus). How come my
>> MTX_DEF lock is being treated as as non-sleepable?
>>
>
> MTX_DEF locks *are* non-sleepable :-)
>
> Kris
>


Good news :-)
Yet the documentation is confusing me:

man pages say:
MTX_DEF        Default mutexes will always allow the current thread to be
                    suspended to avoid deadlock conditions against interrupt
                    threads.  The implementation of this lock type may spin
                    for a while before suspending the current thread.
and in mutex.h:
/*
 * Mutex types and options passed to mtx_init().  MTX_QUIET and MTX_DUPOK
 * can also be passed in.
 */
#define MTX_DEF  0x00000000 /* DEFAULT (sleep) lock */
#define MTX_SPIN 0x00000001 /* Spin lock (disables interrupts) */
#define MTX_RECURSE 0x00000004 /* Option: lock allowed to recurse */
#define MTX_NOWITNESS 0x00000008 /* Don't do any witness checking. */
#define MTX_NOPROFILE   0x00000020 /* Don't profile this lock */


What does the "DEFAULT (sleep) lock" comment near MTX_DEF means?
And which ones are sleepable?..  I guess I'm missing something here.



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