powerpc/mm: Fixup kernel read only mapping
With commite58e87adc8
("powerpc/mm: Update _PAGE_KERNEL_RO") we started using the ppp value 0b110 to map kernel readonly. But that facility was only added as part of ISA 2.04. For earlier ISA version only supported ppp bit value for readonly mapping is 0b011. (This implies both user and kernel get mapped using the same ppp bit value for readonly mapping.). Update the code such that for earlier architecture version we use ppp value 0b011 for readonly mapping. We don't differentiate between power5+ and power5 here and apply the new ppp bits only from power6 (ISA 2.05). This keep the changes minimal. This fixes issue with PS3 spu usage reported at https://lkml.kernel.org/r/rep.1421449714.geoff@infradead.org Fixes:e58e87adc8
("powerpc/mm: Update _PAGE_KERNEL_RO") Cc: stable@vger.kernel.org # v4.7+ Tested-by: Geoff Levand <geoff@infradead.org> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:

committad av
Michael Ellerman

förälder
a1ff57416a
incheckning
984d7a1ec6
@@ -193,8 +193,12 @@ unsigned long htab_convert_pte_flags(unsigned long pteflags)
|
||||
/*
|
||||
* Kernel read only mapped with ppp bits 0b110
|
||||
*/
|
||||
if (!(pteflags & _PAGE_WRITE))
|
||||
rflags |= (HPTE_R_PP0 | 0x2);
|
||||
if (!(pteflags & _PAGE_WRITE)) {
|
||||
if (mmu_has_feature(MMU_FTR_KERNEL_RO))
|
||||
rflags |= (HPTE_R_PP0 | 0x2);
|
||||
else
|
||||
rflags |= 0x3;
|
||||
}
|
||||
} else {
|
||||
if (pteflags & _PAGE_RWX)
|
||||
rflags |= 0x2;
|
||||
|
Referens i nytt ärende
Block a user