Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1739005
| 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 |
----- 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 | Next — Previous in thread | Find similar | Unroll 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