linux/drivers/base
Daniel Vetter f00b4dad9d dma-buf: implement vmap refcounting in the interface logic
All drivers which implement this need to have some sort of refcount to
allow concurrent vmap usage. Hence implement this in the dma-buf core.

To protect against concurrent calls we need a lock, which potentially
causes new funny locking inversions. But this shouldn't be a problem
for exporters with statically allocated backing storage, and more
dynamic drivers have decent issues already anyway.

Inspired by some refactoring patches from Aaron Plattner, who
implemented the same idea, but only for drm/prime drivers.

v2: Check in dma_buf_release that no dangling vmaps are left.
Suggested by Aaron Plattner. We might want to do similar checks for
attachments, but that's for another patch. Also fix up ERR_PTR return
for vmap.

v3: Check whether the passed-in vmap address matches with the cached
one for vunmap. Eventually we might want to remove that parameter -
compared to the kmap functions there's no need for the vaddr for
unmapping.  Suggested by Chris Wilson.

v4: Fix a brown-paper-bag bug spotted by Aaron Plattner.

Cc: Aaron Plattner <aplattner@nvidia.com>
Reviewed-by: Aaron Plattner <aplattner@nvidia.com>
Tested-by: Aaron Plattner <aplattner@nvidia.com>
Reviewed-by: Rob Clark <rob@ti.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Sumit Semwal <sumit.semwal@linaro.org>
2013-02-27 15:13:36 +05:30
..
power pm / runtime: force memory allocation with no I/O during Runtime PM callbcack 2013-02-23 17:50:16 -08:00
regmap The sweeping change is to make add_taint() explicitly indicate whether to disable 2013-02-25 15:41:43 -08:00
attribute_container.c drivers: base: Convert dev_printk(KERN_<LEVEL> to dev_<level>( 2012-10-30 17:38:43 -07:00
base.h driver core: move the deferred probe pointer into the private area 2012-03-08 12:17:22 -08:00
bus.c Driver core: treat unregistered bus_types as having no devices 2013-02-03 17:55:29 -08:00
class.c driver-core: constify data for class_find_device() 2013-02-06 12:18:56 -08:00
core.c driver-core: constify data for class_find_device() 2013-02-06 12:18:56 -08:00
cpu.c drivers/base/cpu.c: Fix typo in comment 2013-01-16 12:34:34 -08:00
dd.c Driver core patches for 3.9-rc1 2013-02-21 12:05:51 -08:00
devres.c drivers: base: Convert dev_printk(KERN_<LEVEL> to dev_<level>( 2012-10-30 17:38:43 -07:00
devtmpfs.c switch vfs_getattr() to struct path 2013-02-26 02:46:08 -05:00
dma-buf.c dma-buf: implement vmap refcounting in the interface logic 2013-02-27 15:13:36 +05:30
dma-coherent.c drivers: dma-coherent: Fix typo in dma_mmap_from_coherent documentation 2012-10-23 14:05:32 +02:00
dma-contiguous.c drivers: cma: represent physical addresses as phys_addr_t 2012-12-11 09:28:09 +01:00
dma-mapping.c [media] dma-mapping: fix dma_common_get_sgtable() conditional compilation 2012-11-27 09:42:31 -02:00
driver.c driver core: don't trigger uevent after failure 2012-07-17 10:40:23 -07:00
firmware_class.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2013-02-26 20:16:07 -08:00
firmware.c
hypervisor.c
init.c driver-core: implement 'sysdev' functionality for regular devices and buses 2011-12-14 14:29:38 -08:00
isa.c
Kconfig firmware: Make user-mode helper optional 2013-02-03 17:57:40 -08:00
Makefile drivers/pinctrl: grab default handles from device core 2013-01-23 16:39:51 +01:00
map.c
memory.c memory-hotplug: check whether all memory blocks are offlined or not when removing memory 2013-02-23 17:50:11 -08:00
module.c
node.c numa: add CONFIG_MOVABLE_NODE for movable-dedicated node 2012-12-12 17:38:34 -08:00
pinctrl.c drivers/pinctrl: grab default handles from device core 2013-01-23 16:39:51 +01:00
platform.c Driver core updates for 3.8-rc1 2012-12-11 13:13:55 -08:00
soc.c mode_t whack-a-mole: ->is_visible() returns umode_t... 2012-05-29 23:28:42 -04:00
syscore.c
topology.c cpu: convert 'cpu' and 'machinecheck' sysdev_class to a regular subsystem 2011-12-21 14:29:42 -08:00
transport_class.c