Received: by 2002:ab2:3350:0:b0:1f4:6588:b3a7 with SMTP id o16csp1881788lqe; Tue, 9 Apr 2024 03:23:22 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCV/Z+I4w7OC5TC5fX6b5nQiyTEbAAof99eR1ueEICphoQ1ZZ7Isau0P3YoIsKYLFuDhpMzqBMtXiLGUpMrYfGKQ5/04oizqKct3cOAJ1w== X-Google-Smtp-Source: AGHT+IHcKoicLEROWtYXav/k/04kerrskCo2x9P30ySPEaLcQz2iYPVMYiYVWgXRgcWdOn8HmDzg X-Received: by 2002:a05:620a:2117:b0:78d:7509:3321 with SMTP id l23-20020a05620a211700b0078d75093321mr185195qkl.20.1712658202334; Tue, 09 Apr 2024 03:23:22 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1712658202; cv=pass; d=google.com; s=arc-20160816; b=xNunQvCNYW3bh2PeJqoVJs4vO2fZRdaFMlKJmlGdRT5J8ceOFIVB7hbZFk/e4ZIm7l arWE7O5UCEI1JdvTfHT4kFbbw6feHMqr0cOrbMvRSPTS4fQICxO6cN4J8jKh7Tk6TVO9 vpK5X/zDaFxuWtwxerRrLkOycLXjCRszygkiTKSbZD8rqYbVnUUdbl3AYBii+LDpPZt8 rNUDq3bdoS0vrQzrL7C0OEeQae8MvF8j6swnRXfCYqVIEPCHAcexqHDGTW63akiC09T3 chmHrKRZWPvOJI0YvLlib+NgDnAIcJ0MyIkN5rX1/Qwn4nUSCm0BgxI5ZR2XY/E9ckpB O0aQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=in-reply-to:content-disposition:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:message-id:subject:cc :to:from:date; bh=c7uXjzXixydiEAlukgtM/HURITzc29W2A0E7vCQeGFY=; fh=3rzkLlnHz9KZHEVqmtyPaNZB0QxcaUfy1QOTgHeS594=; b=XchvJhQ0+KmvYrUoj7WkIfo9Nh6+ac8sA1OawmrONug9snUSR4iwsnbP93eVSzD7EB 5Dbrc/xZX+6XtG/MaIGiBwpiv3R7HKM2qdU41X/1eZ5emUlVPMrmWeR5gjsatHY810Ga cnp0SCRuvz4WEqTeGnSt4lhmbUOW55WlrK0ZbuBbmh7T3zUcBU/vJHWhQZHYbBetVKRB vnLFmgpgC9OP2EEzTVvycdI8QZZ9cJoXqt88DfGVsEL57DCZNCbTl7Pr+JB57Z8Dqz6F glwiELdmIA+arm85bBDEBNI7t2X8zZjoY6ILiWVE19HFREtkOm4a59ZPdVt6CjdROfYt a1aA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of linux-kernel+bounces-136667-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-136667-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id pi33-20020a05620a37a100b0078bd5472148si9989892qkn.56.2024.04.09.03.23.22 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Apr 2024 03:23:22 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-136667-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of linux-kernel+bounces-136667-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-136667-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 13BD91C21776 for ; Tue, 9 Apr 2024 10:23:22 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A865C82888; Tue, 9 Apr 2024 10:17:18 +0000 (UTC) Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2CC4D7F482; Tue, 9 Apr 2024 10:17:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712657838; cv=none; b=Lthr2DbitRhF3AX3/RSDtnT7cnw0RBTYkGbZl91nywiYTJArKsaAmh8RDbnFs+IHoeZHotulhsNbcvbbtFcc2mcipt2I9yTz2uitwO2W60E3jl9BG8w4Lg1q1YJv4LADd8zcQOoWz94W+vnhpgs17RUmr1QvkyW8s9tYUnHMHdQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712657838; c=relaxed/simple; bh=PnhPyTJsR2kysR6qD9bNLqvMTYpX2niQDC8JCyRLBiA=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=eMDqnRbyTD5lLAs0R6KlCIZEsjG66izdyTGWqRtbI9oBy2ypiGZNEgmf2s4e2YGw57ObOkA2mimikbxrNKh/dmGlABBpO3YP7RQ+tZ6zA6xzb4Nzs+hCGYNFp/13pP6hca17irEBsIbTo5bLbPIVnrxiHwbymqVDE8kZEOv5nro= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6221BC433F1; Tue, 9 Apr 2024 10:17:14 +0000 (UTC) Date: Tue, 9 Apr 2024 11:17:11 +0100 From: Catalin Marinas To: Mathieu Desnoyers Cc: Ingo Molnar , Peter Zijlstra , linux-kernel@vger.kernel.org, "levi . yun" , stable@vger.kernel.org, Steven Rostedt , Vincent Guittot , Juri Lelli , Dietmar Eggemann , Ben Segall , Mel Gorman , Daniel Bristot de Oliveira , Valentin Schneider , Mark Rutland , Will Deacon , Aaron Lu Subject: Re: [PATCH] sched: Add missing memory barrier in switch_mm_cid Message-ID: References: <20240308150719.676738-1-mathieu.desnoyers@efficios.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240308150719.676738-1-mathieu.desnoyers@efficios.com> On Fri, Mar 08, 2024 at 10:07:19AM -0500, Mathieu Desnoyers wrote: > diff --git a/arch/x86/include/asm/barrier.h b/arch/x86/include/asm/barrier.h > index 35389b2af88e..0d5e54201eb2 100644 > --- a/arch/x86/include/asm/barrier.h > +++ b/arch/x86/include/asm/barrier.h > @@ -79,6 +79,9 @@ do { \ > #define __smp_mb__before_atomic() do { } while (0) > #define __smp_mb__after_atomic() do { } while (0) > > +/* Writing to CR3 provides a full memory barrier in switch_mm(). */ > +#define smp_mb__after_switch_mm() do { } while (0) > + > #include > > /* > diff --git a/include/asm-generic/barrier.h b/include/asm-generic/barrier.h > index 961f4d88f9ef..5a6c94d7a598 100644 > --- a/include/asm-generic/barrier.h > +++ b/include/asm-generic/barrier.h > @@ -296,5 +296,13 @@ do { \ > #define io_stop_wc() do { } while (0) > #endif > > +/* > + * Architectures that guarantee an implicit smp_mb() in switch_mm() > + * can override smp_mb__after_switch_mm. > + */ > +#ifndef smp_mb__after_switch_mm > +#define smp_mb__after_switch_mm() smp_mb() > +#endif > + > #endif /* !__ASSEMBLY__ */ > #endif /* __ASM_GENERIC_BARRIER_H */ > diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h > index 2e5a95486a42..044d842c696c 100644 > --- a/kernel/sched/sched.h > +++ b/kernel/sched/sched.h > @@ -79,6 +79,8 @@ > # include > #endif > > +#include > + > #include "cpupri.h" > #include "cpudeadline.h" > > @@ -3481,13 +3483,19 @@ static inline void switch_mm_cid(struct rq *rq, > * between rq->curr store and load of {prev,next}->mm->pcpu_cid[cpu]. > * Provide it here. > */ > - if (!prev->mm) // from kernel > + if (!prev->mm) { // from kernel > smp_mb(); > - /* > - * user -> user transition guarantees a memory barrier through > - * switch_mm() when current->mm changes. If current->mm is > - * unchanged, no barrier is needed. > - */ > + } else { // from user > + /* > + * user -> user transition relies on an implicit > + * memory barrier in switch_mm() when > + * current->mm changes. If the architecture > + * switch_mm() does not have an implicit memory > + * barrier, it is emitted here. If current->mm > + * is unchanged, no barrier is needed. > + */ > + smp_mb__after_switch_mm(); > + } I'm fine with the change from the arm64 perspective but I guess we need an ack from the x86 and sched maintainers. FWIW: Reviewed-by: Catalin Marinas -- Catalin