qemu-e2k/include/hw
Alexey Kardashevskiy 6c3829a265 spapr_pci: Advertise BAR reallocation capability
The pseries guests do not normally allocate PCI resources and rely on
the system firmware doing so. Furthermore at least at some point in
the past the pseries guests won't even allowed to change BARs, probably
it is still the case for phyp. So since the initial commit we have [1]
which prevents resource reallocation.

This is not a problem until we want specific BAR alignments, for example,
PAGE_SIZE==64k to make sure we can still map MMIO BARs directly. For
the boot time devices we handle this in SLOF [2] but since QEMU's RTAS
does not allocate BARs, the guest does this instead and does not align
BARs even if Linux is given pci=resource_alignment=16@pci:0:0 as
PCI_PROBE_ONLY makes Linux ignore alignment requests.

ARM folks added a dial to control PCI_PROBE_ONLY via the device tree [3].
This makes use of the dial to advertise to the guest that we can handle
BAR reassignments. This limits the change to the latest pseries machine
to avoid old guests explosion.

We do not remove the flag from [1] as pseries guests are still supported
under phyp so having that removed may cause problems.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/powerpc/platforms/pseries/setup.c?h=v5.1#n773
[2] https://git.qemu.org/?p=SLOF.git;a=blob;f=board-qemu/slof/pci-phb.fs;h=06729bcf77a0d4e900c527adcd9befe2a269f65d;hb=HEAD#l338
[3] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f81c11af
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Message-Id: <20190719043734.108462-1-aik@ozlabs.ru>
Reviewed-by: Greg Kurz <groug@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2019-08-29 09:46:07 +10:00
..
acpi Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
adc
arm Clean up inclusion of sysemu/sysemu.h 2019-08-16 13:31:53 +02:00
audio Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
block Include exec/memory.h slightly less 2019-08-16 13:31:52 +02:00
char Clean up inclusion of sysemu/sysemu.h 2019-08-16 13:31:53 +02:00
core Monitor patches for 2019-08-21 2019-08-22 10:31:21 +01:00
cpu Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
cris Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
display Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
dma Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
firmware
gpio
hyperv
i2c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
i386 ppc patch queue for 2019-08-21 2019-08-21 14:04:17 +01:00
ide sysemu: Move the VMChangeStateEntry typedef to qemu/typedefs.h 2019-08-16 13:31:53 +02:00
input Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
intc
ipack Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
ipmi Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
isa Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
kvm
lm32
m68k
mem Include sysemu/hostmem.h less 2019-08-16 13:31:53 +02:00
mips Include hw/irq.h a lot less 2019-08-16 13:31:52 +02:00
misc Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
net Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
nvram
pci Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
pci-bridge
pci-host Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
ppc spapr_pci: Advertise BAR reallocation capability 2019-08-29 09:46:07 +10:00
rdma
riscv Clean up inclusion of sysemu/sysemu.h 2019-08-16 13:31:53 +02:00
s390x Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
scsi sysemu: Move the VMChangeStateEntry typedef to qemu/typedefs.h 2019-08-16 13:31:53 +02:00
sd Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
semihosting
sh4 Include hw/irq.h a lot less 2019-08-16 13:31:52 +02:00
sparc Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
ssi Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
timer Clean up inclusion of sysemu/sysemu.h 2019-08-16 13:31:53 +02:00
tricore Include hw/irq.h a lot less 2019-08-16 13:31:52 +02:00
unicore32
usb
vfio Include hw/irq.h a lot less 2019-08-16 13:31:52 +02:00
virtio sysemu: Move the VMChangeStateEntry typedef to qemu/typedefs.h 2019-08-16 13:31:53 +02:00
watchdog Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
xen xen: Fix ring.h header 2019-08-27 14:18:28 +01:00
xtensa Include hw/irq.h a lot less 2019-08-16 13:31:52 +02:00
boards.h Monitor patches for 2019-08-21 2019-08-22 10:31:21 +01:00
bt.h Include hw/irq.h a lot less 2019-08-16 13:31:52 +02:00
elf_ops.h elf-ops.h: Map into memory the ELF to load 2019-08-20 17:26:18 +02:00
empty_slot.h
fw-path-provider.h
hotplug.h
hw.h Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
ide.h
irq.h Include hw/irq.h a lot less 2019-08-16 13:31:52 +02:00
loader-fit.h
loader.h loader: Handle memory-mapped ELFs 2019-08-20 17:26:18 +02:00
nmi.h
or-irq.h Include hw/irq.h a lot less 2019-08-16 13:31:52 +02:00
pcmcia.h Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
platform-bus.h
ptimer.h Include migration/vmstate.h less 2019-08-16 13:31:52 +02:00
qdev-core.h Include sysemu/sysemu.h a lot less 2019-08-16 13:31:53 +02:00
qdev-dma.h
qdev-properties.h audio: add audiodev properties to frontends 2019-08-21 09:13:37 +02:00
register.h
registerfields.h
stream.h
sysbus.h Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
usb.h Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00