From: Paul Mackerras <paulus@ozlabs.org>
To: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
Cc: benh@kernel.crashing.org, mpe@ellerman.id.au,
linuxppc-dev@lists.ozlabs.org, linux-mm@kvack.org
Subject: Re: [PATCH V3 00/30] Book3s abstraction in preparation for new MMU model
Date: Fri, 19 Feb 2016 10:13:19 +1100 [thread overview]
Message-ID: <20160218231319.GB2765@fergus.ozlabs.ibm.com> (raw)
In-Reply-To: <1455814254-10226-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com>
On Thu, Feb 18, 2016 at 10:20:24PM +0530, Aneesh Kumar K.V wrote:
> Hello,
>
> This is a large series, mostly consisting of code movement. No new features
> are done in this series. The changes are done to accomodate the upcoming new memory
> model in future powerpc chips. The details of the new MMU model can be found at
>
> http://ibm.biz/power-isa3 (Needs registration). I am including a summary of the changes below.
This doesn't apply against Linus' current tree - have you already
posted the prerequisite patches? If so, what's the subject of the
0/N patch of the prerequisite series?
> ISA 3.0 adds support for the radix tree style of MMU with full
> virtualization and related control mechanisms that manage its
> coexistence with the HPT. Radix-using operating systems will
> manage their own translation tables instead of relying on hcalls.
>
> Radix style MMU model requires us to do a 4 level page table
> with 64K and 4K page size. The table index size different page size
> is listed below
>
> PGD -> 13 bits
> PUD -> 9 (1G hugepage)
> PMD -> 9 (2M huge page)
> PTE -> 5 (for 64k), 9 (for 4k)
>
> We also require the page table to be in big endian format.
>
> The changes proposed in this series enables us to support both
> hash page table and radix tree style MMU using a single kernel
> with limited impact. The idea is to change core page table
> accessors to static inline functions and later hotpatch them
> to switch to hash or radix tree functions. For ex:
>
> static inline int pte_write(pte_t pte)
> {
> if (radix_enabled())
> return rpte_write(pte);
> return hlpte_write(pte);
> }
Given that with a hash-based MMU, the Linux page tables are purely a
software construct, I don't see why this complexity is necessary. We
can make the PTE have the same format on radix and hash instead. I
have a patch series that does that almost ready to post.
> On boot we will hotpatch the code so as to avoid conditional operation.
>
> The other two major change propsed in this series is to switch hash
> linux page table to a 4 level table in big endian format. This is
> done so that functions like pte_val(), pud_populate() doesn't need
> hotpatching and thereby helps in limiting runtime impact of the changes.
Right, I agree with this.
Paul.
next prev parent reply other threads:[~2016-02-18 23:13 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-18 16:50 [PATCH V3 00/30] Book3s abstraction in preparation for new MMU model Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 01/30] mm: Make vm_get_page_prot arch specific Aneesh Kumar K.V
2016-02-18 23:15 ` Paul Mackerras
2016-02-19 2:40 ` Aneesh Kumar K.V
2016-02-21 0:32 ` Benjamin Herrenschmidt
2016-02-19 1:28 ` Dave Hansen
2016-02-19 2:40 ` Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 02/30] mm: Some arch may want to use HPAGE_PMD related values as variables Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 03/30] powerpc/mm: add _PAGE_HASHPTE similar to 4K hash Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 04/30] powerpc/mm: Split pgtable types to separate header Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 05/30] powerpc/mm: Don't have conditional defines for real_pte_t Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 06/30] powerpc/mm: Switch book3s 64 with 64K page size to 4 level page table Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 07/30] powerpc/mm: Copy pgalloc (part 1) Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 08/30] powerpc/mm: Copy pgalloc (part 2) Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 09/30] powerpc/mm: Copy pgalloc (part 3) Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 10/30] powerpc/mm: Hugetlbfs is book3s_64 and fsl_book3e (32 or 64) Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 11/30] powerpc/mm: free_hugepd_range split to hash and nonhash Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 12/30] powerpc/mm: Use helper instead of opencoding Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 13/30] powerpc/mm: Move hash64 specific definitions to separate header Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 14/30] powerpc/mm: Move swap related definition ot hash64 header Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 15/30] powerpc/mm: Move hash page table related functions to pgtable-hash64.c Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 16/30] powerpc/mm: Rename hash specific page table bits (_PAGE* -> H_PAGE*) Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 17/30] powerpc/mm: Use flush_tlb_page in ptep_clear_flush_young Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 18/30] powerpc/mm: THP is only available on hash64 as of now Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 19/30] powerpc/mm: Use generic version of pmdp_clear_flush_young Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 20/30] powerpc/mm: Create a new headers for tlbflush for hash64 Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 21/30] powerpc/mm: Hash linux abstraction for page table accessors Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 22/30] powerpc/mm: Hash linux abstraction for functions in pgtable-hash.c Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 23/30] powerpc/mm: Hash linux abstraction for mmu context handling code Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 24/30] powerpc/mm: Move hash related mmu-*.h headers to book3s/ Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 25/30] powerpc/mm: Hash linux abstractions for early init routines Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 26/30] powerpc/mm: Hash linux abstraction for THP Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 27/30] powerpc/mm: Hash linux abstraction for HugeTLB Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 28/30] powerpc/mm: Hash linux abstraction for page table allocator Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 29/30] powerpc/mm: Hash linux abstraction for tlbflush routines Aneesh Kumar K.V
2016-02-18 16:50 ` [PATCH V3 30/30] powerpc/mm: Hash linux abstraction for pte swap encoding Aneesh Kumar K.V
2016-02-18 23:13 ` Paul Mackerras [this message]
2016-02-19 2:34 ` [PATCH V3 00/30] Book3s abstraction in preparation for new MMU model Aneesh Kumar K.V
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=20160218231319.GB2765@fergus.ozlabs.ibm.com \
--to=paulus@ozlabs.org \
--cc=aneesh.kumar@linux.vnet.ibm.com \
--cc=benh@kernel.crashing.org \
--cc=linux-mm@kvack.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mpe@ellerman.id.au \
/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).