On Sun, Dec 24, 2023 at 4:48 PM Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote: > > On Sun, Dec 24, 2023 at 01:30:50PM -0800, David Rientjes wrote: > > > > s/pages/page/ here and later in this file. > > > > > > In this file, where there a page with an "order", I reference it with > > > "pages", when no order (i.e. order = 0), I reference it with "page" > > > > > > I.e.: __iommu_alloc_page vs. __iommu_alloc_pages > > > > > > > Eh, the struct page points to a (potentially compound) page, not a set or > > list of pages. I won't bikeshed on it, but "struct page *pages" never > > makes sense unless it's **pages or *pages[] :) > > I'd suggest that 'pages' also makes sense when _not_ using __GFP_COMP, > as we do in fact allocate an array of pages in that case. > > That said, we shouldn't encourage the use of non-compound allocations. > It would also be good for someone to define a memdesc for iommu memory > like we have already for slab. We'll need it eventually, and it'll work > out better if someone who understands iommus (ie not me) does it. I was thinking of adding an IOMMU page table memdesc, at least by starting with Intel implementation. - For efficient freeing on page-unmap we need a counter. - We might also need a per-page page table locking (aka PTL type lock), if the current approach I am proposing is not scalable enough. - Access to debugfs (I am studying this now). However, iommu memdesc would really make sense, once all the various page table management IOMMU implementations are unified. Pasha