[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 06/11] target-i386: add socket/core/thread prope
From: |
Eduardo Habkost |
Subject: |
Re: [Qemu-devel] [PATCH 06/11] target-i386: add socket/core/thread properties to X86CPU |
Date: |
Thu, 23 Jun 2016 14:44:53 -0300 |
User-agent: |
Mutt/1.6.1 (2016-04-27) |
On Thu, Jun 23, 2016 at 04:54:24PM +0200, Igor Mammedov wrote:
> these properties will be used by as address where to plug
> CPU with help -device/device_add commands.
>
> Signed-off-by: Igor Mammedov <address@hidden>
> ---
> hw/i386/pc.c | 12 ++++++++++++
> target-i386/cpu.c | 3 +++
> target-i386/cpu.h | 4 ++++
> 3 files changed, 19 insertions(+)
>
> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> index 6ba6343..87352ae 100644
> --- a/hw/i386/pc.c
> +++ b/hw/i386/pc.c
> @@ -1775,6 +1775,18 @@ static void pc_cpu_pre_plug(HotplugHandler
> *hotplug_dev,
> cpu->apic_id);
> return;
> }
> +
> + /* set 'address' properties socket/core/thread for initial and cpu-add
> + * added CPUs so that query_hotpluggable_cpus would show correct values
> + */
> + if (cpu->thread == -1 || cpu->core == -1 || cpu->socket == -1) {
> + X86CPUTopoInfo topo;
> +
> + x86_topo_ids_from_apicid(cpu->apic_id, smp_cores, smp_threads,
> &topo);
> + cpu->thread = topo.smt_id;
> + cpu->core = topo.core_id;
> + cpu->socket = topo.pkg_id;
> + }
What if both apic-id and socket/core/thread are set?
I suggest validating the properties, and setting them in case
they are not set:
x86_topo_ids_from_apicid(cpu->apic_id, smp_cores, smp_threads, &topo);
if (cpu->socket != -1 && cpu->socket != topo.socket_id) {
error_setg(errp, "CPU socket ID mismatch: ...");
return;
}
cpu->socket = topo.socket_id;
if (cpu->core != -1 && cpu->core != topo.core_id) {
error_setg(errp, "CPU core ID mismatch: ...");
return;
}
cpu->core = topo.core_id;
if (cpu->thread != -1 && cpu->thread != topo.smt_id) {
error_setg(errp, "CPU thread ID mismatch: ...");
return;
}
cpu->thread = topo.smt_id;
We could do that inside x86_cpu_realizefn(), so that
socket/core/thread would be always set in all CPUs.
> }
>
> static void pc_machine_device_pre_plug_cb(HotplugHandler *hotplug_dev,
> diff --git a/target-i386/cpu.c b/target-i386/cpu.c
> index 9294b3d..8c651f2 100644
> --- a/target-i386/cpu.c
> +++ b/target-i386/cpu.c
> @@ -3186,6 +3186,9 @@ static Property x86_cpu_properties[] = {
> DEFINE_PROP_UINT32("xlevel2", X86CPU, env.cpuid_xlevel2, 0),
> DEFINE_PROP_STRING("hv-vendor-id", X86CPU, hyperv_vendor_id),
> DEFINE_PROP_BOOL("cpuid-0xb", X86CPU, enable_cpuid_0xb, true),
> + DEFINE_PROP_INT32("thread", X86CPU, thread, -1),
> + DEFINE_PROP_INT32("core", X86CPU, core, -1),
> + DEFINE_PROP_INT32("socket", X86CPU, socket, -1),
> DEFINE_PROP_END_OF_LIST()
> };
>
> diff --git a/target-i386/cpu.h b/target-i386/cpu.h
> index 8b09cfa..a04d334 100644
> --- a/target-i386/cpu.h
> +++ b/target-i386/cpu.h
> @@ -1190,6 +1190,10 @@ struct X86CPU {
> Notifier machine_done;
>
> struct kvm_msrs *kvm_msr_buf;
> +
> + int32_t socket;
> + int32_t core;
> + int32_t thread;
> };
>
> static inline X86CPU *x86_env_get_cpu(CPUX86State *env)
> --
> 1.8.3.1
>
--
Eduardo
- Re: [Qemu-devel] [PATCH 03/11] pc: extract CPU lookup into a separate function, (continued)
[Qemu-devel] [PATCH 05/11] target-i386: cpu: replace custom apic-id setter/getter with static property, Igor Mammedov, 2016/06/23
[Qemu-devel] [PATCH 06/11] target-i386: add socket/core/thread properties to X86CPU, Igor Mammedov, 2016/06/23
- Re: [Qemu-devel] [PATCH 06/11] target-i386: add socket/core/thread properties to X86CPU,
Eduardo Habkost <=
- Re: [Qemu-devel] [PATCH 06/11] target-i386: add socket/core/thread properties to X86CPU, Igor Mammedov, 2016/06/23
- Re: [Qemu-devel] [PATCH 06/11] target-i386: add socket/core/thread properties to X86CPU, Eduardo Habkost, 2016/06/23
- Re: [Qemu-devel] [PATCH 06/11] target-i386: add socket/core/thread properties to X86CPU, Igor Mammedov, 2016/06/23
- Re: [Qemu-devel] [PATCH 06/11] target-i386: add socket/core/thread properties to X86CPU, Eduardo Habkost, 2016/06/23
- Re: [Qemu-devel] [PATCH 06/11] target-i386: add socket/core/thread properties to X86CPU, Igor Mammedov, 2016/06/24
[Qemu-devel] [PATCH 08/11] pc: implement query-hotpluggable-cpus callback, Igor Mammedov, 2016/06/23
[Qemu-devel] [PATCH 09/11] pc: register created initial and hotpluged CPUs in one place pc_cpu_plug(), Igor Mammedov, 2016/06/23
[Qemu-devel] [PATCH 10/11] pc: delay setting number of boot CPUs to machine_done time, Igor Mammedov, 2016/06/23
[Qemu-devel] [PATCH 11/11] pc: cpu: allow device_add to be used with x86 cpu, Igor Mammedov, 2016/06/23