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

From: Christophe Leroy
Date: Sun Feb 16 2020 - 05:46:35 EST

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 <rppt@xxxxxxxxxxxxx>


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);
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);
new_pud = pud_alloc_one(kvm->mm, gpa);