* [PATCH 0/2] i386/cpu: Two minor fixes for x86_cpu_enable_xsave_components()
@ 2024-01-15 9:13 Xiaoyao Li
2024-01-15 9:13 ` [PATCH 1/2] i386/cpu: Clear FEAT_XSAVE_XSS_LO/HI leafs when CPUID_EXT_XSAVE is not available Xiaoyao Li
` (3 more replies)
0 siblings, 4 replies; 8+ messages in thread
From: Xiaoyao Li @ 2024-01-15 9:13 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: qemu-devel, Yang Weijiang
The two bugs were introduced when xsaves feature was added by commit
301e90675c3f ("target/i386: Enable support for XSAVES based features").
Xiaoyao Li (2):
i386/cpu: Clear FEAT_XSAVE_XSS_LO/HI leafs when CPUID_EXT_XSAVE is not
available
i386/cpu: Mask with XCR0/XSS mask for FEAT_XSAVE_XCR0_HI and
FEAT_XSAVE_XSS_HI leafs
target/i386/cpu.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/2] i386/cpu: Clear FEAT_XSAVE_XSS_LO/HI leafs when CPUID_EXT_XSAVE is not available
2024-01-15 9:13 [PATCH 0/2] i386/cpu: Two minor fixes for x86_cpu_enable_xsave_components() Xiaoyao Li
@ 2024-01-15 9:13 ` Xiaoyao Li
2024-01-17 6:39 ` Yang, Weijiang
2024-01-15 9:13 ` [PATCH 2/2] i386/cpu: Mask with XCR0/XSS mask for FEAT_XSAVE_XCR0_HI and FEAT_XSAVE_XSS_HI leafs Xiaoyao Li
` (2 subsequent siblings)
3 siblings, 1 reply; 8+ messages in thread
From: Xiaoyao Li @ 2024-01-15 9:13 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: qemu-devel, Yang Weijiang
Leaf FEAT_XSAVE_XSS_LO and FEAT_XSAVE_XSS_HI also need to be cleared
when CPUID_EXT_XSAVE is not set.
Fixes: 301e90675c3f ("target/i386: Enable support for XSAVES based features")
Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
---
target/i386/cpu.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index 2524881ce245..b445e2957c4f 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -6926,6 +6926,8 @@ static void x86_cpu_enable_xsave_components(X86CPU *cpu)
if (!(env->features[FEAT_1_ECX] & CPUID_EXT_XSAVE)) {
env->features[FEAT_XSAVE_XCR0_LO] = 0;
env->features[FEAT_XSAVE_XCR0_HI] = 0;
+ env->features[FEAT_XSAVE_XSS_LO] = 0;
+ env->features[FEAT_XSAVE_XSS_HI] = 0;
return;
}
--
2.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] i386/cpu: Mask with XCR0/XSS mask for FEAT_XSAVE_XCR0_HI and FEAT_XSAVE_XSS_HI leafs
2024-01-15 9:13 [PATCH 0/2] i386/cpu: Two minor fixes for x86_cpu_enable_xsave_components() Xiaoyao Li
2024-01-15 9:13 ` [PATCH 1/2] i386/cpu: Clear FEAT_XSAVE_XSS_LO/HI leafs when CPUID_EXT_XSAVE is not available Xiaoyao Li
@ 2024-01-15 9:13 ` Xiaoyao Li
2024-01-17 6:43 ` Yang, Weijiang
2024-01-16 14:19 ` [PATCH 0/2] i386/cpu: Two minor fixes for x86_cpu_enable_xsave_components() Zhao Liu
2024-01-25 9:59 ` Paolo Bonzini
3 siblings, 1 reply; 8+ messages in thread
From: Xiaoyao Li @ 2024-01-15 9:13 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: qemu-devel, Yang Weijiang
The value of FEAT_XSAVE_XCR0_HI leaf and FEAT_XSAVE_XSS_HI leaf also
need to be masked by XCR0 and XSS mask respectively, to make it
logically correct.
Fixes: 301e90675c3f ("target/i386: Enable support for XSAVES based features")
Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
---
target/i386/cpu.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index b445e2957c4f..a5c08944a483 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -6946,9 +6946,9 @@ static void x86_cpu_enable_xsave_components(X86CPU *cpu)
}
env->features[FEAT_XSAVE_XCR0_LO] = mask & CPUID_XSTATE_XCR0_MASK;
- env->features[FEAT_XSAVE_XCR0_HI] = mask >> 32;
+ env->features[FEAT_XSAVE_XCR0_HI] = (mask & CPUID_XSTATE_XCR0_MASK) >> 32;
env->features[FEAT_XSAVE_XSS_LO] = mask & CPUID_XSTATE_XSS_MASK;
- env->features[FEAT_XSAVE_XSS_HI] = mask >> 32;
+ env->features[FEAT_XSAVE_XSS_HI] = (mask & CPUID_XSTATE_XSS_MASK) >> 32;
}
/***** Steps involved on loading and filtering CPUID data
--
2.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 0/2] i386/cpu: Two minor fixes for x86_cpu_enable_xsave_components()
2024-01-15 9:13 [PATCH 0/2] i386/cpu: Two minor fixes for x86_cpu_enable_xsave_components() Xiaoyao Li
2024-01-15 9:13 ` [PATCH 1/2] i386/cpu: Clear FEAT_XSAVE_XSS_LO/HI leafs when CPUID_EXT_XSAVE is not available Xiaoyao Li
2024-01-15 9:13 ` [PATCH 2/2] i386/cpu: Mask with XCR0/XSS mask for FEAT_XSAVE_XCR0_HI and FEAT_XSAVE_XSS_HI leafs Xiaoyao Li
@ 2024-01-16 14:19 ` Zhao Liu
2024-01-16 15:42 ` Xiaoyao Li
2024-01-25 9:59 ` Paolo Bonzini
3 siblings, 1 reply; 8+ messages in thread
From: Zhao Liu @ 2024-01-16 14:19 UTC (permalink / raw)
To: Xiaoyao Li; +Cc: Paolo Bonzini, qemu-devel, Yang Weijiang
Hi Xiaoyao,
On Mon, Jan 15, 2024 at 04:13:23AM -0500, Xiaoyao Li wrote:
> Date: Mon, 15 Jan 2024 04:13:23 -0500
> From: Xiaoyao Li <xiaoyao.li@intel.com>
> Subject: [PATCH 0/2] i386/cpu: Two minor fixes for
> x86_cpu_enable_xsave_components()
> X-Mailer: git-send-email 2.34.1
>
> The two bugs were introduced when xsaves feature was added by commit
> 301e90675c3f ("target/i386: Enable support for XSAVES based features").
Could you please provide more details about reproducing these two bugs?
If I'm able, I'd be glad to help you to test and verify them.
Regards,
Zhao
>
> Xiaoyao Li (2):
> i386/cpu: Clear FEAT_XSAVE_XSS_LO/HI leafs when CPUID_EXT_XSAVE is not
> available
> i386/cpu: Mask with XCR0/XSS mask for FEAT_XSAVE_XCR0_HI and
> FEAT_XSAVE_XSS_HI leafs
>
> target/i386/cpu.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> --
> 2.34.1
>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/2] i386/cpu: Two minor fixes for x86_cpu_enable_xsave_components()
2024-01-16 14:19 ` [PATCH 0/2] i386/cpu: Two minor fixes for x86_cpu_enable_xsave_components() Zhao Liu
@ 2024-01-16 15:42 ` Xiaoyao Li
0 siblings, 0 replies; 8+ messages in thread
From: Xiaoyao Li @ 2024-01-16 15:42 UTC (permalink / raw)
To: Zhao Liu; +Cc: Paolo Bonzini, qemu-devel, Yang Weijiang
On 1/16/2024 10:19 PM, Zhao Liu wrote:
> Hi Xiaoyao,
>
> On Mon, Jan 15, 2024 at 04:13:23AM -0500, Xiaoyao Li wrote:
>> Date: Mon, 15 Jan 2024 04:13:23 -0500
>> From: Xiaoyao Li <xiaoyao.li@intel.com>
>> Subject: [PATCH 0/2] i386/cpu: Two minor fixes for
>> x86_cpu_enable_xsave_components()
>> X-Mailer: git-send-email 2.34.1
>>
>> The two bugs were introduced when xsaves feature was added by commit
>> 301e90675c3f ("target/i386: Enable support for XSAVES based features").
>
> Could you please provide more details about reproducing these two bugs?
> If I'm able, I'd be glad to help you to test and verify them.
There are potential bugs and currently we don't have test step to
trigger it. Because for patch 1, KVM doesn't support arch-lbr
virtualization yet, which is the first user in QEMU of xss. Once KVM
merges the arch-lbr series, using "-cpu xxx,+arch-lbr,-xsave" can expose
arch-lbr to guest, which violates the architectural behavior of xfeatures.
For patch2, current code just happens to work correctly because there is
not xfeature in upper 32-bit get defined yet. But I think make the code
logically correct is important and we shouldn't depend on the
happened-to-work code.
> Regards,
> Zhao
>
>>
>> Xiaoyao Li (2):
>> i386/cpu: Clear FEAT_XSAVE_XSS_LO/HI leafs when CPUID_EXT_XSAVE is not
>> available
>> i386/cpu: Mask with XCR0/XSS mask for FEAT_XSAVE_XCR0_HI and
>> FEAT_XSAVE_XSS_HI leafs
>>
>> target/i386/cpu.c | 6 ++++--
>> 1 file changed, 4 insertions(+), 2 deletions(-)
>>
>> --
>> 2.34.1
>>
>>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] i386/cpu: Clear FEAT_XSAVE_XSS_LO/HI leafs when CPUID_EXT_XSAVE is not available
2024-01-15 9:13 ` [PATCH 1/2] i386/cpu: Clear FEAT_XSAVE_XSS_LO/HI leafs when CPUID_EXT_XSAVE is not available Xiaoyao Li
@ 2024-01-17 6:39 ` Yang, Weijiang
0 siblings, 0 replies; 8+ messages in thread
From: Yang, Weijiang @ 2024-01-17 6:39 UTC (permalink / raw)
To: Li, Xiaoyao, Paolo Bonzini; +Cc: qemu-devel@nongnu.org
On 1/15/2024 5:13 PM, Li, Xiaoyao wrote:
> Leaf FEAT_XSAVE_XSS_LO and FEAT_XSAVE_XSS_HI also need to be cleared
> when CPUID_EXT_XSAVE is not set.
>
> Fixes: 301e90675c3f ("target/i386: Enable support for XSAVES based features")
> Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
> ---
> target/i386/cpu.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> index 2524881ce245..b445e2957c4f 100644
> --- a/target/i386/cpu.c
> +++ b/target/i386/cpu.c
> @@ -6926,6 +6926,8 @@ static void x86_cpu_enable_xsave_components(X86CPU *cpu)
> if (!(env->features[FEAT_1_ECX] & CPUID_EXT_XSAVE)) {
> env->features[FEAT_XSAVE_XCR0_LO] = 0;
> env->features[FEAT_XSAVE_XCR0_HI] = 0;
> + env->features[FEAT_XSAVE_XSS_LO] = 0;
> + env->features[FEAT_XSAVE_XSS_HI] = 0;
> return;
> }
Thanks for fixing this!
Reviewed-by: Yang Weijiang <weijiang.yang@intel.com>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] i386/cpu: Mask with XCR0/XSS mask for FEAT_XSAVE_XCR0_HI and FEAT_XSAVE_XSS_HI leafs
2024-01-15 9:13 ` [PATCH 2/2] i386/cpu: Mask with XCR0/XSS mask for FEAT_XSAVE_XCR0_HI and FEAT_XSAVE_XSS_HI leafs Xiaoyao Li
@ 2024-01-17 6:43 ` Yang, Weijiang
0 siblings, 0 replies; 8+ messages in thread
From: Yang, Weijiang @ 2024-01-17 6:43 UTC (permalink / raw)
To: Li, Xiaoyao, Paolo Bonzini; +Cc: qemu-devel@nongnu.org
On 1/15/2024 5:13 PM, Li, Xiaoyao wrote:
> The value of FEAT_XSAVE_XCR0_HI leaf and FEAT_XSAVE_XSS_HI leaf also
> need to be masked by XCR0 and XSS mask respectively, to make it
> logically correct.
>
> Fixes: 301e90675c3f ("target/i386: Enable support for XSAVES based features")
> Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
> ---
> target/i386/cpu.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> index b445e2957c4f..a5c08944a483 100644
> --- a/target/i386/cpu.c
> +++ b/target/i386/cpu.c
> @@ -6946,9 +6946,9 @@ static void x86_cpu_enable_xsave_components(X86CPU *cpu)
> }
>
> env->features[FEAT_XSAVE_XCR0_LO] = mask & CPUID_XSTATE_XCR0_MASK;
> - env->features[FEAT_XSAVE_XCR0_HI] = mask >> 32;
> + env->features[FEAT_XSAVE_XCR0_HI] = (mask & CPUID_XSTATE_XCR0_MASK) >> 32;
> env->features[FEAT_XSAVE_XSS_LO] = mask & CPUID_XSTATE_XSS_MASK;
> - env->features[FEAT_XSAVE_XSS_HI] = mask >> 32;
> + env->features[FEAT_XSAVE_XSS_HI] = (mask & CPUID_XSTATE_XSS_MASK) >> 32;
> }
Thanks for fixing this!
Reviewed-by: Yang Weijiang <weijiang.yang@intel.com>
>
> /***** Steps involved on loading and filtering CPUID data
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/2] i386/cpu: Two minor fixes for x86_cpu_enable_xsave_components()
2024-01-15 9:13 [PATCH 0/2] i386/cpu: Two minor fixes for x86_cpu_enable_xsave_components() Xiaoyao Li
` (2 preceding siblings ...)
2024-01-16 14:19 ` [PATCH 0/2] i386/cpu: Two minor fixes for x86_cpu_enable_xsave_components() Zhao Liu
@ 2024-01-25 9:59 ` Paolo Bonzini
3 siblings, 0 replies; 8+ messages in thread
From: Paolo Bonzini @ 2024-01-25 9:59 UTC (permalink / raw)
To: Xiaoyao Li; +Cc: qemu-devel, Yang Weijiang
Queued, thanks.
Paolo
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2024-01-25 10:00 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-15 9:13 [PATCH 0/2] i386/cpu: Two minor fixes for x86_cpu_enable_xsave_components() Xiaoyao Li
2024-01-15 9:13 ` [PATCH 1/2] i386/cpu: Clear FEAT_XSAVE_XSS_LO/HI leafs when CPUID_EXT_XSAVE is not available Xiaoyao Li
2024-01-17 6:39 ` Yang, Weijiang
2024-01-15 9:13 ` [PATCH 2/2] i386/cpu: Mask with XCR0/XSS mask for FEAT_XSAVE_XCR0_HI and FEAT_XSAVE_XSS_HI leafs Xiaoyao Li
2024-01-17 6:43 ` Yang, Weijiang
2024-01-16 14:19 ` [PATCH 0/2] i386/cpu: Two minor fixes for x86_cpu_enable_xsave_components() Zhao Liu
2024-01-16 15:42 ` Xiaoyao Li
2024-01-25 9:59 ` 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).