summaryrefslogtreecommitdiffstats
path: root/init
diff options
context:
space:
mode:
authorBoris Brezillon <boris.brezillon@bootlin.com>2018-04-30 15:32:32 +0200
committerEric Anholt <eric@anholt.net>2018-04-30 12:36:28 -0700
commitf7aef1c207092770d06d0df21dceafdca2b49c39 (patch)
tree5e9a942aae8caf49fa5a389cb3f6be4b4468eb92 /init
parent1f6b8eef11c3d097bc8a6b2bbb868eb47ec6f7d8 (diff)
downloadlinux-f7aef1c207092770d06d0df21dceafdca2b49c39.tar.gz
linux-f7aef1c207092770d06d0df21dceafdca2b49c39.tar.bz2
linux-f7aef1c207092770d06d0df21dceafdca2b49c39.zip
drm/vc4: Make sure vc4_bo_{inc,dec}_usecnt() calls are balanced
Commit b9f19259b84d ("drm/vc4: Add the DRM_IOCTL_VC4_GEM_MADVISE ioctl") introduced a mechanism to mark some BOs as purgeable to allow the driver to drop them under memory pressure. In order to implement this feature we had to add a mechanism to mark BOs as currently used by a piece of hardware which materialized through the ->usecnt counter. Plane code is supposed to increment usecnt when it attaches a BO to a plane and decrement it when it's done with this BO, which was done in the ->prepare_fb() and ->cleanup_fb() hooks. The problem is, async page flip logic does not go through the regular atomic update path, and ->prepare_fb() and ->cleanup_fb() are not called in this case. Fix that by manually calling vc4_bo_{inc,dec}_usecnt() in the async-page-flip path. Note that all this should go away as soon as we get generic async page flip support in the core, in the meantime, this fix should do the trick. Fixes: b9f19259b84d ("drm/vc4: Add the DRM_IOCTL_VC4_GEM_MADVISE ioctl") Reported-by: Peter Robinson <pbrobinson@gmail.com> Cc: <stable@vger.kernel.org> Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com> Signed-off-by: Eric Anholt <eric@anholt.net> Link: https://patchwork.freedesktop.org/patch/msgid/20180430133232.32457-1-boris.brezillon@bootlin.com Link: https://patchwork.freedesktop.org/patch/msgid/20180430133232.32457-1-boris.brezillon@bootlin.com
Diffstat (limited to 'init')
0 files changed, 0 insertions, 0 deletions