2019-04-01 19:10:05

by Roy Pledge

[permalink] [raw]
Subject: of_reserved_mem()/kexec interaction

Hi Rob,

Not sure if you're the right person to address this to but if not
hopefully someone on the list can assist me.

I'm trying to understand if memory reserved in the device tree via the
"reserved-memory" facility is preserved during a kexec system call,
i.e., is the memory at the same location with the contents undisturbed
when the new kernel starts?

Thanks

Roy


2019-04-02 10:34:36

by James Morse

[permalink] [raw]
Subject: Re: of_reserved_mem()/kexec interaction

Hi Roy,

On 01/04/2019 20:09, Roy Pledge wrote:
> I'm trying to understand if memory reserved in the device tree via the
> "reserved-memory" facility is preserved during a kexec system call,
> i.e., is the memory at the same location with the contents undisturbed
> when the new kernel starts?

If the reservation is a static-allocation (so the address appears in the DT) then the new
kernel should know this is reserved too, and not touch it.

If its a dynamic-allocation, the address isn't in the DT, so the new kernel can't know. It
will dynamically allocate a new reservation, which may be in a different place. If the
data didn't matter at the first-boot, it probably doesn't matter over subsequent kexec either.

As an outlier: the gic has some funny requirements around this. It needs to dynamically
allocate a page during first-boot that is preserved over kexec. It does this using
efi_mem_reserve_persistent().


Thanks,

James