Re: [PATCH v2 00/13] mm: remove __ARCH_HAS_5LEVEL_HACK

2020-02-16 Thread Mike Rapoport
On Sun, Feb 16, 2020 at 08:22:30AM +, Russell King - ARM Linux admin wrote:
> On Sun, Feb 16, 2020 at 10:18:30AM +0200, Mike Rapoport wrote:
> > From: Mike Rapoport 
> > 
> > Hi,
> > 
> > These patches convert several architectures to use page table folding and
> > remove __ARCH_HAS_5LEVEL_HACK along with include/asm-generic/5level-fixup.h.
> > 
> > The changes are mostly about mechanical replacement of pgd accessors with 
> > p4d
> > ones and the addition of higher levels to page table traversals.
> > 
> > All the patches were sent separately to the respective arch lists and
> > maintainers hence the "v2" prefix.
> 
> You fail to explain why this change which adds 488 additional lines of
> code is desirable.

Right, I should have been more explicit about it.

As Christophe mentioned in his reply, removing 'HACK' and 'fixup' is an
improvement.
Another thing is that when all architectures behave the same it opens
opportunities for cleaning up repeating definitions of page table
manipulation primitives.

 
> -- 
> RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
> FTTC broadband for 0.8mile line in suburbia: sync at 12.1Mbps down 622kbps up
> According to speedtest.net: 11.9Mbps down 500kbps up

-- 
Sincerely yours,
Mike.


Re: [PATCH v2 00/13] mm: remove __ARCH_HAS_5LEVEL_HACK

2020-02-16 Thread Christophe Leroy




Le 16/02/2020 à 09:22, Russell King - ARM Linux admin a écrit :

On Sun, Feb 16, 2020 at 10:18:30AM +0200, Mike Rapoport wrote:

From: Mike Rapoport 

Hi,

These patches convert several architectures to use page table folding and
remove __ARCH_HAS_5LEVEL_HACK along with include/asm-generic/5level-fixup.h.

The changes are mostly about mechanical replacement of pgd accessors with p4d
ones and the addition of higher levels to page table traversals.

All the patches were sent separately to the respective arch lists and
maintainers hence the "v2" prefix.


You fail to explain why this change which adds 488 additional lines of
code is desirable.



The purpose of the series, ie droping a HACK, is worth it.

However looking at the powerpc patch I have the feeling that this series 
goes behind its purpose.


The number additional lines could be deeply reduced I think if we limit 
the patches to the strict minimum, ie just do things like below instead 
of adding lots of handling of useless levels.


Instead of doing things like:

-   pud = NULL;
+   p4d = NULL;
if (pgd_present(*pgd))
-   pud = pud_offset(pgd, gpa);
+   p4d = p4d_offset(pgd, gpa);
+   else
+   new_p4d = p4d_alloc_one(kvm->mm, gpa);
+
+   pud = NULL;
+   if (p4d_present(*p4d))
+   pud = pud_offset(p4d, gpa);
else
new_pud = pud_alloc_one(kvm->mm, gpa);

It could be limited to:

if (pgd_present(*pgd))
-   pud = pud_offset(pgd, gpa);
+   pud = pud_offset(p4d_offset(pgd, gpa), gpa);
else
new_pud = pud_alloc_one(kvm->mm, gpa);


Christophe


Re: [PATCH v2 00/13] mm: remove __ARCH_HAS_5LEVEL_HACK

2020-02-16 Thread Russell King - ARM Linux admin
On Sun, Feb 16, 2020 at 10:18:30AM +0200, Mike Rapoport wrote:
> From: Mike Rapoport 
> 
> Hi,
> 
> These patches convert several architectures to use page table folding and
> remove __ARCH_HAS_5LEVEL_HACK along with include/asm-generic/5level-fixup.h.
> 
> The changes are mostly about mechanical replacement of pgd accessors with p4d
> ones and the addition of higher levels to page table traversals.
> 
> All the patches were sent separately to the respective arch lists and
> maintainers hence the "v2" prefix.

You fail to explain why this change which adds 488 additional lines of
code is desirable.

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line in suburbia: sync at 12.1Mbps down 622kbps up
According to speedtest.net: 11.9Mbps down 500kbps up


[PATCH v2 00/13] mm: remove __ARCH_HAS_5LEVEL_HACK

2020-02-16 Thread Mike Rapoport
From: Mike Rapoport 

Hi,

These patches convert several architectures to use page table folding and
remove __ARCH_HAS_5LEVEL_HACK along with include/asm-generic/5level-fixup.h.

The changes are mostly about mechanical replacement of pgd accessors with p4d
ones and the addition of higher levels to page table traversals.

All the patches were sent separately to the respective arch lists and
maintainers hence the "v2" prefix.

Geert Uytterhoeven (1):
  sh: fault: Modernize printing of kernel messages

