int reenable_intr_remapping(int eim) { struct dmar_drhd_unit *drhd; int setup = 0; struct intel_iommu *iommu = NULL; for_each_iommu(iommu, drhd) if (iommu->qi) dmar_reenable_qi(iommu); /* * Setup Interrupt-remapping for all the DRHD's now. */ for_each_iommu(iommu, drhd) { if (!ecap_ir_support(iommu->ecap)) continue; /* Set up interrupt remapping for iommu.*/ iommu_set_intr_remapping(iommu, eim); setup = 1; } if (!setup) goto error; return 0; error: /* * handle error condition gracefully here! */ return -1; }
int reenable_intr_remapping(int eim) { struct dmar_drhd_unit *drhd; int setup = 0; struct intel_iommu *iommu = NULL; for_each_iommu(iommu, drhd) if (iommu->qi) dmar_reenable_qi(iommu); for_each_iommu(iommu, drhd) { if (!ecap_ir_support(iommu->ecap)) continue; iommu_set_intr_remapping(iommu, eim); setup = 1; } if (!setup) goto error; return 0; error: return -1; }