FAILED: patch "[PATCH] KVM: VMX: Truncate GPR value for DR and CR reads in !64-bit" failed to apply to 5.4-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From d8971344f5739a9cc53f91f1f593ddd82265b93b Mon Sep 17 00:00:00 2001
From: Sean Christopherson <[email protected]>
Date: Wed, 21 Apr 2021 19:21:23 -0700
Subject: [PATCH] KVM: VMX: Truncate GPR value for DR and CR reads in !64-bit
mode
Drop bits 63:32 when storing a DR/CR to a GPR when the vCPU is not in 64-bit mode. Per the SDM:
The operand size for these instructions is always 32 bits in non-64-bit modes, regardless of the operand-size attribute.
CR8 technically isn't affected as CR8 isn't accessible outside of 64-bit mode, but fix it up for consistency and to allow for future cleanup.
Message-Id: <[email protected]>
arch/x86/kvm/vmx/vmx.c +3 -3
@@ -5121,12 +5121,12 @@ static int handle_cr(struct kvm_vcpu *vcpu)case 3 :WARN_ON_ONCE (enable_unrestricted_guest); val =kvm_read_cr3 (vcpu); -kvm_register_write (vcpu, reg, val); +kvm_register_writel (vcpu, reg, val);trace_kvm_cr_read (cr, val);return kvm_skip_emulated_instruction (vcpu);case 8 : val =kvm_get_cr8 (vcpu); -kvm_register_write (vcpu, reg, val); +kvm_register_writel (vcpu, reg, val);trace_kvm_cr_read (cr, val);return kvm_skip_emulated_instruction (vcpu); }
@@ -5199,7 +5199,7 @@ static int handle_dr(struct kvm_vcpu *vcpu)unsigned long val;kvm_get_dr (vcpu, dr, &val); -kvm_register_write (vcpu, reg, val); +kvm_register_writel (vcpu, reg, val); err =0 ; }else { err =kvm_set_dr (vcpu, dr,kvm_register_readl (vcpu, reg));