diff options
Diffstat (limited to 'drivers/pci')
| -rw-r--r-- | drivers/pci/dmar.c | 7 | ||||
| -rw-r--r-- | drivers/pci/intr_remapping.c | 1 | ||||
| -rw-r--r-- | drivers/pci/pci-driver.c | 3 |
3 files changed, 7 insertions, 4 deletions
diff --git a/drivers/pci/dmar.c b/drivers/pci/dmar.c index 26c536b51c5a..5f333403c2ea 100644 --- a/drivers/pci/dmar.c +++ b/drivers/pci/dmar.c | |||
| @@ -42,6 +42,7 @@ | |||
| 42 | LIST_HEAD(dmar_drhd_units); | 42 | LIST_HEAD(dmar_drhd_units); |
| 43 | 43 | ||
| 44 | static struct acpi_table_header * __initdata dmar_tbl; | 44 | static struct acpi_table_header * __initdata dmar_tbl; |
| 45 | static acpi_size dmar_tbl_size; | ||
| 45 | 46 | ||
| 46 | static void __init dmar_register_drhd_unit(struct dmar_drhd_unit *drhd) | 47 | static void __init dmar_register_drhd_unit(struct dmar_drhd_unit *drhd) |
| 47 | { | 48 | { |
| @@ -288,8 +289,9 @@ static int __init dmar_table_detect(void) | |||
| 288 | acpi_status status = AE_OK; | 289 | acpi_status status = AE_OK; |
| 289 | 290 | ||
| 290 | /* if we could find DMAR table, then there are DMAR devices */ | 291 | /* if we could find DMAR table, then there are DMAR devices */ |
| 291 | status = acpi_get_table(ACPI_SIG_DMAR, 0, | 292 | status = acpi_get_table_with_size(ACPI_SIG_DMAR, 0, |
| 292 | (struct acpi_table_header **)&dmar_tbl); | 293 | (struct acpi_table_header **)&dmar_tbl, |
| 294 | &dmar_tbl_size); | ||
| 293 | 295 | ||
| 294 | if (ACPI_SUCCESS(status) && !dmar_tbl) { | 296 | if (ACPI_SUCCESS(status) && !dmar_tbl) { |
| 295 | printk (KERN_WARNING PREFIX "Unable to map DMAR\n"); | 297 | printk (KERN_WARNING PREFIX "Unable to map DMAR\n"); |
| @@ -489,6 +491,7 @@ void __init detect_intel_iommu(void) | |||
| 489 | iommu_detected = 1; | 491 | iommu_detected = 1; |
| 490 | #endif | 492 | #endif |
| 491 | } | 493 | } |
| 494 | early_acpi_os_unmap_memory(dmar_tbl, dmar_tbl_size); | ||
| 492 | dmar_tbl = NULL; | 495 | dmar_tbl = NULL; |
| 493 | } | 496 | } |
| 494 | 497 | ||
diff --git a/drivers/pci/intr_remapping.c b/drivers/pci/intr_remapping.c index b721c2fbe8f5..9d07a05d26f1 100644 --- a/drivers/pci/intr_remapping.c +++ b/drivers/pci/intr_remapping.c | |||
| @@ -6,6 +6,7 @@ | |||
| 6 | #include <linux/irq.h> | 6 | #include <linux/irq.h> |
| 7 | #include <asm/io_apic.h> | 7 | #include <asm/io_apic.h> |
| 8 | #include <asm/smp.h> | 8 | #include <asm/smp.h> |
| 9 | #include <asm/cpu.h> | ||
| 9 | #include <linux/intel-iommu.h> | 10 | #include <linux/intel-iommu.h> |
| 10 | #include "intr_remapping.h" | 11 | #include "intr_remapping.h" |
| 11 | 12 | ||
diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c index 93eac1423585..b522f883d674 100644 --- a/drivers/pci/pci-driver.c +++ b/drivers/pci/pci-driver.c | |||
| @@ -212,10 +212,9 @@ static int pci_call_probe(struct pci_driver *drv, struct pci_dev *dev, | |||
| 212 | node = dev_to_node(&dev->dev); | 212 | node = dev_to_node(&dev->dev); |
| 213 | if (node >= 0) { | 213 | if (node >= 0) { |
| 214 | int cpu; | 214 | int cpu; |
| 215 | node_to_cpumask_ptr(nodecpumask, node); | ||
| 216 | 215 | ||
| 217 | get_online_cpus(); | 216 | get_online_cpus(); |
| 218 | cpu = cpumask_any_and(nodecpumask, cpu_online_mask); | 217 | cpu = cpumask_any_and(cpumask_of_node(node), cpu_online_mask); |
| 219 | if (cpu < nr_cpu_ids) | 218 | if (cpu < nr_cpu_ids) |
| 220 | error = work_on_cpu(cpu, local_pci_probe, &ddi); | 219 | error = work_on_cpu(cpu, local_pci_probe, &ddi); |
| 221 | else | 220 | else |
