qemu/include/hw
Igor Mammedov 79e0793614 numa: cpu: calculate/set default node-ids after all -numa CLI options are parsed
Calculating default node-ids for CPUs in possible_cpu_arch_ids()
is rather fragile since defaults calculation uses nb_numa_nodes but
callback might be potentially called early before all -numa CLI
options are parsed, which would lead to cpus assigned only upto
nb_numa_nodes at the time possible_cpu_arch_ids() is called.

Issue was introduced by
(7c88e65 numa: mirror cpu to node mapping in MachineState::possible_cpus)
and for example CLI:
  -smp 4 -numa node,cpus=0 -numa node
would set props.node-id in possible_cpus array for every non
explicitly mapped CPU to the first node.

Issue is not visible to guest nor to mgmt interface due to
  1) implictly mapped cpus are forced to the first node in
     case of partial mapping
  2) in case of default mapping possible_cpu_arch_ids() is
     called after all -numa options are parsed (resulting
     in correct mapping).

However it's fragile to rely on late execution of
possible_cpu_arch_ids(), therefore add machine specific
callback that returns node-id for CPU and use it to calculate/
set defaults at machine_numa_finish_init() time when all -numa
options are parsed.

Reported-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Message-Id: <1496314408-163972-1-git-send-email-imammedo@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
2017-09-19 16:51:33 -03:00
..
acpi vmgenid: replace x-write-pointer-available hack 2017-09-08 16:15:17 +03:00
adc STM32F2xx: Add the ADC device 2016-10-04 13:28:07 +01:00
arm arm: drop intermediate cpu_model -> cpu type parsing and use cpu type directly 2017-09-19 09:09:32 -03:00
audio audio: Rename hw/audio/audio.h to hw/audio/soundhw.h 2017-05-19 10:48:54 +02:00
block hw/block: Introduce share-rw qdev property 2017-02-28 20:40:36 +01:00
char hw/char/cmsdk-apb-uart.c: Implement CMSDK APB UART 2017-07-17 13:36:08 +01:00
core generic-loader: Add a generic loader 2016-10-04 13:28:09 +01:00
cpu qapi: keep names in 'CpuInstanceProperties' in sync with struct CPUCore 2016-06-27 13:15:06 +10:00
cris char: rename CharDriverState Chardev 2017-01-27 18:07:59 +01:00
display Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
dma include: Fix typos found by codespell 2017-01-24 23:26:52 +03:00
gpio bcm2835_gpio: add bcm2835 gpio controller 2017-02-28 17:10:00 +00:00
i2c ppc4xx_i2c: QOMify 2017-09-08 09:30:55 +10:00
i386 pc: add 2.11 machine types 2017-09-08 16:15:17 +03:00
ide ahci: split public and private interface 2017-07-18 11:47:57 -04:00
input ps2: add and use PS2State typedef 2017-06-23 11:51:50 +02:00
intc nvic: Add NS alias SCS region 2017-09-07 13:54:53 +01:00
ipack ipack: Update e-mail address 2016-05-18 15:04:27 +03:00
ipmi ipmi: introduce an ipmi_bmc_gen_event() API 2017-04-26 12:41:55 +10:00
isa isa: use get_uint() for "io-base" 2017-06-20 14:31:32 +02:00
kvm hw: move headers to include/ 2013-04-08 18:13:10 +02:00
lm32 intc: make HMP 'info irq' and 'info pic' commands use InterruptStatsProvider interface 2016-10-04 10:00:25 +02:00
m68k hw/char/mcf_uart: QOMify the ColdFire UART 2017-02-16 14:06:56 +01:00
mem qmp: introduce query-memory-size-summary command 2017-09-14 15:52:10 +01:00
mips mips: Add KVM T&E segment support for TCG 2017-08-02 22:18:06 +01:00
misc hw/misc/mps2_scc: Implement MPS2 Serial Communication Controller 2017-07-17 13:36:08 +01:00
net net/ftgmac100: add a 'aspeed' property 2017-04-25 19:17:25 +08:00
nvram fw_cfg: rename read callback 2017-09-08 16:15:17 +03:00
pci net: Add SunGEM device emulation as found on Apple UniNorth 2017-09-15 10:29:48 +10:00
pci-host hw/pci-host/gpex: Set INTx index/gsi mapping 2017-09-14 18:43:18 +01:00
ppc ppc/xive: fix OV5_XIVE_EXPLOIT bits 2017-09-15 10:29:48 +10:00
s390x s390x/kvm: move KVM declarations and stubs to separate files 2017-08-30 18:23:26 +02:00
scsi hw: Deprecate -drive if=scsi with non-onboard HBAs 2017-02-21 13:17:45 +01:00
sd hw/sd: add card-reparenting function 2017-02-28 17:10:00 +00:00
sh4 char: rename CharDriverState Chardev 2017-01-27 18:07:59 +01:00
smbios smbios: filter based on CONFIG_SMBIOS rather than TARGET 2017-01-16 17:52:34 +01:00
sparc char: rename CharDriverState Chardev 2017-01-27 18:07:59 +01:00
ssi aspeed/smc: handle SPI flash Command mode 2017-01-20 11:15:08 +00:00
timer hw/char/cmsdk-apb-timer: Implement CMSDK APB timer device 2017-07-17 13:36:08 +01:00
tricore Clean up header guards that don't match their file name 2016-07-12 16:19:16 +02:00
unicore32 Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
usb Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
vfio memory/iommu: QOM'fy IOMMU MemoryRegion 2017-07-14 12:04:41 +02:00
virtio virtio-net: enable configurable tx queue size 2017-07-03 22:29:48 +03:00
watchdog watchdog: wdt_aspeed: Add support for the reset width register 2017-09-04 15:21:54 +01:00
xen xen: don't use xenstore to save/restore physmap anymore 2017-07-18 14:16:52 -07:00
boards.h numa: cpu: calculate/set default node-ids after all -numa CLI options are parsed 2017-09-19 16:51:33 -03:00
bt.h char: rename CharDriverState Chardev 2017-01-27 18:07:59 +01:00
compat.h vmgenid: replace x-write-pointer-available hack 2017-09-08 16:15:17 +03:00
devices.h sm501: QOMify 2017-04-24 12:32:12 +01:00
elf_ops.h loader: Ignore zero-sized ELF segments 2017-09-04 15:21:53 +01:00
empty_slot.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
fw-path-provider.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
hotplug.h qdev: hotplug: drop HotplugHandler.post_plug callback 2016-11-15 17:20:37 +02:00
hw.h migration: Split qemu-file.h 2017-06-01 18:49:22 +02:00
ide.h xen-platform: add missing disk unplug option 2017-01-27 15:23:29 -08:00
irq.h irq: Remove qemu_irq_intercept_out 2014-10-23 16:41:25 +02:00
loader-fit.h loader: Support Flattened Image Trees (FIT images) 2017-02-21 23:47:40 +00:00
loader.h fw_cfg: rename read callback 2017-09-08 16:15:17 +03:00
nmi.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
or-irq.h irq: Add a new irq device that allows the ORing of lines 2016-10-04 13:28:07 +01:00
pcmcia.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
platform-bus.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
ptimer.h include/hw/ptimer.h: Add documentation comments 2017-07-11 17:44:27 +03:00
qdev-core.h qapi: Change data type of the FOO_lookup generated for enum FOO 2017-09-04 13:09:13 +02:00
qdev-dma.h qdev: Remove hex8/32/64 property types 2014-02-14 21:12:04 +01:00
qdev-properties.h qdev: provide DEFINE_PROP_INT64() 2017-07-18 17:36:19 +02:00
qdev.h hw: move headers to include/ 2013-04-08 18:13:10 +02:00
register.h hw/registerfields.h: Pull FIELD etc macros out of hw/register.h 2017-01-27 15:20:21 +00:00
registerfields.h hw/registerfields.h: Pull FIELD etc macros out of hw/register.h 2017-01-27 15:20:21 +00:00
stream.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
sysbus.h sysbus: Remove ignored return value of FindSysbusDeviceFunc 2016-09-27 17:03:34 -03:00
usb.h usb: replace handle_destroy with unrealize 2017-02-23 15:40:19 +01:00