diff options
| author | Dave Kleikamp <shaggy@linux.vnet.ibm.com> | 2008-07-07 10:28:55 -0400 |
|---|---|---|
| committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2008-07-09 02:30:46 -0400 |
| commit | 801eb73f45371accc78ca9d6d22d647eeb722c11 (patch) | |
| tree | 4bd392fcae5b158551afdebb57f9fc353bf890c4 | |
| parent | ef3d3246a0d06be622867d21af25f997aeeb105f (diff) | |
powerpc/mm: Don't clear _PAGE_COHERENT when _PAGE_SAO is set
The current low level hash code on LPAR configurations clears
_PAGE_COHERENT (M) when either _PAGE_GUARDED (G) or _PAGE_NO_CACHE (I)
is set. This conflicts with _PAGE_SAO which has M, I and W bits sets at
once (normally invalid combo) to indicate the new SAO attribute.
This changes the code to allow that case.
Signed-off-by: Dave Kleikamp <shaggy@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
| -rw-r--r-- | arch/powerpc/platforms/pseries/lpar.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/powerpc/platforms/pseries/lpar.c b/arch/powerpc/platforms/pseries/lpar.c index 3b4651b6ee05..38b5927b3629 100644 --- a/arch/powerpc/platforms/pseries/lpar.c +++ b/arch/powerpc/platforms/pseries/lpar.c | |||
| @@ -305,7 +305,8 @@ static long pSeries_lpar_hpte_insert(unsigned long hpte_group, | |||
| 305 | flags = 0; | 305 | flags = 0; |
| 306 | 306 | ||
| 307 | /* Make pHyp happy */ | 307 | /* Make pHyp happy */ |
| 308 | if (rflags & (_PAGE_GUARDED|_PAGE_NO_CACHE)) | 308 | if ((rflags & _PAGE_GUARDED) || |
| 309 | ((rflags & _PAGE_NO_CACHE) & !(rflags & _PAGE_WRITETHRU))) | ||
| 309 | hpte_r &= ~_PAGE_COHERENT; | 310 | hpte_r &= ~_PAGE_COHERENT; |
| 310 | 311 | ||
| 311 | lpar_rc = plpar_pte_enter(flags, hpte_group, hpte_v, hpte_r, &slot); | 312 | lpar_rc = plpar_pte_enter(flags, hpte_group, hpte_v, hpte_r, &slot); |
