[PATCH v7 07/11] arm64: mm: Implement 4 levels of translation tables

Jungseok Lee jungseoklee85 at gmail.com
Wed Jul 30 07:57:09 PDT 2014


On Jul 29, 2014, at 11:19 PM, Joel Schopp wrote:
> 
>>> Here's a good example of where we run into trouble equating page table
>>> addressable bits with hardware addressable bits.  If VA_BITS is 48 due
>>> to 4K 4 level page tables but is running on a 42 bit system this will
>>> end up being out of range.
>> Is your concern that CPU issues 48-bit address to MMU on 42-bit hardware?
>> Have you tested this patch series on your hardware?
>> 
>> - Jungseok Lee
> 
> That is my concern.  I did test the patch on my hardware with the
> following results:
> 64k pages, 2 levels 42 bit VA - worked (no regression)
> 64k pages, 3 levels 48 bit VA- didn't boot
> 4k pages, 4 levels 42 bit VA - didn't boot
> 4k pages, 4 levels 48 bit VA - didn't boot


Let me break the concern down into two small parts.

The first one is a relation between VA and PA. Let me visualize the above
description in the following way. I assume that Cortex-A57 is used and
connected to bus with 42-bit address line.

SoC Boundary
|---------------------------------------------
| Cortex-A57 Boundary                        |
| ---------------                            |
| | CPU --> MMU | --> BUS --> Memory Controller --> RAM 
| ------48------- 42      42                 |  42
|---------------------------------------------

In this configuration, there is no problem since 48-bit VA is handled in
Cortex-A57 boundary. Cortex-A57 can support up to 48-bit VA and 44-bit PA. 

The second part is the test result. It's bad actually. So, I've done booting
test on for-next/core branch of arm64 linux git, [1], quickly using Model. All
combinations, 4KB + 3Level (39-bit VA), 4KB + 4Level (48-bit VA), 64KB + 2Level
(42-bit VA) and 64KB + 3Level(48bit VA), boot up successfully.

I hesitate to say anything since I don't have any real hardware. I think people
who have real platform, such as Juno, can help to figure it out.

[1]: git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git

I add Will in Cc since [1] looks updated by Will now. 

- Jungseok Lee


More information about the linux-arm-kernel mailing list