qemu-e2k/hw/i386
Igor Mammedov fb43b73b92 pc: fix default VCPU to NUMA node mapping
Since commit
   dd0247e0 pc: acpi: mark all possible CPUs as enabled in SRAT
Linux kernel actually tries to use CPU to Node mapping from
QEMU provided SRAT table instead of discarding it, and that
in some cases breaks build_sched_domains() which expects
sane mapping where cores/threads belonging to the same socket
are on the same NUMA node.

With current default round-robin mapping of VCPUs to nodes
guest ends-up with cores/threads belonging to the same socket
being on different NUMA nodes.

For example with following CLI:

   qemu-system-x86_64 -m 4G \
         -cpu Opteron_G3,vendor=AuthenticAMD \
         -smp 5,sockets=1,cores=4,threads=1,maxcpus=8 \
         -numa node,nodeid=0 -numa node,nodeid=1

2.6.32 based kernels will hang on boot due to incorrectly built
sched_group-s list in update_sd_lb_stats()

Replacing default mapping with a manual, where VCPUs belonging to
the same socket are on the same NUMA node, fixes the issue for
guests which can't handle nonsense topology i.e. changing CLI to:
  -numa node,nodeid=0,cpus=0-3 -numa node,nodeid=1,cpus=4-7

So instead of simply scattering VCPUs around nodes, provide
callback to map the same socket VCPUs to the same NUMA node,
which is what guests would expect from a sane hardware/BIOS.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
2015-03-19 16:12:09 -03:00
..
kvm pci-assign: Convert to realize 2015-02-26 12:42:17 +01:00
xen hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
acpi-build.c acpi: drop unused code 2015-03-08 11:51:46 +01:00
acpi-build.h
acpi-defs.h intel-iommu: add DMAR table to ACPI tables 2014-08-28 23:10:22 +02:00
acpi-dsdt-cpu-hotplug.dsl pc: acpi-build: create CPU hotplug IO region dynamically 2015-02-26 13:04:17 +01:00
acpi-dsdt-dbug.dsl
acpi-dsdt-hpet.dsl
acpi-dsdt-isa.dsl pc: acpi-build: drop template patching and create Device(SMC) dynamically 2015-03-01 12:33:22 +01:00
acpi-dsdt-mem-hotplug.dsl pc: acpi-build: create memory hotplug IO region dynamically 2015-02-26 13:04:18 +01:00
acpi-dsdt.dsl pc: acpi-build: drop template patching and create Device(SMC) dynamically 2015-03-01 12:33:22 +01:00
acpi-dsdt.hex.generated acpi: update generated files 2015-03-04 16:05:32 +01:00
intel_iommu_internal.h intel-iommu: add IOTLB using hash table 2014-08-28 23:10:22 +02:00
intel_iommu.c exec: RCUify AddressSpaceDispatch 2015-02-16 17:30:19 +01:00
kvmvapic.c kvmvapic: patch_instruction fix 2014-10-31 11:29:02 +01:00
Makefile.objs pc: acpi-build: drop template patching and create PCI bus tree dynamically 2015-03-01 12:33:23 +01:00
multiboot.c multiboot: Fix offset of bootloader name 2015-01-26 12:22:44 +01:00
multiboot.h
pc_piix.c pc: Disable vmdesc submission for old machines 2015-03-16 14:35:37 +01:00
pc_q35.c pc: Disable vmdesc submission for old machines 2015-03-16 14:35:37 +01:00
pc_sysfw.c x86: Drop superfluous conditionals around g_free() 2014-12-15 12:21:02 +01:00
pc.c pc: fix default VCPU to NUMA node mapping 2015-03-19 16:12:09 -03:00
q35-acpi-dsdt.dsl pc: acpi-build: drop template patching and create Device(SMC) dynamically 2015-03-01 12:33:22 +01:00
q35-acpi-dsdt.hex.generated acpi: update generated files 2015-03-04 16:05:32 +01:00
smbios.c smbios: add max speed comdline option for type-17 (meory device) structure 2015-03-19 11:18:51 +03:00
ssdt-tpm.dsl Add ACPI tables for TPM 2014-08-25 00:16:06 +02:00
ssdt-tpm.hex.generated acpi: update generated files 2015-03-02 16:14:33 +01:00