[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v13 1/5] i386: Add support for CPUID_8000_001E for AMD
From: |
Eduardo Habkost |
Subject: |
Re: [PATCH v13 1/5] i386: Add support for CPUID_8000_001E for AMD |
Date: |
Tue, 2 Jun 2020 13:52:12 -0400 |
On Fri, Jun 08, 2018 at 06:56:17PM -0400, Babu Moger wrote:
> Add support for cpuid leaf CPUID_8000_001E. Build the config that closely
> match the underlying hardware. Please refer to the Processor Programming
> Reference (PPR) for AMD Family 17h Model for more details.
>
> Signed-off-by: Babu Moger <babu.moger@amd.com>
[...]
> + case 0x8000001E:
> + assert(cpu->core_id <= 255);
It is possible to trigger this assert using:
$ qemu-system-x86_64 -machine q35,accel=kvm,kernel-irqchip=split -device
intel-iommu,intremap=on,eim=on -smp 1,maxcpus=258,cores=258,threads=1,sockets=1
-cpu qemu64,xlevel=0x8000001e -device qemu64-x86_64-cpu,apic-id=257
qemu-system-x86_64: warning: Number of hotpluggable cpus requested (258)
exceeds the recommended cpus supported by KVM (240)
qemu-system-x86_64: /home/ehabkost/rh/proj/virt/qemu/target/i386/cpu.c:5888:
cpu_x86_cpuid: Assertion `cpu->core_id <= 255' failed.
Aborted (core dumped)
See bug report and discussion at
https://bugzilla.redhat.com/show_bug.cgi?id=1834200
Also, it looks like encode_topo_cpuid8000001e() assumes core_id
has only 3 bits, so the existing assert() is not even sufficient.
We need to decide what to do if the user requests nr_cores > 8.
Probably omitting CPUID[0x8000001E] if the VCPU topology is
incompatible with encode_topo_cpuid8000001e() (and printing a
warning) is the safest thing to do right now.
> + encode_topo_cpuid8000001e(cs, cpu,
> + eax, ebx, ecx, edx);
> + break;
> case 0xC0000000:
> *eax = env->cpuid_xlevel2;
> *ebx = 0;
> --
> 1.8.3.1
>
--
Eduardo
- Re: [PATCH v13 1/5] i386: Add support for CPUID_8000_001E for AMD,
Eduardo Habkost <=