diff options
Diffstat (limited to 'drivers/iommu/intel/pasid.c')
| -rw-r--r-- | drivers/iommu/intel/pasid.c | 18 | 
1 files changed, 9 insertions, 9 deletions
diff --git a/drivers/iommu/intel/pasid.c b/drivers/iommu/intel/pasid.c index 11f0b856d74c..abce19e2ad6f 100644 --- a/drivers/iommu/intel/pasid.c +++ b/drivers/iommu/intel/pasid.c @@ -20,6 +20,7 @@  #include "iommu.h"  #include "pasid.h" +#include "../iommu-pages.h"  /*   * Intel IOMMU system wide PASID name space: @@ -38,7 +39,7 @@ int intel_pasid_alloc_table(struct device *dev)  {  	struct device_domain_info *info;  	struct pasid_table *pasid_table; -	struct page *pages; +	struct pasid_dir_entry *dir;  	u32 max_pasid = 0;  	int order, size; @@ -59,14 +60,13 @@ int intel_pasid_alloc_table(struct device *dev)  	size = max_pasid >> (PASID_PDE_SHIFT - 3);  	order = size ? get_order(size) : 0; -	pages = alloc_pages_node(info->iommu->node, -				 GFP_KERNEL | __GFP_ZERO, order); -	if (!pages) { +	dir = iommu_alloc_pages_node(info->iommu->node, GFP_KERNEL, order); +	if (!dir) {  		kfree(pasid_table);  		return -ENOMEM;  	} -	pasid_table->table = page_address(pages); +	pasid_table->table = dir;  	pasid_table->order = order;  	pasid_table->max_pasid = 1 << (order + PAGE_SHIFT + 3);  	info->pasid_table = pasid_table; @@ -97,10 +97,10 @@ void intel_pasid_free_table(struct device *dev)  	max_pde = pasid_table->max_pasid >> PASID_PDE_SHIFT;  	for (i = 0; i < max_pde; i++) {  		table = get_pasid_table_from_pde(&dir[i]); -		free_pgtable_page(table); +		iommu_free_page(table);  	} -	free_pages((unsigned long)pasid_table->table, pasid_table->order); +	iommu_free_pages(pasid_table->table, pasid_table->order);  	kfree(pasid_table);  } @@ -146,7 +146,7 @@ static struct pasid_entry *intel_pasid_get_entry(struct device *dev, u32 pasid)  retry:  	entries = get_pasid_table_from_pde(&dir[dir_index]);  	if (!entries) { -		entries = alloc_pgtable_page(info->iommu->node, GFP_ATOMIC); +		entries = iommu_alloc_page_node(info->iommu->node, GFP_ATOMIC);  		if (!entries)  			return NULL; @@ -158,7 +158,7 @@ retry:  		 */  		if (cmpxchg64(&dir[dir_index].val, 0ULL,  			      (u64)virt_to_phys(entries) | PASID_PTE_PRESENT)) { -			free_pgtable_page(entries); +			iommu_free_page(entries);  			goto retry;  		}  		if (!ecap_coherent(info->iommu->ecap)) {  |