diff options
-rw-r--r-- | drivers/pci/dmar.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/pci/dmar.c b/drivers/pci/dmar.c index 23a119e6485e..bd2c01674f5e 100644 --- a/drivers/pci/dmar.c +++ b/drivers/pci/dmar.c | |||
@@ -457,6 +457,31 @@ void __init detect_intel_iommu(void) | |||
457 | 457 | ||
458 | #ifdef CONFIG_DMAR | 458 | #ifdef CONFIG_DMAR |
459 | { | 459 | { |
460 | struct acpi_table_dmar *dmar; | ||
461 | /* | ||
462 | * for now we will disable dma-remapping when interrupt | ||
463 | * remapping is enabled. | ||
464 | * When support for queued invalidation for IOTLB invalidation | ||
465 | * is added, we will not need this any more. | ||
466 | */ | ||
467 | dmar = (struct acpi_table_dmar *) dmar_tbl; | ||
468 | if (ret && cpu_has_x2apic && dmar->flags & 0x1) { | ||
469 | printk(KERN_INFO | ||
470 | "Queued invalidation will be enabled to support " | ||
471 | "x2apic and Intr-remapping.\n"); | ||
472 | printk(KERN_INFO | ||
473 | "Disabling IOMMU detection, because of missing " | ||
474 | "queued invalidation support for IOTLB " | ||
475 | "invalidation\n"); | ||
476 | printk(KERN_INFO | ||
477 | "Use \"nox2apic\", if you want to use Intel " | ||
478 | " IOMMU for DMA-remapping and don't care about " | ||
479 | " x2apic support\n"); | ||
480 | |||
481 | dmar_disabled = 1; | ||
482 | return; | ||
483 | } | ||
484 | |||
460 | if (ret && !no_iommu && !iommu_detected && !swiotlb && | 485 | if (ret && !no_iommu && !iommu_detected && !swiotlb && |
461 | !dmar_disabled) | 486 | !dmar_disabled) |
462 | iommu_detected = 1; | 487 | iommu_detected = 1; |