[PATCH 1/1] drm/i915: Fix BUG in i915_gem.c when switch to console

2015-03-10 Thread Xi Ruoyao

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

2015-03-10 Thread Xi Ruoyao

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/