qemu-e2k/hw
Greg Kurz 5d0fb1508e spapr: consolidate the VCPU id numbering logic in a single place
Several places in the code need to calculate a VCPU id:

    (cpu_index / smp_threads) * spapr->vsmt + cpu_index % smp_threads
    (core_id / smp_threads) * spapr->vsmt (1 user)
    index * spapr->vsmt (2 users)

or guess that the VCPU id of a given VCPU is the first thread of a virtual
core:

    index % spapr->vsmt != 0

Even if the numbering logic isn't that complex, it is rather fragile to
have these assumptions open-coded in several places. FWIW this was
proved with recent issues related to VSMT.

This patch moves the VCPU id formula to a single function to be called
everywhere the code needs to compute one. It also adds an helper to
guess if a VCPU is the first thread of a VCORE.

Signed-off-by: Greg Kurz <groug@kaod.org>
[dwg: Rename spapr_is_vcore() to spapr_is_thread0_in_vcore() for clarity]
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2018-02-16 12:14:26 +11:00
..
9pfs Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
acpi Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
adc Include qapi/error.h exactly where needed 2018-02-09 13:50:17 +01:00
alpha
arm raspi: Raspberry Pi 3 support 2018-02-15 18:33:46 +00:00
audio hw/audio/sb16.c: change dolog() to qemu_log_mask() 2018-02-02 08:19:47 +01:00
block virtio,vhost,pci,pc: features, fixes and cleanups 2018-02-13 16:33:31 +00:00
bt hw/bt: Replace fprintf(stderr, "*\n" with error_report() 2018-01-22 09:51:00 +01:00
char hw/char: remove legacy interface escc_init() 2018-02-16 12:14:26 +11:00
core machine: Polish -machine xxx,help 2018-02-10 10:06:20 +03:00
cpu
cris
display memory: hide memory_region_sync_dirty_bitmap behind DirtyBitmapSnapshot 2018-02-13 16:15:09 +01:00
dma hw/dma: Replace fprintf(stderr, "*\n" with error_report() 2018-02-06 18:29:09 +01:00
gpio
hppa hw/hppa: Use qemu_log_mask instead of fprintf to stderr 2018-02-04 14:11:03 -08:00
i2c Include qapi/error.h exactly where needed 2018-02-09 13:50:17 +01:00
i386 Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
ide Include qapi/error.h exactly where needed 2018-02-09 13:50:17 +01:00
input qdev: use device_class_set_parent_realize/unrealize/reset() 2018-02-05 13:54:38 +01:00
intc hw/intc/armv7m_nvic: Fix byte-to-interrupt number conversions 2018-02-15 18:29:49 +00:00
ipack
ipmi Include qapi/error.h exactly where needed 2018-02-09 13:50:17 +01:00
isa lpc: drop pcie host dependency 2018-02-13 18:25:48 +02:00
lm32 hw/lm32: Replace fprintf(stderr, "*\n" with error_report() 2018-02-06 18:29:26 +01:00
m68k
mem
microblaze xlnx-zynqmp-pmu: Connect the IPI device to the PMU 2018-01-26 11:09:09 +01:00
mips Include qapi/error.h exactly where needed 2018-02-09 13:50:17 +01:00
misc cuda: convert to trace-events 2018-02-16 12:14:26 +11:00
moxie hw/moxie: Replace fprintf(stderr, "*\n" with error_report() 2018-02-06 18:29:26 +01:00
net * CAN bus (will be under network maintainner) 2018-02-13 18:24:08 +00:00
nios2 Include qapi/error.h exactly where needed 2018-02-09 13:50:17 +01:00
nvram Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
openrisc hw/openrisc: Replace fprintf(stderr, "*\n" with error_report() 2018-02-06 18:29:26 +01:00
pci virtio,vhost,pci,pc: features, fixes and cleanups 2018-02-13 16:33:31 +00:00
pci-bridge virtio,vhost,pci,pc: features, fixes and cleanups 2018-02-13 16:33:31 +00:00
pci-host virtio,vhost,pci,pc: features, fixes and cleanups 2018-02-13 16:33:31 +00:00
pcmcia
ppc spapr: consolidate the VCPU id numbering logic in a single place 2018-02-16 12:14:26 +11:00
s390x Miscellaneous patches for 2018-02-07 2018-02-09 14:39:09 +00:00
scsi virtio,vhost,pci,pc: features, fixes and cleanups 2018-02-13 16:33:31 +00:00
sd sdhci: add Spec v4.2 register definitions 2018-02-13 16:15:09 +01:00
sh4
smbios Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
sparc hw/char: remove legacy interface escc_init() 2018-02-16 12:14:26 +11:00
sparc64 Include qapi/error.h exactly where needed 2018-02-09 13:50:17 +01:00
ssi Include qapi/error.h exactly where needed 2018-02-09 13:50:17 +01:00
timer Miscellaneous patches for 2018-02-07 2018-02-09 14:39:09 +00:00
tpm Clean up includes 2018-02-09 05:05:11 +01:00
tricore
unicore32
usb virtio,vhost,pci,pc: features, fixes and cleanups 2018-02-13 16:33:31 +00:00
vfio virtio,vhost,pci,pc: features, fixes and cleanups 2018-02-13 16:33:31 +00:00
virtio virtio,vhost,pci,pc: features, fixes and cleanups 2018-02-13 16:33:31 +00:00
watchdog Eliminate qapi/qmp/types.h 2018-02-09 13:52:15 +01:00
xen virtio,vhost,pci,pc: features, fixes and cleanups 2018-02-13 16:33:31 +00:00
xenpv hw/xen*: Replace fprintf(stderr, "*\n" with error_report() 2018-02-06 18:29:46 +01:00
xtensa Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
Makefile.objs hw/net/can: SJA1000 chip register level emulation for QEMU 2018-02-13 11:44:13 +01:00