qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] Fix CPUID_Fn8000001E_EBX for AMD


From: 成家瑶
Subject: Re: [PATCH] Fix CPUID_Fn8000001E_EBX for AMD
Date: Thu, 15 Jul 2021 02:15:54 -0400

Hello,

I am Jade Cheng working for ByteDance, sending this email is aimed at ping you guys to check the patch I submitted earlier, link is attached below:
https://patchew.org/QEMU/20210630082551.12956-1-chengjiayao@bytedance.com/

Please do me a favor to give it a review, and let me know if you have any concerns.
Stay safe and have a nice day = )
Best,
Jiayao (Jade) Cheng
On Wed, Jun 30, 2021, 16:26 <chengjiayao@bytedance.com> wrote:
According to AMD64 Arch Programmer's Manual Appendix D, bits 7:0 in Fn8000_001E_EBX should be physical core(s) per logical processor, not per die. Signed-off-by: Jade Cheng <chengjiayao@bytedance.com> --- target/i386/cpu.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index a9fe1662d3..417f5ba81f 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -381,7 +381,13 @@ static void encode_topo_cpuid8000001e(X86CPU *cpu, X86CPUTopoInfo *topo_info, * NOTE: CoreId is already part of apic_id. Just use it. We can * use all the 8 bits to represent the core_id here. */ - *ebx = ((topo_info->threads_per_core - 1) << 8) | (topo_ids.core_id & 0xFF); + uint32_t core_id = topo_ids.core_id; + + if (IS_AMD_CPU(&cpu->env)) { + core_id = topo_ids.core_id + topo_ids.die_id * topo_info->cores_per_die; + } + + *ebx = ((topo_info->threads_per_core - 1) << 8) | (core_id & 0xFF); /* * CPUID_Fn8000001E_ECX [Node Identifiers] (NodeId) -- 2.24.3 (Apple Git-128)

reply via email to

[Prev in Thread] Current Thread [Next in Thread]