[PATCH v2 0/2] iommu: Allow passing custom allocators to pgtable drivers

Gaurav Kohli quic_gkohli at quicinc.com
Fri Nov 10 02:47:25 PST 2023



On 11/10/2023 3:13 PM, Boris Brezillon wrote:
> Hello,
> 
> This patchset is an attempt at making page table allocation
> customizable. This is useful to some GPU drivers for various reasons:
> 
> - speed-up upcoming page table allocations by managing a pool of free
>    pages
> - batch page table allocation instead of allocating one page at a time
> - pre-reserve pages for page tables needed for map/unmap operations and
>    return the unused page tables to some pool
> 
> The first and last reasons are particularly important for GPU drivers
> wanting to implement asynchronous VM_BIND. Asynchronous VM_BIND requires
> that any page table needed for a map/unmap operation to succeed be
> allocated at VM_BIND job creation time. At the time of the job creation,
> we don't know what the VM will look like when we get to execute the
> map/unmap, and can't guess how many page tables we will need. Because
> of that, we have to over-provision page tables for the worst case
> scenario (page table tree is empty), which means we will allocate/free
> a lot. Having pool a pool of free pages is crucial if we want to
> speed-up VM_BIND requests.
> 
> There might also be other good reasons to want custom allocators, like
> fine-grained memory accounting and resource limiting.
> 
> A real example of how such custom allocators can be used is available
> here[1]. v2 of the Panthor driver is approaching submission, and I
> figured I'd try to upstream the dependencies separately, which is
> why I submit this series now, even though the user of this new API
> will come afterwards. If you'd prefer to have those patches submitted
> along with the Panthor driver, let me know.
> 
> Regards,
> 
> Boris
> 
> [1]https://gitlab.freedesktop.org/panfrost/linux/-/blob/panthor/drivers/gpu/drm/panthor/panthor_mmu.c#L441
> 
> Boris Brezillon (2):
>    iommu: Allow passing custom allocators to pgtable drivers
>    iommu: Extend LPAE page table format to support custom allocators
> 
>   drivers/iommu/io-pgtable-arm.c | 55 ++++++++++++++++++++++++----------
>   drivers/iommu/io-pgtable.c     | 23 ++++++++++++++
>   include/linux/io-pgtable.h     | 31 +++++++++++++++++++
>   3 files changed, 93 insertions(+), 16 deletions(-)
> 

Tested patches and reviewed also, both looks good , please feel free to 
add in case of merging:

Reviewed-by: Gaurav Kohli <quic_gkohli at quicinc.com>
Tested-by: Gaurav Kohli <quic_gkohli at quicinc.com>



More information about the linux-arm-kernel mailing list