提交 cc85e121 编写于 作者: D Daniel Vetter 提交者: Dave Airlie

drm: check that ->set_config properly updates the fb

Historically drm lacked fb refcounting, so the updating of crtc->fb
was done by the lower levels at a point convenient to get their own
refcounting (e.g. refcounts for the underlying gem bo, pinning
refcounts) right. With the introduction of refcounted fbs the drm core
handled the fb refcounts, but still relied on drivers to update the
crtc->fb pointer (this approach required the least invasive changes in
drivers).

Enforce this contract with a WARN_ON.
Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: NDave Airlie <airlied@redhat.com>
上级 372835a8
...@@ -1980,6 +1980,9 @@ int drm_mode_set_config_internal(struct drm_mode_set *set) ...@@ -1980,6 +1980,9 @@ int drm_mode_set_config_internal(struct drm_mode_set *set)
ret = crtc->funcs->set_config(set); ret = crtc->funcs->set_config(set);
if (ret == 0) { if (ret == 0) {
/* crtc->fb must be updated by ->set_config, enforces this. */
WARN_ON(fb != crtc->fb);
if (old_fb) if (old_fb)
drm_framebuffer_unreference(old_fb); drm_framebuffer_unreference(old_fb);
if (fb) if (fb)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册