Re: [RFC][PATCH] Randomize kernel base address on boot

Matthew Garrett
2011-05-31T16:53:16Z

On Thu, May 26, 2011 at 04:39:27PM -0400, Dan Rosenberg wrote:

> 1. I'm nearly finished a first draft of code to parse the BIOS E820
> memory map to determine where it's safe to place the randomized kernel.
> This code accounts for overlapping regions, as well as potential
> conflicts in region types (free vs. reserved, etc.), in favor of
> non-free types. The end result is, I'll have a reasonable upper bound.

The BIOS E820 map, or the kernel representation? In either case, this
isn't going to work well with EFI. There are regions that will be marked
as available in the E820 map that we *mustn't* touch until we've entered
EFI virtual mode.

(This is, clearly, insane).

One other thing is that when we've entered EFI virtual mode we'll have
remapped various parts of the EFI memory map into virtual address space.
There's no way to update these mappings later. If we want kexec to work
then there has to be a mechanism for ensuring that these mappings can be
provided to the second kernel and for it to preserve them.

--
Matthew Garrett | mjg59@srcf.ucam.org