msix/pcib: Pass cpuid to {alloc,release}_msix pcib methods
authorSepherosa Ziehau <sephe@dragonflybsd.org>
Mon, 16 Jan 2012 05:34:47 +0000 (13:34 +0800)
committerSepherosa Ziehau <sephe@dragonflybsd.org>
Mon, 16 Jan 2012 05:34:47 +0000 (13:34 +0800)
sys/bus/pci/i386/mptable_pci.c
sys/bus/pci/i386/pci_bus.c
sys/bus/pci/pci.c
sys/bus/pci/pci_pci.c
sys/bus/pci/pcib_if.m
sys/bus/pci/pcib_private.h
sys/bus/pci/x86_64/mptable_pci.c
sys/bus/pci/x86_64/pci_bus.c
sys/dev/acpica5/acpi_pcib_acpi.c

index d8cbd0d..e7bc4ca 100644 (file)
@@ -114,12 +114,12 @@ mptable_hostb_alloc_msi(device_t pcib, device_t dev, int count, int maxcount,
 }
 
 static int
-mptable_hostb_alloc_msix(device_t pcib, device_t dev, int *irq)
+mptable_hostb_alloc_msix(device_t pcib, device_t dev, int *irq, int cpuid)
 {
        device_t bus;
 
        bus = device_get_parent(pcib);
-       return (PCIB_ALLOC_MSIX(device_get_parent(bus), dev, irq));
+       return (PCIB_ALLOC_MSIX(device_get_parent(bus), dev, irq, cpuid));
 }
 
 static int
index 1602d0a..45714ea 100644 (file)
@@ -86,12 +86,12 @@ legacy_pcib_alloc_msi(device_t pcib, device_t dev, int count, int maxcount,
 }
 
 static int
-legacy_pcib_alloc_msix(device_t pcib, device_t dev, int *irq)
+legacy_pcib_alloc_msix(device_t pcib, device_t dev, int *irq, int cpuid)
 {
        device_t bus;
 
        bus = device_get_parent(pcib);
-       return (PCIB_ALLOC_MSIX(device_get_parent(bus), dev, irq));
+       return (PCIB_ALLOC_MSIX(device_get_parent(bus), dev, irq, cpuid));
 }
 
 static int
