提交 146d84f0 编写于 作者: J John Harrison 提交者: Daniel Vetter

drm/i915: Fix up seqno -> request merge issues

The display related patches earlier in this series were edited during merge to
improve the request unreferencing. Specifically, the need for de-referencing at
interrupt time was removed. However, the resulting code did a 'deref(req) ; req
= NULL' sequence rather than using the 'req_assign(req, NULL)' wrapper. The two
are functionally equivalent, but using the wrapper is more consistent with all
the other places where requests are assigned.

Note that the whole point of the wrapper is that using it everywhere that
request pointers are assigned means that the reference counting is done
automatically and can't be accidentally forgotten about. Plus it allows simpler
future maintainance if the reference counting mechanisms ever need to change.

For: VIZ-4377
Signed-off-by: NJohn Harrison <John.C.Harrison@Intel.com>
Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
上级 cf4c7c12
...@@ -8953,8 +8953,7 @@ static void intel_unpin_work_fn(struct work_struct *__work) ...@@ -8953,8 +8953,7 @@ static void intel_unpin_work_fn(struct work_struct *__work)
intel_update_fbc(dev); intel_update_fbc(dev);
if (work->flip_queued_req) if (work->flip_queued_req)
i915_gem_request_unreference(work->flip_queued_req); i915_gem_request_assign(&work->flip_queued_req, NULL);
work->flip_queued_req = NULL;
mutex_unlock(&dev->struct_mutex); mutex_unlock(&dev->struct_mutex);
intel_frontbuffer_flip_complete(dev, INTEL_FRONTBUFFER_PRIMARY(pipe)); intel_frontbuffer_flip_complete(dev, INTEL_FRONTBUFFER_PRIMARY(pipe));
...@@ -9452,10 +9451,9 @@ static void intel_mmio_flip_work_func(struct work_struct *work) ...@@ -9452,10 +9451,9 @@ static void intel_mmio_flip_work_func(struct work_struct *work)
intel_do_mmio_flip(crtc); intel_do_mmio_flip(crtc);
if (mmio_flip->req) { if (mmio_flip->req) {
mutex_lock(&crtc->base.dev->struct_mutex); mutex_lock(&crtc->base.dev->struct_mutex);
i915_gem_request_unreference(mmio_flip->req); i915_gem_request_assign(&mmio_flip->req, NULL);
mutex_unlock(&crtc->base.dev->struct_mutex); mutex_unlock(&crtc->base.dev->struct_mutex);
} }
mmio_flip->req = NULL;
} }
static int intel_queue_mmio_flip(struct drm_device *dev, static int intel_queue_mmio_flip(struct drm_device *dev,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册