On 12 Jan 2026, at 18:53, Jason Gunthorpe wrote: > On Mon, Jan 12, 2026 at 06:34:06PM -0500, Zi Yan wrote: >> page[1].flags.f &= ~PAGE_FLAGS_SECOND. It clears folio->order. >> >> free_tail_page_prepare() clears ->mapping, which is TAIL_MAPPING, and >> compound_head at the end. >> >> page->flags.f &= ~PAGE_FLAGS_CHECK_AT_PREP. It clears PG_head for compound >> pages. >> >> These three parts undo prep_compound_page(). > > Well, mm doesn't clear all things on alloc.. > >> In current nouveau code, ->free_folios is used holding the freed folio. >> In nouveau_dmem_page_alloc_locked(), the freed folio is passed to >> zone_device_folio_init(). If the allocated folio order is different >> from the freed folio order, I do not know how you are going to keep >> track of the rest of the freed folio. Of course you can implement a >> buddy allocator there. > > nouveau doesn't support high order folios. > > A simple linked list is not really a suitable data structure to ever > support high order folios with.. If it were to use such a thing, and > did want to take a high order folio off the list, and reduce its > order, then it would have to put the remainder back on the list with a > revised order value. That's all, nothing hard. > > Again if the driver needs to store information in the struct page to > manage its free list mechanism (ie linked pointers, order, whatever) > then it should be doing that directly. > > When it takes the memory range off the free list it should call > zone_device_page_init() to make it ready to be used again. I think it > is a poor argument to say that zone_device_page_init() should rely on > values already in the struct page to work properly :\ > > The usable space within the struct page, and what values must be fixed > for correct system function, should exactly mirror what frozen pages > require. After free it is effectively now a frozen page owned by the > device driver. > > I haven't seen any documentation on that, but I suspect Matthew and > David have some ideas.. > > If there is a reason for order, flags and mapping to be something > particular then it should flow from the definition of frozen pages, > and be documented, IMHO.
Thank you for the explanation. It seems that I do not have enough knowledge to comment on device private pages. I will refrain myself from doing so from now on Best Regards, Yan, Zi
