mips: define pud_index() regardless of page table folding
PATCH 1/1 mips: define pud_index() regardless of page table folding
From: Mike Rapoport <[email protected]>
Commit 31168f033e37 ("mips: drop __pXd_offset() macros that duplicate pXd_index() ones") is correct that pud_index() & __pud_offset() are the same when pud_index() is actually provided, however it does not take into account the __PAGETABLE_PUD_FOLDED case. This has broken MIPS KVM compilation because it relied on availability of pud_index().
Define pud_index() regardless of page table folded. It will evaluate to actual index for 4-level pagetables and to 0 for folded PUD level.
--- arch/mips/include/asm/pgtable-64.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
arch/mips/include/asm/pgtable-64.h +2 -2
@@ -172,6 +172,8 @@extern pte_t invalid_pte_table[PTRS_PER_PTE ]; +#define pud_index (address) (((address) >> PUD_SHIFT) & (PTRS_PER_PUD - 1)) +#ifndef __PAGETABLE_PUD_FOLDED/* * For 4-level pagetables we defines these ourselves, for 3-level the
@@ -210,8 +212,6 @@ static inline void p4d_clear(p4d_t *p4dp)p4d_val (*p4dp) = (unsigned long )invalid_pud_table; } -#define pud_index (address) (((address) >> PUD_SHIFT) & (PTRS_PER_PUD - 1)) -static inline unsigned long p4d_page_vaddr (p4d_t p4d) {return p4d_val (p4d);
Signature · 1 line
2.25.1
Quoted 44 lines · Mike Rapoport
From: Mike Rapoport <[email protected]>
Commit
31168f033e37("mips: drop__pXd_offset()macros that duplicatepXd_index()ones") is correct thatpud_index()&__pud_offset()are the same whenpud_index()is actually provided, however it does not take into account the__PAGETABLE_PUD_FOLDEDcase. This has broken MIPS KVM compilation because it relied on availability ofpud_index().Define
pud_index()regardless of page table folded. It will evaluate to actual index for 4-level pagetables and to 0 for folded PUD level.Reported-by Paolo Bonzini <[email protected]>Signed-off-by Mike Rapoport <[email protected]>--- arch/mips/include/asm/pgtable-64.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)arch/mips/include/asm/pgtable-64.h +2
-3@@ -172,6 +172,8 @@extern pte_t invalid_pte_table[PTRS_PER_PTE ]; +#define pud_index (address) (((address) >> PUD_SHIFT) & (PTRS_PER_PUD - 1)) +#ifndef __PAGETABLE_PUD_FOLDED/* * For 4-level pagetables we defines these ourselves, for 3-level the @@ -210,8 +212,6 @@ static inline void p4d_clear(p4d_t *p4dp)p4d_val (*p4dp) = (unsigned long )invalid_pud_table; } -#define pud_index (address) (((address) >> PUD_SHIFT) & (PTRS_PER_PUD - 1)) -static inline unsigned long p4d_page_vaddr (p4d_t p4d) {return p4d_val (p4d); --2.25.1
Quoted 8 lines · Mike Rapoport
From: Mike Rapoport <[email protected]>
Commit
31168f033e37("mips: drop__pXd_offset()macros that duplicatepXd_index()ones") is correct thatpud_index()&__pud_offset()are the same whenpud_index()is actually provided, however it does not take into account the__PAGETABLE_PUD_FOLDEDcase. This has broken MIPS KVM compilation because it relied on availability ofpud_index().
Quoted 6 lines
Define
pud_index()regardless of page table folded. It will evaluate to actual index for 4-level pagetables and to 0 for folded PUD level.Reported-by Paolo Bonzini <[email protected]>Signed-off-by Mike Rapoport <[email protected]>
Quoted 27 lines
--- arch/mips/include/asm/pgtable-64.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)arch/mips/include/asm/pgtable-64.h +2
-2@@ -172,6 +172,8 @@extern pte_t invalid_pte_table[PTRS_PER_PTE ]; +#define pud_index (address) (((address) >> PUD_SHIFT) & (PTRS_PER_PUD - 1)) +#ifndef __PAGETABLE_PUD_FOLDED/* * For 4-level pagetables we defines these ourselves, for 3-level the @@ -210,8 +212,6 @@ static inline void p4d_clear(p4d_t *p4dp)p4d_val (*p4dp) = (unsigned long )invalid_pud_table; } -#define pud_index (address) (((address) >> PUD_SHIFT) & (PTRS_PER_PUD - 1)) -static inline unsigned long p4d_page_vaddr (p4d_t p4d) {return p4d_val (p4d);
Quoted 11 lines · Mike Rapoport
From: Mike Rapoport <[email protected]>
Commit
31168f033e37("mips: drop__pXd_offset()macros that duplicatepXd_index()ones") is correct thatpud_index()&__pud_offset()are the same whenpud_index()is actually provided, however it does not take into account the__PAGETABLE_PUD_FOLDEDcase. This has broken MIPS KVM compilation because it relied on availability ofpud_index().Define
pud_index()regardless of page table folded. It will evaluate to actual index for 4-level pagetables and to 0 for folded PUD level.
Quoted 6 lines
Reported-by Paolo Bonzini <[email protected]>Signed-off-by Mike Rapoport <[email protected]>--- arch/mips/include/asm/pgtable-64.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
applied to mips-next.
Thomas.
Signature · 2 lines
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a good idea. [ RFC1925, 2.3 ]