On 05/26/2015 02:09 AM, Aurelien Jarno wrote:
> This is an important detail in case the base register is in the list
> of registers to be loaded. If a page fault occurs this register might be
> overwritten and when the instruction is later restarted the wrong
> base register value is useD.
> 
> Fix this by first loading the first and last value from memory, hence
> triggering all possible page faults, and then the remaining registers.
> 
> This fixes random segmentation faults seen in the guest.
> 
> Cc: Alexander Graf <ag...@suse.de>
> Cc: Richard Henderson <r...@twiddle.net>
> Signed-off-by: Aurelien Jarno <aurel...@aurel32.net>
> ---
>  target-s390x/translate.c | 128 
> ++++++++++++++++++++++++++++++++++++-----------
>  1 file changed, 99 insertions(+), 29 deletions(-)
> 
> Changes v1->v2:
> - Do the load in two steps: first and last registers, and then the remaining 
> ones

Reviewed-by: Richard Henderson <r...@twiddle.net>


r~

Reply via email to