Re: [PATCH v3 0/2] rust: page: Add support for existing struct page mappings
From: David Airlie
Date: Fri Nov 22 2024 - 01:58:42 EST
On Fri, Nov 22, 2024 at 11:24 AM Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote:
>
> 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 ...
>
https://elixir.bootlin.com/linux/v6.11.5/source/drivers/gpu/drm/nouveau/nvkm/core/firmware.c#L266
This is the C code we want to rustify.
Dave.