[PATCH 0/5] Huge pages for short descriptors on ARM

Steve Capper steve.capper at linaro.org
Tue Feb 18 10:27:10 EST 2014


Hello,
This series brings HugeTLB pages and Transparent Huge Pages (THP) to
ARM on short descriptors.

We use a pair of 1MB sections to represent a 2MB huge page. Both
HugeTLB and THP entries are represented by PMDs with the same bit
layout.

The short descriptor page table manipulation code on ARM makes a
distinction between Linux and hardware ptes and performs the necessary
translation in the assembler pte setter functions. The huge page code
instead manipulates the hardware entries directly.

There is one small bit of translation that takes place to populate an
appropriate pgprot_t value for the VMA containing the huge page. Once
we have that pgprot_t, we can manipulate huge ptes/pmds as normal with
the bit and modify funcs.

In order to be able to manipulate huge ptes directly, I've introduced
three new manipulation functions: huge_pte_page, huge_present and
huge_pte_young. If undefined, these will default to the standard pte
analogues.

I have tested this series on an Arndale board running 3.14-rc3. The
libhugetlbfs checks, LTP and some custom THP PROT_NONE tests were used
to test this series.

Since the RFC in December, I have rebased the code against 3.14-rc3 and
tidied up the code.

Cheers,
--
Steve

Steve Capper (5):
  mm: hugetlb: Introduce huge_pte_{page,present,young}
  arm: mm: Adjust the parameters for __sync_icache_dcache
  arm: mm: Make mmu_gather aware of huge pages
  arm: mm: HugeTLB support for non-LPAE systems
  arm: mm: Add Transparent HugePage support for non-LPAE

 arch/arm/Kconfig                      |   4 +-
 arch/arm/include/asm/hugetlb-2level.h | 121 +++++++++++++++++++++++++++++++
 arch/arm/include/asm/hugetlb-3level.h |   6 ++
 arch/arm/include/asm/hugetlb.h        |  10 +--
 arch/arm/include/asm/pgtable-2level.h | 133 +++++++++++++++++++++++++++++++++-
 arch/arm/include/asm/pgtable-3level.h |   3 +-
 arch/arm/include/asm/pgtable.h        |   9 +--
 arch/arm/include/asm/tlb.h            |  14 +++-
 arch/arm/kernel/head.S                |  10 ++-
 arch/arm/mm/fault.c                   |  13 ----
 arch/arm/mm/flush.c                   |   9 +--
 arch/arm/mm/fsr-2level.c              |   4 +-
 arch/arm/mm/hugetlbpage.c             |   2 +-
 arch/arm/mm/mmu.c                     |  51 +++++++++++++
 include/linux/hugetlb.h               |  12 +++
 mm/hugetlb.c                          |  22 +++---
 16 files changed, 370 insertions(+), 53 deletions(-)
 create mode 100644 arch/arm/include/asm/hugetlb-2level.h

-- 
1.8.1.4




More information about the linux-arm-kernel mailing list