From: Paolo Bonzini <pbonzini@redhat.com>
To: "Liu, Jinsong" <jinsong.liu@intel.com>
Cc: Gleb Natapov <gleb@redhat.com>,
"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
kvm <kvm@vger.kernel.org>,
"haoxudong.hao@gmail.com" <haoxudong.hao@gmail.com>
Subject: Re: [PATCH 1/2] target-i386: fix cpuid leaf 0x0d
Date: Mon, 02 Dec 2013 18:35:50 +0100 [thread overview]
Message-ID: <529CC4F6.1090506@redhat.com> (raw)
In-Reply-To: <DE8DF0795D48FD4CA783C40EC8292335013F60A2@SHSMSX101.ccr.corp.intel.com>
Il 02/12/2013 17:41, Liu, Jinsong ha scritto:
> From 57751d87392d7ee9df5698bc83b356de654453ef Mon Sep 17 00:00:00 2001
> From: Liu Jinsong <jinsong.liu@intel.com>
> Date: Tue, 3 Dec 2013 04:17:50 +0800
> Subject: [PATCH 1/2] target-i386: fix cpuid leaf 0x0d
>
> Fix cpuid leaf 0x0d which incorrectly parsed eax and ebx.
> However, before this patch the CPUID worked fine -- the
> sum of offset and size is same.
Not because of that. It worked because the .offset field contained the
size _and_ was stored in the register that is supposed to hold the size
(eax), and likewise the .size field contained the offset _and_ was
stored in the register trhat is supposed to hold the offset (ebx).
Paolo
> Signed-off-by: Liu Jinsong <jinsong.liu@intel.com>
> ---
> target-i386/cpu.c | 6 +++---
> 1 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/target-i386/cpu.c b/target-i386/cpu.c
> index 864c80e..544b57f 100644
> --- a/target-i386/cpu.c
> +++ b/target-i386/cpu.c
> @@ -335,7 +335,7 @@ typedef struct ExtSaveArea {
>
> static const ExtSaveArea ext_save_areas[] = {
> [2] = { .feature = FEAT_1_ECX, .bits = CPUID_EXT_AVX,
> - .offset = 0x100, .size = 0x240 },
> + .offset = 0x240, .size = 0x100 },
> };
>
> const char *get_register_name_32(unsigned int reg)
> @@ -2225,8 +2225,8 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
> const ExtSaveArea *esa = &ext_save_areas[count];
> if ((env->features[esa->feature] & esa->bits) == esa->bits &&
> (kvm_mask & (1 << count)) != 0) {
> - *eax = esa->offset;
> - *ebx = esa->size;
> + *eax = esa->size;
> + *ebx = esa->offset;
> }
> }
> break;
>
WARNING: multiple messages have this Message-ID (diff)
From: Paolo Bonzini <pbonzini@redhat.com>
To: "Liu, Jinsong" <jinsong.liu@intel.com>
Cc: "haoxudong.hao@gmail.com" <haoxudong.hao@gmail.com>,
"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
Gleb Natapov <gleb@redhat.com>, kvm <kvm@vger.kernel.org>
Subject: Re: [Qemu-devel] [PATCH 1/2] target-i386: fix cpuid leaf 0x0d
Date: Mon, 02 Dec 2013 18:35:50 +0100 [thread overview]
Message-ID: <529CC4F6.1090506@redhat.com> (raw)
In-Reply-To: <DE8DF0795D48FD4CA783C40EC8292335013F60A2@SHSMSX101.ccr.corp.intel.com>
Il 02/12/2013 17:41, Liu, Jinsong ha scritto:
> From 57751d87392d7ee9df5698bc83b356de654453ef Mon Sep 17 00:00:00 2001
> From: Liu Jinsong <jinsong.liu@intel.com>
> Date: Tue, 3 Dec 2013 04:17:50 +0800
> Subject: [PATCH 1/2] target-i386: fix cpuid leaf 0x0d
>
> Fix cpuid leaf 0x0d which incorrectly parsed eax and ebx.
> However, before this patch the CPUID worked fine -- the
> sum of offset and size is same.
Not because of that. It worked because the .offset field contained the
size _and_ was stored in the register that is supposed to hold the size
(eax), and likewise the .size field contained the offset _and_ was
stored in the register trhat is supposed to hold the offset (ebx).
Paolo
> Signed-off-by: Liu Jinsong <jinsong.liu@intel.com>
> ---
> target-i386/cpu.c | 6 +++---
> 1 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/target-i386/cpu.c b/target-i386/cpu.c
> index 864c80e..544b57f 100644
> --- a/target-i386/cpu.c
> +++ b/target-i386/cpu.c
> @@ -335,7 +335,7 @@ typedef struct ExtSaveArea {
>
> static const ExtSaveArea ext_save_areas[] = {
> [2] = { .feature = FEAT_1_ECX, .bits = CPUID_EXT_AVX,
> - .offset = 0x100, .size = 0x240 },
> + .offset = 0x240, .size = 0x100 },
> };
>
> const char *get_register_name_32(unsigned int reg)
> @@ -2225,8 +2225,8 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
> const ExtSaveArea *esa = &ext_save_areas[count];
> if ((env->features[esa->feature] & esa->bits) == esa->bits &&
> (kvm_mask & (1 << count)) != 0) {
> - *eax = esa->offset;
> - *ebx = esa->size;
> + *eax = esa->size;
> + *ebx = esa->offset;
> }
> }
> break;
>
next prev parent reply other threads:[~2013-12-02 17:35 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-02 16:41 [PATCH 1/2] target-i386: fix cpuid leaf 0x0d Liu, Jinsong
2013-12-02 16:41 ` [Qemu-devel] " Liu, Jinsong
2013-12-02 17:35 ` Paolo Bonzini [this message]
2013-12-02 17:35 ` Paolo Bonzini
-- strict thread matches above, loose matches on Subject: below --
2013-11-29 13:15 Liu, Jinsong
2013-11-29 13:25 ` Paolo Bonzini
2013-11-29 14:46 ` Liu, Jinsong
2013-11-29 15:11 ` Paolo Bonzini
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=529CC4F6.1090506@redhat.com \
--to=pbonzini@redhat.com \
--cc=gleb@redhat.com \
--cc=haoxudong.hao@gmail.com \
--cc=jinsong.liu@intel.com \
--cc=kvm@vger.kernel.org \
--cc=qemu-devel@nongnu.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.