s390x/kvm: unknown DIAGNOSE code should give a specification exception
authorChristian Borntraeger <borntraeger@de.ibm.com>
Thu, 18 Dec 2014 09:04:17 +0000 (10:04 +0100)
committerCornelia Huck <cornelia.huck@de.ibm.com>
Tue, 3 Feb 2015 12:42:40 +0000 (13:42 +0100)
As described in CP programming services an unimplemented DIAGNOSE
function should return a specification exception. Today we give the
guest an operation exception.
As both exception types are suppressing and Linux as a guest does not
care about the type of program check in its exception table handler
as long as both types have the same kind of error handling (nullifying,
terminating, suppressing etc.) this was unnoticed.

Reviewed-by: Thomas Huth <thuth@linux.vnet.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
target-s390x/kvm.c

index 6bf2719c43d2c2afba189cd1b1e0755c1f5811f4..6f2d5b492412768c7f7e48335476b6c2bce73826 100644 (file)
@@ -1091,7 +1091,7 @@ static int handle_diag(S390CPU *cpu, struct kvm_run *run, uint32_t ipb)
         break;
     default:
         DPRINTF("KVM: unknown DIAG: 0x%x\n", func_code);
-        r = -1;
+        enter_pgmcheck(cpu, PGM_SPECIFICATION);
         break;
     }