aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/dmar.c
diff options
context:
space:
mode:
authorSuresh Siddha <suresh.b.siddha@intel.com>2009-03-16 20:04:57 -0400
committerH. Peter Anvin <hpa@linux.intel.com>2009-03-17 18:39:58 -0400
commit1531a6a6b81a4e6f9eec9a5608758a6ea14b96e0 (patch)
tree3b1523516192fdd19b286879376b4d3d7c827b0d /drivers/pci/dmar.c
parenteba67e5da6e971993b2899d2cdf459ce77d3dbc5 (diff)
x86, dmar: start with sane state while enabling dma and interrupt-remapping
Impact: cleanup/sanitization Start from a sane state while enabling dma and interrupt-remapping, by clearing the previous recorded faults and disabling previously enabled queued invalidation and interrupt-remapping. Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com> Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Diffstat (limited to 'drivers/pci/dmar.c')
-rw-r--r--drivers/pci/dmar.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/drivers/pci/dmar.c b/drivers/pci/dmar.c
index 932e5e3930fc..f1805002e436 100644
--- a/drivers/pci/dmar.c
+++ b/drivers/pci/dmar.c
@@ -982,7 +982,7 @@ static int dmar_fault_do_one(struct intel_iommu *iommu, int type,
982} 982}
983 983
984#define PRIMARY_FAULT_REG_LEN (16) 984#define PRIMARY_FAULT_REG_LEN (16)
985static irqreturn_t dmar_fault(int irq, void *dev_id) 985irqreturn_t dmar_fault(int irq, void *dev_id)
986{ 986{
987 struct intel_iommu *iommu = dev_id; 987 struct intel_iommu *iommu = dev_id;
988 int reg, fault_index; 988 int reg, fault_index;
@@ -1074,9 +1074,6 @@ int dmar_set_interrupt(struct intel_iommu *iommu)
1074 return 0; 1074 return 0;
1075 } 1075 }
1076 1076
1077 /* Force fault register is cleared */
1078 dmar_fault(irq, iommu);
1079
1080 ret = request_irq(irq, dmar_fault, 0, iommu->name, iommu); 1077 ret = request_irq(irq, dmar_fault, 0, iommu->name, iommu);
1081 if (ret) 1078 if (ret)
1082 printk(KERN_ERR "IOMMU: can't request irq\n"); 1079 printk(KERN_ERR "IOMMU: can't request irq\n");