* [Qemu-devel] [PATCH 1/2] target-i386: fix cpuid leaf 0x0d
@ 2013-11-29 13:15 Liu, Jinsong
2013-11-29 13:25 ` Paolo Bonzini
0 siblings, 1 reply; 6+ messages in thread
From: Liu, Jinsong @ 2013-11-29 13:15 UTC (permalink / raw)
To: Paolo Bonzini, Gleb Natapov, qemu-devel@nongnu.org, kvm
Cc: haoxudong.hao@gmail.com
>From e4b58c7bafc4d9f913a572a1b1cfee91c92f1637 Mon Sep 17 00:00:00 2001
From: Liu Jinsong <jinsong.liu@intel.com>
Date: Fri, 22 Nov 2013 00:24:16 +0800
Subject: [PATCH 1/2] target-i386: fix cpuid leaf 0x0d
Fix cpuid leaf 0x0d which incorrectly parsed eax and ebx.
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;
--
1.7.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH 1/2] target-i386: fix cpuid leaf 0x0d
2013-11-29 13:15 Liu, Jinsong
@ 2013-11-29 13:25 ` Paolo Bonzini
2013-11-29 14:46 ` Liu, Jinsong
0 siblings, 1 reply; 6+ messages in thread
From: Paolo Bonzini @ 2013-11-29 13:25 UTC (permalink / raw)
To: Liu, Jinsong
Cc: haoxudong.hao@gmail.com, qemu-devel@nongnu.org, Gleb Natapov, kvm
Il 29/11/2013 14:15, Liu, Jinsong ha scritto:
> From e4b58c7bafc4d9f913a572a1b1cfee91c92f1637 Mon Sep 17 00:00:00 2001
> From: Liu Jinsong <jinsong.liu@intel.com>
> Date: Fri, 22 Nov 2013 00:24:16 +0800
> Subject: [PATCH 1/2] target-i386: fix cpuid leaf 0x0d
>
> Fix cpuid leaf 0x0d which incorrectly parsed eax and ebx.
There is no visible change right (the two hunks cancel each other)?
Since you will have to post a v2, please make this explicit in the
commit message.
Thanks,
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;
> --
> 1.7.1
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH 1/2] target-i386: fix cpuid leaf 0x0d
2013-11-29 13:25 ` Paolo Bonzini
@ 2013-11-29 14:46 ` Liu, Jinsong
2013-11-29 15:11 ` Paolo Bonzini
0 siblings, 1 reply; 6+ messages in thread
From: Liu, Jinsong @ 2013-11-29 14:46 UTC (permalink / raw)
To: Paolo Bonzini
Cc: haoxudong.hao@gmail.com, qemu-devel@nongnu.org, Gleb Natapov, kvm
Paolo Bonzini wrote:
> Il 29/11/2013 14:15, Liu, Jinsong ha scritto:
>> From e4b58c7bafc4d9f913a572a1b1cfee91c92f1637 Mon Sep 17 00:00:00
>> 2001
>> From: Liu Jinsong <jinsong.liu@intel.com>
>> Date: Fri, 22 Nov 2013 00:24:16 +0800
>> Subject: [PATCH 1/2] target-i386: fix cpuid leaf 0x0d
>>
>> Fix cpuid leaf 0x0d which incorrectly parsed eax and ebx.
>
> There is no visible change right (the two hunks cancel each other)?
> Since you will have to post a v2, please make this explicit in the
> commit message.
>
OK, will add explicit commit message, or, drop this patch if needed.
Thanks,
Jinsong
>
>> 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;
>> --
>> 1.7.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH 1/2] target-i386: fix cpuid leaf 0x0d
2013-11-29 14:46 ` Liu, Jinsong
@ 2013-11-29 15:11 ` Paolo Bonzini
0 siblings, 0 replies; 6+ messages in thread
From: Paolo Bonzini @ 2013-11-29 15:11 UTC (permalink / raw)
To: Liu, Jinsong
Cc: haoxudong.hao@gmail.com, qemu-devel@nongnu.org, Gleb Natapov, kvm
Il 29/11/2013 15:46, Liu, Jinsong ha scritto:
> Paolo Bonzini wrote:
>> Il 29/11/2013 14:15, Liu, Jinsong ha scritto:
>>> From e4b58c7bafc4d9f913a572a1b1cfee91c92f1637 Mon Sep 17 00:00:00
>>> 2001
>>> From: Liu Jinsong <jinsong.liu@intel.com>
>>> Date: Fri, 22 Nov 2013 00:24:16 +0800
>>> Subject: [PATCH 1/2] target-i386: fix cpuid leaf 0x0d
>>>
>>> Fix cpuid leaf 0x0d which incorrectly parsed eax and ebx.
>>
>> There is no visible change right (the two hunks cancel each other)?
>> Since you will have to post a v2, please make this explicit in the
>> commit message.
>>
>
> OK, will add explicit commit message, or, drop this patch if needed.
The patch is correct, so keep it please. However, mention in the commit
message that the CPUID values were valid even before this patch.
Also, the QEMU side needs support for transferring the state in and out
of KVM (kvm_put_xsave, kvm_get_xsave). On top of this you can add
migration support using a new subsection of vmstate_cpu.
Thanks!
Paolo
> Thanks,
> Jinsong
>
>>
>>> 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;
>>> --
>>> 1.7.1
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH 1/2] target-i386: fix cpuid leaf 0x0d
@ 2013-12-02 16:41 Liu, Jinsong
2013-12-02 17:35 ` Paolo Bonzini
0 siblings, 1 reply; 6+ messages in thread
From: Liu, Jinsong @ 2013-12-02 16:41 UTC (permalink / raw)
To: Paolo Bonzini, Gleb Natapov, qemu-devel@nongnu.org, kvm
Cc: haoxudong.hao@gmail.com
[-- Attachment #1: Type: text/plain, Size: 1445 bytes --]
>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.
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;
--
1.7.1
[-- Attachment #2: 0001-target-i386-fix-cpuid-leaf-0x0d.patch --]
[-- Type: application/octet-stream, Size: 1405 bytes --]
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.
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;
--
1.7.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH 1/2] target-i386: fix cpuid leaf 0x0d
2013-12-02 16:41 [Qemu-devel] [PATCH 1/2] target-i386: fix cpuid leaf 0x0d Liu, Jinsong
@ 2013-12-02 17:35 ` Paolo Bonzini
0 siblings, 0 replies; 6+ messages in thread
From: Paolo Bonzini @ 2013-12-02 17:35 UTC (permalink / raw)
To: Liu, Jinsong
Cc: haoxudong.hao@gmail.com, qemu-devel@nongnu.org, Gleb Natapov, kvm
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;
>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2013-12-02 17:36 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-12-02 16:41 [Qemu-devel] [PATCH 1/2] target-i386: fix cpuid leaf 0x0d Liu, Jinsong
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
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).