Message ID | 5f65cf37be993760de8112a88da194e3ccbb2bf8.1588959697.git.sandipan@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | selftests: vm: pkeys: Some powerpc fixes | expand |
* Sandipan Das: > The Power ISA mandates that all writes to the Authority > Mask Register (AMR) must always be preceded as well as > succeeded by a context-synchronizing instruction. This > applies to both the privileged and unprivileged variants > of the Move To AMR instruction. Ugh. Do you have a reference for that? We need to fix this in glibc. Thanks, Florian
Hi Florian, On 08/05/20 11:31 pm, Florian Weimer wrote: > * Sandipan Das: > >> The Power ISA mandates that all writes to the Authority >> Mask Register (AMR) must always be preceded as well as >> succeeded by a context-synchronizing instruction. This >> applies to both the privileged and unprivileged variants >> of the Move To AMR instruction. > > Ugh. Do you have a reference for that? > > We need to fix this in glibc. > This is from Table 6 of Chapter 11 in page 1134 of Power ISA 3.0B. The document can be found here: https://ibm.ent.box.com/s/1hzcwkwf8rbju5h9iyf44wm94amnlcrv - Sandipan
* Sandipan Das: > Hi Florian, > > On 08/05/20 11:31 pm, Florian Weimer wrote: >> * Sandipan Das: >> >>> The Power ISA mandates that all writes to the Authority >>> Mask Register (AMR) must always be preceded as well as >>> succeeded by a context-synchronizing instruction. This >>> applies to both the privileged and unprivileged variants >>> of the Move To AMR instruction. >> >> Ugh. Do you have a reference for that? >> >> We need to fix this in glibc. >> > > This is from Table 6 of Chapter 11 in page 1134 of Power > ISA 3.0B. The document can be found here: > https://ibm.ent.box.com/s/1hzcwkwf8rbju5h9iyf44wm94amnlcrv Thanks a lot! I filed: <https://sourceware.org/bugzilla/show_bug.cgi?id=25954> Florian
diff --git a/tools/testing/selftests/vm/pkey-powerpc.h b/tools/testing/selftests/vm/pkey-powerpc.h index eb5077de8f1e..1ebb586b2fbc 100644 --- a/tools/testing/selftests/vm/pkey-powerpc.h +++ b/tools/testing/selftests/vm/pkey-powerpc.h @@ -55,7 +55,8 @@ static inline void __write_pkey_reg(u64 pkey_reg) dprintf4("%s() changing %016llx to %016llx\n", __func__, __read_pkey_reg(), pkey_reg); - asm volatile("mtspr 0xd, %0" : : "r" ((unsigned long)(amr)) : "memory"); + asm volatile("isync; mtspr 0xd, %0; isync" + : : "r" ((unsigned long)(amr)) : "memory"); dprintf4("%s() pkey register after changing %016llx to %016llx\n", __func__, __read_pkey_reg(), pkey_reg);
The Power ISA mandates that all writes to the Authority Mask Register (AMR) must always be preceded as well as succeeded by a context-synchronizing instruction. This applies to both the privileged and unprivileged variants of the Move To AMR instruction. Fixes: 130f573c2a79 ("selftests/vm/pkeys: introduce powerpc support") Reported-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com> Suggested-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com> Signed-off-by: Sandipan Das <sandipan@linux.ibm.com> --- tools/testing/selftests/vm/pkey-powerpc.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)