2f2ba050f6
On gfx11, with a sequence such as s_trap 2 s_sendmsg sendmsg(MSG_DEALLOC_VGPRS) s_endpgm the s_sendmsg does deallocate registers while the wave is supposed to be stopped. As a result, the wave cannot do the expected context save operations, and cannot context save. To avoid this problem, park the wave in the trap handler for gfx11. Note that gfx11 has implemented an instruction cache prefetch. When parked, the prefetch tries to access memory past the end of trap handler which causes memory violation exceptions to be reported. To avoid this, we need to add padding at the end of the trap handler. The padding consists of `s_code_end` instructions Given that the trap handler is loaded at a 0x1000 aligned address the maximum prefetch amount (in bytes) is given by `256 - (trap_handler_size % 64)`. Change-Id: I5446da54a965a64f21cb0fd3ce3caa4b6137a933