Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp71197pxj; Tue, 15 Jun 2021 20:24:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz2tpYkIb8WwLxaAj6Qdo7/qhTt8CwsKEkw9HJ9bP5e9sb1fW0rgQLcFaSD/gsPKXOOPy0l X-Received: by 2002:a92:c7b0:: with SMTP id f16mr1967893ilk.169.1623813846528; Tue, 15 Jun 2021 20:24:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623813846; cv=none; d=google.com; s=arc-20160816; b=IgTC12CxlrwhWbgCvkSm74n8lOjZmwLcfAYZNYwzSMvibev70MkgUjn6BCrtLIsmce m9c39Od8DDmM1QPdk549KGW2dBcmM4LbWJJpd+DXzUgu6AJAuTT7IDvkscSssp/J9XJp NZ3Cyaa6c+Tx8mXmReStY8RBGLBAAW4t3Hya2dWCfa8TcCxt55gFFSZJLAVfLfaYBB8d +bfeCs87H1WzHAArJ2bwum8nbxd3zrTWUSyRpaj5r3GKZkYsRgvsrN3YicN95OBIiOsT VzxD8QRBOMKbsTGKo0wZgjBQTtW/iVcpe3TBSE25d/4iAMMf8lFic+8zvtEn6wjZYZyl UbGg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=9h31Tlrr/c7klrEr+2E6YHEzvBWzHlPLUnCr8eOVrUU=; b=jYsIeb3x1hLOARIbNw90LEPnff0Y+ffc5jEfufH3ZDa9+tHSERdJQZzQSUHTFBpCtf nUhHH7ykhRqDQBg28+jSpERpYx2nFriCFUXGK0D07FpbzRs44uR/KPc2dG2frq9dVCng cI+WQXjfCdp9UUmUzEV/wHyVZa49HGmfCOct99RBgKtyeOj/TabEqApRWmBkBkrngZjE yKM9g9eH24ppzXsZ4ENwsdvrOGRs+Qk9YZWCiW2jw2lHwUPqC3dg7hVy8mbGbsvq2lw9 PGKxqk7qNCTUvNMvAyXBn5qjP4J/3nqTil27jh4X2EWeO2bX4hNk1pJNL4Lu8JtL7If1 w6bQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=hNxV4V7z; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id g14si1027599ilf.92.2021.06.15.20.23.53; Tue, 15 Jun 2021 20:24:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=hNxV4V7z; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230455AbhFPDXm (ORCPT + 99 others); Tue, 15 Jun 2021 23:23:42 -0400 Received: from mail.kernel.org ([198.145.29.99]:42882 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230205AbhFPDXY (ORCPT ); Tue, 15 Jun 2021 23:23:24 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 76404613DC; Wed, 16 Jun 2021 03:21:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1623813679; bh=FjSVK+oLKWCgQcLVc/yxw6eKOykcdskBrRZdDTQATJQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=hNxV4V7z+Nf+3L/lZMKFuV3SJ66ggCJ+cspPEUtfvkee+klF0IxtUDpq9DSwO40te Y/+8Op9Fj4sCWiK65uZ5EZUH8vS1Ha4lEzTXSwI28v2CGFytvqvS37LLikVoN0cVG8 6jMich5fC5pKUGbDFMObsHD8RbVXsawbyksBNUDe2evE4KHmZh18FEckNI+KTuQEUp PWpa6XDbLpI7L05XpEjB5MM7gd//a/KYKlt2yWknMaftgoVrL2FGbzOCMguQqyJVD5 vN6uvOJUdkIa7BI3bE944plKIQ3YtdbreMjZpSiKDnYa1JLRGqwKU4HVbz8WVVuMfY WVLB2KuFIkidw== From: Andy Lutomirski To: x86@kernel.org Cc: Dave Hansen , LKML , linux-mm@kvack.org, Andrew Morton , Andy Lutomirski , Michael Ellerman , Benjamin Herrenschmidt , Paul Mackerras , linuxppc-dev@lists.ozlabs.org, Nicholas Piggin , Mathieu Desnoyers , Peter Zijlstra Subject: [PATCH 6/8] powerpc/membarrier: Remove special barrier on mm switch Date: Tue, 15 Jun 2021 20:21:11 -0700 Message-Id: X-Mailer: git-send-email 2.31.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org powerpc did the following on some, but not all, paths through switch_mm_irqs_off(): /* * Only need the full barrier when switching between processes. * Barrier when switching from kernel to userspace is not * required here, given that it is implied by mmdrop(). Barrier * when switching from userspace to kernel is not needed after * store to rq->curr. */ if (likely(!(atomic_read(&next->membarrier_state) & (MEMBARRIER_STATE_PRIVATE_EXPEDITED | MEMBARRIER_STATE_GLOBAL_EXPEDITED)) || !prev)) return; This is puzzling: if !prev, then one might expect that we are switching from kernel to user, not user to kernel, which is inconsistent with the comment. But this is all nonsense, because the one and only caller would never have prev == NULL and would, in fact, OOPS if prev == NULL. In any event, this code is unnecessary, since the new generic membarrier_finish_switch_mm() provides the same barrier without arch help. Cc: Michael Ellerman Cc: Benjamin Herrenschmidt Cc: Paul Mackerras Cc: linuxppc-dev@lists.ozlabs.org Cc: Nicholas Piggin Cc: Mathieu Desnoyers Cc: Peter Zijlstra Signed-off-by: Andy Lutomirski --- arch/powerpc/include/asm/membarrier.h | 27 --------------------------- arch/powerpc/mm/mmu_context.c | 2 -- 2 files changed, 29 deletions(-) delete mode 100644 arch/powerpc/include/asm/membarrier.h diff --git a/arch/powerpc/include/asm/membarrier.h b/arch/powerpc/include/asm/membarrier.h deleted file mode 100644 index 6e20bb5c74ea..000000000000 --- a/arch/powerpc/include/asm/membarrier.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef _ASM_POWERPC_MEMBARRIER_H -#define _ASM_POWERPC_MEMBARRIER_H - -static inline void membarrier_arch_switch_mm(struct mm_struct *prev, - struct mm_struct *next, - struct task_struct *tsk) -{ - /* - * Only need the full barrier when switching between processes. - * Barrier when switching from kernel to userspace is not - * required here, given that it is implied by mmdrop(). Barrier - * when switching from userspace to kernel is not needed after - * store to rq->curr. - */ - if (likely(!(atomic_read(&next->membarrier_state) & - (MEMBARRIER_STATE_PRIVATE_EXPEDITED | - MEMBARRIER_STATE_GLOBAL_EXPEDITED)) || !prev)) - return; - - /* - * The membarrier system call requires a full memory barrier - * after storing to rq->curr, before going back to user-space. - */ - smp_mb(); -} - -#endif /* _ASM_POWERPC_MEMBARRIER_H */ diff --git a/arch/powerpc/mm/mmu_context.c b/arch/powerpc/mm/mmu_context.c index a857af401738..8daa95b3162b 100644 --- a/arch/powerpc/mm/mmu_context.c +++ b/arch/powerpc/mm/mmu_context.c @@ -85,8 +85,6 @@ void switch_mm_irqs_off(struct mm_struct *prev, struct mm_struct *next, if (new_on_cpu) radix_kvm_prefetch_workaround(next); - else - membarrier_arch_switch_mm(prev, next, tsk); /* * The actual HW switching method differs between the various -- 2.31.1