Sumit Semwal
d15bd7ee44
dma-buf: Introduce dma buffer sharing mechanism
...
This is the first step in defining a dma buffer sharing mechanism.
A new buffer object dma_buf is added, with operations and API to allow easy
sharing of this buffer object across devices.
The framework allows:
- creation of a buffer object, its association with a file pointer, and
associated allocator-defined operations on that buffer. This operation is
called the 'export' operation.
- different devices to 'attach' themselves to this exported buffer object, to
facilitate backing storage negotiation, using dma_buf_attach() API.
- the exported buffer object to be shared with the other entity by asking for
its 'file-descriptor (fd)', and sharing the fd across.
- a received fd to get the buffer object back, where it can be accessed using
the associated exporter-defined operations.
- the exporter and user to share the scatterlist associated with this buffer
object using map_dma_buf and unmap_dma_buf operations.
Atleast one 'attach()' call is required to be made prior to calling the
map_dma_buf() operation.
Couple of building blocks in map_dma_buf() are added to ease introduction
of sync'ing across exporter and users, and late allocation by the exporter.
For this first version, this framework will work with certain conditions:
- *ONLY* exporter will be allowed to mmap to userspace (outside of this
framework - mmap is not a buffer object operation),
- currently, *ONLY* users that do not need CPU access to the buffer are
allowed.
More details are there in the documentation patch.
This is based on design suggestions from many people at the mini-summits[1],
most notably from Arnd Bergmann <arnd@arndb.de>, Rob Clark <rob@ti.com> and
Daniel Vetter <daniel@ffwll.ch>.
The implementation is inspired from proof-of-concept patch-set from
Tomasz Stanislawski <t.stanislaws@samsung.com>, who demonstrated buffer sharing
between two v4l2 devices. [2]
[1]: https://wiki.linaro.org/OfficeofCTO/MemoryManagement
[2]: http://lwn.net/Articles/454389
Signed-off-by: Sumit Semwal <sumit.semwal@linaro.org>
Signed-off-by: Sumit Semwal <sumit.semwal@ti.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-and-Tested-by: Rob Clark <rob.clark@linaro.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
2012-01-06 10:20:21 +00:00
..
accessibility
acpi
pstore: pass allocated memory region back to caller
2011-11-17 12:58:07 -08:00
amba
ata
pata_of_platform: Add missing CONFIG_OF_IRQ dependency.
2011-12-22 15:00:32 -05:00
atm
auxdisplay
base
dma-buf: Introduce dma buffer sharing mechanism
2012-01-06 10:20:21 +00:00
bcma
bcma: fix implicit use of export.h contents
2011-10-31 19:32:02 -04:00
block
Merge branch 'for-linus' of git://git.kernel.dk/linux-block
2011-12-16 10:05:14 -08:00
bluetooth
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem
2011-12-09 14:07:12 -05:00
cdrom
char
ipmi_watchdog: restore settings when BMC reset
2011-12-20 10:25:04 -08:00
clk
clocksource
Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux
2011-11-06 19:44:47 -08:00
connector
cpufreq
[CPUFREQ] db8500: fix build error due to undeclared i variable
2011-11-11 22:28:33 -05:00
cpuidle
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux
2011-11-07 10:13:52 -08:00
crypto
Merge git://github.com/herbertx/crypto
2011-11-25 21:55:07 -08:00
dca
drivers/dca: Add export.h for THIS_MODULE to dca-sysfs.c
2011-10-31 19:31:43 -04:00
devfreq
PM / devfreq: correct Kconfig dependency
2011-11-14 23:31:35 +01:00
dio
dma
dma: MX3_IPU fix depends
2011-12-19 12:26:07 +01:00
edac
drivers/edac/mpc85xx_edac.c: fix memory controller compatible for edac
2011-11-24 01:59:38 -06:00
eisa
firewire
Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux
2011-11-06 19:44:47 -08:00
firmware
Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/ibft
2011-12-15 14:16:47 -08:00
gpio
gpio: Fix DA9052 GPIO build errors.
2011-12-15 11:25:43 -07:00
gpu
drm/radeon/kms/atom: fix possible segfault in pm setup
2012-01-03 09:17:16 +00:00
hid
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid
2011-12-02 08:25:46 -08:00
hv
hwmon
hwmon: (jz4740) Staticise jz4740_hwmon_driver
2011-12-12 08:31:21 -08:00
hwspinlock
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux
2011-11-08 18:34:16 -08:00
i2c
i2c-eg20t: correct the driver init order of pch_i2c_probe()
2011-12-18 11:46:42 +00:00
ide
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide
2011-11-18 22:04:12 -02:00
idle
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux
2011-11-07 10:13:52 -08:00
ieee802154
infiniband
Merge branches 'cma', 'mlx4' and 'qib' into for-next
2011-12-19 09:19:49 -08:00
input
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
2011-12-30 13:42:41 -08:00
iommu
Merge branch 'iommu/fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu
2011-12-29 17:36:15 -08:00
isdn
isdn: avoid copying too long drvid
2011-11-29 18:39:37 -05:00
leds
Revert "leds: save the delay values after a successful call to blink_set()"
2011-11-15 22:41:50 -02:00
lguest
lguest: add export.h to lguest files for THIS_MODULE/EXPORT_SYMBOL
2011-10-31 19:32:13 -04:00
macintosh
m68k/irq: Remove obsolete IRQ_FLG_* users
2011-11-08 22:35:48 +01:00
mca
md
md/bitmap: It is OK to clear bits during recovery.
2011-12-23 09:57:48 +11:00
media
gspca: Fix falling back to lower isoc alt settings
2011-12-31 11:53:58 -08:00
memstick
drivers/memstick: Add module.h to the prev. implicit modular users
2011-10-31 19:31:52 -04:00
message
drivers/message: Add module.h to i2o/pci.c
2011-10-31 19:31:53 -04:00
mfd
mfd: Include linux/io.h to jz4740-adc
2011-12-20 18:53:26 +01:00
misc
Merge branch 'char-misc-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc
2011-11-21 20:36:05 -08:00
mmc
Merge branch 'fixes' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm
2011-12-30 13:45:34 -08:00
mtd
mtd: plat_ram: call mtd_device_register only if partition data exists
2011-12-19 11:13:52 +00:00
net
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem
2012-01-04 11:37:30 -05:00
nfc
drivers/nfc: add module.h to nfcwilink.c
2011-10-31 19:31:54 -04:00
nubus
of
dt/device: Fix auxdata matching to handle entries without a name override
2011-12-12 14:41:45 -07:00
oprofile
oprofile: Fix uninitialized memory access when writing to writing to oprofilefs
2011-12-19 17:18:43 +01:00
parisc
parisc: add module.h to files really requiring it
2011-10-31 19:31:01 -04:00
parport
pci
pci: Fix hotplug of Express Module with pci bridges
2011-12-18 14:10:16 -08:00
pcmcia
Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux
2011-11-06 19:44:47 -08:00
pinctrl
pinctrl: hide subsystem from the populace
2011-11-10 09:02:12 +01:00
platform
toshiba_acpi: Fix machines that don't support HCI_SYSTEM_EVENT
2011-12-05 13:07:28 -05:00
pnp
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux
2011-11-07 10:13:52 -08:00
power
x86/mrst: Battery fixes
2011-12-05 17:06:37 +01:00
pps
pps gpio client: add missing dependency
2011-11-02 16:07:02 -07:00
ps3
powerpc/ps3: irq: Remove IRQF_DISABLED
2011-11-08 14:51:46 +11:00
ptp
ptp: Fix clock_getres() implementation
2011-12-06 11:38:32 +01:00
rapidio
rapidio/tsi721: modify PCIe capability settings
2011-12-09 07:50:29 -08:00
regulator
regulator: twl: fix twl4030 support for smps regulators
2011-11-28 18:58:31 +00:00
rtc
Revert "rtc: Expire alarms after the time is set."
2012-01-04 07:57:22 -08:00
s390
[SCSI] zfcp: return early from slave_destroy if slave_alloc returned early
2011-12-14 15:40:43 +04:00
sbus
sbus: convert drivers/sbus/char/* to use module_platform_driver()
2011-12-04 10:46:58 -08:00
scsi
[SCSI] fcoe: fix fcoe in a DCB environment by adding DCB notifiers to set skb priority
2011-12-15 11:02:07 +04:00
sfi
drivers/sfi: sfi_acpi.c needs sysfs.h
2011-10-31 19:31:57 -04:00
sh
Merge branches 'sh/pm-runtime' and 'common/clkfwk' into sh-fixes-for-linus
2011-11-11 16:16:25 +09:00
sn
spi
spi/gpio: fix section mismatch warning
2011-12-07 22:17:39 +01:00
ssb
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem
2011-12-09 14:07:12 -05:00
staging
staging: r8712u: Add new USB ID
2011-12-13 16:13:15 -08:00
target
iscsi-target: Fix hex2bin warn_unused compile message
2011-12-06 06:00:59 +00:00
tc
telephony
thermal
thermal: Prevent polling from happening during system suspend
2011-11-06 20:38:49 -05:00
tty
Merge branch 'tty-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
2011-11-21 20:36:46 -08:00
uio
uio: Add module.h to implicit drivers/uio users
2011-10-31 19:32:10 -04:00
usb
Merge branch 'for-greg' of git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb into usb-linus
2011-12-21 14:42:49 -08:00
uwb
uwb: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required
2011-10-31 19:32:19 -04:00
vhost
video
viafb: correct sync polarity for OLPC DCON
2011-11-22 00:56:17 +00:00
virt
drivers/virt: add ioctl for 32-bit compat on 64-bit to fsl-hv-manager
2011-10-14 02:56:02 -05:00
virtio
virtio-pci: make reset operation safer
2011-11-24 13:04:48 +10:30
vlynq
w1
Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux
2011-11-06 19:44:47 -08:00
watchdog
watchdog: iTCO_wdt.c - problems with newer hardware due to SMI clearing (part 2)
2011-12-27 20:35:59 +01:00
xen
Revert "xen/pv-on-hvm kexec: add xs_reset_watches to shutdown watches from old kernel"
2011-12-19 09:30:35 -05:00
zorro
drivers/zorro: Add export.h to proc.c
2011-10-31 19:32:01 -04:00
Kconfig
Makefile