[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 --- 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 #include "i915_drv.h" #include "i915_trace.h" +#include #include #include #include @@ -9816,6 +9817,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc, drm_gem_object_reference(>base); crtc->primary->fb = fb; +drm_atomic_set_fb_for_plane(crtc->primary->state, fb); work->pending_flip_obj = obj; -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[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 xry...@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 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/