On 27/07/2017 17:35, ooh...@gmail.com (Oliver O'Halloran) wrote: > The ISA radix translation tree contains two different types of entry, > directories and leaves. The formats of the two entries are different > with the directory entries containing no spare bits for use by software. > As a result we need to ensure that the *_devmap() family of functions > check fail for everything except leaf (PTE) entries. > > Signed-off-by: Oliver O'Halloran <ooh...@gmail.com> > --- > "i'll just tweak the mbox before i sent it, what's the worst that can happen" > *completely breaks KVM* > "..." > --- > arch/powerpc/include/asm/book3s/64/pgtable.h | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/arch/powerpc/include/asm/book3s/64/pgtable.h > b/arch/powerpc/include/asm/book3s/64/pgtable.h > index d1da415..6bc6248 100644 > --- a/arch/powerpc/include/asm/book3s/64/pgtable.h > +++ b/arch/powerpc/include/asm/book3s/64/pgtable.h > @@ -610,7 +610,9 @@ static inline pte_t pte_mkdevmap(pte_t pte) > > static inline int pte_devmap(pte_t pte) > { > - return !!(pte_raw(pte) & cpu_to_be64(_PAGE_DEVMAP)); > + uint64_t mask = cpu_to_be64(_PAGE_DEVMAP | _PAGE_PTE); > + > + return (pte_raw(pte) & mask) == mask; > } > > static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) >
Tested-by: Laurent Vivier <lviv...@redhat.com>