diff options
| author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-02-18 12:09:09 -0500 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-02-18 12:09:09 -0500 |
| commit | 51d52b26e1d88ce79f1053f1b0f7f4d43a98d26d (patch) | |
| tree | fe0d213a91f49fd4340728a4f5bf34f60e3fba8c /include/linux | |
| parent | c600558668e4ebd0fab6bf1d90baaf95bc43f9d5 (diff) | |
| parent | 6d0abeca3242a88cab8232e4acd7e2bf088f3bc2 (diff) | |
Merge 3.14-rc3 into tty-next
This is for the fixes in that release, we want them here too.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/bio.h | 12 | ||||
| -rw-r--r-- | include/linux/blk-mq.h | 9 | ||||
| -rw-r--r-- | include/linux/blkdev.h | 11 | ||||
| -rw-r--r-- | include/linux/can/skb.h | 38 | ||||
| -rw-r--r-- | include/linux/compiler-gcc4.h | 6 | ||||
| -rw-r--r-- | include/linux/gpio/consumer.h | 4 | ||||
| -rw-r--r-- | include/linux/hyperv.h | 2 | ||||
| -rw-r--r-- | include/linux/interrupt.h | 5 | ||||
| -rw-r--r-- | include/linux/mlx5/driver.h | 3 | ||||
| -rw-r--r-- | include/linux/of.h | 153 | ||||
| -rw-r--r-- | include/linux/of_device.h | 4 | ||||
| -rw-r--r-- | include/linux/phy/phy.h | 14 | ||||
| -rw-r--r-- | include/linux/smp.h | 3 | ||||
| -rw-r--r-- | include/linux/spi/spi.h | 7 | ||||
| -rw-r--r-- | include/linux/usb.h | 2 |
15 files changed, 181 insertions, 92 deletions
diff --git a/include/linux/bio.h b/include/linux/bio.h index 70654521dab6..5a4d39b4686b 100644 --- a/include/linux/bio.h +++ b/include/linux/bio.h | |||
| @@ -250,6 +250,17 @@ static inline unsigned bio_segments(struct bio *bio) | |||
| 250 | struct bio_vec bv; | 250 | struct bio_vec bv; |
| 251 | struct bvec_iter iter; | 251 | struct bvec_iter iter; |
| 252 | 252 | ||
| 253 | /* | ||
| 254 | * We special case discard/write same, because they interpret bi_size | ||
| 255 | * differently: | ||
| 256 | */ | ||
| 257 | |||
| 258 | if (bio->bi_rw & REQ_DISCARD) | ||
| 259 | return 1; | ||
| 260 | |||
| 261 | if (bio->bi_rw & REQ_WRITE_SAME) | ||
| 262 | return 1; | ||
| 263 | |||
| 253 | bio_for_each_segment(bv, bio, iter) | 264 | bio_for_each_segment(bv, bio, iter) |
| 254 | segs++; | 265 | segs++; |
| 255 | 266 | ||
| @@ -332,6 +343,7 @@ extern struct bio *bio_clone_fast(struct bio *, gfp_t, struct bio_set *); | |||
| 332 | extern struct bio *bio_clone_bioset(struct bio *, gfp_t, struct bio_set *bs); | 343 | extern struct bio *bio_clone_bioset(struct bio *, gfp_t, struct bio_set *bs); |
| 333 | 344 | ||
| 334 | extern struct bio_set *fs_bio_set; | 345 | extern struct bio_set *fs_bio_set; |
| 346 | unsigned int bio_integrity_tag_size(struct bio *bio); | ||
| 335 | 347 | ||
| 336 | static inline struct bio *bio_alloc(gfp_t gfp_mask, unsigned int nr_iovecs) | 348 | static inline struct bio *bio_alloc(gfp_t gfp_mask, unsigned int nr_iovecs) |
| 337 | { | 349 | { |
diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h index 161b23105b1e..18ba8a627f46 100644 --- a/include/linux/blk-mq.h +++ b/include/linux/blk-mq.h | |||
| @@ -83,6 +83,8 @@ struct blk_mq_ops { | |||
| 83 | */ | 83 | */ |
| 84 | rq_timed_out_fn *timeout; | 84 | rq_timed_out_fn *timeout; |
| 85 | 85 | ||
| 86 | softirq_done_fn *complete; | ||
| 87 | |||
| 86 | /* | 88 | /* |
| 87 | * Override for hctx allocations (should probably go) | 89 | * Override for hctx allocations (should probably go) |
| 88 | */ | 90 | */ |
| @@ -119,11 +121,12 @@ void blk_mq_init_commands(struct request_queue *, void (*init)(void *data, struc | |||
| 119 | 121 | ||
| 120 | void blk_mq_flush_plug_list(struct blk_plug *plug, bool from_schedule); | 122 | void blk_mq_flush_plug_list(struct blk_plug *plug, bool from_schedule); |
| 121 | 123 | ||
| 122 | void blk_mq_insert_request(struct request_queue *, struct request *, bool); | 124 | void blk_mq_insert_request(struct request_queue *, struct request *, |
| 125 | bool, bool); | ||
| 123 | void blk_mq_run_queues(struct request_queue *q, bool async); | 126 | void blk_mq_run_queues(struct request_queue *q, bool async); |
| 124 | void blk_mq_free_request(struct request *rq); | 127 | void blk_mq_free_request(struct request *rq); |
| 125 | bool blk_mq_can_queue(struct blk_mq_hw_ctx *); | 128 | bool blk_mq_can_queue(struct blk_mq_hw_ctx *); |
| 126 | struct request *blk_mq_alloc_request(struct request_queue *q, int rw, gfp_t gfp, bool reserved); | 129 | struct request *blk_mq_alloc_request(struct request_queue *q, int rw, gfp_t gfp); |
| 127 | struct request *blk_mq_alloc_reserved_request(struct request_queue *q, int rw, gfp_t gfp); | 130 | struct request *blk_mq_alloc_reserved_request(struct request_queue *q, int rw, gfp_t gfp); |
| 128 | struct request *blk_mq_rq_from_tag(struct request_queue *q, unsigned int tag); | 131 | struct request *blk_mq_rq_from_tag(struct request_queue *q, unsigned int tag); |
| 129 | 132 | ||
| @@ -133,6 +136,8 @@ void blk_mq_free_single_hw_queue(struct blk_mq_hw_ctx *, unsigned int); | |||
| 133 | 136 | ||
| 134 | void blk_mq_end_io(struct request *rq, int error); | 137 | void blk_mq_end_io(struct request *rq, int error); |
| 135 | 138 | ||
| 139 | void blk_mq_complete_request(struct request *rq); | ||
| 140 | |||
| 136 | void blk_mq_stop_hw_queue(struct blk_mq_hw_ctx *hctx); | 141 | void blk_mq_stop_hw_queue(struct blk_mq_hw_ctx *hctx); |
| 137 | void blk_mq_start_hw_queue(struct blk_mq_hw_ctx *hctx); | 142 | void blk_mq_start_hw_queue(struct blk_mq_hw_ctx *hctx); |
| 138 | void blk_mq_stop_hw_queues(struct request_queue *q); | 143 | void blk_mq_stop_hw_queues(struct request_queue *q); |
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 8678c4322b44..4afa4f8f6090 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
| @@ -98,7 +98,7 @@ struct request { | |||
| 98 | struct list_head queuelist; | 98 | struct list_head queuelist; |
| 99 | union { | 99 | union { |
| 100 | struct call_single_data csd; | 100 | struct call_single_data csd; |
| 101 | struct work_struct mq_flush_data; | 101 | struct work_struct mq_flush_work; |
| 102 | }; | 102 | }; |
| 103 | 103 | ||
| 104 | struct request_queue *q; | 104 | struct request_queue *q; |
| @@ -448,13 +448,8 @@ struct request_queue { | |||
| 448 | unsigned long flush_pending_since; | 448 | unsigned long flush_pending_since; |
| 449 | struct list_head flush_queue[2]; | 449 | struct list_head flush_queue[2]; |
| 450 | struct list_head flush_data_in_flight; | 450 | struct list_head flush_data_in_flight; |
| 451 | union { | 451 | struct request *flush_rq; |
| 452 | struct request flush_rq; | 452 | spinlock_t mq_flush_lock; |
| 453 | struct { | ||
| 454 | spinlock_t mq_flush_lock; | ||
| 455 | struct work_struct mq_flush_work; | ||
| 456 | }; | ||
| 457 | }; | ||
| 458 | 453 | ||
| 459 | struct mutex sysfs_lock; | 454 | struct mutex sysfs_lock; |
| 460 | 455 | ||
diff --git a/include/linux/can/skb.h b/include/linux/can/skb.h index 2f0543f7510c..f9bbbb472663 100644 --- a/include/linux/can/skb.h +++ b/include/linux/can/skb.h | |||
| @@ -11,7 +11,9 @@ | |||
| 11 | #define CAN_SKB_H | 11 | #define CAN_SKB_H |
| 12 | 12 | ||
| 13 | #include <linux/types.h> | 13 | #include <linux/types.h> |
| 14 | #include <linux/skbuff.h> | ||
| 14 | #include <linux/can.h> | 15 | #include <linux/can.h> |
| 16 | #include <net/sock.h> | ||
| 15 | 17 | ||
| 16 | /* | 18 | /* |
| 17 | * The struct can_skb_priv is used to transport additional information along | 19 | * The struct can_skb_priv is used to transport additional information along |
| @@ -42,4 +44,40 @@ static inline void can_skb_reserve(struct sk_buff *skb) | |||
| 42 | skb_reserve(skb, sizeof(struct can_skb_priv)); | 44 | skb_reserve(skb, sizeof(struct can_skb_priv)); |
| 43 | } | 45 | } |
| 44 | 46 | ||
| 47 | static inline void can_skb_destructor(struct sk_buff *skb) | ||
| 48 | { | ||
| 49 | sock_put(skb->sk); | ||
| 50 | } | ||
| 51 | |||
| 52 | static inline void can_skb_set_owner(struct sk_buff *skb, struct sock *sk) | ||
| 53 | { | ||
| 54 | if (sk) { | ||
| 55 | sock_hold(sk); | ||
| 56 | skb->destructor = can_skb_destructor; | ||
| 57 | skb->sk = sk; | ||
| 58 | } | ||
| 59 | } | ||
| 60 | |||
| 61 | /* | ||
| 62 | * returns an unshared skb owned by the original sock to be echo'ed back | ||
| 63 | */ | ||
| 64 | static inline struct sk_buff *can_create_echo_skb(struct sk_buff *skb) | ||
| 65 | { | ||
| 66 | if (skb_shared(skb)) { | ||
| 67 | struct sk_buff *nskb = skb_clone(skb, GFP_ATOMIC); | ||
| 68 | |||
| 69 | if (likely(nskb)) { | ||
| 70 | can_skb_set_owner(nskb, skb->sk); | ||
| 71 | consume_skb(skb); | ||
| 72 | return nskb; | ||
| 73 | } else { | ||
| 74 | kfree_skb(skb); | ||
| 75 | return NULL; | ||
| 76 | } | ||
| 77 | } | ||
| 78 | |||
| 79 | /* we can assume to have an unshared skb with proper owner */ | ||
| 80 | return skb; | ||
| 81 | } | ||
| 82 | |||
| 45 | #endif /* CAN_SKB_H */ | 83 | #endif /* CAN_SKB_H */ |
diff --git a/include/linux/compiler-gcc4.h b/include/linux/compiler-gcc4.h index ded429966c1f..2507fd2a1eb4 100644 --- a/include/linux/compiler-gcc4.h +++ b/include/linux/compiler-gcc4.h | |||
| @@ -75,11 +75,7 @@ | |||
| 75 | * | 75 | * |
| 76 | * (asm goto is automatically volatile - the naming reflects this.) | 76 | * (asm goto is automatically volatile - the naming reflects this.) |
| 77 | */ | 77 | */ |
| 78 | #if GCC_VERSION <= 40801 | 78 | #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0) |
| 79 | # define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0) | ||
| 80 | |||
