[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Z98Lmo50h5RboFXq@kernel.org>
Date: Sat, 22 Mar 2025 15:12:26 -0400
From: Mike Rapoport <rppt@...nel.org>
To: Jason Gunthorpe <jgg@...dia.com>
Cc: Changyuan Lyu <changyuanl@...gle.com>, linux-kernel@...r.kernel.org,
graf@...zon.com, akpm@...ux-foundation.org, luto@...nel.org,
anthony.yznaga@...cle.com, arnd@...db.de, ashish.kalra@....com,
benh@...nel.crashing.org, bp@...en8.de, catalin.marinas@....com,
dave.hansen@...ux.intel.com, dwmw2@...radead.org,
ebiederm@...ssion.com, mingo@...hat.com, jgowans@...zon.com,
corbet@....net, krzk@...nel.org, mark.rutland@....com,
pbonzini@...hat.com, pasha.tatashin@...een.com, hpa@...or.com,
peterz@...radead.org, ptyadav@...zon.de, robh+dt@...nel.org,
robh@...nel.org, saravanak@...gle.com,
skinsburskii@...ux.microsoft.com, rostedt@...dmis.org,
tglx@...utronix.de, thomas.lendacky@....com,
usama.arif@...edance.com, will@...nel.org,
devicetree@...r.kernel.org, kexec@...ts.infradead.org,
linux-arm-kernel@...ts.infradead.org, linux-doc@...r.kernel.org,
linux-mm@...ck.org, x86@...nel.org
Subject: Re: [PATCH v5 09/16] kexec: enable KHO support for memory
preservation
On Fri, Mar 21, 2025 at 10:46:29AM -0300, Jason Gunthorpe wrote:
> On Wed, Mar 19, 2025 at 06:55:44PM -0700, Changyuan Lyu wrote:
> >
> > +static void deserialize_bitmap(unsigned int order,
> > + struct khoser_mem_bitmap_ptr *elm)
> > +{
> > + struct kho_mem_phys_bits *bitmap = KHOSER_LOAD_PTR(elm->bitmap);
> > + unsigned long bit;
> > +
> > + for_each_set_bit(bit, bitmap->preserve, PRESERVE_BITS) {
> > + int sz = 1 << (order + PAGE_SHIFT);
> > + phys_addr_t phys =
> > + elm->phys_start + (bit << (order + PAGE_SHIFT));
> > + struct page *page = phys_to_page(phys);
> > +
> > + memblock_reserve(phys, sz);
> > + memblock_reserved_mark_noinit(phys, sz);
>
> Mike asked about this earlier, is it work combining runs of set bits
> to increase sz? Or is this sort of temporary pending something better
> that doesn't rely on memblock_reserve?
This hunk actually came from me. I decided to keep it simple for now and
check what are the alternatives, like moving away from memblock_reserve(),
adding a maple_tree or even something else.
> > + page->private = order;
>
> Can't just set the page order directly? Why use private?
Setting the order means recreating the folio the way prep_compound_page()
does. I think it's better to postpone it until the folio is requested. This
way it might run after SMP is enabled. Besides, when we start allocating
folios separately from struct page, initializing it here would be a real
issue.
> Jason
--
Sincerely yours,
Mike.
Powered by blists - more mailing lists