qemu/hw/i386
Igor Mammedov c6c1bb89fb x86: do not advertise die-id in query-hotpluggbale-cpus if '-smp dies' is not set
Commit 176d2cda0 (i386/cpu: Consolidate die-id validity in smp context) added
new 'die-id' topology property to CPUs and exposed it via QMP command
query-hotpluggable-cpus, which broke -device/device_add cpu-foo for existing
users that do not support die-id/dies yet. That's would be fine if it happened
to new machine type only but it also happened to old machine types,
which breaks migration from old QEMU to the new one, for example following CLI:

  OLD-QEMU -M pc-i440fx-4.0 -smp 1,max_cpus=2 \
           -device qemu64-x86_64-cpu,socket-id=1,core-id=0,thread-id
is not able to start with new QEMU, complaining about invalid die-id.

After discovering regression, the patch
   "pc: Don't make die-id mandatory unless necessary"
makes die-id optional so old CLI would work.

However it's not enough as new QEMU still exposes die-id via query-hotpluggbale-cpus
QMP command, so the users that started old machine type on new QEMU, using all
properties (including die-id) received from QMP command (as required), won't be
able to start old QEMU using the same properties since it doesn't support die-id.

Fix it by hiding die-id in query-hotpluggbale-cpus for all machine types in case
'-smp dies' is not provided on CLI or -smp dies = 1', in which case smp_dies == 1
and APIC ID is calculated in default way (as it was before DIE support) so we won't
need compat code as in both cases the topology provided to guest via CPUID is the same.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Message-Id: <20190902120222.6179-1-imammedo@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
2019-09-03 14:39:46 -03:00
..
kvm sysemu: Split sysemu/runstate.h off sysemu/sysemu.h 2019-08-16 13:37:36 +02:00
xen xen: cleanup IOREQ server on exit 2019-08-27 14:18:28 +01:00
acpi-build.c numa: move numa global variable have_numa_distance into MachineState 2019-09-03 11:26:55 -03:00
acpi-build.h
amd_iommu.c Include migration/vmstate.h less 2019-08-16 13:31:52 +02:00
amd_iommu.h Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
fw_cfg.c hw/i386: Implement fw_cfg_arch_key_name() 2019-05-23 14:10:31 +02:00
fw_cfg.h hw/i386: Extract fw_cfg definitions to local "fw_cfg.h" 2019-05-23 14:10:31 +02:00
intel_iommu_internal.h intel_iommu: Drop extended root field 2019-04-02 11:49:14 -04:00
intel_iommu.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
Kconfig hw/i386: also turn off VMMOUSE is VMPORT is disabled 2019-07-23 15:53:25 +01:00
kvmvapic.c sysemu: Split sysemu/runstate.h off sysemu/sysemu.h 2019-08-16 13:37:36 +02:00
Makefile.objs hw/i386: Implement fw_cfg_arch_key_name() 2019-05-23 14:10:31 +02:00
multiboot.c Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
multiboot.h
pc_piix.c Various trivial fixes 2019-08-21 16:59:22 +01:00
pc_q35.c hw: add compat machines for 4.2 2019-08-21 11:32:11 +10:00
pc_sysfw.c Include hw/boards.h a bit less 2019-08-16 13:31:53 +02:00
pc.c x86: do not advertise die-id in query-hotpluggbale-cpus if '-smp dies' is not set 2019-09-03 14:39:46 -03:00
trace-events intel_iommu: Drop extended root field 2019-04-02 11:49:14 -04:00
vmmouse.c i386/vmmouse: Properly reset state 2019-09-03 14:39:46 -03:00
vmport.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
x86-iommu.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00