Message ID | 20170818110015.25310-1-cohuck@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 18.08.2017 13:00, Cornelia Huck wrote: > While the PoP is silent on the issue, z/VM documentation states > that unknown diagnose codes trigger a specification exception. > We already do that when running with kvm, so change tcg to do so > as well. I just tried on a z/VM guest what happens if I call diag with an unsupported code, and the Linux kernel then crashes with a specification exception, indeed. So this sounds like the right thing to do! > This is on top of "s390x: wire up diag288 in tcg". May I suggest to order the patches the other way round? ... that's less code churn that way. Thomas
On Fri, 18 Aug 2017 13:26:15 +0200 Thomas Huth <thuth@redhat.com> wrote: > On 18.08.2017 13:00, Cornelia Huck wrote: > > While the PoP is silent on the issue, z/VM documentation states > > that unknown diagnose codes trigger a specification exception. > > We already do that when running with kvm, so change tcg to do so > > as well. > > I just tried on a z/VM guest what happens if I call diag with an > unsupported code, and the Linux kernel then crashes with a specification > exception, indeed. So this sounds like the right thing to do! For reference, here's the relevant hunk in z/VM documentation: https://www.ibm.com/support/knowledgecenter/SSB27U_6.4.0/com.ibm.zvm.v640.hcpb4/hcpb432.htm > > > This is on top of "s390x: wire up diag288 in tcg". > > May I suggest to order the patches the other way round? ... that's less > code churn that way. Let me detangle my branches...
diff --git a/target/s390x/misc_helper.c b/target/s390x/misc_helper.c index 80a13a1b66..34d730ba73 100644 --- a/target/s390x/misc_helper.c +++ b/target/s390x/misc_helper.c @@ -106,10 +106,6 @@ void HELPER(diag)(CPUS390XState *env, uint32_t r1, uint32_t r3, uint32_t num) case 0x288: /* time bomb (watchdog) */ r = handle_diag_288(env, r1, r3); - if (r) { - program_interrupt(env, PGM_SPECIFICATION, ILEN_AUTO); - r = 0; - } break; default: r = -1; @@ -117,7 +113,7 @@ void HELPER(diag)(CPUS390XState *env, uint32_t r1, uint32_t r3, uint32_t num) } if (r) { - program_interrupt(env, PGM_OPERATION, ILEN_AUTO); + program_interrupt(env, PGM_SPECIFICATION, ILEN_AUTO); } }
While the PoP is silent on the issue, z/VM documentation states that unknown diagnose codes trigger a specification exception. We already do that when running with kvm, so change tcg to do so as well. Signed-off-by: Cornelia Huck <cohuck@redhat.com> --- This is on top of "s390x: wire up diag288 in tcg". --- target/s390x/misc_helper.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-)