pci: Move pcibus_dev_print() to pci-hmp-cmds.c
This method is for HMP command "info qtree". Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-Id: <20221201121133.3813857-8-armbru@redhat.com>
This commit is contained in:
parent
ef21900951
commit
0bcaaff8d8
@ -14,8 +14,10 @@
|
||||
*/
|
||||
|
||||
#include "qemu/osdep.h"
|
||||
#include "hw/pci/pci.h"
|
||||
#include "monitor/hmp.h"
|
||||
#include "monitor/monitor.h"
|
||||
#include "pci-internal.h"
|
||||
#include "qapi/error.h"
|
||||
#include "qapi/qapi-commands-pci.h"
|
||||
|
||||
@ -118,3 +120,39 @@ void hmp_info_pci(Monitor *mon, const QDict *qdict)
|
||||
|
||||
qapi_free_PciInfoList(info_list);
|
||||
}
|
||||
|
||||
void pcibus_dev_print(Monitor *mon, DeviceState *dev, int indent)
|
||||
{
|
||||
PCIDevice *d = (PCIDevice *)dev;
|
||||
int class = pci_get_word(d->config + PCI_CLASS_DEVICE);
|
||||
const pci_class_desc *desc = get_class_desc(class);
|
||||
char ctxt[64];
|
||||
PCIIORegion *r;
|
||||
int i;
|
||||
|
||||
if (desc->desc) {
|
||||
snprintf(ctxt, sizeof(ctxt), "%s", desc->desc);
|
||||
} else {
|
||||
snprintf(ctxt, sizeof(ctxt), "Class %04x", class);
|
||||
}
|
||||
|
||||
monitor_printf(mon, "%*sclass %s, addr %02x:%02x.%x, "
|
||||
"pci id %04x:%04x (sub %04x:%04x)\n",
|
||||
indent, "", ctxt, pci_dev_bus_num(d),
|
||||
PCI_SLOT(d->devfn), PCI_FUNC(d->devfn),
|
||||
pci_get_word(d->config + PCI_VENDOR_ID),
|
||||
pci_get_word(d->config + PCI_DEVICE_ID),
|
||||
pci_get_word(d->config + PCI_SUBSYSTEM_VENDOR_ID),
|
||||
pci_get_word(d->config + PCI_SUBSYSTEM_ID));
|
||||
for (i = 0; i < PCI_NUM_REGIONS; i++) {
|
||||
r = &d->io_regions[i];
|
||||
if (!r->size) {
|
||||
continue;
|
||||
}
|
||||
monitor_printf(mon, "%*sbar %d: %s at 0x%"FMT_PCIBUS
|
||||
" [0x%"FMT_PCIBUS"]\n",
|
||||
indent, "",
|
||||
i, r->type & PCI_BASE_ADDRESS_SPACE_IO ? "i/o" : "mem",
|
||||
r->addr, r->addr + r->size - 1);
|
||||
}
|
||||
}
|
||||
|
@ -16,5 +16,6 @@ extern PCIHostStateList pci_host_bridges;
|
||||
|
||||
const pci_class_desc *get_class_desc(int class);
|
||||
PCIBus *pci_find_bus_nr(PCIBus *bus, int bus_num);
|
||||
void pcibus_dev_print(Monitor *mon, DeviceState *dev, int indent);
|
||||
|
||||
#endif
|
||||
|
38
hw/pci/pci.c
38
hw/pci/pci.c
@ -34,7 +34,6 @@
|
||||
#include "hw/qdev-properties-system.h"
|
||||
#include "migration/qemu-file-types.h"
|
||||
#include "migration/vmstate.h"
|
||||
#include "monitor/monitor.h"
|
||||
#include "net/net.h"
|
||||
#include "sysemu/numa.h"
|
||||
#include "sysemu/sysemu.h"
|
||||
@ -59,7 +58,6 @@
|
||||
|
||||
bool pci_available = true;
|
||||
|
||||
static void pcibus_dev_print(Monitor *mon, DeviceState *dev, int indent);
|
||||
static char *pcibus_get_dev_path(DeviceState *dev);
|
||||
static char *pcibus_get_fw_dev_path(DeviceState *dev);
|
||||
static void pcibus_reset(BusState *qbus);
|
||||
@ -2406,42 +2404,6 @@ uint8_t pci_find_capability(PCIDevice *pdev, uint8_t cap_id)
|
||||
return pci_find_capability_list(pdev, cap_id, NULL);
|
||||
}
|
||||
|
||||
static void pcibus_dev_print(Monitor *mon, DeviceState *dev, int indent)
|
||||
{
|
||||
PCIDevice *d = (PCIDevice *)dev;
|
||||
int class = pci_get_word(d->config + PCI_CLASS_DEVICE);
|
||||
const pci_class_desc *desc = get_class_desc(class);
|
||||
char ctxt[64];
|
||||
PCIIORegion *r;
|
||||
int i;
|
||||
|
||||
if (desc->desc) {
|
||||
snprintf(ctxt, sizeof(ctxt), "%s", desc->desc);
|
||||
} else {
|
||||
snprintf(ctxt, sizeof(ctxt), "Class %04x", class);
|
||||
}
|
||||
|
||||
monitor_printf(mon, "%*sclass %s, addr %02x:%02x.%x, "
|
||||
"pci id %04x:%04x (sub %04x:%04x)\n",
|
||||
indent, "", ctxt, pci_dev_bus_num(d),
|
||||
PCI_SLOT(d->devfn), PCI_FUNC(d->devfn),
|
||||
pci_get_word(d->config + PCI_VENDOR_ID),
|
||||
pci_get_word(d->config + PCI_DEVICE_ID),
|
||||
pci_get_word(d->config + PCI_SUBSYSTEM_VENDOR_ID),
|
||||
pci_get_word(d->config + PCI_SUBSYSTEM_ID));
|
||||
for (i = 0; i < PCI_NUM_REGIONS; i++) {
|
||||
r = &d->io_regions[i];
|
||||
if (!r->size) {
|
||||
continue;
|
||||
}
|
||||
monitor_printf(mon, "%*sbar %d: %s at 0x%"FMT_PCIBUS
|
||||
" [0x%"FMT_PCIBUS"]\n",
|
||||
indent, "",
|
||||
i, r->type & PCI_BASE_ADDRESS_SPACE_IO ? "i/o" : "mem",
|
||||
r->addr, r->addr + r->size - 1);
|
||||
}
|
||||
}
|
||||
|
||||
static char *pci_dev_fw_name(DeviceState *dev, char *buf, int len)
|
||||
{
|
||||
PCIDevice *d = (PCIDevice *)dev;
|
||||
|
Loading…
Reference in New Issue
Block a user