Re: [PATCH v6 0/2] mm/memblock: Add "reserve_mem" to reserved named memory at boot up

From: Steven Rostedt
Date: Thu Jun 13 2024 - 13:12:24 EST


On Thu, 13 Jun 2024 18:54:12 +0200
Alexander Graf <graf@xxxxxxxxxx> wrote:

>
> Do you have a "real" pstore on these systems that you could store
> non-volatile variables in, such as persistent UEFI variables? If so, you
> could create an actually persistent mapping for your trace pstore even
> across kernel version updates as a general mechanism to create reserved
> memblocks at fixed offsets.

After implementing all this, I don't think I can use pstore for my
purpose. pstore is a generic interface for persistent storage, and
requires an interface to access it. From what I understand, it's not
the place to just ask for an area of RAM.

For this, I have a single patch that allows the tracing instance to use
an area reserved by reserve_mem.

reserve_mem=12M:4096:trace trace_instance=boot_mapped@trace

I've already tested this on qemu and a couple of chromebooks. It works
well.

>
>
> > Requirement:
> >
> > Need a way to reserve memory that will be at a consistent location for
> > every boot, if the kernel and system are the same. Does not need to work
> > if rebooting to a different kernel, or if the system can change the
> > memory layout between boots.
> >
> > The reserved memory can not be an hard coded address, as the same kernel /
> > command line needs to run on several different machines. The picked memory
> > reservation just needs to be the same for a given machine, but may be
>
>
> With KASLR is enabled, doesn't this approach break too often to be
> reliable enough for the data you want to extract?
>
> Picking up the idea above, with a persistent variable we could even make
> KASLR avoid that reserved pstore region in its search for a viable KASLR
> offset.

I think I was hit by it once in all my testing. For our use case, the
few times it fails to map is not going to affect what we need this for
at all.

-- Steve