diff options
Diffstat (limited to 'drivers/iommu')
| -rw-r--r-- | drivers/iommu/amd_iommu_init.c | 3 | ||||
| -rw-r--r-- | drivers/iommu/intel-iommu.c | 2 | ||||
| -rw-r--r-- | drivers/iommu/intel-svm.c | 2 | ||||
| -rw-r--r-- | drivers/iommu/ipmmu-vmsa.c | 3 | 
4 files changed, 7 insertions, 3 deletions
diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c index bb2cd29e1658..d8f7000a466a 100644 --- a/drivers/iommu/amd_iommu_init.c +++ b/drivers/iommu/amd_iommu_init.c @@ -797,7 +797,8 @@ static int iommu_init_ga_log(struct amd_iommu *iommu)  	entry = iommu_virt_to_phys(iommu->ga_log) | GA_LOG_SIZE_512;  	memcpy_toio(iommu->mmio_base + MMIO_GA_LOG_BASE_OFFSET,  		    &entry, sizeof(entry)); -	entry = (iommu_virt_to_phys(iommu->ga_log) & 0xFFFFFFFFFFFFFULL) & ~7ULL; +	entry = (iommu_virt_to_phys(iommu->ga_log_tail) & +		 (BIT_ULL(52)-1)) & ~7ULL;  	memcpy_toio(iommu->mmio_base + MMIO_GA_LOG_TAIL_OFFSET,  		    &entry, sizeof(entry));  	writel(0x00, iommu->mmio_base + MMIO_GA_HEAD_OFFSET); diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c index f3ccf025108b..41a4b8808802 100644 --- a/drivers/iommu/intel-iommu.c +++ b/drivers/iommu/intel-iommu.c @@ -3075,7 +3075,7 @@ static int copy_context_table(struct intel_iommu *iommu,  			}  			if (old_ce) -				iounmap(old_ce); +				memunmap(old_ce);  			ret = 0;  			if (devfn < 0x80) diff --git a/drivers/iommu/intel-svm.c b/drivers/iommu/intel-svm.c index db301efe126d..887150907526 100644 --- a/drivers/iommu/intel-svm.c +++ b/drivers/iommu/intel-svm.c @@ -595,7 +595,7 @@ static irqreturn_t prq_event_thread(int irq, void *d)  			pr_err("%s: Page request without PASID: %08llx %08llx\n",  			       iommu->name, ((unsigned long long *)req)[0],  			       ((unsigned long long *)req)[1]); -			goto bad_req; +			goto no_pasid;  		}  		if (!svm || svm->pasid != req->pasid) { diff --git a/drivers/iommu/ipmmu-vmsa.c b/drivers/iommu/ipmmu-vmsa.c index b98a03189580..ddf3a492e1d5 100644 --- a/drivers/iommu/ipmmu-vmsa.c +++ b/drivers/iommu/ipmmu-vmsa.c @@ -498,6 +498,9 @@ static int ipmmu_domain_init_context(struct ipmmu_vmsa_domain *domain)  static void ipmmu_domain_destroy_context(struct ipmmu_vmsa_domain *domain)  { +	if (!domain->mmu) +		return; +  	/*  	 * Disable the context. Flush the TLB as required when modifying the  	 * context registers.  | 
