[Qemu-devel] [PATCH] hw/pci-host/gpex: Improve INTX to gsi routing error checking

Eric Auger posted 1 patch 6 years, 5 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/1508776211-22175-1-git-send-email-eric.auger@redhat.com
Test checkpatch passed
Test docker passed
Test s390x passed
hw/pci-host/gpex.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
[Qemu-devel] [PATCH] hw/pci-host/gpex: Improve INTX to gsi routing error checking
Posted by Eric Auger 6 years, 5 months ago
We exposed gpex_set_irq_num() for machines to set the INTx to
GSI routing. However if the machine forgets to call that
function we currently do not check the association was properly
done. Let's initialize gsi values to -1 and if this value is
found in gpex_route_intx_pin_to_irq, set the routing mode as
disabled.

Signed-off-by: Eric Auger <eric.auger@redhat.com>
---
 hw/pci-host/gpex.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/hw/pci-host/gpex.c b/hw/pci-host/gpex.c
index 4090793..edf305b 100644
--- a/hw/pci-host/gpex.c
+++ b/hw/pci-host/gpex.c
@@ -57,9 +57,14 @@ static PCIINTxRoute gpex_route_intx_pin_to_irq(void *opaque, int pin)
 {
     PCIINTxRoute route;
     GPEXHost *s = opaque;
+    int gsi = s->irq_num[pin];
 
-    route.mode = PCI_INTX_ENABLED;
-    route.irq = s->irq_num[pin];
+    route.irq = gsi;
+    if (gsi < 0) {
+        route.mode = PCI_INTX_DISABLED;
+    } else {
+        route.mode = PCI_INTX_ENABLED;
+    }
 
     return route;
 }
@@ -81,6 +86,7 @@ static void gpex_host_realize(DeviceState *dev, Error **errp)
     sysbus_init_mmio(sbd, &s->io_ioport);
     for (i = 0; i < GPEX_NUM_IRQS; i++) {
         sysbus_init_irq(sbd, &s->irq[i]);
+        s->irq_num[i] = -1;
     }
 
     pci->bus = pci_register_bus(dev, "pcie.0", gpex_set_irq,
-- 
2.5.5


Re: [Qemu-devel] [PATCH] hw/pci-host/gpex: Improve INTX to gsi routing error checking
Posted by Peter Maydell 6 years, 4 months ago
On 23 October 2017 at 17:30, Eric Auger <eric.auger@redhat.com> wrote:
> We exposed gpex_set_irq_num() for machines to set the INTx to
> GSI routing. However if the machine forgets to call that
> function we currently do not check the association was properly
> done. Let's initialize gsi values to -1 and if this value is
> found in gpex_route_intx_pin_to_irq, set the routing mode as
> disabled.
>
> Signed-off-by: Eric Auger <eric.auger@redhat.com>
> ---



Applied to target-arm.next, thanks.

-- PMM