summary refs log tree commit diff
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2020-05-11 11:20:02 +0200
committerFlorian Weimer <fweimer@redhat.com>2020-05-11 16:11:47 +0200
commite627106266ad8785457fadbf5bf67ed604d2a353 (patch)
tree39296463b2d7b64c06c672fecfbe64bc9a1bfeef
parent61416e19218605a54e94edd9740bbe9d2785af6d (diff)
downloadglibc-e627106266ad8785457fadbf5bf67ed604d2a353.tar.gz
glibc-e627106266ad8785457fadbf5bf67ed604d2a353.tar.xz
glibc-e627106266ad8785457fadbf5bf67ed604d2a353.zip
POWER: Add context-synchronizing instructions to pkey_write [BZ #25954]
Sandipan Das reported that,

"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.

This [requirement] 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>
"

See this kernel patch submission:

<https://lore.kernel.org/linuxppc-dev/5f65cf37be993760de8112a88da194e3ccbb2bf8.1588959697.git.sandipan@linux.ibm.com/>
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/arch-pkey.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/arch-pkey.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/arch-pkey.h
index 623b073d5a..25d080c9a6 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/arch-pkey.h
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/arch-pkey.h
@@ -37,7 +37,7 @@ pkey_read (void)
 static inline void
 pkey_write (unsigned long int value)
 {
-  __asm__ volatile ("mtspr 13, %0" : : "r" (value));
+  __asm__ volatile ("isync; mtspr 13, %0; isync" : : "r" (value));
 }
 
 /* Number of the largest supported key.  This depends on the width of