DIAG 308 (subcode 10 - performing secure execution unpack) response code when the configuration is unable to enter secure mode has limited usability as it is a fixed value (0xa02) for variety of different reasons. The aim is to extend this DIAG to return UVC command ID, RC and RRC values in addition to the diag response code. This feature can be used by the stage3a bootloader (s390-tools/rust/pvimg/boot) to read these new values from the corresponding register and print an appropriate error message to help pin point the cause.
The response code, UVC RC, RRC, and command ID are returned in bit positions 48-63, 32-47, 16-31, and 0-15 of register R1 + 1 if the function does not complete successfully (Previously, only the response code was returned in bits 48-63). Gautam Gala (3): target/s390x: Introduce constant when checking if PV header couldn't be decrypted target/s390x: introduce function when exiting PV target/s390x: Return UVC cmd code, RC and RRC value when DIAG 308 Subcode 10 fails to enter secure mode hw/s390x/ipl.c | 11 ++++--- hw/s390x/ipl.h | 5 +-- hw/s390x/s390-virtio-ccw.c | 24 +++++++++++---- target/s390x/kvm/pv.c | 62 ++++++++++++++++++++++++-------------- target/s390x/kvm/pv.h | 27 ++++++++++++----- 5 files changed, 86 insertions(+), 43 deletions(-) -- 2.49.0