qemu/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 include: Make headers more self-contained 2019-08-16 13:31:51 +02:00
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 machine: Refactor smp-related call chains to pass MachineState 2019-07-05 17:07:36 -03:00
gpio include: Make headers more self-contained 2019-08-16 13:31:51 +02:00
hyperv hyperv: process POST_MESSAGE hypercall 2018-10-19 13:44:14 +02:00
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 include: Make headers more self-contained 2019-08-16 13:31:51 +02:00
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 Supply missing header guards 2019-06-12 13:20:21 +02:00
lm32 Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
m68k Supply missing header guards 2019-06-12 13:20:21 +02:00
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 include: Make headers more self-contained 2019-08-16 13:31:51 +02:00
pci Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
pci-bridge Supply missing header guards 2019-06-12 13:20:21 +02:00
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 {hmp, hw/pvrdma}: Expose device internals via monitor interface 2019-03-16 15:52:44 +02:00
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 include: Make headers more self-contained 2019-08-16 13:31:51 +02:00
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 hw/unicore32: restrict hw addr defines to source file 2017-12-18 17:07:02 +03:00
usb usb: Add basic code to emulate Chipidea USB IP 2018-02-09 10:40:30 +00:00
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 include: Make headers more self-contained 2019-08-16 13:31:51 +02:00
fw-path-provider.h Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
hotplug.h qom: make interface types abstract 2018-12-11 15:45:22 -02:00
hw.h Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
ide.h ide/via: Rename functions to match device name 2019-01-25 14:52:12 -05:00
irq.h Include hw/irq.h a lot less 2019-08-16 13:31:52 +02:00
loader-fit.h Use #include "..." for our own headers, <...> for others 2018-02-09 05:05:11 +01:00
loader.h loader: Handle memory-mapped ELFs 2019-08-20 17:26:18 +02:00
nmi.h Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
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 platform-bus-device: use device plug callback instead of machine_done notifier 2018-05-10 18:10:56 +01:00
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 Supply missing header guards 2019-06-12 13:20:21 +02:00
qdev-properties.h audio: add audiodev properties to frontends 2019-08-21 09:13:37 +02:00
register.h hw: register: Run post_write hook on reset 2018-03-01 11:05:43 +00:00
registerfields.h Use #include "..." for our own headers, <...> for others 2018-02-09 05:05:11 +01:00
stream.h Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
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