[PATCH 2/2] i386/hvf: Make CPUID_HT supported

Xiaoyao Li posted 2 patches 6 months ago
Maintainers: Paolo Bonzini <pbonzini@redhat.com>, Zhao Liu <zhao1.liu@intel.com>, Cameron Esfahani <dirty@apple.com>, Roman Bolshakov <rbolshakov@ddn.com>, Phil Dennis-Jordan <phil@philjordan.eu>
[PATCH 2/2] i386/hvf: Make CPUID_HT supported
Posted by Xiaoyao Li 6 months ago
Since Commit c6bd2dd63420 ("i386/cpu: Set up CPUID_HT in
x86_cpu_expand_features() instead of cpu_x86_cpuid()"), CPUID_HT will be
set in env->features[] in x86_cpu_expand_features() when vcpus >= 2.

Later in x86_cpu_filter_features() it will check against the HVF
supported bits. It will trigger the warning like

    qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.01H:EDX.ht [bit 28]

Add CPUID_HT to HVF supported CPUID bits to fix it.

Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
---
Note, the issue is totally by my analysis (which should be the same as
the TCG warnings) because I don't have HVF environment to verify it.

If would be helpful if anyone can help reproduce it and test the patch
in HVF environment.
---
 target/i386/hvf/x86_cpuid.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/i386/hvf/x86_cpuid.c b/target/i386/hvf/x86_cpuid.c
index fa131b18c6d1..0798a0cbafb9 100644
--- a/target/i386/hvf/x86_cpuid.c
+++ b/target/i386/hvf/x86_cpuid.c
@@ -73,7 +73,7 @@ uint32_t hvf_get_supported_cpuid(uint32_t func, uint32_t idx,
              CPUID_MSR | CPUID_PAE | CPUID_MCE | CPUID_CX8 | CPUID_APIC |
              CPUID_SEP | CPUID_MTRR | CPUID_PGE | CPUID_MCA | CPUID_CMOV |
              CPUID_PAT | CPUID_PSE36 | CPUID_CLFLUSH | CPUID_MMX |
-             CPUID_FXSR | CPUID_SSE | CPUID_SSE2 | CPUID_SS;
+             CPUID_FXSR | CPUID_SSE | CPUID_SSE2 | CPUID_SS | CPUID_HT;
         ecx &= CPUID_EXT_SSE3 | CPUID_EXT_PCLMULQDQ | CPUID_EXT_SSSE3 |
              CPUID_EXT_FMA | CPUID_EXT_CX16 | CPUID_EXT_PCID |
              CPUID_EXT_SSE41 | CPUID_EXT_SSE42 | CPUID_EXT_MOVBE |
-- 
2.43.0
Re: [PATCH 2/2] i386/hvf: Make CPUID_HT supported
Posted by Zhao Liu 6 months ago
On Tue, May 13, 2025 at 11:16:52PM -0400, Xiaoyao Li wrote:
> Date: Tue, 13 May 2025 23:16:52 -0400
> From: Xiaoyao Li <xiaoyao.li@intel.com>
> Subject: [PATCH 2/2] i386/hvf: Make CPUID_HT supported
> X-Mailer: git-send-email 2.43.0
> 
> Since Commit c6bd2dd63420 ("i386/cpu: Set up CPUID_HT in
> x86_cpu_expand_features() instead of cpu_x86_cpuid()"), CPUID_HT will be
> set in env->features[] in x86_cpu_expand_features() when vcpus >= 2.
> 
> Later in x86_cpu_filter_features() it will check against the HVF
> supported bits. It will trigger the warning like
> 
>     qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.01H:EDX.ht [bit 28]
> 
> Add CPUID_HT to HVF supported CPUID bits to fix it.
> 
> Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
> ---
> Note, the issue is totally by my analysis (which should be the same as
> the TCG warnings) because I don't have HVF environment to verify it.
> 
> If would be helpful if anyone can help reproduce it and test the patch
> in HVF environment.

Ah, I found someone has reported a bug on HVF. In his log, there's the
ht warning:

https://gitlab.com/qemu-project/qemu/-/issues/2938

But I don't know if this fix can help on his bug...let's wait for his
feedback.

> ---
>  target/i386/hvf/x86_cpuid.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Anyway, this fix is fine for me, so,

Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Re: [PATCH 2/2] i386/hvf: Make CPUID_HT supported
Posted by Zhao Liu 6 months ago
On Thu, May 15, 2025 at 04:17:28PM +0800, Zhao Liu wrote:
> Date: Thu, 15 May 2025 16:17:28 +0800
> From: Zhao Liu <zhao1.liu@intel.com>
> Subject: Re: [PATCH 2/2] i386/hvf: Make CPUID_HT supported
> 
> On Tue, May 13, 2025 at 11:16:52PM -0400, Xiaoyao Li wrote:
> > Date: Tue, 13 May 2025 23:16:52 -0400
> > From: Xiaoyao Li <xiaoyao.li@intel.com>
> > Subject: [PATCH 2/2] i386/hvf: Make CPUID_HT supported
> > X-Mailer: git-send-email 2.43.0
> > 
> > Since Commit c6bd2dd63420 ("i386/cpu: Set up CPUID_HT in
> > x86_cpu_expand_features() instead of cpu_x86_cpuid()"), CPUID_HT will be
> > set in env->features[] in x86_cpu_expand_features() when vcpus >= 2.
> > 
> > Later in x86_cpu_filter_features() it will check against the HVF
> > supported bits. It will trigger the warning like
> > 
> >     qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.01H:EDX.ht [bit 28]
> > 
> > Add CPUID_HT to HVF supported CPUID bits to fix it.
> > 
> > Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
> > ---
> > Note, the issue is totally by my analysis (which should be the same as
> > the TCG warnings) because I don't have HVF environment to verify it.
> > 
> > If would be helpful if anyone can help reproduce it and test the patch
> > in HVF environment.
> 
> Ah, I found someone has reported a bug on HVF. In his log, there's the
> ht warning:
> 
> https://gitlab.com/qemu-project/qemu/-/issues/2938
> 
> But I don't know if this fix can help on his bug...let's wait for his
> feedback.

Amitai has confirmed this fix can resolve #2938. So I think it's
necessary to add the tag:

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2938

and CC this series to qemu-stable@nongnu.org.

Thanks,
Zhao

> > ---
> >  target/i386/hvf/x86_cpuid.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> Anyway, this fix is fine for me, so,
> 
> Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
> 
>