qemu/include/hw
Emilio G. Cota 7264961934 hw: add .min_cpus and .default_cpus fields to machine_class
max_cpus needs to be an upper bound on the number of vCPUs
initialized; otherwise TCG region initialization breaks.

Some boards initialize a hard-coded number of vCPUs, which is not
captured by the global max_cpus and therefore breaks TCG initialization.
Fix it by adding the .min_cpus field to machine_class.

This commit also changes some user-facing behaviour: we now die if
-smp is below this hard-coded vCPU minimum instead of silently
ignoring the passed -smp value (sometimes announcing this by printing
a warning). However, the introduction of .default_cpus lessens the
likelihood that users will notice this: if -smp isn't set, we now
assign the value in .default_cpus to both smp_cpus and max_cpus. IOW,
if a user does not set -smp, they always get a correct number of vCPUs.

This change fixes 3468b59 ("tcg: enable multiple TCG contexts in
softmmu", 2017-10-24), which broke TCG initialization for some
ARM boards.

Fixes: 3468b59e18
Reported-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: Alistair Francis <alistair.francis@xilinx.com>
Signed-off-by: Emilio G. Cota <cota@braap.org>
Message-id: 1510343626-25861-6-git-send-email-cota@braap.org
Suggested-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Emilio G. Cota <cota@braap.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2017-11-13 13:55:27 +00: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: fix armv7m_init() declaration to match definition 2017-10-12 13:20:07 +01: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
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 i386/cpu/hyperv: support over 64 vcpus for windows guests 2017-09-19 16:20:49 +02:00
ide ide: support reporting of rotation rate 2017-10-12 12:10:37 +02:00
input ps2: add and use PS2State typedef 2017-06-23 11:51:50 +02:00
intc nvic: Implement NVIC_ITNS<n> registers 2017-09-21 16:29:27 +01:00
ipack
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
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: malta/boston: replace cpu_model with cpu_type 2017-10-27 16:04:28 +02:00
misc hw/misc: add vmcoreinfo device 2017-10-15 05:54:40 +03:00
net lance: move TYPE_LANCE and SysBusPCNetState from lance.c to lance.h 2017-10-31 17:25:36 +00:00
nvram fw_cfg: add write callback 2017-10-15 05:54:40 +03:00
pci pci-assign: Remove 2017-11-05 14:52:10 +01:00
pci-host hw/pci-host/gpex: Set INTx index/gsi mapping 2017-09-14 18:43:18 +01:00
ppc ppc: pnv: drop PnvChipClass::cpu_model field 2017-10-17 10:34:01 +11:00
s390x s390x/kvm: use cpu model for gscb on compat machines 2017-10-30 09:03:45 +01:00
scsi esp: move TYPE_ESP and SysBusESPState from esp.c to esp.h 2017-10-31 17:25:36 +00: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 sun4m: change TYPE_SUN4M_IOMMU macro from "iommu" to "sun4m-iommu" 2017-10-31 17:25:37 +00:00
ssi msf2: Add Smartfusion2 SPI controller 2017-09-21 16:36:56 +01:00
timer msf2: Add Smartfusion2 System timer 2017-09-21 16:36:56 +01:00
tricore
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-input: send rel-wheel events for wheel buttons 2017-09-29 10:36:33 +02:00
watchdog watchdog: wdt_aspeed: Add support for the reset width register 2017-09-04 15:21:54 +01:00
xen xen: add a global indicator for grant copy being available 2017-10-26 14:23:06 -07:00
boards.h hw: add .min_cpus and .default_cpus fields to machine_class 2017-11-13 13:55:27 +00:00
bt.h char: rename CharDriverState Chardev 2017-01-27 18:07:59 +01:00
compat.h virtio-input: send rel-wheel events for wheel buttons 2017-09-29 10:36:33 +02: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
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 include/hw/or-irq.h: Drop unused in_irqs field 2017-10-16 21:09:15 +03: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 qdev: store DeviceState's canonical path to use when unparenting 2017-10-18 10:34:17 +02:00
qdev-dma.h
qdev-properties.h qdev: provide DEFINE_PROP_INT64() 2017-07-18 17:36:19 +02:00
qdev.h
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