Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7e44fc28 authored by Chris Wilson's avatar Chris Wilson
Browse files

drm/i915/execlists: Notify context-out for lost requests



When cancelling requests, also send the notification to any listeners
(gvt) that the request is no longer scheduled on hw. They may require to
keep the in/out exactly balanced, and so the reuse after the reset may
confuse the listener.

Fixes: 221ab971 ("drm/i915/execlists: Unwind incomplete requests on resets")
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Cc: "Zhenyu Wang" <zhenyuw@linux.intel.com>
Cc: "Wang, Zhi A" <zhi.a.wang@intel.com>
Cc: Michał Winiarski <michal.winiarski@intel.com>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20170926101720.9479-1-chris@chris-wilson.co.uk


Reviewed-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
parent 4e9767bc
Loading
Loading
Loading
Loading
+5 −1
Original line number Original line Diff line number Diff line
@@ -578,7 +578,11 @@ execlist_cancel_port_requests(struct intel_engine_execlists *execlists)
	unsigned int num_ports = ARRAY_SIZE(execlists->port);
	unsigned int num_ports = ARRAY_SIZE(execlists->port);


	while (num_ports-- && port_isset(port)) {
	while (num_ports-- && port_isset(port)) {
		i915_gem_request_put(port_request(port));
		struct drm_i915_gem_request *rq = port_request(port);

		execlists_context_status_change(rq, INTEL_CONTEXT_SCHEDULE_OUT);
		i915_gem_request_put(rq);

		memset(port, 0, sizeof(*port));
		memset(port, 0, sizeof(*port));
		port++;
		port++;
	}
	}