qemu-e2k/hw/core
Stefan Hajnoczi cf03a152c5 qdev: add IOThreadVirtQueueMappingList property type
virtio-blk and virtio-scsi devices will need a way to specify the
mapping between IOThreads and virtqueues. At the moment all virtqueues
are assigned to a single IOThread or the main loop. This single thread
can be a CPU bottleneck, so it is necessary to allow finer-grained
assignment to spread the load.

Introduce DEFINE_PROP_IOTHREAD_VQ_MAPPING_LIST() so devices can take a
parameter that maps virtqueues to IOThreads. The command-line syntax for
this new property is as follows:

  --device '{"driver":"foo","iothread-vq-mapping":[{"iothread":"iothread0","vqs":[0,1,2]},...]}'

IOThreads are specified by name and virtqueues are specified by 0-based
index.

It will be common to simply assign virtqueues round-robin across a set
of IOThreads. A convenient syntax that does not require specifying
individual virtqueue indices is available:

  --device '{"driver":"foo","iothread-vq-mapping":[{"iothread":"iothread0"},{"iothread":"iothread1"},...]}'

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-ID: <20231220134755.814917-4-stefanha@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2023-12-21 22:49:28 +01:00
..
bus.c
clock-vmstate.c
clock.c
cpu-common.c
cpu-sysemu.c
fw-path-provider.c
generic-loader.c
gpio.c
guest-loader.c
guest-loader.h
hotplug-stubs.c
hotplug.c
irq.c
Kconfig
loader-fit.c
loader.c
machine-hmp-cmds.c
machine-qmp-cmds.c
machine-smp.c
machine.c
meson.build
nmi.c
null-machine.c
numa.c
or-irq.c
platform-bus.c
ptimer.c
qdev-clock.c
qdev-fw.c
qdev-hotplug.c
qdev-prop-internal.h
qdev-properties-system.c qdev: add IOThreadVirtQueueMappingList property type 2023-12-21 22:49:28 +01:00
qdev-properties.c
qdev.c
register.c
reset.c
resettable.c
split-irq.c
stream.c
sysbus-fdt.c
sysbus.c
trace-events
trace.h
uboot_image.h
vm-change-state-handler.c
vmstate-if.c