[PATCH v3 4/4] arm64: prevent __va() translations before memstart_addr is assigned

Will Deacon will.deacon at arm.com
Mon Feb 22 08:52:09 PST 2016


On Fri, Feb 12, 2016 at 03:57:26PM +0100, Ard Biesheuvel wrote:
> Since memstart_addr is assigned relatively late in the boot code,
> after generic code like DT parsing and memblock manipulation has
> already occurred, we need to ensure that no __va() translation occur
> until memstart_addr has been set to a meaningful value.
> 
> So initialize memstart_addr to a value that cannot represent a valid
> physical address, and BUG() if memstart_addr is referenced while it
> still holds this value. Note that the > comparison against LLONG_MAX
> (not ULLONG_MAX) resolves to a single tbnz instruction that performs
> a conditional jump to a brk instruction that is emitted out of line.

Even so, I'd imagine that having a measurable impact on system
performance. Did you have a go at benchmarking this?

Will



More information about the linux-arm-kernel mailing list