Mike Rapoport (12):
  arm/arm64: add support for folded p4d page tables
  h8300: remove usage of __ARCH_USE_5LEVEL_HACK
  hexagon: remove __ARCH_USE_5LEVEL_HACK
  ia64: add support for folded p4d page tables
  nios2: add support for folded p4d page tables
  openrisc: add support for folded p4d page tables
  powerpc: add support for folded p4d page tables
  sh: drop __pXd_offset() macros that duplicate pXd_index() ones
  sh: add support for folded p4d page tables
  unicore32: remove __ARCH_USE_5LEVEL_HACK
  asm-generic: remove pgtable-nop4d-hack.h
  mm: remove __ARCH_HAS_5LEVEL_HACK and include/asm-generic/5level-fixup.h

 arch/arm/include/asm/kvm_mmu.h|   5 +-
 arch/arm/include/asm/pgtable.h|   1 -
 arch/arm/include/asm/stage2_pgtable.h |  15 +-
 arch/arm/lib/uaccess_with_memcpy.c|   9 +-
 arch/arm/mach-sa1100/assabet.c|   2 +-
 arch/arm/mm/dump.c|  29 ++-
 arch/arm/mm/fault-armv.c  |   7 +-
 arch/arm/mm/fault.c   |  28 ++-
 arch/arm/mm/idmap.c   |   3 +-
 arch/arm/mm/init.c|   2 +-
 arch/arm/mm/ioremap.c |  12 +-
 arch/arm/mm/mm.h  |   2 +-
 arch/arm/mm/mmu.c |  35 ++-
 arch/arm/mm/pgd.c |  40 +++-
 arch/arm64/include/asm/kvm_mmu.h  |  10 +-
 arch/arm64/include/asm/pgalloc.h  |  10 +-
 arch/arm64/include/asm/pgtable-types.h|   5 +-
 arch/arm64/include/asm/pgtable.h  |  37 ++--
 arch/arm64/include/asm/stage2_pgtable.h   |  48 +++-
 arch/arm64/kernel/hibernate.c |  44 +++-
 arch/arm64/mm/fault.c |   9 +-
 arch/arm64/mm/hugetlbpage.c   |  15 +-
 arch/arm64/mm/kasan_init.c|  26 ++-
 arch/arm64/mm/mmu.c   |  52 +++--
 arch/arm64/mm/pageattr.c  |   7 +-
 arch/h8300/include/asm/pgtable.h  |   1 -
 arch/hexagon/include/asm/fixmap.h |   4 +-
 arch/hexagon/include/asm/pgtable.h|   1 -
 arch/ia64/include/asm/pgalloc.h   |   4 +-
 arch/ia64/include/asm/pgtable.h   |  17 +-
 arch/ia64/mm/fault.c  |   7 +-
 arch/ia64/mm/hugetlbpage.c|  18 +-
 arch/ia64/mm/init.c   |  28 ++-
 arch/nios2/include/asm/pgtable.h  |   3 +-
 arch/nios2/mm/fault.c |   9 +-
 arch/nios2/mm/ioremap.c   |   6 +-
 arch/openrisc/include/asm/pgtable.h   |   1 -
 arch/openrisc/mm/fault.c  |  10 +-
 arch/openrisc/mm/init.c   |   4 +-
 arch/powerpc/include/asm/book3s/32/pgtable.h  |   1 -
 arch/powerpc/include/asm/book3s/64/hash.h |   4 +-
 arch/powerpc/include/asm/book3s/64/pgalloc.h  |   4 +-
 arch/powerpc/include/asm/book3s/64/pgtable.h  |  58 +++--
 arch/powerpc/include/asm/book3s/64/radix.h|   6 +-
 arch/powerpc/include/asm/nohash/32/pgtable.h  |   1 -
 arch/powerpc/include/asm/nohash/64/pgalloc.h  |   2 +-
 .../include/asm/nohash/64/pgtable-4k.h|  32 +--
 arch/powerpc/include/asm/nohash/64/pgtable.h  |   6 +-
 arch/powerpc/include/asm/pgtable.h|   8 +
 arch/powerpc/kvm/book3s_64_mmu_radix.c|  59 -
 arch/powerpc/lib/code-patching.c  |   7 +-
 arch/powerpc/mm/book3s32/mmu.c|   2 +-
 arch/powerpc/mm/book3s32/tlb.c|   4 +-
 arch/powerpc/mm/book3s64/hash_pgtable.c   |   4 +-
 arch/powerpc/mm/book3s64/radix_pgtable.c  |  19 +-
 arch/powerpc/mm/book3s64/subpage_prot.c   |   6 +-
 arch/powerpc/mm/hugetlbpage.c |  28 ++-
 arch/powerpc/mm/kasan/kasan_init_32.c |   8 +-
 arch/powerpc/mm/mem.c |   4 +-
 arch/powerpc/mm/nohash/40x.c  |   4 +-
 arch/powerpc/mm/nohash/book3e_pgtable.c   |  15 +-
 arch/powerpc/mm/pgtable.c |  25 ++-
 arch/powerpc/mm/pgtable_32.c  |  28 ++-
 arch/powerpc/mm/pgtable_64.c  |  10 +-
 arch/powerpc/mm/ptdump/hashpagetable.c|  20 +-
 arch/powerpc/mm/ptdump/ptdump.c   |  22 +-
 arch/powerpc/xmon/xmon.c  |  17 +-
 arch/sh/include/asm/pgtable-2level.h  |   1 -
 arch/sh/include/asm/pgtable-3level.h