Matthew Wilcox <willy@xxxxxxxxxxxxx> schrieb am Mi. 14. Apr. 2021 um 20:52:
On Wed, Apr 14, 2021 at 05:24:42PM +0200, David Hildenbrand wrote:
> On 13.04.21 21:46, Matthew Wilcox (Oracle) wrote:
> > +#if defined(CONFIG_SPARSEMEM) && !defined(CONFIG_SPARSEMEM_VMEMMAP)
> > #define nth_page(page,n) pfn_to_page(page_to_pfn((page)) + (n))
> > +#else
> > +#define nth_page(page,n) ((page) + (n))
> > +#endif
>
> For sparsemem we could optimize within a single memory section. But not sure
> if it's worth the trouble.
Not only is it not worth the trouble, I suspect it's more expensive to
test-and-branch than just unconditionally call pfn_to_page() and
page_to_pfn(). That said, I haven't measured.
My thinking was that in most cases we might stay within the section such that there are barely any actual branches.
SPARSEMEM_VMEMMAP is default Y, and enabled by arm64, ia64, powerpc,
riscv, s390, sparc and x86. I mean ... do we care any more?
Also true.
Thanks,
David / dhildenb
David / dhildenb