linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCHv3 00/18] arm64: mm: rework page table creation
@ 2016-01-25 11:44 Mark Rutland
  2016-01-25 11:44 ` [PATCHv3 01/18] asm-generic: make __set_fixmap_offset a static inline Mark Rutland
                   ` (19 more replies)
  0 siblings, 20 replies; 21+ messages in thread
From: Mark Rutland @ 2016-01-25 11:44 UTC (permalink / raw)
  To: linux-arm-kernel

Hi all,

This series reworks the arm64 early page table code. This avoids issues with
conflicting TLB entries, ensures we can always create page tables provided
there is available memory in the system (even if not covered by the early
linear map), and allows for fine-grained table creation early on.

With this series, we will create a new set of fine-grained page tables,
temporarily mapping the tables themselves using a new set of fixmap slots.
Subsequently we safely switch over to these tables using some idmapped code
that avoids the allocation of conflicting TLB entries.

This series is based on v4.5-rc1, and this version is tagged as
arm64-pagetable-rework-20160125 while the latest version should be in the
unstable branch arm64/pagetable-rework in my git repo [1], though I'm hoping
that this won't need another spin.

Since v1 [2] (tagged arm64-pagetable-rework-20151209):
* Drop patches taken into the arm64 tree.
* Rebase to arm64 for-next/core.
* Copy early KASAN tables.
* Fix KASAN pgd manipulation.
* Specialise allocators for page tables, in function and naming.
* Update comments.

Since v2 [3] (tagged arm64-pagetable-rework-20160104)
* Rebase to v4.5-rc1.
* Rename fixmap functions to p??_set_fixmap{,_offset}, p??_clear_fixmap.
* Restore a barrier lost to a rebase.
* Fix typos in commit messages.
* Collected Acks.

As there's at least one other series depending on this, I'd like to keep my
arm64/pagetable-rework branch stable.

Catalin, how do you want to take this? Are you happy to merge my
arm64/pagetable-rework branch, or would you prefer to pick the patches? Arnd
has acked the asm-generic patch [4] and is happy for it to go via the arm64
tree, and everything else is your domain.

Thanks,
Mark.

[1] git://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git
[2] http://lists.infradead.org/pipermail/linux-arm-kernel/2015-December/392292.html
[3] http://lists.infradead.org/pipermail/linux-arm-kernel/2016-January/397095.html
[4] http://lists.infradead.org/pipermail/linux-arm-kernel/2016-January/400396.html

Mark Rutland (18):
  asm-generic: make __set_fixmap_offset a static inline
  arm64: mm: specialise pagetable allocators
  arm64: mm: place empty_zero_page in bss
  arm64: unify idmap removal
  arm64: unmap idmap earlier
  arm64: add function to install the idmap
  arm64: mm: add code to safely replace TTBR1_EL1
  arm64: kasan: avoid TLB conflicts
  arm64: mm: move pte_* macros
  arm64: mm: add functions to walk page tables by PA
  arm64: mm: avoid redundant __pa(__va(x))
  arm64: mm: add __{pud,pgd}_populate
  arm64: mm: add functions to walk tables in fixmap
  arm64: mm: use fixmap when creating page tables
  arm64: mm: allocate pagetables anywhere
  arm64: mm: allow passing a pgdir to alloc_init_*
  arm64: ensure _stext and _etext are page-aligned
  arm64: mm: create new fine-grained mappings at boot

 arch/arm64/include/asm/fixmap.h      |  10 ++
 arch/arm64/include/asm/kasan.h       |   3 +
 arch/arm64/include/asm/mmu_context.h |  62 ++++++-
 arch/arm64/include/asm/pgalloc.h     |  26 ++-
 arch/arm64/include/asm/pgtable.h     |  87 +++++++---
 arch/arm64/kernel/head.S             |   1 +
 arch/arm64/kernel/setup.c            |   7 +
 arch/arm64/kernel/smp.c              |   4 +-
 arch/arm64/kernel/suspend.c          |  20 +--
 arch/arm64/kernel/vmlinux.lds.S      |   5 +-
 arch/arm64/mm/kasan_init.c           |  32 ++--
 arch/arm64/mm/mmu.c                  | 313 ++++++++++++++++++-----------------
 arch/arm64/mm/proc.S                 |  28 ++++
 include/asm-generic/fixmap.h         |  14 +-
 14 files changed, 383 insertions(+), 229 deletions(-)

-- 
1.9.1

^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2016-01-28 15:07 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-25 11:44 [PATCHv3 00/18] arm64: mm: rework page table creation Mark Rutland
2016-01-25 11:44 ` [PATCHv3 01/18] asm-generic: make __set_fixmap_offset a static inline Mark Rutland
2016-01-25 11:44 ` [PATCHv3 02/18] arm64: mm: specialise pagetable allocators Mark Rutland
2016-01-25 11:44 ` [PATCHv3 03/18] arm64: mm: place empty_zero_page in bss Mark Rutland
2016-01-25 11:44 ` [PATCHv3 04/18] arm64: unify idmap removal Mark Rutland
2016-01-25 11:44 ` [PATCHv3 05/18] arm64: unmap idmap earlier Mark Rutland
2016-01-25 11:45 ` [PATCHv3 06/18] arm64: add function to install the idmap Mark Rutland
2016-01-25 11:45 ` [PATCHv3 07/18] arm64: mm: add code to safely replace TTBR1_EL1 Mark Rutland
2016-01-25 11:45 ` [PATCHv3 08/18] arm64: kasan: avoid TLB conflicts Mark Rutland
2016-01-25 11:45 ` [PATCHv3 09/18] arm64: mm: move pte_* macros Mark Rutland
2016-01-25 11:45 ` [PATCHv3 10/18] arm64: mm: add functions to walk page tables by PA Mark Rutland
2016-01-25 11:45 ` [PATCHv3 11/18] arm64: mm: avoid redundant __pa(__va(x)) Mark Rutland
2016-01-25 11:45 ` [PATCHv3 12/18] arm64: mm: add __{pud,pgd}_populate Mark Rutland
2016-01-25 11:45 ` [PATCHv3 13/18] arm64: mm: add functions to walk tables in fixmap Mark Rutland
2016-01-25 11:45 ` [PATCHv3 14/18] arm64: mm: use fixmap when creating page tables Mark Rutland
2016-01-25 11:45 ` [PATCHv3 15/18] arm64: mm: allocate pagetables anywhere Mark Rutland
2016-01-25 11:45 ` [PATCHv3 16/18] arm64: mm: allow passing a pgdir to alloc_init_* Mark Rutland
2016-01-25 11:45 ` [PATCHv3 17/18] arm64: ensure _stext and _etext are page-aligned Mark Rutland
2016-01-25 11:45 ` [PATCHv3 18/18] arm64: mm: create new fine-grained mappings at boot Mark Rutland
2016-01-27 15:43 ` [PATCHv3 00/18] arm64: mm: rework page table creation Jeremy Linton
2016-01-28 15:07 ` Catalin Marinas

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).