From: Suresh Siddha Date: Wed, 1 Dec 2010 06:22:29 +0000 (-0800) Subject: x86, vt-d: Handle previous faults after enabling fault handling X-Git-Tag: firefly_0821_release~9833^2~71^2^2~54 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=5d3283a41c7cc33304eb90756f6f927d212fe0bf;p=firefly-linux-kernel-4.4.55.git x86, vt-d: Handle previous faults after enabling fault handling commit 7f99d946e71e71d484b7543b49e990508e70d0c0 upstream. Fault handling is getting enabled after enabling the interrupt-remapping (as the success of interrupt-remapping can affect the apic mode and hence the fault handling mode). Hence there can potentially be some faults between the window of enabling interrupt-remapping in the vt-d and the fault-handling of the vt-d units. Handle any previous faults after enabling the vt-d fault handling. For v2.6.38 cleanup, need to check if we can remove the dmar_fault() in the enable_intr_remapping() and see if we can enable fault handling along with enabling intr-remapping. Signed-off-by: Suresh Siddha LKML-Reference: <20101201062244.630417138@intel.com> Acked-by: Chris Wright Signed-off-by: H. Peter Anvin Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/pci/dmar.c b/drivers/pci/dmar.c index 0a19708074c2..a286959db67e 100644 --- a/drivers/pci/dmar.c +++ b/drivers/pci/dmar.c @@ -1414,6 +1414,11 @@ int __init enable_drhd_fault_handling(void) (unsigned long long)drhd->reg_base_addr, ret); return -1; } + + /* + * Clear any previous faults. + */ + dmar_fault(iommu->irq, iommu); } return 0;