index 3911070..afeacfc 100644 (file)
@@ -1517,7 +1517,8 @@ pci_alloc_msix_method(device_t dev, device_t child, int *count)
        max = min(*count, cfg->msix.msix_msgnum);
        for (i = 0; i < max; i++) {
                /* Allocate a message. */
-               error = PCIB_ALLOC_MSIX(device_get_parent(dev), child, &irq);
+               error = PCIB_ALLOC_MSIX(device_get_parent(dev), child, &irq,
+                   -1 /* XXX */);
                if (error)
                        break;
                resource_list_add(&dinfo->resources, SYS_RES_IRQ, i + 1, irq,
@@ -1647,7 +1648,7 @@ pci_release_msix(device_t dev, device_t child)
        /* Release the IRQs. */
        for (i = 0; i < msix->msix_alloc; i++)
                PCIB_RELEASE_MSIX(device_get_parent(dev), child,
-                   msix->msix_vectors[i].mv_irq);
+                   msix->msix_vectors[i].mv_irq, -1 /* XXX */);
        kfree(msix->msix_vectors, M_DEVBUF);
        msix->msix_alloc = 0;
        return (0);
index b3fbfda..c6d6a48 100644 (file)
@@ -620,7 +620,7 @@ pcib_release_msi(device_t pcib, device_t dev, int count, int *irqs, int cpuid)
 
 /* Pass request to alloc an MSI-X message up to the parent bridge. */
 int
-pcib_alloc_msix(device_t pcib, device_t dev, int *irq)
+pcib_alloc_msix(device_t pcib, device_t dev, int *irq, int cpuid)
 {
        struct pcib_softc *sc = device_get_softc(pcib);
        device_t bus;
@@ -628,17 +628,17 @@ pcib_alloc_msix(device_t pcib, device_t dev, int *irq)
        if (sc->flags & PCIB_DISABLE_MSI)
                return (ENXIO);
        bus = device_get_parent(pcib);
-       return (PCIB_ALLOC_MSIX(device_get_parent(bus), dev, irq));
+       return (PCIB_ALLOC_MSIX(device_get_parent(bus), dev, irq, cpuid));
 }
 
 /* Pass request to release an MSI-X message up to the parent bridge. */
 int
-pcib_release_msix(device_t pcib, device_t dev, int irq)
+pcib_release_msix(device_t pcib, device_t dev, int irq, int cpuid)
 {
        device_t bus;
 
        bus = device_get_parent(pcib);
-       return (PCIB_RELEASE_MSIX(device_get_parent(bus), dev, irq));
+       return (PCIB_RELEASE_MSIX(device_get_parent(bus), dev, irq, cpuid));
 }
 
 /* Pass request to map MSI/MSI-X message up to parent bridge. */
index 1c653ee..57fbde0 100644 (file)
@@ -124,6 +124,7 @@ METHOD int alloc_msix {
        device_t        pcib;
        device_t        dev;
        int             *irq;
+       int             cpuid;
 };
 
 #
@@ -133,6 +134,7 @@ METHOD int release_msix {
        device_t        pcib;
        device_t        dev;
        int             irq;
+       int             cpuid;
 };
 
 #
index f996c91..2591723 100644 (file)
@@ -79,8 +79,8 @@ void          pcib_write_config(device_t dev, int b, int s, int f, int reg, uint32_t val
 int            pcib_route_interrupt(device_t pcib, device_t dev, int pin);
 int            pcib_alloc_msi(device_t pcib, device_t dev, int count, int maxcount, int *irqs, int cpuid);
 int            pcib_release_msi(device_t pcib, device_t dev, int count, int *irqs, int cpuid);
-int            pcib_alloc_msix(device_t pcib, device_t dev, int *irq);
-int            pcib_release_msix(device_t pcib, device_t dev, int irq);
+int            pcib_alloc_msix(device_t pcib, device_t dev, int *irq, int cpuid);
+int            pcib_release_msix(device_t pcib, device_t dev, int irq, int cpuid);
 int            pcib_map_msi(device_t pcib, device_t dev, int irq, uint64_t *addr, uint32_t *data, int cpuid);
 
 #endif
index d8cbd0d..e7bc4ca 100644 (file)
@@ -114,12 +114,12 @@ mptable_hostb_alloc_msi(device_t pcib, device_t dev, int count, int maxcount,
 }
 
 static int
-mptable_hostb_alloc_msix(device_t pcib, device_t dev, int *irq)
+mptable_hostb_alloc_msix(device_t pcib, device_t dev, int *irq, int cpuid)
 {
        device_t bus;
 
        bus = device_get_parent(pcib);
-       return (PCIB_ALLOC_MSIX(device_get_parent(bus), dev, irq));
+       return (PCIB_ALLOC_MSIX(device_get_parent(bus), dev, irq, cpuid));
 }
 
 static int
index 906dd97..0170de4 100644 (file)
@@ -88,12 +88,12 @@ legacy_pcib_alloc_msi(device_t pcib, device_t dev, int count, int maxcount,
 }
 
 static int
-legacy_pcib_alloc_msix(device_t pcib, device_t dev, int *irq)
+legacy_pcib_alloc_msix(device_t pcib, device_t dev, int *irq, int cpuid)
 {
        device_t bus;
 
        bus = device_get_parent(pcib);
-       return (PCIB_ALLOC_MSIX(device_get_parent(bus), dev, irq));
+       return (PCIB_ALLOC_MSIX(device_get_parent(bus), dev, irq, cpuid));
 }
 
 static int
index bfb37b9..804d2af 100644 (file)
@@ -78,7 +78,7 @@ static int            acpi_pcib_alloc_msi(device_t pcib, device_t dev,
 static int             acpi_pcib_map_msi(device_t pcib, device_t dev,
                            int irq, uint64_t *addr, uint32_t *data, int cpuid);
 static int             acpi_pcib_alloc_msix(device_t pcib, device_t dev,
-                           int *irq);
+                           int *irq, int cpuid);
 static struct resource *acpi_pcib_acpi_alloc_resource(device_t dev,
                            device_t child, int type, int *rid,
                            u_long start, u_long end, u_long count,
@@ -339,12 +339,12 @@ acpi_pcib_alloc_msi(device_t pcib, device_t dev, int count, int maxcount,
 }
 
 static int
-acpi_pcib_alloc_msix(device_t pcib, device_t dev, int *irq)
+acpi_pcib_alloc_msix(device_t pcib, device_t dev, int *irq, int cpuid)
 {
        device_t bus;
 
        bus = device_get_parent(pcib);
-       return (PCIB_ALLOC_MSIX(device_get_parent(bus), dev, irq));
+       return (PCIB_ALLOC_MSIX(device_get_parent(bus), dev, irq, cpuid));
 }
 
 static int