aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.9.21/0006-KVM-X86-Fix-operand-address-size-during-instruction-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.9.21/0006-KVM-X86-Fix-operand-address-size-during-instruction-.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.9.21/0006-KVM-X86-Fix-operand-address-size-during-instruction-.patch67
1 files changed, 0 insertions, 67 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.9.21/0006-KVM-X86-Fix-operand-address-size-during-instruction-.patch b/common/recipes-kernel/linux/linux-yocto-4.9.21/0006-KVM-X86-Fix-operand-address-size-during-instruction-.patch
deleted file mode 100644
index 9430b597..00000000
--- a/common/recipes-kernel/linux/linux-yocto-4.9.21/0006-KVM-X86-Fix-operand-address-size-during-instruction-.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From 399e9dee4411858aa4eb8894f031ff68ab3b5e9f Mon Sep 17 00:00:00 2001
-From: Wanpeng Li <wanpeng.li@hotmail.com>
-Date: Sun, 5 Nov 2017 16:54:47 -0800
-Subject: [PATCH 06/33] KVM: X86: Fix operand/address-size during instruction
- decoding
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-[ Upstream commit 3853be2603191829b442b64dac6ae8ba0c027bf9 ]
-
-Pedro reported:
- During tests that we conducted on KVM, we noticed that executing a "PUSH %ES"
- instruction under KVM produces different results on both memory and the SP
- register depending on whether EPT support is enabled. With EPT the SP is
- reduced by 4 bytes (and the written value is 0-padded) but without EPT support
- it is only reduced by 2 bytes. The difference can be observed when the CS.DB
- field is 1 (32-bit) but not when it's 0 (16-bit).
-
-The internal segment descriptor cache exist even in real/vm8096 mode. The CS.D
-also should be respected instead of just default operand/address-size/66H
-prefix/67H prefix during instruction decoding. This patch fixes it by also
-adjusting operand/address-size according to CS.D.
-
-Reported-by: Pedro Fonseca <pfonseca@cs.washington.edu>
-Tested-by: Pedro Fonseca <pfonseca@cs.washington.edu>
-Cc: Paolo Bonzini <pbonzini@redhat.com>
-Cc: Radim Krčmář <rkrcmar@redhat.com>
-Cc: Nadav Amit <nadav.amit@gmail.com>
-Cc: Pedro Fonseca <pfonseca@cs.washington.edu>
-Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
-Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
-Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
-Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- arch/x86/kvm/emulate.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
-index 9f676ad..9984daf 100644
---- a/arch/x86/kvm/emulate.c
-+++ b/arch/x86/kvm/emulate.c
-@@ -4971,6 +4971,8 @@ int x86_decode_insn(struct x86_emulate_ctxt *ctxt, void *insn, int insn_len)
- bool op_prefix = false;
- bool has_seg_override = false;
- struct opcode opcode;
-+ u16 dummy;
-+ struct desc_struct desc;
-
- ctxt->memop.type = OP_NONE;
- ctxt->memopp = NULL;
-@@ -4989,6 +4991,11 @@ int x86_decode_insn(struct x86_emulate_ctxt *ctxt, void *insn, int insn_len)
- switch (mode) {
- case X86EMUL_MODE_REAL:
- case X86EMUL_MODE_VM86:
-+ def_op_bytes = def_ad_bytes = 2;
-+ ctxt->ops->get_segment(ctxt, &dummy, &desc, NULL, VCPU_SREG_CS);
-+ if (desc.d)
-+ def_op_bytes = def_ad_bytes = 4;
-+ break;
- case X86EMUL_MODE_PROT16:
- def_op_bytes = def_ad_bytes = 2;
- break;
---
-2.7.4
-