diff options
Diffstat (limited to 'include/linux')
31 files changed, 274 insertions, 118 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/ceph/ceph_fs.h b/include/linux/ceph/ceph_fs.h index 2623cffc73a1..25bfb0eff772 100644 --- a/include/linux/ceph/ceph_fs.h +++ b/include/linux/ceph/ceph_fs.h | |||
| @@ -373,8 +373,9 @@ extern const char *ceph_mds_op_name(int op); | |||
| 373 | /* | 373 | /* |
| 374 | * Ceph setxattr request flags. | 374 | * Ceph setxattr request flags. |
| 375 | */ | 375 | */ |
| 376 | #define CEPH_XATTR_CREATE 1 | 376 | #define CEPH_XATTR_CREATE (1 << 0) |
| 377 | #define CEPH_XATTR_REPLACE 2 | 377 | #define CEPH_XATTR_REPLACE (1 << 1) |
| 378 | #define CEPH_XATTR_REMOVE (1 << 31) | ||
| 378 | 379 | ||
| 379 | union ceph_mds_request_args { | 380 | union ceph_mds_request_args { |
| 380 | struct { | 381 | struct { |
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h index 5c097596104b..9450f025fe0c 100644 --- a/include/linux/cgroup.h +++ b/include/linux/cgroup.h | |||
| @@ -166,6 +166,8 @@ struct cgroup { | |||
| 166 | * | 166 | * |
| 167 | * The ID of the root cgroup is always 0, and a new cgroup | 167 | * The ID of the root cgroup is always 0, and a new cgroup |
| 168 | * will be assigned with a smallest available ID. | 168 | * will be assigned with a smallest available ID. |
| 169 | * | ||
| 170 | * Allocating/Removing ID must be protected by cgroup_mutex. | ||
| 169 | */ | 171 | */ |
| 170 | int id; | 172 | int id; |
| 171 | 173 | ||
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 | #else | ||
| 81 | # define asm_volatile_goto(x...) do { asm goto(x); } while (0) | ||
| 82 | #endif | ||
| 83 | 79 | ||
| 84 | #ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP | 80 | #ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP |
| 85 | #if GCC_VERSION >= 40400 | 81 | #if GCC_VERSION >= 40400 |
diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h index dfac5ed31120..f886985a28b2 100644 --- a/include/linux/dma-buf.h +++ b/include/linux/dma-buf.h | |||
| @@ -171,7 +171,7 @@ struct dma_buf *dma_buf_export_named(void *priv, const struct dma_buf_ops *ops, | |||
| 171 | size_t size, int flags, const char *); | 171 | size_t size, int flags, const char *); |
| 172 | 172 | ||
| 173 | #define dma_buf_export(priv, ops, size, flags) \ | 173 | #define dma_buf_export(priv, ops, size, flags) \ |
| 174 | dma_buf_export_named(priv, ops, size, flags, __FILE__) | 174 | dma_buf_export_named(priv, ops, size, flags, KBUILD_MODNAME) |
| 175 | 175 | ||
| 176 | int dma_buf_fd(struct dma_buf *dmabuf, int flags); | 176 | int dma_buf_fd(struct dma_buf *dmabuf, int flags); |
| 177 | struct dma_buf *dma_buf_get(int fd); | 177 | struct dma_buf *dma_buf_get(int fd); |
diff --git a/include/linux/fsnotify_backend.h b/include/linux/fsnotify_backend.h index 3d286ff49ab0..64cf3ef50696 100644 --- a/include/linux/fsnotify_backend.h +++ b/include/linux/fsnotify_backend.h | |||
| @@ -99,7 +99,7 @@ struct fsnotify_ops { | |||
| 99 | struct fsnotify_mark *inode_mark, | 99 | struct fsnotify_mark *inode_mark, |
| 100 | struct fsnotify_mark *vfsmount_mark, | 100 | struct fsnotify_mark *vfsmount_mark, |
| 101 | u32 mask, void *data, int data_type, | 101 | u32 mask, void *data, int data_type, |
| 102 | const unsigned char *file_name); | 102 | const unsigned char *file_name, u32 cookie); |
| 103 | void (*free_group_priv)(struct fsnotify_group *group); | 103 | void (*free_group_priv)(struct fsnotify_group *group); |
| 104 | void (*freeing_mark)(struct fsnotify_mark *mark, struct fsnotify_group *group); | 104 | void (*freeing_mark)(struct fsnotify_mark *mark, struct fsnotify_group *group); |
| 105 | void (*free_event)(struct fsnotify_event *event); | 105 | void (*free_event)(struct fsnotify_event *event); |
| @@ -160,7 +160,7 @@ struct fsnotify_group { | |||
| 160 | 160 | ||
| 161 | struct fasync_struct *fsn_fa; /* async notification */ | 161 | struct fasync_struct *fsn_fa; /* async notification */ |
| 162 | 162 | ||
| 163 | struct fsnotify_event overflow_event; /* Event we queue when the | 163 | struct fsnotify_event *overflow_event; /* Event we queue when the |
| 164 | * notification list is too | 164 | * notification list is too |
| 165 | * full */ | 165 | * full */ |
| 166 | 166 | ||
diff --git a/include/linux/gpio/consumer.h b/include/linux/gpio/consumer.h index 4d34dbbbad4d..7a8144fef406 100644 --- a/include/linux/gpio/consumer.h +++ b/include/linux/gpio/consumer.h | |||
| @@ -4,8 +4,6 @@ | |||
| 4 | #include <linux/err.h> | 4 | #include <linux/err.h> |
| 5 | #include <linux/kernel.h> | 5 | #include <linux/kernel.h> |
| 6 | 6 | ||
| 7 | #ifdef CONFIG_GPIOLIB | ||
| 8 | |||
| 9 | struct device; | 7 | struct device; |
| 10 | struct gpio_chip; | 8 | struct gpio_chip; |
| 11 | 9 | ||
| @@ -18,6 +16,8 @@ struct gpio_chip; | |||
| 18 | */ | 16 | */ |
| 19 | struct gpio_desc; | 17 | struct gpio_desc; |
| 20 | 18 | ||
| 19 | #ifdef CONFIG_GPIOLIB | ||
| 20 | |||
| 21 | /* Acquire and dispose GPIOs */ | 21 | /* Acquire and dispose GPIOs */ |
| 22 | struct gpio_desc *__must_check gpiod_get(struct device *dev, | 22 | struct gpio_desc *__must_check gpiod_get(struct device *dev, |
| 23 | const char *con_id); | 23 | const char *con_id); |
diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h index 15da677478dd..344883dce584 100644 --- a/include/linux/hyperv.h +++ b/include/linux/hyperv.h | |||
| @@ -875,7 +875,7 @@ struct vmbus_channel_relid_released { | |||
| 875 | struct vmbus_channel_initiate_contact { | 875 | struct vmbus_channel_initiate_contact { |
| 876 | struct vmbus_channel_message_header header; | 876 | struct vmbus_channel_message_header header; |
| 877 | u32 vmbus_version_requested; | 877 | u32 vmbus_version_requested; |
| 878 | u32 padding2; | 878 | u32 target_vcpu; /* The VCPU the host should respond to */ |
| 879 | u64 interrupt_page; | 879 | u64 interrupt_page; |
| 880 | u64 monitor_page1; | 880 | u64 monitor_page1; |
| 881 | u64 monitor_page2; | 881 | u64 monitor_page2; |
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index 0053adde0ed9..a2678d35b5a2 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h | |||
| @@ -158,6 +158,11 @@ devm_request_irq(struct device *dev, unsigned int irq, irq_handler_t handler, | |||
| 158 | devname, dev_id); | 158 | devname, dev_id); |
| 159 | } | 159 | } |
| 160 | 160 | ||
| 161 | extern int __must_check | ||
| 162 | devm_request_any_context_irq(struct device *dev, unsigned int irq, | ||
| 163 | irq_handler_t handler, unsigned long irqflags, | ||
| 164 | const char *devname, void *dev_id); | ||
| 165 | |||
| 161 | extern void devm_free_irq(struct device *dev, unsigned int irq, void *dev_id); | 166 | extern void devm_free_irq(struct device *dev, unsigned int irq, void *dev_id); |
| 162 | 167 | ||
| 163 | /* | 168 | /* |
diff --git a/include/linux/ipc_namespace.h b/include/linux/ipc_namespace.h index e7831d203737..35e7eca4e33b 100644 --- a/include/linux/ipc_namespace.h +++ b/include/linux/ipc_namespace.h | |||
| @@ -118,9 +118,7 @@ extern int mq_init_ns(struct ipc_namespace *ns); | |||
| 118 | * the new maximum will handle anyone else. I may have to revisit this | 118 | * the new maximum will handle anyone else. I may have to revisit this |
| 119 | * in the future. | 119 | * in the future. |
| 120 | */ | 120 | */ |
| 121 | #define MIN_QUEUESMAX 1 | ||
| 122 | #define DFLT_QUEUESMAX 256 | 121 | #define DFLT_QUEUESMAX 256 |
| 123 | #define HARD_QUEUESMAX 1024 | ||
| 124 | #define MIN_MSGMAX 1 | 122 | #define MIN_MSGMAX 1 |
| 125 | #define DFLT_MSG 10U | 123 | #define DFLT_MSG 10U |
| 126 | #define DFLT_MSGMAX 10 | 124 | #define DFLT_MSGMAX 10 |
diff --git a/include/linux/kernfs.h b/include/linux/kernfs.h index 5be9f0228a3b..d267623c28cf 100644 --- a/include/linux/kernfs.h +++ b/include/linux/kernfs.h | |||
| @@ -249,7 +249,8 @@ void kernfs_notify(struct kernfs_node *kn); | |||
| 249 | 249 | ||
| 250 | const void *kernfs_super_ns(struct super_block *sb); | 250 | const void *kernfs_super_ns(struct super_block *sb); |
| 251 | struct dentry *kernfs_mount_ns(struct file_system_type *fs_type, int flags, | 251 | struct dentry *kernfs_mount_ns(struct file_system_type *fs_type, int flags, |
| 252 | struct kernfs_root *root, const void *ns); | 252 | struct kernfs_root *root, bool *new_sb_created, |
| 253 | const void *ns); | ||
| 253 | void kernfs_kill_sb(struct super_block *sb); | 254 | void kernfs_kill_sb(struct super_block *sb); |
| 254 | 255 | ||
| 255 | void kernfs_init(void); | 256 | void kernfs_init(void); |
| @@ -317,7 +318,7 @@ static inline const void *kernfs_super_ns(struct super_block *sb) | |||
| 317 | 318 | ||
| 318 | static inline struct dentry * | 319 | static inline struct dentry * |
| 319 | kernfs_mount_ns(struct file_system_type *fs_type, int flags, | 320 | kernfs_mount_ns(struct file_system_type *fs_type, int flags, |
| 320 | struct kernfs_root *root, const void *ns) | 321 | struct kernfs_root *root, bool *new_sb_created, const void *ns) |
| 321 | { return ERR_PTR(-ENOSYS); } | 322 | { return ERR_PTR(-ENOSYS); } |
| 322 | 323 | ||
| 323 | static inline void kernfs_kill_sb(struct super_block *sb) { } | 324 | static inline void kernfs_kill_sb(struct super_block *sb) { } |
| @@ -368,9 +369,9 @@ static inline int kernfs_remove_by_name(struct kernfs_node *parent, | |||
| 368 | 369 | ||
| 369 | static inline struct dentry * | 370 | static inline struct dentry * |
| 370 | kernfs_mount(struct file_system_type *fs_type, int flags, | 371 | kernfs_mount(struct file_system_type *fs_type, int flags, |
| 371 | struct kernfs_root *root) | 372 | struct kernfs_root *root, bool *new_sb_created) |
| 372 | { | 373 | { |
| 373 | return kernfs_mount_ns(fs_type, flags, root, NULL); | 374 | return kernfs_mount_ns(fs_type, flags, root, new_sb_created, NULL); |
| 374 | } | 375 | } |
| 375 | 376 | ||
| 376 | #endif /* __LINUX_KERNFS_H */ | 377 | #endif /* __LINUX_KERNFS_H */ |
diff --git a/include/linux/mfd/max8997-private.h b/include/linux/mfd/max8997-private.h index ad1ae7f345ad..78c76cd4d37b 100644 --- a/include/linux/mfd/max8997-private.h +++ b/include/linux/mfd/max8997-private.h | |||
| @@ -387,7 +387,7 @@ struct max8997_dev { | |||
| 387 | struct i2c_client *muic; /* slave addr 0x4a */ | 387 | struct i2c_client *muic; /* slave addr 0x4a */ |
| 388 | struct mutex iolock; | 388 | struct mutex iolock; |
| 389 | 389 | ||
| 390 | int type; | 390 | unsigned long type; |
| 391 | struct platform_device *battery; /* battery control (not fuel gauge) */ | 391 | struct platform_device *battery; /* battery control (not fuel gauge) */ |
| 392 | 392 | ||
| 393 | int irq; | 393 | int irq; |
diff --git a/include/linux/mfd/max8998-private.h b/include/linux/mfd/max8998-private.h index 4ecb24b4b863..d68ada502ff3 100644 --- a/include/linux/mfd/max8998-private.h +++ b/include/linux/mfd/max8998-private.h | |||
| @@ -163,7 +163,7 @@ struct max8998_dev { | |||
| 163 | int ono; | 163 | int ono; |
| 164 | u8 irq_masks_cur[MAX8998_NUM_IRQ_REGS]; | 164 | u8 irq_masks_cur[MAX8998_NUM_IRQ_REGS]; |
| 165 | u8 irq_masks_cache[MAX8998_NUM_IRQ_REGS]; | 165 | u8 irq_masks_cache[MAX8998_NUM_IRQ_REGS]; |
| 166 | int type; | 166 | unsigned long type; |
| 167 | bool wakeup; | 167 | bool wakeup; |
| 168 | }; | 168 | }; |
| 169 | 169 | ||
diff --git a/include/linux/mfd/tps65217.h b/include/linux/mfd/tps65217.h index a5a7f0130e96..54b5458ec084 100644 --- a/include/linux/mfd/tps65217.h +++ b/include/linux/mfd/tps65217.h | |||
| @@ -252,7 +252,7 @@ struct tps65217_board { | |||
| 252 | struct tps65217 { | 252 | struct tps65217 { |
| 253 | struct device *dev; | 253 | struct device *dev; |
| 254 | struct tps65217_board *pdata; | 254 | struct tps65217_board *pdata; |
| 255 | unsigned int id; | 255 | unsigned long id; |
| 256 | struct regulator_desc desc[TPS65217_NUM_REGULATOR]; | 256 | struct regulator_desc desc[TPS65217_NUM_REGULATOR]; |
| 257 | struct regulator_dev *rdev[TPS65217_NUM_REGULATOR]; | 257 | struct regulator_dev *rdev[TPS65217_NUM_REGULATOR]; |
| 258 | struct regmap *regmap; | 258 | struct regmap *regmap; |
| @@ -263,7 +263,7 @@ static inline struct tps65217 *dev_to_tps65217(struct device *dev) | |||
| 263 | return dev_get_drvdata(dev); | 263 | return dev_get_drvdata(dev); |
| 264 | } | 264 | } |
| 265 | 265 | ||
| 266 | static inline int tps65217_chip_id(struct tps65217 *tps65217) | 266 | static inline unsigned long tps65217_chip_id(struct tps65217 *tps65217) |
| 267 | { | 267 | { |
| 268 | return tps65217->id; | 268 | return tps65217->id; |
| 269 | } | 269 | } |
diff --git a/include/linux/mlx5/driver.h b/include/linux/mlx5/driver.h index 554548cd3dd4..130bc8d77fa5 100644 --- a/include/linux/mlx5/driver.h +++ b/include/linux/mlx5/driver.h | |||
| @@ -38,8 +38,10 @@ | |||
| 38 | #include <linux/pci.h> | 38 | #include <linux/pci.h> |
| 39 | #include <linux/spinlock_types.h> | 39 | #include <linux/spinlock_types.h> |
| 40 | #include <linux/semaphore.h> | 40 | #include <linux/semaphore.h> |
| 41 | #include <linux/slab.h> | ||
| 41 | #include <linux/vmalloc.h> | 42 | #include <linux/vmalloc.h> |
| 42 | #include <linux/radix-tree.h> | 43 | #include <linux/radix-tree.h> |
| 44 | |||
| 43 | #include <linux/mlx5/device.h> | 45 | #include <linux/mlx5/device.h> |
| 44 | #include <linux/mlx5/doorbell.h> | 46 | #include <linux/mlx5/doorbell.h> |
| 45 | 47 | ||
| @@ -227,6 +229,7 @@ struct mlx5_uuar_info { | |||
| 227 | * protect uuar allocation data structs | 229 | * protect uuar allocation data structs |
| 228 | */ | 230 | */ |
| 229 | struct mutex lock; | 231 | struct mutex lock; |
| 232 | u32 ver; | ||
| 230 | }; | 233 | }; |
| 231 | 234 | ||
| 232 | struct mlx5_bf { | 235 | struct mlx5_bf { |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 440a02ee6f92..e8eeebd49a98 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
| @@ -752,6 +752,9 @@ struct netdev_phys_port_id { | |||
| 752 | unsigned char id_len; | 752 | unsigned char id_len; |
| 753 | }; | 753 | }; |
| 754 | 754 | ||
| 755 | typedef u16 (*select_queue_fallback_t)(struct net_device *dev, | ||
| 756 | struct sk_buff *skb); | ||
| 757 | |||
| 755 | /* | 758 | /* |
| 756 | * This structure defines the management hooks for network devices. | 759 | * This structure defines the management hooks for network devices. |
| 757 | * The following hooks can be defined; unless noted otherwise, they are | 760 | * The following hooks can be defined; unless noted otherwise, they are |
| @@ -783,7 +786,7 @@ struct netdev_phys_port_id { | |||
| 783 | * Required can not be NULL. | 786 | * Required can not be NULL. |
| 784 | * | 787 | * |
| 785 | * u16 (*ndo_select_queue)(struct net_device *dev, struct sk_buff *skb, | 788 | * u16 (*ndo_select_queue)(struct net_device *dev, struct sk_buff *skb, |
| 786 | * void *accel_priv); | 789 | * void *accel_priv, select_queue_fallback_t fallback); |
| 787 | * Called to decide which queue to when device supports multiple | 790 | * Called to decide which queue to when device supports multiple |
| 788 | * transmit queues. | 791 | * transmit queues. |
| 789 | * | 792 | * |
| @@ -1005,7 +1008,8 @@ struct net_device_ops { | |||
| 1005 | struct net_device *dev); | 1008 | struct net_device *dev); |
| 1006 | u16 (*ndo_select_queue)(struct net_device *dev, | 1009 | u16 (*ndo_select_queue)(struct net_device *dev, |
| 1007 | struct sk_buff *skb, | 1010 | struct sk_buff *skb, |
| 1008 | void *accel_priv); | 1011 | void *accel_priv, |
| 1012 | select_queue_fallback_t fallback); | ||
| 1009 | void (*ndo_change_rx_flags)(struct net_device *dev, | 1013 | void (*ndo_change_rx_flags)(struct net_device *dev, |
| 1010 | int flags); | 1014 | int flags); |
| 1011 | void (*ndo_set_rx_mode)(struct net_device *dev); | 1015 | void (*ndo_set_rx_mode)(struct net_device *dev); |
| @@ -1551,7 +1555,6 @@ static inline void netdev_for_each_tx_queue(struct net_device *dev, | |||
| 1551 | struct netdev_queue *netdev_pick_tx(struct net_device *dev, | 1555 | struct netdev_queue *netdev_pick_tx(struct net_device *dev, |
| 1552 | struct sk_buff *skb, | 1556 | struct sk_buff *skb, |
| 1553 | void *accel_priv); | 1557 | void *accel_priv); |
| 1554 | u16 __netdev_pick_tx(struct net_device *dev, struct sk_buff *skb); | ||
| 1555 | 1558 | ||
| 1556 | /* | 1559 | /* |
| 1557 | * Net namespace inlines | 1560 | * Net namespace inlines |
| @@ -2276,6 +2279,26 @@ static inline void netdev_reset_queue(struct net_device *dev_queue) | |||
| 2276 | } | 2279 | } |
| 2277 | 2280 | ||
| 2278 | /** | 2281 | /** |
| 2282 | * netdev_cap_txqueue - check if selected tx queue exceeds device queues | ||
| 2283 | * @dev: network device | ||
| 2284 | * @queue_index: given tx queue index | ||
| 2285 | * | ||
| 2286 | * Returns 0 if given tx queue index >= number of device tx queues, | ||
| 2287 | * otherwise returns the originally passed tx queue index. | ||
| 2288 | */ | ||
| 2289 | static inline u16 netdev_cap_txqueue(struct net_device *dev, u16 queue_index) | ||
| 2290 | { | ||
| 2291 | if (unlikely(queue_index >= dev->real_num_tx_queues)) { | ||
| 2292 | net_warn_ratelimited("%s selects TX queue %d, but real number of TX queues is %d\n", | ||
| 2293 | dev->name, queue_index, | ||
| 2294 | dev->real_num_tx_queues); | ||
| 2295 | return 0; | ||
| 2296 | } | ||
| 2297 | |||
| 2298 | return queue_index; | ||
| 2299 | } | ||
| 2300 | |||
| 2301 | /** | ||
| 2279 | * netif_running - test if up | 2302 | * netif_running - test if up |
| 2280 | * @dev: network device | 2303 | * @dev: network device |
| 2281 | * | 2304 | * |
| @@ -3068,7 +3091,12 @@ void netdev_change_features(struct net_device *dev); | |||
| 3068 | void netif_stacked_transfer_operstate(const struct net_device *rootdev, | 3091 | void netif_stacked_transfer_operstate(const struct net_device *rootdev, |
| 3069 | struct net_device *dev); | 3092 | struct net_device *dev); |
| 3070 | 3093 | ||
| 3071 | netdev_features_t netif_skb_features(struct sk_buff *skb); | 3094 | netdev_features_t netif_skb_dev_features(struct sk_buff *skb, |
| 3095 | const struct net_device *dev); | ||
| 3096 | static inline netdev_features_t netif_skb_features(struct sk_buff *skb) | ||
| 3097 | { | ||
| 3098 | return netif_skb_dev_features(skb, skb->dev); | ||
| 3099 | } | ||
| 3072 | 3100 | ||
| 3073 | static inline bool net_gso_ok(netdev_features_t features, int gso_type) | 3101 | static inline bool net_gso_ok(netdev_features_t features, int gso_type) |
| 3074 | { | 3102 | { |
diff --git a/include/linux/of.h b/include/linux/of.h index 70c64ba17fa5..435cb995904d 100644 --- a/include/linux/of.h +++ b/include/linux/of.h | |||
| @@ -169,35 +169,15 @@ static inline const char *of_node_full_name(const struct device_node *np) | |||
| 169 | 169 | ||
| 170 | extern struct device_node *of_find_node_by_name(struct device_node *from, | 170 | extern struct device_node *of_find_node_by_name(struct device_node *from, |
| 171 | const char *name); | 171 | const char *name); |
| 172 | #define for_each_node_by_name(dn, name) \ | ||
| 173 | for (dn = of_find_node_by_name(NULL, name); dn; \ | ||
| 174 | dn = of_find_node_by_name(dn, name)) | ||
| 175 | extern struct device_node *of_find_node_by_type(struct device_node *from, | 172 | extern struct device_node *of_find_node_by_type(struct device_node *from, |
| 176 | const char *type); | 173 | const char *type); |
| 177 | #define for_each_node_by_type(dn, type) \ | ||
| 178 | for (dn = of_find_node_by_type(NULL, type); dn; \ | ||
| 179 | dn = of_find_node_by_type(dn, type)) | ||
| 180 | extern struct device_node *of_find_compatible_node(struct device_node *from, | 174 | extern struct device_node *of_find_compatible_node(struct device_node *from, |
| 181 | const char *type, const char *compat); | 175 | const char *type, const char *compat); |
| 182 | #define for_each_compatible_node(dn, type, compatible) \ | ||
| 183 | for (dn = of_find_compatible_node(NULL, type, compatible); dn; \ | ||
| 184 | dn = of_find_compatible_node(dn, type, compatible)) | ||
| 185 | extern struct device_node *of_find_matching_node_and_match( | 176 | extern struct device_node *of_find_matching_node_and_match( |
| 186 | struct device_node *from, | 177 | struct device_node *from, |
| 187 | const struct of_device_id *matches, | 178 | const struct of_device_id *matches, |
| 188 | const struct of_device_id **match); | 179 | const struct of_device_id **match); |
| 189 | static inline struct device_node *of_find_matching_node( | 180 | |
| 190 | struct device_node *from, | ||
| 191 | const struct of_device_id *matches) | ||
| 192 | { | ||
| 193 | return of_find_matching_node_and_match(from, matches, NULL); | ||
| 194 | } | ||
| 195 | #define for_each_matching_node(dn, matches) \ | ||
| 196 | for (dn = of_find_matching_node(NULL, matches); dn; \ | ||
| 197 | dn = of_find_matching_node(dn, matches)) | ||
| 198 | #define for_each_matching_node_and_match(dn, matches, match) \ | ||
| 199 | for (dn = of_find_matching_node_and_match(NULL, matches, match); \ | ||
| 200 | dn; dn = of_find_matching_node_and_match(dn, matches, match)) | ||
| 201 | extern struct device_node *of_find_node_by_path(const char *path); | 181 | extern struct device_node *of_find_node_by_path(const char *path); |
| 202 | extern struct device_node *of_find_node_by_phandle(phandle handle); | 182 | extern struct device_node *of_find_node_by_phandle(phandle handle); |
| 203 | extern struct device_node *of_get_parent(const struct device_node *node); | 183 | extern struct device_node *of_get_parent(const struct device_node *node); |
| @@ -209,43 +189,11 @@ extern struct device_node *of_get_next_available_child( | |||
| 209 | 189 | ||
| 210 | extern struct device_node *of_get_child_by_name(const struct device_node *node, | 190 | extern struct device_node *of_get_child_by_name(const struct device_node *node, |
| 211 | const char *name); | 191 | const char *name); |
| 212 | #define for_each_child_of_node(parent, child) \ | ||
| 213 | for (child = of_get_next_child(parent, NULL); child != NULL; \ | ||
| 214 | child = of_get_next_child(parent, child)) | ||
| 215 | |||
| 216 | #define for_each_available_child_of_node(parent, child) \ | ||
| 217 | for (child = of_get_next_available_child(parent, NULL); child != NULL; \ | ||
| 218 | child = of_get_next_available_child(parent, child)) | ||
| 219 | |||
| 220 | static inline int of_get_child_count(const struct device_node *np) | ||
| 221 | { | ||
| 222 | struct device_node *child; | ||
| 223 | int num = 0; | ||
| 224 | |||
| 225 | for_each_child_of_node(np, child) | ||
| 226 | num++; | ||
| 227 | |||
| 228 | return num; | ||
| 229 | } | ||
| 230 | |||
| 231 | static inline int of_get_available_child_count(const struct device_node *np) | ||
| 232 | { | ||
| 233 | struct device_node *child; | ||
| 234 | int num = 0; | ||
| 235 | |||
| 236 | for_each_available_child_of_node(np, child) | ||
| 237 | num++; | ||
| 238 | |||
| 239 | return num; | ||
| 240 | } | ||
| 241 | 192 | ||
| 242 | /* cache lookup */ | 193 | /* cache lookup */ |
| 243 | extern struct device_node *of_find_next_cache_node(const struct device_node *); | 194 | extern struct device_node *of_find_next_cache_node(const struct device_node *); |
| 244 | extern struct device_node *of_find_node_with_property( | 195 | extern struct device_node *of_find_node_with_property( |
| 245 | struct device_node *from, const char *prop_name); | 196 | struct device_node *from, const char *prop_name); |
| 246 | #define for_each_node_with_property(dn, prop_name) \ | ||
| 247 | for (dn = of_find_node_with_property(NULL, prop_name); dn; \ | ||
| 248 | dn = of_find_node_with_property(dn, prop_name)) | ||
| 249 | 197 | ||
| 250 | extern struct property *of_find_property(const struct device_node *np, | 198 | extern struct property *of_find_property(const struct device_node *np, |
| 251 | const char *name, | 199 | const char *name, |
| @@ -367,42 +315,53 @@ static inline struct device_node *of_find_node_by_name(struct device_node *from, | |||
| 367 | return NULL; | 315 | return NULL; |
| 368 | } | 316 | } |
| 369 | 317 | ||
| 370 | static inline struct device_node *of_get_parent(const struct device_node *node) | 318 | static inline struct device_node *of_find_node_by_type(struct device_node *from, |
| 319 | const char *type) | ||
| 371 | { | 320 | { |
| 372 | return NULL; | 321 | return NULL; |
| 373 | } | 322 | } |
| 374 | 323 | ||
| 375 | static inline bool of_have_populated_dt(void) | 324 | static inline struct device_node *of_find_matching_node_and_match( |
| 325 | struct device_node *from, | ||
| 326 | const struct of_device_id *matches, | ||
| 327 | const struct of_device_id **match) | ||
| 376 | { | 328 | { |
| 377 | return false; | 329 | return NULL; |
| 378 | } | 330 | } |
| 379 | 331 | ||
| 380 | /* Kill an unused variable warning on a device_node pointer */ | 332 | static inline struct device_node *of_get_parent(const struct device_node *node) |
| 381 | static inline void __of_use_dn(const struct device_node *np) | ||
| 382 | { | 333 | { |
| 334 | return NULL; | ||
| 383 | } | 335 | } |
| 384 | 336 | ||
| 385 | #define for_each_child_of_node(parent, child) \ | 337 | static inline struct device_node *of_get_next_child( |
| 386 | while (__of_use_dn(parent), __of_use_dn(child), 0) | 338 | const struct device_node *node, struct device_node *prev) |
| 339 | { | ||
| 340 | return NULL; | ||
| 341 | } | ||
| 387 | 342 | ||
| 388 | #define for_each_available_child_of_node(parent, child) \ | 343 | static inline struct device_node *of_get_next_available_child( |
| 389 | while (0) | 344 | const struct device_node *node, struct device_node *prev) |
| 345 | { | ||
| 346 | return NULL; | ||
| 347 | } | ||
| 390 | 348 | ||
| 391 | static inline struct device_node *of_get_child_by_name( | 349 | static inline struct device_node *of_find_node_with_property( |
| 392 | const struct device_node *node, | 350 | struct device_node *from, const char *prop_name) |
| 393 | const char *name) | ||
| 394 | { | 351 | { |
| 395 | return NULL; | 352 | return NULL; |
| 396 | } | 353 | } |
| 397 | 354 | ||
| 398 | static inline int of_get_child_count(const struct device_node *np) | 355 | static inline bool of_have_populated_dt(void) |
| 399 | { | 356 | { |
| 400 | return 0; | 357 | return false; |
| 401 | } | 358 | } |
| 402 | 359 | ||
| 403 | static inline int of_get_available_child_count(const struct device_node *np) | 360 | static inline struct device_node *of_get_child_by_name( |
| 361 | const struct device_node *node, | ||
| 362 | const char *name) | ||
| 404 | { | 363 | { |
| 405 | return 0; | 364 | return NULL; |
| 406 | } | 365 | } |
| 407 | 366 | ||
| 408 | static inline int of_device_is_compatible(const struct device_node *device, | 367 | static inline int of_device_is_compatible(const struct device_node *device, |
| @@ -569,6 +528,13 @@ extern int of_node_to_nid(struct device_node *np); | |||
| 569 | static inline int of_node_to_nid(struct device_node *device) { return 0; } | 528 | static inline int of_node_to_nid(struct device_node *device) { return 0; } |
| 570 | #endif | 529 | #endif |
| 571 | 530 | ||
| 531 | static inline struct device_node *of_find_matching_node( | ||
| 532 | struct device_node *from, | ||
| 533 | const struct of_device_id *matches) | ||
| 534 | { | ||
| 535 | return of_find_matching_node_and_match(from, matches, NULL); | ||
| 536 | } | ||
| 537 | |||
| 572 | /** | 538 | /** |
| 573 | * of_property_read_bool - Findfrom a property | 539 | * of_property_read_bool - Findfrom a property |
| 574 | * @np: device node from which the property value is to be read. | 540 | * @np: device node from which the property value is to be read. |
| @@ -618,6 +584,55 @@ static inline int of_property_read_u32(const struct device_node *np, | |||
| 618 | s; \ | 584 | s; \ |
| 619 | s = of_prop_next_string(prop, s)) | 585 | s = of_prop_next_string(prop, s)) |
| 620 | 586 | ||
| 587 | #define for_each_node_by_name(dn, name) \ | ||
| 588 | for (dn = of_find_node_by_name(NULL, name); dn; \ | ||
| 589 | dn = of_find_node_by_name(dn, name)) | ||
| 590 | #define for_each_node_by_type(dn, type) \ | ||
| 591 | for (dn = of_find_node_by_type(NULL, type); dn; \ | ||
| 592 | dn = of_find_node_by_type(dn, type)) | ||
| 593 | #define for_each_compatible_node(dn, type, compatible) \ | ||
| 594 | for (dn = of_find_compatible_node(NULL, type, compatible); dn; \ | ||
| 595 | dn = of_find_compatible_node(dn, type, compatible)) | ||
| 596 | #define for_each_matching_node(dn, matches) \ | ||
| 597 | for (dn = of_find_matching_node(NULL, matches); dn; \ | ||
| 598 | dn = of_find_matching_node(dn, matches)) | ||
| 599 | #define for_each_matching_node_and_match(dn, matches, match) \ | ||
| 600 | for (dn = of_find_matching_node_and_match(NULL, matches, match); \ | ||
| 601 | dn; dn = of_find_matching_node_and_match(dn, matches, match)) | ||
| 602 | |||
| 603 | #define for_each_child_of_node(parent, child) \ | ||
| 604 | for (child = of_get_next_child(parent, NULL); child != NULL; \ | ||
| 605 | child = of_get_next_child(parent, child)) | ||
| 606 | #define for_each_available_child_of_node(parent, child) \ | ||
| 607 | for (child = of_get_next_available_child(parent, NULL); child != NULL; \ | ||
| 608 | child = of_get_next_available_child(parent, child)) | ||
| 609 | |||
| 610 | #define for_each_node_with_property(dn, prop_name) \ | ||
| 611 | for (dn = of_find_node_with_property(NULL, prop_name); dn; \ | ||
| 612 | dn = of_find_node_with_property(dn, prop_name)) | ||
| 613 | |||
| 614 | static inline int of_get_child_count(const struct device_node *np) | ||
| 615 | { | ||
| 616 | struct device_node *child; | ||
| 617 | int num = 0; | ||
| 618 | |||
| 619 | for_each_child_of_node(np, child) | ||
| 620 | num++; | ||
| 621 | |||
| 622 | return num; | ||
| 623 | } | ||
| 624 | |||
| 625 | static inline int of_get_available_child_count(const struct device_node *np) | ||
| 626 | { | ||
| 627 | struct device_node *child; | ||
| 628 | int num = 0; | ||
| 629 | |||
| 630 | for_each_available_child_of_node(np, child) | ||
| 631 | num++; | ||
| 632 | |||
| 633 | return num; | ||
| 634 | } | ||
| 635 | |||
| 621 | #if defined(CONFIG_PROC_FS) && defined(CONFIG_PROC_DEVICETREE) | 636 | #if defined(CONFIG_PROC_FS) && defined(CONFIG_PROC_DEVICETREE) |
| 622 | extern void proc_device_tree_add_node(struct device_node *, struct proc_dir_entry *); | 637 | extern void proc_device_tree_add_node(struct device_node *, struct proc_dir_entry *); |
| 623 | extern void proc_device_tree_add_prop(struct proc_dir_entry *pde, struct property *prop); | 638 | extern void proc_device_tree_add_prop(struct proc_dir_entry *pde, struct property *prop); |
diff --git a/include/linux/of_device.h b/include/linux/of_device.h index 8d7dd6768cb7..ef370210ffb2 100644 --- a/include/linux/of_device.h +++ b/include/linux/of_device.h | |||
| @@ -78,11 +78,13 @@ static inline int of_device_uevent_modalias(struct device *dev, | |||
| 78 | 78 | ||
| 79 | static inline void of_device_node_put(struct device *dev) { } | 79 | static inline void of_device_node_put(struct device *dev) { } |
| 80 | 80 | ||
| 81 | static inline const struct of_device_id *of_match_device( | 81 | static inline const struct of_device_id *__of_match_device( |
| 82 | const struct of_device_id *matches, const struct device *dev) | 82 | const struct of_device_id *matches, const struct device *dev) |
| 83 | { | 83 | { |
| 84 | return NULL; | 84 | return NULL; |
| 85 | } | 85 | } |
| 86 | #define of_match_device(matches, dev) \ | ||
| 87 | __of_match_device(of_match_ptr(matches), (dev)) | ||
| 86 | 88 | ||
| 87 | static inline struct device_node *of_cpu_device_node_get(int cpu) | 89 | static inline struct device_node *of_cpu_device_node_get(int cpu) |
| 88 | { | 90 | { |
diff --git a/include/linux/pci.h b/include/linux/pci.h index fb57c892b214..33aa2caf0f0c 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
| @@ -1169,8 +1169,23 @@ void msi_remove_pci_irq_vectors(struct pci_dev *dev); | |||
| 1169 | void pci_restore_msi_state(struct pci_dev *dev); | 1169 | void pci_restore_msi_state(struct pci_dev *dev); |
| 1170 | int pci_msi_enabled(void); | 1170 | int pci_msi_enabled(void); |
| 1171 | int pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec); | 1171 | int pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec); |
| 1172 | static inline int pci_enable_msi_exact(struct pci_dev *dev, int nvec) | ||
| 1173 | { | ||
| 1174 | int rc = pci_enable_msi_range(dev, nvec, nvec); | ||
| 1175 | if (rc < 0) | ||
| 1176 | return rc; | ||
| 1177 | return 0; | ||
| 1178 | } | ||
| 1172 | int pci_enable_msix_range(struct pci_dev *dev, struct msix_entry *entries, | 1179 | int pci_enable_msix_range(struct pci_dev *dev, struct msix_entry *entries, |
| 1173 | int minvec, int maxvec); | 1180 | int minvec, int maxvec); |
| 1181 | static inline int pci_enable_msix_exact(struct pci_dev *dev, | ||
| 1182 | struct msix_entry *entries, int nvec) | ||
| 1183 | { | ||
| 1184 | int rc = pci_enable_msix_range(dev, entries, nvec, nvec); | ||
| 1185 | if (rc < 0) | ||
| 1186 | return rc; | ||
| 1187 | return 0; | ||
| 1188 | } | ||
| 1174 | #else | 1189 | #else |
| 1175 | static inline int pci_msi_vec_count(struct pci_dev *dev) { return -ENOSYS; } | 1190 | static inline int pci_msi_vec_count(struct pci_dev *dev) { return -ENOSYS; } |
| 1176 | static inline int pci_enable_msi_block(struct pci_dev *dev, int nvec) | 1191 | static inline int pci_enable_msi_block(struct pci_dev *dev, int nvec) |
| @@ -1189,9 +1204,14 @@ static inline int pci_msi_enabled(void) { return 0; } | |||
| 1189 | static inline int pci_enable_msi_range(struct pci_dev *dev, int minvec, | 1204 | static inline int pci_enable_msi_range(struct pci_dev *dev, int minvec, |
| 1190 | int maxvec) | 1205 | int maxvec) |
| 1191 | { return -ENOSYS; } | 1206 | { return -ENOSYS; } |
| 1207 | static inline int pci_enable_msi_exact(struct pci_dev *dev, int nvec) | ||
| 1208 | { return -ENOSYS; } | ||
| 1192 | static inline int pci_enable_msix_range(struct pci_dev *dev, | 1209 | static inline int pci_enable_msix_range(struct pci_dev *dev, |
| 1193 | struct msix_entry *entries, int minvec, int maxvec) | 1210 | struct msix_entry *entries, int minvec, int maxvec) |
| 1194 | { return -ENOSYS; } | 1211 | { return -ENOSYS; } |
| 1212 | static inline int pci_enable_msix_exact(struct pci_dev *dev, | ||
| 1213 | struct msix_entry *entries, int nvec) | ||
| 1214 | { return -ENOSYS; } | ||
| 1195 | #endif | 1215 | #endif |
| 1196 | 1216 | ||
| 1197 | #ifdef CONFIG_PCIEPORTBUS | 1217 | #ifdef CONFIG_PCIEPORTBUS |
diff --git a/include/linux/phy/phy.h b/include/linux/phy/phy.h index e273e5ac19c9..3f83459dbb20 100644 --- a/include/linux/phy/phy.h +++ b/include/linux/phy/phy.h | |||
| @@ -146,7 +146,9 @@ static inline void phy_set_bus_width(struct phy *phy, int bus_width) | |||
| 146 | phy->attrs.bus_width = bus_width; | 146 | phy->attrs.bus_width = bus_width; |
| 147 | } | 147 | } |
| 148 | struct phy *phy_get(struct device *dev, const char *string); | 148 | struct phy *phy_get(struct device *dev, const char *string); |
| 149 | struct phy *phy_optional_get(struct device *dev, const char *string); | ||
| 149 | struct phy *devm_phy_get(struct device *dev, const char *string); | 150 | struct phy *devm_phy_get(struct device *dev, const char *string); |
| 151 | struct phy *devm_phy_optional_get(struct device *dev, const char *string); | ||
| 150 | void phy_put(struct phy *phy); | 152 | void phy_put(struct phy *phy); |
| 151 | void devm_phy_put(struct device *dev, struct phy *phy); | 153 | void devm_phy_put(struct device *dev, struct phy *phy); |
| 152 | struct phy *of_phy_simple_xlate(struct device *dev, | 154 | struct phy *of_phy_simple_xlate(struct device *dev, |
| @@ -232,11 +234,23 @@ static inline struct phy *phy_get(struct device *dev, const char *string) | |||
| 232 | return ERR_PTR(-ENOSYS); | 234 | return ERR_PTR(-ENOSYS); |
| 233 | } | 235 | } |
| 234 | 236 | ||
| 237 | static inline struct phy *phy_optional_get(struct device *dev, | ||
| 238 | const char *string) | ||
| 239 | { | ||
| 240 | return ERR_PTR(-ENOSYS); | ||
| 241 | } | ||
| 242 | |||
| 235 | static inline struct phy *devm_phy_get(struct device *dev, const char *string) | 243 | static inline struct phy *devm_phy_get(struct device *dev, const char *string) |
| 236 | { | 244 | { |
| 237 | return ERR_PTR(-ENOSYS); | 245 | return ERR_PTR(-ENOSYS); |
| 238 | } | 246 | } |
| 239 | 247 | ||
| 248 | static inline struct phy *devm_phy_optional_get(struct device *dev, | ||
| 249 | const char *string) | ||
| 250 | { | ||
| 251 | return ERR_PTR(-ENOSYS); | ||
| 252 | } | ||
| 253 | |||
| 240 | static inline void phy_put(struct phy *phy) | 254 | static inline void phy_put(struct phy *phy) |
| 241 | { | 255 | { |
| 242 | } | 256 | } |
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index f589c9af8cbf..3ebbbe7b6d05 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
| @@ -2916,5 +2916,22 @@ static inline bool skb_head_is_locked(const struct sk_buff *skb) | |||
| 2916 | { | 2916 | { |
| 2917 | return !skb->head_frag || skb_cloned(skb); | 2917 | return !skb->head_frag || skb_cloned(skb); |
| 2918 | } | 2918 | } |
| 2919 | |||
| 2920 | /** | ||
| 2921 | * skb_gso_network_seglen - Return length of individual segments of a gso packet | ||
| 2922 | * | ||
| 2923 | * @skb: GSO skb | ||
| 2924 | * | ||
| 2925 | * skb_gso_network_seglen is used to determine the real size of the | ||
| 2926 | * individual segments, including Layer3 (IP, IPv6) and L4 headers (TCP/UDP). | ||
| 2927 | * | ||
| 2928 | * The MAC/L2 header is not accounted for. | ||
| 2929 | */ | ||
| 2930 | static inline unsigned int skb_gso_network_seglen(const struct sk_buff *skb) | ||
| 2931 | { | ||
| 2932 | unsigned int hdr_len = skb_transport_header(skb) - | ||
| 2933 | skb_network_header(skb); | ||
| 2934 | return hdr_len + skb_gso_transport_seglen(skb); | ||
| 2935 | } | ||
| 2919 | #endif /* __KERNEL__ */ | 2936 | #endif /* __KERNEL__ */ |
| 2920 | #endif /* _LINUX_SKBUFF_H */ | 2937 | #endif /* _LINUX_SKBUFF_H */ |
diff --git a/include/linux/smp.h b/include/linux/smp.h index 3834f43f9993..6ae004e437ea 100644 --- a/include/linux/smp.h +++ b/include/linux/smp.h | |||
| @@ -188,6 +188,9 @@ static inline void kick_all_cpus_sync(void) { } | |||
| 188 | */ | 188 | */ |
| 189 | extern void arch_disable_smp_support(void); | 189 | extern void arch_disable_smp_support(void); |
| 190 | 190 | ||
| 191 | extern void arch_enable_nonboot_cpus_begin(void); | ||
| 192 | extern void arch_enable_nonboot_cpus_end(void); | ||
| 193 | |||
| 191 | void smp_setup_processor_id(void); | 194 | void smp_setup_processor_id(void); |
| 192 | 195 | ||
| 193 | #endif /* __LINUX_SMP_H */ | 196 | #endif /* __LINUX_SMP_H */ |
diff --git a/include/linux/spi/spi.h b/include/linux/spi/spi.h index a1d4ca290862..4203c66d8803 100644 --- a/include/linux/spi/spi.h +++ b/include/linux/spi/spi.h | |||
| @@ -273,7 +273,7 @@ static inline void spi_unregister_driver(struct spi_driver *sdrv) | |||
| 273 | * message while queuing transfers that arrive in the meantime. When the | 273 | * message while queuing transfers that arrive in the meantime. When the |
| 274 | * driver is finished with this message, it must call | 274 | * driver is finished with this message, it must call |
| 275 | * spi_finalize_current_message() so the subsystem can issue the next | 275 | * spi_finalize_current_message() so the subsystem can issue the next |
| 276 | * transfer | 276 | * message |
| 277 | * @unprepare_transfer_hardware: there are currently no more messages on the | 277 | * @unprepare_transfer_hardware: there are currently no more messages on the |
| 278 | * queue so the subsystem notifies the driver that it may relax the | 278 | * queue so the subsystem notifies the driver that it may relax the |
| 279 | * hardware by issuing this call | 279 | * hardware by issuing this call |
| @@ -287,7 +287,10 @@ static inline void spi_unregister_driver(struct spi_driver *sdrv) | |||
| 287 | * - return 1 if the transfer is still in progress. When | 287 | * - return 1 if the transfer is still in progress. When |
| 288 | * the driver is finished with this transfer it must | 288 | * the driver is finished with this transfer it must |
| 289 | * call spi_finalize_current_transfer() so the subsystem | 289 | * call spi_finalize_current_transfer() so the subsystem |
| 290 | * can issue the next transfer | 290 | * can issue the next transfer. Note: transfer_one and |
| 291 | * transfer_one_message are mutually exclusive; when both | ||
| 292 | * are set, the generic subsystem does not call your | ||
| 293 | * transfer_one callback. | ||
| 291 | * @unprepare_message: undo any work done by prepare_message(). | 294 | * @unprepare_message: undo any work done by prepare_message(). |
| 292 | * @cs_gpios: Array of GPIOs to use as chip select lines; one per CS | 295 | * @cs_gpios: Array of GPIOs to use as chip select lines; one per CS |
| 293 | * number. Any individual value may be -ENOENT for CS lines that | 296 | * number. Any individual value may be -ENOENT for CS lines that |
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index 40ed9e9a77e5..a747a77ea584 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h | |||
| @@ -281,13 +281,15 @@ asmlinkage long sys_sched_setscheduler(pid_t pid, int policy, | |||
| 281 | asmlinkage long sys_sched_setparam(pid_t pid, | 281 | asmlinkage long sys_sched_setparam(pid_t pid, |
| 282 | struct sched_param __user *param); | 282 | struct sched_param __user *param); |
| 283 | asmlinkage long sys_sched_setattr(pid_t pid, | 283 | asmlinkage long sys_sched_setattr(pid_t pid, |
| 284 | struct sched_attr __user *attr); | 284 | struct sched_attr __user *attr, |
| 285 | unsigned int flags); | ||
| 285 | asmlinkage long sys_sched_getscheduler(pid_t pid); | 286 | asmlinkage long sys_sched_getscheduler(pid_t pid); |
| 286 | asmlinkage long sys_sched_getparam(pid_t pid, | 287 | asmlinkage long sys_sched_getparam(pid_t pid, |
| 287 | struct sched_param __user *param); | 288 | struct sched_param __user *param); |
| 288 | asmlinkage long sys_sched_getattr(pid_t pid, | 289 | asmlinkage long sys_sched_getattr(pid_t pid, |
| 289 | struct sched_attr __user *attr, | 290 | struct sched_attr __user *attr, |
| 290 | unsigned int size); | 291 | unsigned int size, |
| 292 | unsigned int flags); | ||
| 291 | asmlinkage long sys_sched_setaffinity(pid_t pid, unsigned int len, | 293 | asmlinkage long sys_sched_setaffinity(pid_t pid, unsigned int len, |
| 292 | unsigned long __user *user_mask_ptr); | 294 | unsigned long __user *user_mask_ptr); |
| 293 | asmlinkage long sys_sched_getaffinity(pid_t pid, unsigned int len, | 295 | asmlinkage long sys_sched_getaffinity(pid_t pid, unsigned int len, |
diff --git a/include/linux/uprobes.h b/include/linux/uprobes.h index e32251e00e62..edff2b97b864 100644 --- a/include/linux/uprobes.h +++ b/include/linux/uprobes.h | |||
| @@ -126,6 +126,7 @@ extern bool arch_uprobe_xol_was_trapped(struct task_struct *tsk); | |||
| 126 | extern int arch_uprobe_exception_notify(struct notifier_block *self, unsigned long val, void *data); | 126 | extern int arch_uprobe_exception_notify(struct notifier_block *self, unsigned long val, void *data); |
| 127 | extern void arch_uprobe_abort_xol(struct arch_uprobe *aup, struct pt_regs *regs); | 127 | extern void arch_uprobe_abort_xol(struct arch_uprobe *aup, struct pt_regs *regs); |
| 128 | extern unsigned long arch_uretprobe_hijack_return_addr(unsigned long trampoline_vaddr, struct pt_regs *regs); | 128 | extern unsigned long arch_uretprobe_hijack_return_addr(unsigned long trampoline_vaddr, struct pt_regs *regs); |
| 129 | extern bool __weak arch_uprobe_ignore(struct arch_uprobe *aup, struct pt_regs *regs); | ||
| 129 | #else /* !CONFIG_UPROBES */ | 130 | #else /* !CONFIG_UPROBES */ |
| 130 | struct uprobes_state { | 131 | struct uprobes_state { |
| 131 | }; | 132 | }; |
diff --git a/include/linux/usb.h b/include/linux/usb.h index c716da18c668..7f6eb859873e 100644 --- a/include/linux/usb.h +++ b/include/linux/usb.h | |||
| @@ -1265,8 +1265,6 @@ typedef void (*usb_complete_t)(struct urb *); | |||
| 1265 | * @sg: scatter gather buffer list, the buffer size of each element in | 1265 | * @sg: scatter gather buffer list, the buffer size of each element in |
| 1266 | * the list (except the last) must be divisible by the endpoint's | 1266 | * the list (except the last) must be divisible by the endpoint's |
| 1267 | * max packet size if no_sg_constraint isn't set in 'struct usb_bus' | 1267 | * max packet size if no_sg_constraint isn't set in 'struct usb_bus' |
| 1268 | * (FIXME: scatter-gather under xHCI is broken for periodic transfers. | ||
| 1269 | * Do not use urb->sg for interrupt endpoints for now, only bulk.) | ||
| 1270 | * @num_mapped_sgs: (internal) number of mapped sg entries | 1268 | * @num_mapped_sgs: (internal) number of mapped sg entries |
| 1271 | * @num_sgs: number of entries in the sg list | 1269 | * @num_sgs: number of entries in the sg list |
| 1272 | * @transfer_buffer_length: How big is transfer_buffer. The transfer may | 1270 | * @transfer_buffer_length: How big is transfer_buffer. The transfer may |
diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h index 594521ba0d43..704f4f652d0a 100644 --- a/include/linux/workqueue.h +++ b/include/linux/workqueue.h | |||
| @@ -419,10 +419,7 @@ __alloc_workqueue_key(const char *fmt, unsigned int flags, int max_active, | |||
| 419 | static struct lock_class_key __key; \ | 419 | static struct lock_class_key __key; \ |
| 420 | const char *__lock_name; \ | 420 | const char *__lock_name; \ |
| 421 | \ | 421 | \ |
| 422 | if (__builtin_constant_p(fmt)) \ | 422 | __lock_name = #fmt#args; \ |
| 423 | __lock_name = (fmt); \ | ||
| 424 | else \ | ||
| 425 | __lock_name = #fmt; \ | ||
| 426 | \ | 423 | \ |
| 427 | __alloc_workqueue_key((fmt), (flags), (max_active), \ | 424 | __alloc_workqueue_key((fmt), (flags), (max_active), \ |
| 428 | &__key, __lock_name, ##args); \ | 425 | &__key, __lock_name, ##args); \ |
diff --git a/include/linux/writeback.h b/include/linux/writeback.h index fc0e4320aa6d..021b8a319b9e 100644 --- a/include/linux/writeback.h +++ b/include/linux/writeback.h | |||
| @@ -97,7 +97,7 @@ void writeback_inodes_sb_nr(struct super_block *, unsigned long nr, | |||
| 97 | int try_to_writeback_inodes_sb(struct super_block *, enum wb_reason reason); | 97 | int try_to_writeback_inodes_sb(struct super_block *, enum wb_reason reason); |
| 98 | int try_to_writeback_inodes_sb_nr(struct super_block *, unsigned long nr, | 98 | int try_to_writeback_inodes_sb_nr(struct super_block *, unsigned long nr, |
| 99 | enum wb_reason reason); | 99 | enum wb_reason reason); |
| 100 | void sync_inodes_sb(struct super_block *sb, unsigned long older_than_this); | 100 | void sync_inodes_sb(struct super_block *); |
| 101 | void wakeup_flusher_threads(long nr_pages, enum wb_reason reason); | 101 | void wakeup_flusher_threads(long nr_pages, enum wb_reason reason); |
| 102 | void inode_wait_for_writeback(struct inode *inode); | 102 | void inode_wait_for_writeback(struct inode *inode); |
| 103 | 103 | ||
