Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp432853ybb; Wed, 8 Apr 2020 02:51:19 -0700 (PDT) X-Google-Smtp-Source: APiQypJM1+7QcAVPyFLwrYHp3tHXLBEkT0nf4avVxiANMNzlcrt0XFTsMVQgVcpvX/NHrB9OIsel X-Received: by 2002:aca:7213:: with SMTP id p19mr1830773oic.159.1586339479602; Wed, 08 Apr 2020 02:51:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1586339479; cv=none; d=google.com; s=arc-20160816; b=HyrLniRn6onOQAhMDTC8HmViJDc4KRsXR2c46PTj818JwxvkHx49bIkRHcZf8TWCpC W3UkH0G2CrFdnmv69Lmp0+g6RL6j0PEu/NqrgZ1oNxy5p665H/zIWAspLJX5ptOpvno1 dKnGxEUmjNOnqX8kGA+FEGGcMaIzjE1WJoNwQUL62x49VjvEd3pag80ogMFlWc8jofb9 +DXpbDc0xyUzO6JWCACjWWXmMIBLC+nEHIf6GWzBl8Fwd1Z7sAV+SxP7OtjIfntrfg9I i3yd0tkYPxZETTDenJ7ajWxVl/BjWiX4mH3Vln6EErXhHK8MK2XUVgjAdVZmJHmrNAPe 3hDw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:date:subject:cc :to:from:ironport-sdr:dkim-signature; bh=Yctj+snLI3+lFrXtyXQAbeRqej9FGBlgOHRzr0ajYGA=; b=xjwgm1quJpJv40r/2/3iA/q6G94PuRSZ02AlEvjXau7ExjbXbnVxmWdG4iT+pgTQtO luWei9HpzfvweaGqFPwfLHNppU4LHc560FxR6FdJ/B6NJpJhVVptPYM9JUTOV67PcuMT ZkjBbPsvfRYkxytKb3Db8m9acpNoo2IAXKNxRDBoJDPMrBaAAzlD03I817W4yFZxjHb2 JIs+ppAuXGYxeWBdWFxfry/C4EfTzW/vhsj8DoUxrTJsDr4++myVfeItzbwDDG6279cH HgZncpIN17gjBGlx3NHCIGa/V9+Rh4ecGUyvjr6u2IZQWJFkDfKFZ++eI3i/taz5GLaX 52ng== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amazon.com header.s=amazon201209 header.b=jSI+qRSt; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l18si1726947oig.223.2020.04.08.02.51.06; Wed, 08 Apr 2020 02:51:19 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@amazon.com header.s=amazon201209 header.b=jSI+qRSt; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727779AbgDHJDB (ORCPT + 99 others); Wed, 8 Apr 2020 05:03:01 -0400 Received: from smtp-fw-4101.amazon.com ([72.21.198.25]:17563 "EHLO smtp-fw-4101.amazon.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726846AbgDHJC7 (ORCPT ); Wed, 8 Apr 2020 05:02:59 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1586336579; x=1617872579; h=from:to:cc:subject:date:message-id:mime-version; bh=Yctj+snLI3+lFrXtyXQAbeRqej9FGBlgOHRzr0ajYGA=; b=jSI+qRStTw/ViqXdIj7sWIcltyzmb803m6dJd/aECLIqdgLJH1Sk+Ezu txWa7//NPLh58p8kN7HNgedAeSlzIHdZgnKP+bndOAKMqWyYwHkr/aTLX s+SUvnWThsAQsMBhvpJWLsBruAGAZvi+UQ3+AvKUSc6DaFNbIGskkFkog A=; IronPort-SDR: JwBgGlbZOxEGaB8yZfchS6SiFkoJLUzdB6CZBympaPQ+gRaWcybrHiVDVxGoHKlUXfVYnfrL0M n/tnC4GN8h4g== X-IronPort-AV: E=Sophos;i="5.72,357,1580774400"; d="scan'208";a="24735022" Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO email-inbound-relay-2b-c7131dcf.us-west-2.amazon.com) ([10.43.8.6]) by smtp-border-fw-out-4101.iad4.amazon.com with ESMTP; 08 Apr 2020 09:02:46 +0000 Received: from EX13MTAUWB001.ant.amazon.com (pdx4-ws-svc-p6-lb7-vlan2.pdx.amazon.com [10.170.41.162]) by email-inbound-relay-2b-c7131dcf.us-west-2.amazon.com (Postfix) with ESMTPS id 653C1A0288; Wed, 8 Apr 2020 09:02:44 +0000 (UTC) Received: from EX13D01UWB003.ant.amazon.com (10.43.161.94) by EX13MTAUWB001.ant.amazon.com (10.43.161.249) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 8 Apr 2020 09:02:42 +0000 Received: from EX13MTAUEA001.ant.amazon.com (10.43.61.82) by EX13d01UWB003.ant.amazon.com (10.43.161.94) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 8 Apr 2020 09:02:41 +0000 Received: from localhost (10.85.0.235) by mail-relay.amazon.com (10.43.61.243) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Wed, 8 Apr 2020 09:02:40 +0000 From: Balbir Singh To: , CC: , , , , , , "Balbir Singh" Subject: [PATCH v3 0/5] Optionally flush L1D on context switch Date: Wed, 8 Apr 2020 19:02:24 +1000 Message-ID: <20200408090229.16467-1-sblbir@amazon.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Provide a mechanism to flush the L1D cache on context switch. The goal is to allow tasks that are paranoid due to the recent snoop assisted data sampling vulnerabilites, to flush their L1D on being switched out. This protects their data from being snooped or leaked via side channels after the task has context switched out. The core of the patches is patch 3, the rest largely refactor the code so that common bits can be reused. Changelog v3: - Refactor the return value of what flush_l1d_cache_hw() returns - Refactor the code, so that the generic setup bits come first (patch 3 from previous posting is now patches 3 and 4) - Move from arch_prctl() to the prctl() interface as recommend in the reviews. Changelog v2: - Fix a miss of mutex_unlock (caught by Borislav Petkov ) - Add documentation about the changes (Josh Poimboeuf ) Changelog: - Refactor the code and reuse cond_ibpb() - code bits provided by tglx - Merge mm state tracking for ibpb and l1d flush - Rename TIF_L1D_FLUSH to TIF_SPEC_FLUSH_L1D Changelog RFC: - Reuse existing code for allocation and flush - Simplify the goto logic in the actual l1d_flush function - Optimize the code path with jump labels/static functions The previous version of this patch posted at: https://lore.kernel.org/lkml/20200406031946.11815-1-sblbir@amazon.com/ Balbir Singh (5): arch/x86/kvm: Refactor l1d flush lifecycle management arch/x86: Refactor tlbflush and l1d flush arch/x86/mm: Refactor cond_ibpb() to support other use cases arch/x86: Optionally flush L1D on context switch arch/x86: Add L1D flushing Documentation Documentation/admin-guide/hw-vuln/index.rst | 1 + .../admin-guide/hw-vuln/l1d_flush.rst | 40 +++++++ arch/x86/include/asm/cacheflush.h | 6 + arch/x86/include/asm/thread_info.h | 6 +- arch/x86/include/asm/tlbflush.h | 2 +- arch/x86/kernel/Makefile | 1 + arch/x86/kernel/l1d_flush.c | 85 ++++++++++++++ arch/x86/kvm/vmx/vmx.c | 56 ++------- arch/x86/mm/tlb.c | 109 ++++++++++++++---- include/uapi/linux/prctl.h | 4 + kernel/sys.c | 20 ++++ 11 files changed, 259 insertions(+), 71 deletions(-) create mode 100644 Documentation/admin-guide/hw-vuln/l1d_flush.rst create mode 100644 arch/x86/kernel/l1d_flush.c -- 2.17.1