qemu/include
David Gibson 2f57db8a27 pcie: Simplify pci_adjust_config_limit()
Since c2077e2c "pci: Adjust PCI config limit based on bus topology",
pci_adjust_config_limit() has been used in the config space read and write
paths to only permit access to extended config space on buses which permit
it.  Specifically it prevents access on devices below a vanilla-PCI bus via
some combination of bridges, even if both the host bridge and the device
itself are PCI-E.

It accomplishes this with a somewhat complex call up the chain of bridges
to see if any of them prohibit extended config space access.  This is
overly complex, since we can always know if the bus will support such
access at the point it is constructed.

This patch simplifies the test by using a flag in the PCIBus instance
indicating whether extended configuration space is accessible.  It is
false for vanilla PCI buses.  For PCI-E buses, it is true for root
buses and equal to the parent bus's's capability otherwise.

For the special case of sPAPR's paravirtualized PCI root bus, which
acts mostly like vanilla PCI, but does allow extended config space
access, we override the default value of the flag from the host bridge
code.

This should cause no behavioural change.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Greg Kurz <groug@kaod.org>
Message-Id: <20190513061939.3464-4-david@gibson.dropbear.id.au>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2019-05-29 18:00:57 -04:00
..
authz Clean up ill-advised or unusual header guards 2019-05-13 08:58:55 +02:00
block block: Propagate AioContext change to parents 2019-05-20 17:08:56 +02:00
chardev Clean up ill-advised or unusual header guards 2019-05-13 08:58:55 +02:00
crypto crypto: Change the qcrypto_random_bytes buffer type to void* 2019-05-22 12:38:54 -04:00
disas Normalize header guard symbol definition. 2019-05-13 08:58:55 +02:00
exec semihosting: move semihosting configuration into its own directory 2019-05-28 10:28:50 +01:00
fpu softfloat: Implement float128_to_uint32 2019-02-26 14:05:19 +00:00
hw pcie: Simplify pci_adjust_config_limit() 2019-05-29 18:00:57 -04:00
io io: Make qio_channel_yield() interruptible 2019-02-25 15:03:19 +01:00
libdecnumber Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
migration migration/colo.h: Remove obsolete codes 2019-05-14 17:33:35 +01:00
monitor monitor: Clean up how monitor_disas() funnels output to monitor 2019-04-18 22:18:59 +02:00
net net: Add a network device specific self-announcement ability 2019-03-05 11:27:41 +08:00
qapi qapi: remove qmp_unregister_command() 2019-02-18 14:44:05 +01:00
qemu util: Add qemu_guest_getrandom and associated routines 2019-05-22 12:38:54 -04:00
qom cpus: Initialize pseudo-random seeds for all guest cpus 2019-05-22 12:38:54 -04:00
scsi Normalize header guard symbol definition. 2019-05-13 08:58:55 +02:00
standard-headers linux headers: update against Linux 5.2-rc1 2019-05-21 16:58:56 +02:00
sysemu semihosting: move semihosting configuration into its own directory 2019-05-28 10:28:50 +01:00
ui Normalize header guard symbol definition. 2019-05-13 08:58:55 +02:00
elf.h elf: Add RISC-V PSABI ELF header defines 2019-03-19 05:14:39 -07:00
glib-compat.h slirp: Move g_spawn_async_with_fds_qemu compatibility to slirp/ 2019-02-07 15:49:08 +02:00
qemu-common.h include: Include fprintf-fn.h only where needed 2019-04-18 22:18:59 +02:00
qemu-io.h qemu-io: Let command functions return error code 2018-06-11 16:18:45 +02:00
trace-tcg.h trace: get rid of generated-events.h/generated-events.c 2016-10-12 09:54:52 +02:00