FAILED: patch "[PATCH] KVM: SVM: Truncate GPR value for DR and CR accesses in" failed to apply to 4.19-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 4.19-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 0884335a2e653b8a045083aa1d57ce74269ac81d Mon Sep 17 00:00:00 2001
From: Sean Christopherson <[email protected]>
Date: Wed, 21 Apr 2021 19:21:22 -0700
Subject: [PATCH] KVM: SVM: Truncate GPR value for DR and CR accesses in
!64-bit mode
Drop bits 63:32 on loads/stores to/from DRs and CRs when the vCPU is not in 64-bit mode. The APM states bits 63:32 are dropped for both DRs and CRs:
In 64-bit mode, the operand size is fixed at 64 bits without the need for a REX prefix. In non-64-bit mode, the operand size is fixed at 32 bits and the upper 32 bits of the destination are forced to 0.
Message-Id: <[email protected]>
arch/x86/kvm/svm/svm.c +4 -4
@@ -2451,7 +2451,7 @@ static int cr_interception(struct kvm_vcpu *vcpu) err =0 ;if (cr >=16 ) {/* mov to cr */ cr -=16 ; - val =kvm_register_read (vcpu, reg); + val =kvm_register_readl (vcpu, reg);trace_kvm_cr_write (cr, val);switch (cr) {case 0 :
@@ -2497,7 +2497,7 @@ static int cr_interception(struct kvm_vcpu *vcpu)kvm_queue_exception (vcpu,UD_VECTOR );return 1 ; } -kvm_register_write (vcpu, reg, val); +kvm_register_writel (vcpu, reg, val);trace_kvm_cr_read (cr, val); }return kvm_complete_insn_gp (vcpu, err);
@@ -2563,11 +2563,11 @@ static int dr_interception(struct kvm_vcpu *vcpu) dr = svm->vmcb->control.exit_code -SVM_EXIT_READ_DR0 ;if (dr >=16 ) {/* mov to DRn */ dr -=16 ; - val =kvm_register_read (vcpu, reg); + val =kvm_register_readl (vcpu, reg); err =kvm_set_dr (vcpu, dr, val); }else {kvm_get_dr (vcpu, dr, &val); -kvm_register_write (vcpu, reg, val); +kvm_register_writel (vcpu, reg, val); }return kvm_complete_insn_gp (vcpu, err);