On 18/08/15 04:50, Philipp Kern wrote:
> According to "CPU Signaling and Response", "Signal-Processor Orders",
> the order field is bit position 56-63. Without this, the Linux
> guest kernel is sometimes unable to stop emulation and enters
> an infinite loop of "XXX unknown sigp: 0xffffffff00000005".
> 
> Signed-off-by: Philipp Kern <p...@philkern.de>
> ---
>  target-s390x/misc_helper.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/target-s390x/misc_helper.c b/target-s390x/misc_helper.c
> index 8eac0e1..0f0907c 100644
> --- a/target-s390x/misc_helper.c
> +++ b/target-s390x/misc_helper.c
> @@ -500,7 +500,7 @@ uint32_t HELPER(sigp)(CPUS390XState *env, uint64_t 
> order_code, uint32_t r1,
>      /* Remember: Use "R1 or R1 + 1, whichever is the odd-numbered register"
>         as parameter (input). Status (output) is always R1. */
>  
> -    switch (order_code) {
> +    switch (order_code & 0xff) {
>      case SIGP_SET_ARCH:
>          /* switch arch */
>          break;

Reviewed-by: Thomas Huth <th...@tuxfamily.org>

(by the way, please make sure to copy the maintainers on CC: or your
patch might get lost in the high traffic of qemu-devel mailing list)


Reply via email to