diff options
author | Dave Airlie <airlied@redhat.com> | 2015-12-23 17:08:47 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2015-12-23 17:08:47 -0500 |
commit | 20f8e032e6dc7053ab803f488e2a8839cd2f69a6 (patch) | |
tree | 406b662934bffa205d90e9435bf96af7dc1a0cb0 /include | |
parent | ade1ba7346070709856d7e38f8d1a77b7aa710aa (diff) | |
parent | 5b726e06d6e8309e5c9ef4109a32caf27c71dfc8 (diff) |
Backmerge drm-fixes merge into Linus's tree into drm-next.
This merges '5b726e06d6e8309e5c9ef4109a32caf27c71dfc8' into drm-next
Just to resolve some merges to make Daniel's life easier.
Signed-off-by: DAve Airlie <airlied@redhat.com>
Diffstat (limited to 'include')
41 files changed, 213 insertions, 104 deletions
diff --git a/include/asm-generic/tlb.h b/include/asm-generic/tlb.h index db284bff29dc..9dbb739cafa0 100644 --- a/include/asm-generic/tlb.h +++ b/include/asm-generic/tlb.h | |||
@@ -5,7 +5,7 @@ | |||
5 | * Copyright 2001 Red Hat, Inc. | 5 | * Copyright 2001 Red Hat, Inc. |
6 | * Based on code from mm/memory.c Copyright Linus Torvalds and others. | 6 | * Based on code from mm/memory.c Copyright Linus Torvalds and others. |
7 | * | 7 | * |
8 | * Copyright 2011 Red Hat, Inc., Peter Zijlstra <pzijlstr@redhat.com> | 8 | * Copyright 2011 Red Hat, Inc., Peter Zijlstra |
9 | * | 9 | * |
10 | * This program is free software; you can redistribute it and/or | 10 | * This program is free software; you can redistribute it and/or |
11 | * modify it under the terms of the GNU General Public License | 11 | * modify it under the terms of the GNU General Public License |
diff --git a/include/linux/bitops.h b/include/linux/bitops.h index 2b8ed123ad36..defeaac0745f 100644 --- a/include/linux/bitops.h +++ b/include/linux/bitops.h | |||
@@ -107,7 +107,7 @@ static inline __u64 ror64(__u64 word, unsigned int shift) | |||
107 | */ | 107 | */ |
108 | static inline __u32 rol32(__u32 word, unsigned int shift) | 108 | static inline __u32 rol32(__u32 word, unsigned int shift) |
109 | { | 109 | { |
110 | return (word << shift) | (word >> (32 - shift)); | 110 | return (word << shift) | (word >> ((-shift) & 31)); |
111 | } | 111 | } |
112 | 112 | ||
113 | /** | 113 | /** |
diff --git a/include/linux/cgroup-defs.h b/include/linux/cgroup-defs.h index 60d44b26276d..06b77f9dd3f2 100644 --- a/include/linux/cgroup-defs.h +++ b/include/linux/cgroup-defs.h | |||
@@ -90,7 +90,6 @@ enum { | |||
90 | */ | 90 | */ |
91 | struct cgroup_file { | 91 | struct cgroup_file { |
92 | /* do not access any fields from outside cgroup core */ | 92 | /* do not access any fields from outside cgroup core */ |
93 | struct list_head node; /* anchored at css->files */ | ||
94 | struct kernfs_node *kn; | 93 | struct kernfs_node *kn; |
95 | }; | 94 | }; |
96 | 95 | ||
@@ -134,9 +133,6 @@ struct cgroup_subsys_state { | |||
134 | */ | 133 | */ |
135 | u64 serial_nr; | 134 | u64 serial_nr; |
136 | 135 | ||
137 | /* all cgroup_files associated with this css */ | ||
138 | struct list_head files; | ||
139 | |||
140 | /* percpu_ref killing and RCU release */ | 136 | /* percpu_ref killing and RCU release */ |
141 | struct rcu_head rcu_head; | 137 | struct rcu_head rcu_head; |
142 | struct work_struct destroy_work; | 138 | struct work_struct destroy_work; |
@@ -426,12 +422,9 @@ struct cgroup_subsys { | |||
426 | void (*css_reset)(struct cgroup_subsys_state *css); | 422 | void (*css_reset)(struct cgroup_subsys_state *css); |
427 | void (*css_e_css_changed)(struct cgroup_subsys_state *css); | 423 | void (*css_e_css_changed)(struct cgroup_subsys_state *css); |
428 | 424 | ||
429 | int (*can_attach)(struct cgroup_subsys_state *css, | 425 | int (*can_attach)(struct cgroup_taskset *tset); |
430 | struct cgroup_taskset *tset); | 426 | void (*cancel_attach)(struct cgroup_taskset *tset); |
431 | void (*cancel_attach)(struct cgroup_subsys_state *css, | 427 | void (*attach)(struct cgroup_taskset *tset); |
432 | struct cgroup_taskset *tset); | ||
433 | void (*attach)(struct cgroup_subsys_state *css, | ||
434 | struct cgroup_taskset *tset); | ||
435 | int (*can_fork)(struct task_struct *task, void **priv_p); | 428 | int (*can_fork)(struct task_struct *task, void **priv_p); |
436 | void (*cancel_fork)(struct task_struct *task, void *priv); | 429 | void (*cancel_fork)(struct task_struct *task, void *priv); |
437 | void (*fork)(struct task_struct *task, void *priv); | 430 | void (*fork)(struct task_struct *task, void *priv); |
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h index 22e3754f89c5..cb91b44f5f78 100644 --- a/include/linux/cgroup.h +++ b/include/linux/cgroup.h | |||
@@ -88,6 +88,7 @@ int cgroup_transfer_tasks(struct cgroup *to, struct cgroup *from); | |||
88 | int cgroup_add_dfl_cftypes(struct cgroup_subsys *ss, struct cftype *cfts); | 88 | int cgroup_add_dfl_cftypes(struct cgroup_subsys *ss, struct cftype *cfts); |
89 | int cgroup_add_legacy_cftypes(struct cgroup_subsys *ss, struct cftype *cfts); | 89 | int cgroup_add_legacy_cftypes(struct cgroup_subsys *ss, struct cftype *cfts); |
90 | int cgroup_rm_cftypes(struct cftype *cfts); | 90 | int cgroup_rm_cftypes(struct cftype *cfts); |
91 | void cgroup_file_notify(struct cgroup_file *cfile); | ||
91 | 92 | ||
92 | char *task_cgroup_path(struct task_struct *task, char *buf, size_t buflen); | 93 | char *task_cgroup_path(struct task_struct *task, char *buf, size_t buflen); |
93 | int cgroupstats_build(struct cgroupstats *stats, struct dentry *dentry); | 94 | int cgroupstats_build(struct cgroupstats *stats, struct dentry *dentry); |
@@ -119,8 +120,10 @@ struct cgroup_subsys_state *css_rightmost_descendant(struct cgroup_subsys_state | |||
119 | struct cgroup_subsys_state *css_next_descendant_post(struct cgroup_subsys_state *pos, | 120 | struct cgroup_subsys_state *css_next_descendant_post(struct cgroup_subsys_state *pos, |
120 | struct cgroup_subsys_state *css); | 121 | struct cgroup_subsys_state *css); |
121 | 122 | ||
122 | struct task_struct *cgroup_taskset_first(struct cgroup_taskset *tset); | 123 | struct task_struct *cgroup_taskset_first(struct cgroup_taskset *tset, |
123 | struct task_struct *cgroup_taskset_next(struct cgroup_taskset *tset); | 124 | struct cgroup_subsys_state **dst_cssp); |
125 | struct task_struct *cgroup_taskset_next(struct cgroup_taskset *tset, | ||
126 | struct cgroup_subsys_state **dst_cssp); | ||
124 | 127 | ||
125 | void css_task_iter_start(struct cgroup_subsys_state *css, | 128 | void css_task_iter_start(struct cgroup_subsys_state *css, |
126 | struct css_task_iter *it); | 129 | struct css_task_iter *it); |
@@ -235,30 +238,39 @@ void css_task_iter_end(struct css_task_iter *it); | |||
235 | /** | 238 | /** |
236 | * cgroup_taskset_for_each - iterate cgroup_taskset | 239 | * cgroup_taskset_for_each - iterate cgroup_taskset |
237 | * @task: the loop cursor | 240 | * @task: the loop cursor |
241 | * @dst_css: the destination css | ||
238 | * @tset: taskset to iterate | 242 | * @tset: taskset to iterate |
239 | * | 243 | * |
240 | * @tset may contain multiple tasks and they may belong to multiple | 244 | * @tset may contain multiple tasks and they may belong to multiple |
241 | * processes. When there are multiple tasks in @tset, if a task of a | 245 | * processes. |
242 | * process is in @tset, all tasks of the process are in @tset. Also, all | 246 | * |
243 | * are guaranteed to share the same source and destination csses. | 247 | * On the v2 hierarchy, there may be tasks from multiple processes and they |
248 | * may not share the source or destination csses. | ||
249 | * | ||
250 | * On traditional hierarchies, when there are multiple tasks in @tset, if a | ||
251 | * task of a process is in @tset, all tasks of the process are in @tset. | ||
252 | * Also, all are guaranteed to share the same source and destination csses. | ||
244 | * | 253 | * |
245 | * Iteration is not in any specific order. | 254 | * Iteration is not in any specific order. |
246 | */ | 255 | */ |
247 | #define cgroup_taskset_for_each(task, tset) \ | 256 | #define cgroup_taskset_for_each(task, dst_css, tset) \ |
248 | for ((task) = cgroup_taskset_first((tset)); (task); \ | 257 | for ((task) = cgroup_taskset_first((tset), &(dst_css)); \ |
249 | (task) = cgroup_taskset_next((tset))) | 258 | (task); \ |
259 | (task) = cgroup_taskset_next((tset), &(dst_css))) | ||
250 | 260 | ||
251 | /** | 261 | /** |
252 | * cgroup_taskset_for_each_leader - iterate group leaders in a cgroup_taskset | 262 | * cgroup_taskset_for_each_leader - iterate group leaders in a cgroup_taskset |
253 | * @leader: the loop cursor | 263 | * @leader: the loop cursor |
264 | * @dst_css: the destination css | ||
254 | * @tset: takset to iterate | 265 | * @tset: takset to iterate |
255 | * | 266 | * |
256 | * Iterate threadgroup leaders of @tset. For single-task migrations, @tset | 267 | * Iterate threadgroup leaders of @tset. For single-task migrations, @tset |
257 | * may not contain any. | 268 | * may not contain any. |
258 | */ | 269 | */ |
259 | #define cgroup_taskset_for_each_leader(leader, tset) \ | 270 | #define cgroup_taskset_for_each_leader(leader, dst_css, tset) \ |
260 | for ((leader) = cgroup_taskset_first((tset)); (leader); \ | 271 | for ((leader) = cgroup_taskset_first((tset), &(dst_css)); \ |
261 | (leader) = cgroup_taskset_next((tset))) \ | 272 | (leader); \ |
273 | (leader) = cgroup_taskset_next((tset), &(dst_css))) \ | ||
262 | if ((leader) != (leader)->group_leader) \ | 274 | if ((leader) != (leader)->group_leader) \ |
263 | ; \ | 275 | ; \ |
264 | else | 276 | else |
@@ -516,19 +528,6 @@ static inline void pr_cont_cgroup_path(struct cgroup *cgrp) | |||
516 | pr_cont_kernfs_path(cgrp->kn); | 528 | pr_cont_kernfs_path(cgrp->kn); |
517 | } | 529 | } |
518 | 530 | ||
519 | /** | ||
520 | * cgroup_file_notify - generate a file modified event for a cgroup_file | ||
521 | * @cfile: target cgroup_file | ||
522 | * | ||
523 | * @cfile must have been obtained by setting cftype->file_offset. | ||
524 | */ | ||
525 | static inline void cgroup_file_notify(struct cgroup_file *cfile) | ||
526 | { | ||
527 | /* might not have been created due to one of the CFTYPE selector flags */ | ||
528 | if (cfile->kn) | ||
529 | kernfs_notify(cfile->kn); | ||
530 | } | ||
531 | |||
532 | #else /* !CONFIG_CGROUPS */ | 531 | #else /* !CONFIG_CGROUPS */ |
533 | 532 | ||
534 | struct cgroup_subsys_state; | 533 | struct cgroup_subsys_state; |
diff --git a/include/linux/enclosure.h b/include/linux/enclosure.h index 7be22da321f3..a4cf57cd0f75 100644 --- a/include/linux/enclosure.h +++ b/include/linux/enclosure.h | |||
@@ -29,7 +29,11 @@ | |||
29 | /* A few generic types ... taken from ses-2 */ | 29 | /* A few generic types ... taken from ses-2 */ |
30 | enum enclosure_component_type { | 30 | enum enclosure_component_type { |
31 | ENCLOSURE_COMPONENT_DEVICE = 0x01, | 31 | ENCLOSURE_COMPONENT_DEVICE = 0x01, |
32 | ENCLOSURE_COMPONENT_CONTROLLER_ELECTRONICS = 0x07, | ||
33 | ENCLOSURE_COMPONENT_SCSI_TARGET_PORT = 0x14, | ||
34 | ENCLOSURE_COMPONENT_SCSI_INITIATOR_PORT = 0x15, | ||
32 | ENCLOSURE_COMPONENT_ARRAY_DEVICE = 0x17, | 35 | ENCLOSURE_COMPONENT_ARRAY_DEVICE = 0x17, |
36 | ENCLOSURE_COMPONENT_SAS_EXPANDER = 0x18, | ||
33 | }; | 37 | }; |
34 | 38 | ||
35 | /* ses-2 common element status */ | 39 | /* ses-2 common element status */ |
diff --git a/include/linux/irqchip/arm-gic-v3.h b/include/linux/irqchip/arm-gic-v3.h index c9ae0c6ec050..d5d798b35c1f 100644 --- a/include/linux/irqchip/arm-gic-v3.h +++ b/include/linux/irqchip/arm-gic-v3.h | |||
@@ -330,6 +330,7 @@ struct rdists { | |||
330 | }; | 330 | }; |
331 | 331 | ||
332 | struct irq_domain; | 332 | struct irq_domain; |
333 | struct device_node; | ||
333 | int its_cpu_init(void); | 334 | int its_cpu_init(void); |
334 | int its_init(struct device_node *node, struct rdists *rdists, | 335 | int its_init(struct device_node *node, struct rdists *rdists, |
335 | struct irq_domain *domain); | 336 | struct irq_domain *domain); |
diff --git a/include/linux/jump_label.h b/include/linux/jump_label.h index 8dde55974f18..0536524bb9eb 100644 --- a/include/linux/jump_label.h +++ b/include/linux/jump_label.h | |||
@@ -5,7 +5,7 @@ | |||
5 | * Jump label support | 5 | * Jump label support |
6 | * | 6 | * |
7 | * Copyright (C) 2009-2012 Jason Baron <jbaron@redhat.com> | 7 | * Copyright (C) 2009-2012 Jason Baron <jbaron@redhat.com> |
8 | * Copyright (C) 2011-2012 Peter Zijlstra <pzijlstr@redhat.com> | 8 | * Copyright (C) 2011-2012 Red Hat, Inc., Peter Zijlstra |
9 | * | 9 | * |
10 | * DEPRECATED API: | 10 | * DEPRECATED API: |
11 | * | 11 | * |
diff --git a/include/linux/kmemleak.h b/include/linux/kmemleak.h index d0a1f99e24e3..4894c6888bc6 100644 --- a/include/linux/kmemleak.h +++ b/include/linux/kmemleak.h | |||
@@ -25,7 +25,7 @@ | |||
25 | 25 | ||
26 | #ifdef CONFIG_DEBUG_KMEMLEAK | 26 | #ifdef CONFIG_DEBUG_KMEMLEAK |
27 | 27 | ||
28 | extern void kmemleak_init(void) __ref; | 28 | extern void kmemleak_init(void) __init; |
29 | extern void kmemleak_alloc(const void *ptr, size_t size, int min_count, | 29 | extern void kmemleak_alloc(const void *ptr, size_t size, int min_count, |
30 | gfp_t gfp) __ref; | 30 | gfp_t gfp) __ref; |
31 | extern void kmemleak_alloc_percpu(const void __percpu *ptr, size_t size, | 31 | extern void kmemleak_alloc_percpu(const void __percpu *ptr, size_t size, |
diff --git a/include/linux/libata.h b/include/linux/libata.h index 83577f8fd15b..600c1e0626a5 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
@@ -210,6 +210,7 @@ enum { | |||
210 | ATA_FLAG_SLAVE_POSS = (1 << 0), /* host supports slave dev */ | 210 | ATA_FLAG_SLAVE_POSS = (1 << 0), /* host supports slave dev */ |
211 | /* (doesn't imply presence) */ | 211 | /* (doesn't imply presence) */ |
212 | ATA_FLAG_SATA = (1 << 1), | 212 | ATA_FLAG_SATA = (1 << 1), |
213 | ATA_FLAG_NO_LOG_PAGE = (1 << 5), /* do not issue log page read */ | ||
213 | ATA_FLAG_NO_ATAPI = (1 << 6), /* No ATAPI support */ | 214 | ATA_FLAG_NO_ATAPI = (1 << 6), /* No ATAPI support */ |
214 | ATA_FLAG_PIO_DMA = (1 << 7), /* PIO cmds via DMA */ | 215 | ATA_FLAG_PIO_DMA = (1 << 7), /* PIO cmds via DMA */ |
215 | ATA_FLAG_PIO_LBA48 = (1 << 8), /* Host DMA engine is LBA28 only */ | 216 | ATA_FLAG_PIO_LBA48 = (1 << 8), /* Host DMA engine is LBA28 only */ |
diff --git a/include/linux/lightnvm.h b/include/linux/lightnvm.h index c6916aec43b6..034117b3be5f 100644 --- a/include/linux/lightnvm.h +++ b/include/linux/lightnvm.h | |||
@@ -50,9 +50,16 @@ enum { | |||
50 | NVM_IO_DUAL_ACCESS = 0x1, | 50 | NVM_IO_DUAL_ACCESS = 0x1, |
51 | NVM_IO_QUAD_ACCESS = 0x2, | 51 | NVM_IO_QUAD_ACCESS = 0x2, |
52 | 52 | ||
53 | /* NAND Access Modes */ | ||
53 | NVM_IO_SUSPEND = 0x80, | 54 | NVM_IO_SUSPEND = 0x80, |
54 | NVM_IO_SLC_MODE = 0x100, | 55 | NVM_IO_SLC_MODE = 0x100, |
55 | NVM_IO_SCRAMBLE_DISABLE = 0x200, | 56 | NVM_IO_SCRAMBLE_DISABLE = 0x200, |
57 | |||
58 | /* Block Types */ | ||
59 | NVM_BLK_T_FREE = 0x0, | ||
60 | NVM_BLK_T_BAD = 0x1, | ||
61 | NVM_BLK_T_DEV = 0x2, | ||
62 | NVM_BLK_T_HOST = 0x4, | ||
56 | }; | 63 | }; |
57 | 64 | ||
58 | struct nvm_id_group { | 65 | struct nvm_id_group { |
@@ -176,17 +183,17 @@ struct nvm_block; | |||
176 | 183 | ||
177 | typedef int (nvm_l2p_update_fn)(u64, u32, __le64 *, void *); | 184 | typedef int (nvm_l2p_update_fn)(u64, u32, __le64 *, void *); |
178 | typedef int (nvm_bb_update_fn)(struct ppa_addr, int, u8 *, void *); | 185 | typedef int (nvm_bb_update_fn)(struct ppa_addr, int, u8 *, void *); |
179 | typedef int (nvm_id_fn)(struct request_queue *, struct nvm_id *); | 186 | typedef int (nvm_id_fn)(struct nvm_dev *, struct nvm_id *); |
180 | typedef int (nvm_get_l2p_tbl_fn)(struct request_queue *, u64, u32, | 187 | typedef int (nvm_get_l2p_tbl_fn)(struct nvm_dev *, u64, u32, |
181 | nvm_l2p_update_fn *, void *); | 188 | nvm_l2p_update_fn *, void *); |
182 | typedef int (nvm_op_bb_tbl_fn)(struct nvm_dev *, struct ppa_addr, int, | 189 | typedef int (nvm_op_bb_tbl_fn)(struct nvm_dev *, struct ppa_addr, int, |
183 | nvm_bb_update_fn *, void *); | 190 | nvm_bb_update_fn *, void *); |
184 | typedef int (nvm_op_set_bb_fn)(struct request_queue *, struct nvm_rq *, int); | 191 | typedef int (nvm_op_set_bb_fn)(struct nvm_dev *, struct nvm_rq *, int); |
185 | typedef int (nvm_submit_io_fn)(struct request_queue *, struct nvm_rq *); | 192 | typedef int (nvm_submit_io_fn)(struct nvm_dev *, struct nvm_rq *); |
186 | typedef int (nvm_erase_blk_fn)(struct request_queue *, struct nvm_rq *); | 193 | typedef int (nvm_erase_blk_fn)(struct nvm_dev *, struct nvm_rq *); |
187 | typedef void *(nvm_create_dma_pool_fn)(struct request_queue *, char *); | 194 | typedef void *(nvm_create_dma_pool_fn)(struct nvm_dev *, char *); |
188 | typedef void (nvm_destroy_dma_pool_fn)(void *); | 195 | typedef void (nvm_destroy_dma_pool_fn)(void *); |
189 | typedef void *(nvm_dev_dma_alloc_fn)(struct request_queue *, void *, gfp_t, | 196 | typedef void *(nvm_dev_dma_alloc_fn)(struct nvm_dev *, void *, gfp_t, |
190 | dma_addr_t *); | 197 | dma_addr_t *); |
191 | typedef void (nvm_dev_dma_free_fn)(void *, void*, dma_addr_t); | 198 | typedef void (nvm_dev_dma_free_fn)(void *, void*, dma_addr_t); |
192 | 199 | ||
diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h index 70400dc7660f..c57e424d914b 100644 --- a/include/linux/lockdep.h +++ b/include/linux/lockdep.h | |||
@@ -2,7 +2,7 @@ | |||
2 | * Runtime locking correctness validator | 2 | * Runtime locking correctness validator |
3 | * | 3 | * |
4 | * Copyright (C) 2006,2007 Red Hat, Inc., Ingo Molnar <mingo@redhat.com> | 4 | * Copyright (C) 2006,2007 Red Hat, Inc., Ingo Molnar <mingo@redhat.com> |
5 | * Copyright (C) 2007 Red Hat, Inc., Peter Zijlstra <pzijlstr@redhat.com> | 5 | * Copyright (C) 2007 Red Hat, Inc., Peter Zijlstra |
6 | * | 6 | * |
7 | * see Documentation/locking/lockdep-design.txt for more details. | 7 | * see Documentation/locking/lockdep-design.txt for more details. |
8 | */ | 8 | */ |
diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h index 7501626ab529..d3133be12d92 100644 --- a/include/linux/mlx4/device.h +++ b/include/linux/mlx4/device.h | |||
@@ -427,6 +427,17 @@ enum { | |||
427 | }; | 427 | }; |
428 | 428 | ||
429 | enum { | 429 | enum { |
430 | /* | ||
431 | * Max wqe size for rdma read is 512 bytes, so this | ||
432 | * limits our max_sge_rd as the wqe needs to fit: | ||
433 | * - ctrl segment (16 bytes) | ||
434 | * - rdma segment (16 bytes) | ||
435 | * - scatter elements (16 bytes each) | ||
436 | */ | ||
437 | MLX4_MAX_SGE_RD = (512 - 16 - 16) / 16 | ||
438 | }; | ||
439 | |||
440 | enum { | ||
430 | MLX4_DEV_PMC_SUBTYPE_GUID_INFO = 0x14, | 441 | MLX4_DEV_PMC_SUBTYPE_GUID_INFO = 0x14, |
431 | MLX4_DEV_PMC_SUBTYPE_PORT_INFO = 0x15, | 442 | MLX4_DEV_PMC_SUBTYPE_PORT_INFO = 0x15, |
432 | MLX4_DEV_PMC_SUBTYPE_PKEY_TABLE = 0x16, | 443 | MLX4_DEV_PMC_SUBTYPE_PKEY_TABLE = 0x16, |
diff --git a/include/linux/mmdebug.h b/include/linux/mmdebug.h index 877ef226f90f..772362adf471 100644 --- a/include/linux/mmdebug.h +++ b/include/linux/mmdebug.h | |||
@@ -1,6 +1,7 @@ | |||
1 | #ifndef LINUX_MM_DEBUG_H | 1 | #ifndef LINUX_MM_DEBUG_H |
2 | #define LINUX_MM_DEBUG_H 1 | 2 | #define LINUX_MM_DEBUG_H 1 |
3 | 3 | ||
4 | #include <linux/bug.h> | ||
4 | #include <linux/stringify.h> | 5 | #include <linux/stringify.h> |
5 | 6 | ||
6 | struct page; | 7 | struct page; |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 3b5d134e945a..3143c847bddb 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -2084,7 +2084,7 @@ struct pcpu_sw_netstats { | |||
2084 | }) | 2084 | }) |
2085 | 2085 | ||
2086 | #define netdev_alloc_pcpu_stats(type) \ | 2086 | #define netdev_alloc_pcpu_stats(type) \ |
2087 | __netdev_alloc_pcpu_stats(type, GFP_KERNEL); | 2087 | __netdev_alloc_pcpu_stats(type, GFP_KERNEL) |
2088 | 2088 | ||
2089 | #include <linux/notifier.h> | 2089 | #include <linux/notifier.h> |
2090 | 2090 | ||
diff --git a/include/linux/netfilter/nfnetlink.h b/include/linux/netfilter/nfnetlink.h index 249d1bb01e03..5646b24bfc64 100644 --- a/include/linux/netfilter/nfnetlink.h +++ b/include/linux/netfilter/nfnetlink.h | |||
@@ -14,7 +14,7 @@ struct nfnl_callback { | |||
14 | int (*call_rcu)(struct sock *nl, struct sk_buff *skb, | 14 | int (*call_rcu)(struct sock *nl, struct sk_buff *skb, |
15 | const struct nlmsghdr *nlh, | 15 | const struct nlmsghdr *nlh, |
16 | const struct nlattr * const cda[]); | 16 | const struct nlattr * const cda[]); |
17 | int (*call_batch)(struct sock *nl, struct sk_buff *skb, | 17 | int (*call_batch)(struct net *net, struct sock *nl, struct sk_buff *skb, |
18 | const struct nlmsghdr *nlh, | 18 | const struct nlmsghdr *nlh, |
19 | const struct nlattr * const cda[]); | 19 | const struct nlattr * const cda[]); |
20 | const struct nla_policy *policy; /* netlink attribute policy */ | 20 | const struct nla_policy *policy; /* netlink attribute policy */ |
diff --git a/include/linux/of_irq.h b/include/linux/of_irq.h index 039f2eec49ce..1e0deb8e8494 100644 --- a/include/linux/of_irq.h +++ b/include/linux/of_irq.h | |||
@@ -46,12 +46,14 @@ extern int of_irq_get(struct device_node *dev, int index); | |||
46 | extern int of_irq_get_byname(struct device_node *dev, const char *name); | 46 | extern int of_irq_get_byname(struct device_node *dev, const char *name); |
47 | extern int of_irq_to_resource_table(struct device_node *dev, | 47 | extern int of_irq_to_resource_table(struct device_node *dev, |
48 | struct resource *res, int nr_irqs); | 48 | struct resource *res, int nr_irqs); |
49 | extern struct device_node *of_irq_find_parent(struct device_node *child); | ||
49 | extern struct irq_domain *of_msi_get_domain(struct device *dev, | 50 | extern struct irq_domain *of_msi_get_domain(struct device *dev, |
50 | struct device_node *np, | 51 | struct device_node *np, |
51 | enum irq_domain_bus_token token); | 52 | enum irq_domain_bus_token token); |
52 | extern struct irq_domain *of_msi_map_get_device_domain(struct device *dev, | 53 | extern struct irq_domain *of_msi_map_get_device_domain(struct device *dev, |
53 | u32 rid); | 54 | u32 rid); |
54 | extern void of_msi_configure(struct device *dev, struct device_node *np); | 55 | extern void of_msi_configure(struct device *dev, struct device_node *np); |
56 | u32 of_msi_map_rid(struct device *dev, struct device_node *msi_np, u32 rid_in); | ||
55 | #else | 57 | #else |
56 | static inline int of_irq_count(struct device_node *dev) | 58 | static inline int of_irq_count(struct device_node *dev) |
57 | { | 59 | { |
@@ -70,6 +72,11 @@ static inline int of_irq_to_resource_table(struct device_node *dev, | |||
70 | { | 72 | { |
71 | return 0; | 73 | return 0; |
72 | } | 74 | } |
75 | static inline void *of_irq_find_parent(struct device_node *child) | ||
76 | { | ||
77 | return NULL; | ||
78 | } | ||
79 | |||
73 | static inline struct irq_domain *of_msi_get_domain(struct device *dev, | 80 | static inline struct irq_domain *of_msi_get_domain(struct device *dev, |
74 | struct device_node *np, | 81 | struct device_node *np, |
75 | enum irq_domain_bus_token token) | 82 | enum irq_domain_bus_token token) |
@@ -84,6 +91,11 @@ static inline struct irq_domain *of_msi_map_get_device_domain(struct device *dev | |||
84 | static inline void of_msi_configure(struct device *dev, struct device_node *np) | 91 | static inline void of_msi_configure(struct device *dev, struct device_node *np) |
85 | { | 92 | { |
86 | } | 93 | } |
94 | static inline u32 of_msi_map_rid(struct device *dev, | ||
95 | struct device_node *msi_np, u32 rid_in) | ||
96 | { | ||
97 | return rid_in; | ||
98 | } | ||
87 | #endif | 99 | #endif |
88 | 100 | ||
89 | #if defined(CONFIG_OF_IRQ) || defined(CONFIG_SPARC) | 101 | #if defined(CONFIG_OF_IRQ) || defined(CONFIG_SPARC) |
@@ -93,7 +105,6 @@ static inline void of_msi_configure(struct device *dev, struct device_node *np) | |||
93 | * so declare it here regardless of the CONFIG_OF_IRQ setting. | 105 | * so declare it here regardless of the CONFIG_OF_IRQ setting. |
94 | */ | 106 | */ |
95 | extern unsigned int irq_of_parse_and_map(struct device_node *node, int index); | 107 | extern unsigned int irq_of_parse_and_map(struct device_node *node, int index); |
96 | u32 of_msi_map_rid(struct device *dev, struct device_node *msi_np, u32 rid_in); | ||
97 | 108 | ||
98 | #else /* !CONFIG_OF && !CONFIG_SPARC */ | 109 | #else /* !CONFIG_OF && !CONFIG_SPARC */ |
99 | static inline unsigned int irq_of_parse_and_map(struct device_node *dev, | 110 | static inline unsigned int irq_of_parse_and_map(struct device_node *dev, |
@@ -101,12 +112,6 @@ static inline unsigned int irq_of_parse_and_map(struct device_node *dev, | |||
101 | { | 112 | { |
102 | return 0; | 113 | return 0; |
103 | } | 114 | } |
104 | |||
105 | static inline u32 of_msi_map_rid(struct device *dev, | ||
106 | struct device_node *msi_np, u32 rid_in) | ||
107 | { | ||
108 | return rid_in; | ||
109 | } | ||
110 | #endif /* !CONFIG_OF */ | 115 | #endif /* !CONFIG_OF */ |
111 | 116 | ||
112 | #endif /* __OF_IRQ_H */ | 117 | #endif /* __OF_IRQ_H */ |
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index d841d33bcdc9..f9828a48f16a 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h | |||
@@ -697,9 +697,11 @@ struct perf_cgroup { | |||
697 | * if there is no cgroup event for the current CPU context. | 697 | * if there is no cgroup event for the current CPU context. |
698 | */ | 698 | */ |
699 | static inline struct perf_cgroup * | 699 | static inline struct perf_cgroup * |
700 | perf_cgroup_from_task(struct task_struct *task) | 700 | perf_cgroup_from_task(struct task_struct *task, struct perf_event_context *ctx) |
701 | { | 701 | { |
702 | return container_of(task_css(task, perf_event_cgrp_id), | 702 | return container_of(task_css_check(task, perf_event_cgrp_id, |
703 | ctx ? lockdep_is_held(&ctx->lock) | ||
704 | : true), | ||
703 | struct perf_cgroup, css); | 705 | struct perf_cgroup, css); |
704 | } | 706 | } |
705 | #endif /* CONFIG_CGROUP_PERF */ | 707 | #endif /* CONFIG_CGROUP_PERF */ |
diff --git a/include/linux/platform_data/edma.h b/include/linux/platform_data/edma.h index e2878baeb90e..4299f4ba03bd 100644 --- a/include/linux/platform_data/edma.h +++ b/include/linux/platform_data/edma.h | |||
@@ -72,7 +72,7 @@ struct edma_soc_info { | |||
72 | struct edma_rsv_info *rsv; | 72 | struct edma_rsv_info *rsv; |
73 | 73 | ||
74 | /* List of channels allocated for memcpy, terminated with -1 */ | 74 | /* List of channels allocated for memcpy, terminated with -1 */ |
75 | s16 *memcpy_channels; | 75 | s32 *memcpy_channels; |
76 | 76 | ||
77 | s8 (*queue_priority_mapping)[2]; | 77 | s8 (*queue_priority_mapping)[2]; |
78 | const s16 (*xbar_chans)[2]; | 78 | const s16 (*xbar_chans)[2]; |
diff --git a/include/linux/proportions.h b/include/linux/proportions.h index 5440f64d2942..21221338ad18 100644 --- a/include/linux/proportions.h +++ b/include/linux/proportions.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * FLoating proportions | 2 | * FLoating proportions |
3 | * | 3 | * |
4 | * Copyright (C) 2007 Red Hat, Inc., Peter Zijlstra <pzijlstr@redhat.com> | 4 | * Copyright (C) 2007 Red Hat, Inc., Peter Zijlstra |
5 | * | 5 | * |
6 | * This file contains the public data structure and API definitions. | 6 | * This file contains the public data structure and API definitions. |
7 | */ | 7 | */ |
diff --git a/include/linux/qed/common_hsi.h b/include/linux/qed/common_hsi.h index 6a4347639c03..1d1ba2c5ee7a 100644 --- a/include/linux/qed/common_hsi.h +++ b/include/linux/qed/common_hsi.h | |||
@@ -9,6 +9,8 @@ | |||
9 | #ifndef __COMMON_HSI__ | 9 | #ifndef __COMMON_HSI__ |
10 | #define __COMMON_HSI__ | 10 | #define __COMMON_HSI__ |
11 | 11 | ||
12 | #define CORE_SPQE_PAGE_SIZE_BYTES 4096 | ||
13 | |||
12 | #define FW_MAJOR_VERSION 8 | 14 | #define FW_MAJOR_VERSION 8 |
13 | #define FW_MINOR_VERSION 4 | 15 | #define FW_MINOR_VERSION 4 |
14 | #define FW_REVISION_VERSION 2 | 16 | #define FW_REVISION_VERSION 2 |
diff --git a/include/linux/qed/qed_chain.h b/include/linux/qed/qed_chain.h index b920c3605c46..41b9049b57e2 100644 --- a/include/linux/qed/qed_chain.h +++ b/include/linux/qed/qed_chain.h | |||
@@ -111,7 +111,8 @@ static inline u16 qed_chain_get_elem_left(struct qed_chain *p_chain) | |||
111 | used = ((u32)0x10000u + (u32)(p_chain->prod_idx)) - | 111 | used = ((u32)0x10000u + (u32)(p_chain->prod_idx)) - |
112 | (u32)p_chain->cons_idx; | 112 | (u32)p_chain->cons_idx; |
113 | if (p_chain->mode == QED_CHAIN_MODE_NEXT_PTR) | 113 | if (p_chain->mode == QED_CHAIN_MODE_NEXT_PTR) |
114 | used -= (used / p_chain->elem_per_page); | 114 | used -= p_chain->prod_idx / p_chain->elem_per_page - |
115 | p_chain->cons_idx / p_chain->elem_per_page; | ||
115 | 116 | ||
116 | return p_chain->capacity - used; | 117 | return p_chain->capacity - used; |
117 | } | 118 | } |
diff --git a/include/linux/rhashtable.h b/include/linux/rhashtable.h index 843ceca9a21e..e50b31d18462 100644 --- a/include/linux/rhashtable.h +++ b/include/linux/rhashtable.h | |||
@@ -19,6 +19,7 @@ | |||
19 | 19 | ||
20 | #include <linux/atomic.h> | 20 | #include <linux/atomic.h> |
21 | #include <linux/compiler.h> | 21 | #include <linux/compiler.h> |
22 | #include <linux/err.h> | ||
22 | #include <linux/errno.h> | 23 | #include <linux/errno.h> |
23 | #include <linux/jhash.h> | 24 | #include <linux/jhash.h> |
24 | #include <linux/list_nulls.h> | 25 | #include <linux/list_nulls.h> |
@@ -339,10 +340,11 @@ static inline int lockdep_rht_bucket_is_held(const struct bucket_table *tbl, | |||
339 | int rhashtable_init(struct rhashtable *ht, | 340 | int rhashtable_init(struct rhashtable *ht, |
340 | const struct rhashtable_params *params); | 341 | const struct rhashtable_params *params); |
341 | 342 | ||
342 | int rhashtable_insert_slow(struct rhashtable *ht, const void *key, | 343 | struct bucket_table *rhashtable_insert_slow(struct rhashtable *ht, |
343 | struct rhash_head *obj, | 344 | const void *key, |
344 | struct bucket_table *old_tbl); | 345 | struct rhash_head *obj, |
345 | int rhashtable_insert_rehash(struct rhashtable *ht); | 346 | struct bucket_table *old_tbl); |
347 | int rhashtable_insert_rehash(struct rhashtable *ht, struct bucket_table *tbl); | ||
346 | 348 | ||
347 | int rhashtable_walk_init(struct rhashtable *ht, struct rhashtable_iter *iter); | 349 | int rhashtable_walk_init(struct rhashtable *ht, struct rhashtable_iter *iter); |
348 | void rhashtable_walk_exit(struct rhashtable_iter *iter); | 350 | void rhashtable_walk_exit(struct rhashtable_iter *iter); |
@@ -598,9 +600,11 @@ restart: | |||
598 | 600 | ||
599 | new_tbl = rht_dereference_rcu(tbl->future_tbl, ht); | 601 | new_tbl = rht_dereference_rcu(tbl->future_tbl, ht); |
600 | if (unlikely(new_tbl)) { | 602 | if (unlikely(new_tbl)) { |
601 | err = rhashtable_insert_slow(ht, key, obj, new_tbl); | 603 | tbl = rhashtable_insert_slow(ht, key, obj, new_tbl); |
602 | if (err == -EAGAIN) | 604 | if (!IS_ERR_OR_NULL(tbl)) |
603 | goto slow_path; | 605 | goto slow_path; |
606 | |||
607 | err = PTR_ERR(tbl); | ||
604 | goto out; | 608 | goto out; |
605 | } | 609 | } |
606 | 610 | ||
@@ -611,7 +615,7 @@ restart: | |||
611 | if (unlikely(rht_grow_above_100(ht, tbl))) { | 615 | if (unlikely(rht_grow_above_100(ht, tbl))) { |
612 | slow_path: | 616 | slow_path: |
613 | spin_unlock_bh(lock); | 617 | spin_unlock_bh(lock); |
614 | err = rhashtable_insert_rehash(ht); | 618 | err = rhashtable_insert_rehash(ht, tbl); |
615 | rcu_read_unlock(); | 619 | rcu_read_unlock(); |
616 | if (err) | 620 | if (err) |
617 | return err; | 621 | return err; |
diff --git a/include/linux/stop_machine.h b/include/linux/stop_machine.h index 0adedca24c5b..0e1b1540597a 100644 --- a/include/linux/stop_machine.h +++ b/include/linux/stop_machine.h | |||
@@ -99,7 +99,7 @@ static inline int try_stop_cpus(const struct cpumask *cpumask, | |||
99 | * grabbing every spinlock (and more). So the "read" side to such a | 99 | * grabbing every spinlock (and more). So the "read" side to such a |
100 | * lock is anything which disables preemption. | 100 | * lock is anything which disables preemption. |
101 | */ | 101 | */ |
102 | #if defined(CONFIG_STOP_MACHINE) && defined(CONFIG_SMP) | 102 | #if defined(CONFIG_SMP) || defined(CONFIG_HOTPLUG_CPU) |
103 | 103 | ||
104 | /** | 104 | /** |
105 | * stop_machine: freeze the machine on all CPUs and run this function | 105 | * stop_machine: freeze the machine on all CPUs and run this function |
@@ -118,7 +118,7 @@ int stop_machine(cpu_stop_fn_t fn, void *data, const struct cpumask *cpus); | |||
118 | 118 | ||
119 | int stop_machine_from_inactive_cpu(cpu_stop_fn_t fn, void *data, | 119 | int stop_machine_from_inactive_cpu(cpu_stop_fn_t fn, void *data, |
120 | const struct cpumask *cpus); | 120 | const struct cpumask *cpus); |
121 | #else /* CONFIG_STOP_MACHINE && CONFIG_SMP */ | 121 | #else /* CONFIG_SMP || CONFIG_HOTPLUG_CPU */ |
122 | 122 | ||
123 | static inline int stop_machine(cpu_stop_fn_t fn, void *data, | 123 | static inline int stop_machine(cpu_stop_fn_t fn, void *data, |
124 | const struct cpumask *cpus) | 124 | const struct cpumask *cpus) |
@@ -137,5 +137,5 @@ static inline int stop_machine_from_inactive_cpu(cpu_stop_fn_t fn, void *data, | |||
137 | return stop_machine(fn, data, cpus); | 137 | return stop_machine(fn, data, cpus); |
138 | } | 138 | } |
139 | 139 | ||
140 | #endif /* CONFIG_STOP_MACHINE && CONFIG_SMP */ | 140 | #endif /* CONFIG_SMP || CONFIG_HOTPLUG_CPU */ |
141 | #endif /* _LINUX_STOP_MACHINE */ | 141 | #endif /* _LINUX_STOP_MACHINE */ |
diff --git a/include/linux/uprobes.h b/include/linux/uprobes.h index 0bdc72f36905..4a29c75b146e 100644 --- a/include/linux/uprobes.h +++ b/include/linux/uprobes.h | |||
@@ -21,7 +21,7 @@ | |||
21 | * Authors: | 21 | * Authors: |
22 | * Srikar Dronamraju | 22 | * Srikar Dronamraju |
23 | * Jim Keniston | 23 | * Jim Keniston |
24 | * Copyright (C) 2011-2012 Red Hat, Inc., Peter Zijlstra <pzijlstr@redhat.com> | 24 | * Copyright (C) 2011-2012 Red Hat, Inc., Peter Zijlstra |
25 | */ | 25 | */ |
26 | 26 | ||
27 | #include <linux/errno.h> | 27 | #include <linux/errno.h> |
diff --git a/include/linux/usb/quirks.h b/include/linux/usb/quirks.h index 9948c874e3f1..1d0043dc34e4 100644 --- a/include/linux/usb/quirks.h +++ b/include/linux/usb/quirks.h | |||
@@ -47,4 +47,7 @@ | |||
47 | /* device generates spurious wakeup, ignore remote wakeup capability */ | 47 | /* device generates spurious wakeup, ignore remote wakeup capability */ |
48 | #define USB_QUIRK_IGNORE_REMOTE_WAKEUP BIT(9) | 48 | #define USB_QUIRK_IGNORE_REMOTE_WAKEUP BIT(9) |
49 | 49 | ||
50 | /* device can't handle Link Power Management */ | ||
51 | #define USB_QUIRK_NO_LPM BIT(10) | ||
52 | |||
50 | #endif /* __LINUX_USB_QUIRKS_H */ | 53 | #endif /* __LINUX_USB_QUIRKS_H */ |
diff --git a/include/linux/vfio.h b/include/linux/vfio.h index 610a86a892b8..ddb440975382 100644 --- a/include/linux/vfio.h +++ b/include/linux/vfio.h | |||
@@ -44,9 +44,6 @@ struct vfio_device_ops { | |||
44 | void (*request)(void *device_data, unsigned int count); | 44 | void (*request)(void *device_data, unsigned int count); |
45 | }; | 45 | }; |
46 | 46 | ||
47 | extern struct iommu_group *vfio_iommu_group_get(struct device *dev); | ||
48 | extern void vfio_iommu_group_put(struct iommu_group *group, struct device *dev); | ||
49 | |||
50 | extern int vfio_add_group_dev(struct device *dev, | 47 | extern int vfio_add_group_dev(struct device *dev, |
51 | const struct vfio_device_ops *ops, | 48 | const struct vfio_device_ops *ops, |
52 | void *device_data); | 49 | void *device_data); |
diff --git a/include/linux/wait.h b/include/linux/wait.h index 1e1bf9f963a9..513b36f04dfd 100644 --- a/include/linux/wait.h +++ b/include/linux/wait.h | |||
@@ -145,7 +145,7 @@ __remove_wait_queue(wait_queue_head_t *head, wait_queue_t *old) | |||
145 | list_del(&old->task_list); | 145 | list_del(&old->task_list); |
146 | } | 146 | } |
147 | 147 | ||
148 | typedef int wait_bit_action_f(struct wait_bit_key *); | 148 | typedef int wait_bit_action_f(struct wait_bit_key *, int mode); |
149 | void __wake_up(wait_queue_head_t *q, unsigned int mode, int nr, void *key); | 149 | void __wake_up(wait_queue_head_t *q, unsigned int mode, int nr, void *key); |
150 | void __wake_up_locked_key(wait_queue_head_t *q, unsigned int mode, void *key); | 150 | void __wake_up_locked_key(wait_queue_head_t *q, unsigned int mode, void *key); |
151 | void __wake_up_sync_key(wait_queue_head_t *q, unsigned int mode, int nr, void *key); | 151 | void __wake_up_sync_key(wait_queue_head_t *q, unsigned int mode, int nr, void *key); |
@@ -960,10 +960,10 @@ int wake_bit_function(wait_queue_t *wait, unsigned mode, int sync, void *key); | |||
960 | } while (0) | 960 | } while (0) |
961 | 961 | ||
962 | 962 | ||
963 | extern int bit_wait(struct wait_bit_key *); | 963 | extern int bit_wait(struct wait_bit_key *, int); |
964 | extern int bit_wait_io(struct wait_bit_key *); | 964 | extern int bit_wait_io(struct wait_bit_key *, int); |
965 | extern int bit_wait_timeout(struct wait_bit_key *); | 965 | extern int bit_wait_timeout(struct wait_bit_key *, int); |
966 | extern int bit_wait_io_timeout(struct wait_bit_key *); | 966 | extern int bit_wait_io_timeout(struct wait_bit_key *, int); |
967 | 967 | ||
968 | /** | 968 | /** |
969 | * wait_on_bit - wait for a bit to be cleared | 969 | * wait_on_bit - wait for a bit to be cleared |
diff --git a/include/net/dst.h b/include/net/dst.h index 1279f9b09791..c7329dcd90cc 100644 --- a/include/net/dst.h +++ b/include/net/dst.h | |||
@@ -322,6 +322,39 @@ static inline void skb_dst_force(struct sk_buff *skb) | |||
322 | } | 322 | } |
323 | } | 323 | } |
324 | 324 | ||
325 | /** | ||
326 | * dst_hold_safe - Take a reference on a dst if possible | ||
327 | * @dst: pointer to dst entry | ||
328 | * | ||
329 | * This helper returns false if it could not safely | ||
330 | * take a reference on a dst. | ||
331 | */ | ||
332 | static inline bool dst_hold_safe(struct dst_entry *dst) | ||
333 | { | ||
334 | if (dst->flags & DST_NOCACHE) | ||
335 | return atomic_inc_not_zero(&dst->__refcnt); | ||
336 | dst_hold(dst); | ||
337 | return true; | ||
338 | } | ||
339 | |||
340 | /** | ||
341 | * skb_dst_force_safe - makes sure skb dst is refcounted | ||
342 | * @skb: buffer | ||
343 | * | ||
344 | * If dst is not yet refcounted and not destroyed, grab a ref on it. | ||
345 | */ | ||
346 | static inline void skb_dst_force_safe(struct sk_buff *skb) | ||
347 | { | ||
348 | if (skb_dst_is_noref(skb)) { | ||
349 | struct dst_entry *dst = skb_dst(skb); | ||
350 | |||
351 | if (!dst_hold_safe(dst)) | ||
352 | dst = NULL; | ||
353 | |||
354 | skb->_skb_refdst = (unsigned long)dst; | ||
355 | } | ||
356 | } | ||
357 | |||
325 | 358 | ||
326 | /** | 359 | /** |
327 | * __skb_tunnel_rx - prepare skb for rx reinsert | 360 | * __skb_tunnel_rx - prepare skb for rx reinsert |
diff --git a/include/net/inet_sock.h b/include/net/inet_sock.h index 2134e6d815bc..625bdf95d673 100644 --- a/include/net/inet_sock.h +++ b/include/net/inet_sock.h | |||
@@ -210,18 +210,37 @@ struct inet_sock { | |||
210 | #define IP_CMSG_ORIGDSTADDR BIT(6) | 210 | #define IP_CMSG_ORIGDSTADDR BIT(6) |
211 | #define IP_CMSG_CHECKSUM BIT(7) | 211 | #define IP_CMSG_CHECKSUM BIT(7) |
212 | 212 | ||
213 | /* SYNACK messages might be attached to request sockets. | 213 | /** |
214 | * sk_to_full_sk - Access to a full socket | ||
215 | * @sk: pointer to a socket | ||
216 | * | ||
217 | * SYNACK messages might be attached to request sockets. | ||
214 | * Some places want to reach the listener in this case. | 218 | * Some places want to reach the listener in this case. |
215 | */ | 219 | */ |
216 | static inline struct sock *skb_to_full_sk(const struct sk_buff *skb) | 220 | static inline struct sock *sk_to_full_sk(struct sock *sk) |
217 | { | 221 | { |
218 | struct sock *sk = skb->sk; | 222 | #ifdef CONFIG_INET |
219 | |||
220 | if (sk && sk->sk_state == TCP_NEW_SYN_RECV) | 223 | if (sk && sk->sk_state == TCP_NEW_SYN_RECV) |
221 | sk = inet_reqsk(sk)->rsk_listener; | 224 | sk = inet_reqsk(sk)->rsk_listener; |
225 | #endif | ||
226 | return sk; | ||
227 | } | ||
228 | |||
229 | /* sk_to_full_sk() variant with a const argument */ | ||
230 | static inline const struct sock *sk_const_to_full_sk(const struct sock *sk) | ||
231 | { | ||
232 | #ifdef CONFIG_INET | ||
233 | if (sk && sk->sk_state == TCP_NEW_SYN_RECV) | ||
234 | sk = ((const struct request_sock *)sk)->rsk_listener; | ||
235 | #endif | ||
222 | return sk; | 236 | return sk; |
223 | } | 237 | } |
224 | 238 | ||
239 | static inline struct sock *skb_to_full_sk(const struct sk_buff *skb) | ||
240 | { | ||
241 | return sk_to_full_sk(skb->sk); | ||
242 | } | ||
243 | |||
225 | static inline struct inet_sock *inet_sk(const struct sock *sk) | 244 | static inline struct inet_sock *inet_sk(const struct sock *sk) |
226 | { | 245 | { |
227 | return (struct inet_sock *)sk; | 246 | return (struct inet_sock *)sk; |
diff --git a/include/net/inetpeer.h b/include/net/inetpeer.h index 4a6009d4486b..235c7811a86a 100644 --- a/include/net/inetpeer.h +++ b/include/net/inetpeer.h | |||
@@ -78,6 +78,7 @@ void inet_initpeers(void) __init; | |||
78 | static inline void inetpeer_set_addr_v4(struct inetpeer_addr *iaddr, __be32 ip) | 78 | static inline void inetpeer_set_addr_v4(struct inetpeer_addr *iaddr, __be32 ip) |
79 | { | 79 | { |
80 | iaddr->a4.addr = ip; | 80 | iaddr->a4.addr = ip; |
81 | iaddr->a4.vif = 0; | ||
81 | iaddr->family = AF_INET; | 82 | iaddr->family = AF_INET; |
82 | } | 83 | } |
83 | 84 | ||
diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h index 7bbb71081aeb..eea9bdeecba2 100644 --- a/include/net/sctp/structs.h +++ b/include/net/sctp/structs.h | |||
@@ -1493,7 +1493,8 @@ struct sctp_association { | |||
1493 | * : SACK's are not delayed (see Section 6). | 1493 | * : SACK's are not delayed (see Section 6). |
1494 | */ | 1494 | */ |
1495 | __u8 sack_needed:1, /* Do we need to sack the peer? */ | 1495 | __u8 sack_needed:1, /* Do we need to sack the peer? */ |
1496 | sack_generation:1; | 1496 | sack_generation:1, |
1497 | zero_window_announced:1; | ||
1497 | __u32 sack_cnt; | 1498 | __u32 sack_cnt; |
1498 | 1499 | ||
1499 | __u32 adaptation_ind; /* Adaptation Code point. */ | 1500 | __u32 adaptation_ind; /* Adaptation Code point. */ |
diff --git a/include/net/sock.h b/include/net/sock.h index 52d27ee924f4..14d3c0734007 100644 --- a/include/net/sock.h +++ b/include/net/sock.h | |||
@@ -388,7 +388,7 @@ struct sock { | |||
388 | struct socket_wq *sk_wq_raw; | 388 | struct socket_wq *sk_wq_raw; |
389 | }; | 389 | }; |
390 | #ifdef CONFIG_XFRM | 390 | #ifdef CONFIG_XFRM |
391 | struct xfrm_policy *sk_policy[2]; | 391 | struct xfrm_policy __rcu *sk_policy[2]; |
392 | #endif | 392 | #endif |
393 | struct dst_entry *sk_rx_dst; | 393 | struct dst_entry *sk_rx_dst; |
394 | struct dst_entry __rcu *sk_dst_cache; | 394 | struct dst_entry __rcu *sk_dst_cache; |
@@ -404,6 +404,7 @@ struct sock { | |||
404 | sk_userlocks : 4, | 404 | sk_userlocks : 4, |
405 | sk_protocol : 8, | 405 | sk_protocol : 8, |
406 | sk_type : 16; | 406 | sk_type : 16; |
407 | #define SK_PROTOCOL_MAX U8_MAX | ||
407 | kmemcheck_bitfield_end(flags); | 408 | kmemcheck_bitfield_end(flags); |
408 | int sk_wmem_queued; | 409 | int sk_wmem_queued; |
409 | gfp_t sk_allocation; | 410 | gfp_t sk_allocation; |
@@ -740,6 +741,8 @@ enum sock_flags { | |||
740 | SOCK_SELECT_ERR_QUEUE, /* Wake select on error queue */ | 741 | SOCK_SELECT_ERR_QUEUE, /* Wake select on error queue */ |
741 | }; | 742 | }; |
742 | 743 | ||
744 | #define SK_FLAGS_TIMESTAMP ((1UL << SOCK_TIMESTAMP) | (1UL << SOCK_TIMESTAMPING_RX_SOFTWARE)) | ||
745 | |||
743 | static inline void sock_copy_flags(struct sock *nsk, struct sock *osk) | 746 | static inline void sock_copy_flags(struct sock *nsk, struct sock *osk) |
744 | { | 747 | { |
745 | nsk->sk_flags = osk->sk_flags; | 748 | nsk->sk_flags = osk->sk_flags; |
@@ -814,7 +817,7 @@ void sk_stream_write_space(struct sock *sk); | |||
814 | static inline void __sk_add_backlog(struct sock *sk, struct sk_buff *skb) | 817 | static inline void __sk_add_backlog(struct sock *sk, struct sk_buff *skb) |
815 | { | 818 | { |
816 | /* dont let skb dst not refcounted, we are going to leave rcu lock */ | 819 | /* dont let skb dst not refcounted, we are going to leave rcu lock */ |
817 | skb_dst_force(skb); | 820 | skb_dst_force_safe(skb); |
818 | 821 | ||
819 | if (!sk->sk_backlog.tail) | 822 | if (!sk->sk_backlog.tail) |
820 | sk->sk_backlog.head = skb; | 823 | sk->sk_backlog.head = skb; |
diff --git a/include/net/vxlan.h b/include/net/vxlan.h index c1c899c3a51b..e289ada6adf6 100644 --- a/include/net/vxlan.h +++ b/include/net/vxlan.h | |||
@@ -79,7 +79,7 @@ struct vxlanhdr { | |||
79 | }; | 79 | }; |
80 | 80 | ||
81 | /* VXLAN header flags. */ | 81 | /* VXLAN header flags. */ |
82 | #define VXLAN_HF_RCO BIT(24) | 82 | #define VXLAN_HF_RCO BIT(21) |
83 | #define VXLAN_HF_VNI BIT(27) | 83 | #define VXLAN_HF_VNI BIT(27) |
84 | #define VXLAN_HF_GBP BIT(31) | 84 | #define VXLAN_HF_GBP BIT(31) |
85 | 85 | ||
diff --git a/include/net/xfrm.h b/include/net/xfrm.h index 4a9c21f9b4ea..d6f6e5006ee9 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h | |||
@@ -548,6 +548,7 @@ struct xfrm_policy { | |||
548 | u16 family; | 548 | u16 family; |
549 | struct xfrm_sec_ctx *security; | 549 | struct xfrm_sec_ctx *security; |
550 | struct xfrm_tmpl xfrm_vec[XFRM_MAX_DEPTH]; | 550 | struct xfrm_tmpl xfrm_vec[XFRM_MAX_DEPTH]; |
551 | struct rcu_head rcu; | ||
551 | }; | 552 | }; |
552 | 553 | ||
553 | static inline struct net *xp_net(const struct xfrm_policy *xp) | 554 | static inline struct net *xp_net(const struct xfrm_policy *xp) |
@@ -1141,12 +1142,14 @@ static inline int xfrm6_route_forward(struct sk_buff *skb) | |||
1141 | return xfrm_route_forward(skb, AF_INET6); | 1142 | return xfrm_route_forward(skb, AF_INET6); |
1142 | } | 1143 | } |
1143 | 1144 | ||
1144 | int __xfrm_sk_clone_policy(struct sock *sk); | 1145 | int __xfrm_sk_clone_policy(struct sock *sk, const struct sock *osk); |
1145 | 1146 | ||
1146 | static inline int xfrm_sk_clone_policy(struct sock *sk) | 1147 | static inline int xfrm_sk_clone_policy(struct sock *sk, const struct sock *osk) |
1147 | { | 1148 | { |
1148 | if (unlikely(sk->sk_policy[0] || sk->sk_policy[1])) | 1149 | sk->sk_policy[0] = NULL; |
1149 | return __xfrm_sk_clone_policy(sk); | 1150 | sk->sk_policy[1] = NULL; |
1151 | if (unlikely(osk->sk_policy[0] || osk->sk_policy[1])) | ||
1152 | return __xfrm_sk_clone_policy(sk, osk); | ||
1150 | return 0; | 1153 | return 0; |
1151 | } | 1154 | } |
1152 | 1155 | ||
@@ -1154,12 +1157,16 @@ int xfrm_policy_delete(struct xfrm_policy *pol, int dir); | |||
1154 | 1157 | ||
1155 | static inline void xfrm_sk_free_policy(struct sock *sk) | 1158 | static inline void xfrm_sk_free_policy(struct sock *sk) |
1156 | { | 1159 | { |
1157 | if (unlikely(sk->sk_policy[0] != NULL)) { | 1160 | struct xfrm_policy *pol; |
1158 | xfrm_policy_delete(sk->sk_policy[0], XFRM_POLICY_MAX); | 1161 | |
1162 | pol = rcu_dereference_protected(sk->sk_policy[0], 1); | ||
1163 | if (unlikely(pol != NULL)) { | ||
1164 | xfrm_policy_delete(pol, XFRM_POLICY_MAX); | ||
1159 | sk->sk_policy[0] = NULL; | 1165 | sk->sk_policy[0] = NULL; |
1160 | } | 1166 | } |
1161 | if (unlikely(sk->sk_policy[1] != NULL)) { | 1167 | pol = rcu_dereference_protected(sk->sk_policy[1], 1); |
1162 | xfrm_policy_delete(sk->sk_policy[1], XFRM_POLICY_MAX+1); | 1168 | if (unlikely(pol != NULL)) { |
1169 | xfrm_policy_delete(pol, XFRM_POLICY_MAX+1); | ||
1163 | sk->sk_policy[1] = NULL; | 1170 | sk->sk_policy[1] = NULL; |
1164 | } | 1171 | } |
1165 | } | 1172 | } |
@@ -1169,7 +1176,7 @@ void xfrm_garbage_collect(struct net *net); | |||
1169 | #else | 1176 | #else |
1170 | 1177 | ||
1171 | static inline void xfrm_sk_free_policy(struct sock *sk) {} | 1178 | static inline void xfrm_sk_free_policy(struct sock *sk) {} |
1172 | static inline int xfrm_sk_clone_policy(struct sock *sk) { return 0; } | 1179 | static inline int xfrm_sk_clone_policy(struct sock *sk, const struct sock *osk) { return 0; } |
1173 | static inline int xfrm6_route_forward(struct sk_buff *skb) { return 1; } | 1180 | static inline int xfrm6_route_forward(struct sk_buff *skb) { return 1; } |
1174 | static inline int xfrm4_route_forward(struct sk_buff *skb) { return 1; } | 1181 | static inline int xfrm4_route_forward(struct sk_buff *skb) { return 1; } |
1175 | static inline int xfrm6_policy_check(struct sock *sk, int dir, struct sk_buff *skb) | 1182 | static inline int xfrm6_policy_check(struct sock *sk, int dir, struct sk_buff *skb) |
diff --git a/include/rdma/ib_mad.h b/include/rdma/ib_mad.h index 188df91d5851..ec9b44dd3d80 100644 --- a/include/rdma/ib_mad.h +++ b/include/rdma/ib_mad.h | |||
@@ -237,6 +237,8 @@ struct ib_vendor_mad { | |||
237 | u8 data[IB_MGMT_VENDOR_DATA]; | 237 | u8 data[IB_MGMT_VENDOR_DATA]; |
238 | }; | 238 | }; |
239 | 239 | ||
240 | #define IB_MGMT_CLASSPORTINFO_ATTR_ID cpu_to_be16(0x0001) | ||
241 | |||
240 | struct ib_class_port_info { | 242 | struct ib_class_port_info { |
241 | u8 base_version; | 243 | u8 base_version; |
242 | u8 class_version; | 244 | u8 class_version; |
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h index 9a68a19532ba..120da1d7f57e 100644 --- a/include/rdma/ib_verbs.h +++ b/include/rdma/ib_verbs.h | |||
@@ -1271,6 +1271,7 @@ struct ib_uobject { | |||
1271 | int id; /* index into kernel idr */ | 1271 | int id; /* index into kernel idr */ |
1272 | struct kref ref; | 1272 | struct kref ref; |
1273 | struct rw_semaphore mutex; /* protects .live */ | 1273 | struct rw_semaphore mutex; /* protects .live */ |
1274 | struct rcu_head rcu; /* kfree_rcu() overhead */ | ||
1274 | int live; | 1275 | int live; |
1275 | }; | 1276 | }; |
1276 | 1277 | ||
diff --git a/include/sound/hda_register.h b/include/sound/hda_register.h index 2ae8812d7b1a..94dc6a9772e0 100644 --- a/include/sound/hda_register.h +++ b/include/sound/hda_register.h | |||
@@ -93,6 +93,9 @@ enum { SDI0, SDI1, SDI2, SDI3, SDO0, SDO1, SDO2, SDO3 }; | |||
93 | #define AZX_REG_HSW_EM4 0x100c | 93 | #define AZX_REG_HSW_EM4 0x100c |
94 | #define AZX_REG_HSW_EM5 0x1010 | 94 | #define AZX_REG_HSW_EM5 0x1010 |
95 | 95 | ||
96 | /* Skylake/Broxton display HD-A controller Extended Mode registers */ | ||
97 | #define AZX_REG_SKL_EM4L 0x1040 | ||
98 | |||
96 | /* PCI space */ | 99 | /* PCI space */ |
97 | #define AZX_PCIREG_TCSEL 0x44 | 100 | #define AZX_PCIREG_TCSEL 0x44 |
98 | 101 | ||
diff --git a/include/uapi/linux/Kbuild b/include/uapi/linux/Kbuild index 628e6e64c2fb..c2e5d6cb34e3 100644 --- a/include/uapi/linux/Kbuild +++ b/include/uapi/linux/Kbuild | |||
@@ -186,6 +186,7 @@ header-y += if_tunnel.h | |||
186 | header-y += if_vlan.h | 186 | header-y += if_vlan.h |
187 | header-y += if_x25.h | 187 | header-y += if_x25.h |
188 | header-y += igmp.h | 188 | header-y += igmp.h |
189 | header-y += ila.h | ||
189 | header-y += in6.h | 190 | header-y += in6.h |
190 | header-y += inet_diag.h | 191 | header-y += inet_diag.h |
191 | header-y += in.h | 192 | header-y += in.h |
diff --git a/include/uapi/linux/openvswitch.h b/include/uapi/linux/openvswitch.h index 28ccedd000f5..a27222d5b413 100644 --- a/include/uapi/linux/openvswitch.h +++ b/include/uapi/linux/openvswitch.h | |||
@@ -628,7 +628,7 @@ struct ovs_action_hash { | |||
628 | * @OVS_CT_ATTR_MARK: u32 value followed by u32 mask. For each bit set in the | 628 | * @OVS_CT_ATTR_MARK: u32 value followed by u32 mask. For each bit set in the |
629 | * mask, the corresponding bit in the value is copied to the connection | 629 | * mask, the corresponding bit in the value is copied to the connection |
630 | * tracking mark field in the connection. | 630 | * tracking mark field in the connection. |
631 | * @OVS_CT_ATTR_LABEL: %OVS_CT_LABELS_LEN value followed by %OVS_CT_LABELS_LEN | 631 | * @OVS_CT_ATTR_LABELS: %OVS_CT_LABELS_LEN value followed by %OVS_CT_LABELS_LEN |
632 | * mask. For each bit set in the mask, the corresponding bit in the value is | 632 | * mask. For each bit set in the mask, the corresponding bit in the value is |
633 | * copied to the connection tracking label field in the connection. | 633 | * copied to the connection tracking label field in the connection. |
634 | * @OVS_CT_ATTR_HELPER: variable length string defining conntrack ALG. | 634 | * @OVS_CT_ATTR_HELPER: variable length string defining conntrack ALG. |
diff --git a/include/uapi/linux/vfio.h b/include/uapi/linux/vfio.h index 751b69f858c8..9fd7b5d8df2f 100644 --- a/include/uapi/linux/vfio.h +++ b/include/uapi/linux/vfio.h | |||
@@ -39,13 +39,6 @@ | |||
39 | #define VFIO_SPAPR_TCE_v2_IOMMU 7 | 39 | #define VFIO_SPAPR_TCE_v2_IOMMU 7 |
40 | 40 | ||
41 | /* | 41 | /* |
42 | * The No-IOMMU IOMMU offers no translation or isolation for devices and | ||
43 | * supports no ioctls outside of VFIO_CHECK_EXTENSION. Use of VFIO's No-IOMMU | ||
44 | * code will taint the host kernel and should be used with extreme caution. | ||
45 | */ | ||
46 | #define VFIO_NOIOMMU_IOMMU 8 | ||
47 | |||
48 | /* | ||
49 | * The IOCTL interface is designed for extensibility by embedding the | 42 | * The IOCTL interface is designed for extensibility by embedding the |
50 | * structure length (argsz) and flags into structures passed between | 43 | * structure length (argsz) and flags into structures passed between |
51 | * kernel and userspace. We therefore use the _IO() macro for these | 44 | * kernel and userspace. We therefore use the _IO() macro for these |
diff --git a/include/xen/interface/io/ring.h b/include/xen/interface/io/ring.h index 7d28aff605c7..7dc685b4057d 100644 --- a/include/xen/interface/io/ring.h +++ b/include/xen/interface/io/ring.h | |||
@@ -181,6 +181,20 @@ struct __name##_back_ring { \ | |||
181 | #define RING_GET_REQUEST(_r, _idx) \ | 181 | #define RING_GET_REQUEST(_r, _idx) \ |
182 | (&((_r)->sring->ring[((_idx) & (RING_SIZE(_r) - 1))].req)) | 182 | (&((_r)->sring->ring[((_idx) & (RING_SIZE(_r) - 1))].req)) |
183 | 183 | ||
184 | /* | ||
185 | * Get a local copy of a request. | ||
186 | * | ||
187 | * Use this in preference to RING_GET_REQUEST() so all processing is | ||
188 | * done on a local copy that cannot be modified by the other end. | ||
189 | * | ||
190 | * Note that https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58145 may cause this | ||
191 | * to be ineffective where _req is a struct which consists of only bitfields. | ||
192 | */ | ||
193 | #define RING_COPY_REQUEST(_r, _idx, _req) do { \ | ||
194 | /* Use volatile to force the copy into _req. */ \ | ||
195 | *(_req) = *(volatile typeof(_req))RING_GET_REQUEST(_r, _idx); \ | ||
196 | } while (0) | ||
197 | |||
184 | #define RING_GET_RESPONSE(_r, _idx) \ | 198 | #define RING_GET_RESPONSE(_r, _idx) \ |
185 | (&((_r)->sring->ring[((_idx) & (RING_SIZE(_r) - 1))].rsp)) | 199 | (&((_r)->sring->ring[((_idx) & (RING_SIZE(_r) - 1))].rsp)) |
186 | 200 | ||