• Christian Borntraeger's avatar
    KVM: s390: detect some program check loops · fb7dc1d4
    Christian Borntraeger authored
    Sometimes (e.g. early boot) a guest is broken in such ways that it loops
    100% delivering operation exceptions (illegal operation) but the pgm new
    PSW is not set properly. This will result in code being read from
    address zero, which usually contains another illegal op. Let's detect
    this case and return to userspace. Instead of only detecting
    this for address zero apply a heuristic that will work for any program
    check new psw.
    We do not want guest problem state to be able to trigger a guest panic,
    e.g. by faulting on an address that is the same as the program check
    new PSW, so we check for the problem state bit being off.
    
    With proper handling in userspace we
    a: get rid of CPU consumption of such broken guests
    b: keep the program old PSW. This allows to find out the original illegal
       operation - making debugging such early boot issues much easier than
       with single stepping
    Signed-off-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
    Reviewed-by: default avatarCornelia Huck <cornelia.huck@de.ibm.com>
    fb7dc1d4
intercept.c 11.4 KB