[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <aLiWDl3sq3RTkdfJ@kernel.org>
Date: Wed, 3 Sep 2025 22:25:02 +0300
From: Mike Rapoport <rppt@...nel.org>
To: Jason Gunthorpe <jgg@...dia.com>
Cc: Andrew Morton <akpm@...ux-foundation.org>,
Alexander Graf <graf@...zon.com>, Baoquan He <bhe@...hat.com>,
Changyuan Lyu <changyuanl@...gle.com>, Chris Li <chrisl@...nel.org>,
Pasha Tatashin <pasha.tatashin@...een.com>,
Pratyush Yadav <pratyush@...nel.org>, kexec@...ts.infradead.org,
linux-mm@...ck.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 1/2] kho: add support for preserving vmalloc allocations
On Wed, Sep 03, 2025 at 02:06:31PM -0300, Jason Gunthorpe wrote:
> On Wed, Sep 03, 2025 at 06:38:00PM +0300, Mike Rapoport wrote:
> > > Don't call kho_preserve_phy if you already have a page!
>
> > Now seriously, by no means this is a folio,
>
> It really is. The entire bitmap thing is about preserving folios/page
> which are basically the same thing ATM. folio is the prefered type for
> what used to be compound pages.
> As Matthew moves ahead it will effectively become preserving
> memdescs. This may even start to happen this year..
>
> Every memdesc has a type, so when ever the physical pages are restored
> KHO will need to recreate the struct page and page->memdesc with the
> correct values, including the memdesc type code and any memdesc
> allocation that Matthew plans.
>
> Meaning everything should be struct page or folio based at this API
> level, and restore functions should be logically paired with the
> allocation functions that created the memory in the first place.
>
> vmalloc() is calling alloc_pages_bulk_node_noprof() to allocate the
> memory, so the restore of that memory should also have a 'kho restore
> page' type of name that clearly refers back to the allocator it pairs
> with.
I'm actually all for having a single entry point
kho_{preserve,restore}_page() that will do
if (folio)
do_folio()
else if (vmalloc)
do_vmalloc()
etc.
It seems that our major disagreement is about using 'folio' vs 'page' in
the naming.
In my view calling everything 'folio' is a bad idea as we are moving fast
from Ottawa interpretation to New York interpretation of folio.
I'd rather stick to the good old 'page' and when the time comes we can
's/page/memdesc/g' supposing Matthew actually plans for it.
This way we won't need to handle the fallback from divorce of folio from
page. This indeed is less relevant to KHO, but there are a lot of
folio_alloc() in LUO and PCI patches that will have to be changed to a
different allocation apparently this year.
> In the more general case this should be setting the cgroup and
> charging it as well.
Yes, eventually :)
> > How do you suggest to preserve memblock?
>
> Does the memory have a struct page? Then it should be a preserved
> folio list so you get back struct pages in the right state for what
page list you mean ;-)
> memblock is doing. Someday that will turn into some specific memdesc
> type and so on.
> If it doesn't have a struct page then it shouldn't be in the bitmaps
> at all.
There is a struct page for everything that's memblock_alloc()ed. And we can
do page list, but for large physically contiguous allocation it does not
make sense.
I'd rather replace kho_preserve_phys() with kho_preserve_memblock() and add
a restore counterpart to properly set the struct pages for it which we lack
now.
> Jason
--
Sincerely yours,
Mike.
Powered by blists - more mailing lists