On Mon, 25 Apr 2022 at 16:22, Ramalingam C <ramalingam.c@xxxxxxxxx> wrote: > > From: Chris Wilson <chris.p.wilson@xxxxxxxxx> > > Userspace may leave predication enabled upon return from the batch > buffer, which has the consequent of preventing all operation from the > ring from being executed, including all the synchronisation, coherency > control, arbitration and user signaling. This is more than just a local > gpu hang in one client, as the user has the ability to prevent the > kernel from applying critical workarounds and can cause a full GT reset. > > We could simply execute MI_SET_PREDICATE upon return from the user > batch, but this has the repercussion of modifying the user's context > state. Instead, we opt to execute a fixup batch which by mixing > predicated operations can determine the state of the > SET_PREDICATE_RESULT register and restore it prior to the next userspace > batch. This allows us to protect the kernel's ring without changing the > uABI. > > Suggested-by: Zbigniew Kempczynski <zbigniew.kempczynski@xxxxxxxxx> > Signed-off-by: Chris Wilson <chris.p.wilson@xxxxxxxxx> > Cc: Zbigniew Kempczynski <zbigniew.kempczynski@xxxxxxxxx> > Cc: Thomas Hellstrom <thomas.hellstrom@xxxxxxxxx> > Signed-off-by: Ramalingam C <ramalingam.c@xxxxxxxxx> Reviewed-by: Matthew Auld <matthew.auld@xxxxxxxxx>