mirror of
https://github.com/torvalds/linux.git
synced 2026-07-31 11:37:06 +02:00
iommu/riscv: Convert to use struct iommu_pages_list
Change the internal freelist to use struct iommu_pages_list. riscv uses this page list to free page table levels that are replaced with leaf ptes. Reviewed-by: Tomasz Jeznach <tjeznach@rivosinc.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com> Link: https://lore.kernel.org/r/9-v4-c8663abbb606+3f7-iommu_pages_jgg@nvidia.com Signed-off-by: Joerg Roedel <jroedel@suse.de>
This commit is contained in:
parent
13f43d7cf3
commit
d4d5153ad6
|
|
@ -1085,7 +1085,8 @@ static void riscv_iommu_iotlb_sync(struct iommu_domain *iommu_domain,
|
|||
#define _io_pte_entry(pn, prot) ((_PAGE_PFN_MASK & ((pn) << _PAGE_PFN_SHIFT)) | (prot))
|
||||
|
||||
static void riscv_iommu_pte_free(struct riscv_iommu_domain *domain,
|
||||
unsigned long pte, struct list_head *freelist)
|
||||
unsigned long pte,
|
||||
struct iommu_pages_list *freelist)
|
||||
{
|
||||
unsigned long *ptr;
|
||||
int i;
|
||||
|
|
@ -1103,7 +1104,7 @@ static void riscv_iommu_pte_free(struct riscv_iommu_domain *domain,
|
|||
}
|
||||
|
||||
if (freelist)
|
||||
list_add_tail(&virt_to_page(ptr)->lru, freelist);
|
||||
iommu_pages_list_add(freelist, ptr);
|
||||
else
|
||||
iommu_free_pages(ptr);
|
||||
}
|
||||
|
|
@ -1192,7 +1193,7 @@ static int riscv_iommu_map_pages(struct iommu_domain *iommu_domain,
|
|||
unsigned long *ptr;
|
||||
unsigned long pte, old, pte_prot;
|
||||
int rc = 0;
|
||||
LIST_HEAD(freelist);
|
||||
struct iommu_pages_list freelist = IOMMU_PAGES_LIST_INIT(freelist);
|
||||
|
||||
if (!(prot & IOMMU_WRITE))
|
||||
pte_prot = _PAGE_BASE | _PAGE_READ;
|
||||
|
|
@ -1223,7 +1224,7 @@ static int riscv_iommu_map_pages(struct iommu_domain *iommu_domain,
|
|||
|
||||
*mapped = size;
|
||||
|
||||
if (!list_empty(&freelist)) {
|
||||
if (!iommu_pages_list_empty(&freelist)) {
|
||||
/*
|
||||
* In 1.0 spec version, the smallest scope we can use to
|
||||
* invalidate all levels of page table (i.e. leaf and non-leaf)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user