Mesa (main): iris: extract iris_hw_context_set_unrecoverable()

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Dec 3 01:14:03 UTC 2021


Module: Mesa
Branch: main
Commit: dd89c6ca65f2f623faf975a772a4483151e52aa6
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=dd89c6ca65f2f623faf975a772a4483151e52aa6

Author: Paulo Zanoni <paulo.r.zanoni at intel.com>
Date:   Thu Oct  7 17:31:33 2021 -0700

iris: extract iris_hw_context_set_unrecoverable()

We're going to add a second caller.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni at intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12692>

---

 src/gallium/drivers/iris/iris_bufmgr.c | 27 +++++++++++++++++----------
 src/gallium/drivers/iris/iris_bufmgr.h |  2 ++
 2 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/src/gallium/drivers/iris/iris_bufmgr.c b/src/gallium/drivers/iris/iris_bufmgr.c
index 55a341cf9af..467f24fb5e6 100644
--- a/src/gallium/drivers/iris/iris_bufmgr.c
+++ b/src/gallium/drivers/iris/iris_bufmgr.c
@@ -2015,16 +2015,10 @@ init_cache_buckets(struct iris_bufmgr *bufmgr, bool local)
    }
 }
 
-uint32_t
-iris_create_hw_context(struct iris_bufmgr *bufmgr)
+void
+iris_hw_context_set_unrecoverable(struct iris_bufmgr *bufmgr,
+                                  uint32_t ctx_id)
 {
-   struct drm_i915_gem_context_create create = { };
-   int ret = intel_ioctl(bufmgr->fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, &create);
-   if (ret != 0) {
-      DBG("DRM_IOCTL_I915_GEM_CONTEXT_CREATE failed: %s\n", strerror(errno));
-      return 0;
-   }
-
    /* Upon declaring a GPU hang, the kernel will zap the guilty context
     * back to the default logical HW state and attempt to continue on to
     * our next submitted batchbuffer.  However, our render batches assume
@@ -2041,11 +2035,24 @@ iris_create_hw_context(struct iris_bufmgr *bufmgr)
     * we'll have two lost batches instead of a continual stream of hangs.
     */
    struct drm_i915_gem_context_param p = {
-      .ctx_id = create.ctx_id,
+      .ctx_id = ctx_id,
       .param = I915_CONTEXT_PARAM_RECOVERABLE,
       .value = false,
    };
    intel_ioctl(bufmgr->fd, DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM, &p);
+}
+
+uint32_t
+iris_create_hw_context(struct iris_bufmgr *bufmgr)
+{
+   struct drm_i915_gem_context_create create = { };
+   int ret = intel_ioctl(bufmgr->fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, &create);
+   if (ret != 0) {
+      DBG("DRM_IOCTL_I915_GEM_CONTEXT_CREATE failed: %s\n", strerror(errno));
+      return 0;
+   }
+
+   iris_hw_context_set_unrecoverable(bufmgr, create.ctx_id);
 
    return create.ctx_id;
 }
diff --git a/src/gallium/drivers/iris/iris_bufmgr.h b/src/gallium/drivers/iris/iris_bufmgr.h
index 010ce424313..197b9e93635 100644
--- a/src/gallium/drivers/iris/iris_bufmgr.h
+++ b/src/gallium/drivers/iris/iris_bufmgr.h
@@ -455,6 +455,8 @@ uint32_t iris_clone_hw_context(struct iris_bufmgr *bufmgr, uint32_t ctx_id);
 #define IRIS_CONTEXT_MEDIUM_PRIORITY (I915_CONTEXT_DEFAULT_PRIORITY)
 #define IRIS_CONTEXT_HIGH_PRIORITY   ((I915_CONTEXT_MAX_USER_PRIORITY+1)/2)
 
+void iris_hw_context_set_unrecoverable(struct iris_bufmgr *bufmgr,
+                                       uint32_t ctx_id);
 int iris_hw_context_set_priority(struct iris_bufmgr *bufmgr,
                                  uint32_t ctx_id, int priority);
 



More information about the mesa-commit mailing list