diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-23 00:38:22 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-23 00:38:22 -0400 |
commit | 687d680985b1438360a9ba470ece8b57cd205c3b (patch) | |
tree | ae253608531e5c3e823600974c610e722e7de759 /drivers/pci/intr_remapping.c | |
parent | 1053414068bad659479e6efa62a67403b8b1ec0a (diff) | |
parent | 008fe148cb0fb51d266baabe2c09997b21cf90c6 (diff) |
Merge git://git.infradead.org/~dwmw2/iommu-2.6.31
* git://git.infradead.org/~dwmw2/iommu-2.6.31:
intel-iommu: Fix one last ia64 build problem in Pass Through Support
VT-d: support the device IOTLB
VT-d: cleanup iommu_flush_iotlb_psi and flush_unmaps
VT-d: add device IOTLB invalidation support
VT-d: parse ATSR in DMA Remapping Reporting Structure
PCI: handle Virtual Function ATS enabling
PCI: support the ATS capability
intel-iommu: dmar_set_interrupt return error value
intel-iommu: Tidy up iommu->gcmd handling
intel-iommu: Fix tiny theoretical race in write-buffer flush.
intel-iommu: Clean up handling of "caching mode" vs. IOTLB flushing.
intel-iommu: Clean up handling of "caching mode" vs. context flushing.
VT-d: fix invalid domain id for KVM context flush
Fix !CONFIG_DMAR build failure introduced by Intel IOMMU Pass Through Support
Intel IOMMU Pass Through Support
Fix up trivial conflicts in drivers/pci/{intel-iommu.c,intr_remapping.c}
Diffstat (limited to 'drivers/pci/intr_remapping.c')
-rw-r--r-- | drivers/pci/intr_remapping.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/drivers/pci/intr_remapping.c b/drivers/pci/intr_remapping.c index 3a0cb0bb0593..1e83c8c5f985 100644 --- a/drivers/pci/intr_remapping.c +++ b/drivers/pci/intr_remapping.c | |||
@@ -409,7 +409,7 @@ int free_irte(int irq) | |||
409 | static void iommu_set_intr_remapping(struct intel_iommu *iommu, int mode) | 409 | static void iommu_set_intr_remapping(struct intel_iommu *iommu, int mode) |
410 | { | 410 | { |
411 | u64 addr; | 411 | u64 addr; |
412 | u32 cmd, sts; | 412 | u32 sts; |
413 | unsigned long flags; | 413 | unsigned long flags; |
414 | 414 | ||
415 | addr = virt_to_phys((void *)iommu->ir_table->base); | 415 | addr = virt_to_phys((void *)iommu->ir_table->base); |
@@ -420,9 +420,8 @@ static void iommu_set_intr_remapping(struct intel_iommu *iommu, int mode) | |||
420 | (addr) | IR_X2APIC_MODE(mode) | INTR_REMAP_TABLE_REG_SIZE); | 420 | (addr) | IR_X2APIC_MODE(mode) | INTR_REMAP_TABLE_REG_SIZE); |
421 | 421 | ||
422 | /* Set interrupt-remapping table pointer */ | 422 | /* Set interrupt-remapping table pointer */ |
423 | cmd = iommu->gcmd | DMA_GCMD_SIRTP; | ||
424 | iommu->gcmd |= DMA_GCMD_SIRTP; | 423 | iommu->gcmd |= DMA_GCMD_SIRTP; |
425 | writel(cmd, iommu->reg + DMAR_GCMD_REG); | 424 | writel(iommu->gcmd, iommu->reg + DMAR_GCMD_REG); |
426 | 425 | ||
427 | IOMMU_WAIT_OP(iommu, DMAR_GSTS_REG, | 426 | IOMMU_WAIT_OP(iommu, DMAR_GSTS_REG, |
428 | readl, (sts & DMA_GSTS_IRTPS), sts); | 427 | readl, (sts & DMA_GSTS_IRTPS), sts); |
@@ -437,9 +436,8 @@ static void iommu_set_intr_remapping(struct intel_iommu *iommu, int mode) | |||
437 | spin_lock_irqsave(&iommu->register_lock, flags); | 436 | spin_lock_irqsave(&iommu->register_lock, flags); |
438 | 437 | ||
439 | /* Enable interrupt-remapping */ | 438 | /* Enable interrupt-remapping */ |
440 | cmd = iommu->gcmd | DMA_GCMD_IRE; | ||
441 | iommu->gcmd |= DMA_GCMD_IRE; | 439 | iommu->gcmd |= DMA_GCMD_IRE; |
442 | writel(cmd, iommu->reg + DMAR_GCMD_REG); | 440 | writel(iommu->gcmd, iommu->reg + DMAR_GCMD_REG); |
443 | 441 | ||
444 | IOMMU_WAIT_OP(iommu, DMAR_GSTS_REG, | 442 | IOMMU_WAIT_OP(iommu, DMAR_GSTS_REG, |
445 | readl, (sts & DMA_GSTS_IRES), sts); | 443 | readl, (sts & DMA_GSTS_IRES), sts); |