From: steve.capper@linaro.org (Steve Capper)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] arm64: mm: Create gigabyte kernel logical mappings where possible
Date: Thu, 1 May 2014 09:54:12 +0100 [thread overview]
Message-ID: <20140501085411.GA31607@linaro.org> (raw)
In-Reply-To: <4217068.6LErVYxoHJ@wuerfel>
On Wed, Apr 30, 2014 at 08:11:26PM +0200, Arnd Bergmann wrote:
> On Wednesday 30 April 2014 12:36:22 Steve Capper wrote:
> > 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 <steve.capper@linaro.org>
> > ---
> > 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.
>
> It seems like a great idea. I have to admit that I don't understand
> the existing code, but what are the page sizes used here?
Actually, I think it was your idea ;-). I remember you talking about
increasing the mapping size when 4-level page tables were being
discussed. (I think I should have added a Reported-by, would be happy
to if you want?).
With a 64KB granule, we'll map 512MB blocks if possible, otherwise 64K.
And with a 4KB granule, the original code will map 2MB blocks if
possible, and 4KB otherwise.
The patch will make the 4KB granule case also map 1GB blocks if
possible.
>
> Does the code always use the largest possible page size, or does
> it just use either small pages or 1G pages?
The code will put down the largest mappings it can. As the physical
memory sizes/address are very likely to be aligned to whatever block
size we use; we are likely to achieve the maximum size for our
mappings.
>
> In combination with the contiguous page hint, we should be able
> to theoretically support 4KB/64KB/2M/32M/1G/16G TLBs in any
> combination for boot-time mappings on a 4K page size kernel,
> or 64KB/1M/512M/8G on a 64KB page size kernel.
>
A contiguous hint could be applied to these mappings. The logic would
be a bit more complicated though when we consider different granules.
For 4KB we chain together 16 entries, for 64KB we use 32. If/when we
adopt a 16KB granule, we use 32 entries for a level 2 lookup and
128 entries for a level 3 lookup...
The largest TLB entry sizes that I am aware of in play are the block
sizes (i.e. 2MB, 512MB, 1GB). So I don't think we'll get any benefit at
the moment for adding the contiguous logic.
Cheers,
--
Steve
> Arnd
next prev parent reply other threads:[~2014-05-01 8:54 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-30 11:36 [PATCH] arm64: mm: Create gigabyte kernel logical mappings where possible Steve Capper
2014-04-30 18:11 ` Arnd Bergmann
2014-05-01 8:54 ` Steve Capper [this message]
2014-05-01 13:36 ` Arnd Bergmann
2014-05-01 16:20 ` Steve Capper
2014-05-02 1:03 ` Jungseok Lee
2014-05-02 9:11 ` Steve Capper
2014-05-02 8:51 ` Catalin Marinas
2014-05-02 9:21 ` Steve Capper
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140501085411.GA31607@linaro.org \
--to=steve.capper@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).