Thread (9 messages) 9 messages, 4 authors, 2014-05-02
STALE4429d

[PATCH] arm64: mm: Create gigabyte kernel logical mappings where possible

From: Steve Capper <hidden>
Date: 2014-05-02 09:11:36

On Fri, May 02, 2014 at 10:03:02AM +0900, Jungseok Lee wrote:
On Wednesday, April 30, 2014 8:36 PM, Steve Capper wrote:
quoted
We have the capability to map 1GB level 1 blocks when using a 4K granule.

This patch adjusts the create_mapping logic s.t. when mapping physical memory on boot, we attempt to
use a 1GB block if both the VA and PA start and end are 1GB aligned. This both reduces the levels of
lookup required to resolve a kernel logical address, as well as reduces TLB pressure on cores that
support 1GB TLB entries.

Signed-off-by: Steve Capper <redacted>
---
Hello,
This patch has been tested on the FastModel for 4K and 64K pages.
Also, this has been tested with Jungseok's 4 level patch.

I put in the explicit check for PAGE_SHIFT, as I am anticipating a three level 64KB configuration at
some point.

With two level 64K, a PUD is equivalent to a PMD which is equivalent to a PGD, and these are all level
2 descriptors.

Under three level 64K, a PUD would be equivalent to a PGD which would be a level 1 descriptor thus may
not be a block.

Comments/critique/testers welcome.
Hi, Steve

I've tested on my platform, and it works well.
Thanks for giving this a go!
If SoC design follows "Principles of ARM Memory Maps",
PA should be supposed to be 1GB aligned. Thus, I think
this patch is effective against them.

Best Regards
Jungseok Lee
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help