diff options
Diffstat (limited to 'include/linux')
70 files changed, 510 insertions, 402 deletions
diff --git a/include/linux/backing-dev.h b/include/linux/backing-dev.h index 0ec2c594868e..1d52425a6118 100644 --- a/include/linux/backing-dev.h +++ b/include/linux/backing-dev.h | |||
| @@ -229,9 +229,14 @@ static inline int bdi_rw_congested(struct backing_dev_info *bdi) | |||
| 229 | (1 << BDI_async_congested)); | 229 | (1 << BDI_async_congested)); |
| 230 | } | 230 | } |
| 231 | 231 | ||
| 232 | void clear_bdi_congested(struct backing_dev_info *bdi, int rw); | 232 | enum { |
| 233 | void set_bdi_congested(struct backing_dev_info *bdi, int rw); | 233 | BLK_RW_ASYNC = 0, |
| 234 | long congestion_wait(int rw, long timeout); | 234 | BLK_RW_SYNC = 1, |
| 235 | }; | ||
| 236 | |||
| 237 | void clear_bdi_congested(struct backing_dev_info *bdi, int sync); | ||
| 238 | void set_bdi_congested(struct backing_dev_info *bdi, int sync); | ||
| 239 | long congestion_wait(int sync, long timeout); | ||
| 235 | 240 | ||
| 236 | 241 | ||
| 237 | static inline bool bdi_cap_writeback_dirty(struct backing_dev_info *bdi) | 242 | static inline bool bdi_cap_writeback_dirty(struct backing_dev_info *bdi) |
diff --git a/include/linux/bitmap.h b/include/linux/bitmap.h index 2878811c6134..756d78b8c1c5 100644 --- a/include/linux/bitmap.h +++ b/include/linux/bitmap.h | |||
| @@ -94,13 +94,13 @@ extern void __bitmap_shift_right(unsigned long *dst, | |||
| 94 | const unsigned long *src, int shift, int bits); | 94 | const unsigned long *src, int shift, int bits); |
| 95 | extern void __bitmap_shift_left(unsigned long *dst, | 95 | extern void __bitmap_shift_left(unsigned long *dst, |
| 96 | const unsigned long *src, int shift, int bits); | 96 | const unsigned long *src, int shift, int bits); |
| 97 | extern void __bitmap_and(unsigned long *dst, const unsigned long *bitmap1, | 97 | extern int __bitmap_and(unsigned long *dst, const unsigned long *bitmap1, |
| 98 | const unsigned long *bitmap2, int bits); | 98 | const unsigned long *bitmap2, int bits); |
| 99 | extern void __bitmap_or(unsigned long *dst, const unsigned long *bitmap1, | 99 | extern void __bitmap_or(unsigned long *dst, const unsigned long *bitmap1, |
| 100 | const unsigned long *bitmap2, int bits); | 100 | const unsigned long *bitmap2, int bits); |
| 101 | extern void __bitmap_xor(unsigned long *dst, const unsigned long *bitmap1, | 101 | extern void __bitmap_xor(unsigned long *dst, const unsigned long *bitmap1, |
| 102 | const unsigned long *bitmap2, int bits); | 102 | const unsigned long *bitmap2, int bits); |
| 103 | extern void __bitmap_andnot(unsigned long *dst, const unsigned long *bitmap1, | 103 | extern int __bitmap_andnot(unsigned long *dst, const unsigned long *bitmap1, |
| 104 | const unsigned long *bitmap2, int bits); | 104 | const unsigned long *bitmap2, int bits); |
| 105 | extern int __bitmap_intersects(const unsigned long *bitmap1, | 105 | extern int __bitmap_intersects(const unsigned long *bitmap1, |
| 106 | const unsigned long *bitmap2, int bits); | 106 | const unsigned long *bitmap2, int bits); |
| @@ -171,13 +171,12 @@ static inline void bitmap_copy(unsigned long *dst, const unsigned long *src, | |||
| 171 | } | 171 | } |
| 172 | } | 172 | } |
| 173 | 173 | ||
| 174 | static inline void bitmap_and(unsigned long *dst, const unsigned long *src1, | 174 | static inline int bitmap_and(unsigned long *dst, const unsigned long *src1, |
| 175 | const unsigned long *src2, int nbits) | 175 | const unsigned long *src2, int nbits) |
| 176 | { | 176 | { |
| 177 | if (small_const_nbits(nbits)) | 177 | if (small_const_nbits(nbits)) |
| 178 | *dst = *src1 & *src2; | 178 | return (*dst = *src1 & *src2) != 0; |
| 179 | else | 179 | return __bitmap_and(dst, src1, src2, nbits); |
| 180 | __bitmap_and(dst, src1, src2, nbits); | ||
| 181 | } | 180 | } |
| 182 | 181 | ||
| 183 | static inline void bitmap_or(unsigned long *dst, const unsigned long *src1, | 182 | static inline void bitmap_or(unsigned long *dst, const unsigned long *src1, |
| @@ -198,13 +197,12 @@ static inline void bitmap_xor(unsigned long *dst, const unsigned long *src1, | |||
| 198 | __bitmap_xor(dst, src1, src2, nbits); | 197 | __bitmap_xor(dst, src1, src2, nbits); |
| 199 | } | 198 | } |
| 200 | 199 | ||
| 201 | static inline void bitmap_andnot(unsigned long *dst, const unsigned long *src1, | 200 | static inline int bitmap_andnot(unsigned long *dst, const unsigned long *src1, |
| 202 | const unsigned long *src2, int nbits) | 201 | const unsigned long *src2, int nbits) |
| 203 | { | 202 | { |
| 204 | if (small_const_nbits(nbits)) | 203 | if (small_const_nbits(nbits)) |
| 205 | *dst = *src1 & ~(*src2); | 204 | return (*dst = *src1 & ~(*src2)) != 0; |
| 206 | else | 205 | return __bitmap_andnot(dst, src1, src2, nbits); |
| 207 | __bitmap_andnot(dst, src1, src2, nbits); | ||
| 208 | } | 206 | } |
| 209 | 207 | ||
| 210 | static inline void bitmap_complement(unsigned long *dst, const unsigned long *src, | 208 | static inline void bitmap_complement(unsigned long *dst, const unsigned long *src, |
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 49ae07951d55..69103e053c92 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
| @@ -70,11 +70,6 @@ enum rq_cmd_type_bits { | |||
| 70 | REQ_TYPE_ATA_PC, | 70 | REQ_TYPE_ATA_PC, |
| 71 | }; | 71 | }; |
| 72 | 72 | ||
| 73 | enum { | ||
| 74 | BLK_RW_ASYNC = 0, | ||
| 75 | BLK_RW_SYNC = 1, | ||
| 76 | }; | ||
| 77 | |||
| 78 | /* | 73 | /* |
| 79 | * For request of type REQ_TYPE_LINUX_BLOCK, rq->cmd[0] is the opcode being | 74 | * For request of type REQ_TYPE_LINUX_BLOCK, rq->cmd[0] is the opcode being |
| 80 | * sent down (similar to how REQ_TYPE_BLOCK_PC means that ->cmd[] holds a | 75 | * sent down (similar to how REQ_TYPE_BLOCK_PC means that ->cmd[] holds a |
| @@ -723,6 +718,7 @@ struct rq_map_data { | |||
| 723 | int nr_entries; | 718 | int nr_entries; |
| 724 | unsigned long offset; | 719 | unsigned long offset; |
| 725 | int null_mapped; | 720 | int null_mapped; |
| 721 | int from_user; | ||
| 726 | }; | 722 | }; |
| 727 | 723 | ||
| 728 | struct req_iterator { | 724 | struct req_iterator { |
| @@ -779,18 +775,18 @@ extern int sg_scsi_ioctl(struct request_queue *, struct gendisk *, fmode_t, | |||
| 779 | * congested queues, and wake up anyone who was waiting for requests to be | 775 | * congested queues, and wake up anyone who was waiting for requests to be |
| 780 | * put back. | 776 | * put back. |
| 781 | */ | 777 | */ |
| 782 | static inline void blk_clear_queue_congested(struct request_queue *q, int rw) | 778 | static inline void blk_clear_queue_congested(struct request_queue *q, int sync) |
| 783 | { | 779 | { |
| 784 | clear_bdi_congested(&q->backing_dev_info, rw); | 780 | clear_bdi_congested(&q->backing_dev_info, sync); |
| 785 | } | 781 | } |
| 786 | 782 | ||
| 787 | /* | 783 | /* |
| 788 | * A queue has just entered congestion. Flag that in the queue's VM-visible | 784 | * A queue has just entered congestion. Flag that in the queue's VM-visible |
| 789 | * state flags and increment the global gounter of congested queues. | 785 | * state flags and increment the global gounter of congested queues. |
| 790 | */ | 786 | */ |
| 791 | static inline void blk_set_queue_congested(struct request_queue *q, int rw) | 787 | static inline void blk_set_queue_congested(struct request_queue *q, int sync) |
| 792 | { | 788 | { |
| 793 | set_bdi_congested(&q->backing_dev_info, rw); | 789 | set_bdi_congested(&q->backing_dev_info, sync); |
| 794 | } | 790 | } |
| 795 | 791 | ||
| 796 | extern void blk_start_queue(struct request_queue *q); | 792 | extern void blk_start_queue(struct request_queue *q); |
| @@ -917,6 +913,7 @@ extern void blk_queue_logical_block_size(struct request_queue *, unsigned short) | |||
| 917 | extern void blk_queue_physical_block_size(struct request_queue *, unsigned short); | 913 | extern void blk_queue_physical_block_size(struct request_queue *, unsigned short); |
| 918 | extern void blk_queue_alignment_offset(struct request_queue *q, | 914 | extern void blk_queue_alignment_offset(struct request_queue *q, |
| 919 | unsigned int alignment); | 915 | unsigned int alignment); |
| 916 | extern void blk_limits_io_min(struct queue_limits *limits, unsigned int min); | ||
| 920 | extern void blk_queue_io_min(struct request_queue *q, unsigned int min); | 917 | extern void blk_queue_io_min(struct request_queue *q, unsigned int min); |
| 921 | extern void blk_queue_io_opt(struct request_queue *q, unsigned int opt); | 918 | extern void blk_queue_io_opt(struct request_queue *q, unsigned int opt); |
| 922 | extern void blk_set_default_limits(struct queue_limits *lim); | 919 | extern void blk_set_default_limits(struct queue_limits *lim); |
diff --git a/include/linux/cb710.h b/include/linux/cb710.h index 63bc9a4d2926..8cc10411bab2 100644 --- a/include/linux/cb710.h +++ b/include/linux/cb710.h | |||
| @@ -140,29 +140,6 @@ void cb710_dump_regs(struct cb710_chip *chip, unsigned dump); | |||
| 140 | #include <linux/highmem.h> | 140 | #include <linux/highmem.h> |
| 141 | #include <linux/scatterlist.h> | 141 | #include <linux/scatterlist.h> |
| 142 | 142 | ||
| 143 | /** | ||
| 144 | * cb710_sg_miter_stop_writing - stop mapping iteration after writing | ||
| 145 | * @miter: sg mapping iter to be stopped | ||
| 146 | * | ||
| 147 | * Description: | ||
| 148 | * Stops mapping iterator @miter. @miter should have been started | ||
| 149 | * started using sg_miter_start(). A stopped iteration can be | ||
| 150 | * resumed by calling sg_miter_next() on it. This is useful when | ||
| 151 | * resources (kmap) need to be released during iteration. | ||
| 152 | * | ||
| 153 | * This is a convenience wrapper that will be optimized out for arches | ||
| 154 | * that don't need flush_kernel_dcache_page(). | ||
| 155 | * | ||
| 156 | * Context: | ||
| 157 | * IRQ disabled if the SG_MITER_ATOMIC is set. Don't care otherwise. | ||
| 158 | */ | ||
| 159 | static inline void cb710_sg_miter_stop_writing(struct sg_mapping_iter *miter) | ||
| 160 | { | ||
| 161 | if (miter->page) | ||
| 162 | flush_kernel_dcache_page(miter->page); | ||
| 163 | sg_miter_stop(miter); | ||
| 164 | } | ||
| 165 | |||
| 166 | /* | 143 | /* |
| 167 | * 32-bit PIO mapping sg iterator | 144 | * 32-bit PIO mapping sg iterator |
| 168 | * | 145 | * |
| @@ -171,12 +148,12 @@ static inline void cb710_sg_miter_stop_writing(struct sg_mapping_iter *miter) | |||
| 171 | * without DMA support). | 148 | * without DMA support). |
| 172 | * | 149 | * |
| 173 | * Best-case reading (transfer from device): | 150 | * Best-case reading (transfer from device): |
| 174 | * sg_miter_start(); | 151 | * sg_miter_start(, SG_MITER_TO_SG); |
| 175 | * cb710_sg_dwiter_write_from_io(); | 152 | * cb710_sg_dwiter_write_from_io(); |
| 176 | * cb710_sg_miter_stop_writing(); | 153 | * sg_miter_stop(); |
| 177 | * | 154 | * |
| 178 | * Best-case writing (transfer to device): | 155 | * Best-case writing (transfer to device): |
| 179 | * sg_miter_start(); | 156 | * sg_miter_start(, SG_MITER_FROM_SG); |
| 180 | * cb710_sg_dwiter_read_to_io(); | 157 | * cb710_sg_dwiter_read_to_io(); |
| 181 | * sg_miter_stop(); | 158 | * sg_miter_stop(); |
| 182 | */ | 159 | */ |
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h index 665fa70e4094..90bba9e62286 100644 --- a/include/linux/cgroup.h +++ b/include/linux/cgroup.h | |||
| @@ -179,14 +179,11 @@ struct cgroup { | |||
| 179 | */ | 179 | */ |
| 180 | struct list_head release_list; | 180 | struct list_head release_list; |
| 181 | 181 | ||
| 182 | /* pids_mutex protects the fields below */ | 182 | /* pids_mutex protects pids_list and cached pid arrays. */ |
| 183 | struct rw_semaphore pids_mutex; | 183 | struct rw_semaphore pids_mutex; |
| 184 | /* Array of process ids in the cgroup */ | 184 | |
| 185 | pid_t *tasks_pids; | 185 | /* Linked list of struct cgroup_pids */ |
| 186 | /* How many files are using the current tasks_pids array */ | 186 | struct list_head pids_list; |
| 187 | int pids_use_count; | ||
| 188 | /* Length of the current tasks_pids array */ | ||
| 189 | int pids_length; | ||
| 190 | 187 | ||
| 191 | /* For RCU-protected deletion */ | 188 | /* For RCU-protected deletion */ |
| 192 | struct rcu_head rcu_head; | 189 | struct rcu_head rcu_head; |
| @@ -366,6 +363,23 @@ int cgroup_task_count(const struct cgroup *cgrp); | |||
| 366 | int cgroup_is_descendant(const struct cgroup *cgrp, struct task_struct *task); | 363 | int cgroup_is_descendant(const struct cgroup *cgrp, struct task_struct *task); |
| 367 | 364 | ||
| 368 | /* | 365 | /* |
| 366 | * When the subsys has to access css and may add permanent refcnt to css, | ||
| 367 | * it should take care of racy conditions with rmdir(). Following set of | ||
| 368 | * functions, is for stop/restart rmdir if necessary. | ||
| 369 | * Because these will call css_get/put, "css" should be alive css. | ||
| 370 | * | ||
| 371 | * cgroup_exclude_rmdir(); | ||
| 372 | * ...do some jobs which may access arbitrary empty cgroup | ||
| 373 | * cgroup_release_and_wakeup_rmdir(); | ||
| 374 | * | ||
| 375 | * When someone removes a cgroup while cgroup_exclude_rmdir() holds it, | ||
| 376 | * it sleeps and cgroup_release_and_wakeup_rmdir() will wake him up. | ||
| 377 | */ | ||
| 378 | |||
| 379 | void cgroup_exclude_rmdir(struct cgroup_subsys_state *css); | ||
| 380 | void cgroup_release_and_wakeup_rmdir(struct cgroup_subsys_state *css); | ||
| 381 | |||
| 382 | /* | ||
| 369 | * Control Group subsystem type. | 383 | * Control Group subsystem type. |
| 370 | * See Documentation/cgroups/cgroups.txt for details | 384 | * See Documentation/cgroups/cgroups.txt for details |
| 371 | */ | 385 | */ |
diff --git a/include/linux/clockchips.h b/include/linux/clockchips.h index 20a100fe2b4f..3a1dbba4d3ae 100644 --- a/include/linux/clockchips.h +++ b/include/linux/clockchips.h | |||
| @@ -143,12 +143,3 @@ extern void clockevents_notify(unsigned long reason, void *arg); | |||
| 143 | #endif | 143 | #endif |
| 144 | 144 | ||
| 145 | #endif | 145 | #endif |
| 146 | |||
| 147 | #ifdef CONFIG_GENERIC_CLOCKEVENTS | ||
| 148 | extern ktime_t clockevents_get_next_event(int cpu); | ||
| 149 | #else | ||
| 150 | static inline ktime_t clockevents_get_next_event(int cpu) | ||
| 151 | { | ||
| 152 | return (ktime_t) { .tv64 = KTIME_MAX }; | ||
| 153 | } | ||
| 154 | #endif | ||
diff --git a/include/linux/clocksource.h b/include/linux/clocksource.h index c56457c8334e..1219be4fb42e 100644 --- a/include/linux/clocksource.h +++ b/include/linux/clocksource.h | |||
| @@ -293,7 +293,12 @@ static inline int clocksource_enable(struct clocksource *cs) | |||
| 293 | if (cs->enable) | 293 | if (cs->enable) |
| 294 | ret = cs->enable(cs); | 294 | ret = cs->enable(cs); |
| 295 | 295 | ||
| 296 | /* save mult_orig on enable */ | 296 | /* |
| 297 | * The frequency may have changed while the clocksource | ||
| 298 | * was disabled. If so the code in ->enable() must update | ||
| 299 | * the mult value to reflect the new frequency. Make sure | ||
| 300 | * mult_orig follows this change. | ||
| 301 | */ | ||
| 297 | cs->mult_orig = cs->mult; | 302 | cs->mult_orig = cs->mult; |
| 298 | 303 | ||
| 299 | return ret; | 304 | return ret; |
| @@ -309,6 +314,13 @@ static inline int clocksource_enable(struct clocksource *cs) | |||
| 309 | */ | 314 | */ |
| 310 | static inline void clocksource_disable(struct clocksource *cs) | 315 | static inline void clocksource_disable(struct clocksource *cs) |
| 311 | { | 316 | { |
| 317 | /* | ||
| 318 | * Save mult_orig in mult so clocksource_enable() can | ||
| 319 | * restore the value regardless if ->enable() updates | ||
| 320 | * the value of mult or not. | ||
| 321 | */ | ||
| 322 | cs->mult = cs->mult_orig; | ||
| 323 | |||
| 312 | if (cs->disable) | 324 | if (cs->disable) |
| 313 | cs->disable(cs); | 325 | cs->disable(cs); |
| 314 | } | 326 | } |
diff --git a/include/linux/console_struct.h b/include/linux/console_struct.h index d71f7c0f931b..38fe59dc89ae 100644 --- a/include/linux/console_struct.h +++ b/include/linux/console_struct.h | |||
| @@ -89,7 +89,6 @@ struct vc_data { | |||
| 89 | unsigned int vc_need_wrap : 1; | 89 | unsigned int vc_need_wrap : 1; |
| 90 | unsigned int vc_can_do_color : 1; | 90 | unsigned int vc_can_do_color : 1; |
| 91 | unsigned int vc_report_mouse : 2; | 91 | unsigned int vc_report_mouse : 2; |
| 92 | unsigned int vc_kmalloced : 1; | ||
| 93 | unsigned char vc_utf : 1; /* Unicode UTF-8 encoding */ | 92 | unsigned char vc_utf : 1; /* Unicode UTF-8 encoding */ |
| 94 | unsigned char vc_utf_count; | 93 | unsigned char vc_utf_count; |
| 95 | int vc_utf_char; | 94 | int vc_utf_char; |
diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h index c5ac87ca7bc6..796df12091b7 100644 --- a/include/linux/cpumask.h +++ b/include/linux/cpumask.h | |||
| @@ -43,10 +43,10 @@ | |||
| 43 | * int cpu_isset(cpu, mask) true iff bit 'cpu' set in mask | 43 | * int cpu_isset(cpu, mask) true iff bit 'cpu' set in mask |
| 44 | * int cpu_test_and_set(cpu, mask) test and set bit 'cpu' in mask | 44 | * int cpu_test_and_set(cpu, mask) test and set bit 'cpu' in mask |
| 45 | * | 45 | * |
| 46 | * void cpus_and(dst, src1, src2) dst = src1 & src2 [intersection] | 46 | * int cpus_and(dst, src1, src2) dst = src1 & src2 [intersection] |
| 47 | * void cpus_or(dst, src1, src2) dst = src1 | src2 [union] | 47 | * void cpus_or(dst, src1, src2) dst = src1 | src2 [union] |
| 48 | * void cpus_xor(dst, src1, src2) dst = src1 ^ src2 | 48 | * void cpus_xor(dst, src1, src2) dst = src1 ^ src2 |
| 49 | * void cpus_andnot(dst, src1, src2) dst = src1 & ~src2 | 49 | * int cpus_andnot(dst, src1, src2) dst = src1 & ~src2 |
| 50 | * void cpus_complement(dst, src) dst = ~src | 50 | * void cpus_complement(dst, src) dst = ~src |
| 51 | * | 51 | * |
| 52 | * int cpus_equal(mask1, mask2) Does mask1 == mask2? | 52 | * int cpus_equal(mask1, mask2) Does mask1 == mask2? |
| @@ -179,10 +179,10 @@ static inline int __cpu_test_and_set(int cpu, cpumask_t *addr) | |||
| 179 | } | 179 | } |
| 180 | 180 | ||
| 181 | #define cpus_and(dst, src1, src2) __cpus_and(&(dst), &(src1), &(src2), NR_CPUS) | 181 | #define cpus_and(dst, src1, src2) __cpus_and(&(dst), &(src1), &(src2), NR_CPUS) |
| 182 | static inline void __cpus_and(cpumask_t *dstp, const cpumask_t *src1p, | 182 | static inline int __cpus_and(cpumask_t *dstp, const cpumask_t *src1p, |
| 183 | const cpumask_t *src2p, int nbits) | 183 | const cpumask_t *src2p, int nbits) |
| 184 | { | 184 | { |
| 185 | bitmap_and(dstp->bits, src1p->bits, src2p->bits, nbits); | 185 | return bitmap_and(dstp->bits, src1p->bits, src2p->bits, nbits); |
| 186 | } | 186 | } |
| 187 | 187 | ||
| 188 | #define cpus_or(dst, src1, src2) __cpus_or(&(dst), &(src1), &(src2), NR_CPUS) | 188 | #define cpus_or(dst, src1, src2) __cpus_or(&(dst), &(src1), &(src2), NR_CPUS) |
| @@ -201,10 +201,10 @@ static inline void __cpus_xor(cpumask_t *dstp, const cpumask_t *src1p, | |||
| 201 | 201 | ||
| 202 | #define cpus_andnot(dst, src1, src2) \ | 202 | #define cpus_andnot(dst, src1, src2) \ |
| 203 | __cpus_andnot(&(dst), &(src1), &(src2), NR_CPUS) | 203 | __cpus_andnot(&(dst), &(src1), &(src2), NR_CPUS) |
| 204 | static inline void __cpus_andnot(cpumask_t *dstp, const cpumask_t *src1p, | 204 | static inline int __cpus_andnot(cpumask_t *dstp, const cpumask_t *src1p, |
| 205 | const cpumask_t *src2p, int nbits) | 205 | const cpumask_t *src2p, int nbits) |
| 206 | { | 206 | { |
| 207 | bitmap_andnot(dstp->bits, src1p->bits, src2p->bits, nbits); | 207 | return bitmap_andnot(dstp->bits, src1p->bits, src2p->bits, nbits); |
| 208 | } | 208 | } |
| 209 | 209 | ||
| 210 | #define cpus_complement(dst, src) __cpus_complement(&(dst), &(src), NR_CPUS) | 210 | #define cpus_complement(dst, src) __cpus_complement(&(dst), &(src), NR_CPUS) |
| @@ -738,11 +738,11 @@ static inline void cpumask_clear(struct cpumask *dstp) | |||
| 738 | * @src1p: the first input | 738 | * @src1p: the first input |
| 739 | * @src2p: the second input | 739 | * @src2p: the second input |
| 740 | */ | 740 | */ |
| 741 | static inline void cpumask_and(struct cpumask *dstp, | 741 | static inline int cpumask_and(struct cpumask *dstp, |
| 742 | const struct cpumask *src1p, | 742 | const struct cpumask *src1p, |
| 743 | const struct cpumask *src2p) | 743 | const struct cpumask *src2p) |
| 744 | { | 744 | { |
| 745 | bitmap_and(cpumask_bits(dstp), cpumask_bits(src1p), | 745 | return bitmap_and(cpumask_bits(dstp), cpumask_bits(src1p), |
| 746 | cpumask_bits(src2p), nr_cpumask_bits); | 746 | cpumask_bits(src2p), nr_cpumask_bits); |
| 747 | } | 747 | } |
| 748 | 748 | ||
| @@ -779,11 +779,11 @@ static inline void cpumask_xor(struct cpumask *dstp, | |||
| 779 | * @src1p: the first input | 779 | * @src1p: the first input |
| 780 | * @src2p: the second input | 780 | * @src2p: the second input |
| 781 | */ | 781 | */ |
| 782 | static inline void cpumask_andnot(struct cpumask *dstp, | 782 | static inline int cpumask_andnot(struct cpumask *dstp, |
| 783 | const struct cpumask *src1p, | 783 | const struct cpumask *src1p, |
| 784 | const struct cpumask *src2p) | 784 | const struct cpumask *src2p) |
| 785 | { | 785 | { |
| 786 | bitmap_andnot(cpumask_bits(dstp), cpumask_bits(src1p), | 786 | return bitmap_andnot(cpumask_bits(dstp), cpumask_bits(src1p), |
| 787 | cpumask_bits(src2p), nr_cpumask_bits); | 787 | cpumask_bits(src2p), nr_cpumask_bits); |
| 788 | } | 788 | } |
| 789 | 789 | ||
diff --git a/include/linux/crash_dump.h b/include/linux/crash_dump.h index 2dac064d8359..0026f267da20 100644 --- a/include/linux/crash_dump.h +++ b/include/linux/crash_dump.h | |||
| @@ -3,7 +3,6 @@ | |||
| 3 | 3 | ||
| 4 | #ifdef CONFIG_CRASH_DUMP | 4 | #ifdef CONFIG_CRASH_DUMP |
| 5 | #include <linux/kexec.h> | 5 | #include <linux/kexec.h> |
| 6 | #include <linux/smp_lock.h> | ||
| 7 | #include <linux/device.h> | 6 | #include <linux/device.h> |
| 8 | #include <linux/proc_fs.h> | 7 | #include <linux/proc_fs.h> |
| 9 | 8 | ||
diff --git a/include/linux/decompress/generic.h b/include/linux/decompress/generic.h index 6dfb856327bb..0c7111a55a1a 100644 --- a/include/linux/decompress/generic.h +++ b/include/linux/decompress/generic.h | |||
| @@ -1,31 +1,37 @@ | |||
| 1 | #ifndef DECOMPRESS_GENERIC_H | 1 | #ifndef DECOMPRESS_GENERIC_H |
| 2 | #define DECOMPRESS_GENERIC_H | 2 | #define DECOMPRESS_GENERIC_H |
| 3 | 3 | ||
| 4 | /* Minimal chunksize to be read. | ||
| 5 | *Bzip2 prefers at least 4096 | ||
| 6 | *Lzma prefers 0x10000 */ | ||
| 7 | #define COMPR_IOBUF_SIZE 4096 | ||
| 8 | |||
| 9 | typedef int (*decompress_fn) (unsigned char *inbuf, int len, | 4 | typedef int (*decompress_fn) (unsigned char *inbuf, int len, |
| 10 | int(*fill)(void*, unsigned int), | 5 | int(*fill)(void*, unsigned int), |
| 11 | int(*writebb)(void*, unsigned int), | 6 | int(*flush)(void*, unsigned int), |
| 12 | unsigned char *output, | 7 | unsigned char *outbuf, |
| 13 | int *posp, | 8 | int *posp, |
| 14 | void(*error)(char *x)); | 9 | void(*error)(char *x)); |
| 15 | 10 | ||
| 16 | /* inbuf - input buffer | 11 | /* inbuf - input buffer |
| 17 | *len - len of pre-read data in inbuf | 12 | *len - len of pre-read data in inbuf |
| 18 | *fill - function to fill inbuf if empty | 13 | *fill - function to fill inbuf when empty |
| 19 | *writebb - function to write out outbug | 14 | *flush - function to write out outbuf |
| 15 | *outbuf - output buffer | ||
| 20 | *posp - if non-null, input position (number of bytes read) will be | 16 | *posp - if non-null, input position (number of bytes read) will be |
| 21 | * returned here | 17 | * returned here |
| 22 | * | 18 | * |
| 23 | *If len != 0, the inbuf is initialized (with as much data), and fill | 19 | *If len != 0, inbuf should contain all the necessary input data, and fill |
| 24 | *should not be called | 20 | *should be NULL |
| 25 | *If len = 0, the inbuf is allocated, but empty. Its size is IOBUF_SIZE | 21 | *If len = 0, inbuf can be NULL, in which case the decompressor will allocate |
| 26 | *fill should be called (repeatedly...) to read data, at most IOBUF_SIZE | 22 | *the input buffer. If inbuf != NULL it must be at least XXX_IOBUF_SIZE bytes. |
| 23 | *fill will be called (repeatedly...) to read data, at most XXX_IOBUF_SIZE | ||
| 24 | *bytes should be read per call. Replace XXX with the appropriate decompressor | ||
| 25 | *name, i.e. LZMA_IOBUF_SIZE. | ||
| 26 | * | ||
| 27 | *If flush = NULL, outbuf must be large enough to buffer all the expected | ||
| 28 | *output. If flush != NULL, the output buffer will be allocated by the | ||
| 29 | *decompressor (outbuf = NULL), and the flush function will be called to | ||
| 30 | *flush the output buffer at the appropriate time (decompressor and stream | ||
| 31 | *dependent). | ||
| 27 | */ | 32 | */ |
| 28 | 33 | ||
| 34 | |||
| 29 | /* Utility routine to detect the decompression method */ | 35 | /* Utility routine to detect the decompression method */ |
| 30 | decompress_fn decompress_method(const unsigned char *inbuf, int len, | 36 | decompress_fn decompress_method(const unsigned char *inbuf, int len, |
| 31 | const char **name); | 37 | const char **name); |
diff --git a/include/linux/device-mapper.h b/include/linux/device-mapper.h index 0d6310657f32..655e7721580a 100644 --- a/include/linux/device-mapper.h +++ b/include/linux/device-mapper.h | |||
| @@ -84,7 +84,7 @@ typedef int (*dm_merge_fn) (struct dm_target *ti, struct bvec_merge_data *bvm, | |||
| 84 | 84 | ||
| 85 | typedef int (*iterate_devices_callout_fn) (struct dm_target *ti, | 85 | typedef int (*iterate_devices_callout_fn) (struct dm_target *ti, |
| 86 | struct dm_dev *dev, | 86 | struct dm_dev *dev, |
| 87 | sector_t physical_start, | 87 | sector_t start, sector_t len, |
| 88 | void *data); | 88 | void *data); |
| 89 | 89 | ||
| 90 | typedef int (*dm_iterate_devices_fn) (struct dm_target *ti, | 90 | typedef int (*dm_iterate_devices_fn) (struct dm_target *ti, |
| @@ -104,7 +104,7 @@ void dm_error(const char *message); | |||
| 104 | * Combine device limits. | 104 | * Combine device limits. |
| 105 | */ | 105 | */ |
| 106 | int dm_set_device_limits(struct dm_target *ti, struct dm_dev *dev, | 106 | int dm_set_device_limits(struct dm_target *ti, struct dm_dev *dev, |
| 107 | sector_t start, void *data); | 107 | sector_t start, sector_t len, void *data); |
| 108 | 108 | ||
| 109 | struct dm_dev { | 109 | struct dm_dev { |
| 110 | struct block_device *bdev; | 110 | struct block_device *bdev; |
diff --git a/include/linux/device.h b/include/linux/device.h index ed4e39f2c423..aebb81036db2 100644 --- a/include/linux/device.h +++ b/include/linux/device.h | |||
| @@ -25,8 +25,6 @@ | |||
| 25 | #include <asm/atomic.h> | 25 | #include <asm/atomic.h> |
| 26 | #include <asm/device.h> | 26 | #include <asm/device.h> |
| 27 | 27 | ||
| 28 | #define BUS_ID_SIZE 20 | ||
| 29 | |||
| 30 | struct device; | 28 | struct device; |
| 31 | struct device_private; | 29 | struct device_private; |
| 32 | struct device_driver; | 30 | struct device_driver; |
diff --git a/include/linux/elfcore.h b/include/linux/elfcore.h index 7605c5e9589f..00d6a68d0421 100644 --- a/include/linux/elfcore.h +++ b/include/linux/elfcore.h | |||
| @@ -122,9 +122,10 @@ static inline void elf_core_copy_kernel_regs(elf_gregset_t *elfregs, struct pt_r | |||
| 122 | 122 | ||
| 123 | static inline int elf_core_copy_task_regs(struct task_struct *t, elf_gregset_t* elfregs) | 123 | static inline int elf_core_copy_task_regs(struct task_struct *t, elf_gregset_t* elfregs) |
| 124 | { | 124 | { |
| 125 | #ifdef ELF_CORE_COPY_TASK_REGS | 125 | #if defined (ELF_CORE_COPY_TASK_REGS) |
| 126 | |||
| 127 | return ELF_CORE_COPY_TASK_REGS(t, elfregs); | 126 | return ELF_CORE_COPY_TASK_REGS(t, elfregs); |
| 127 | #elif defined (task_pt_regs) | ||
| 128 | elf_core_copy_regs(elfregs, task_pt_regs(t)); | ||
| 128 | #endif | 129 | #endif |
| 129 | return 0; | 130 | return 0; |
| 130 | } | 131 | } |
diff --git a/include/linux/ext3_fs.h b/include/linux/ext3_fs.h index 634a5e5aba3e..7499b3667798 100644 --- a/include/linux/ext3_fs.h +++ b/include/linux/ext3_fs.h | |||
| @@ -874,7 +874,7 @@ struct buffer_head * ext3_getblk (handle_t *, struct inode *, long, int, int *); | |||
| 874 | struct buffer_head * ext3_bread (handle_t *, struct inode *, int, int, int *); | 874 | struct buffer_head * ext3_bread (handle_t *, struct inode *, int, int, int *); |
| 875 | int ext3_get_blocks_handle(handle_t *handle, struct inode *inode, | 875 | int ext3_get_blocks_handle(handle_t *handle, struct inode *inode, |
| 876 | sector_t iblock, unsigned long maxblocks, struct buffer_head *bh_result, | 876 | sector_t iblock, unsigned long maxblocks, struct buffer_head *bh_result, |
| 877 | int create, int extend_disksize); | 877 | int create); |
| 878 | 878 | ||
| 879 | extern struct inode *ext3_iget(struct super_block *, unsigned long); | 879 | extern struct inode *ext3_iget(struct super_block *, unsigned long); |
| 880 | extern int ext3_write_inode (struct inode *, int); | 880 | extern int ext3_write_inode (struct inode *, int); |
diff --git a/include/linux/firewire.h b/include/linux/firewire.h index 9823946adbc5..192d1e43c43c 100644 --- a/include/linux/firewire.h +++ b/include/linux/firewire.h | |||
| @@ -127,6 +127,7 @@ struct fw_card { | |||
| 127 | struct delayed_work work; | 127 | struct delayed_work work; |
| 128 | int bm_retries; | 128 | int bm_retries; |
| 129 | int bm_generation; | 129 | int bm_generation; |
| 130 | __be32 bm_transaction_data[2]; | ||
| 130 | 131 | ||
| 131 | bool broadcast_channel_allocated; | 132 | bool broadcast_channel_allocated; |
| 132 | u32 broadcast_channel; | 133 | u32 broadcast_channel; |
diff --git a/include/linux/flex_array.h b/include/linux/flex_array.h new file mode 100644 index 000000000000..23c1ec79a31b --- /dev/null +++ b/include/linux/flex_array.h | |||
| @@ -0,0 +1,47 @@ | |||
| 1 | #ifndef _FLEX_ARRAY_H | ||
| 2 | #define _FLEX_ARRAY_H | ||
| 3 | |||
| 4 | #include <linux/types.h> | ||
| 5 | #include <asm/page.h> | ||
| 6 | |||
| 7 | #define FLEX_ARRAY_PART_SIZE PAGE_SIZE | ||
| 8 | #define FLEX_ARRAY_BASE_SIZE PAGE_SIZE | ||
| 9 | |||
| 10 | struct flex_array_part; | ||
| 11 | |||
| 12 | /* | ||
| 13 | * This is meant to replace cases where an array-like | ||
| 14 | * structure has gotten too big to fit into kmalloc() | ||
| 15 | * and the developer is getting tempted to use | ||
| 16 | * vmalloc(). | ||
| 17 | */ | ||
| 18 | |||
| 19 | struct flex_array { | ||
| 20 | union { | ||
| 21 | struct { | ||
| 22 | int element_size; | ||
| 23 | int total_nr_elements; | ||
| 24 | struct flex_array_part *parts[0]; | ||
| 25 | }; | ||
| 26 | /* | ||
| 27 | * This little trick makes sure that | ||
| 28 | * sizeof(flex_array) == PAGE_SIZE | ||
| 29 | */ | ||
| 30 | char padding[FLEX_ARRAY_BASE_SIZE]; | ||
| 31 | }; | ||
| 32 | }; | ||
| 33 | |||
| 34 | #define FLEX_ARRAY_INIT(size, total) { { {\ | ||
| 35 | .element_size = (size), \ | ||
| 36 | .total_nr_elements = (total), \ | ||
| 37 | } } } | ||
| 38 | |||
| 39 | struct flex_array *flex_array_alloc(int element_size, int total, gfp_t flags); | ||
| 40 | int flex_array_prealloc(struct flex_array *fa, int start, int end, gfp_t flags); | ||
| 41 | void flex_array_free(struct flex_array *fa); | ||
| 42 | void flex_array_free_parts(struct flex_array *fa); | ||
| 43 | int flex_array_put(struct flex_array *fa, int element_nr, void *src, | ||
| 44 | gfp_t flags); | ||
| 45 | void *flex_array_get(struct flex_array *fa, int element_nr); | ||
| 46 | |||
| 47 | #endif /* _FLEX_ARRAY_H */ | ||
diff --git a/include/linux/fs.h b/include/linux/fs.h index 0872372184fe..67888a9e0655 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
| @@ -1946,6 +1946,7 @@ extern void putname(const char *name); | |||
| 1946 | extern int register_blkdev(unsigned int, const char *); | 1946 | extern int register_blkdev(unsigned int, const char *); |
| 1947 | extern void unregister_blkdev(unsigned int, const char *); | 1947 | extern void unregister_blkdev(unsigned int, const char *); |
| 1948 | extern struct block_device *bdget(dev_t); | 1948 | extern struct block_device *bdget(dev_t); |
| 1949 | extern struct block_device *bdgrab(struct block_device *bdev); | ||
| 1949 | extern void bd_set_size(struct block_device *, loff_t size); | 1950 | extern void bd_set_size(struct block_device *, loff_t size); |
| 1950 | extern void bd_forget(struct inode *inode); | 1951 | extern void bd_forget(struct inode *inode); |
| 1951 | extern void bdput(struct block_device *); | 1952 | extern void bdput(struct block_device *); |
| @@ -2136,7 +2137,7 @@ extern loff_t default_llseek(struct file *file, loff_t offset, int origin); | |||
| 2136 | 2137 | ||
| 2137 | extern loff_t vfs_llseek(struct file *file, loff_t offset, int origin); | 2138 | extern loff_t vfs_llseek(struct file *file, loff_t offset, int origin); |
| 2138 | 2139 | ||
| 2139 | extern struct inode * inode_init_always(struct super_block *, struct inode *); | 2140 | extern int inode_init_always(struct super_block *, struct inode *); |
| 2140 | extern void inode_init_once(struct inode *); | 2141 | extern void inode_init_once(struct inode *); |
| 2141 | extern void inode_add_to_lists(struct super_block *, struct inode *); | 2142 | extern void inode_add_to_lists(struct super_block *, struct inode *); |
| 2142 | extern void iput(struct inode *); | 2143 | extern void iput(struct inode *); |
| @@ -2163,6 +2164,7 @@ extern void __iget(struct inode * inode); | |||
| 2163 | extern void iget_failed(struct inode *); | 2164 | extern void iget_failed(struct inode *); |
| 2164 | extern void clear_inode(struct inode *); | 2165 | extern void clear_inode(struct inode *); |
| 2165 | extern void destroy_inode(struct inode *); | 2166 | extern void destroy_inode(struct inode *); |
| 2167 | extern void __destroy_inode(struct inode *); | ||
| 2166 | extern struct inode *new_inode(struct super_block *); | 2168 | extern struct inode *new_inode(struct super_block *); |
| 2167 | extern int should_remove_suid(struct dentry *); | 2169 | extern int should_remove_suid(struct dentry *); |
| 2168 | extern int file_remove_suid(struct file *); | 2170 | extern int file_remove_suid(struct file *); |
diff --git a/include/linux/fsnotify_backend.h b/include/linux/fsnotify_backend.h index 6c3de999fb34..4d6f47b51189 100644 --- a/include/linux/fsnotify_backend.h +++ b/include/linux/fsnotify_backend.h | |||
| @@ -352,7 +352,7 @@ extern void fsnotify_unmount_inodes(struct list_head *list); | |||
| 352 | /* put here because inotify does some weird stuff when destroying watches */ | 352 | /* put here because inotify does some weird stuff when destroying watches */ |
| 353 | extern struct fsnotify_event *fsnotify_create_event(struct inode *to_tell, __u32 mask, | 353 | extern struct fsnotify_event *fsnotify_create_event(struct inode *to_tell, __u32 mask, |
| 354 | void *data, int data_is, const char *name, | 354 | void *data, int data_is, const char *name, |
| 355 | u32 cookie); | 355 | u32 cookie, gfp_t gfp); |
| 356 | 356 | ||
| 357 | #else | 357 | #else |
| 358 | 358 | ||
diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h index 5c093ffc655b..a81170de7f6b 100644 --- a/include/linux/ftrace_event.h +++ b/include/linux/ftrace_event.h | |||
| @@ -89,7 +89,9 @@ enum print_line_t { | |||
| 89 | TRACE_TYPE_NO_CONSUME = 3 /* Handled but ask to not consume */ | 89 | TRACE_TYPE_NO_CONSUME = 3 /* Handled but ask to not consume */ |
| 90 | }; | 90 | }; |
| 91 | 91 | ||
| 92 | 92 | void tracing_generic_entry_update(struct trace_entry *entry, | |
| 93 | unsigned long flags, | ||
| 94 | int pc); | ||
| 93 | struct ring_buffer_event * | 95 | struct ring_buffer_event * |
| 94 | trace_current_buffer_lock_reserve(int type, unsigned long len, | 96 | trace_current_buffer_lock_reserve(int type, unsigned long len, |
| 95 | unsigned long flags, int pc); | 97 | unsigned long flags, int pc); |
| @@ -119,11 +121,9 @@ struct ftrace_event_call { | |||
| 119 | void *filter; | 121 | void *filter; |
| 120 | void *mod; | 122 | void *mod; |
| 121 | 123 | ||
| 122 | #ifdef CONFIG_EVENT_PROFILE | 124 | atomic_t profile_count; |
| 123 | atomic_t profile_count; | 125 | int (*profile_enable)(struct ftrace_event_call *); |
| 124 | int (*profile_enable)(struct ftrace_event_call *); | 126 | void (*profile_disable)(struct ftrace_event_call *); |
| 125 | void (*profile_disable)(struct ftrace_event_call *); | ||
| 126 | #endif | ||
| 127 | }; | 127 | }; |
| 128 | 128 | ||
| 129 | #define MAX_FILTER_PRED 32 | 129 | #define MAX_FILTER_PRED 32 |
diff --git a/include/linux/gen_stats.h b/include/linux/gen_stats.h index 0ffa41df0ee8..710e901085d0 100644 --- a/include/linux/gen_stats.h +++ b/include/linux/gen_stats.h | |||
| @@ -22,6 +22,11 @@ struct gnet_stats_basic | |||
| 22 | { | 22 | { |
| 23 | __u64 bytes; | 23 | __u64 bytes; |
| 24 | __u32 packets; | 24 | __u32 packets; |
| 25 | }; | ||
| 26 | struct gnet_stats_basic_packed | ||
| 27 | { | ||
| 28 | __u64 bytes; | ||
| 29 | __u32 packets; | ||
| 25 | } __attribute__ ((packed)); | 30 | } __attribute__ ((packed)); |
| 26 | 31 | ||
| 27 | /** | 32 | /** |
diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h index 45257475623c..8246c697863d 100644 --- a/include/linux/hardirq.h +++ b/include/linux/hardirq.h | |||
| @@ -2,7 +2,9 @@ | |||
| 2 | #define LINUX_HARDIRQ_H | 2 | #define LINUX_HARDIRQ_H |
| 3 | 3 | ||
| 4 | #include <linux/preempt.h> | 4 | #include <linux/preempt.h> |
| 5 | #ifdef CONFIG_PREEMPT | ||
| 5 | #include <linux/smp_lock.h> | 6 | #include <linux/smp_lock.h> |
| 7 | #endif | ||
| 6 | #include <linux/lockdep.h> | 8 | #include <linux/lockdep.h> |
| 7 | #include <linux/ftrace_irq.h> | 9 | #include <linux/ftrace_irq.h> |
| 8 | #include <asm/hardirq.h> | 10 | #include <asm/hardirq.h> |
diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h index 54648e625efd..4759917adc71 100644 --- a/include/linux/hrtimer.h +++ b/include/linux/hrtimer.h | |||
| @@ -448,7 +448,7 @@ extern void timer_stats_update_stats(void *timer, pid_t pid, void *startf, | |||
| 448 | 448 | ||
| 449 | static inline void timer_stats_account_hrtimer(struct hrtimer *timer) | 449 | static inline void timer_stats_account_hrtimer(struct hrtimer *timer) |
| 450 | { | 450 | { |
| 451 | if (likely(!timer->start_pid)) | 451 | if (likely(!timer->start_site)) |
| 452 | return; | 452 | return; |
| 453 | timer_stats_update_stats(timer, timer->start_pid, timer->start_site, | 453 | timer_stats_update_stats(timer, timer->start_pid, timer->start_site, |
| 454 | timer->function, timer->start_comm, 0); | 454 | timer->function, timer->start_comm, 0); |
diff --git a/include/linux/if_ether.h b/include/linux/if_ether.h index ae3a1871413d..70fdba2bbf71 100644 --- a/include/linux/if_ether.h +++ b/include/linux/if_ether.h | |||
| @@ -78,6 +78,7 @@ | |||
| 78 | #define ETH_P_PAE 0x888E /* Port Access Entity (IEEE 802.1X) */ | 78 | #define ETH_P_PAE 0x888E /* Port Access Entity (IEEE 802.1X) */ |
| 79 | #define ETH_P_AOE 0x88A2 /* ATA over Ethernet */ | 79 | #define ETH_P_AOE 0x88A2 /* ATA over Ethernet */ |
| 80 | #define ETH_P_TIPC 0x88CA /* TIPC */ | 80 | #define ETH_P_TIPC 0x88CA /* TIPC */ |
| 81 | #define ETH_P_1588 0x88F7 /* IEEE 1588 Timesync */ | ||
| 81 | #define ETH_P_FCOE 0x8906 /* Fibre Channel over Ethernet */ | 82 | #define ETH_P_FCOE 0x8906 /* Fibre Channel over Ethernet */ |
| 82 | #define ETH_P_FIP 0x8914 /* FCoE Initialization Protocol */ | 83 | #define ETH_P_FIP 0x8914 /* FCoE Initialization Protocol */ |
| 83 | #define ETH_P_EDSA 0xDADA /* Ethertype DSA [ NOT AN OFFICIALLY REGISTERED ID ] */ | 84 | #define ETH_P_EDSA 0xDADA /* Ethertype DSA [ NOT AN OFFICIALLY REGISTERED ID ] */ |
diff --git a/include/linux/inetdevice.h b/include/linux/inetdevice.h index acef2a770b6b..ad27c7da8798 100644 --- a/include/linux/inetdevice.h +++ b/include/linux/inetdevice.h | |||
| @@ -82,7 +82,7 @@ static inline void ipv4_devconf_setall(struct in_device *in_dev) | |||
| 82 | 82 | ||
| 83 | #define IN_DEV_FORWARD(in_dev) IN_DEV_CONF_GET((in_dev), FORWARDING) | 83 | #define IN_DEV_FORWARD(in_dev) IN_DEV_CONF_GET((in_dev), FORWARDING) |
| 84 | #define IN_DEV_MFORWARD(in_dev) IN_DEV_ANDCONF((in_dev), MC_FORWARDING) | 84 | #define IN_DEV_MFORWARD(in_dev) IN_DEV_ANDCONF((in_dev), MC_FORWARDING) |
| 85 | #define IN_DEV_RPFILTER(in_dev) IN_DEV_ANDCONF((in_dev), RP_FILTER) | 85 | #define IN_DEV_RPFILTER(in_dev) IN_DEV_MAXCONF((in_dev), RP_FILTER) |
| 86 | #define IN_DEV_SOURCE_ROUTE(in_dev) IN_DEV_ANDCONF((in_dev), \ | 86 | #define IN_DEV_SOURCE_ROUTE(in_dev) IN_DEV_ANDCONF((in_dev), \ |
| 87 | ACCEPT_SOURCE_ROUTE) | 87 | ACCEPT_SOURCE_ROUTE) |
| 88 | #define IN_DEV_BOOTP_RELAY(in_dev) IN_DEV_ANDCONF((in_dev), BOOTP_RELAY) | 88 | #define IN_DEV_BOOTP_RELAY(in_dev) IN_DEV_ANDCONF((in_dev), BOOTP_RELAY) |
diff --git a/include/linux/init_task.h b/include/linux/init_task.h index 5368fbdc7801..7fc01b13be43 100644 --- a/include/linux/init_task.h +++ b/include/linux/init_task.h | |||
| @@ -183,5 +183,8 @@ extern struct cred init_cred; | |||
| 183 | LIST_HEAD_INIT(cpu_timers[2]), \ | 183 | LIST_HEAD_INIT(cpu_timers[2]), \ |
| 184 | } | 184 | } |
| 185 | 185 | ||
| 186 | /* Attach to the init_task data structure for proper alignment */ | ||
| 187 | #define __init_task_data __attribute__((__section__(".data.init_task"))) | ||
| 188 | |||
| 186 | 189 | ||
| 187 | #endif | 190 | #endif |
diff --git a/include/linux/input/matrix_keypad.h b/include/linux/input/matrix_keypad.h new file mode 100644 index 000000000000..15d5903af2dd --- /dev/null +++ b/include/linux/input/matrix_keypad.h | |||
| @@ -0,0 +1,66 @@ | |||
| 1 | #ifndef _MATRIX_KEYPAD_H | ||
| 2 | #define _MATRIX_KEYPAD_H | ||
| 3 | |||
| 4 | #include <linux/types.h> | ||
| 5 | #include <linux/input.h> | ||
| 6 | |||
| 7 | #define MATRIX_MAX_ROWS 16 | ||
| 8 | #define MATRIX_MAX_COLS 16 | ||
| 9 | |||
| 10 | #define KEY(row, col, val) ((((row) & (MATRIX_MAX_ROWS - 1)) << 24) |\ | ||
| 11 | (((col) & (MATRIX_MAX_COLS - 1)) << 16) |\ | ||
| 12 | (val & 0xffff)) | ||
| 13 | |||
| 14 | #define KEY_ROW(k) (((k) >> 24) & 0xff) | ||
| 15 | #define KEY_COL(k) (((k) >> 16) & 0xff) | ||
| 16 | #define KEY_VAL(k) ((k) & 0xffff) | ||
| 17 | |||
| 18 | #define MATRIX_SCAN_CODE(row, col, row_shift) (((row) << (row_shift)) + (col)) | ||
| 19 | |||
| 20 | /** | ||
| 21 | * struct matrix_keymap_data - keymap for matrix keyboards | ||
| 22 | * @keymap: pointer to array of uint32 values encoded with KEY() macro | ||
| 23 | * representing keymap | ||
| 24 | * @keymap_size: number of entries (initialized) in this keymap | ||
| 25 | * | ||
| 26 | * This structure is supposed to be used by platform code to supply | ||
| 27 | * keymaps to drivers that implement matrix-like keypads/keyboards. | ||
| 28 | */ | ||
| 29 | struct matrix_keymap_data { | ||
| 30 | const uint32_t *keymap; | ||
| 31 | unsigned int keymap_size; | ||
| 32 | }; | ||
| 33 | |||
| 34 | /** | ||
| 35 | * struct matrix_keypad_platform_data - platform-dependent keypad data | ||
| 36 | * @keymap_data: pointer to &matrix_keymap_data | ||
| 37 | * @row_gpios: pointer to array of gpio numbers representing rows | ||
| 38 | * @col_gpios: pointer to array of gpio numbers reporesenting colums | ||
| 39 | * @num_row_gpios: actual number of row gpios used by device | ||
| 40 | * @num_col_gpios: actual number of col gpios used by device | ||
| 41 | * @col_scan_delay_us: delay, measured in microseconds, that is | ||
| 42 | * needed before we can keypad after activating column gpio | ||
| 43 | * @debounce_ms: debounce interval in milliseconds | ||
| 44 | * | ||
| 45 | * This structure represents platform-specific data that use used by | ||
| 46 | * matrix_keypad driver to perform proper initialization. | ||
| 47 | */ | ||
| 48 | struct matrix_keypad_platform_data { | ||
| 49 | const struct matrix_keymap_data *keymap_data; | ||
| 50 | |||
| 51 | const unsigned int *row_gpios; | ||
| 52 | const unsigned int *col_gpios; | ||
| 53 | |||
| 54 | unsigned int num_row_gpios; | ||
| 55 | unsigned int num_col_gpios; | ||
| 56 | |||
| 57 | unsigned int col_scan_delay_us; | ||
| 58 | |||
| 59 | /* key debounce interval in milli-second */ | ||
| 60 | unsigned int debounce_ms; | ||
| 61 | |||
| 62 | bool active_low; | ||
| 63 | bool wakeup; | ||
| 64 | }; | ||
| 65 | |||
| 66 | #endif /* _MATRIX_KEYPAD_H */ | ||
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index 2721f07e9354..35e7df1e9f30 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | #include <linux/irqflags.h> | 14 | #include <linux/irqflags.h> |
| 15 | #include <linux/smp.h> | 15 | #include <linux/smp.h> |
| 16 | #include <linux/percpu.h> | 16 | #include <linux/percpu.h> |
| 17 | #include <linux/hrtimer.h> | ||
| 17 | 18 | ||
| 18 | #include <asm/atomic.h> | 19 | #include <asm/atomic.h> |
| 19 | #include <asm/ptrace.h> | 20 | #include <asm/ptrace.h> |
| @@ -64,11 +65,13 @@ | |||
| 64 | * IRQTF_RUNTHREAD - signals that the interrupt handler thread should run | 65 | * IRQTF_RUNTHREAD - signals that the interrupt handler thread should run |
| 65 | * IRQTF_DIED - handler thread died | 66 | * IRQTF_DIED - handler thread died |
| 66 | * IRQTF_WARNED - warning "IRQ_WAKE_THREAD w/o thread_fn" has been printed | 67 | * IRQTF_WARNED - warning "IRQ_WAKE_THREAD w/o thread_fn" has been printed |
| 68 | * IRQTF_AFFINITY - irq thread is requested to adjust affinity | ||
| 67 | */ | 69 | */ |
| 68 | enum { | 70 | enum { |
| 69 | IRQTF_RUNTHREAD, | 71 | IRQTF_RUNTHREAD, |
| 70 | IRQTF_DIED, | 72 | IRQTF_DIED, |
| 71 | IRQTF_WARNED, | 73 | IRQTF_WARNED, |
| 74 | IRQTF_AFFINITY, | ||
| 72 | }; | 75 | }; |
| 73 | 76 | ||
| 74 | typedef irqreturn_t (*irq_handler_t)(int, void *); | 77 | typedef irqreturn_t (*irq_handler_t)(int, void *); |
| @@ -517,6 +520,31 @@ extern void tasklet_kill_immediate(struct tasklet_struct *t, unsigned int cpu); | |||
| 517 | extern void tasklet_init(struct tasklet_struct *t, | 520 | extern void tasklet_init(struct tasklet_struct *t, |
| 518 | void (*func)(unsigned long), unsigned long data); | 521 | void (*func)(unsigned long), unsigned long data); |
| 519 | 522 | ||
| 523 | struct tasklet_hrtimer { | ||
| 524 | struct hrtimer timer; | ||
| 525 | struct tasklet_struct tasklet; | ||
| 526 | enum hrtimer_restart (*function)(struct hrtimer *); | ||
| 527 | }; | ||
| 528 | |||
| 529 | extern void | ||
| 530 | tasklet_hrtimer_init(struct tasklet_hrtimer *ttimer, | ||
| 531 | enum hrtimer_restart (*function)(struct hrtimer *), | ||
| 532 | clockid_t which_clock, enum hrtimer_mode mode); | ||
| 533 | |||
| 534 | static inline | ||
| 535 | int tasklet_hrtimer_start(struct tasklet_hrtimer *ttimer, ktime_t time, | ||
| 536 | const enum hrtimer_mode mode) | ||
| 537 | { | ||
| 538 | return hrtimer_start(&ttimer->timer, time, mode); | ||
| 539 | } | ||
| 540 | |||
| 541 | static inline | ||
| 542 | void tasklet_hrtimer_cancel(struct tasklet_hrtimer *ttimer) | ||
| 543 | { | ||
| 544 | hrtimer_cancel(&ttimer->timer); | ||
| 545 | tasklet_kill(&ttimer->tasklet); | ||
| 546 | } | ||
| 547 | |||
| 520 | /* | 548 | /* |
| 521 | * Autoprobing for irqs: | 549 | * Autoprobing for irqs: |
| 522 | * | 550 | * |
diff --git a/include/linux/iocontext.h b/include/linux/iocontext.h index dd05434fa45f..4da4a75c3f1e 100644 --- a/include/linux/iocontext.h +++ b/include/linux/iocontext.h | |||
| @@ -92,7 +92,7 @@ static inline struct io_context *ioc_task_link(struct io_context *ioc) | |||
| 92 | * a race). | 92 | * a race). |
| 93 | */ | 93 | */ |
| 94 | if (ioc && atomic_long_inc_not_zero(&ioc->refcount)) { | 94 | if (ioc && atomic_long_inc_not_zero(&ioc->refcount)) { |
| 95 | atomic_long_inc(&ioc->refcount); | 95 | atomic_inc(&ioc->nr_tasks); |
| 96 | return ioc; | 96 | return ioc; |
| 97 | } | 97 | } |
| 98 | 98 | ||
diff --git a/include/linux/kmemleak.h b/include/linux/kmemleak.h index 7796aed6cdd5..6a63807f714e 100644 --- a/include/linux/kmemleak.h +++ b/include/linux/kmemleak.h | |||
| @@ -27,6 +27,7 @@ extern void kmemleak_init(void); | |||
| 27 | extern void kmemleak_alloc(const void *ptr, size_t size, int min_count, | 27 | extern void kmemleak_alloc(const void *ptr, size_t size, int min_count, |
| 28 | gfp_t gfp); | 28 | gfp_t gfp); |
| 29 | extern void kmemleak_free(const void *ptr); | 29 | extern void kmemleak_free(const void *ptr); |
| 30 | extern void kmemleak_free_part(const void *ptr, size_t size); | ||
| 30 | extern void kmemleak_padding(const void *ptr, unsigned long offset, | 31 | extern void kmemleak_padding(const void *ptr, unsigned long offset, |
| 31 | size_t size); | 32 | size_t size); |
| 32 | extern void kmemleak_not_leak(const void *ptr); | 33 | extern void kmemleak_not_leak(const void *ptr); |
| @@ -71,6 +72,9 @@ static inline void kmemleak_alloc_recursive(const void *ptr, size_t size, | |||
| 71 | static inline void kmemleak_free(const void *ptr) | 72 | static inline void kmemleak_free(const void *ptr) |
| 72 | { | 73 | { |
| 73 | } | 74 | } |
| 75 | static inline void kmemleak_free_part(const void *ptr, size_t size) | ||
| 76 | { | ||
| 77 | } | ||
| 74 | static inline void kmemleak_free_recursive(const void *ptr, unsigned long flags) | 78 | static inline void kmemleak_free_recursive(const void *ptr, unsigned long flags) |
| 75 | { | 79 | { |
| 76 | } | 80 | } |
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index 16713dc672e4..3060bdc35ffe 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h | |||
| @@ -110,6 +110,7 @@ struct kvm_memory_slot { | |||
| 110 | 110 | ||
| 111 | struct kvm_kernel_irq_routing_entry { | 111 | struct kvm_kernel_irq_routing_entry { |
| 112 | u32 gsi; | 112 | u32 gsi; |
| 113 | u32 type; | ||
| 113 | int (*set)(struct kvm_kernel_irq_routing_entry *e, | 114 | int (*set)(struct kvm_kernel_irq_routing_entry *e, |
| 114 | struct kvm *kvm, int level); | 115 | struct kvm *kvm, int level); |
| 115 | union { | 116 | union { |
diff --git a/include/linux/lguest.h b/include/linux/lguest.h index 7bc1440fc473..2fb1dcbcb5aa 100644 --- a/include/linux/lguest.h +++ b/include/linux/lguest.h | |||
| @@ -1,5 +1,7 @@ | |||
| 1 | /* Things the lguest guest needs to know. Note: like all lguest interfaces, | 1 | /* |
| 2 | * this is subject to wild and random change between versions. */ | 2 | * Things the lguest guest needs to know. Note: like all lguest interfaces, |
| 3 | * this is subject to wild and random change between versions. | ||
| 4 | */ | ||
| 3 | #ifndef _LINUX_LGUEST_H | 5 | #ifndef _LINUX_LGUEST_H |
| 4 | #define _LINUX_LGUEST_H | 6 | #define _LINUX_LGUEST_H |
| 5 | 7 | ||
| @@ -11,32 +13,41 @@ | |||
| 11 | #define LG_CLOCK_MIN_DELTA 100UL | 13 | #define LG_CLOCK_MIN_DELTA 100UL |
| 12 | #define LG_CLOCK_MAX_DELTA ULONG_MAX | 14 | #define LG_CLOCK_MAX_DELTA ULONG_MAX |
| 13 | 15 | ||
| 14 | /*G:032 The second method of communicating with the Host is to via "struct | 16 | /*G:031 |
| 17 | * The second method of communicating with the Host is to via "struct | ||
| 15 | * lguest_data". Once the Guest's initialization hypercall tells the Host where | 18 | * lguest_data". Once the Guest's initialization hypercall tells the Host where |
| 16 | * this is, the Guest and Host both publish information in it. :*/ | 19 | * this is, the Guest and Host both publish information in it. |
| 17 | struct lguest_data | 20 | :*/ |
| 18 | { | 21 | struct lguest_data { |
| 19 | /* 512 == enabled (same as eflags in normal hardware). The Guest | 22 | /* |
| 20 | * changes interrupts so often that a hypercall is too slow. */ | 23 | * 512 == enabled (same as eflags in normal hardware). The Guest |
| 24 | * changes interrupts so often that a hypercall is too slow. | ||
| 25 | */ | ||
| 21 | unsigned int irq_enabled; | 26 | unsigned int irq_enabled; |
| 22 | /* Fine-grained interrupt disabling by the Guest */ | 27 | /* Fine-grained interrupt disabling by the Guest */ |
| 23 | DECLARE_BITMAP(blocked_interrupts, LGUEST_IRQS); | 28 | DECLARE_BITMAP(blocked_interrupts, LGUEST_IRQS); |
| 24 | 29 | ||
| 25 | /* The Host writes the virtual address of the last page fault here, | 30 | /* |
| 31 | * The Host writes the virtual address of the last page fault here, | ||
| 26 | * which saves the Guest a hypercall. CR2 is the native register where | 32 | * which saves the Guest a hypercall. CR2 is the native register where |
| 27 | * this address would normally be found. */ | 33 | * this address would normally be found. |
| 34 | */ | ||
| 28 | unsigned long cr2; | 35 | unsigned long cr2; |
| 29 | 36 | ||
| 30 | /* Wallclock time set by the Host. */ | 37 | /* Wallclock time set by the Host. */ |
| 31 | struct timespec time; | 38 | struct timespec time; |
| 32 | 39 | ||
| 33 | /* Interrupt pending set by the Host. The Guest should do a hypercall | 40 | /* |
| 34 | * if it re-enables interrupts and sees this set (to X86_EFLAGS_IF). */ | 41 | * Interrupt pending set by the Host. The Guest should do a hypercall |
| 42 | * if it re-enables interrupts and sees this set (to X86_EFLAGS_IF). | ||
| 43 | */ | ||
| 35 | int irq_pending; | 44 | int irq_pending; |
| 36 | 45 | ||
| 37 | /* Async hypercall ring. Instead of directly making hypercalls, we can | 46 | /* |
| 47 | * Async hypercall ring. Instead of directly making hypercalls, we can | ||
| 38 | * place them in here for processing the next time the Host wants. | 48 | * place them in here for processing the next time the Host wants. |
| 39 | * This batching can be quite efficient. */ | 49 | * This batching can be quite efficient. |
| 50 | */ | ||
| 40 | 51 | ||
| 41 | /* 0xFF == done (set by Host), 0 == pending (set by Guest). */ | 52 | /* 0xFF == done (set by Host), 0 == pending (set by Guest). */ |
| 42 | u8 hcall_status[LHCALL_RING_SIZE]; | 53 | u8 hcall_status[LHCALL_RING_SIZE]; |
diff --git a/include/linux/lguest_launcher.h b/include/linux/lguest_launcher.h index bfefbdf7498a..495203ff221c 100644 --- a/include/linux/lguest_launcher.h +++ b/include/linux/lguest_launcher.h | |||
| @@ -29,8 +29,10 @@ struct lguest_device_desc { | |||
| 29 | __u8 type; | 29 | __u8 type; |
| 30 | /* The number of virtqueues (first in config array) */ | 30 | /* The number of virtqueues (first in config array) */ |
| 31 | __u8 num_vq; | 31 | __u8 num_vq; |
| 32 | /* The number of bytes of feature bits. Multiply by 2: one for host | 32 | /* |
| 33 | * features and one for Guest acknowledgements. */ | 33 | * The number of bytes of feature bits. Multiply by 2: one for host |
| 34 | * features and one for Guest acknowledgements. | ||
| 35 | */ | ||
| 34 | __u8 feature_len; | 36 | __u8 feature_len; |
| 35 | /* The number of bytes of the config array after virtqueues. */ | 37 | /* The number of bytes of the config array after virtqueues. */ |
| 36 | __u8 config_len; | 38 | __u8 config_len; |
| @@ -39,8 +41,10 @@ struct lguest_device_desc { | |||
| 39 | __u8 config[0]; | 41 | __u8 config[0]; |
| 40 | }; | 42 | }; |
| 41 | 43 | ||
| 42 | /*D:135 This is how we expect the device configuration field for a virtqueue | 44 | /*D:135 |
| 43 | * to be laid out in config space. */ | 45 | * This is how we expect the device configuration field for a virtqueue |
| 46 | * to be laid out in config space. | ||
| 47 | */ | ||
| 44 | struct lguest_vqconfig { | 48 | struct lguest_vqconfig { |
| 45 | /* The number of entries in the virtio_ring */ | 49 | /* The number of entries in the virtio_ring */ |
| 46 | __u16 num; | 50 | __u16 num; |
| @@ -61,7 +65,9 @@ enum lguest_req | |||
| 61 | LHREQ_EVENTFD, /* + address, fd. */ | 65 | LHREQ_EVENTFD, /* + address, fd. */ |
| 62 | }; | 66 | }; |
| 63 | 67 | ||
| 64 | /* The alignment to use between consumer and producer parts of vring. | 68 | /* |
| 65 | * x86 pagesize for historical reasons. */ | 69 | * The alignment to use between consumer and producer parts of vring. |
| 70 | * x86 pagesize for historical reasons. | ||
| 71 | */ | ||
| 66 | #define LGUEST_VRING_ALIGN 4096 | 72 | #define LGUEST_VRING_ALIGN 4096 |
| 67 | #endif /* _LINUX_LGUEST_LAUNCHER */ | 73 | #endif /* _LINUX_LGUEST_LAUNCHER */ |
diff --git a/include/linux/libata.h b/include/linux/libata.h index 3d501db36a26..e5b6e33c6571 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
| @@ -385,6 +385,7 @@ enum { | |||
| 385 | not multiple of 16 bytes */ | 385 | not multiple of 16 bytes */ |
| 386 | ATA_HORKAGE_FIRMWARE_WARN = (1 << 12), /* firmware update warning */ | 386 | ATA_HORKAGE_FIRMWARE_WARN = (1 << 12), /* firmware update warning */ |
| 387 | ATA_HORKAGE_1_5_GBPS = (1 << 13), /* force 1.5 Gbps */ | 387 | ATA_HORKAGE_1_5_GBPS = (1 << 13), /* force 1.5 Gbps */ |
| 388 | ATA_HORKAGE_NOSETXFER = (1 << 14), /* skip SETXFER, SATA only */ | ||
| 388 | 389 | ||
| 389 | /* DMA mask for user DMA control: User visible values; DO NOT | 390 | /* DMA mask for user DMA control: User visible values; DO NOT |
| 390 | renumber */ | 391 | renumber */ |
| @@ -588,6 +589,7 @@ struct ata_device { | |||
| 588 | #endif | 589 | #endif |
| 589 | /* n_sector is CLEAR_BEGIN, read comment above CLEAR_BEGIN */ | 590 | /* n_sector is CLEAR_BEGIN, read comment above CLEAR_BEGIN */ |
| 590 | u64 n_sectors; /* size of device, if ATA */ | 591 | u64 n_sectors; /* size of device, if ATA */ |
| 592 | u64 n_native_sectors; /* native size, if ATA */ | ||
| 591 | unsigned int class; /* ATA_DEV_xxx */ | 593 | unsigned int class; /* ATA_DEV_xxx */ |
| 592 | unsigned long unpark_deadline; | 594 | unsigned long unpark_deadline; |
| 593 | 595 | ||
diff --git a/include/linux/linkage.h b/include/linux/linkage.h index fee9e59649c1..691f59171c6c 100644 --- a/include/linux/linkage.h +++ b/include/linux/linkage.h | |||
| @@ -22,6 +22,15 @@ | |||
| 22 | #define __page_aligned_bss __section(.bss.page_aligned) __aligned(PAGE_SIZE) | 22 | #define __page_aligned_bss __section(.bss.page_aligned) __aligned(PAGE_SIZE) |
| 23 | 23 | ||
| 24 | /* | 24 | /* |
| 25 | * For assembly routines. | ||
| 26 | * | ||
| 27 | * Note when using these that you must specify the appropriate | ||
| 28 | * alignment directives yourself | ||
| 29 | */ | ||
| 30 | #define __PAGE_ALIGNED_DATA .section ".data.page_aligned", "aw" | ||
| 31 | #define __PAGE_ALIGNED_BSS .section ".bss.page_aligned", "aw" | ||
| 32 | |||
| 33 | /* | ||
| 25 | * This is used by architectures to keep arguments on the stack | 34 | * This is used by architectures to keep arguments on the stack |
| 26 | * untouched by the compiler by keeping them live until the end. | 35 | * untouched by the compiler by keeping them live until the end. |
| 27 | * The argument stack may be owned by the assembly-language | 36 | * The argument stack may be owned by the assembly-language |
diff --git a/include/linux/mm.h b/include/linux/mm.h index ba3a7cb1eaa0..9a72cc78e6b8 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
| @@ -34,8 +34,6 @@ extern int sysctl_legacy_va_layout; | |||
| 34 | #define sysctl_legacy_va_layout 0 | 34 | #define sysctl_legacy_va_layout 0 |
| 35 | #endif | 35 | #endif |
| 36 | 36 | ||
| 37 | extern unsigned long mmap_min_addr; | ||
| 38 | |||
| 39 | #include <asm/page.h> | 37 | #include <asm/page.h> |
| 40 | #include <asm/pgtable.h> | 38 | #include <asm/pgtable.h> |
| 41 | #include <asm/processor.h> | 39 | #include <asm/processor.h> |
| @@ -575,19 +573,6 @@ static inline void set_page_links(struct page *page, enum zone_type zone, | |||
| 575 | } | 573 | } |
| 576 | 574 | ||
| 577 | /* | 575 | /* |
| 578 | * If a hint addr is less than mmap_min_addr change hint to be as | ||
| 579 | * low as possible but still greater than mmap_min_addr | ||
| 580 | */ | ||
| 581 | static inline unsigned long round_hint_to_min(unsigned long hint) | ||
| 582 | { | ||
| 583 | hint &= PAGE_MASK; | ||
| 584 | if (((void *)hint != NULL) && | ||
| 585 | (hint < mmap_min_addr)) | ||
| 586 | return PAGE_ALIGN(mmap_min_addr); | ||
| 587 | return hint; | ||
| 588 | } | ||
| 589 | |||
| 590 | /* | ||
| 591 | * Some inline functions in vmstat.h depend on page_zone() | 576 | * Some inline functions in vmstat.h depend on page_zone() |
| 592 | */ | 577 | */ |
| 593 | #include <linux/vmstat.h> | 578 | #include <linux/vmstat.h> |
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 7acc8439d9b3..0042090a4d70 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h | |||
| @@ -240,8 +240,6 @@ struct mm_struct { | |||
| 240 | 240 | ||
| 241 | unsigned long saved_auxv[AT_VECTOR_SIZE]; /* for /proc/PID/auxv */ | 241 | unsigned long saved_auxv[AT_VECTOR_SIZE]; /* for /proc/PID/auxv */ |
| 242 | 242 | ||
| 243 | s8 oom_adj; /* OOM kill score adjustment (bit shift) */ | ||
| 244 | |||
| 245 | cpumask_t cpu_vm_mask; | 243 | cpumask_t cpu_vm_mask; |
| 246 | 244 | ||
| 247 | /* Architecture-specific MM context */ | 245 | /* Architecture-specific MM context */ |
diff --git a/include/linux/mnt_namespace.h b/include/linux/mnt_namespace.h index 3beb2592b03f..d74785c2393a 100644 --- a/include/linux/mnt_namespace.h +++ b/include/linux/mnt_namespace.h | |||
| @@ -2,10 +2,9 @@ | |||
| 2 | #define _NAMESPACE_H_ | 2 | #define _NAMESPACE_H_ |
| 3 | #ifdef __KERNEL__ | 3 | #ifdef __KERNEL__ |
| 4 | 4 | ||
| 5 | #include <linux/mount.h> | 5 | #include <linux/path.h> |
| 6 | #include <linux/sched.h> | ||
| 7 | #include <linux/nsproxy.h> | ||
| 8 | #include <linux/seq_file.h> | 6 | #include <linux/seq_file.h> |
| 7 | #include <linux/wait.h> | ||
| 9 | 8 | ||
| 10 | struct mnt_namespace { | 9 | struct mnt_namespace { |
| 11 | atomic_t count; | 10 | atomic_t count; |
| @@ -28,14 +27,6 @@ extern struct mnt_namespace *create_mnt_ns(struct vfsmount *mnt); | |||
| 28 | extern struct mnt_namespace *copy_mnt_ns(unsigned long, struct mnt_namespace *, | 27 | extern struct mnt_namespace *copy_mnt_ns(unsigned long, struct mnt_namespace *, |
| 29 | struct fs_struct *); | 28 | struct fs_struct *); |
| 30 | extern void put_mnt_ns(struct mnt_namespace *ns); | 29 | extern void put_mnt_ns(struct mnt_namespace *ns); |
| 31 | |||
| 32 | static inline void exit_mnt_ns(struct task_struct *p) | ||
| 33 | { | ||
| 34 | struct mnt_namespace *ns = p->nsproxy->mnt_ns; | ||
| 35 | if (ns) | ||
| 36 | put_mnt_ns(ns); | ||
| 37 | } | ||
| 38 | |||
| 39 | static inline void get_mnt_ns(struct mnt_namespace *ns) | 30 | static inline void get_mnt_ns(struct mnt_namespace *ns) |
| 40 | { | 31 | { |
| 41 | atomic_inc(&ns->count); | 32 | atomic_inc(&ns->count); |
diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h index 5675b63a0631..0f32a9b6ff55 100644 --- a/include/linux/mtd/mtd.h +++ b/include/linux/mtd/mtd.h | |||
| @@ -251,7 +251,7 @@ struct mtd_info { | |||
| 251 | 251 | ||
| 252 | static inline struct mtd_info *dev_to_mtd(struct device *dev) | 252 | static inline struct mtd_info *dev_to_mtd(struct device *dev) |
| 253 | { | 253 | { |
| 254 | return dev ? container_of(dev, struct mtd_info, dev) : NULL; | 254 | return dev ? dev_get_drvdata(dev) : NULL; |
| 255 | } | 255 | } |
| 256 | 256 | ||
| 257 | static inline uint32_t mtd_div_by_eb(uint64_t sz, struct mtd_info *mtd) | 257 | static inline uint32_t mtd_div_by_eb(uint64_t sz, struct mtd_info *mtd) |
diff --git a/include/linux/mtd/partitions.h b/include/linux/mtd/partitions.h index af6dcb992bc3..b70313d33ff8 100644 --- a/include/linux/mtd/partitions.h +++ b/include/linux/mtd/partitions.h | |||
| @@ -47,6 +47,8 @@ struct mtd_partition { | |||
| 47 | #define MTDPART_SIZ_FULL (0) | 47 | #define MTDPART_SIZ_FULL (0) |
| 48 | 48 | ||
| 49 | 49 | ||
| 50 | struct mtd_info; | ||
| 51 | |||
| 50 | int add_mtd_partitions(struct mtd_info *, const struct mtd_partition *, int); | 52 | int add_mtd_partitions(struct mtd_info *, const struct mtd_partition *, int); |
| 51 | int del_mtd_partitions(struct mtd_info *); | 53 | int del_mtd_partitions(struct mtd_info *); |
| 52 | 54 | ||
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h index fdffb413b192..f6b90240dd41 100644 --- a/include/linux/nfs_fs.h +++ b/include/linux/nfs_fs.h | |||
| @@ -473,7 +473,6 @@ extern int nfs_writepages(struct address_space *, struct writeback_control *); | |||
| 473 | extern int nfs_flush_incompatible(struct file *file, struct page *page); | 473 | extern int nfs_flush_incompatible(struct file *file, struct page *page); |
| 474 | extern int nfs_updatepage(struct file *, struct page *, unsigned int, unsigned int); | 474 | extern int nfs_updatepage(struct file *, struct page *, unsigned int, unsigned int); |
| 475 | extern int nfs_writeback_done(struct rpc_task *, struct nfs_write_data *); | 475 | extern int nfs_writeback_done(struct rpc_task *, struct nfs_write_data *); |
| 476 | extern void nfs_writedata_release(void *); | ||
| 477 | 476 | ||
| 478 | /* | 477 | /* |
| 479 | * Try to write back everything synchronously (but check the | 478 | * Try to write back everything synchronously (but check the |
| @@ -488,7 +487,6 @@ extern int nfs_wb_page_cancel(struct inode *inode, struct page* page); | |||
| 488 | extern int nfs_commit_inode(struct inode *, int); | 487 | extern int nfs_commit_inode(struct inode *, int); |
| 489 | extern struct nfs_write_data *nfs_commitdata_alloc(void); | 488 | extern struct nfs_write_data *nfs_commitdata_alloc(void); |
| 490 | extern void nfs_commit_free(struct nfs_write_data *wdata); | 489 | extern void nfs_commit_free(struct nfs_write_data *wdata); |
| 491 | extern void nfs_commitdata_release(void *wdata); | ||
| 492 | #else | 490 | #else |
| 493 | static inline int | 491 | static inline int |
| 494 | nfs_commit_inode(struct inode *inode, int how) | 492 | nfs_commit_inode(struct inode *inode, int how) |
| @@ -507,6 +505,7 @@ nfs_have_writebacks(struct inode *inode) | |||
| 507 | * Allocate nfs_write_data structures | 505 | * Allocate nfs_write_data structures |
| 508 | */ | 506 | */ |
| 509 | extern struct nfs_write_data *nfs_writedata_alloc(unsigned int npages); | 507 | extern struct nfs_write_data *nfs_writedata_alloc(unsigned int npages); |
| 508 | extern void nfs_writedata_free(struct nfs_write_data *); | ||
| 510 | 509 | ||
| 511 | /* | 510 | /* |
| 512 | * linux/fs/nfs/read.c | 511 | * linux/fs/nfs/read.c |
| @@ -515,7 +514,6 @@ extern int nfs_readpage(struct file *, struct page *); | |||
| 515 | extern int nfs_readpages(struct file *, struct address_space *, | 514 | extern int nfs_readpages(struct file *, struct address_space *, |
| 516 | struct list_head *, unsigned); | 515 | struct list_head *, unsigned); |
| 517 | extern int nfs_readpage_result(struct rpc_task *, struct nfs_read_data *); | 516 | extern int nfs_readpage_result(struct rpc_task *, struct nfs_read_data *); |
| 518 | extern void nfs_readdata_release(void *data); | ||
| 519 | extern int nfs_readpage_async(struct nfs_open_context *, struct inode *, | 517 | extern int nfs_readpage_async(struct nfs_open_context *, struct inode *, |
| 520 | struct page *); | 518 | struct page *); |
| 521 | 519 | ||
| @@ -523,6 +521,7 @@ extern int nfs_readpage_async(struct nfs_open_context *, struct inode *, | |||
| 523 | * Allocate nfs_read_data structures | 521 | * Allocate nfs_read_data structures |
| 524 | */ | 522 | */ |
| 525 | extern struct nfs_read_data *nfs_readdata_alloc(unsigned int npages); | 523 | extern struct nfs_read_data *nfs_readdata_alloc(unsigned int npages); |
| 524 | extern void nfs_readdata_free(struct nfs_read_data *); | ||
| 526 | 525 | ||
| 527 | /* | 526 | /* |
| 528 | * linux/fs/nfs3proc.c | 527 | * linux/fs/nfs3proc.c |
diff --git a/include/linux/nodemask.h b/include/linux/nodemask.h index 829b94b156f2..b359c4a9ec9e 100644 --- a/include/linux/nodemask.h +++ b/include/linux/nodemask.h | |||
| @@ -82,6 +82,12 @@ | |||
| 82 | * to generate slightly worse code. So use a simple one-line #define | 82 | * to generate slightly worse code. So use a simple one-line #define |
| 83 | * for node_isset(), instead of wrapping an inline inside a macro, the | 83 | * for node_isset(), instead of wrapping an inline inside a macro, the |
| 84 | * way we do the other calls. | 84 | * way we do the other calls. |
| 85 | * | ||
| 86 | * NODEMASK_SCRATCH | ||
| 87 | * When doing above logical AND, OR, XOR, Remap operations the callers tend to | ||
| 88 | * need temporary nodemask_t's on the stack. But if NODES_SHIFT is large, | ||
| 89 | * nodemask_t's consume too much stack space. NODEMASK_SCRATCH is a helper | ||
| 90 | * for such situations. See below and CPUMASK_ALLOC also. | ||
| 85 | */ | 91 | */ |
| 86 | 92 | ||
| 87 | #include <linux/kernel.h> | 93 | #include <linux/kernel.h> |
| @@ -473,4 +479,26 @@ static inline int num_node_state(enum node_states state) | |||
| 473 | #define for_each_node(node) for_each_node_state(node, N_POSSIBLE) | 479 | #define for_each_node(node) for_each_node_state(node, N_POSSIBLE) |
| 474 | #define for_each_online_node(node) for_each_node_state(node, N_ONLINE) | 480 | #define for_each_online_node(node) for_each_node_state(node, N_ONLINE) |
| 475 | 481 | ||
| 482 | /* | ||
| 483 | * For nodemask scrach area.(See CPUMASK_ALLOC() in cpumask.h) | ||
| 484 | */ | ||
| 485 | |||
| 486 | #if NODES_SHIFT > 8 /* nodemask_t > 64 bytes */ | ||
| 487 | #define NODEMASK_ALLOC(x, m) struct x *m = kmalloc(sizeof(*m), GFP_KERNEL) | ||
| 488 | #define NODEMASK_FREE(m) kfree(m) | ||
| 489 | #else | ||
| 490 | #define NODEMASK_ALLOC(x, m) struct x _m, *m = &_m | ||
| 491 | #define NODEMASK_FREE(m) | ||
| 492 | #endif | ||
| 493 | |||
| 494 | /* A example struture for using NODEMASK_ALLOC, used in mempolicy. */ | ||
| 495 | struct nodemask_scratch { | ||
| 496 | nodemask_t mask1; | ||
| 497 | nodemask_t mask2; | ||
| 498 | }; | ||
| 499 | |||
| 500 | #define NODEMASK_SCRATCH(x) NODEMASK_ALLOC(nodemask_scratch, x) | ||
| 501 | #define NODEMASK_SCRATCH_FREE(x) NODEMASK_FREE(x) | ||
| 502 | |||
| 503 | |||
| 476 | #endif /* __LINUX_NODEMASK_H */ | 504 | #endif /* __LINUX_NODEMASK_H */ |
diff --git a/include/linux/of_mdio.h b/include/linux/of_mdio.h index c9663c690303..53b94e025c7c 100644 --- a/include/linux/of_mdio.h +++ b/include/linux/of_mdio.h | |||
| @@ -18,5 +18,8 @@ extern struct phy_device *of_phy_connect(struct net_device *dev, | |||
| 18 | struct device_node *phy_np, | 18 | struct device_node *phy_np, |
| 19 | void (*hndlr)(struct net_device *), | 19 | void (*hndlr)(struct net_device *), |
| 20 | u32 flags, phy_interface_t iface); | 20 | u32 flags, phy_interface_t iface); |
| 21 | extern struct phy_device *of_phy_connect_fixed_link(struct net_device *dev, | ||
| 22 | void (*hndlr)(struct net_device *), | ||
| 23 | phy_interface_t iface); | ||
| 21 | 24 | ||
| 22 | #endif /* __LINUX_OF_MDIO_H */ | 25 | #endif /* __LINUX_OF_MDIO_H */ |
diff --git a/include/linux/pci.h b/include/linux/pci.h index d304ddf412d0..115fb7ba5089 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
| @@ -1145,7 +1145,7 @@ static inline void pci_set_drvdata(struct pci_dev *pdev, void *data) | |||
| 1145 | /* If you want to know what to call your pci_dev, ask this function. | 1145 | /* If you want to know what to call your pci_dev, ask this function. |
| 1146 | * Again, it's a wrapper around the generic device. | 1146 | * Again, it's a wrapper around the generic device. |
| 1147 | */ | 1147 | */ |
| 1148 | static inline const char *pci_name(struct pci_dev *pdev) | 1148 | static inline const char *pci_name(const struct pci_dev *pdev) |
| 1149 | { | 1149 | { |
| 1150 | return dev_name(&pdev->dev); | 1150 | return dev_name(&pdev->dev); |
| 1151 | } | 1151 | } |
diff --git a/include/linux/perf_counter.h b/include/linux/perf_counter.h index 5e970c7d3fd5..b53f7006cc4e 100644 --- a/include/linux/perf_counter.h +++ b/include/linux/perf_counter.h | |||
| @@ -115,26 +115,44 @@ enum perf_counter_sample_format { | |||
| 115 | PERF_SAMPLE_TID = 1U << 1, | 115 | PERF_SAMPLE_TID = 1U << 1, |
| 116 | PERF_SAMPLE_TIME = 1U << 2, | 116 | PERF_SAMPLE_TIME = 1U << 2, |
| 117 | PERF_SAMPLE_ADDR = 1U << 3, | 117 | PERF_SAMPLE_ADDR = 1U << 3, |
| 118 | PERF_SAMPLE_GROUP = 1U << 4, | 118 | PERF_SAMPLE_READ = 1U << 4, |
| 119 | PERF_SAMPLE_CALLCHAIN = 1U << 5, | 119 | PERF_SAMPLE_CALLCHAIN = 1U << 5, |
| 120 | PERF_SAMPLE_ID = 1U << 6, | 120 | PERF_SAMPLE_ID = 1U << 6, |
| 121 | PERF_SAMPLE_CPU = 1U << 7, | 121 | PERF_SAMPLE_CPU = 1U << 7, |
| 122 | PERF_SAMPLE_PERIOD = 1U << 8, | 122 | PERF_SAMPLE_PERIOD = 1U << 8, |
| 123 | PERF_SAMPLE_STREAM_ID = 1U << 9, | ||
| 124 | PERF_SAMPLE_RAW = 1U << 10, | ||
| 123 | 125 | ||
| 124 | PERF_SAMPLE_MAX = 1U << 9, /* non-ABI */ | 126 | PERF_SAMPLE_MAX = 1U << 11, /* non-ABI */ |
| 125 | }; | 127 | }; |
| 126 | 128 | ||
| 127 | /* | 129 | /* |
| 128 | * Bits that can be set in attr.read_format to request that | 130 | * The format of the data returned by read() on a perf counter fd, |
| 129 | * reads on the counter should return the indicated quantities, | 131 | * as specified by attr.read_format: |
| 130 | * in increasing order of bit value, after the counter value. | 132 | * |
| 133 | * struct read_format { | ||
| 134 | * { u64 value; | ||
| 135 | * { u64 time_enabled; } && PERF_FORMAT_ENABLED | ||
| 136 | * { u64 time_running; } && PERF_FORMAT_RUNNING | ||
| 137 | * { u64 id; } && PERF_FORMAT_ID | ||
| 138 | * } && !PERF_FORMAT_GROUP | ||
| 139 | * | ||
| 140 | * { u64 nr; | ||
| 141 | * { u64 time_enabled; } && PERF_FORMAT_ENABLED | ||
| 142 | * { u64 time_running; } && PERF_FORMAT_RUNNING | ||
| 143 | * { u64 value; | ||
| 144 | * { u64 id; } && PERF_FORMAT_ID | ||
| 145 | * } cntr[nr]; | ||
| 146 | * } && PERF_FORMAT_GROUP | ||
| 147 | * }; | ||
| 131 | */ | 148 | */ |
| 132 | enum perf_counter_read_format { | 149 | enum perf_counter_read_format { |
| 133 | PERF_FORMAT_TOTAL_TIME_ENABLED = 1U << 0, | 150 | PERF_FORMAT_TOTAL_TIME_ENABLED = 1U << 0, |
| 134 | PERF_FORMAT_TOTAL_TIME_RUNNING = 1U << 1, | 151 | PERF_FORMAT_TOTAL_TIME_RUNNING = 1U << 1, |
| 135 | PERF_FORMAT_ID = 1U << 2, | 152 | PERF_FORMAT_ID = 1U << 2, |
| 153 | PERF_FORMAT_GROUP = 1U << 3, | ||
| 136 | 154 | ||
| 137 | PERF_FORMAT_MAX = 1U << 3, /* non-ABI */ | 155 | PERF_FORMAT_MAX = 1U << 4, /* non-ABI */ |
| 138 | }; | 156 | }; |
| 139 | 157 | ||
| 140 | #define PERF_ATTR_SIZE_VER0 64 /* sizeof first published struct */ | 158 | #define PERF_ATTR_SIZE_VER0 64 /* sizeof first published struct */ |
| @@ -180,8 +198,9 @@ struct perf_counter_attr { | |||
| 180 | freq : 1, /* use freq, not period */ | 198 | freq : 1, /* use freq, not period */ |
| 181 | inherit_stat : 1, /* per task counts */ | 199 | inherit_stat : 1, /* per task counts */ |
| 182 | enable_on_exec : 1, /* next exec enables */ | 200 | enable_on_exec : 1, /* next exec enables */ |
| 201 | task : 1, /* trace fork/exit */ | ||
| 183 | 202 | ||
| 184 | __reserved_1 : 51; | 203 | __reserved_1 : 50; |
| 185 | 204 | ||
| 186 | __u32 wakeup_events; /* wakeup every n events */ | 205 | __u32 wakeup_events; /* wakeup every n events */ |
| 187 | __u32 __reserved_2; | 206 | __u32 __reserved_2; |
| @@ -310,18 +329,18 @@ enum perf_event_type { | |||
| 310 | /* | 329 | /* |
| 311 | * struct { | 330 | * struct { |
| 312 | * struct perf_event_header header; | 331 | * struct perf_event_header header; |
| 313 | * u64 time; | 332 | * u32 pid, ppid; |
| 314 | * u64 id; | 333 | * u32 tid, ptid; |
| 315 | * u64 sample_period; | ||
| 316 | * }; | 334 | * }; |
| 317 | */ | 335 | */ |
| 318 | PERF_EVENT_PERIOD = 4, | 336 | PERF_EVENT_EXIT = 4, |
| 319 | 337 | ||
| 320 | /* | 338 | /* |
| 321 | * struct { | 339 | * struct { |
| 322 | * struct perf_event_header header; | 340 | * struct perf_event_header header; |
| 323 | * u64 time; | 341 | * u64 time; |
| 324 | * u64 id; | 342 | * u64 id; |
| 343 | * u64 stream_id; | ||
| 325 | * }; | 344 | * }; |
| 326 | */ | 345 | */ |
| 327 | PERF_EVENT_THROTTLE = 5, | 346 | PERF_EVENT_THROTTLE = 5, |
| @@ -331,6 +350,7 @@ enum perf_event_type { | |||
| 331 | * struct { | 350 | * struct { |
| 332 | * struct perf_event_header header; | 351 | * struct perf_event_header header; |
| 333 | * u32 pid, ppid; | 352 | * u32 pid, ppid; |
| 353 | * u32 tid, ptid; | ||
| 334 | * }; | 354 | * }; |
| 335 | */ | 355 | */ |
| 336 | PERF_EVENT_FORK = 7, | 356 | PERF_EVENT_FORK = 7, |
| @@ -339,10 +359,8 @@ enum perf_event_type { | |||
| 339 | * struct { | 359 | * struct { |
| 340 | * struct perf_event_header header; | 360 | * struct perf_event_header header; |
| 341 | * u32 pid, tid; | 361 | * u32 pid, tid; |
| 342 | * u64 value; | 362 | * |
| 343 | * { u64 time_enabled; } && PERF_FORMAT_ENABLED | 363 | * struct read_format values; |
| 344 | * { u64 time_running; } && PERF_FORMAT_RUNNING | ||
| 345 | * { u64 parent_id; } && PERF_FORMAT_ID | ||
| 346 | * }; | 364 | * }; |
| 347 | */ | 365 | */ |
| 348 | PERF_EVENT_READ = 8, | 366 | PERF_EVENT_READ = 8, |
| @@ -356,14 +374,28 @@ enum perf_event_type { | |||
| 356 | * { u64 time; } && PERF_SAMPLE_TIME | 374 | * { u64 time; } && PERF_SAMPLE_TIME |
| 357 | * { u64 addr; } && PERF_SAMPLE_ADDR | 375 | * { u64 addr; } && PERF_SAMPLE_ADDR |
| 358 | * { u64 id; } && PERF_SAMPLE_ID | 376 | * { u64 id; } && PERF_SAMPLE_ID |
| 377 | * { u64 stream_id;} && PERF_SAMPLE_STREAM_ID | ||
| 359 | * { u32 cpu, res; } && PERF_SAMPLE_CPU | 378 | * { u32 cpu, res; } && PERF_SAMPLE_CPU |
| 360 | * { u64 period; } && PERF_SAMPLE_PERIOD | 379 | * { u64 period; } && PERF_SAMPLE_PERIOD |
| 361 | * | 380 | * |
| 362 | * { u64 nr; | 381 | * { struct read_format values; } && PERF_SAMPLE_READ |
| 363 | * { u64 id, val; } cnt[nr]; } && PERF_SAMPLE_GROUP | ||
| 364 | * | 382 | * |
| 365 | * { u64 nr, | 383 | * { u64 nr, |
| 366 | * u64 ips[nr]; } && PERF_SAMPLE_CALLCHAIN | 384 | * u64 ips[nr]; } && PERF_SAMPLE_CALLCHAIN |
| 385 | * | ||
| 386 | * # | ||
| 387 | * # The RAW record below is opaque data wrt the ABI | ||
| 388 | * # | ||
| 389 | * # That is, the ABI doesn't make any promises wrt to | ||
| 390 | * # the stability of its content, it may vary depending | ||
| 391 | * # on event, hardware, kernel version and phase of | ||
| 392 | * # the moon. | ||
| 393 | * # | ||
| 394 | * # In other words, PERF_SAMPLE_RAW contents are not an ABI. | ||
| 395 | * # | ||
| 396 | * | ||
| 397 | * { u32 size; | ||
| 398 | * char data[size];}&& PERF_SAMPLE_RAW | ||
| 367 | * }; | 399 | * }; |
| 368 | */ | 400 | */ |
| 369 | PERF_EVENT_SAMPLE = 9, | 401 | PERF_EVENT_SAMPLE = 9, |
| @@ -409,6 +441,11 @@ struct perf_callchain_entry { | |||
| 409 | __u64 ip[PERF_MAX_STACK_DEPTH]; | 441 | __u64 ip[PERF_MAX_STACK_DEPTH]; |
| 410 | }; | 442 | }; |
| 411 | 443 | ||
| 444 | struct perf_raw_record { | ||
| 445 | u32 size; | ||
| 446 | void *data; | ||
| 447 | }; | ||
| 448 | |||
| 412 | struct task_struct; | 449 | struct task_struct; |
| 413 | 450 | ||
| 414 | /** | 451 | /** |
| @@ -677,10 +714,13 @@ struct perf_sample_data { | |||
| 677 | struct pt_regs *regs; | 714 | struct pt_regs *regs; |
| 678 | u64 addr; | 715 | u64 addr; |
| 679 | u64 period; | 716 | u64 period; |
| 717 | struct perf_raw_record *raw; | ||
| 680 | }; | 718 | }; |
| 681 | 719 | ||
| 682 | extern int perf_counter_overflow(struct perf_counter *counter, int nmi, | 720 | extern int perf_counter_overflow(struct perf_counter *counter, int nmi, |
| 683 | struct perf_sample_data *data); | 721 | struct perf_sample_data *data); |
| 722 | extern void perf_counter_output(struct perf_counter *counter, int nmi, | ||
| 723 | struct perf_sample_data *data); | ||
| 684 | 724 | ||
| 685 | /* | 725 | /* |
| 686 | * Return 1 for a software counter, 0 for a hardware counter | 726 | * Return 1 for a software counter, 0 for a hardware counter |
diff --git a/include/linux/personality.h b/include/linux/personality.h index a84e9ff9b27e..126120819a0d 100644 --- a/include/linux/personality.h +++ b/include/linux/personality.h | |||
| @@ -40,7 +40,10 @@ enum { | |||
| 40 | * Security-relevant compatibility flags that must be | 40 | * Security-relevant compatibility flags that must be |
| 41 | * cleared upon setuid or setgid exec: | 41 | * cleared upon setuid or setgid exec: |
| 42 | */ | 42 | */ |
| 43 | #define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC|ADDR_NO_RANDOMIZE) | 43 | #define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC | \ |
| 44 | ADDR_NO_RANDOMIZE | \ | ||
| 45 | ADDR_COMPAT_LAYOUT | \ | ||
| 46 | MMAP_PAGE_ZERO) | ||
| 44 | 47 | ||
| 45 | /* | 48 | /* |
| 46 | * Personality types. | 49 | * Personality types. |
diff --git a/include/linux/pps.h b/include/linux/pps.h index cfe5c7214ec6..0194ab06177b 100644 --- a/include/linux/pps.h +++ b/include/linux/pps.h | |||
| @@ -22,6 +22,8 @@ | |||
| 22 | #ifndef _PPS_H_ | 22 | #ifndef _PPS_H_ |
| 23 | #define _PPS_H_ | 23 | #define _PPS_H_ |
| 24 | 24 | ||
| 25 | #include <linux/types.h> | ||
| 26 | |||
| 25 | #define PPS_VERSION "5.3.6" | 27 | #define PPS_VERSION "5.3.6" |
| 26 | #define PPS_MAX_SOURCES 16 /* should be enough... */ | 28 | #define PPS_MAX_SOURCES 16 /* should be enough... */ |
| 27 | 29 | ||
diff --git a/include/linux/quotaops.h b/include/linux/quotaops.h index 7bc457593684..26361c4c037a 100644 --- a/include/linux/quotaops.h +++ b/include/linux/quotaops.h | |||
| @@ -7,7 +7,6 @@ | |||
| 7 | #ifndef _LINUX_QUOTAOPS_ | 7 | #ifndef _LINUX_QUOTAOPS_ |
| 8 | #define _LINUX_QUOTAOPS_ | 8 | #define _LINUX_QUOTAOPS_ |
| 9 | 9 | ||
| 10 | #include <linux/smp_lock.h> | ||
| 11 | #include <linux/fs.h> | 10 | #include <linux/fs.h> |
| 12 | 11 | ||
| 13 | static inline struct quota_info *sb_dqopt(struct super_block *sb) | 12 | static inline struct quota_info *sb_dqopt(struct super_block *sb) |
diff --git a/include/linux/rfkill.h b/include/linux/rfkill.h index e73e2429a1b1..278777fa8a3a 100644 --- a/include/linux/rfkill.h +++ b/include/linux/rfkill.h | |||
| @@ -99,7 +99,6 @@ enum rfkill_user_states { | |||
| 99 | #undef RFKILL_STATE_UNBLOCKED | 99 | #undef RFKILL_STATE_UNBLOCKED |
| 100 | #undef RFKILL_STATE_HARD_BLOCKED | 100 | #undef RFKILL_STATE_HARD_BLOCKED |
| 101 | 101 | ||
| 102 | #include <linux/types.h> | ||
| 103 | #include <linux/kernel.h> | 102 | #include <linux/kernel.h> |
| 104 | #include <linux/list.h> | 103 | #include <linux/list.h> |
| 105 | #include <linux/mutex.h> | 104 | #include <linux/mutex.h> |
| @@ -225,7 +224,7 @@ void rfkill_destroy(struct rfkill *rfkill); | |||
| 225 | * should be blocked) so that drivers need not keep track of the soft | 224 | * should be blocked) so that drivers need not keep track of the soft |
| 226 | * block state -- which they might not be able to. | 225 | * block state -- which they might not be able to. |
| 227 | */ | 226 | */ |
| 228 | bool __must_check rfkill_set_hw_state(struct rfkill *rfkill, bool blocked); | 227 | bool rfkill_set_hw_state(struct rfkill *rfkill, bool blocked); |
| 229 | 228 | ||
| 230 | /** | 229 | /** |
| 231 | * rfkill_set_sw_state - Set the internal rfkill software block state | 230 | * rfkill_set_sw_state - Set the internal rfkill software block state |
diff --git a/include/linux/scatterlist.h b/include/linux/scatterlist.h index e5996984ddd0..9aaf5bfdad1a 100644 --- a/include/linux/scatterlist.h +++ b/include/linux/scatterlist.h | |||
| @@ -242,6 +242,8 @@ size_t sg_copy_to_buffer(struct scatterlist *sgl, unsigned int nents, | |||
| 242 | */ | 242 | */ |
| 243 | 243 | ||
| 244 | #define SG_MITER_ATOMIC (1 << 0) /* use kmap_atomic */ | 244 | #define SG_MITER_ATOMIC (1 << 0) /* use kmap_atomic */ |
| 245 | #define SG_MITER_TO_SG (1 << 1) /* flush back to phys on unmap */ | ||
| 246 | #define SG_MITER_FROM_SG (1 << 2) /* nop */ | ||
| 245 | 247 | ||
| 246 | struct sg_mapping_iter { | 248 | struct sg_mapping_iter { |
| 247 | /* the following three fields can be accessed directly */ | 249 | /* the following three fields can be accessed directly */ |
diff --git a/include/linux/sched.h b/include/linux/sched.h index 0085d758d645..0f1ea4a66957 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
| @@ -209,7 +209,7 @@ extern unsigned long long time_sync_thresh; | |||
| 209 | ((task->state & (__TASK_STOPPED | __TASK_TRACED)) != 0) | 209 | ((task->state & (__TASK_STOPPED | __TASK_TRACED)) != 0) |
| 210 | #define task_contributes_to_load(task) \ | 210 | #define task_contributes_to_load(task) \ |
| 211 | ((task->state & TASK_UNINTERRUPTIBLE) != 0 && \ | 211 | ((task->state & TASK_UNINTERRUPTIBLE) != 0 && \ |
| 212 | (task->flags & PF_FROZEN) == 0) | 212 | (task->flags & PF_FREEZING) == 0) |
| 213 | 213 | ||
| 214 | #define __set_task_state(tsk, state_value) \ | 214 | #define __set_task_state(tsk, state_value) \ |
| 215 | do { (tsk)->state = (state_value); } while (0) | 215 | do { (tsk)->state = (state_value); } while (0) |
| @@ -498,6 +498,15 @@ struct task_cputime { | |||
| 498 | .sum_exec_runtime = 0, \ | 498 | .sum_exec_runtime = 0, \ |
| 499 | } | 499 | } |
| 500 | 500 | ||
| 501 | /* | ||
| 502 | * Disable preemption until the scheduler is running. | ||
| 503 | * Reset by start_kernel()->sched_init()->init_idle(). | ||
| 504 | * | ||
| 505 | * We include PREEMPT_ACTIVE to avoid cond_resched() from working | ||
| 506 | * before the scheduler is active -- see should_resched(). | ||
| 507 | */ | ||
| 508 | #define INIT_PREEMPT_COUNT (1 + PREEMPT_ACTIVE) | ||
| 509 | |||
| 501 | /** | 510 | /** |
| 502 | * struct thread_group_cputimer - thread group interval timer counts | 511 | * struct thread_group_cputimer - thread group interval timer counts |
| 503 | * @cputime: thread group interval timers. | 512 | * @cputime: thread group interval timers. |
| @@ -1189,6 +1198,7 @@ struct task_struct { | |||
| 1189 | * a short time | 1198 | * a short time |
| 1190 | */ | 1199 | */ |
| 1191 | unsigned char fpu_counter; | 1200 | unsigned char fpu_counter; |
| 1201 | s8 oomkilladj; /* OOM kill score adjustment (bit shift). */ | ||
| 1192 | #ifdef CONFIG_BLK_DEV_IO_TRACE | 1202 | #ifdef CONFIG_BLK_DEV_IO_TRACE |
| 1193 | unsigned int btrace_seq; | 1203 | unsigned int btrace_seq; |
| 1194 | #endif | 1204 | #endif |
| @@ -1671,6 +1681,7 @@ extern cputime_t task_gtime(struct task_struct *p); | |||
| 1671 | #define PF_MEMALLOC 0x00000800 /* Allocating memory */ | 1681 | #define PF_MEMALLOC 0x00000800 /* Allocating memory */ |
| 1672 | #define PF_FLUSHER 0x00001000 /* responsible for disk writeback */ | 1682 | #define PF_FLUSHER 0x00001000 /* responsible for disk writeback */ |
| 1673 | #define PF_USED_MATH 0x00002000 /* if unset the fpu must be initialized before use */ | 1683 | #define PF_USED_MATH 0x00002000 /* if unset the fpu must be initialized before use */ |
| 1684 | #define PF_FREEZING 0x00004000 /* freeze in progress. do not account to load */ | ||
| 1674 | #define PF_NOFREEZE 0x00008000 /* this thread should not be frozen */ | 1685 | #define PF_NOFREEZE 0x00008000 /* this thread should not be frozen */ |
| 1675 | #define PF_FROZEN 0x00010000 /* frozen for system suspend */ | 1686 | #define PF_FROZEN 0x00010000 /* frozen for system suspend */ |
| 1676 | #define PF_FSTRANS 0x00020000 /* inside a filesystem transaction */ | 1687 | #define PF_FSTRANS 0x00020000 /* inside a filesystem transaction */ |
diff --git a/include/linux/security.h b/include/linux/security.h index 5eff459b3833..1f16eea2017b 100644 --- a/include/linux/security.h +++ b/include/linux/security.h | |||
| @@ -28,6 +28,7 @@ | |||
| 28 | #include <linux/resource.h> | 28 | #include <linux/resource.h> |
| 29 | #include <linux/sem.h> | 29 | #include <linux/sem.h> |
| 30 | #include <linux/shm.h> | 30 | #include <linux/shm.h> |
| 31 | #include <linux/mm.h> /* PAGE_ALIGN */ | ||
| 31 | #include <linux/msg.h> | 32 | #include <linux/msg.h> |
| 32 | #include <linux/sched.h> | 33 | #include <linux/sched.h> |
| 33 | #include <linux/key.h> | 34 | #include <linux/key.h> |
| @@ -66,6 +67,9 @@ extern int cap_inode_setxattr(struct dentry *dentry, const char *name, | |||
| 66 | extern int cap_inode_removexattr(struct dentry *dentry, const char *name); | 67 | extern int cap_inode_removexattr(struct dentry *dentry, const char *name); |
| 67 | extern int cap_inode_need_killpriv(struct dentry *dentry); | 68 | extern int cap_inode_need_killpriv(struct dentry *dentry); |
| 68 | extern int cap_inode_killpriv(struct dentry *dentry); | 69 | extern int cap_inode_killpriv(struct dentry *dentry); |
| 70 | extern int cap_file_mmap(struct file *file, unsigned long reqprot, | ||
| 71 | unsigned long prot, unsigned long flags, | ||
| 72 | unsigned long addr, unsigned long addr_only); | ||
| 69 | extern int cap_task_fix_setuid(struct cred *new, const struct cred *old, int flags); | 73 | extern int cap_task_fix_setuid(struct cred *new, const struct cred *old, int flags); |
| 70 | extern int cap_task_prctl(int option, unsigned long arg2, unsigned long arg3, | 74 | extern int cap_task_prctl(int option, unsigned long arg2, unsigned long arg3, |
| 71 | unsigned long arg4, unsigned long arg5); | 75 | unsigned long arg4, unsigned long arg5); |
| @@ -92,6 +96,7 @@ extern int cap_netlink_send(struct sock *sk, struct sk_buff *skb); | |||
| 92 | extern int cap_netlink_recv(struct sk_buff *skb, int cap); | 96 | extern int cap_netlink_recv(struct sk_buff *skb, int cap); |
| 93 | 97 | ||
| 94 | extern unsigned long mmap_min_addr; | 98 | extern unsigned long mmap_min_addr; |
| 99 | extern unsigned long dac_mmap_min_addr; | ||
| 95 | /* | 100 | /* |
| 96 | * Values used in the task_security_ops calls | 101 | * Values used in the task_security_ops calls |
| 97 | */ | 102 | */ |
| @@ -116,6 +121,21 @@ struct request_sock; | |||
| 116 | #define LSM_UNSAFE_PTRACE 2 | 121 | #define LSM_UNSAFE_PTRACE 2 |
| 117 | #define LSM_UNSAFE_PTRACE_CAP 4 | 122 | #define LSM_UNSAFE_PTRACE_CAP 4 |
| 118 | 123 | ||
| 124 | /* | ||
| 125 | * If a hint addr is less than mmap_min_addr change hint to be as | ||
| 126 | * low as possible but still greater than mmap_min_addr | ||
| 127 | */ | ||
| 128 | static inline unsigned long round_hint_to_min(unsigned long hint) | ||
| 129 | { | ||
| 130 | hint &= PAGE_MASK; | ||
| 131 | if (((void *)hint != NULL) && | ||
| 132 | (hint < mmap_min_addr)) | ||
| 133 | return PAGE_ALIGN(mmap_min_addr); | ||
| 134 | return hint; | ||
| 135 | } | ||
| 136 | extern int mmap_min_addr_handler(struct ctl_table *table, int write, struct file *filp, | ||
| 137 | void __user *buffer, size_t *lenp, loff_t *ppos); | ||
| 138 | |||
| 119 | #ifdef CONFIG_SECURITY | 139 | #ifdef CONFIG_SECURITY |
| 120 | 140 | ||
| 121 | struct security_mnt_opts { | 141 | struct security_mnt_opts { |
| @@ -2197,9 +2217,7 @@ static inline int security_file_mmap(struct file *file, unsigned long reqprot, | |||
| 2197 | unsigned long addr, | 2217 | unsigned long addr, |
| 2198 | unsigned long addr_only) | 2218 | unsigned long addr_only) |
| 2199 | { | 2219 | { |
| 2200 | if ((addr < mmap_min_addr) && !capable(CAP_SYS_RAWIO)) | 2220 | return cap_file_mmap(file, reqprot, prot, flags, addr, addr_only); |
| 2201 | return -EACCES; | ||
| 2202 | return 0; | ||
| 2203 | } | 2221 | } |
| 2204 | 2222 | ||
| 2205 | static inline int security_file_mprotect(struct vm_area_struct *vma, | 2223 | static inline int security_file_mprotect(struct vm_area_struct *vma, |
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index b47b3f039d14..f2c69a2cca17 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
| @@ -1342,12 +1342,12 @@ static inline int skb_network_offset(const struct sk_buff *skb) | |||
| 1342 | * shifting the start of the packet by 2 bytes. Drivers should do this | 1342 | * shifting the start of the packet by 2 bytes. Drivers should do this |
| 1343 | * with: | 1343 | * with: |
| 1344 | * | 1344 | * |
| 1345 | * skb_reserve(NET_IP_ALIGN); | 1345 | * skb_reserve(skb, NET_IP_ALIGN); |
| 1346 | * | 1346 | * |
| 1347 | * The downside to this alignment of the IP header is that the DMA is now | 1347 | * The downside to this alignment of the IP header is that the DMA is now |
| 1348 | * unaligned. On some architectures the cost of an unaligned DMA is high | 1348 | * unaligned. On some architectures the cost of an unaligned DMA is high |
| 1349 | * and this cost outweighs the gains made by aligning the IP header. | 1349 | * and this cost outweighs the gains made by aligning the IP header. |
| 1350 | * | 1350 | * |
| 1351 | * Since this trade off varies between architectures, we allow NET_IP_ALIGN | 1351 | * Since this trade off varies between architectures, we allow NET_IP_ALIGN |
| 1352 | * to be overridden. | 1352 | * to be overridden. |
| 1353 | */ | 1353 | */ |
diff --git a/include/linux/slub_def.h b/include/linux/slub_def.h index 4dcbc2c71491..c1c862b1d01a 100644 --- a/include/linux/slub_def.h +++ b/include/linux/slub_def.h | |||
| @@ -11,6 +11,7 @@ | |||
| 11 | #include <linux/workqueue.h> | 11 | #include <linux/workqueue.h> |
| 12 | #include <linux/kobject.h> | 12 | #include <linux/kobject.h> |
| 13 | #include <linux/kmemtrace.h> | 13 | #include <linux/kmemtrace.h> |
| 14 | #include <linux/kmemleak.h> | ||
| 14 | 15 | ||
| 15 | enum stat_item { | 16 | enum stat_item { |
| 16 | ALLOC_FASTPATH, /* Allocation from cpu slab */ | 17 | ALLOC_FASTPATH, /* Allocation from cpu slab */ |
| @@ -233,6 +234,7 @@ static __always_inline void *kmalloc_large(size_t size, gfp_t flags) | |||
| 233 | unsigned int order = get_order(size); | 234 | unsigned int order = get_order(size); |
| 234 | void *ret = (void *) __get_free_pages(flags | __GFP_COMP, order); | 235 | void *ret = (void *) __get_free_pages(flags | __GFP_COMP, order); |
| 235 | 236 | ||
| 237 | kmemleak_alloc(ret, size, 1, flags); | ||
| 236 | trace_kmalloc(_THIS_IP_, ret, size, PAGE_SIZE << order, flags); | 238 | trace_kmalloc(_THIS_IP_, ret, size, PAGE_SIZE << order, flags); |
| 237 | 239 | ||
| 238 | return ret; | 240 | return ret; |
diff --git a/include/linux/spinlock.h b/include/linux/spinlock.h index 252b245cfcf4..4be57ab03478 100644 --- a/include/linux/spinlock.h +++ b/include/linux/spinlock.h | |||
| @@ -132,6 +132,11 @@ do { \ | |||
| 132 | #endif /*__raw_spin_is_contended*/ | 132 | #endif /*__raw_spin_is_contended*/ |
| 133 | #endif | 133 | #endif |
| 134 | 134 | ||
| 135 | /* The lock does not imply full memory barrier. */ | ||
| 136 | #ifndef ARCH_HAS_SMP_MB_AFTER_LOCK | ||
| 137 | static inline void smp_mb__after_lock(void) { smp_mb(); } | ||
| 138 | #endif | ||
| 139 | |||
| 135 | /** | 140 | /** |
| 136 | * spin_unlock_wait - wait until the spinlock gets unlocked | 141 | * spin_unlock_wait - wait until the spinlock gets unlocked |
| 137 | * @lock: the spinlock in question. | 142 | * @lock: the spinlock in question. |
diff --git a/include/linux/sunrpc/xdr.h b/include/linux/sunrpc/xdr.h index d8910b68e1bd..b99c625fddfe 100644 --- a/include/linux/sunrpc/xdr.h +++ b/include/linux/sunrpc/xdr.h | |||
| @@ -12,7 +12,6 @@ | |||
| 12 | #include <linux/uio.h> | 12 | #include <linux/uio.h> |
| 13 | #include <asm/byteorder.h> | 13 | #include <asm/byteorder.h> |
| 14 | #include <linux/scatterlist.h> | 14 | #include <linux/scatterlist.h> |
| 15 | #include <linux/smp_lock.h> | ||
| 16 | 15 | ||
| 17 | /* | 16 | /* |
| 18 | * Buffer adjustment | 17 | * Buffer adjustment |
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index fa4242cdade8..80de7003d8c2 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h | |||
| @@ -321,6 +321,8 @@ asmlinkage long sys_rt_sigtimedwait(const sigset_t __user *uthese, | |||
| 321 | siginfo_t __user *uinfo, | 321 | siginfo_t __user *uinfo, |
| 322 | const struct timespec __user *uts, | 322 | const struct timespec __user *uts, |
| 323 | size_t sigsetsize); | 323 | size_t sigsetsize); |
| 324 | asmlinkage long sys_rt_tgsigqueueinfo(pid_t tgid, pid_t pid, int sig, | ||
| 325 | siginfo_t __user *uinfo); | ||
| 324 | asmlinkage long sys_kill(int pid, int sig); | 326 | asmlinkage long sys_kill(int pid, int sig); |
| 325 | asmlinkage long sys_tgkill(int tgid, int pid, int sig); | 327 | asmlinkage long sys_tgkill(int tgid, int pid, int sig); |
| 326 | asmlinkage long sys_tkill(int pid, int sig); | 328 | asmlinkage long sys_tkill(int pid, int sig); |
diff --git a/include/linux/sysrq.h b/include/linux/sysrq.h index 98a1d8cfb73d..99adcdc0d3ca 100644 --- a/include/linux/sysrq.h +++ b/include/linux/sysrq.h | |||
| @@ -14,6 +14,8 @@ | |||
| 14 | #ifndef _LINUX_SYSRQ_H | 14 | #ifndef _LINUX_SYSRQ_H |
| 15 | #define _LINUX_SYSRQ_H | 15 | #define _LINUX_SYSRQ_H |
| 16 | 16 | ||
| 17 | #include <linux/errno.h> | ||
| 18 | |||
| 17 | struct pt_regs; | 19 | struct pt_regs; |
| 18 | struct tty_struct; | 20 | struct tty_struct; |
| 19 | 21 | ||
diff --git a/include/linux/tty.h b/include/linux/tty.h index 1488d8c81aac..e8c6c9136c97 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h | |||
| @@ -394,6 +394,7 @@ extern void __do_SAK(struct tty_struct *tty); | |||
| 394 | extern void disassociate_ctty(int priv); | 394 | extern void disassociate_ctty(int priv); |
| 395 | extern void no_tty(void); | 395 | extern void no_tty(void); |
| 396 | extern void tty_flip_buffer_push(struct tty_struct *tty); | 396 | extern void tty_flip_buffer_push(struct tty_struct *tty); |
| 397 | extern void tty_flush_to_ldisc(struct tty_struct *tty); | ||
| 397 | extern void tty_buffer_free_all(struct tty_struct *tty); | 398 | extern void tty_buffer_free_all(struct tty_struct *tty); |
| 398 | extern void tty_buffer_flush(struct tty_struct *tty); | 399 | extern void tty_buffer_flush(struct tty_struct *tty); |
| 399 | extern void tty_buffer_init(struct tty_struct *tty); | 400 | extern void tty_buffer_init(struct tty_struct *tty); |
diff --git a/include/linux/tty_ldisc.h b/include/linux/tty_ldisc.h index 40f38d896777..0c4ee9b88f85 100644 --- a/include/linux/tty_ldisc.h +++ b/include/linux/tty_ldisc.h | |||
| @@ -144,7 +144,7 @@ struct tty_ldisc_ops { | |||
| 144 | 144 | ||
| 145 | struct tty_ldisc { | 145 | struct tty_ldisc { |
| 146 | struct tty_ldisc_ops *ops; | 146 | struct tty_ldisc_ops *ops; |
| 147 | int refcount; | 147 | atomic_t users; |
| 148 | }; | 148 | }; |
| 149 | 149 | ||
| 150 | #define TTY_LDISC_MAGIC 0x5403 | 150 | #define TTY_LDISC_MAGIC 0x5403 |
diff --git a/include/linux/uio.h b/include/linux/uio.h index b7fe13883bdb..98c114323a8b 100644 --- a/include/linux/uio.h +++ b/include/linux/uio.h | |||
| @@ -19,15 +19,6 @@ struct iovec | |||
| 19 | __kernel_size_t iov_len; /* Must be size_t (1003.1g) */ | 19 | __kernel_size_t iov_len; /* Must be size_t (1003.1g) */ |
| 20 | }; | 20 | }; |
| 21 | 21 | ||
| 22 | #ifdef __KERNEL__ | ||
| 23 | |||
| 24 | struct kvec { | ||
| 25 | void *iov_base; /* and that should *never* hold a userland pointer */ | ||
| 26 | size_t iov_len; | ||
| 27 | }; | ||
| 28 | |||
| 29 | #endif | ||
| 30 | |||
| 31 | /* | 22 | /* |
| 32 | * UIO_MAXIOV shall be at least 16 1003.1g (5.4.1.1) | 23 | * UIO_MAXIOV shall be at least 16 1003.1g (5.4.1.1) |
| 33 | */ | 24 | */ |
| @@ -35,6 +26,13 @@ struct kvec { | |||
| 35 | #define UIO_FASTIOV 8 | 26 | #define UIO_FASTIOV 8 |
| 36 | #define UIO_MAXIOV 1024 | 27 | #define UIO_MAXIOV 1024 |
| 37 | 28 | ||
| 29 | #ifdef __KERNEL__ | ||
| 30 | |||
| 31 | struct kvec { | ||
| 32 | void *iov_base; /* and that should *never* hold a userland pointer */ | ||
| 33 | size_t iov_len; | ||
| 34 | }; | ||
| 35 | |||
| 38 | /* | 36 | /* |
| 39 | * Total number of bytes covered by an iovec. | 37 | * Total number of bytes covered by an iovec. |
| 40 | * | 38 | * |
| @@ -53,5 +51,6 @@ static inline size_t iov_length(const struct iovec *iov, unsigned long nr_segs) | |||
| 53 | } | 51 | } |
| 54 | 52 | ||
| 55 | unsigned long iov_shorten(struct iovec *iov, unsigned long nr_segs, size_t to); | 53 | unsigned long iov_shorten(struct iovec *iov, unsigned long nr_segs, size_t to); |
| 54 | #endif | ||
| 56 | 55 | ||
| 57 | #endif | 56 | #endif |
diff --git a/include/linux/usb.h b/include/linux/usb.h index 84929e914034..b1e3c2fbfe11 100644 --- a/include/linux/usb.h +++ b/include/linux/usb.h | |||
| @@ -888,8 +888,6 @@ struct usb_driver { | |||
| 888 | * struct usb_device_driver - identifies USB device driver to usbcore | 888 | * struct usb_device_driver - identifies USB device driver to usbcore |
| 889 | * @name: The driver name should be unique among USB drivers, | 889 | * @name: The driver name should be unique among USB drivers, |
| 890 | * and should normally be the same as the module name. | 890 | * and should normally be the same as the module name. |
| 891 | * @nodename: Callback to provide a naming hint for a possible | ||
| 892 | * device node to create. | ||
| 893 | * @probe: Called to see if the driver is willing to manage a particular | 891 | * @probe: Called to see if the driver is willing to manage a particular |
| 894 | * device. If it is, probe returns zero and uses dev_set_drvdata() | 892 | * device. If it is, probe returns zero and uses dev_set_drvdata() |
| 895 | * to associate driver-specific data with the device. If unwilling | 893 | * to associate driver-specific data with the device. If unwilling |
| @@ -924,6 +922,8 @@ extern struct bus_type usb_bus_type; | |||
| 924 | /** | 922 | /** |
| 925 | * struct usb_class_driver - identifies a USB driver that wants to use the USB major number | 923 | * struct usb_class_driver - identifies a USB driver that wants to use the USB major number |
| 926 | * @name: the usb class device name for this driver. Will show up in sysfs. | 924 | * @name: the usb class device name for this driver. Will show up in sysfs. |
| 925 | * @nodename: Callback to provide a naming hint for a possible | ||
| 926 | * device node to create. | ||
| 927 | * @fops: pointer to the struct file_operations of this driver. | 927 | * @fops: pointer to the struct file_operations of this driver. |
| 928 | * @minor_base: the start of the minor range for this driver. | 928 | * @minor_base: the start of the minor range for this driver. |
| 929 | * | 929 | * |
| @@ -1046,6 +1046,8 @@ typedef void (*usb_complete_t)(struct urb *); | |||
| 1046 | * the device driver is saying that it provided this DMA address, | 1046 | * the device driver is saying that it provided this DMA address, |
| 1047 | * which the host controller driver should use in preference to the | 1047 | * which the host controller driver should use in preference to the |
| 1048 | * transfer_buffer. | 1048 | * transfer_buffer. |
| 1049 | * @sg: scatter gather buffer list | ||
| 1050 | * @num_sgs: number of entries in the sg list | ||
| 1049 | * @transfer_buffer_length: How big is transfer_buffer. The transfer may | 1051 | * @transfer_buffer_length: How big is transfer_buffer. The transfer may |
| 1050 | * be broken up into chunks according to the current maximum packet | 1052 | * be broken up into chunks according to the current maximum packet |
| 1051 | * size for the endpoint, which is a function of the configuration | 1053 | * size for the endpoint, which is a function of the configuration |
diff --git a/include/linux/usb/langwell_otg.h b/include/linux/usb/langwell_otg.h deleted file mode 100644 index e115ae6df1da..000000000000 --- a/include/linux/usb/langwell_otg.h +++ /dev/null | |||
| @@ -1,177 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * Intel Langwell USB OTG transceiver driver | ||
| 3 | * Copyright (C) 2008, Intel Corporation. | ||
| 4 | * | ||
| 5 | * This program is free software; you can redistribute it and/or modify it | ||
| 6 | * under the terms and conditions of the GNU General Public License, | ||
| 7 | * version 2, as published by the Free Software Foundation. | ||
| 8 | * | ||
| 9 | * This program is distributed in the hope it will be useful, but WITHOUT | ||
| 10 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
| 11 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
| 12 | * more details. | ||
| 13 | * | ||
| 14 | * You should have received a copy of the GNU General Public License along with | ||
| 15 | * this program; if not, write to the Free Software Foundation, Inc., | ||
| 16 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 17 | * | ||
| 18 | */ | ||
| 19 | |||
| 20 | #ifndef __LANGWELL_OTG_H__ | ||
| 21 | #define __LANGWELL_OTG_H__ | ||
| 22 | |||
| 23 | /* notify transceiver driver about OTG events */ | ||
| 24 | extern void langwell_update_transceiver(void); | ||
| 25 | /* HCD register bus driver */ | ||
| 26 | extern int langwell_register_host(struct pci_driver *host_driver); | ||
| 27 | /* HCD unregister bus driver */ | ||
| 28 | extern void langwell_unregister_host(struct pci_driver *host_driver); | ||
| 29 | /* DCD register bus driver */ | ||
| 30 | extern int langwell_register_peripheral(struct pci_driver *client_driver); | ||
| 31 | /* DCD unregister bus driver */ | ||
| 32 | extern void langwell_unregister_peripheral(struct pci_driver *client_driver); | ||
| 33 | /* No silent failure, output warning message */ | ||
| 34 | extern void langwell_otg_nsf_msg(unsigned long message); | ||
| 35 | |||
| 36 | #define CI_USBCMD 0x30 | ||
| 37 | # define USBCMD_RST BIT(1) | ||
| 38 | # define USBCMD_RS BIT(0) | ||
| 39 | #define CI_USBSTS 0x34 | ||
| 40 | # define USBSTS_SLI BIT(8) | ||
| 41 | # define USBSTS_URI BIT(6) | ||
| 42 | # define USBSTS_PCI BIT(2) | ||
| 43 | #define CI_PORTSC1 0x74 | ||
| 44 | # define PORTSC_PP BIT(12) | ||
| 45 | # define PORTSC_LS (BIT(11) | BIT(10)) | ||
| 46 | # define PORTSC_SUSP BIT(7) | ||
| 47 | # define PORTSC_CCS BIT(0) | ||
| 48 | #define CI_HOSTPC1 0xb4 | ||
| 49 | # define HOSTPC1_PHCD BIT(22) | ||
| 50 | #define CI_OTGSC 0xf4 | ||
| 51 | # define OTGSC_DPIE BIT(30) | ||
| 52 | # define OTGSC_1MSE BIT(29) | ||
| 53 | # define OTGSC_BSEIE BIT(28) | ||
| 54 | # define OTGSC_BSVIE BIT(27) | ||
| 55 | # define OTGSC_ASVIE BIT(26) | ||
| 56 | # define OTGSC_AVVIE BIT(25) | ||
| 57 | # define OTGSC_IDIE BIT(24) | ||
| 58 | # define OTGSC_DPIS BIT(22) | ||
| 59 | # define OTGSC_1MSS BIT(21) | ||
| 60 | # define OTGSC_BSEIS BIT(20) | ||
| 61 | # define OTGSC_BSVIS BIT(19) | ||
| 62 | # define OTGSC_ASVIS BIT(18) | ||
| 63 | # define OTGSC_AVVIS BIT(17) | ||
| 64 | # define OTGSC_IDIS BIT(16) | ||
| 65 | # define OTGSC_DPS BIT(14) | ||
| 66 | # define OTGSC_1MST BIT(13) | ||
| 67 | # define OTGSC_BSE BIT(12) | ||
| 68 | # define OTGSC_BSV BIT(11) | ||
| 69 | # define OTGSC_ASV BIT(10) | ||
| 70 | # define OTGSC_AVV BIT(9) | ||
| 71 | # define OTGSC_ID BIT(8) | ||
| 72 | # define OTGSC_HABA BIT(7) | ||
| 73 | # define OTGSC_HADP BIT(6) | ||
| 74 | # define OTGSC_IDPU BIT(5) | ||
| 75 | # define OTGSC_DP BIT(4) | ||
| 76 | # define OTGSC_OT BIT(3) | ||
| 77 | # define OTGSC_HAAR BIT(2) | ||
| 78 | # define OTGSC_VC BIT(1) | ||
| 79 | # define OTGSC_VD BIT(0) | ||
| 80 | # define OTGSC_INTEN_MASK (0x7f << 24) | ||
| 81 | # define OTGSC_INTSTS_MASK (0x7f << 16) | ||
| 82 | #define CI_USBMODE 0xf8 | ||
| 83 | # define USBMODE_CM (BIT(1) | BIT(0)) | ||
| 84 | # define USBMODE_IDLE 0 | ||
| 85 | # define USBMODE_DEVICE 0x2 | ||
| 86 | # define USBMODE_HOST 0x3 | ||
| 87 | |||
| 88 | #define INTR_DUMMY_MASK (USBSTS_SLI | USBSTS_URI | USBSTS_PCI) | ||
| 89 | |||
| 90 | struct otg_hsm { | ||
| 91 | /* Input */ | ||
| 92 | int a_bus_resume; | ||
| 93 | int a_bus_suspend; | ||
| 94 | int a_conn; | ||
| 95 | int a_sess_vld; | ||
| 96 | int a_srp_det; | ||
| 97 | int a_vbus_vld; | ||
| 98 | int b_bus_resume; | ||
| 99 | int b_bus_suspend; | ||
| 100 | int b_conn; | ||
| 101 | int b_se0_srp; | ||
| 102 | int b_sess_end; | ||
| 103 | int b_sess_vld; | ||
| 104 | int id; | ||
| 105 | |||
| 106 | /* Internal variables */ | ||
| 107 | int a_set_b_hnp_en; | ||
| 108 | int b_srp_done; | ||
| 109 | int b_hnp_enable; | ||
| 110 | |||
| 111 | /* Timeout indicator for timers */ | ||
| 112 | int a_wait_vrise_tmout; | ||
| 113 | int a_wait_bcon_tmout; | ||
| 114 | int a_aidl_bdis_tmout; | ||
| 115 | int b_ase0_brst_tmout; | ||
| 116 | int b_bus_suspend_tmout; | ||
| 117 | int b_srp_res_tmout; | ||
| 118 | |||
| 119 | /* Informative variables */ | ||
| 120 | int a_bus_drop; | ||
| 121 | int a_bus_req; | ||
| 122 | int a_clr_err; | ||
| 123 | int a_suspend_req; | ||
| 124 | int b_bus_req; | ||
| 125 | |||
| 126 | /* Output */ | ||
| 127 | int drv_vbus; | ||
| 128 | int loc_conn; | ||
| 129 | int loc_sof; | ||
| 130 | |||
| 131 | /* Others */ | ||
| 132 | int b_bus_suspend_vld; | ||
| 133 | }; | ||
| 134 | |||
| 135 | #define TA_WAIT_VRISE 100 | ||
| 136 | #define TA_WAIT_BCON 30000 | ||
| 137 | #define TA_AIDL_BDIS 15000 | ||
| 138 | #define TB_ASE0_BRST 5000 | ||
| 139 | #define TB_SE0_SRP 2 | ||
| 140 | #define TB_SRP_RES 100 | ||
| 141 | #define TB_BUS_SUSPEND 500 | ||
| 142 | |||
| 143 | struct langwell_otg_timer { | ||
| 144 | unsigned long expires; /* Number of count increase to timeout */ | ||
| 145 | unsigned long count; /* Tick counter */ | ||
| 146 | void (*function)(unsigned long); /* Timeout function */ | ||
| 147 | unsigned long data; /* Data passed to function */ | ||
| 148 | struct list_head list; | ||
| 149 | }; | ||
| 150 | |||
| 151 | struct langwell_otg { | ||
| 152 | struct otg_transceiver otg; | ||
| 153 | struct otg_hsm hsm; | ||
| 154 | void __iomem *regs; | ||
| 155 | unsigned region; | ||
| 156 | struct pci_driver *host_ops; | ||
| 157 | struct pci_driver *client_ops; | ||
| 158 | struct pci_dev *pdev; | ||
| 159 | struct work_struct work; | ||
| 160 | struct workqueue_struct *qwork; | ||
| 161 | spinlock_t lock; | ||
| 162 | spinlock_t wq_lock; | ||
| 163 | }; | ||
| 164 | |||
| 165 | static inline struct langwell_otg *otg_to_langwell(struct otg_transceiver *otg) | ||
| 166 | { | ||
| 167 | return container_of(otg, struct langwell_otg, otg); | ||
| 168 | } | ||
| 169 | |||
| 170 | #ifdef DEBUG | ||
| 171 | #define otg_dbg(fmt, args...) \ | ||
| 172 | printk(KERN_DEBUG fmt , ## args) | ||
| 173 | #else | ||
| 174 | #define otg_dbg(fmt, args...) \ | ||
| 175 | do { } while (0) | ||
| 176 | #endif /* DEBUG */ | ||
| 177 | #endif /* __LANGWELL_OTG_H__ */ | ||
diff --git a/include/linux/usb/serial.h b/include/linux/usb/serial.h index 44801d26a37a..0ec50ba62139 100644 --- a/include/linux/usb/serial.h +++ b/include/linux/usb/serial.h | |||
| @@ -317,7 +317,8 @@ extern int usb_serial_generic_register(int debug); | |||
| 317 | extern void usb_serial_generic_deregister(void); | 317 | extern void usb_serial_generic_deregister(void); |
| 318 | extern void usb_serial_generic_resubmit_read_urb(struct usb_serial_port *port, | 318 | extern void usb_serial_generic_resubmit_read_urb(struct usb_serial_port *port, |
| 319 | gfp_t mem_flags); | 319 | gfp_t mem_flags); |
| 320 | extern int usb_serial_handle_sysrq_char(struct usb_serial_port *port, | 320 | extern int usb_serial_handle_sysrq_char(struct tty_struct *tty, |
| 321 | struct usb_serial_port *port, | ||
| 321 | unsigned int ch); | 322 | unsigned int ch); |
| 322 | extern int usb_serial_handle_break(struct usb_serial_port *port); | 323 | extern int usb_serial_handle_break(struct usb_serial_port *port); |
| 323 | 324 | ||
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h index 8a025d510904..74f16876f38d 100644 --- a/include/linux/videodev2.h +++ b/include/linux/videodev2.h | |||
| @@ -318,6 +318,8 @@ struct v4l2_pix_format { | |||
| 318 | /* see http://www.siliconimaging.com/RGB%20Bayer.htm */ | 318 | /* see http://www.siliconimaging.com/RGB%20Bayer.htm */ |
| 319 | #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG.. GRGR.. */ | 319 | #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG.. GRGR.. */ |
| 320 | #define V4L2_PIX_FMT_SGBRG8 v4l2_fourcc('G', 'B', 'R', 'G') /* 8 GBGB.. RGRG.. */ | 320 | #define V4L2_PIX_FMT_SGBRG8 v4l2_fourcc('G', 'B', 'R', 'G') /* 8 GBGB.. RGRG.. */ |
| 321 | #define V4L2_PIX_FMT_SGRBG8 v4l2_fourcc('G', 'R', 'B', 'G') /* 8 GRGR.. BGBG.. */ | ||
| 322 | |||
| 321 | /* | 323 | /* |
| 322 | * 10bit raw bayer, expanded to 16 bits | 324 | * 10bit raw bayer, expanded to 16 bits |
| 323 | * xxxxrrrrrrrrrrxxxxgggggggggg xxxxggggggggggxxxxbbbbbbbbbb... | 325 | * xxxxrrrrrrrrrrxxxxgggggggggg xxxxggggggggggxxxxbbbbbbbbbb... |
| @@ -336,6 +338,7 @@ struct v4l2_pix_format { | |||
| 336 | /* Vendor-specific formats */ | 338 | /* Vendor-specific formats */ |
| 337 | #define V4L2_PIX_FMT_WNVA v4l2_fourcc('W', 'N', 'V', 'A') /* Winnov hw compress */ | 339 | #define V4L2_PIX_FMT_WNVA v4l2_fourcc('W', 'N', 'V', 'A') /* Winnov hw compress */ |
| 338 | #define V4L2_PIX_FMT_SN9C10X v4l2_fourcc('S', '9', '1', '0') /* SN9C10x compression */ | 340 | #define V4L2_PIX_FMT_SN9C10X v4l2_fourcc('S', '9', '1', '0') /* SN9C10x compression */ |
| 341 | #define V4L2_PIX_FMT_SN9C20X_I420 v4l2_fourcc('S', '9', '2', '0') /* SN9C20x YUV 4:2:0 */ | ||
| 339 | #define V4L2_PIX_FMT_PWC1 v4l2_fourcc('P', 'W', 'C', '1') /* pwc older webcam */ | 342 | #define V4L2_PIX_FMT_PWC1 v4l2_fourcc('P', 'W', 'C', '1') /* pwc older webcam */ |
| 340 | #define V4L2_PIX_FMT_PWC2 v4l2_fourcc('P', 'W', 'C', '2') /* pwc newer webcam */ | 343 | #define V4L2_PIX_FMT_PWC2 v4l2_fourcc('P', 'W', 'C', '2') /* pwc newer webcam */ |
| 341 | #define V4L2_PIX_FMT_ET61X251 v4l2_fourcc('E', '6', '2', '5') /* ET61X251 compression */ | 344 | #define V4L2_PIX_FMT_ET61X251 v4l2_fourcc('E', '6', '2', '5') /* ET61X251 compression */ |
diff --git a/include/linux/virtio_blk.h b/include/linux/virtio_blk.h index be7d255fc7cf..8dab9f2b8832 100644 --- a/include/linux/virtio_blk.h +++ b/include/linux/virtio_blk.h | |||
| @@ -20,8 +20,7 @@ | |||
| 20 | 20 | ||
| 21 | #define VIRTIO_BLK_ID_BYTES (sizeof(__u16[256])) /* IDENTIFY DATA */ | 21 | #define VIRTIO_BLK_ID_BYTES (sizeof(__u16[256])) /* IDENTIFY DATA */ |
| 22 | 22 | ||
| 23 | struct virtio_blk_config | 23 | struct virtio_blk_config { |
| 24 | { | ||
| 25 | /* The capacity (in 512-byte sectors). */ | 24 | /* The capacity (in 512-byte sectors). */ |
| 26 | __u64 capacity; | 25 | __u64 capacity; |
| 27 | /* The maximum segment size (if VIRTIO_BLK_F_SIZE_MAX) */ | 26 | /* The maximum segment size (if VIRTIO_BLK_F_SIZE_MAX) */ |
| @@ -50,8 +49,7 @@ struct virtio_blk_config | |||
| 50 | #define VIRTIO_BLK_T_BARRIER 0x80000000 | 49 | #define VIRTIO_BLK_T_BARRIER 0x80000000 |
| 51 | 50 | ||
| 52 | /* This is the first element of the read scatter-gather list. */ | 51 | /* This is the first element of the read scatter-gather list. */ |
| 53 | struct virtio_blk_outhdr | 52 | struct virtio_blk_outhdr { |
| 54 | { | ||
| 55 | /* VIRTIO_BLK_T* */ | 53 | /* VIRTIO_BLK_T* */ |
| 56 | __u32 type; | 54 | __u32 type; |
| 57 | /* io priority. */ | 55 | /* io priority. */ |
diff --git a/include/linux/virtio_config.h b/include/linux/virtio_config.h index 99f514575f6a..e547e3c8ee9a 100644 --- a/include/linux/virtio_config.h +++ b/include/linux/virtio_config.h | |||
| @@ -79,8 +79,7 @@ | |||
| 79 | * the dev->feature bits if it wants. | 79 | * the dev->feature bits if it wants. |
| 80 | */ | 80 | */ |
| 81 | typedef void vq_callback_t(struct virtqueue *); | 81 | typedef void vq_callback_t(struct virtqueue *); |
| 82 | struct virtio_config_ops | 82 | struct virtio_config_ops { |
| 83 | { | ||
| 84 | void (*get)(struct virtio_device *vdev, unsigned offset, | 83 | void (*get)(struct virtio_device *vdev, unsigned offset, |
| 85 | void *buf, unsigned len); | 84 | void *buf, unsigned len); |
| 86 | void (*set)(struct virtio_device *vdev, unsigned offset, | 85 | void (*set)(struct virtio_device *vdev, unsigned offset, |
diff --git a/include/linux/virtio_net.h b/include/linux/virtio_net.h index cec79adbe3ea..d8dd539c9f48 100644 --- a/include/linux/virtio_net.h +++ b/include/linux/virtio_net.h | |||
| @@ -27,11 +27,11 @@ | |||
| 27 | #define VIRTIO_NET_F_CTRL_VQ 17 /* Control channel available */ | 27 | #define VIRTIO_NET_F_CTRL_VQ 17 /* Control channel available */ |
| 28 | #define VIRTIO_NET_F_CTRL_RX 18 /* Control channel RX mode support */ | 28 | #define VIRTIO_NET_F_CTRL_RX 18 /* Control channel RX mode support */ |
| 29 | #define VIRTIO_NET_F_CTRL_VLAN 19 /* Control channel VLAN filtering */ | 29 | #define VIRTIO_NET_F_CTRL_VLAN 19 /* Control channel VLAN filtering */ |
| 30 | #define VIRTIO_NET_F_CTRL_RX_EXTRA 20 /* Extra RX mode control support */ | ||
| 30 | 31 | ||
| 31 | #define VIRTIO_NET_S_LINK_UP 1 /* Link is up */ | 32 | #define VIRTIO_NET_S_LINK_UP 1 /* Link is up */ |
| 32 | 33 | ||
| 33 | struct virtio_net_config | 34 | struct virtio_net_config { |
| 34 | { | ||
| 35 | /* The config defining mac address (if VIRTIO_NET_F_MAC) */ | 35 | /* The config defining mac address (if VIRTIO_NET_F_MAC) */ |
| 36 | __u8 mac[6]; | 36 | __u8 mac[6]; |
| 37 | /* See VIRTIO_NET_F_STATUS and VIRTIO_NET_S_* above */ | 37 | /* See VIRTIO_NET_F_STATUS and VIRTIO_NET_S_* above */ |
| @@ -40,8 +40,7 @@ struct virtio_net_config | |||
| 40 | 40 | ||
| 41 | /* This is the first element of the scatter-gather list. If you don't | 41 | /* This is the first element of the scatter-gather list. If you don't |
| 42 | * specify GSO or CSUM features, you can simply ignore the header. */ | 42 | * specify GSO or CSUM features, you can simply ignore the header. */ |
| 43 | struct virtio_net_hdr | 43 | struct virtio_net_hdr { |
| 44 | { | ||
| 45 | #define VIRTIO_NET_HDR_F_NEEDS_CSUM 1 // Use csum_start, csum_offset | 44 | #define VIRTIO_NET_HDR_F_NEEDS_CSUM 1 // Use csum_start, csum_offset |
| 46 | __u8 flags; | 45 | __u8 flags; |
| 47 | #define VIRTIO_NET_HDR_GSO_NONE 0 // Not a GSO frame | 46 | #define VIRTIO_NET_HDR_GSO_NONE 0 // Not a GSO frame |
| @@ -81,14 +80,19 @@ typedef __u8 virtio_net_ctrl_ack; | |||
| 81 | #define VIRTIO_NET_ERR 1 | 80 | #define VIRTIO_NET_ERR 1 |
| 82 | 81 | ||
| 83 | /* | 82 | /* |
| 84 | * Control the RX mode, ie. promisucous and allmulti. PROMISC and | 83 | * Control the RX mode, ie. promisucous, allmulti, etc... |
| 85 | * ALLMULTI commands require an "out" sg entry containing a 1 byte | 84 | * All commands require an "out" sg entry containing a 1 byte |
| 86 | * state value, zero = disable, non-zero = enable. These commands | 85 | * state value, zero = disable, non-zero = enable. Commands |
| 87 | * are supported with the VIRTIO_NET_F_CTRL_RX feature. | 86 | * 0 and 1 are supported with the VIRTIO_NET_F_CTRL_RX feature. |
| 87 | * Commands 2-5 are added with VIRTIO_NET_F_CTRL_RX_EXTRA. | ||
| 88 | */ | 88 | */ |
| 89 | #define VIRTIO_NET_CTRL_RX 0 | 89 | #define VIRTIO_NET_CTRL_RX 0 |
| 90 | #define VIRTIO_NET_CTRL_RX_PROMISC 0 | 90 | #define VIRTIO_NET_CTRL_RX_PROMISC 0 |
| 91 | #define VIRTIO_NET_CTRL_RX_ALLMULTI 1 | 91 | #define VIRTIO_NET_CTRL_RX_ALLMULTI 1 |
| 92 | #define VIRTIO_NET_CTRL_RX_ALLUNI 2 | ||
| 93 | #define VIRTIO_NET_CTRL_RX_NOMULTI 3 | ||
| 94 | #define VIRTIO_NET_CTRL_RX_NOUNI 4 | ||
| 95 | #define VIRTIO_NET_CTRL_RX_NOBCAST 5 | ||
| 92 | 96 | ||
| 93 | /* | 97 | /* |
| 94 | * Control the MAC filter table. | 98 | * Control the MAC filter table. |
diff --git a/include/linux/virtio_ring.h b/include/linux/virtio_ring.h index 693e0ec5afa6..e4d144b132b5 100644 --- a/include/linux/virtio_ring.h +++ b/include/linux/virtio_ring.h | |||
| @@ -30,8 +30,7 @@ | |||
| 30 | #define VIRTIO_RING_F_INDIRECT_DESC 28 | 30 | #define VIRTIO_RING_F_INDIRECT_DESC 28 |
| 31 | 31 | ||
| 32 | /* Virtio ring descriptors: 16 bytes. These can chain together via "next". */ | 32 | /* Virtio ring descriptors: 16 bytes. These can chain together via "next". */ |
| 33 | struct vring_desc | 33 | struct vring_desc { |
| 34 | { | ||
| 35 | /* Address (guest-physical). */ | 34 | /* Address (guest-physical). */ |
| 36 | __u64 addr; | 35 | __u64 addr; |
| 37 | /* Length. */ | 36 | /* Length. */ |
| @@ -42,24 +41,21 @@ struct vring_desc | |||
| 42 | __u16 next; | 41 | __u16 next; |
| 43 | }; | 42 | }; |
| 44 | 43 | ||
| 45 | struct vring_avail | 44 | struct vring_avail { |
| 46 | { | ||
| 47 | __u16 flags; | 45 | __u16 flags; |
| 48 | __u16 idx; | 46 | __u16 idx; |
| 49 | __u16 ring[]; | 47 | __u16 ring[]; |
| 50 | }; | 48 | }; |
| 51 | 49 | ||
| 52 | /* u32 is used here for ids for padding reasons. */ | 50 | /* u32 is used here for ids for padding reasons. */ |
| 53 | struct vring_used_elem | 51 | struct vring_used_elem { |
| 54 | { | ||
| 55 | /* Index of start of used descriptor chain. */ | 52 | /* Index of start of used descriptor chain. */ |
| 56 | __u32 id; | 53 | __u32 id; |
| 57 | /* Total length of the descriptor chain which was used (written to) */ | 54 | /* Total length of the descriptor chain which was used (written to) */ |
| 58 | __u32 len; | 55 | __u32 len; |
| 59 | }; | 56 | }; |
| 60 | 57 | ||
| 61 | struct vring_used | 58 | struct vring_used { |
| 62 | { | ||
| 63 | __u16 flags; | 59 | __u16 flags; |
| 64 | __u16 idx; | 60 | __u16 idx; |
| 65 | struct vring_used_elem ring[]; | 61 | struct vring_used_elem ring[]; |
diff --git a/include/linux/wait.h b/include/linux/wait.h index 6788e1a4d4ca..cf3c2f5dba51 100644 --- a/include/linux/wait.h +++ b/include/linux/wait.h | |||
| @@ -77,7 +77,14 @@ struct task_struct; | |||
| 77 | #define __WAIT_BIT_KEY_INITIALIZER(word, bit) \ | 77 | #define __WAIT_BIT_KEY_INITIALIZER(word, bit) \ |
| 78 | { .flags = word, .bit_nr = bit, } | 78 | { .flags = word, .bit_nr = bit, } |
| 79 | 79 | ||
| 80 | extern void init_waitqueue_head(wait_queue_head_t *q); | 80 | extern void __init_waitqueue_head(wait_queue_head_t *q, struct lock_class_key *); |
| 81 | |||
| 82 | #define init_waitqueue_head(q) \ | ||
| 83 | do { \ | ||
| 84 | static struct lock_class_key __key; \ | ||
| 85 | \ | ||
| 86 | __init_waitqueue_head((q), &__key); \ | ||
| 87 | } while (0) | ||
| 81 | 88 | ||
| 82 | #ifdef CONFIG_LOCKDEP | 89 | #ifdef CONFIG_LOCKDEP |
| 83 | # define __WAIT_QUEUE_HEAD_INIT_ONSTACK(name) \ | 90 | # define __WAIT_QUEUE_HEAD_INIT_ONSTACK(name) \ |
