[PATCH v3 RESEND 05/17] ARM: LPAE: support 64-bit virt_to_phys patching
cyril at ti.com
Mon Sep 24 18:53:10 EDT 2012
On 9/24/2012 6:40 PM, Russell King - ARM Linux wrote:
> On Mon, Sep 24, 2012 at 06:32:22PM -0400, Nicolas Pitre wrote:
>> We don't want to limit lowmem. The lowmem is very precious memory and
>> we want to maximize its size. In that case it is probably best to
>> implement a real patchable 64-bit addition rather than artificially
>> restricting the lowmem size.
> You don't need to. You can solve the V->P translation like this:
> movw %hi, #0xVWXY @ fixup
> adds %lo, %lo, #offset @ fixup
> adc %hi, %hi, #0
> which is probably the simplest way to do the fixup - keep the existing
> fixup code, and add support for that movw instruction. And that will
> work across any 4GB boundary just fine (we won't have more than 4GB of
> virtual address space on a 32-bit CPU anyway, so we only have to worry
> about one carry.)
> And the P->V translation is truncating anyway, so that is just:
> sub %lo, %lo, #offset
> and nothing more.
The existing fixup code runs too early - before we get a chance to
switch over from the boot-time sub-4G alias to the real physical address
space. Readability aside, part of the reasoning behind the C
re-implementation was to defer the patch application until a later point
in the boot process.
That said, we could patch once at boot, and then re-patch at switch
over, I guess. Is that what you're recommending?
More information about the linux-arm-kernel