linux-stable/drivers/staging
Daniel Vetter 362063619c drm: revamp framebuffer cleanup interfaces
We have two classes of framebuffer
- Created by the driver (atm only for fbdev), and the driver holds
  onto the last reference count until destruction.
- Created by userspace and associated with a given fd. These
  framebuffers will be reaped when their assoiciated fb is closed.

Now these two cases are set up differently, the framebuffers are on
different lists and hence destruction needs to clean up different
things. Also, for userspace framebuffers we remove them from any
current usage, whereas for internal framebuffers it is assumed that
the driver has done this already.

Long story short, we need two different ways to cleanup such drivers.
Three functions are involved in total:
- drm_framebuffer_remove: Convenience function which removes the fb
  from all active usage and then drops the passed-in reference.
- drm_framebuffer_unregister_private: Will remove driver-private
  framebuffers from relevant lists and drop the corresponding
  references. Should be called for driver-private framebuffers before
  dropping the last reference (or like for a lot of the drivers where
  the fbdev is embedded someplace else, before doing the cleanup
  manually).
- drm_framebuffer_cleanup: Final cleanup for both classes of fbs,
  should be called by the driver's ->destroy callback once the last
  reference is gone.

This patch just rolls out the new interfaces and updates all drivers
(by adding calls to drm_framebuffer_unregister_private at all the
right places)- no functional changes yet. Follow-on patches will move
drm core code around and update the lifetime management for
framebuffers, so that we are no longer required to keep framebuffers
alive by locking mode_config.mutex.

I've also updated the kerneldoc already.

vmwgfx seems to again be a bit special, at least I haven't figured out
how the fbdev support in that driver works. It smells like it's
external though.

v2: The i915 driver creates another private framebuffer in the
load-detect code. Adjust its cleanup code, too.

Reviewed-by: Rob Clark <rob@ti.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2013-01-20 22:17:00 +01:00
..
android Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace 2012-12-17 15:44:47 -08:00
asus_oled
bcm Staging: bcm: Remove typedef for _U_MIBS_IP_ADDRESS and call directly. 2012-11-26 16:07:58 -08:00
ccg TTY/Serial merge for 3.8-rc1 2012-12-11 14:08:47 -08:00
ced1401 staging: ced1401: Fix typo in staging/ced1401 2012-11-26 16:21:58 -08:00
comedi staging: comedi: comedi_test: fix race when cancelling command 2013-01-07 14:48:25 -08:00
cptm1217
crystalhd staging: crystalhd: remove use of __devexit 2012-11-21 15:05:12 -08:00
csr staging: csr: remove CONFIG_HOTPLUG ifdefs 2012-11-21 15:04:58 -08:00
cxt1e1 staging: cxt1e1: sbecrc.c: fixes coding style issue 2012-11-21 14:21:48 -08:00
dgrp TTY/Serial merge for 3.8-rc1 2012-12-11 14:08:47 -08:00
echo
et131x staging: et131x: Removing final checkpatch errors, all line >80 chars 2012-11-21 13:57:28 -08:00
frontier
ft1000 staging: ft1000: remove assigments of ret and initialise it in beginning 2012-11-26 16:21:18 -08:00
fwserial staging/fwserial: Update TODO file per reviewer comments 2013-01-07 11:16:49 -08:00
gdm72xx Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal 2012-12-12 12:22:13 -08:00
iio staging:iio:adis16260: Select adislib 2012-12-27 10:59:31 +00:00
imx-drm staging: drm/imx: fix double free bug in error path 2013-01-07 12:27:52 -08:00
keucr
line6 staging: line6: drop unused dumprequest code 2012-11-26 16:13:51 -08:00
media Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media 2012-12-13 19:22:22 -08:00
net staging: net: remove use of __devexit 2012-11-21 15:05:02 -08:00
nvec ARM: arm-soc: Cleanups on various subarchitectures 2012-12-12 11:51:39 -08:00
octeon staging: octeon: remove use of __devexit 2012-11-21 15:05:02 -08:00
olpc_dcon staging: olpc_dcon: remove use of __devexit_p 2012-11-21 15:05:00 -08:00
omap-thermal Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux 2012-12-12 07:57:13 -08:00
omapdrm drm: revamp framebuffer cleanup interfaces 2013-01-20 22:17:00 +01:00
ozwpan staging: ozwpan: Remove redundant null check before kfree in ozhcd.c 2012-11-21 13:50:12 -08:00
panel staging: panel: pass correct lengths to keypad_send_key() 2012-11-29 18:16:15 -08:00
phison
quickstart
ramster
rtl8187se staging: rtl8187se: Fix failure to check pci_map_single() 2013-01-07 12:57:27 -08:00
rtl8192e staging: rtl8192e: Fix failure to check pci_map_single() 2013-01-07 12:57:27 -08:00
rtl8192u staging: rtl8192u: remove use of __devexit 2012-11-21 14:07:43 -08:00
rtl8712 staging: r8712u: Add new device ID 2013-01-07 09:50:40 -08:00
rts5139
sb105x staging: Enable parport sb105x drivers if parport is configured 2013-01-07 09:32:46 -08:00
sbe-2t3e3 staging: sbe-2t3e3: remove use of __devexit 2012-11-21 15:05:10 -08:00
sep staging: sep: remove use of __devinit 2012-11-21 15:05:01 -08:00
serqt_usb2 staging/serqt_usb2: Refactor qt_status_change_check() in serqt_usb2.c 2012-11-16 15:03:10 -08:00
silicom
slicoss staging: slicoss: remove use of __devexit 2012-11-21 15:05:11 -08:00
sm7xxfb staging: sm7xxfb: remove use of __devexit 2012-11-21 15:05:12 -08:00
speakup staging: speakup: avoid out-of-range access in synth_add() 2013-01-07 13:53:28 -08:00
ste_rmi4 staging: ste_rmi4: remove use of __devexit 2012-11-21 15:05:12 -08:00
tidspbridge staging: tidspbridge: use prepare/unprepare on dsp clocks 2013-01-07 15:03:56 -08:00
usbip staging: usbip: remove use of __devexit_p 2012-11-21 15:04:59 -08:00
vme staging: vme_pio2: fix oops on module unloading 2013-01-07 13:56:24 -08:00
vt6655 staging: vt6655: remove use of __devexit 2012-11-21 15:05:12 -08:00
vt6656 staging: vt6656: wpa_set_keys remove fcpfkernel 2012-11-26 16:24:16 -08:00
winbond Staging: winbond: wb35rx_s: Fixed coding style issue 2012-11-13 13:11:57 -08:00
wlags49_h2 staging: wlags49_h2: remove use of __devexit 2012-11-21 13:54:04 -08:00
wlags49_h25
wlan-ng Staging: wlan-ng: Add missing argument 2013-01-07 09:50:40 -08:00
xgifb staging: xgifb: remove use of __devexit 2012-11-21 15:05:12 -08:00
zcache
zram staging: zram: fix invalid memory references during disk write 2013-01-13 19:40:02 -08:00
zsmalloc
Kconfig TTY/Serial merge for 3.8-rc1 2012-12-11 14:08:47 -08:00
Makefile TTY/Serial merge for 3.8-rc1 2012-12-11 14:08:47 -08:00
staging.c