Handle traps, illegal instruction, memory violations through queue signal

Report traps and fatal exceptions through a wavefront's
amd_queue_t.queue_inactive_signal. Previously, only traps were
reported and requireed the compiler to pass in the signal pointer
in s[0:1].

The signal is obtained through a mapping from doorbell index to
amd_queue_t*. The doorbell is fetched within a wavefront through
the gfx9+ S_SENDMSG(MSG_GET_DOORBELL) instruction.

Change-Id: I319b45f2e15dfcfe4db8f4065da1136e9539a42b
This commit is contained in:
Jay Cornwall
2019-06-20 13:22:14 -05:00
committato da Sean Keely
parent 6ed686ee29
commit ff8f439112
6 ha cambiato i file con 104 aggiunte e 12 eliminazioni
@@ -2719,6 +2719,17 @@ hsa_status_t hsa_status_string(
*status_string =
"HSA_STATUS_ERROR_FATAL: The queue received an error that may require process "
"termination.";
break;
case HSA_STATUS_ERROR_MEMORY_APERTURE_VIOLATION:
*status_string =
"HSA_STATUS_ERROR_MEMORY_APERTURE_VIOLATION: The agent attempted to access "
"memory beyond the largest legal address.";
break;
case HSA_STATUS_ERROR_ILLEGAL_INSTRUCTION:
*status_string =
"HSA_STATUS_ERROR_ILLEGAL_INSTRUCTION: The agent attempted to execute an "
"illegal shader instruction.";
break;
case HSA_EXT_STATUS_ERROR_IMAGE_FORMAT_UNSUPPORTED:
*status_string =
"HSA_EXT_STATUS_ERROR_IMAGE_FORMAT_UNSUPPORTED: Image "