From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Zijlstra Subject: Re: [RFC PATCH for 4.17 02/21] rseq: Introduce restartable sequences system call (v12) Date: Wed, 28 Mar 2018 13:19:52 +0200 Message-ID: <20180328111952.GS4043@hirez.programming.kicks-ass.net> References: <20180327160542.28457-1-mathieu.desnoyers@efficios.com> <20180327160542.28457-3-mathieu.desnoyers@efficios.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: <20180327160542.28457-3-mathieu.desnoyers@efficios.com> Sender: linux-kernel-owner@vger.kernel.org To: Mathieu Desnoyers Cc: "Paul E . McKenney" , Boqun Feng , Andy Lutomirski , Dave Watson , linux-kernel@vger.kernel.org, linux-api@vger.kernel.org, Paul Turner , Andrew Morton , Russell King , Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , Andrew Hunter , Andi Kleen , Chris Lameter , Ben Maurer , Steven Rostedt , Josh Triplett , Linus Torvalds , Catalin Marinas , Will Deacon List-Id: linux-api@vger.kernel.org On Tue, Mar 27, 2018 at 12:05:23PM -0400, Mathieu Desnoyers wrote: > +#ifdef CONFIG_RSEQ > + struct rseq __user *rseq; > + u32 rseq_len; > + u32 rseq_sig; > + /* > + * RmW on rseq_event_mask must be performed atomically > + * with respect to preemption. > + */ > + unsigned long rseq_event_mask; > +#endif > +static inline void rseq_signal_deliver(struct pt_regs *regs) > +{ > + set_bit(RSEQ_EVENT_SIGNAL_BIT, ¤t->rseq_event_mask); > + rseq_handle_notify_resume(regs); > +} > + > +static inline void rseq_preempt(struct task_struct *t) > +{ > + set_bit(RSEQ_EVENT_PREEMPT_BIT, &t->rseq_event_mask); > + rseq_set_notify_resume(t); > +} > + > +static inline void rseq_migrate(struct task_struct *t) > +{ > + set_bit(RSEQ_EVENT_MIGRATE_BIT, &t->rseq_event_mask); > + rseq_set_notify_resume(t); > +} Given that comment above, do you really need the full atomic set bit? Isn't __set_bit() sufficient?