hw/pci: Trace IRQ routing on PCI topology
Trace how IRQ are rooted from EP to RC. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-Id: <20230211152239.88106-3-philmd@linaro.org> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
9c1916057a
commit
28566eab2d
@ -279,9 +279,13 @@ static void pci_change_irq_level(PCIDevice *pci_dev, int irq_num, int change)
|
|||||||
{
|
{
|
||||||
PCIBus *bus;
|
PCIBus *bus;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
|
int dev_irq = irq_num;
|
||||||
bus = pci_get_bus(pci_dev);
|
bus = pci_get_bus(pci_dev);
|
||||||
assert(bus->map_irq);
|
assert(bus->map_irq);
|
||||||
irq_num = bus->map_irq(pci_dev, irq_num);
|
irq_num = bus->map_irq(pci_dev, irq_num);
|
||||||
|
trace_pci_route_irq(dev_irq, DEVICE(pci_dev)->canonical_path, irq_num,
|
||||||
|
pci_bus_is_root(bus) ? "root-complex"
|
||||||
|
: DEVICE(bus->parent_dev)->canonical_path);
|
||||||
if (bus->set_irq)
|
if (bus->set_irq)
|
||||||
break;
|
break;
|
||||||
pci_dev = bus->parent_dev;
|
pci_dev = bus->parent_dev;
|
||||||
@ -1600,8 +1604,12 @@ PCIINTxRoute pci_device_route_intx_to_irq(PCIDevice *dev, int pin)
|
|||||||
PCIBus *bus;
|
PCIBus *bus;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
int dev_irq = pin;
|
||||||
bus = pci_get_bus(dev);
|
bus = pci_get_bus(dev);
|
||||||
pin = bus->map_irq(dev, pin);
|
pin = bus->map_irq(dev, pin);
|
||||||
|
trace_pci_route_irq(dev_irq, DEVICE(dev)->canonical_path, pin,
|
||||||
|
pci_bus_is_root(bus) ? "root-complex"
|
||||||
|
: DEVICE(bus->parent_dev)->canonical_path);
|
||||||
dev = bus->parent_dev;
|
dev = bus->parent_dev;
|
||||||
} while (dev);
|
} while (dev);
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
# pci.c
|
# pci.c
|
||||||
pci_update_mappings_del(const char *dev, uint32_t bus, uint32_t slot, uint32_t func, int bar, uint64_t addr, uint64_t size) "%s %02x:%02x.%x %d,0x%"PRIx64"+0x%"PRIx64
|
pci_update_mappings_del(const char *dev, uint32_t bus, uint32_t slot, uint32_t func, int bar, uint64_t addr, uint64_t size) "%s %02x:%02x.%x %d,0x%"PRIx64"+0x%"PRIx64
|
||||||
pci_update_mappings_add(const char *dev, uint32_t bus, uint32_t slot, uint32_t func, int bar, uint64_t addr, uint64_t size) "%s %02x:%02x.%x %d,0x%"PRIx64"+0x%"PRIx64
|
pci_update_mappings_add(const char *dev, uint32_t bus, uint32_t slot, uint32_t func, int bar, uint64_t addr, uint64_t size) "%s %02x:%02x.%x %d,0x%"PRIx64"+0x%"PRIx64
|
||||||
|
pci_route_irq(int dev_irq, const char *dev_path, int parent_irq, const char *parent_path) "IRQ %d @%s -> IRQ %d @%s"
|
||||||
|
|
||||||
# pci_host.c
|
# pci_host.c
|
||||||
pci_cfg_read(const char *dev, uint32_t bus, uint32_t slot, uint32_t func, unsigned offs, unsigned val) "%s %02x:%02x.%x @0x%x -> 0x%x"
|
pci_cfg_read(const char *dev, uint32_t bus, uint32_t slot, uint32_t func, unsigned offs, unsigned val) "%s %02x:%02x.%x @0x%x -> 0x%x"
|
||||||
|
Loading…
Reference in New Issue
Block a user