[PATCH v5 09/16] kexec: enable KHO support for memory preservation
Jason Gunthorpe
jgg at nvidia.com
Thu Apr 3 07:24:38 PDT 2025
On Thu, Apr 03, 2025 at 04:58:27PM +0300, Mike Rapoport wrote:
> On Thu, Apr 03, 2025 at 08:42:09AM -0300, Jason Gunthorpe wrote:
> > On Wed, Apr 02, 2025 at 07:16:27PM +0000, Pratyush Yadav wrote:
> > > > +int kho_preserve_phys(phys_addr_t phys, size_t size)
> > > > +{
> > > > + unsigned long pfn = PHYS_PFN(phys), end_pfn = PHYS_PFN(phys + size);
> > > > + unsigned int order = ilog2(end_pfn - pfn);
> > >
> > > This caught my eye when playing around with the code. It does not put
> > > any limit on the order, so it can exceed NR_PAGE_ORDERS. Also, when
> > > initializing the page after KHO, we pass the order directly to
> > > prep_compound_page() without sanity checking it. The next kernel might
> > > not support all the orders the current one supports. Perhaps something
> > > to fix?
> >
> > IMHO we should delete the phys functions until we get a user of them
>
> The only user of memory tracker in this series uses kho_preserve_phys()
But it really shouldn't. The reserved memory is a completely different
mechanism than buddy allocator preservation. It doesn't even call
kho_restore_phys() those pages, it just feeds the ranges directly to:
+ reserved_mem_add(*p_start, size, name);
The bitmaps should be understood as preserving memory from the buddy
allocator only.
IMHO it should not call kho_preserve_phys() at all.
Jason
More information about the linux-arm-kernel
mailing list