> >>> + */ > >>> +static inline void *iommu_alloc_page_node(int nid, gfp_t gfp) > >>> +{ > >>> + return iommu_alloc_pages_node(nid, gfp, 0); > >>> +} > >> > >> TBH I'm not entirely convinced that saving 4 characters per invocation > >> times 11 invocations makes this wrapper worthwhile :/ > > > > Let's keep them. After the clean-up that you suggested, there are > > fewer functions left in this file, but I think that it is cleaner to > > keep these remaining, as it is beneficial to easily distinguish when > > exactly one page is allocated vs when multiple are allocated via code > > search. > > But is it, really? It's not at all obvious to me *why* it would be > significantly interesting to distinguish fixed order-0 allocations from > higher-order or variable-order (which may still be 0) ones. After all, > there's no regular alloc_page_node() wrapper, yet plenty more callers of > alloc_pages_node(..., 0) :/ The pages that are allocated with order > 0 cannot be freed using iommu_put_pages_list(), without messing up refcounts in the tail pages. I think having a dedicated function that guarantees order = 0 pages allocation makes it easier for the reviewer to follow the code, and ensures that only these pages are put on the freelist. Even in the existing code, the order=0 allocation is wrapped in the *alloc_pgtable_page() function. Pasha > > Thanks, > Robin.