linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/2] iommu: Allow passing custom allocators to pgtable drivers
@ 2023-11-24 14:24 Boris Brezillon
  2023-11-24 14:24 ` [PATCH v3 1/2] " Boris Brezillon
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Boris Brezillon @ 2023-11-24 14:24 UTC (permalink / raw)
  To: Joerg Roedel, iommu, Will Deacon, Robin Murphy, linux-arm-kernel
  Cc: Rob Clark, Gaurav Kohli, Steven Price, Jason Gunthorpe, kernel,
	Boris Brezillon

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.

Regards,

Boris

Changes in v3:
- Add Robin's R-b
- Cosmetic changes
- Improve the allocator doc
- Stop passing GFP_ZERO to custom allocators

Changes in v2:
- Add Steven's R-b
- Expand on possible use-cases for custom allocators
- Add a caps field to io_pgtable_init_fns

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     | 34 +++++++++++++++++++++
 3 files changed, 96 insertions(+), 16 deletions(-)

-- 
2.42.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2023-11-27 13:37 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-11-24 14:24 [PATCH v3 0/2] iommu: Allow passing custom allocators to pgtable drivers Boris Brezillon
2023-11-24 14:24 ` [PATCH v3 1/2] " Boris Brezillon
2023-11-24 14:24 ` [PATCH v3 2/2] iommu: Extend LPAE page table format to support custom allocators Boris Brezillon
2023-11-27 10:10 ` [PATCH v3 0/2] iommu: Allow passing custom allocators to pgtable drivers Joerg Roedel
2023-11-27 13:35   ` Gaurav Kohli

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).