Files
linux-bredos/include/uapi/linux
Thomas Prescher 85542adb65 KVM: x86: Add KVM_RUN_X86_GUEST_MODE kvm_run flag
When a vCPU is interrupted by a signal while running a nested guest,
KVM will exit to userspace with L2 state. However, userspace has no
way to know whether it sees L1 or L2 state (besides calling
KVM_GET_STATS_FD, which does not have a stable ABI).

This causes multiple problems:

The simplest one is L2 state corruption when userspace marks the sregs
as dirty. See this mailing list thread [1] for a complete discussion.

Another problem is that if userspace decides to continue by emulating
instructions, it will unknowingly emulate with L2 state as if L1
doesn't exist, which can be considered a weird guest escape.

Introduce a new flag, KVM_RUN_X86_GUEST_MODE, in the kvm_run data
structure, which is set when the vCPU exited while running a nested
guest.  Also introduce a new capability, KVM_CAP_X86_GUEST_MODE, to
advertise the functionality to userspace.

[1] https://lore.kernel.org/kvm/20240416123558.212040-1-julian.stecklina@cyberus-technology.de/T/#m280aadcb2e10ae02c191a7dc4ed4b711a74b1f55

Signed-off-by: Thomas Prescher <thomas.prescher@cyberus-technology.de>
Signed-off-by: Julian Stecklina <julian.stecklina@cyberus-technology.de>
Link: https://lore.kernel.org/r/20240508132502.184428-1-julian.stecklina@cyberus-technology.de
Signed-off-by: Sean Christopherson <seanjc@google.com>
2024-06-11 09:24:31 -07:00
..
2024-04-15 13:42:38 +02:00
2023-05-30 15:20:08 +01:00
2024-04-08 14:10:45 +01:00
2023-03-06 15:49:07 -06:00
2024-03-07 17:14:53 +00:00
2024-05-10 08:26:31 +02:00
2023-03-16 21:20:32 -07:00
2023-09-21 19:22:05 +02:00
2024-05-07 01:35:57 +02:00
2024-05-07 01:35:57 +02:00
2024-04-01 10:49:28 +01:00
2024-06-01 07:28:21 +02:00
2024-02-15 23:43:47 -05:00
2023-12-15 17:01:30 +01:00
2023-06-09 16:25:16 -07:00
2023-12-14 11:49:17 +01:00
2023-04-27 19:15:11 -06:00
2024-05-30 12:15:56 +02:00
2023-11-28 19:05:16 +00:00
2024-05-16 18:14:09 -05:00
2024-04-01 10:49:28 +01:00
2023-12-20 19:26:31 -05:00
2024-03-26 09:01:18 +01:00
2023-06-05 09:36:35 +02:00
2024-02-28 18:47:08 -07:00
2023-12-29 11:58:24 -08:00
2023-03-23 17:25:46 +01:00
2024-04-22 17:07:13 -04:00