<div dir="ltr"><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jun 27, 2023 at 5:31 PM André Almeida <<a href="mailto:andrealmeid@igalia.com">andrealmeid@igalia.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Marek,<br>
<br>
Em 27/06/2023 15:57, Marek Olšák escreveu:<br>
> On Tue, Jun 27, 2023, 09:23 André Almeida <<a href="mailto:andrealmeid@igalia.com" target="_blank">andrealmeid@igalia.com</a> <br>
> <mailto:<a href="mailto:andrealmeid@igalia.com" target="_blank">andrealmeid@igalia.com</a>>> wrote:<br>
> <br>
>     +User Mode Driver<br>
>     +----------------<br>
>     +<br>
>     +The UMD should check before submitting new commands to the KMD if<br>
>     the device has<br>
>     +been reset, and this can be checked more often if the UMD requires<br>
>     it. After<br>
>     +detecting a reset, UMD will then proceed to report it to the<br>
>     application using<br>
>     +the appropriate API error code, as explained in the section below about<br>
>     +robustness.<br>
> <br>
> <br>
> The UMD won't check the device status before every command submission <br>
> due to ioctl overhead. Instead, the KMD should skip command submission <br>
> and return an error that it was skipped.<br>
<br>
I wrote like this because when reading the source code for <br>
vk::check_status()[0] and Gallium's si_flush_gfx_cs()[1], I was under <br>
the impression that UMD checks the reset status before every <br>
submission/flush.<br></blockquote><div><br></div><div>It only does that before every command submission when the context is robust. When it's not robust, radeonsi doesn't do anything.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Is your comment about of how things are currently implemented, or how <br>
they would ideally work? Either way I can apply your suggestion, I just <br>
want to make it clear.<br></blockquote><div><br></div><div>Yes. Ideally, we would get the reply whether the context is lost from the CS ioctl. This is not currently implemented.<br></div><div><br></div><div>Marek<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
[0] <br>
<a href="https://elixir.bootlin.com/mesa/mesa-23.1.3/source/src/vulkan/runtime/vk_device.h#L142" rel="noreferrer" target="_blank">https://elixir.bootlin.com/mesa/mesa-23.1.3/source/src/vulkan/runtime/vk_device.h#L142</a><br>
[1] <br>
<a href="https://elixir.bootlin.com/mesa/mesa-23.1.3/source/src/gallium/drivers/radeonsi/si_gfx_cs.c#L83" rel="noreferrer" target="_blank">https://elixir.bootlin.com/mesa/mesa-23.1.3/source/src/gallium/drivers/radeonsi/si_gfx_cs.c#L83</a><br>
<br>
> <br>
> The only case where that won't be applicable is user queues where <br>
> drivers don't call into the kernel to submit work, but they do call into <br>
> the kernel to create a dma_fence. In that case, the call to create a <br>
> dma_fence can fail with an error.<br>
> <br>
> Marek<br>
<br>
</blockquote></div></div>