]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
delete a broken kvm patch from .33 and .32
authorGreg Kroah-Hartman <gregkh@suse.de>
Fri, 12 Mar 2010 03:16:36 +0000 (19:16 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 12 Mar 2010 03:16:36 +0000 (19:16 -0800)
queue-2.6.32/kvm-x86-emulator-check-cpl-level-during-privilege-instruction-emulation.patch
queue-2.6.32/kvm-x86-emulator-fix-popf-emulation.patch [deleted file]
queue-2.6.32/series
queue-2.6.33/kvm-x86-emulator-check-cpl-level-during-privilege-instruction-emulation.patch
queue-2.6.33/kvm-x86-emulator-fix-popf-emulation.patch [deleted file]
queue-2.6.33/series

index 336a453364474fadd8977f465f1c774ffd15771b..7d8f3d2bf078eee6a1fff95f47d9df7d32aeecf0 100644 (file)
@@ -84,7 +84,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
        SrcNone | ModRM | DstMem | Mov, 0,
        SrcMem16 | ModRM | Mov, 0,
        [Group9*8] =
-@@ -1623,12 +1628,6 @@ emulate_sysexit(struct x86_emulate_ctxt
+@@ -1573,12 +1578,6 @@ emulate_sysexit(struct x86_emulate_ctxt
                return -1;
        }
  
@@ -97,7 +97,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
        setup_syscalls_segments(ctxt, &cs, &ss);
  
        if ((c->rex_prefix & 0x8) != 0x0)
-@@ -1692,6 +1691,12 @@ x86_emulate_insn(struct x86_emulate_ctxt
+@@ -1642,6 +1641,12 @@ x86_emulate_insn(struct x86_emulate_ctxt
        memcpy(c->regs, ctxt->vcpu->arch.regs, sizeof c->regs);
        saved_eip = c->eip;
  
diff --git a/queue-2.6.32/kvm-x86-emulator-fix-popf-emulation.patch b/queue-2.6.32/kvm-x86-emulator-fix-popf-emulation.patch
deleted file mode 100644 (file)
index 4ec8b55..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-From d4c6a1549c056f1d817e8f6f2f97d8b44933472f Mon Sep 17 00:00:00 2001
-From: Gleb Natapov <gleb@redhat.com>
-Date: Wed, 10 Feb 2010 14:21:34 +0200
-Subject: KVM: x86 emulator: Fix popf emulation
-
-From: Gleb Natapov <gleb@redhat.com>
-
-commit d4c6a1549c056f1d817e8f6f2f97d8b44933472f upstream.
-
-POPF behaves differently depending on current CPU mode. Emulate correct
-logic to prevent guest from changing flags that it can't change otherwise.
-
-Signed-off-by: Gleb Natapov <gleb@redhat.com>
-Signed-off-by: Avi Kivity <avi@redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- arch/x86/kvm/emulate.c |   55 ++++++++++++++++++++++++++++++++++++++++++++++++-
- 1 file changed, 54 insertions(+), 1 deletion(-)
-
---- a/arch/x86/kvm/emulate.c
-+++ b/arch/x86/kvm/emulate.c
-@@ -334,11 +334,18 @@ static u32 group2_table[] = {
- };
- /* EFLAGS bit definitions. */
-+#define EFLG_ID (1<<21)
-+#define EFLG_VIP (1<<20)
-+#define EFLG_VIF (1<<19)
-+#define EFLG_AC (1<<18)
- #define EFLG_VM (1<<17)
- #define EFLG_RF (1<<16)
-+#define EFLG_IOPL (3<<12)
-+#define EFLG_NT (1<<14)
- #define EFLG_OF (1<<11)
- #define EFLG_DF (1<<10)
- #define EFLG_IF (1<<9)
-+#define EFLG_TF (1<<8)
- #define EFLG_SF (1<<7)
- #define EFLG_ZF (1<<6)
- #define EFLG_AF (1<<4)
-@@ -1199,6 +1206,49 @@ static int emulate_pop(struct x86_emulat
-       return rc;
- }
-+static int emulate_popf(struct x86_emulate_ctxt *ctxt,
-+                     struct x86_emulate_ops *ops,
-+                     void *dest, int len)
-+{
-+      int rc;
-+      unsigned long val, change_mask;
-+      int iopl = (ctxt->eflags & X86_EFLAGS_IOPL) >> IOPL_SHIFT;
-+      int cpl = kvm_x86_ops->get_cpl(ctxt->vcpu);
-+
-+      rc = emulate_pop(ctxt, ops, &val, len);
-+      if (rc != X86EMUL_CONTINUE)
-+              return rc;
-+
-+      change_mask = EFLG_CF | EFLG_PF | EFLG_AF | EFLG_ZF | EFLG_SF | EFLG_OF
-+              | EFLG_TF | EFLG_DF | EFLG_NT | EFLG_RF | EFLG_AC | EFLG_ID;
-+
-+      switch(ctxt->mode) {
-+      case X86EMUL_MODE_PROT64:
-+      case X86EMUL_MODE_PROT32:
-+      case X86EMUL_MODE_PROT16:
-+              if (cpl == 0)
-+                      change_mask |= EFLG_IOPL;
-+              if (cpl <= iopl)
-+                      change_mask |= EFLG_IF;
-+              break;
-+      case X86EMUL_MODE_VM86:
-+              if (iopl < 3) {
-+                      kvm_inject_gp(ctxt->vcpu, 0);
-+                      return X86EMUL_PROPAGATE_FAULT;
-+              }
-+              change_mask |= EFLG_IF;
-+              break;
-+      default: /* real mode */
-+              change_mask |= (EFLG_IOPL | EFLG_IF);
-+              break;
-+      }
-+
-+      *(unsigned long *)dest =
-+              (ctxt->eflags & ~change_mask) | (val & change_mask);
-+
-+      return rc;
-+}
-+
- static inline int emulate_grp1a(struct x86_emulate_ctxt *ctxt,
-                               struct x86_emulate_ops *ops)
- {
-@@ -1929,7 +1979,10 @@ special_insn:
-               c->dst.type = OP_REG;
-               c->dst.ptr = (unsigned long *) &ctxt->eflags;
-               c->dst.bytes = c->op_bytes;
--              goto pop_instruction;
-+              rc = emulate_popf(ctxt, ops, &c->dst.val, c->op_bytes);
-+              if (rc != X86EMUL_CONTINUE)
-+                      goto done;
-+              break;
-       case 0xa0 ... 0xa1:     /* mov */
-               c->dst.ptr = (unsigned long *)&c->regs[VCPU_REGS_RAX];
-               c->dst.val = c->src.val;
index eee217356e277bc2add1e7ae28a3dc552c02ecc2..ebc579a1b1d9629a7ad536ed957bc7deb82ab3d4 100644 (file)
@@ -138,7 +138,6 @@ dm-free-dm_io-before-bio_endio-not-after.patch
 kvm-x86-emulator-add-group8-instruction-decoding.patch
 kvm-x86-emulator-forbid-modifying-cs-segment-register-by-mov-instruction.patch
 kvm-x86-emulator-add-group9-instruction-decoding.patch
-kvm-x86-emulator-fix-popf-emulation.patch
 kvm-x86-emulator-check-cpl-level-during-privilege-instruction-emulation.patch
 sched-fix-sched_mv_power_savings-for-smt.patch
 sched-fix-smt-scheduler-regression-in-find_busiest_queue.patch
index 210d0cb5154ca40b8986f94923382120bcc14517..47c416cb3880f8760f2f1fba439bfb9d3dc58217 100644 (file)
@@ -84,7 +84,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
        SrcNone | ModRM | DstMem | Mov, 0,
        SrcMem16 | ModRM | Mov, 0,
        [Group9*8] =
-@@ -1700,12 +1705,6 @@ emulate_sysexit(struct x86_emulate_ctxt
+@@ -1650,12 +1655,6 @@ emulate_sysexit(struct x86_emulate_ctxt
                return -1;
        }
  
@@ -97,7 +97,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
        setup_syscalls_segments(ctxt, &cs, &ss);
  
        if ((c->rex_prefix & 0x8) != 0x0)
-@@ -1769,6 +1768,12 @@ x86_emulate_insn(struct x86_emulate_ctxt
+@@ -1719,6 +1718,12 @@ x86_emulate_insn(struct x86_emulate_ctxt
        memcpy(c->regs, ctxt->vcpu->arch.regs, sizeof c->regs);
        saved_eip = c->eip;
  
diff --git a/queue-2.6.33/kvm-x86-emulator-fix-popf-emulation.patch b/queue-2.6.33/kvm-x86-emulator-fix-popf-emulation.patch
deleted file mode 100644 (file)
index 72e7dc5..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-From d4c6a1549c056f1d817e8f6f2f97d8b44933472f Mon Sep 17 00:00:00 2001
-From: Gleb Natapov <gleb@redhat.com>
-Date: Wed, 10 Feb 2010 14:21:34 +0200
-Subject: KVM: x86 emulator: Fix popf emulation
-
-From: Gleb Natapov <gleb@redhat.com>
-
-commit d4c6a1549c056f1d817e8f6f2f97d8b44933472f upstream.
-
-POPF behaves differently depending on current CPU mode. Emulate correct
-logic to prevent guest from changing flags that it can't change otherwise.
-
-Signed-off-by: Gleb Natapov <gleb@redhat.com>
-Signed-off-by: Avi Kivity <avi@redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- arch/x86/kvm/emulate.c |   55 ++++++++++++++++++++++++++++++++++++++++++++++++-
- 1 file changed, 54 insertions(+), 1 deletion(-)
-
---- a/arch/x86/kvm/emulate.c
-+++ b/arch/x86/kvm/emulate.c
-@@ -343,11 +343,18 @@ static u32 group2_table[] = {
- };
- /* EFLAGS bit definitions. */
-+#define EFLG_ID (1<<21)
-+#define EFLG_VIP (1<<20)
-+#define EFLG_VIF (1<<19)
-+#define EFLG_AC (1<<18)
- #define EFLG_VM (1<<17)
- #define EFLG_RF (1<<16)
-+#define EFLG_IOPL (3<<12)
-+#define EFLG_NT (1<<14)
- #define EFLG_OF (1<<11)
- #define EFLG_DF (1<<10)
- #define EFLG_IF (1<<9)
-+#define EFLG_TF (1<<8)
- #define EFLG_SF (1<<7)
- #define EFLG_ZF (1<<6)
- #define EFLG_AF (1<<4)
-@@ -1213,6 +1220,49 @@ static int emulate_pop(struct x86_emulat
-       return rc;
- }
-+static int emulate_popf(struct x86_emulate_ctxt *ctxt,
-+                     struct x86_emulate_ops *ops,
-+                     void *dest, int len)
-+{
-+      int rc;
-+      unsigned long val, change_mask;
-+      int iopl = (ctxt->eflags & X86_EFLAGS_IOPL) >> IOPL_SHIFT;
-+      int cpl = kvm_x86_ops->get_cpl(ctxt->vcpu);
-+
-+      rc = emulate_pop(ctxt, ops, &val, len);
-+      if (rc != X86EMUL_CONTINUE)
-+              return rc;
-+
-+      change_mask = EFLG_CF | EFLG_PF | EFLG_AF | EFLG_ZF | EFLG_SF | EFLG_OF
-+              | EFLG_TF | EFLG_DF | EFLG_NT | EFLG_RF | EFLG_AC | EFLG_ID;
-+
-+      switch(ctxt->mode) {
-+      case X86EMUL_MODE_PROT64:
-+      case X86EMUL_MODE_PROT32:
-+      case X86EMUL_MODE_PROT16:
-+              if (cpl == 0)
-+                      change_mask |= EFLG_IOPL;
-+              if (cpl <= iopl)
-+                      change_mask |= EFLG_IF;
-+              break;
-+      case X86EMUL_MODE_VM86:
-+              if (iopl < 3) {
-+                      kvm_inject_gp(ctxt->vcpu, 0);
-+                      return X86EMUL_PROPAGATE_FAULT;
-+              }
-+              change_mask |= EFLG_IF;
-+              break;
-+      default: /* real mode */
-+              change_mask |= (EFLG_IOPL | EFLG_IF);
-+              break;
-+      }
-+
-+      *(unsigned long *)dest =
-+              (ctxt->eflags & ~change_mask) | (val & change_mask);
-+
-+      return rc;
-+}
-+
- static void emulate_push_sreg(struct x86_emulate_ctxt *ctxt, int seg)
- {
-       struct decode_cache *c = &ctxt->decode;
-@@ -2041,7 +2091,10 @@ special_insn:
-               c->dst.type = OP_REG;
-               c->dst.ptr = (unsigned long *) &ctxt->eflags;
-               c->dst.bytes = c->op_bytes;
--              goto pop_instruction;
-+              rc = emulate_popf(ctxt, ops, &c->dst.val, c->op_bytes);
-+              if (rc != X86EMUL_CONTINUE)
-+                      goto done;
-+              break;
-       case 0xa0 ... 0xa1:     /* mov */
-               c->dst.ptr = (unsigned long *)&c->regs[VCPU_REGS_RAX];
-               c->dst.val = c->src.val;
index 3a3b0bee73382fd879a4669246bdca0cda139ad6..98b2622099f9fb40ea6f3a0f2567440a9f786895 100644 (file)
@@ -116,7 +116,6 @@ kvm-vmx-trap-and-invalid-mwait-monitor-instruction.patch
 kvm-x86-emulator-add-group8-instruction-decoding.patch
 kvm-x86-emulator-forbid-modifying-cs-segment-register-by-mov-instruction.patch
 kvm-x86-emulator-add-group9-instruction-decoding.patch
-kvm-x86-emulator-fix-popf-emulation.patch
 kvm-x86-emulator-check-cpl-level-during-privilege-instruction-emulation.patch
 sched-fix-sched_mv_power_savings-for-smt.patch
 sched-fix-smt-scheduler-regression-in-find_busiest_queue.patch