Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

powerpc/epapr: add "memory" as a clobber to all hypercalls

The "memory" clobber tells the compiler to ensure that all writes to memory
are committed before the hypercall is made.

"memory" is only necessary for hcalls where the Hypervisor will read or
write guest memory. However, we add it to all hcalls because the impact is
minimal, and we want to ensure that it's present for the hcalls that need
it.

Signed-off-by: Timur Tabi <timur@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>

authored by

Timur Tabi and committed by
Kumar Gala
3b588c7e 2a78aeb1

+6 -1
+6 -1
arch/powerpc/include/asm/epapr_hcalls.h
··· 134 134 * whether they will be clobbered. 135 135 * 136 136 * Note that r11 can be used as an output parameter. 137 + * 138 + * The "memory" clobber is only necessary for hcalls where the Hypervisor 139 + * will read or write guest memory. However, we add it to all hcalls because 140 + * the impact is minimal, and we want to ensure that it's present for the 141 + * hcalls that need it. 137 142 */ 138 143 139 144 /* List of common clobbered registers. Do not use this macro. */ 140 - #define EV_HCALL_CLOBBERS "r0", "r12", "xer", "ctr", "lr", "cc" 145 + #define EV_HCALL_CLOBBERS "r0", "r12", "xer", "ctr", "lr", "cc", "memory" 141 146 142 147 #define EV_HCALL_CLOBBERS8 EV_HCALL_CLOBBERS 143 148 #define EV_HCALL_CLOBBERS7 EV_HCALL_CLOBBERS8, "r10"