Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 30 Jan 2011 17:44:15 -1000 (HST)
From:      Jeff Roberson <jroberson@jroberson.net>
To:        Julian Elischer <julian@freebsd.org>
Cc:        Daniel Eischen <deischen@freebsd.org>, Hans Petter Selasky <hselasky@c2i.net>, freebsd-arch@freebsd.org
Subject:   Re: ofed merge soon
Message-ID:  <alpine.BSF.2.00.1101301741310.1412@desktop>
In-Reply-To: <4D4559A2.7040601@freebsd.org>
References:  <alpine.BSF.2.00.1101271653470.1412@desktop> <201101291032.35544.hselasky@c2i.net> <alpine.BSF.2.00.1101292143010.1412@desktop> <201101301016.55633.hselasky@c2i.net> <Pine.GSO.4.64.1101300710520.20802@sea.ntplx.net> <4D4559A2.7040601@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 30 Jan 2011, Julian Elischer wrote:

> On 1/30/11 4:12 AM, Daniel Eischen wrote:
>> On Sun, 30 Jan 2011, Hans Petter Selasky wrote:
>> 
>>> On Sunday 30 January 2011 08:44:45 Jeff Roberson wrote:
>>>> On Sat, 29 Jan 2011, Hans Petter Selasky wrote:
>>>>> Hi,
>>>>> 
>>>>> Just a comment:
>>>>> 
>>>>> +
>>>>> +#define DEFINE_MUTEX(lock) 
>>>>> \
>>>>> +       mutex_t lock; 
>>>>> \
>>>>> +       SX_SYSINIT_FLAGS(lock, &(lock).sx, "lnxmtx", SX_NOWITNESS)
>>>>> +
>>>>> +static inline void
>>>>> +linux_mutex_init(mutex_t *m)
>>>>> +{
>>>>> +
>>>>> +       memset(&m->sx, 0, sizeof(m->sx));
>>>>> +       sx_init_flags(&m->sx, "lnxmtx",  SX_NOWITNESS);
>>>>> +}
>>>>> +
>>>>> +#define        mutex_init      linux_mutex_init
>>>>> 
>>>>> I see you workaround the fact that Linux does not destroy any mutexes by
>>>>> disabling witness. Do you have any plan to upgrade the Linux 3rd party
>>>>> code to destroy mutexes?
>>>> 
>>>> It introduces too many diffs that are difficult to maintain.  I don't
>>>> think it's viable.  One option would be to tag the memory linux uses so
>>>> that when it's freed we reclaim any locks in it.  You could scan the
>>>> witness tables for pointers within the free'd region fairly easily.  It
>>>> wouldn't be pretty though.
>>> 
>>> How about requiring that Linux code, once imported, must destroy it's 
>>> mutexes?
>> 
>> Or add a mutex_destroy for all OS's, and make it a noop
>> for Linux.  Then there are no diffs to maintain...
>
> the upstream source is linux only code and they do not accept non linux 
> patches.

Julian's right.  They won't accept anything.  There is also the problem 
that their locks have no names and witness requires a name.  We'd have to 
name them by address or something similarly hacky and this then leaves 
holes in what witness can discover.

Fortunately, they have their own lock order test tool (lockdep) and do 
their own order validation.  The places where they cross over into FreeBSD 
are few and well contained.  If we can assume that they get the locks 
right on their own platform and we get our locks correctly it's not so 
hard to manage the places that they meet.

Thanks,
Jeff

>
> _______________________________________________
> freebsd-arch@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-arch
> To unsubscribe, send any mail to "freebsd-arch-unsubscribe@freebsd.org"
>



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