Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1514076

[PATCH v2 2/4] KVM: x86: save one bit in ctxt->d

Path csiph.com!eternal-september.org!feeder.eternal-september.org!aioe.org!gothmog.csi.it!bofh.it!news.nic.it!robomod
From Radim Krčmář <rkrcmar@redhat.com>
Newsgroups linux.kernel
Subject [PATCH v2 2/4] KVM: x86: save one bit in ctxt->d
Date Wed, 02 Nov 2016 19:50:02 +0100
Message-ID <sz8LM-1va-29@gated-at.bofh.it> (permalink)
References <sz8LM-1va-13@gated-at.bofh.it>
MIME-Version 1.0
Content-Type text/plain; charset=UTF-8
Content-Transfer-Encoding 8bit
X-Scanned-By MIMEDefang 2.68 on 10.5.11.24
X-Greylist Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Wed, 02 Nov 2016 18:46:01 +0000 (UTC)
Sender robomod@news.nic.it
List-ID <linux-kernel.vger.kernel.org>
X-Mailing-List linux-kernel@vger.kernel.org
Approved robomod@news.nic.it
Lines 64
Organization linux.* mail to news gateway
X-Original-Cc Paolo Bonzini <pbonzini@redhat.com>, Bandan Das <bsd@redhat.com>, Nadav Amit <nadav.amit@gmail.com>
X-Original-Date Wed, 2 Nov 2016 19:45:35 +0100
X-Original-Message-ID <20161102184537.29039-3-rkrcmar@redhat.com>
X-Original-References <20161102184537.29039-1-rkrcmar@redhat.com>
X-Original-Sender linux-kernel-owner@vger.kernel.org
Xref csiph.com linux.kernel:1514076

Show key headers only | View raw


Alignments are exclusive, so 5 modes can be expressed in 3 bits.

Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
---
 arch/x86/kvm/emulate.c | 23 +++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
index 557dbb9e5bec..18616b6bdebb 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -158,9 +158,11 @@
 #define Src2GS      (OpGS << Src2Shift)
 #define Src2Mask    (OpMask << Src2Shift)
 #define Mmx         ((u64)1 << 40)  /* MMX Vector instruction */
+#define AlignMask   ((u64)7 << 41)
 #define Aligned     ((u64)1 << 41)  /* Explicitly aligned (e.g. MOVDQA) */
-#define Unaligned   ((u64)1 << 42)  /* Explicitly unaligned (e.g. MOVDQU) */
-#define Avx         ((u64)1 << 43)  /* Advanced Vector Extensions */
+#define Unaligned   ((u64)2 << 41)  /* Explicitly unaligned (e.g. MOVDQU) */
+#define Avx         ((u64)3 << 41)  /* Advanced Vector Extensions */
+#define Aligned16   ((u64)4 << 41)  /* Aligned to 16 byte boundary (e.g. FXSAVE) */
 #define Fastop      ((u64)1 << 44)  /* Use opcode::u.fastop */
 #define NoWrite     ((u64)1 << 45)  /* No writeback */
 #define SrcWrite    ((u64)1 << 46)  /* Write back src operand */
@@ -171,7 +173,6 @@
 #define NearBranch  ((u64)1 << 52)  /* Near branches */
 #define No16	    ((u64)1 << 53)  /* No 16 bit operand */
 #define IncSP       ((u64)1 << 54)  /* SP is incremented before ModRM calc */
-#define Aligned16   ((u64)1 << 55)  /* Aligned to 16 byte boundary (e.g. FXSAVE) */
 
 #define DstXacc     (DstAccLo | SrcAccHi | SrcWrite)
 
@@ -638,19 +639,21 @@ static void set_segment_selector(struct x86_emulate_ctxt *ctxt, u16 selector,
  */
 static unsigned insn_alignment(struct x86_emulate_ctxt *ctxt, unsigned size)
 {
+	u64 alignment = ctxt->d & AlignMask;
+
 	if (likely(size < 16))
 		return 1;
 
-	if (ctxt->d & Aligned)
-		return size;
-	else if (ctxt->d & Unaligned)
+	switch (alignment) {
+	case Unaligned:
+	case Avx:
 		return 1;
-	else if (ctxt->d & Avx)
-		return 1;
-	else if (ctxt->d & Aligned16)
+	case Aligned16:
 		return 16;
-	else
+	case Aligned:
+	default:
 		return size;
+	}
 }
 
 static __always_inline int __linearize(struct x86_emulate_ctxt *ctxt,
-- 
2.10.1

Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH v2 0/4] KVM: x86: emulate FXSAVE and FXRSTOR Radim Krčmář <rkrcmar@redhat.com> - 2016-11-02 19:50 +0100
  [PATCH v2 4/4] KVM: x86: emulate FXSAVE and FXRSTOR Radim Krčmář <rkrcmar@redhat.com> - 2016-11-02 19:50 +0100
    Re: [PATCH v2 4/4] KVM: x86: emulate FXSAVE and FXRSTOR kbuild test robot <lkp@intel.com> - 2016-11-03 01:00 +0100
      Re: [PATCH v2 4/4] KVM: x86: emulate FXSAVE and FXRSTOR Radim Krčmář <rkrcmar@redhat.com> - 2016-11-03 15:00 +0100
  [PATCH v2 1/4] KVM: x86: add Align16 instruction flag Radim Krčmář <rkrcmar@redhat.com> - 2016-11-02 19:50 +0100
  [PATCH v2 2/4] KVM: x86: save one bit in ctxt->d Radim Krčmář <rkrcmar@redhat.com> - 2016-11-02 19:50 +0100
  [PATCH v2 3/4] KVM: x86: add asm_safe wrapper Radim Krčmář <rkrcmar@redhat.com> - 2016-11-02 19:50 +0100

csiph-web