• Michael Ellerman's avatar
    [PATCH] powerpc/iseries: Fix double phys_to_abs bug in htab_bolt_mapping · 56ec6462
    Michael Ellerman authored
    Before the merge I updated create_pte_mapping() to work for iSeries, by
    calling iSeries_hpte_bolt_or_insert. (4c55130b)
    
    Later we changed iSeries_hpte_insert to cope with the bolting case, and called
    that instead from create_pte_mapping() (which was renamed to htab_bolt_mapping)
    (3c726f8d).
    
    Unfortunately that change introduced a subtle bug, where we pass an absolute
    address to iSeries_hpte_insert() where it expects a physical address. This
    leads to us calling phys_to_abs() twice on the physical address, which is
    seriously bogus.
    
    This only causes a problem if the absolute address from the first translation
    can be looked up again in the chunk_map, which depends on the size and layout
    of memory. I've seen it fail on one box, but not others.
    
    The minimal fix is to pass the physical address to iSeries_hpte_insert(). For
    2.6.17 we should make phys_to_abs() BUG if we try to double-translate an
    address.
    Signed-off-by: default avatarMichael Ellerman <michael@ellerman.id.au>
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    56ec6462
hash_utils_64.c 19.4 KB