pci: Implement BusInfo.get_dev_path()
This works great for PCI since a <segment>:<bus>:<dev>.<fn> uniquely describes a global address. No need to traverse up the qdev tree. PCI segment support is a placeholder for compatibility once we support multiple segments. Signed-off-by: Alex Williamson <alex.williamson@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
6772b9364a
commit
4f43c1ff3b
14
hw/pci.c
14
hw/pci.c
@ -58,11 +58,13 @@ struct PCIBus {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static void pcibus_dev_print(Monitor *mon, DeviceState *dev, int indent);
|
static void pcibus_dev_print(Monitor *mon, DeviceState *dev, int indent);
|
||||||
|
static char *pcibus_get_dev_path(DeviceState *dev);
|
||||||
|
|
||||||
static struct BusInfo pci_bus_info = {
|
static struct BusInfo pci_bus_info = {
|
||||||
.name = "PCI",
|
.name = "PCI",
|
||||||
.size = sizeof(PCIBus),
|
.size = sizeof(PCIBus),
|
||||||
.print_dev = pcibus_dev_print,
|
.print_dev = pcibus_dev_print,
|
||||||
|
.get_dev_path = pcibus_get_dev_path,
|
||||||
.props = (Property[]) {
|
.props = (Property[]) {
|
||||||
DEFINE_PROP_PCI_DEVFN("addr", PCIDevice, devfn, -1),
|
DEFINE_PROP_PCI_DEVFN("addr", PCIDevice, devfn, -1),
|
||||||
DEFINE_PROP_STRING("romfile", PCIDevice, romfile),
|
DEFINE_PROP_STRING("romfile", PCIDevice, romfile),
|
||||||
@ -1853,6 +1855,18 @@ static void pcibus_dev_print(Monitor *mon, DeviceState *dev, int indent)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char *pcibus_get_dev_path(DeviceState *dev)
|
||||||
|
{
|
||||||
|
PCIDevice *d = (PCIDevice *)dev;
|
||||||
|
char path[16];
|
||||||
|
|
||||||
|
snprintf(path, sizeof(path), "%04x:%02x:%02x.%x",
|
||||||
|
pci_find_domain(d->bus), d->config[PCI_SECONDARY_BUS],
|
||||||
|
PCI_SLOT(d->devfn), PCI_FUNC(d->devfn));
|
||||||
|
|
||||||
|
return strdup(path);
|
||||||
|
}
|
||||||
|
|
||||||
static PCIDeviceInfo bridge_info = {
|
static PCIDeviceInfo bridge_info = {
|
||||||
.qdev.name = "pci-bridge",
|
.qdev.name = "pci-bridge",
|
||||||
.qdev.size = sizeof(PCIBridge),
|
.qdev.size = sizeof(PCIBridge),
|
||||||
|
Loading…
Reference in New Issue
Block a user