From: Balbir Singh <sblbir@amazon.com>
To: <tglx@linutronix.de>, <linux-kernel@vger.kernel.org>
Cc: <jpoimboe@redhat.com>, <tony.luck@intel.com>,
<keescook@chromium.org>, <benh@kernel.crashing.org>,
<x86@kernel.org>, <dave.hansen@intel.com>,
<thomas.lendacky@amd.com>, Balbir Singh <sblbir@amazon.com>
Subject: [PATCH v5 0/6] Optionally flush L1D on context switch
Date: Mon, 4 May 2020 14:13:37 +1000 [thread overview]
Message-ID: <20200504041343.9651-1-sblbir@amazon.com> (raw)
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.
Changelog v5:
- Based on Tom's recommendation, restrict the patches to Intel CPUs
only (thomas.lendacky@amd.com)
- Update reviewed-by tags based on v4.
Changelog v4:
- Refactor the L1D flushing code even further, pages are now allocated
once and never freed. Simplify the exported functions.
- Change the name prefixs to be more consistent (l1d_flush_*)
- Refactoring of the code done in the spirit of the comments, prctl
still requires arch bits for get/set L1D flush and ofcourse in
the arch switch_mm bits flushing the L1D cache.
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 <bp@alien8.de>)
- Add documentation about the changes (Josh Poimboeuf
<jpoimboe@redhat.com>)
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 these patches are posted at:
https://lore.kernel.org/lkml/20200423140125.7332-1-sblbir@amazon.com/
Balbir Singh (6):
arch/x86/kvm: Refactor l1d flush lifecycle management
arch/x86/kvm: Refactor tlbflush and l1d flush
arch/x86/mm: Refactor cond_ibpb() to support other use cases
arch/x86/kvm: Refactor L1D flushing
Optionally flush L1D on context switch
Documentation: 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 | 8 ++
arch/x86/include/asm/thread_info.h | 7 +-
arch/x86/include/asm/tlbflush.h | 2 +-
arch/x86/kernel/Makefile | 1 +
arch/x86/kernel/l1d_flush.c | 120 ++++++++++++++++++
arch/x86/kvm/vmx/vmx.c | 62 +--------
arch/x86/mm/tlb.c | 83 +++++++++---
include/uapi/linux/prctl.h | 4 +
kernel/sys.c | 20 +++
11 files changed, 266 insertions(+), 82 deletions(-)
create mode 100644 Documentation/admin-guide/hw-vuln/l1d_flush.rst
create mode 100644 arch/x86/kernel/l1d_flush.c
--
2.17.1
next reply other threads:[~2020-05-04 4:13 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-04 4:13 Balbir Singh [this message]
2020-05-04 4:13 ` [PATCH v5 1/6] arch/x86/kvm: Refactor l1d flush lifecycle management Balbir Singh
2020-05-04 4:13 ` [PATCH v5 2/6] arch/x86/kvm: Refactor tlbflush and l1d flush Balbir Singh
2020-05-04 4:13 ` [PATCH v5 3/6] arch/x86/mm: Refactor cond_ibpb() to support other use cases Balbir Singh
2020-05-04 4:13 ` [PATCH v5 4/6] arch/x86/kvm: Refactor L1D flushing Balbir Singh
2020-05-05 13:29 ` kbuild test robot
2020-05-04 4:13 ` [PATCH v5 5/6] Optionally flush L1D on context switch Balbir Singh
2020-05-04 18:39 ` Kees Cook
2020-05-04 23:14 ` Singh, Balbir
2020-05-05 20:34 ` Kees Cook
2020-05-04 4:13 ` [PATCH v5 6/6] Documentation: Add L1D flushing Documentation Balbir Singh
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200504041343.9651-1-sblbir@amazon.com \
--to=sblbir@amazon.com \
--cc=benh@kernel.crashing.org \
--cc=dave.hansen@intel.com \
--cc=jpoimboe@redhat.com \
--cc=keescook@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tglx@linutronix.de \
--cc=thomas.lendacky@amd.com \
--cc=tony.luck@intel.com \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).