Date: Tue, 21 May 2013 16:40:16 -0400 From: Alfred Perlstein <bright@mu.org> To: John Baldwin <jhb@freebsd.org> Cc: Orit Moskovich <oritm@mellanox.com>, freebsd-arch@freebsd.org Subject: Re: FreeBSD spinlock - compatibility layer Message-ID: <519BDBB0.2070302@mu.org> In-Reply-To: <201305200950.26834.jhb@freebsd.org> References: <981733489AB3BD4DB24B48340F53E0A55B0CFD79@MTLDAG01.mtl.com> <201305200950.26834.jhb@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 5/20/13 9:50 AM, John Baldwin wrote: > On Tuesday, May 14, 2013 6:04:21 am Orit Moskovich wrote: >> Hi, >> >> I read about the FreeBSD mutex implementation for spinlock in the > compatibility layer. >> I might be wrong, but I noticed a code section that might be problematic: >> >> Taken from > http://svn.freebsd.org/base/release/9.1.0/sys/ofed/include/linux/spinlock.h: >> static inline void >> spin_lock_init(spinlock_t *lock) >> { >> >> memset(&lock->m, 0, sizeof(lock->m)); >> mtx_init(&lock->m, "lnxspin", NULL, MTX_DEF | MTX_NOWITNESS); >> } >> >> But MTX_DEF initializes mutex as a sleep mutex: >> >> By default, MTX_DEF mutexes will context switch when they are already >> >> held. >> >> >> There is a flag MTX_SPIN Which I think is the right one in this case . >> >> >> >> I'd appreciate your take on this issue. > Since FreeBSD uses a different approach to interrupt handlers (they run in > threads, not in the bottom half), a regular mutex may in fact give the closest > match to the same semantics. Regular mutexes are also cheaper and in general > preferable to spin mutexes whenever possible. > Sure, but is it possible that someone might want some of the other guarantees of MTX_SPIN spinlocks such as: critical section/non-pre-emptable/non-migrating on cpu/latency versus throughput ? -Alfred
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?519BDBB0.2070302>