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);
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;
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;
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;
/* 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);
int irq;
uint64_t *addr;
uint32_t *data;
+ 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_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
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[] = {
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 *
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,
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;