mbox series

[V2,0/8] arm64/mm: Drop PXD_TABLE_BIT

Message ID 20250221044227.1145393-1-anshuman.khandual@arm.com (mailing list archive)
Headers show
Series arm64/mm: Drop PXD_TABLE_BIT | expand

Message

Anshuman Khandual Feb. 21, 2025, 4:42 a.m. UTC
Remove the PXX_TABLE_BIT definitions and instead rely on PXX_TYPE_MASK,
PXX_TYPE_SECT and PXX_TYPE_TABLE. The latter versions are more abstract
and also include the PTE_VALID bit.

This abstraction is valuable for the impending D128 page table support,
which doesn't have a single page table bit to determine table vs block.
Instead it has the skip level (SKL) field, where it will consider 0 to
mean table and any other value to mean a block entry. So PXX_TABLE_BIT
therefore doesn't fit into the D128 model well, but the type fields do.

This series applies on v6.14-rc3.

Changes in V2:

- Changed pmd_mkhuge() and pud_mkhuge() implementation
- Changed pud_bad() implementation with an additional patch

Changes in V1:

https://lore.kernel.org/all/20241005123824.1366397-1-anshuman.khandual@arm.com/

Cc: Marc Zyngier <maz@kernel.org>
Cc: Oliver Upton <oliver.upton@linux.dev>
Cc: James Morse <james.morse@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Ard Biesheuvel <ardb@kernel.org>
Cc: Ryan Roberts <ryan.roberts@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: kvmarm@lists.linux.dev
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org

Anshuman Khandual (6):
  KVM: arm64: ptdump: Test PMD_TYPE_MASK for block mapping
  arm64/ptdump: Test PMD_TYPE_MASK for block mapping
  arm64/mm: Clear PXX_TYPE_MASK in mk_[pmd|pud]_sect_prot()
  arm64/mm: Clear PXX_TYPE_MASK and set PXD_TYPE_SECT in [pmd|pud]_mkhuge()
  arm64/mm: Check PXD_TYPE_TABLE in [p4d|pgd]_bad()
  arm64/mm: Drop PXD_TABLE_BIT

Ryan Roberts (2):
  arm64/mm: Check PUD_TYPE_TABLE in pud_bad()
  arm64/mm: Check pmd_table() in pmd_trans_huge()

 arch/arm64/include/asm/pgtable-hwdef.h |  5 --
 arch/arm64/include/asm/pgtable.h       | 65 ++++++++++++++++++--------
 arch/arm64/kvm/ptdump.c                |  4 +-
 arch/arm64/mm/ptdump.c                 |  4 +-
 4 files changed, 50 insertions(+), 28 deletions(-)