diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-01-06 20:10:04 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-01-06 20:10:04 -0500 |
| commit | f94181da7192f4ed8ccb1b633ea4ce56954df130 (patch) | |
| tree | 2e28785f2df447573a11fbdd611dc19eb3fcb794 | |
| parent | 932adbed6d99cc373fc3433d701b3a594fea872c (diff) | |
| parent | fdbc0450df12cc9cb397f3497db4b0cad7c1a8ff (diff) | |
Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
rcu: fix rcutorture bug
rcu: eliminate synchronize_rcu_xxx macro
rcu: make treercu safe for suspend and resume
rcu: fix rcutree grace-period-latency bug on small systems
futex: catch certain assymetric (get|put)_futex_key calls
futex: make futex_(get|put)_key() calls symmetric
locking, percpu counters: introduce separate lock classes
swiotlb: clean up EXPORT_SYMBOL usage
swiotlb: remove unnecessary declaration
swiotlb: replace architecture-specific swiotlb.h with linux/swiotlb.h
swiotlb: add support for systems with highmem
swiotlb: store phys address in io_tlb_orig_addr array
swiotlb: add hwdev to swiotlb_phys_to_bus() / swiotlb_sg_to_bus()
| -rw-r--r-- | arch/ia64/include/asm/swiotlb.h | 39 | ||||
| -rw-r--r-- | arch/x86/include/asm/swiotlb.h | 38 | ||||
| -rw-r--r-- | arch/x86/kernel/pci-swiotlb_64.c | 2 | ||||
| -rw-r--r-- | include/linux/percpu_counter.h | 14 | ||||
| -rw-r--r-- | include/linux/rcupdate.h | 12 | ||||
| -rw-r--r-- | include/linux/swiotlb.h | 3 | ||||
| -rw-r--r-- | kernel/futex.c | 72 | ||||
| -rw-r--r-- | kernel/rcupdate.c | 11 | ||||
| -rw-r--r-- | kernel/rcupreempt.c | 11 | ||||
| -rw-r--r-- | kernel/rcutorture.c | 18 | ||||
| -rw-r--r-- | kernel/rcutree.c | 13 | ||||
| -rw-r--r-- | lib/percpu_counter.c | 18 | ||||
| -rw-r--r-- | lib/proportions.c | 6 | ||||
| -rw-r--r-- | lib/swiotlb.c | 237 | ||||
| -rw-r--r-- | mm/backing-dev.c | 2 |
15 files changed, 195 insertions, 301 deletions
diff --git a/arch/ia64/include/asm/swiotlb.h b/arch/ia64/include/asm/swiotlb.h index fb79423834d0..dcbaea7ce128 100644 --- a/arch/ia64/include/asm/swiotlb.h +++ b/arch/ia64/include/asm/swiotlb.h | |||
| @@ -2,44 +2,7 @@ | |||
| 2 | #define ASM_IA64__SWIOTLB_H | 2 | #define ASM_IA64__SWIOTLB_H |
| 3 | 3 | ||
| 4 | #include <linux/dma-mapping.h> | 4 | #include <linux/dma-mapping.h> |
| 5 | 5 | #include <linux/swiotlb.h> | |
| 6 | /* SWIOTLB interface */ | ||
| 7 | |||
| 8 | extern dma_addr_t swiotlb_map_single(struct device *hwdev, void *ptr, | ||
| 9 | size_t size, int dir); | ||
| 10 | extern void *swiotlb_alloc_coherent(struct device *hwdev, size_t size, | ||
| 11 | dma_addr_t *dma_handle, gfp_t flags); | ||
| 12 | extern void swiotlb_unmap_single(struct device *hwdev, dma_addr_t dev_addr, | ||
| 13 | size_t size, int dir); | ||
| 14 | extern void swiotlb_sync_single_for_cpu(struct device *hwdev, | ||
| 15 | dma_addr_t dev_addr, | ||
| 16 | size_t size, int dir); | ||
| 17 | extern void swiotlb_sync_single_for_device(struct device *hwdev, | ||
| 18 | dma_addr_t dev_addr, | ||
| 19 | size_t size, int dir); | ||
| 20 | extern void swiotlb_sync_single_range_for_cpu(struct device *hwdev, | ||
| 21 | dma_addr_t dev_addr, | ||
| 22 | unsigned long offset, | ||
| 23 | size_t size, int dir); | ||
| 24 | extern void swiotlb_sync_single_range_for_device(struct device *hwdev, | ||
| 25 | dma_addr_t dev_addr, | ||
| 26 | unsigned long offset, | ||
| 27 | size_t size, int dir); | ||
| 28 | extern void swiotlb_sync_sg_for_cpu(struct device *hwdev, | ||
| 29 | struct scatterlist *sg, int nelems, | ||
| 30 | int dir); | ||
| 31 | extern void swiotlb_sync_sg_for_device(struct device *hwdev, | ||
| 32 | struct scatterlist *sg, int nelems, | ||
| 33 | int dir); | ||
| 34 | extern int swiotlb_map_sg(struct device *hwdev, struct scatterlist *sg, | ||
| 35 | int nents, int direction); | ||
| 36 | extern void swiotlb_unmap_sg(struct device *hwdev, struct scatterlist *sg, | ||
| 37 | int nents, int direction); | ||
| 38 | extern int swiotlb_dma_mapping_error(struct device *hwdev, dma_addr_t dma_addr); | ||
| 39 | extern void swiotlb_free_coherent(struct device *hwdev, size_t size, | ||
| 40 | void *vaddr, dma_addr_t dma_handle); | ||
| 41 | extern int swiotlb_dma_supported(struct device *hwdev, u64 mask); | ||
| 42 | extern void swiotlb_init(void); | ||
| 43 | 6 | ||
| 44 | extern int swiotlb_force; | 7 | extern int swiotlb_force; |
| 45 | 8 | ||
diff --git a/arch/x86/include/asm/swiotlb.h b/arch/x86/include/asm/swiotlb.h index 51fb2c76ad74..b9e4e20174fb 100644 --- a/arch/x86/include/asm/swiotlb.h +++ b/arch/x86/include/asm/swiotlb.h | |||
| @@ -1,46 +1,10 @@ | |||
| 1 | #ifndef _ASM_X86_SWIOTLB_H | 1 | #ifndef _ASM_X86_SWIOTLB_H |
| 2 | #define _ASM_X86_SWIOTLB_H | 2 | #define _ASM_X86_SWIOTLB_H |
| 3 | 3 | ||
| 4 | #include <asm/dma-mapping.h> | 4 | #include <linux/swiotlb.h> |
| 5 | 5 | ||
| 6 | /* SWIOTLB interface */ | 6 | /* SWIOTLB interface */ |
| 7 | 7 | ||
| 8 | extern dma_addr_t swiotlb_map_single(struct device *hwdev, void *ptr, | ||
| 9 | size_t size, int dir); | ||
| 10 | extern void *swiotlb_alloc_coherent(struct device *hwdev, size_t size, | ||
| 11 | dma_addr_t *dma_handle, gfp_t flags); | ||
| 12 | extern void swiotlb_unmap_single(struct device *hwdev, dma_addr_t dev_addr, | ||
| 13 | size_t size, int dir); | ||
| 14 | extern void swiotlb_sync_single_for_cpu(struct device *hwdev, | ||
| 15 | dma_addr_t dev_addr, | ||
| 16 | size_t size, int dir); | ||
| 17 | extern void swiotlb_sync_single_for_device(struct device *hwdev, | ||
| 18 | dma_addr_t dev_addr, | ||
| 19 | size_t size, int dir); | ||
| 20 | extern void swiotlb_sync_single_range_for_cpu(struct device *hwdev, | ||
| 21 | dma_addr_t dev_addr, | ||
| 22 | unsigned long offset, | ||
| 23 | size_t size, int dir); | ||
| 24 | extern void swiotlb_sync_single_range_for_device(struct device *hwdev, | ||
| 25 | dma_addr_t dev_addr, | ||
| 26 | unsigned long offset, | ||
| 27 | size_t size, int dir); | ||
| 28 | extern void swiotlb_sync_sg_for_cpu(struct device *hwdev, | ||
| 29 | struct scatterlist *sg, int nelems, | ||
| 30 | int dir); | ||
| 31 | extern void swiotlb_sync_sg_for_device(struct device *hwdev, | ||
| 32 | struct scatterlist *sg, int nelems, | ||
| 33 | int dir); | ||
| 34 | extern int swiotlb_map_sg(struct device *hwdev, struct scatterlist *sg, | ||
| 35 | int nents, int direction); | ||
| 36 | extern void swiotlb_unmap_sg(struct device *hwdev, struct scatterlist *sg, | ||
| 37 | int nents, int direction); | ||
| 38 | extern int swiotlb_dma_mapping_error(struct device *hwdev, dma_addr_t dma_addr); | ||
| 39 | extern void swiotlb_free_coherent(struct device *hwdev, size_t size, | ||
| 40 | void *vaddr, dma_addr_t dma_handle); | ||
| 41 | extern int swiotlb_dma_supported(struct device *hwdev, u64 mask); | ||
| 42 | extern void swiotlb_init(void); | ||
| 43 | |||
| 44 | extern int swiotlb_force; | 8 | extern int swiotlb_force; |
| 45 | 9 | ||
| 46 | #ifdef CONFIG_SWIOTLB | 10 | #ifdef CONFIG_SWIOTLB |
diff --git a/arch/x86/kernel/pci-swiotlb_64.c b/arch/x86/kernel/pci-swiotlb_64.c index 8cba3749a511..d59c91747665 100644 --- a/arch/x86/kernel/pci-swiotlb_64.c +++ b/arch/x86/kernel/pci-swiotlb_64.c | |||
| @@ -23,7 +23,7 @@ void *swiotlb_alloc(unsigned order, unsigned long nslabs) | |||
| 23 | return (void *)__get_free_pages(GFP_DMA | __GFP_NOWARN, order); | 23 | return (void *)__get_free_pages(GFP_DMA | __GFP_NOWARN, order); |
| 24 | } | 24 | } |
| 25 | 25 | ||
| 26 | dma_addr_t swiotlb_phys_to_bus(phys_addr_t paddr) | 26 | dma_addr_t swiotlb_phys_to_bus(struct device *hwdev, phys_addr_t paddr) |
| 27 | { | 27 | { |
| 28 | return paddr; | 28 | return paddr; |
| 29 | } | 29 | } |
diff --git a/include/linux/percpu_counter.h b/include/linux/percpu_counter.h index 99de7a31bab8..a7684a513994 100644 --- a/include/linux/percpu_counter.h +++ b/include/linux/percpu_counter.h | |||
| @@ -26,8 +26,16 @@ struct percpu_counter { | |||
| 26 | 26 | ||
| 27 | extern int percpu_counter_batch; | 27 | extern int percpu_counter_batch; |
| 28 | 28 | ||
| 29 | int percpu_counter_init(struct percpu_counter *fbc, s64 amount); | 29 | int __percpu_counter_init(struct percpu_counter *fbc, s64 amount, |
| 30 | int percpu_counter_init_irq(struct percpu_counter *fbc, s64 amount); | 30 | struct lock_class_key *key); |
| 31 | |||
| 32 | #define percpu_counter_init(fbc, value) \ | ||
| 33 | ({ \ | ||
| 34 | static struct lock_class_key __key; \ | ||
| 35 | \ | ||
| 36 | __percpu_counter_init(fbc, value, &__key); \ | ||
| 37 | }) | ||
| 38 | |||
| 31 | void percpu_counter_destroy(struct percpu_counter *fbc); | 39 | void percpu_counter_destroy(struct percpu_counter *fbc); |
| 32 | void percpu_counter_set(struct percpu_counter *fbc, s64 amount); | 40 | void percpu_counter_set(struct percpu_counter *fbc, s64 amount); |
| 33 | void __percpu_counter_add(struct percpu_counter *fbc, s64 amount, s32 batch); | 41 | void __percpu_counter_add(struct percpu_counter *fbc, s64 amount, s32 batch); |
| @@ -81,8 +89,6 @@ static inline int percpu_counter_init(struct percpu_counter *fbc, s64 amount) | |||
| 81 | return 0; | 89 | return 0; |
| 82 | } | 90 | } |
| 83 | 91 | ||
| 84 | #define percpu_counter_init_irq percpu_counter_init | ||
| 85 | |||
| 86 | static inline void percpu_counter_destroy(struct percpu_counter *fbc) | 92 | static inline void percpu_counter_destroy(struct percpu_counter *fbc) |
| 87 | { | 93 | { |
| 88 | } | 94 | } |
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h index 1168fbcea8d4..921340a7b71c 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h | |||
| @@ -204,18 +204,6 @@ struct rcu_synchronize { | |||
| 204 | 204 | ||
| 205 | extern void wakeme_after_rcu(struct rcu_head *head); | 205 | extern void wakeme_after_rcu(struct rcu_head *head); |
| 206 | 206 | ||
| 207 | #define synchronize_rcu_xxx(name, func) \ | ||
| 208 | void name(void) \ | ||
| 209 | { \ | ||
| 210 | struct rcu_synchronize rcu; \ | ||
| 211 | |||
