qemu/include
David Gibson 568f0690fd pci: Replace pci_find_domain() with more general pci_root_bus_path()
pci_find_domain() is used in a number of places where we want an id for a
whole PCI domain (i.e. the subtree under a PCI root bus).  The trouble is
that many platforms may support multiple independent host bridges with no
hardware supplied notion of domain number.

This patch, therefore, replaces calls to pci_find_domain() with calls to
a new pci_root_bus_path() returning a string.  The new call is implemented
in terms of a new callback in the host bridge class, so it can be defined
in some way that's well defined for the platform.  When no callback is
available we fall back on the qbus name.

Most current uses of pci_find_domain() are for error or informational
messages, so the change in identifiers should be harmless.  The exception
is pci_get_dev_path(), whose results form part of migration streams.  To
maintain compatibility with old migration streams, the PIIX PCI host is
altered to always supply "0000" for this path, which matches the old domain
number (since the code didn't actually support domains other than 0).

For the pseries (spapr) PCI bridge we use a different platform-unique
identifier (pseries machines can routinely have dozens of PCI host
bridges).  Theoretically that breaks migration streams, but given that we
don't yet have migration support for pseries, it doesn't matter.

Any other machines that have working migration support including PCI
devices will need to be updated to maintain migration stream compatibility.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2013-07-07 23:10:57 +03:00
..
block block: change default of .has_zero_init to 0 2013-06-28 13:52:35 +02:00
disas Add moxie disassembler 2013-03-23 14:25:41 +00:00
exec hwaddr: Make hwaddr type usable beyond softmmu 2013-06-28 13:25:13 +02:00
fpu softfloat: Implement uint64_to_float128 2013-01-05 10:12:50 +00:00
hw pci: Replace pci_find_domain() with more general pci_root_bus_path() 2013-07-07 23:10:57 +03:00
migration linux-user: Fix compilation failure 2013-06-27 15:38:35 -05:00
monitor add a new qevent: QEVENT_GUEST_PANICKED 2013-04-30 10:30:01 -05:00
net hw: move headers to include/ 2013-04-08 18:13:10 +02:00
qapi qerror: drop QERR_OPEN_FILE_FAILED macro 2013-06-17 11:01:14 -04:00
qemu pci: store PCI hole ranges in guestinfo structure 2013-07-04 10:40:56 +03:00
qom cpu: Turn cpu_unassigned_access() into a CPUState hook 2013-06-28 13:25:13 +02:00
sysemu KVM: PIC: Only commit irq routing when necessary 2013-07-01 01:11:14 +02:00
ui vnc: use booleans for vnc_connect, vnc_listen_read and vnc_display_add_client 2013-06-21 22:52:50 +04:00
config.h janitor: move remaining public headers to include/ 2012-12-19 08:32:46 +01:00
elf.h include/elf.h: add aarch64 ELF machine and relocs 2013-06-12 16:20:22 +01:00
glib-compat.h glib: add a compatibility interface for g_timeout_add_seconds 2013-03-25 13:10:40 -05:00
qemu-common.h cpu: Change qemu_init_vcpu() argument to CPUState 2013-06-28 13:25:13 +02:00
qemu-io.h qemu-io: Interface cleanup 2013-06-06 11:27:05 +02:00
trace.h build: some simplifications for "trace/Makefile.objs" 2013-01-12 18:42:51 +01:00