diff options
author | Jeff Garzik <jgarzik@pobox.com> | 2005-10-18 17:16:06 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-10-18 17:16:06 -0400 |
commit | 5a476deff3d17093da39c4eccb2692ba714dcb11 (patch) | |
tree | 16f5c745a3c8ac780a218ad3d43e32f33164bcf5 /include | |
parent | dd4efa44ebf2a8a0e5edf60a53eadec981b4b10a (diff) | |
parent | 39ca371c45b04cd50d0974030ae051906fc516b6 (diff) |
Merge branch 'master'
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-arm/arch-pxa/pxafb.h | 1 | ||||
-rw-r--r-- | include/asm-arm/arch-s3c2410/io.h | 58 | ||||
-rw-r--r-- | include/asm-sparc64/pbm.h | 30 | ||||
-rw-r--r-- | include/linux/acct.h | 4 | ||||
-rw-r--r-- | include/linux/aio.h | 7 | ||||
-rw-r--r-- | include/linux/cpumask.h | 16 | ||||
-rw-r--r-- | include/linux/list.h | 39 | ||||
-rw-r--r-- | include/linux/rcupdate.h | 1 |
8 files changed, 90 insertions, 66 deletions
diff --git a/include/asm-arm/arch-pxa/pxafb.h b/include/asm-arm/arch-pxa/pxafb.h index 21c0e16dce5f..aba9b30f4249 100644 --- a/include/asm-arm/arch-pxa/pxafb.h +++ b/include/asm-arm/arch-pxa/pxafb.h | |||
@@ -66,4 +66,5 @@ struct pxafb_mach_info { | |||
66 | 66 | ||
67 | }; | 67 | }; |
68 | void set_pxa_fb_info(struct pxafb_mach_info *hard_pxa_fb_info); | 68 | void set_pxa_fb_info(struct pxafb_mach_info *hard_pxa_fb_info); |
69 | void set_pxa_fb_parent(struct device *parent_dev); | ||
69 | unsigned long pxafb_get_hsync_time(struct device *dev); | 70 | unsigned long pxafb_get_hsync_time(struct device *dev); |
diff --git a/include/asm-arm/arch-s3c2410/io.h b/include/asm-arm/arch-s3c2410/io.h index 418233a7ee6f..4bf272ed9add 100644 --- a/include/asm-arm/arch-s3c2410/io.h +++ b/include/asm-arm/arch-s3c2410/io.h | |||
@@ -9,7 +9,7 @@ | |||
9 | * 06-Dec-1997 RMK Created. | 9 | * 06-Dec-1997 RMK Created. |
10 | * 02-Sep-2003 BJD Modified for S3C2410 | 10 | * 02-Sep-2003 BJD Modified for S3C2410 |
11 | * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA | 11 | * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA |
12 | * | 12 | * 13-Oct-2005 BJD Fixed problems with LDRH/STRH offset range |
13 | */ | 13 | */ |
14 | 14 | ||
15 | #ifndef __ASM_ARM_ARCH_IO_H | 15 | #ifndef __ASM_ARM_ARCH_IO_H |
@@ -97,7 +97,7 @@ DECLARE_IO(int,l,"") | |||
97 | else \ | 97 | else \ |
98 | __asm__ __volatile__( \ | 98 | __asm__ __volatile__( \ |
99 | "strb %0, [%1, #0] @ outbc" \ | 99 | "strb %0, [%1, #0] @ outbc" \ |
100 | : : "r" (value), "r" ((port))); \ | 100 | : : "r" (value), "r" ((port))); \ |
101 | }) | 101 | }) |
102 | 102 | ||
103 | #define __inbc(port) \ | 103 | #define __inbc(port) \ |
@@ -110,35 +110,61 @@ DECLARE_IO(int,l,"") | |||
110 | else \ | 110 | else \ |
111 | __asm__ __volatile__( \ | 111 | __asm__ __volatile__( \ |
112 | "ldrb %0, [%1, #0] @ inbc" \ | 112 | "ldrb %0, [%1, #0] @ inbc" \ |
113 | : "=r" (result) : "r" ((port))); \ | 113 | : "=r" (result) : "r" ((port))); \ |
114 | result; \ | 114 | result; \ |
115 | }) | 115 | }) |
116 | 116 | ||
117 | #define __outwc(value,port) \ | 117 | #define __outwc(value,port) \ |
118 | ({ \ | 118 | ({ \ |
119 | unsigned long v = value; \ | 119 | unsigned long v = value; \ |
120 | if (__PORT_PCIO((port))) \ | 120 | if (__PORT_PCIO((port))) { \ |
121 | __asm__ __volatile__( \ | 121 | if ((port) < 256 && (port) > -256) \ |
122 | "strh %0, [%1, %2] @ outwc" \ | 122 | __asm__ __volatile__( \ |
123 | : : "r" (v), "r" (PCIO_BASE), "Jr" ((port))); \ | 123 | "strh %0, [%1, %2] @ outwc" \ |
124 | else \ | 124 | : : "r" (v), "r" (PCIO_BASE), "Jr" ((port))); \ |
125 | else if ((port) > 0) \ | ||
126 | __asm__ __volatile__( \ | ||
127 | "strh %0, [%1, %2] @ outwc" \ | ||
128 | : : "r" (v), \ | ||
129 | "r" (PCIO_BASE + ((port) & ~0xff)), \ | ||
130 | "Jr" (((port) & 0xff))); \ | ||
131 | else \ | ||
132 | __asm__ __volatile__( \ | ||
133 | "strh %0, [%1, #0] @ outwc" \ | ||
134 | : : "r" (v), \ | ||
135 | "r" (PCIO_BASE + (port))); \ | ||
136 | } else \ | ||
125 | __asm__ __volatile__( \ | 137 | __asm__ __volatile__( \ |
126 | "strh %0, [%1, #0] @ outwc" \ | 138 | "strh %0, [%1, #0] @ outwc" \ |
127 | : : "r" (v), "r" ((port))); \ | 139 | : : "r" (v), "r" ((port))); \ |
128 | }) | 140 | }) |
129 | 141 | ||
130 | #define __inwc(port) \ | 142 | #define __inwc(port) \ |
131 | ({ \ | 143 | ({ \ |
132 | unsigned short result; \ | 144 | unsigned short result; \ |
133 | if (__PORT_PCIO((port))) \ | 145 | if (__PORT_PCIO((port))) { \ |
134 | __asm__ __volatile__( \ | 146 | if ((port) < 256 && (port) > -256 ) \ |
135 | "ldrh %0, [%1, %2] @ inwc" \ | 147 | __asm__ __volatile__( \ |
136 | : "=r" (result) : "r" (PCIO_BASE), "Jr" ((port))); \ | 148 | "ldrh %0, [%1, %2] @ inwc" \ |
137 | else \ | 149 | : "=r" (result) \ |
150 | : "r" (PCIO_BASE), \ | ||
151 | "Jr" ((port))); \ | ||
152 | else if ((port) > 0) \ | ||
153 | __asm__ __volatile__( \ | ||
154 | "ldrh %0, [%1, %2] @ inwc" \ | ||
155 | : "=r" (result) \ | ||
156 | : "r" (PCIO_BASE + ((port) & ~0xff)), \ | ||
157 | "Jr" (((port) & 0xff))); \ | ||
158 | else \ | ||
159 | __asm__ __volatile__( \ | ||
160 | "ldrh %0, [%1, #0] @ inwc" \ | ||
161 | : "=r" (result) \ | ||
162 | : "r" (PCIO_BASE + ((port)))); \ | ||
163 | } else \ | ||
138 | __asm__ __volatile__( \ | 164 | __asm__ __volatile__( \ |
139 | "ldrh %0, [%1, #0] @ inwc" \ | 165 | "ldrh %0, [%1, #0] @ inwc" \ |
140 | : "=r" (result) : "r" ((port))); \ | 166 | : "=r" (result) : "r" ((port))); \ |
141 | result; \ | 167 | result; \ |
142 | }) | 168 | }) |
143 | 169 | ||
144 | #define __outlc(value,port) \ | 170 | #define __outlc(value,port) \ |
diff --git a/include/asm-sparc64/pbm.h b/include/asm-sparc64/pbm.h index 38bbbccb4068..dd35a2c7798a 100644 --- a/include/asm-sparc64/pbm.h +++ b/include/asm-sparc64/pbm.h | |||
@@ -27,23 +27,27 @@ | |||
27 | * PCI bus. | 27 | * PCI bus. |
28 | */ | 28 | */ |
29 | 29 | ||
30 | #define PBM_LOGCLUSTERS 3 | ||
31 | #define PBM_NCLUSTERS (1 << PBM_LOGCLUSTERS) | ||
32 | |||
33 | struct pci_controller_info; | 30 | struct pci_controller_info; |
34 | 31 | ||
35 | /* This contains the software state necessary to drive a PCI | 32 | /* This contains the software state necessary to drive a PCI |
36 | * controller's IOMMU. | 33 | * controller's IOMMU. |
37 | */ | 34 | */ |
35 | struct pci_iommu_arena { | ||
36 | unsigned long *map; | ||
37 | unsigned int hint; | ||
38 | unsigned int limit; | ||
39 | }; | ||
40 | |||
38 | struct pci_iommu { | 41 | struct pci_iommu { |
39 | /* This protects the controller's IOMMU and all | 42 | /* This protects the controller's IOMMU and all |
40 | * streaming buffers underneath. | 43 | * streaming buffers underneath. |
41 | */ | 44 | */ |
42 | spinlock_t lock; | 45 | spinlock_t lock; |
43 | 46 | ||
47 | struct pci_iommu_arena arena; | ||
48 | |||
44 | /* IOMMU page table, a linear array of ioptes. */ | 49 | /* IOMMU page table, a linear array of ioptes. */ |
45 | iopte_t *page_table; /* The page table itself. */ | 50 | iopte_t *page_table; /* The page table itself. */ |
46 | int page_table_sz_bits; /* log2 of ow many pages does it map? */ | ||
47 | 51 | ||
48 | /* Base PCI memory space address where IOMMU mappings | 52 | /* Base PCI memory space address where IOMMU mappings |
49 | * begin. | 53 | * begin. |
@@ -62,12 +66,6 @@ struct pci_iommu { | |||
62 | */ | 66 | */ |
63 | unsigned long write_complete_reg; | 67 | unsigned long write_complete_reg; |
64 | 68 | ||
65 | /* The lowest used consistent mapping entry. Since | ||
66 | * we allocate consistent maps out of cluster 0 this | ||
67 | * is relative to the beginning of closter 0. | ||
68 | */ | ||
69 | u32 lowest_consistent_map; | ||
70 | |||
71 | /* In order to deal with some buggy third-party PCI bridges that | 69 | /* In order to deal with some buggy third-party PCI bridges that |
72 | * do wrong prefetching, we never mark valid mappings as invalid. | 70 | * do wrong prefetching, we never mark valid mappings as invalid. |
73 | * Instead we point them at this dummy page. | 71 | * Instead we point them at this dummy page. |
@@ -75,16 +73,6 @@ struct pci_iommu { | |||
75 | unsigned long dummy_page; | 73 | unsigned long dummy_page; |
76 | unsigned long dummy_page_pa; | 74 | unsigned long dummy_page_pa; |
77 | 75 | ||
78 | /* If PBM_NCLUSTERS is ever decreased to 4 or lower, | ||
79 | * or if largest supported page_table_sz * 8K goes above | ||
80 | * 2GB, you must increase the size of the type of | ||
81 | * these counters. You have been duly warned. -DaveM | ||
82 | */ | ||
83 | struct { | ||
84 | u16 next; | ||
85 | u16 flush; | ||
86 | } alloc_info[PBM_NCLUSTERS]; | ||
87 | |||
88 | /* CTX allocation. */ | 76 | /* CTX allocation. */ |
89 | unsigned long ctx_lowest_free; | 77 | unsigned long ctx_lowest_free; |
90 | unsigned long ctx_bitmap[IOMMU_NUM_CTXS / (sizeof(unsigned long) * 8)]; | 78 | unsigned long ctx_bitmap[IOMMU_NUM_CTXS / (sizeof(unsigned long) * 8)]; |
@@ -102,7 +90,7 @@ struct pci_iommu { | |||
102 | u32 dma_addr_mask; | 90 | u32 dma_addr_mask; |
103 | }; | 91 | }; |
104 | 92 | ||
105 | extern void pci_iommu_table_init(struct pci_iommu *, int); | 93 | extern void pci_iommu_table_init(struct pci_iommu *iommu, int tsbsize, u32 dma_offset, u32 dma_addr_mask); |
106 | 94 | ||
107 | /* This describes a PCI bus module's streaming buffer. */ | 95 | /* This describes a PCI bus module's streaming buffer. */ |
108 | struct pci_strbuf { | 96 | struct pci_strbuf { |
diff --git a/include/linux/acct.h b/include/linux/acct.h index 1993a3691768..19f70462b3be 100644 --- a/include/linux/acct.h +++ b/include/linux/acct.h | |||
@@ -162,13 +162,13 @@ typedef struct acct acct_t; | |||
162 | #ifdef __KERNEL__ | 162 | #ifdef __KERNEL__ |
163 | /* | 163 | /* |
164 | * Yet another set of HZ to *HZ helper functions. | 164 | * Yet another set of HZ to *HZ helper functions. |
165 | * See <linux/times.h> for the original. | 165 | * See <linux/jiffies.h> for the original. |
166 | */ | 166 | */ |
167 | 167 | ||
168 | static inline u32 jiffies_to_AHZ(unsigned long x) | 168 | static inline u32 jiffies_to_AHZ(unsigned long x) |
169 | { | 169 | { |
170 | #if (TICK_NSEC % (NSEC_PER_SEC / AHZ)) == 0 | 170 | #if (TICK_NSEC % (NSEC_PER_SEC / AHZ)) == 0 |
171 | return x / (HZ / USER_HZ); | 171 | return x / (HZ / AHZ); |
172 | #else | 172 | #else |
173 | u64 tmp = (u64)x * TICK_NSEC; | 173 | u64 tmp = (u64)x * TICK_NSEC; |
174 | do_div(tmp, (NSEC_PER_SEC / AHZ)); | 174 | do_div(tmp, (NSEC_PER_SEC / AHZ)); |
diff --git a/include/linux/aio.h b/include/linux/aio.h index 60def658b246..0decf66117c1 100644 --- a/include/linux/aio.h +++ b/include/linux/aio.h | |||
@@ -24,7 +24,12 @@ struct kioctx; | |||
24 | #define KIOCB_SYNC_KEY (~0U) | 24 | #define KIOCB_SYNC_KEY (~0U) |
25 | 25 | ||
26 | /* ki_flags bits */ | 26 | /* ki_flags bits */ |
27 | #define KIF_LOCKED 0 | 27 | /* |
28 | * This may be used for cancel/retry serialization in the future, but | ||
29 | * for now it's unused and we probably don't want modules to even | ||
30 | * think they can use it. | ||
31 | */ | ||
32 | /* #define KIF_LOCKED 0 */ | ||
28 | #define KIF_KICKED 1 | 33 | #define KIF_KICKED 1 |
29 | #define KIF_CANCELLED 2 | 34 | #define KIF_CANCELLED 2 |
30 | 35 | ||
diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h index fe9778301d07..9bdba8169b41 100644 --- a/include/linux/cpumask.h +++ b/include/linux/cpumask.h | |||
@@ -393,15 +393,13 @@ extern cpumask_t cpu_present_map; | |||
393 | #define for_each_present_cpu(cpu) for_each_cpu_mask((cpu), cpu_present_map) | 393 | #define for_each_present_cpu(cpu) for_each_cpu_mask((cpu), cpu_present_map) |
394 | 394 | ||
395 | /* Find the highest possible smp_processor_id() */ | 395 | /* Find the highest possible smp_processor_id() */ |
396 | static inline unsigned int highest_possible_processor_id(void) | 396 | #define highest_possible_processor_id() \ |
397 | { | 397 | ({ \ |
398 | unsigned int cpu, highest = 0; | 398 | unsigned int cpu, highest = 0; \ |
399 | 399 | for_each_cpu_mask(cpu, cpu_possible_map) \ | |
400 | for_each_cpu_mask(cpu, cpu_possible_map) | 400 | highest = cpu; \ |
401 | highest = cpu; | 401 | highest; \ |
402 | 402 | }) | |
403 | return highest; | ||
404 | } | ||
405 | 403 | ||
406 | 404 | ||
407 | #endif /* __LINUX_CPUMASK_H */ | 405 | #endif /* __LINUX_CPUMASK_H */ |
diff --git a/include/linux/list.h b/include/linux/list.h index e6ec59682274..084971f333fe 100644 --- a/include/linux/list.h +++ b/include/linux/list.h | |||
@@ -442,12 +442,14 @@ static inline void list_splice_init(struct list_head *list, | |||
442 | * as long as the traversal is guarded by rcu_read_lock(). | 442 | * as long as the traversal is guarded by rcu_read_lock(). |
443 | */ | 443 | */ |
444 | #define list_for_each_rcu(pos, head) \ | 444 | #define list_for_each_rcu(pos, head) \ |
445 | for (pos = (head)->next; prefetch(pos->next), pos != (head); \ | 445 | for (pos = (head)->next; \ |
446 | pos = rcu_dereference(pos->next)) | 446 | prefetch(rcu_dereference(pos)->next), pos != (head); \ |
447 | pos = pos->next) | ||
447 | 448 | ||
448 | #define __list_for_each_rcu(pos, head) \ | 449 | #define __list_for_each_rcu(pos, head) \ |
449 | for (pos = (head)->next; pos != (head); \ | 450 | for (pos = (head)->next; \ |
450 | pos = rcu_dereference(pos->next)) | 451 | rcu_dereference(pos) != (head); \ |
452 | pos = pos->next) | ||
451 | 453 | ||
452 | /** | 454 | /** |
453 | * list_for_each_safe_rcu - iterate over an rcu-protected list safe | 455 | * list_for_each_safe_rcu - iterate over an rcu-protected list safe |
@@ -461,8 +463,9 @@ static inline void list_splice_init(struct list_head *list, | |||
461 | * as long as the traversal is guarded by rcu_read_lock(). | 463 | * as long as the traversal is guarded by rcu_read_lock(). |
462 | */ | 464 | */ |
463 | #define list_for_each_safe_rcu(pos, n, head) \ | 465 | #define list_for_each_safe_rcu(pos, n, head) \ |
464 | for (pos = (head)->next, n = pos->next; pos != (head); \ | 466 | for (pos = (head)->next; \ |
465 | pos = rcu_dereference(n), n = pos->next) | 467 | n = rcu_dereference(pos)->next, pos != (head); \ |
468 | pos = n) | ||
466 | 469 | ||
467 | /** | 470 | /** |
468 | * list_for_each_entry_rcu - iterate over rcu list of given type | 471 | * list_for_each_entry_rcu - iterate over rcu list of given type |
@@ -474,11 +477,11 @@ static inline void list_splice_init(struct list_head *list, | |||
474 | * the _rcu list-mutation primitives such as list_add_rcu() | 477 | * the _rcu list-mutation primitives such as list_add_rcu() |
475 | * as long as the traversal is guarded by rcu_read_lock(). | 478 | * as long as the traversal is guarded by rcu_read_lock(). |
476 | */ | 479 | */ |
477 | #define list_for_each_entry_rcu(pos, head, member) \ | 480 | #define list_for_each_entry_rcu(pos, head, member) \ |
478 | for (pos = list_entry((head)->next, typeof(*pos), member); \ | 481 | for (pos = list_entry((head)->next, typeof(*pos), member); \ |
479 | prefetch(pos->member.next), &pos->member != (head); \ | 482 | prefetch(rcu_dereference(pos)->member.next), \ |
480 | pos = rcu_dereference(list_entry(pos->member.next, \ | 483 | &pos->member != (head); \ |
481 | typeof(*pos), member))) | 484 | pos = list_entry(pos->member.next, typeof(*pos), member)) |
482 | 485 | ||
483 | 486 | ||
484 | /** | 487 | /** |
@@ -492,8 +495,9 @@ static inline void list_splice_init(struct list_head *list, | |||
492 | * as long as the traversal is guarded by rcu_read_lock(). | 495 | * as long as the traversal is guarded by rcu_read_lock(). |
493 | */ | 496 | */ |
494 | #define list_for_each_continue_rcu(pos, head) \ | 497 | #define list_for_each_continue_rcu(pos, head) \ |
495 | for ((pos) = (pos)->next; prefetch((pos)->next), (pos) != (head); \ | 498 | for ((pos) = (pos)->next; \ |
496 | (pos) = rcu_dereference((pos)->next)) | 499 | prefetch(rcu_dereference((pos))->next), (pos) != (head); \ |
500 | (pos) = (pos)->next) | ||
497 | 501 | ||
498 | /* | 502 | /* |
499 | * Double linked lists with a single pointer list head. | 503 | * Double linked lists with a single pointer list head. |
@@ -696,8 +700,9 @@ static inline void hlist_add_after_rcu(struct hlist_node *prev, | |||
696 | pos = n) | 700 | pos = n) |
697 | 701 | ||
698 | #define hlist_for_each_rcu(pos, head) \ | 702 | #define hlist_for_each_rcu(pos, head) \ |
699 | for ((pos) = (head)->first; pos && ({ prefetch((pos)->next); 1; }); \ | 703 | for ((pos) = (head)->first; \ |
700 | (pos) = rcu_dereference((pos)->next)) | 704 | rcu_dereference((pos)) && ({ prefetch((pos)->next); 1; }); \ |
705 | (pos) = (pos)->next) | ||
701 | 706 | ||
702 | /** | 707 | /** |
703 | * hlist_for_each_entry - iterate over list of given type | 708 | * hlist_for_each_entry - iterate over list of given type |
@@ -762,9 +767,9 @@ static inline void hlist_add_after_rcu(struct hlist_node *prev, | |||
762 | */ | 767 | */ |
763 | #define hlist_for_each_entry_rcu(tpos, pos, head, member) \ | 768 | #define hlist_for_each_entry_rcu(tpos, pos, head, member) \ |
764 | for (pos = (head)->first; \ | 769 | for (pos = (head)->first; \ |
765 | pos && ({ prefetch(pos->next); 1;}) && \ | 770 | rcu_dereference(pos) && ({ prefetch(pos->next); 1;}) && \ |
766 | ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \ | 771 | ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \ |
767 | pos = rcu_dereference(pos->next)) | 772 | pos = pos->next) |
768 | 773 | ||
769 | #else | 774 | #else |
770 | #warning "don't include kernel headers in userspace" | 775 | #warning "don't include kernel headers in userspace" |
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h index 4e65eb44adfd..70191a5a148f 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h | |||
@@ -94,6 +94,7 @@ struct rcu_data { | |||
94 | long batch; /* Batch # for current RCU batch */ | 94 | long batch; /* Batch # for current RCU batch */ |
95 | struct rcu_head *nxtlist; | 95 | struct rcu_head *nxtlist; |
96 | struct rcu_head **nxttail; | 96 | struct rcu_head **nxttail; |
97 | long count; /* # of queued items */ | ||
97 | struct rcu_head *curlist; | 98 | struct rcu_head *curlist; |
98 | struct rcu_head **curtail; | 99 | struct rcu_head **curtail; |
99 | struct rcu_head *donelist; | 100 | struct rcu_head *donelist; |