Commit 12fcf49c authored by Peter Xu's avatar Peter Xu Committed by Michael S. Tsirkin
Browse files

pci: Display PCI IRQ pin in "info pci"



Sometimes it would be good to be able to read the pin number along
with the IRQ number allocated.  Since we'll dump the IRQ number, no
reason to not dump the pin information.  For example, the vfio-pci
device will overwrite the pin with the hardware pin number.  It would
be nice to know the pin number of one assigned device from QMP/HMP.

CC: Dr. David Alan Gilbert <dgilbert@redhat.com>
CC: Alex Williamson <alex.williamson@redhat.com>
CC: Michael S. Tsirkin <mst@redhat.com>
CC: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
CC: Julia Suvorova <jusual@redhat.com>
CC: Markus Armbruster <armbru@redhat.com>
Signed-off-by: default avatarPeter Xu <peterx@redhat.com>
Message-Id: <20200317195908.283800-1-peterx@redhat.com>
Reviewed-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Reviewed-by: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
Acked-by: default avatarDr. David Alan Gilbert <dgilbert@redhat.com>
Acked-by: default avatarMarkus Armbruster <armbru@redhat.com>
parent 62925fd2
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1776,6 +1776,7 @@ static PciDeviceInfo *qmp_query_pci_device(PCIDevice *dev, PCIBus *bus,
    info->regions = qmp_query_pci_regions(dev);
    info->qdev_id = g_strdup(dev->qdev.id ? dev->qdev.id : "");

    info->irq_pin = dev->config[PCI_INTERRUPT_PIN];
    if (dev->config[PCI_INTERRUPT_PIN] != 0) {
        info->has_irq = true;
        info->irq = dev->config[PCI_INTERRUPT_LINE];
+2 −1
Original line number Diff line number Diff line
@@ -688,7 +688,8 @@ static void hmp_info_pci_device(Monitor *mon, const PciDeviceInfo *dev)
    }

    if (dev->has_irq) {
        monitor_printf(mon, "      IRQ %" PRId64 ".\n", dev->irq);
        monitor_printf(mon, "      IRQ %" PRId64 ", pin %c\n",
                       dev->irq, (char)('A' + dev->irq_pin - 1));
    }

    if (dev->has_pci_bridge) {
+4 −2
Original line number Diff line number Diff line
@@ -403,6 +403,8 @@
#
# @irq: if an IRQ is assigned to the device, the IRQ number
#
# @irq_pin: the IRQ pin, zero means no IRQ (since 5.1)
#
# @qdev_id: the device name of the PCI device
#
# @pci_bridge: if the device is a PCI bridge, the bridge information
@@ -417,8 +419,8 @@
{ 'struct': 'PciDeviceInfo',
  'data': {'bus': 'int', 'slot': 'int', 'function': 'int',
           'class_info': 'PciDeviceClass', 'id': 'PciDeviceId',
           '*irq': 'int', 'qdev_id': 'str', '*pci_bridge': 'PciBridgeInfo',
           'regions': ['PciMemoryRegion']} }
           '*irq': 'int', 'irq_pin': 'int', 'qdev_id': 'str',
           '*pci_bridge': 'PciBridgeInfo', 'regions': ['PciMemoryRegion'] }}

##
# @PciInfo: