No description
  • C 96.8%
  • Assembly 0.9%
  • Rust 0.7%
  • Shell 0.6%
  • Python 0.5%
  • Other 0.3%
Find a file
Kirill A. Shutemov 14ddfc24bf x86/tdx: Dynamically disable SEPT violations from causing #VEs
[ Upstream commit f65aa0ad79 ]

Memory access #VEs are hard for Linux to handle in contexts like the
entry code or NMIs.  But other OSes need them for functionality.
There's a static (pre-guest-boot) way for a VMM to choose one or the
other.  But VMMs don't always know which OS they are booting, so they
choose to deliver those #VEs so the "other" OSes will work.  That,
unfortunately has left us in the lurch and exposed to these
hard-to-handle #VEs.

The TDX module has introduced a new feature. Even if the static
configuration is set to "send nasty #VEs", the kernel can dynamically
request that they be disabled. Once they are disabled, access to private
memory that is not in the Mapped state in the Secure-EPT (SEPT) will
result in an exit to the VMM rather than injecting a #VE.

Check if the feature is available and disable SEPT #VE if possible.

If the TD is allowed to disable/enable SEPT #VEs, the ATTR_SEPT_VE_DISABLE
attribute is no longer reliable. It reflects the initial state of the
control for the TD, but it will not be updated if someone (e.g. bootloader)
changes it before the kernel starts. Kernel must check TDCS_TD_CTLS bit to
determine if SEPT #VEs are enabled or disabled.

[ dhansen: remove 'return' at end of function ]

Fixes: 373e715e31 ("x86/tdx: Panic on bad configs that #VE on "private" memory access")
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Acked-by: Kai Huang <kai.huang@intel.com>
Link: https://lore.kernel.org/all/20241104103803.195705-4-kirill.shutemov%40linux.intel.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2024-12-05 14:02:11 +01:00
arch x86/tdx: Dynamically disable SEPT violations from causing #VEs 2024-12-05 14:02:11 +01:00
block block: fix bio_split_rw_at to take zone_write_granularity into account 2024-12-05 14:01:14 +01:00
certs sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3 2024-09-20 19:52:48 +03:00
crypto crypto: pcrypt - Call crypto layer directly when padata_do_parallel() return -EBUSY 2024-12-05 14:01:18 +01:00
Documentation ASoC: dt-bindings: mt6359: Update generic node name and dmic-mode 2024-12-05 14:01:39 +01:00
drivers scsi: sg: Enable runtime power management 2024-12-05 14:02:11 +01:00
fs fs/proc/kcore.c: fix coccinelle reported ERROR instances 2024-12-05 14:02:10 +01:00
include RDMA/core: Implement RoCE GID port rescan and export delete function 2024-12-05 14:02:08 +01:00
init initramfs: avoid filename buffer overrun 2024-12-05 14:01:12 +01:00
io_uring io_uring/rw: fix missing NOWAIT check for O_DIRECT start write 2024-10-31 08:21:02 -06:00
ipc struct fd layout change (and conversion to accessor helpers) 2024-09-23 09:35:36 -07:00
kernel trace/trace_event_perf: remove duplicate samples on the first tracepoint event 2024-12-05 14:02:02 +01:00
lib objpool: fix to make percpu slot allocation more robust 2024-11-07 14:14:58 -08:00
LICENSES LICENSES: add 0BSD license text 2024-09-01 20:43:24 -07:00
mm mm/mmap: fix __mmap_region() error handling in rare merge failure case 2024-11-22 15:30:26 +01:00
net bpf: fix recursive lock when verdict program return SK_PASS 2024-12-05 14:02:01 +01:00
rust rust: helpers: Avoid raw_spin_lock initialization for PREEMPT_RT 2024-12-05 14:01:23 +01:00
samples bpf: Fix the xdp_adjust_tail sample prog issue 2024-12-05 14:01:42 +01:00
scripts checkpatch: always parse orig_commit in fixes tag 2024-12-05 14:02:09 +01:00
security integrity-v6.12 2024-11-12 13:06:31 -08:00
sound ALSA: 6fire: Release resources at card release 2024-12-05 14:01:58 +01:00
tools powerpc/vdso: Flag VDSO64 entry points as functions 2024-12-05 14:02:03 +01:00
usr initramfs: shorten cmd_initfs in usr/Makefile 2024-07-16 01:07:52 +09:00
virt ARM64: 2024-10-21 11:22:04 -07:00
.clang-format clang-format: Update with v6.11-rc1's for_each macro list 2024-08-02 13:20:31 +02:00
.cocciconfig scripts: add Linux .cocciconfig for coccinelle 2016-07-22 12:13:39 +02:00
.editorconfig .editorconfig: remove trim_trailing_whitespace option 2024-06-13 16:47:52 +02:00
.get_maintainer.ignore Add Jeff Kirsher to .get_maintainer.ignore 2024-03-08 11:36:54 +00:00
.gitattributes .gitattributes: set diff driver for Rust source code files 2023-05-31 17:48:25 +02:00
.gitignore Kbuild updates for v6.12 2024-09-24 13:02:06 -07:00
.mailmap mailmap: add entry for Thorsten Blum 2024-11-07 14:14:59 -08:00
.rustfmt.toml rust: add .rustfmt.toml 2022-09-28 09:02:20 +02:00
COPYING COPYING: state that all contributions really are covered by this file 2020-02-10 13:32:20 -08:00
CREDITS MAINTAINERS: Remove self from DSA entry 2024-11-03 12:52:38 -08:00
Kbuild Kbuild updates for v6.1 2022-10-10 12:00:45 -07:00
Kconfig kbuild: ensure full rebuild when the compiler is updated 2020-05-12 13:28:33 +09:00
MAINTAINERS MAINTAINERS: appoint myself the XFS maintainer for 6.12 LTS 2024-12-05 14:01:10 +01:00
Makefile Linux 6.12.1 2024-11-22 15:30:26 +01:00
README README: Fix spelling 2024-03-18 03:36:32 -06:00

Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the reStructuredText markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.