diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-17 11:26:17 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-17 11:26:17 -0500 |
commit | 3c2e81ef344a90bb0a39d84af6878b4aeff568a2 (patch) | |
tree | bd8c8b23466174899d2fe4d35af6e1e838edb068 /include/linux | |
parent | 221392c3ad0432e39fd74a349364f66cb0ed78f6 (diff) | |
parent | 55bde6b1442fed8af67b92d21acce67db454c9f9 (diff) |
Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux
Pull DRM updates from Dave Airlie:
"This is the one and only next pull for 3.8, we had a regression we
found last week, so I was waiting for that to resolve itself, and I
ended up with some Intel fixes on top as well.
Highlights:
- new driver: nvidia tegra 20/30/hdmi support
- radeon: add support for previously unused DMA engines, more HDMI
regs, eviction speeds ups and fixes
- i915: HSW support enable, agp removal on GEN6, seqno wrapping
- exynos: IPP subsystem support (image post proc), HDMI
- nouveau: display class reworking, nv20->40 z compression
- ttm: start of locking fixes, rcu usage for lookups,
- core: documentation updates, docbook integration, monotonic clock
usage, move from connector to object properties"
* 'drm-next' of git://people.freedesktop.org/~airlied/linux: (590 commits)
drm/exynos: add gsc ipp driver
drm/exynos: add rotator ipp driver
drm/exynos: add fimc ipp driver
drm/exynos: add iommu support for ipp
drm/exynos: add ipp subsystem
drm/exynos: support device tree for fimd
radeon: fix regression with eviction since evict caching changes
drm/radeon: add more pedantic checks in the CP DMA checker
drm/radeon: bump version for CS ioctl support for async DMA
drm/radeon: enable the async DMA rings in the CS ioctl
drm/radeon: add VM CS parser support for async DMA on cayman/TN/SI
drm/radeon/kms: add evergreen/cayman CS parser for async DMA (v2)
drm/radeon/kms: add 6xx/7xx CS parser for async DMA (v2)
drm/radeon: fix htile buffer size computation for command stream checker
drm/radeon: fix fence locking in the pageflip callback
drm/radeon: make indirect register access concurrency-safe
drm/radeon: add W|RREG32_IDX for MM_INDEX|DATA based mmio accesss
drm/exynos: support extended screen coordinate of fimd
drm/exynos: fix x, y coordinates for right bottom pixel
drm/exynos: fix fb offset calculation for plane
...
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/dma-attrs.h | 1 | ||||
-rw-r--r-- | include/linux/kref.h | 21 |
2 files changed, 22 insertions, 0 deletions
diff --git a/include/linux/dma-attrs.h b/include/linux/dma-attrs.h index f83f793223ff..c8e1831d7572 100644 --- a/include/linux/dma-attrs.h +++ b/include/linux/dma-attrs.h | |||
@@ -17,6 +17,7 @@ enum dma_attr { | |||
17 | DMA_ATTR_NON_CONSISTENT, | 17 | DMA_ATTR_NON_CONSISTENT, |
18 | DMA_ATTR_NO_KERNEL_MAPPING, | 18 | DMA_ATTR_NO_KERNEL_MAPPING, |
19 | DMA_ATTR_SKIP_CPU_SYNC, | 19 | DMA_ATTR_SKIP_CPU_SYNC, |
20 | DMA_ATTR_FORCE_CONTIGUOUS, | ||
20 | DMA_ATTR_MAX, | 21 | DMA_ATTR_MAX, |
21 | }; | 22 | }; |
22 | 23 | ||
diff --git a/include/linux/kref.h b/include/linux/kref.h index 65af6887872f..4972e6e9ca93 100644 --- a/include/linux/kref.h +++ b/include/linux/kref.h | |||
@@ -111,4 +111,25 @@ static inline int kref_put_mutex(struct kref *kref, | |||
111 | } | 111 | } |
112 | return 0; | 112 | return 0; |
113 | } | 113 | } |
114 | |||
115 | /** | ||
116 | * kref_get_unless_zero - Increment refcount for object unless it is zero. | ||
117 | * @kref: object. | ||
118 | * | ||
119 | * Return non-zero if the increment succeeded. Otherwise return 0. | ||
120 | * | ||
121 | * This function is intended to simplify locking around refcounting for | ||
122 | * objects that can be looked up from a lookup structure, and which are | ||
123 | * removed from that lookup structure in the object destructor. | ||
124 | * Operations on such objects require at least a read lock around | ||
125 | * lookup + kref_get, and a write lock around kref_put + remove from lookup | ||
126 | * structure. Furthermore, RCU implementations become extremely tricky. | ||
127 | * With a lookup followed by a kref_get_unless_zero *with return value check* | ||
128 | * locking in the kref_put path can be deferred to the actual removal from | ||
129 | * the lookup structure and RCU lookups become trivial. | ||
130 | */ | ||
131 | static inline int __must_check kref_get_unless_zero(struct kref *kref) | ||
132 | { | ||
133 | return atomic_add_unless(&kref->refcount, 1, 0); | ||
134 | } | ||
114 | #endif /* _KREF_H_ */ | 135 | #endif /* _KREF_H_ */ |