From: Thomas Huth Date: Wed, 22 Jan 2014 16:02:46 +0000 (+0100) Subject: s390x/kvm: Fixed bad SIGP SET-ARCHITECTURE handler X-Git-Tag: TizenStudio_2.0_p2.3.2~208^2~1026^2~18 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0788082a4b3f41cb453b654d1a66f87adfa794a9;p=sdk%2Femulator%2Fqemu.git s390x/kvm: Fixed bad SIGP SET-ARCHITECTURE handler The SET-ARCHITECTURE handler in QEMU caused a program interruption. This is wrong according to the "Principles of Operations" specification (since SIGP should never cause a program interrupt) and was likely only introduced for debugging purposes. Since we handle SET-ARCHITECTURE in the kernel already and only dropped to user space in case of bad mode parameters, we should just report INVALID PARAMETER in QEMU instead. Signed-off-by: Thomas Huth Reviewed-by: Cornelia Huck Signed-off-by: Christian Borntraeger --- diff --git a/target-s390x/kvm.c b/target-s390x/kvm.c index 9430a35..b93fe84 100644 --- a/target-s390x/kvm.c +++ b/target-s390x/kvm.c @@ -676,8 +676,10 @@ static int handle_sigp(S390CPU *cpu, struct kvm_run *run, uint8_t ipa1) cc = kvm_s390_cpu_restart(target_cpu); break; case SIGP_SET_ARCH: - /* make the caller panic */ - return -1; + *statusreg &= 0xffffffff00000000UL; + *statusreg |= SIGP_STAT_INVALID_PARAMETER; + cc = 1; /* status stored */ + break; case SIGP_INITIAL_CPU_RESET: cc = s390_cpu_initial_reset(target_cpu); break;