Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1739005

Re: [RFC PATCH v3 1/2] membarrier: Provide register expedited private command

From Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Newsgroups linux.kernel
Subject Re: [RFC PATCH v3 1/2] membarrier: Provide register expedited private command
Date 2017-09-25 14:50 +0200
Message-ID <utAZH-6pv-9@gated-at.bofh.it> (permalink)
References (2 earlier) <usxKx-7Bl-13@gated-at.bofh.it> <utfiz-Ql-49@gated-at.bofh.it> <utg4W-1lc-15@gated-at.bofh.it> <utAwG-6f6-19@gated-at.bofh.it> <utAGm-6ix-21@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


----- On Sep 25, 2017, at 8:25 AM, Peter Zijlstra peterz@infradead.org wrote:

> On Mon, Sep 25, 2017 at 08:10:54PM +0800, Boqun Feng wrote:
>> > static void membarrier_register_private_expedited(void)
>> > {
>> >         struct task_struct *p = current;
>> > 
>> >         if (READ_ONCE(p->mm->membarrier_private_expedited))
>> >                 return;
>> >         membarrier_arch_register_private_expedited(p);
> 
> Should we not then also do:
> 
>	    barrier();
> 
>> >         WRITE_ONCE(p->mm->membarrier_private_expedited, 1);
>> > }
> 
> to avoid the compiler lifting that store?

membarrier_arch_register_private_expedited() being a function call, I
recall compilers cannot move load/stores across those. Moreover, even if
that function would happen to be eventually inlined, synchronize_sched()
is needed at the end of the function to ensure the scheduler will observe
the thread flags before it returns. That too would then act as a compiler
barrier if that function is ever inlined in the future.

So do you think we should still add the barrier() as documentation, or is
having synchronize_sched() in the callee enough ?

By the way, I think I should add a READ_ONCE() in membarrier_private_expedited
to pair with the WRITE_ONCE() in registration, such as:

        if (!READ_ONCE(current->mm->membarrier_private_expedited))
                return -EPERM;

Thanks!

Mathieu



-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com

Back to linux.kernel | Previous | NextPrevious in thread | Find similar | Unroll thread


Thread

[RFC PATCH v3 1/2] membarrier: Provide register expedited private command Mathieu Desnoyers <mathieu.desnoyers@efficios.com> - 2017-09-20 00:20 +0200
  [RFC PATCH 2/2] membarrier: selftest: Test private expedited cmd Mathieu Desnoyers <mathieu.desnoyers@efficios.com> - 2017-09-20 00:20 +0200
  Re: [RFC PATCH v3 1/2] membarrier: Provide register expedited  private command Boqun Feng <boqun.feng@gmail.com> - 2017-09-22 05:30 +0200
    Re: [RFC PATCH v3 1/2] membarrier: Provide register expedited  private command Boqun Feng <boqun.feng@gmail.com> - 2017-09-22 05:40 +0200
      Re: [RFC PATCH v3 1/2] membarrier: Provide register expedited  private command Mathieu Desnoyers <mathieu.desnoyers@efficios.com> - 2017-09-22 07:30 +0200
    Re: [RFC PATCH v3 1/2] membarrier: Provide register expedited  private command Peter Zijlstra <peterz@infradead.org> - 2017-09-22 10:30 +0200
      Re: [RFC PATCH v3 1/2] membarrier: Provide register expedited  private command Boqun Feng <boqun.feng@gmail.com> - 2017-09-22 11:00 +0200
  Re: [RFC PATCH v3 1/2] membarrier: Provide register expedited  private command Boqun Feng <boqun.feng@gmail.com> - 2017-09-22 11:10 +0200
    Re: [RFC PATCH v3 1/2] membarrier: Provide register expedited  private command Mathieu Desnoyers <mathieu.desnoyers@efficios.com> - 2017-09-22 17:10 +0200
      Re: [RFC PATCH v3 1/2] membarrier: Provide register expedited  private command Boqun Feng <boqun.feng@gmail.com> - 2017-09-24 15:40 +0200
        Re: [RFC PATCH v3 1/2] membarrier: Provide register expedited  private command Mathieu Desnoyers <mathieu.desnoyers@efficios.com> - 2017-09-24 16:30 +0200
          Re: [RFC PATCH v3 1/2] membarrier: Provide register expedited  private command Boqun Feng <boqun.feng@gmail.com> - 2017-09-25 14:20 +0200
            Re: [RFC PATCH v3 1/2] membarrier: Provide register expedited  private command Peter Zijlstra <peterz@infradead.org> - 2017-09-25 14:30 +0200
              Re: [RFC PATCH v3 1/2] membarrier: Provide register expedited  private command Mathieu Desnoyers <mathieu.desnoyers@efficios.com> - 2017-09-25 14:50 +0200

csiph-web