Messages in this thread Patch in this message | | | Subject | Re: "iommu/vt-d: Delegate DMA domain to generic iommu" series breaks megaraid_sas | From | Lu Baolu <> | Date | Tue, 11 Jun 2019 09:41:18 +0800 |
| |
Ah, good catch!
The device failed to be attached by a DMA domain. Can you please try the attached fix patch?
[ 101.885468] pci 0000:06:00.0: DMAR: Device is ineligible for IOMMU domain attach due to platform RMRR requirement. Contact your platform vendor. [ 101.900801] pci 0000:06:00.0: Failed to add to iommu group 23: -1
Best regards, Baolu
On 6/10/19 10:54 PM, Qian Cai wrote: > On Mon, 2019-06-10 at 09:44 -0400, Qian Cai wrote: >> On Sun, 2019-06-09 at 10:43 +0800, Lu Baolu wrote: >>> Hi Qian, >>> >>> I just posted some fix patches. I cc'ed them in your email inbox as >>> well. Can you please check whether they happen to fix your issue? >>> If not, do you mind posting more debug messages? >> >> Unfortunately, it does not work. Here is the dmesg. >> >> https://raw.githubusercontent.com/cailca/tmp/master/dmesg?token=AMC35QKPIZBYUM >> FUQKLW4ZC47ZPIK > > This one should be good to view. > > https://cailca.github.io/files/dmesg.txt > From ff0b1ae0d8fde0655392fde3a1090b03a7a35394 Mon Sep 17 00:00:00 2001 From: Lu Baolu <baolu.lu@linux.intel.com> Date: Tue, 11 Jun 2019 09:29:16 +0800 Subject: [PATCH 1/1] 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 <baolu.lu@linux.intel.com> --- drivers/iommu/intel-iommu.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c index 1dcb6365ddc4..38232220f6ff 100644 --- a/drivers/iommu/intel-iommu.c +++ b/drivers/iommu/intel-iommu.c @@ -5281,7 +5281,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; } -- 2.17.1
| |