tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: mutex(9) on sparc64 RMO [was Re: pserialize(9) vs. TAILQ]



On Tue, Nov 25, 2014 at 2:19 AM, Taylor R Campbell
<campbell+netbsd-tech-kern%mumble.net@localhost> wrote:
>    Date: Mon, 24 Nov 2014 16:44:41 +0000 (UTC)
>    From: Eduardo Horvath <eeh%NetBSD.org@localhost>
>
>    I enhanced membar_ops with proper memory barriers and then was looking at
>    the mutex code.  Unfortunately, I didn't get very far.  It seemed at the
>    time that the mutex code has two hooks for memory barriers after the
>    atomic operations, however it's missing memory barrier hooks to ensure
>    consistency before accessing the lock.
>
> What exactly is the consistency you need before accessing the lock?

Besides that, other necessary memory barriers I have figured out:

- cpu_simple_lock
  - lock/unlock should ensure membar_enter/membar_exit equivalent
- mutex
  - spin
    - enter/exit should ensure membar_enter/membar_exit equivalent
  - adaptive
    - Provide MUTEX_RECEIVE, MUTEX_GIVE -> membar_enter, membar_exit
- rw
  - enter/exit should ensure membar_enter/membar_exit equivalent
- membar_ops
  - Implement these
- Other synchronization
  - Relies on membar_ops, should work if membar_ops is done right

I'd start with using full-sync everywhere and see what happens.


Home | Main Index | Thread Index | Old Index