Message ID | 20241005123824.1366397-1-anshuman.khandual@arm.com (mailing list archive) |
---|---|
Headers | show |
Series | arm64/mm: Drop PXD_TABLE_BIT | expand |
On 05/10/2024 13:38, Anshuman Khandual wrote: > Clearing PXD_TABLE_BIT i.e bit[1] on a page table entry always operates on > the assumption that subsequent PXD_VALID i.e bit[0] is set. That's because > bits[1:0]="01" makes a block mapping. So it is prudent to treat bits[1:0] > as a single register field, which should be updated as block or table etc. > Although mk_[pmd|pud]_sect_prot() helpers go to some extent in using these > PXD_TYPE_SECT macros, their usage is not really consistent else where. > > This series removes these table bit clearing for block mapping creation and > eventually completely drops off those table macros. Given the issue I just noticed in patch 2, I'm not sure if it's going to be practical to remove the table bit after all? Sorry I didn't spot this before. > > This series applies on v6.12-rc1. > > 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 (5): > arm64/mm: Drop pte_mkhuge() > arm64/mm: Replace PXD_TABLE_BIT with PXD_TYPE_[MASK|SECT] > arm64/ptdump: Test PMD_TYPE_MASK for block mapping > KVM: arm64: ptdump: Test PMD_TYPE_MASK for block mapping > arm64/mm: Drop PXD_TABLE_BIT > > arch/arm64/include/asm/pgtable-hwdef.h | 6 +----- > arch/arm64/include/asm/pgtable.h | 20 ++++++++------------ > arch/arm64/kvm/ptdump.c | 4 ++-- > arch/arm64/mm/hugetlbpage.c | 2 +- > arch/arm64/mm/ptdump.c | 8 ++++---- > 5 files changed, 16 insertions(+), 24 deletions(-) >
On 10/9/24 19:02, Ryan Roberts wrote: > On 05/10/2024 13:38, Anshuman Khandual wrote: >> Clearing PXD_TABLE_BIT i.e bit[1] on a page table entry always operates on >> the assumption that subsequent PXD_VALID i.e bit[0] is set. That's because >> bits[1:0]="01" makes a block mapping. So it is prudent to treat bits[1:0] >> as a single register field, which should be updated as block or table etc. >> Although mk_[pmd|pud]_sect_prot() helpers go to some extent in using these >> PXD_TYPE_SECT macros, their usage is not really consistent else where. >> >> This series removes these table bit clearing for block mapping creation and >> eventually completely drops off those table macros. > Given the issue I just noticed in patch 2, I'm not sure if it's going to be > practical to remove the table bit after all? Sorry I didn't spot this before. Now that arch_make_huge_pte() seems to be all good in patch 1, and there might be a solution for pmd_present() via de-coupled pmd_mkinvalid(), would it still not possible to drop PXD_TABLE_BIT ?