msi/pci: Pass cpuid to pcib_map_msi method
authorSepherosa Ziehau <sephe@dragonflybsd.org>
Sun, 25 Dec 2011 10:38:25 +0000 (18:38 +0800)
committerSepherosa Ziehau <sephe@dragonflybsd.org>
Tue, 27 Dec 2011 05:44:42 +0000 (13:44 +0800)
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 360534b..5739518 100644 (file)
@@ -1957,7 +1957,7 @@ pci_remap_msi_irq(device_t dev, u_int irq)
                            i + 1);
                        if (rle->start == irq) {
                                error = PCIB_MAP_MSI(device_get_parent(bus),
-                                   dev, irq, &addr, &data);
+                                   dev, irq, &addr, &data, -1 /* XXX */);
                                if (error)
                                        return (error);
                                pci_disable_msi(dev);
@@ -1980,7 +1980,7 @@ pci_remap_msi_irq(device_t dev, u_int irq)
                        mv = &cfg->msix.msix_vectors[i];
                        if (mv->mv_irq == irq) {
                                error = PCIB_MAP_MSI(device_get_parent(bus),
-                                   dev, irq, &addr, &data);
+                                   dev, irq, &addr, &data, -1 /* XXX */);
                                if (error)
                                        return (error);
                                mv->mv_address = addr;
@@ -3199,7 +3199,8 @@ pci_setup_intr(device_t dev, device_t child, struct resource *irq, int flags,
                                KASSERT(dinfo->cfg.msi.msi_handlers == 0,
                            ("MSI has handlers, but vectors not mapped"));
                                error = PCIB_MAP_MSI(device_get_parent(dev),
-                                   child, rman_get_start(irq), &addr, &data);
+                                   child, rman_get_start(irq), &addr, &data,
+                                   rman_get_cpuid(irq));
                                if (error)
                                        goto bad;
                                dinfo->cfg.msi.msi_addr = addr;
@@ -3221,7 +3222,8 @@ pci_setup_intr(device_t dev, device_t child, struct resource *irq, int flags,
                                KASSERT(mte->mte_handlers == 0,
                    ("MSI-X table entry has handlers, but vector not mapped"));
                                error = PCIB_MAP_MSI(device_get_parent(dev),
-                                   child, rman_get_start(irq), &addr, &data);
+                                   child, rman_get_start(irq), &addr, &data,
+                                   rman_get_cpuid(irq));
                                if (error)
                                        goto bad;
                                mv->mv_address = addr;
index a10baa8..b3fbfda 100644 (file)
@@ -644,13 +644,14 @@ pcib_release_msix(device_t pcib, device_t dev, int irq)
 /* Pass request to map MSI/MSI-X message up to parent bridge. */
 int
 pcib_map_msi(device_t pcib, device_t dev, int irq, uint64_t *addr,
-    uint32_t *data)
+    uint32_t *data, int cpuid)
 {
        device_t bus;
        int error;
 
        bus = device_get_parent(pcib);
-       error = PCIB_MAP_MSI(device_get_parent(bus), dev, irq, addr, data);
+       error = PCIB_MAP_MSI(device_get_parent(bus), dev, irq, addr, data,
+           cpuid);
        if (error)
                return (error);
 
index f2e1e20..1c653ee 100644 (file)
@@ -145,4 +145,5 @@ METHOD int map_msi {
        int             irq;
        uint64_t        *addr;
        uint32_t        *data;
+       int             cpuid;
 };
index aab5807..f996c91 100644 (file)
@@ -81,6 +81,6 @@ int           pcib_alloc_msi(device_t pcib, device_t dev, int count, int maxcount, int *i
 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_map_msi(device_t pcib, device_t dev, int irq, uint64_t *addr, uint32_t *data);
+int            pcib_map_msi(device_t pcib, device_t dev, int irq, uint64_t *addr, uint32_t *data, int cpuid);
 
 #endif
index c24f8ff..d8cbd0d 100644 (file)
@@ -124,12 +124,13 @@ mptable_hostb_alloc_msix(device_t pcib, device_t dev, int *irq)
 
 static int
 mptable_hostb_map_msi(device_t pcib, device_t dev, int irq, uint64_t *addr,
-    uint32_t *data)
+    uint32_t *data, int cpuid)
 {
        device_t bus;
 
        bus = device_get_parent(pcib);
-       return (PCIB_MAP_MSI(device_get_parent(bus), dev, irq, addr, data));
+       return (PCIB_MAP_MSI(device_get_parent(bus), dev, irq, addr, data,
+           cpuid));
 }
 
 static device_method_t mptable_hostb_methods[] = {
index 88279e3..906dd97 100644 (file)
@@ -98,12 +98,13 @@ legacy_pcib_alloc_msix(device_t pcib, device_t dev, int *irq)
 
 static int
 legacy_pcib_map_msi(device_t pcib, device_t dev, int irq, uint64_t *addr,
-    uint32_t *data)
+    uint32_t *data, int cpuid)
 {
        device_t bus;
 
        bus = device_get_parent(pcib);
-       return (PCIB_MAP_MSI(device_get_parent(bus), dev, irq, addr, data));
+       return (PCIB_MAP_MSI(device_get_parent(bus), dev, irq, addr, data,
+           cpuid));
 }
 
 static const char *
index f9a1e58..bfb37b9 100644 (file)
@@ -76,7 +76,7 @@ static int            acpi_pcib_acpi_route_interrupt(device_t pcib,
 static int             acpi_pcib_alloc_msi(device_t pcib, device_t dev,
                            int count, int maxcount, int *irqs, int cpuid);
 static int             acpi_pcib_map_msi(device_t pcib, device_t dev,
-                           int irq, uint64_t *addr, uint32_t *data);
+                           int irq, uint64_t *addr, uint32_t *data, int cpuid);
 static int             acpi_pcib_alloc_msix(device_t pcib, device_t dev,
                            int *irq);
 static struct resource *acpi_pcib_acpi_alloc_resource(device_t dev,
@@ -349,12 +349,13 @@ acpi_pcib_alloc_msix(device_t pcib, device_t dev, int *irq)
 
 static int
 acpi_pcib_map_msi(device_t pcib, device_t dev, int irq, uint64_t *addr,
-    uint32_t *data)
+    uint32_t *data, int cpuid)
 {
        device_t bus;
 
        bus = device_get_parent(pcib);
-       return (PCIB_MAP_MSI(device_get_parent(bus), dev, irq, addr, data));
+       return (PCIB_MAP_MSI(device_get_parent(bus), dev, irq, addr, data,
+           cpuid));
 }
 
 static u_long acpi_host_mem_start = 0x80000000;