powerpc/mm/hash: Don't add memory coherence if cache inhibited is set
authorAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Fri, 17 Jun 2016 06:02:00 +0000 (11:32 +0530)
committerMichael Ellerman <mpe@ellerman.id.au>
Fri, 17 Jun 2016 09:47:51 +0000 (19:47 +1000)
commite568006b9d828403397668864d9797dc4bfefd28
tree5d33a311e57ea12fecda5c04edca711b653cc845
parent8550e2fa34f077c8a87cf1ba2453102bbbc9ade9
powerpc/mm/hash: Don't add memory coherence if cache inhibited is set

H_ENTER hcall handling in qemu had assumptions that a cache inhibited
hpte entry won't have memory conference set. Also older kernel
mentioned that some version of pHyp required this (the code removed
by the below commit says:

    /* Make pHyp happy */
    if ((rflags & _PAGE_NO_CACHE) && !(rflags & _PAGE_WRITETHRU))
            hpte_r &= ~HPTE_R_M;

But with older kernel we had some inconsistent memory conherence
mapping. We always enabled memory conherence in the page fault path and
removed memory conherence is _PAGE_NO_CACHE was set when we mapped the
page via htab_bolt_mapping. The commit mentioned below tried to
consolidate that by always enabling memory conherence. But as mentioned
above that breaks Qemu H_ENTER handling.

This patch update this such that we enable memory conherence only if
cache inhibited is not set and bring fault handling, lpar and bolt
mapping in sync.

Fixes: commit 30bda41aba4e("powerpc/mm: Drop WIMG in favour of new constant")
Reported-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/mm/hash_utils_64.c