From: Lu Baolu Date: Wed, 12 Jun 2019 00:28:48 +0000 (+0800) Subject: iommu/vt-d: Allow DMA domain attaching to rmrr locked device X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=5679582c2fad11733ba65c12d127f9d703390e55;p=openwrt%2Fstaging%2Fblogic.git iommu/vt-d: Allow DMA domain attaching to rmrr locked device We don't allow a device to be assigned to user level when it is locked by any RMRR's. Hence, intel_iommu_attach_device() will return error if a domain of type IOMMU_DOMAIN_UNMANAGED is about to attach to a device locked by rmrr. But this doesn't apply to a domain of type other than IOMMU_DOMAIN_UNMANAGED. This adds a check to fix this. Fixes: fa954e6831789 ("iommu/vt-d: Delegate the dma domain to upper layer") Signed-off-by: Lu Baolu Reported-and-tested-by: Qian Cai Signed-off-by: Joerg Roedel --- diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c index 03946dc4941f..c31fbe5790c7 100644 --- a/drivers/iommu/intel-iommu.c +++ b/drivers/iommu/intel-iommu.c @@ -5167,7 +5167,8 @@ static int intel_iommu_attach_device(struct iommu_domain *domain, { int ret; - if (device_is_rmrr_locked(dev)) { + if (domain->type == IOMMU_DOMAIN_UNMANAGED && + device_is_rmrr_locked(dev)) { dev_warn(dev, "Device is ineligible for IOMMU domain attach due to platform RMRR requirement. Contact your platform vendor.\n"); return -EPERM; }