| From 8da101c15e63f302e366c8f2a76d79ec0e7a28eb Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Sat, 20 Mar 2021 10:54:11 +0800 |
| Subject: iommu/vt-d: Report the right page fault address |
| |
| From: Lu Baolu <baolu.lu@linux.intel.com> |
| |
| [ Upstream commit 03d205094af45bca4f8e0498c461a893aa3ec6d9 ] |
| |
| The Address field of the Page Request Descriptor only keeps bit [63:12] |
| of the offending address. Convert it to a full address before reporting |
| it to device drivers. |
| |
| Fixes: eb8d93ea3c1d3 ("iommu/vt-d: Report page request faults for guest SVA") |
| Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com> |
| Link: https://lore.kernel.org/r/20210320025415.641201-2-baolu.lu@linux.intel.com |
| Signed-off-by: Joerg Roedel <jroedel@suse.de> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/iommu/intel/svm.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/iommu/intel/svm.c b/drivers/iommu/intel/svm.c |
| index ac86509a0a73..4260bb089b2c 100644 |
| --- a/drivers/iommu/intel/svm.c |
| +++ b/drivers/iommu/intel/svm.c |
| @@ -899,7 +899,7 @@ intel_svm_prq_report(struct device *dev, struct page_req_dsc *desc) |
| /* Fill in event data for device specific processing */ |
| memset(&event, 0, sizeof(struct iommu_fault_event)); |
| event.fault.type = IOMMU_FAULT_PAGE_REQ; |
| - event.fault.prm.addr = desc->addr; |
| + event.fault.prm.addr = (u64)desc->addr << VTD_PAGE_SHIFT; |
| event.fault.prm.pasid = desc->pasid; |
| event.fault.prm.grpid = desc->prg_index; |
| event.fault.prm.perm = prq_to_iommu_prot(desc); |
| -- |
| 2.30.2 |
| |