)]}'
{
  "commit": "362063619cf67c2c2fc2eb90951b2623cbb69a7c",
  "tree": "58af436089e986b742d4ec91e5ea57e4a4b2aeb5",
  "parents": [
    "786b99ed13223d8ac58a937dd348aead45eb8191"
  ],
  "author": {
    "name": "Daniel Vetter",
    "email": "daniel.vetter@ffwll.ch",
    "time": "Mon Dec 10 20:42:17 2012 +0100"
  },
  "committer": {
    "name": "Daniel Vetter",
    "email": "daniel.vetter@ffwll.ch",
    "time": "Sun Jan 20 22:17:00 2013 +0100"
  },
  "message": "drm: revamp framebuffer cleanup interfaces\n\nWe have two classes of framebuffer\n- Created by the driver (atm only for fbdev), and the driver holds\n  onto the last reference count until destruction.\n- Created by userspace and associated with a given fd. These\n  framebuffers will be reaped when their assoiciated fb is closed.\n\nNow these two cases are set up differently, the framebuffers are on\ndifferent lists and hence destruction needs to clean up different\nthings. Also, for userspace framebuffers we remove them from any\ncurrent usage, whereas for internal framebuffers it is assumed that\nthe driver has done this already.\n\nLong story short, we need two different ways to cleanup such drivers.\nThree functions are involved in total:\n- drm_framebuffer_remove: Convenience function which removes the fb\n  from all active usage and then drops the passed-in reference.\n- drm_framebuffer_unregister_private: Will remove driver-private\n  framebuffers from relevant lists and drop the corresponding\n  references. Should be called for driver-private framebuffers before\n  dropping the last reference (or like for a lot of the drivers where\n  the fbdev is embedded someplace else, before doing the cleanup\n  manually).\n- drm_framebuffer_cleanup: Final cleanup for both classes of fbs,\n  should be called by the driver\u0027s -\u003edestroy callback once the last\n  reference is gone.\n\nThis patch just rolls out the new interfaces and updates all drivers\n(by adding calls to drm_framebuffer_unregister_private at all the\nright places)- no functional changes yet. Follow-on patches will move\ndrm core code around and update the lifetime management for\nframebuffers, so that we are no longer required to keep framebuffers\nalive by locking mode_config.mutex.\n\nI\u0027ve also updated the kerneldoc already.\n\nvmwgfx seems to again be a bit special, at least I haven\u0027t figured out\nhow the fbdev support in that driver works. It smells like it\u0027s\nexternal though.\n\nv2: The i915 driver creates another private framebuffer in the\nload-detect code. Adjust its cleanup code, too.\n\nReviewed-by: Rob Clark \u003crob@ti.com\u003e\nSigned-off-by: Daniel Vetter \u003cdaniel.vetter@ffwll.ch\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d9ec77959dff1b01b9be38825e344a4a78212d31",
      "old_mode": 33188,
      "old_path": "drivers/gpu/drm/ast/ast_fb.c",
      "new_id": "3e6584b940dcf179b6fb678e047fcaebcf8d0bc5",
      "new_mode": 33188,
      "new_path": "drivers/gpu/drm/ast/ast_fb.c"
    },
    {
      "type": "modify",
      "old_id": "6c6b4c87d309ca03d9372aff618e2f6cf7e923a7",
      "old_mode": 33188,
      "old_path": "drivers/gpu/drm/cirrus/cirrus_fbdev.c",
      "new_id": "3daea0f638c3ddd7bb6a58a2eb668b54344a5d32",
      "new_mode": 33188,
      "new_path": "drivers/gpu/drm/cirrus/cirrus_fbdev.c"
    },
    {
      "type": "modify",
      "old_id": "f2ccda85309f648e839d0b9c4284b112e047e91f",
      "old_mode": 33188,
      "old_path": "drivers/gpu/drm/drm_crtc.c",
      "new_id": "3eddfabeba9622ae608a86ff534de049c5b638ec",
      "new_mode": 33188,
      "new_path": "drivers/gpu/drm/drm_crtc.c"
    },
    {
      "type": "modify",
      "old_id": "e1e0cb0d531a08d62b80d29e2fde3e7c8ef1f5f7",
      "old_mode": 33188,
      "old_path": "drivers/gpu/drm/drm_fb_cma_helper.c",
      "new_id": "3742bc96421e8daa0ba8728b2dd4da3be0a66021",
      "new_mode": 33188,
      "new_path": "drivers/gpu/drm/drm_fb_cma_helper.c"
    },
    {
      "type": "modify",
      "old_id": "71f867340a88b43a98572c1b84c6776528e919fc",
      "old_mode": 33188,
      "old_path": "drivers/gpu/drm/exynos/exynos_drm_fbdev.c",
      "new_id": "90d335cfb8c064b2bc2585e3073a9cdfaa05c387",
      "new_mode": 33188,
      "new_path": "drivers/gpu/drm/exynos/exynos_drm_fbdev.c"
    },
    {
      "type": "modify",
      "old_id": "49800d2b79dd588337f8584e9c36c13b398dcc62",
      "old_mode": 33188,
      "old_path": "drivers/gpu/drm/gma500/framebuffer.c",
      "new_id": "c1ef37e2efdf35d8ff11fbc0ff6ac4bdfa4565d5",
      "new_mode": 33188,
      "new_path": "drivers/gpu/drm/gma500/framebuffer.c"
    },
    {
      "type": "modify",
      "old_id": "26fa6a795afe1d1a48710007a723f24ebd924c64",
      "old_mode": 33188,
      "old_path": "drivers/gpu/drm/i915/intel_display.c",
      "new_id": "df51203dcebd6b09fc76e4e1b0051cd2b82ace56",
      "new_mode": 33188,
      "new_path": "drivers/gpu/drm/i915/intel_display.c"
    },
    {
      "type": "modify",
      "old_id": "a9f7280f87fb7add229057ec8ad7e31798df10b2",
      "old_mode": 33188,
      "old_path": "drivers/gpu/drm/i915/intel_fb.c",
      "new_id": "c7b8316137e9e09e0e6edee6dfd3d6d3ba2c19f7",
      "new_mode": 33188,
      "new_path": "drivers/gpu/drm/i915/intel_fb.c"
    },
    {
      "type": "modify",
      "old_id": "2f486481d79ad01db9c786a44103d7ef4062ad5c",
      "old_mode": 33188,
      "old_path": "drivers/gpu/drm/mgag200/mgag200_fb.c",
      "new_id": "5c69b432f99aced839d9df2b3f60ce005728d838",
      "new_mode": 33188,
      "new_path": "drivers/gpu/drm/mgag200/mgag200_fb.c"
    },
    {
      "type": "modify",
      "old_id": "67a1a069de28453e8401897cc3102d29847cbff2",
      "old_mode": 33188,
      "old_path": "drivers/gpu/drm/nouveau/nouveau_fbcon.c",
      "new_id": "d4ecb4deb4848693a56a00e355955e26102b9cf8",
      "new_mode": 33188,
      "new_path": "drivers/gpu/drm/nouveau/nouveau_fbcon.c"
    },
    {
      "type": "modify",
      "old_id": "cc8489d8c6d1263c7e5049ea1fcd0ae2dcf5a95a",
      "old_mode": 33188,
      "old_path": "drivers/gpu/drm/radeon/radeon_fb.c",
      "new_id": "515e5ee1f9eea9870ae39e78d420e6c8ffd60dee",
      "new_mode": 33188,
      "new_path": "drivers/gpu/drm/radeon/radeon_fb.c"
    },
    {
      "type": "modify",
      "old_id": "f8904b4e68dee0eb6dc35e02543daac6db980223",
      "old_mode": 33188,
      "old_path": "drivers/gpu/drm/udl/udl_fb.c",
      "new_id": "caa84f1de9c1d46b8d35dd218945ad504b084292",
      "new_mode": 33188,
      "new_path": "drivers/gpu/drm/udl/udl_fb.c"
    },
    {
      "type": "modify",
      "old_id": "8a027bb77d97c8c3fe04a6e0398c8e74aced86ae",
      "old_mode": 33188,
      "old_path": "drivers/staging/omapdrm/omap_fbdev.c",
      "new_id": "2728e37e02bea7af9e709808fe9dbc75a8811963",
      "new_mode": 33188,
      "new_path": "drivers/staging/omapdrm/omap_fbdev.c"
    },
    {
      "type": "modify",
      "old_id": "7dc1b31059d46a9aedfb0a1a028ac0689e59dc82",
      "old_mode": 33188,
      "old_path": "include/drm/drm_crtc.h",
      "new_id": "66b2732f175a34699737beabaef8dbd67b8b12a3",
      "new_mode": 33188,
      "new_path": "include/drm/drm_crtc.h"
    }
  ]
}
