• Benjamin Herrenschmidt's avatar
    powerpc/mm: Fix attribute confusion with htab_bolt_mapping() · bc033b63
    Benjamin Herrenschmidt authored
    The function htab_bolt_mapping() is used to create permanent
    mappings in the MMU hash table, for example, in order to create
    the linear mapping of vmemmap.  It's also used by early boot
    ioremap (before mem_init_done).
    
    However, the way ioremap uses it is incorrect as it passes it the
    protection flags in the "linux PTE" form while htab_bolt_mapping()
    expects them in the hash table format.  This is made more confusing by
    the fact that some of those flags are actually in the same position in
    both cases.
    
    This fixes it all by making htab_bolt_mapping() take normal linux
    protection flags instead, and use a little helper to convert them to
    htab flags. Callers can now use the usual PAGE_* definitions safely.
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    
     arch/powerpc/include/asm/mmu-hash64.h |    2 -
     arch/powerpc/mm/hash_utils_64.c       |   65 ++++++++++++++++++++--------------
     arch/powerpc/mm/init_64.c             |    9 +---
     3 files changed, 44 insertions(+), 32 deletions(-)
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    bc033b63
hash_utils_64.c 31.2 KB