Go to file
Sean Christopherson b67e7c61c1 KVM: nVMX: Clear IDT vectoring on nested VM-Exit for double/triple fault
[ Upstream commit 9bd1f0efa8 ]

Clear the IDT vectoring field in vmcs12 on next VM-Exit due to a double
or triple fault.  Per the SDM, a VM-Exit isn't considered to occur during
event delivery if the exit is due to an intercepted double fault or a
triple fault.  Opportunistically move the default clearing (no event
"pending") into the helper so that it's more obvious that KVM does indeed
handle this case.

Note, the double fault case is worded rather wierdly in the SDM:

  The original event results in a double-fault exception that causes the
  VM exit directly.

Temporarily ignoring injected events, double faults can _only_ occur if
an exception occurs while attempting to deliver a different exception,
i.e. there's _always_ an original event.  And for injected double fault,
while there's no original event, injected events are never subject to
interception.

Presumably the SDM is calling out that a the vectoring info will be valid
if a different exit occurs after a double fault, e.g. if a #PF occurs and
is intercepted while vectoring #DF, then the vectoring info will show the
double fault.  In other words, the clause can simply be read as:

  The VM exit is caused by a double-fault exception.

Fixes: 4704d0befb ("KVM: nVMX: Exiting from L2 to L1")
Cc: Chenyi Qiang <chenyi.qiang@intel.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20220407002315.78092-4-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-06-09 10:26:00 +02:00
Documentation sched/psi: report zeroes for CPU full at the system level 2022-06-09 10:25:41 +02:00
LICENSES LICENSES/LGPL-2.1: Add LGPL-2.1-or-later as valid identifiers 2021-12-16 14:33:10 +01:00
arch KVM: nVMX: Clear IDT vectoring on nested VM-Exit for double/triple fault 2022-06-09 10:26:00 +02:00
block bfq: Allow current waker to defend against a tentative one 2022-06-09 10:25:56 +02:00
certs certs: Fix build error when CONFIG_MODULE_SIG_KEY is empty 2022-01-23 00:08:44 +09:00
crypto crypto: ecrdsa - Fix incorrect use of vli_cmp 2022-06-06 08:47:53 +02:00
drivers soc: qcom: llcc: Add MODULE_DEVICE_TABLE() 2022-06-09 10:26:00 +02:00
fs rxrpc: Fix locking issue 2022-06-09 10:25:57 +02:00
include Bluetooth: hci_sync: Cleanup hci_conn if it cannot be aborted 2022-06-09 10:25:58 +02:00
init kthread: Don't allocate kthread_struct for init and umh 2022-06-09 10:25:16 +02:00
ipc ipc/sem: do not sleep with a spin lock held 2022-02-04 09:25:05 -08:00
kernel dma-direct: don't over-decrypt memory 2022-06-09 10:25:58 +02:00
lib kunit: fix debugfs code to use enum kunit_status, not bool 2022-06-09 10:25:46 +02:00
mm zsmalloc: fix races between asynchronous zspage free and page migration 2022-06-06 08:47:53 +02:00
net Revert "net/smc: fix listen processing for SMC-Rv2" 2022-06-09 10:25:59 +02:00
samples samples: bpf: Don't fail for a missing VMLINUX_BTF when VMLINUX_H is provided 2022-06-09 10:25:48 +02:00
scripts scripts/faddr2line: Fix overlapping text section failures 2022-06-09 10:25:50 +02:00
security lockdown: also lock down previous kgdb use 2022-05-25 09:59:10 +02:00
sound ASoC: max98090: Move check for invalid values before casting in max98090_put_enab_tlv() 2022-06-09 10:25:57 +02:00
tools perf parse-events: Support different format of the topdown event name 2022-06-09 10:25:57 +02:00
usr kbuild: remove include/linux/cyclades.h from header file check 2022-01-27 08:51:08 +01:00
virt KVM: Free new dirty bitmap if creating a new memslot fails 2022-05-25 09:59:03 +02:00
.clang-format genirq/msi: Make interrupt allocation less convoluted 2021-12-16 22:22:20 +01:00
.cocciconfig
.get_maintainer.ignore Opt out of scripts/get_maintainer.pl 2019-05-16 10:53:40 -07:00
.gitattributes .gitattributes: use 'dts' diff driver for dts files 2019-12-04 19:44:11 -08:00
.gitignore .gitignore: ignore only top-level modules.builtin 2021-05-02 00:43:35 +09:00
.mailmap MAINTAINERS: Update Jisheng's email address 2022-03-08 17:30:32 +01:00
COPYING COPYING: state that all contributions really are covered by this file 2020-02-10 13:32:20 -08:00
CREDITS MAINTAINERS: replace a Microchip AT91 maintainer 2022-02-09 11:30:01 +01:00
Kbuild kbuild: rename hostprogs-y/always to hostprogs/always-y 2020-02-04 01:53:07 +09:00
Kconfig kbuild: ensure full rebuild when the compiler is updated 2020-05-12 13:28:33 +09:00
MAINTAINERS net: dsa: realtek-smi: move to subdirectory 2022-04-08 13:58:12 +02:00
Makefile Linux 5.17.13 2022-06-06 08:47:57 +02:00
README Drop all 00-INDEX files from Documentation/ 2018-09-09 15:08:58 -06:00

README

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 Restructured Text 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.