<div dir="ltr">I just sent a patch to address that.  Thanks!<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, May 18, 2017 at 2:04 PM, Lionel Landwerlin <span dir="ltr"><<a href="mailto:lionel.g.landwerlin@intel.com" target="_blank">lionel.g.landwerlin@intel.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This looks good, but I wonder whether we're missing a vk_errorf() in anv_QueueSubmit() when we get an error from anv_cmd_buffer_execbuf().<br>
In that case it looks like we won't abort.<div class="HOEnZb"><div class="h5"><br>
<br>
On 18/05/17 21:51, Jason Ekstrand wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
This is mostly for running in our CI system to prevent dEQP from<br>
continuing on to the next test if we get a GPU hang.  As it currently<br>
stands, dEQP uses the same VkDevice for almost all tests and if one of<br>
the tests hangs, we set the anv_device::device_lost flag and report<br>
VK_ERROR_DEVICE_LOST for all queue operations from that point forward<br>
without sending anything to the GPU.  dEQP will happily continue trying<br>
to run tests and reporting failures until it eventually gets crash that<br>
forces the test runner to start over.  This circumvents the problem by<br>
just aborting the process if we ever get a GPU hang.  Since this is not<br>
the recommended behavior most of the time, we hide it behind an<br>
environment variable.<br>
<br>
Cc: Mark Janes <<a href="mailto:mark.a.janes@intel.com" target="_blank">mark.a.janes@intel.com</a>><br>
---<br>
  src/intel/vulkan/anv_util.c | 5 +++++<br>
  1 file changed, 5 insertions(+)<br>
<br>
diff --git a/src/intel/vulkan/anv_util.c b/src/intel/vulkan/anv_util.c<br>
index ba91733..4b916e2 100644<br>
--- a/src/intel/vulkan/anv_util.c<br>
+++ b/src/intel/vulkan/anv_util.c<br>
@@ -30,6 +30,7 @@<br>
    #include "anv_private.h"<br>
  #include "vk_enum_to_str.h"<br>
+#include "util/debug.h"<br>
    /** Log an error message.  */<br>
  void anv_printflike(1, 2)<br>
@@ -95,5 +96,9 @@ __vk_errorf(VkResult error, const char *file, int line, const char *format, ...)<br>
        fprintf(stderr, "%s:%d: %s\n", file, line, error_str);<br>
     }<br>
  +   if (error == VK_ERROR_DEVICE_LOST &&<br>
+       env_var_as_boolean("ANV_<wbr>ABORT_ON_DEVICE_LOSS", false))<br>
+      abort();<br>
+<br>
     return error;<br>
  }<br>
</blockquote>
<br>
<br>
</div></div></blockquote></div><br></div>