From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 05DC0C4363A for ; Tue, 20 Oct 2020 15:00:02 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 353C32222C for ; Tue, 20 Oct 2020 15:00:00 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=efficios.com header.i=@efficios.com header.b="KFvzt7tJ" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 353C32222C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=efficios.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 6B4326B0062; Tue, 20 Oct 2020 11:00:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 661196B006C; Tue, 20 Oct 2020 11:00:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5291C6B0070; Tue, 20 Oct 2020 11:00:00 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0024.hostedemail.com [216.40.44.24]) by kanga.kvack.org (Postfix) with ESMTP id 221D46B0062 for ; Tue, 20 Oct 2020 11:00:00 -0400 (EDT) Received: from smtpin16.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id B9855180AD811 for ; Tue, 20 Oct 2020 14:59:59 +0000 (UTC) X-FDA: 77392613718.16.wave35_370888e27240 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin16.hostedemail.com (Postfix) with ESMTP id A1B6F10161DB4 for ; Tue, 20 Oct 2020 14:59:59 +0000 (UTC) X-HE-Tag: wave35_370888e27240 X-Filterd-Recvd-Size: 5061 Received: from mail.efficios.com (mail.efficios.com [167.114.26.124]) by imf18.hostedemail.com (Postfix) with ESMTP for ; Tue, 20 Oct 2020 14:59:58 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by mail.efficios.com (Postfix) with ESMTP id 8E2452DA89E; Tue, 20 Oct 2020 10:59:58 -0400 (EDT) Received: from mail.efficios.com ([127.0.0.1]) by localhost (mail03.efficios.com [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id cLr9ZG3puwEB; Tue, 20 Oct 2020 10:59:58 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by mail.efficios.com (Postfix) with ESMTP id 451FA2DA982; Tue, 20 Oct 2020 10:59:58 -0400 (EDT) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.efficios.com 451FA2DA982 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=efficios.com; s=default; t=1603205998; bh=SAjLjf17dWQe0Eet/XV19eAlvtvSV2KEbCMmoK1Uq+w=; h=Date:From:To:Message-ID:MIME-Version; b=KFvzt7tJiNIxWGq0+78cIeL5TRbDtze09BmBs9OTvUazOR9o/bTdAqpyDHteVgekt Yu8RM35XQ1rCUhFW5aI+WFwQSFQuhmCMO7ngKTvkwlXURbrgBHZVwGqG+jdCU5LahN B8m3b2NbFdGf6G9fzih/Xj6rse72DW3N9xbgJvYXK0Mp76MyAV+z0GpQQhDPUuqgiG YoNDoukSITHrmEN991jJjw/QQaPnmzq/xrevvzpuihB8uCcfb+tJjwYNHzWNArMk2E 19ibiF+3kJuccvlbm7Jub1629j0DU66LkofqvU3QaM2ANn0b3w9Le6uRtxE7uH1eYV WY9z9341qaf6g== X-Virus-Scanned: amavisd-new at efficios.com Received: from mail.efficios.com ([127.0.0.1]) by localhost (mail03.efficios.com [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id bWA7Rdzf3jiq; Tue, 20 Oct 2020 10:59:58 -0400 (EDT) Received: from mail03.efficios.com (mail03.efficios.com [167.114.26.124]) by mail.efficios.com (Postfix) with ESMTP id 34C5F2DA980; Tue, 20 Oct 2020 10:59:58 -0400 (EDT) Date: Tue, 20 Oct 2020 10:59:58 -0400 (EDT) From: Mathieu Desnoyers To: Peter Zijlstra Cc: Boqun Feng , linux-kernel , Will Deacon , paulmck , Nicholas Piggin , Andy Lutomirski , Thomas Gleixner , Linus Torvalds , Alan Stern , linux-mm Message-ID: <1123875792.30589.1603205998119.JavaMail.zimbra@efficios.com> In-Reply-To: <20201020143648.GU2628@hirez.programming.kicks-ass.net> References: <20201020134715.13909-1-mathieu.desnoyers@efficios.com> <20201020134715.13909-2-mathieu.desnoyers@efficios.com> <20201020143648.GU2628@hirez.programming.kicks-ass.net> Subject: Re: [PATCH 1/3] sched: fix exit_mm vs membarrier (v4) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [167.114.26.124] X-Mailer: Zimbra 8.8.15_GA_3968 (ZimbraWebClient - FF81 (Linux)/8.8.15_GA_3968) Thread-Topic: sched: fix exit_mm vs membarrier (v4) Thread-Index: 3TQyEekaUSRarv/NoIfssTVvmqquog== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: ----- On Oct 20, 2020, at 10:36 AM, Peter Zijlstra peterz@infradead.org wrote: > On Tue, Oct 20, 2020 at 09:47:13AM -0400, Mathieu Desnoyers wrote: >> +void membarrier_update_current_mm(struct mm_struct *next_mm) >> +{ >> + struct rq *rq = this_rq(); >> + int membarrier_state = 0; >> + >> + if (next_mm) >> + membarrier_state = atomic_read(&next_mm->membarrier_state); >> + if (READ_ONCE(rq->membarrier_state) == membarrier_state) >> + return; >> + WRITE_ONCE(rq->membarrier_state, membarrier_state); >> +} > > This is suspisioucly similar to membarrier_switch_mm(). > > Would something like so make sense? Very much yes. Do you want me to re-send the series, or you want to fold this in as you merge it ? Thanks, Mathieu > > --- > --- a/kernel/sched/membarrier.c > +++ b/kernel/sched/membarrier.c > @@ -206,14 +206,7 @@ void membarrier_exec_mmap(struct mm_stru > > void membarrier_update_current_mm(struct mm_struct *next_mm) > { > - struct rq *rq = this_rq(); > - int membarrier_state = 0; > - > - if (next_mm) > - membarrier_state = atomic_read(&next_mm->membarrier_state); > - if (READ_ONCE(rq->membarrier_state) == membarrier_state) > - return; > - WRITE_ONCE(rq->membarrier_state, membarrier_state); > + membarrier_switch_mm(this_rq(), NULL, next_mm); > } > > static int membarrier_global_expedited(void) > diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h > index d2621155393c..3d589c2ffd28 100644 > --- a/kernel/sched/sched.h > +++ b/kernel/sched/sched.h > @@ -2645,12 +2645,14 @@ static inline void membarrier_switch_mm(struct rq *rq, > struct mm_struct *prev_mm, > struct mm_struct *next_mm) > { > - int membarrier_state; > + int membarrier_state = 0; > > if (prev_mm == next_mm) > return; > > - membarrier_state = atomic_read(&next_mm->membarrier_state); > + if (next_mm) > + membarrier_state = atomic_read(&next_mm->membarrier_state); > + > if (READ_ONCE(rq->membarrier_state) == membarrier_state) > return; -- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com