[PATCH V3 00/30] Book3s abstraction in preparation for new MMU model
Paul Mackerras
paulus at ozlabs.org
Fri Feb 19 10:13:19 AEDT 2016
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.
More information about the Linuxppc-dev
mailing list