Re: [PATCH v3 0/2] rust: page: Add support for existing struct page mappings
From: Matthew Wilcox
Date: Thu Nov 21 2024 - 20:24:32 EST
On Fri, Nov 22, 2024 at 01:18:28AM +0200, Abdiel Janulgue wrote:
> We need an abstraction of struct page to construct a scatterlist which is
> needed for an internal firmware structure. Now most of pages needed there
> come from vmalloc_to_page() which, unlike the current rust Page abstraction,
> not allocated on demand but is an existing mapping.
>
> Hope that clears things up!
That's very helpful! So the lifetime of the scatterllist must not
outlive the lifetime of the vmalloc allocation. That means you can call
kmap_local_page() on the page in the scatterlist without worrying about
the refcount of the struct page. BTW, you can't call page_address() on
vmalloc memory because vmalloc can allocate pages from HIGHMEM. Unless
you're willing to disable support for 32-bit systems with highmem ...