)]}'
{
  "commit": "f7eff60ea0e4e35732604e3591e2ff7b3ef41981",
  "tree": "a9dd6031479ce9585d7d0af061aa165ed9c5d49b",
  "parents": [
    "33cce6e9801f7d0184a636e9096a7cf7f8237ff9"
  ],
  "author": {
    "name": "Rob Clark",
    "email": "rob@ti.com",
    "time": "Wed Sep 05 21:48:38 2012 +0000"
  },
  "committer": {
    "name": "Dave Airlie",
    "email": "airlied@redhat.com",
    "time": "Tue Oct 02 22:15:39 2012 +1000"
  },
  "message": "drm: refcnt drm_framebuffer (v4.1)\n\nThis simplifies drm fb lifetime, and if the crtc/plane needs to hold\na ref to the fb when disabling a pipe until the next vblank, this\navoids the need to make disabling an overlay synchronous.  This is a\nproblem that shows up when userspace is using a drm plane to\nimplement a hw cursor.. making overlay disable synchronous causes\na performance problem when x11 is rapidly enabling/disabling the\nhw cursor.  But not making it synchronous opens up a race condition\nfor crashing if userspace turns around and immediately deletes the\nfb.  Refcnt\u0027ing the fb makes it possible to solve this problem.\n\nv1: original\nv2: add drm_framebuffer_remove() which is called in all paths where\n    fb-\u003efuncs-\u003edestroy() was directly called before.  This cleans\n    up the CRTCs/planes that the fb was attached to.  You should\n    only directly use drm_framebuffer_unreference() if you are also\n    using drm_framebuffer_reference() to keep a ref to the fb.\nv3: add comment explaining the fb refcount\nv4: remove duplicate \u0027list_del(\u0026fb-\u003efilp_head)\u0027\n\n[airlied: v4.1: fix local rejection]\n\nSigned-off-by: Rob Clark \u003crob@ti.com\u003e\nSigned-off-by: Dave Airlie \u003cairlied@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c418c772a7e506c4bb28a89e8e9e89ff87a85319",
      "old_mode": 33188,
      "old_path": "drivers/gpu/drm/drm_crtc.c",
      "new_id": "39afe13a5fa2ff2e8fad34ff6aa1aae53e411912",
      "new_mode": 33188,
      "new_path": "drivers/gpu/drm/drm_crtc.c"
    },
    {
      "type": "modify",
      "old_id": "d5586cc751635e9ab858d2b3880e39b2c672e1e4",
      "old_mode": 33188,
      "old_path": "drivers/gpu/drm/exynos/exynos_drm_fbdev.c",
      "new_id": "f4ac433565839c5de38c94d30559c0bd9ac076ff",
      "new_mode": 33188,
      "new_path": "drivers/gpu/drm/exynos/exynos_drm_fbdev.c"
    },
    {
      "type": "modify",
      "old_id": "8c6ed3b0c6f6c9e63c15d0c42ca1985878a2c270",
      "old_mode": 33188,
      "old_path": "drivers/staging/omapdrm/omap_fbdev.c",
      "new_id": "8a027bb77d97c8c3fe04a6e0398c8e74aced86ae",
      "new_mode": 33188,
      "new_path": "drivers/staging/omapdrm/omap_fbdev.c"
    },
    {
      "type": "modify",
      "old_id": "eb91d520ce0b0361c3e109d3db75065b574c5893",
      "old_mode": 33188,
      "old_path": "include/drm/drm_crtc.h",
      "new_id": "68fdb299e39fdf86f88459271cf28811e3501dad",
      "new_mode": 33188,
      "new_path": "include/drm/drm_crtc.h"
    }
  ]
}
