Messages in this thread Patch in this message | | | Date | Wed, 11 Mar 2015 13:39:43 +0800 | From | Xi Ruoyao <> | Subject | [PATCH 1/1] drm/i915: Fix BUG in i915_gem.c when switch to console |
| |
In intel_crtc_page_flip, intel_display.c, the code changed the framebuffer assigned to plane crtc->primary by
crtc->primary->fb = fb;
However, it forgot to change crtc->primary->state->fb. However, when we switch to console, some kernel code will read crtc->primary->state->fb to get the framebuffer assigned to crtc->primaty. Then a framebuffer object can be unpinned twice and a kernel BUG will be produced in i915_gem.c.
So, update crtc->primary->state->fb in intel_display.c using drm_atomic_set_fb_for_plane to fix the BUG.
Signed-off-by: Xi Ruoyao <xry111@outlook.com> --- drivers/gpu/drm/i915/intel_display.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index e730789..97083fd 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -37,6 +37,7 @@ #include <drm/i915_drm.h> #include "i915_drv.h" #include "i915_trace.h" +#include <drm/drm_atomic.h> #include <drm/drm_atomic_helper.h> #include <drm/drm_dp_helper.h> #include <drm/drm_crtc_helper.h> @@ -9816,6 +9817,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc, drm_gem_object_reference(&obj->base);
crtc->primary->fb = fb; + drm_atomic_set_fb_for_plane(crtc->primary->state, fb);
work->pending_flip_obj = obj;
-- 1.9.1
| |