From: Paolo Bonzini <pbonzini@redhat.com>
To: "H. Peter Anvin" <hpa@zytor.com>, Nadav Amit <nadav.amit@gmail.com>
Cc: Nadav Amit <namit@cs.technion.ac.il>,
gleb@kernel.org, tglx@linutronix.de, mingo@redhat.com,
x86@kernel.org, kvm@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 9/9] KVM: x86: smsw emulation is incorrect in 64-bit mode
Date: Thu, 05 Jun 2014 17:27:34 +0200 [thread overview]
Message-ID: <53908C66.20600@redhat.com> (raw)
In-Reply-To: <539086F6.8000004@zytor.com>
Il 05/06/2014 17:04, H. Peter Anvin ha scritto:
> On 06/05/2014 08:02 AM, Nadav Amit wrote:
>>> I'm sorry, I'm missing the place where 64-bit mode is taken into account?
>> It is not, since on 32-bit mode the high-order 16 bits of a register destination are undefined.
>> If I recall correctly, in this case the high-order 16-bits on native
> system actually reflect the high-order 16-bits of CR0.
>
> This sounds like something that really should be verified
> experimentally. The above claim seems... odd.
Here is a test program:
#if __SIZEOF_LONG__ == 4
#define V "12345678"
#define R "e"
#else
#define V "1234567812345678"
#define R "r"
#endif
#include <stdio.h>
int main()
{
register volatile unsigned long ecx asm("ecx");
#if __SIZEOF_LONG__ > 4
asm volatile("mov $0x" V ", %%" R "cx; smswq %%rcx": : :"ecx");
printf("smswq: %lx\n", ecx);
#endif
asm volatile("mov $0x" V ", %%" R "cx; smswl %%ecx": : :"ecx");
printf("smswl: %lx\n", ecx);
asm volatile("mov $0x" V ", %%" R "cx; smsww %%cx": : :"ecx");
printf("smsww: %lx\n", ecx);
}
Output in 32-bit mode:
smswq: 80050033
smswl: 12340033
Output in 64-bit mode:
smswq: 80050033
smswl: 80050033
smsww: 1234567812340033
Can you please make a test case for kvm-unit-tests (x86/emulator.c), in
order to check the validity of the patch?
Paolo
next prev parent reply other threads:[~2014-06-05 15:27 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-02 15:34 [PATCH 0/9] KVM: x86: Fixes for various emulator bugs Nadav Amit
2014-06-02 15:34 ` [PATCH 1/9] KVM: x86: Mark VEX-prefix instructions emulation as unimplemented Nadav Amit
2014-06-02 15:34 ` [PATCH 2/9] KVM: x86: Emulator ignores LDTR/TR extended base on LLDT/LTR Nadav Amit
2014-06-02 15:34 ` [PATCH 3/9] KVM: x86: Loading segments on 64-bit mode may be wrong Nadav Amit
2014-06-02 15:34 ` [PATCH 4/9] KVM: x86: sgdt and sidt are not privilaged Nadav Amit
2014-06-02 15:34 ` [PATCH 5/9] KVM: x86: cmpxchg emulation should compare in reverse order Nadav Amit
2014-06-02 15:34 ` [PATCH 6/9] KVM: x86: movnti minimum op size of 32-bit is not kept Nadav Amit
2014-06-02 15:34 ` [PATCH 7/9] KVM: x86: rdpmc emulation checks the counter incorrectly Nadav Amit
2014-06-02 15:34 ` [PATCH 8/9] KVM: x86: Return error on cmpxchg16b emulation Nadav Amit
2014-06-02 15:34 ` [PATCH 9/9] KVM: x86: smsw emulation is incorrect in 64-bit mode Nadav Amit
2014-06-05 14:53 ` Paolo Bonzini
2014-06-05 15:02 ` Nadav Amit
2014-06-05 15:04 ` H. Peter Anvin
2014-06-05 15:27 ` Paolo Bonzini [this message]
2014-06-05 23:56 ` [PATCH kvm-unit-tests 0/2] x86: Additional smsw tests Nadav Amit
2014-06-05 23:56 ` [PATCH kvm-unit-tests1/2] x86: emulator: additional smsw test-case Nadav Amit
2014-06-09 11:36 ` Paolo Bonzini
2014-06-05 23:56 ` [PATCH kvm-unit-tests 2/2] x86: realmode: test smsw behavior with register operand Nadav Amit
2014-06-06 8:04 ` [PATCH kvm-unit-tests 0/2] x86: Additional smsw tests Paolo Bonzini
2014-06-08 10:02 ` [PATCH kvm-unit-tests v2] x86: emulator: long mode " Nadav Amit
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=53908C66.20600@redhat.com \
--to=pbonzini@redhat.com \
--cc=gleb@kernel.org \
--cc=hpa@zytor.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=nadav.amit@gmail.com \
--cc=namit@cs.technion.ac.il \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.