Re: [PATCH v4 3/4] KVM: nVMX: Disallow access to vmcs12 fields that aren't supported by "hardware"

From: Xiaoyao Li

Date: Fri Jan 16 2026 - 03:59:46 EST


On 1/16/2026 1:34 AM, Sean Christopherson wrote:
Disallow access (VMREAD/VMWRITE), both emulated and via a shadow VMCS, to
VMCS fields that the loaded incarnation of KVM doesn't support, e.g. due
to lack of hardware support, as a middle ground between allowing access to
any vmcs12 field defined by KVM (current behavior) and gating access based
on the userspace-defined vCPU model (the most functionally correct, but
very costly, implementation).

Disallowing access to unsupported fields helps a tiny bit in terms of
closing the virtualization hole (see below), but the main motivation is to
avoid having to weed out unsupported fields when synchronizing between
vmcs12 and a shadow VMCS. Because shadow VMCS accesses are done via
VMREAD and VMWRITE, KVM_must_ filter out unsupported fields (or eat
VMREAD/VMWRITE failures), and filtering out just shadow VMCS fields is
about the same amount of effort, and arguably much more confusing.

As a bonus, this also fixes a KVM-Unit-Test failure bug when running on
_hardware_ without support for TSC Scaling, which fails with the same
signature as the bug fixed by commit ba1f82456ba8 ("KVM: nVMX: Dynamically
compute max VMCS index for vmcs12"):

FAIL: VMX_VMCS_ENUM.MAX_INDEX expected: 19, actual: 17

Dynamically computing the max VMCS index only resolved the issue where KVM
was hardcoding max index, but for CPUs with TSC Scaling, that was "good
enough".

Reviewed-by: Chao Gao<chao.gao@xxxxxxxxx>
Reviewed-by: Xin Li<xin@xxxxxxxxx>
Cc: Xiaoyao Li<xiaoyao.li@xxxxxxxxx>
Cc: Yosry Ahmed<yosry.ahmed@xxxxxxxxx>
Link:https://lore.kernel.org/all/20251026201911.505204-22-xin@xxxxxxxxx
Link:https://lore.kernel.org/all/YR2Tf9WPNEzrE7Xg@xxxxxxxxxx
Signed-off-by: Sean Christopherson<seanjc@xxxxxxxxxx>

Reviewed-by: Xiaoyao Li <xiaoyao.li@xxxxxxxxx>