linux_dsm_epyc7002/drivers/gpu/drm/vc4
Boris Brezillon f7aef1c207 drm/vc4: Make sure vc4_bo_{inc,dec}_usecnt() calls are balanced
Commit b9f19259b8 ("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: b9f19259b8 ("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
2018-04-30 12:36:28 -07:00
..
Kconfig drm/vc4: add HDMI CEC support 2017-07-26 12:15:12 -07:00
Makefile drm/vc4: Expose performance counters to userspace 2018-02-10 22:23:26 +00:00
vc4_bo.c drm/vc4: Fix memory leak during BO teardown 2018-04-09 12:42:08 -07:00
vc4_crtc.c drm/vc4: Make sure vc4_bo_{inc,dec}_usecnt() calls are balanced 2018-04-30 12:36:28 -07:00
vc4_debugfs.c drm/vc4: Add DSI driver 2017-02-01 12:51:23 -08:00
vc4_dpi.c drm/vc4: remove bridge from driver internal structure 2017-10-10 11:32:54 +02:00
vc4_drv.c drm/vc4: Expose performance counters to userspace 2018-02-10 22:23:26 +00:00
vc4_drv.h drm/vc4: Move plane state to header 2018-03-09 11:25:06 -08:00
vc4_dsi.c drm/vc4: Fix sleeps during the IRQ handler for DSI transactions. 2017-10-19 13:20:09 -07:00
vc4_fence.c drm/vc4: Expose dma-buf fences for V3D rendering. 2017-04-13 11:00:28 -07:00
vc4_gem.c drm-misc-next for 4.17: 2018-02-16 09:29:27 +10:00
vc4_hdmi.c sound updates for 4.17-rc1 2018-04-05 10:42:07 -07:00
vc4_hvs.c drm/vc4: fix include notation and remove -Iinclude/drm flag 2017-05-22 09:36:01 +02:00
vc4_irq.c drm/vc4: Expose performance counters to userspace 2018-02-10 22:23:26 +00:00
vc4_kms.c drm/vc4: Advertise supported modifiers for planes 2018-03-05 10:18:30 -08:00
vc4_packet.h drm/vc4: Add support for drawing 3D frames. 2015-12-07 20:05:10 -08:00
vc4_perfmon.c drm/vc4: Expose performance counters to userspace 2018-02-10 22:23:26 +00:00
vc4_plane.c drm/vc4: Move plane state to header 2018-03-09 11:25:06 -08:00
vc4_qpu_defines.h drm/vc4: Fix definition of QPU_R_MS_REV_FLAGS 2016-07-15 15:19:52 -07:00
vc4_regs.h drm/vc4: Set premultiplied for alpha formats 2018-03-09 11:24:53 -08:00
vc4_render_cl.c drm/vc4: Add exec flags to allow forcing a specific X/Y tile walk order. 2017-08-08 13:26:44 -07:00
vc4_trace_points.c drm/vc4: Add support for drawing 3D frames. 2015-12-07 20:05:10 -08:00
vc4_trace.h drm/vc4: Use correct path to trace include 2017-09-05 11:11:20 +02:00
vc4_v3d.c drm/vc4: Expose performance counters to userspace 2018-02-10 22:23:26 +00:00
vc4_validate_shaders.c drm/vc4: Fix memory leak during BO teardown 2018-04-09 12:42:08 -07:00
vc4_validate.c drm/vc4_validate: Remove VLA usage 2018-03-16 15:51:52 -07:00
vc4_vec.c drm: Nuke drm_atomic_helper_connector_dpms 2017-08-08 14:48:48 +02:00