On 2025/2/26 3:39, Jason Gunthorpe wrote:
This brings the iommu page table allocator into the modern world of having its own private page descriptor and not re-using fields from struct page for its own purpose. It follows the basic pattern of struct ptdesc which did this transformation for the CPU page table allocator. Currently iommu-pages is pretty basic so this isn't a huge benefit, however I see a coming need for features that CPU allocator has, like sub PAGE_SIZE allocations, and RCU freeing. This provides the base infrastructure to implement those cleanly.
I understand that this is intended as the start point of having private descriptors for folios allocated to iommu drivers. But I don't believe this is currently the case after this patch, as the underlying memory remains a struct folio. This patch merely uses an iommu-pages specific structure pointer to reference it. Could you please elaborate a bit on the future plans that would make it a true implementation of iommu private page descriptors?
Remove numa_node_id() calls from the inlines and instead use NUMA_NO_NODE which will get switched to numa_mem_id(), which seems to be the right ID to use for memory allocations. Signed-off-by: Jason Gunthorpe<jgg@xxxxxxxxxx> --- drivers/iommu/iommu-pages.c | 54 ++++++++++++++++++++++++++----------- drivers/iommu/iommu-pages.h | 43 ++++++++++++++++++++++++++--- 2 files changed, 78 insertions(+), 19 deletions(-)
Thanks, baolu