]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915: Invalidate TLBs for the rings after a reset
authorChris Wilson <chris@chris-wilson.co.uk>
Tue, 6 Aug 2013 18:01:14 +0000 (19:01 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Sun, 18 Aug 2013 17:37:41 +0000 (19:37 +0200)
commitf94d7d8dc91c0173c924b9b3c2e358bfcc885ff3
treedc65ac88ef7c7a15e1f773c0f5255178e392b4cd
parent993698c2d67195bbd498576e84737c82a69a9193
drm/i915: Invalidate TLBs for the rings after a reset

After any "soft gfx reset" we must manually invalidate the TLBs
associated with each ring. Empirically, it seems that a
suspend/resume or D3-D0 cycle count as a "soft reset". The symptom is
that the hardware would fail to note the new address for its status
page, and so it would continue to write the shadow registers and
breadcrumbs into the old physical address (now used by something
completely different, scary). Whereas the driver would read the new
status page and never see any progress, it would appear that the GPU
hung immediately upon resume.

Based on a patch by naresh kumar kachhi <naresh.kumar.kacchi@intel.com>

Reported-by: Thiago Macieira <thiago@kde.org>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=64725
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Tested-by: Thiago Macieira <thiago@kde.org>
Cc: stable@vger.kernel.org
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_reg.h
drivers/gpu/drm/i915/intel_ringbuffer.c