diff options
| author | Al Viro <viro@zeniv.linux.org.uk> | 2016-01-04 10:25:34 -0500 |
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2016-01-04 10:25:34 -0500 |
| commit | 7e935c7ca1e6c398f11edac5beabfc4348e3b3a4 (patch) | |
| tree | 86da864ba6341bd86b5f5450c611f918722237b2 /include/linux | |
| parent | c62432b40b5e03c25faf2c8f8547bba4908b8945 (diff) | |
| parent | e9d408e107db9a554b36c3a79f67b37dd3e16da0 (diff) | |
Merge branch 'memdup_user_nul' into work.misc
Diffstat (limited to 'include/linux')
27 files changed, 110 insertions, 78 deletions
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/string.h b/include/linux/string.h index 9ef7795e65e4..9eebc66d957a 100644 --- a/include/linux/string.h +++ b/include/linux/string.h | |||
| @@ -10,6 +10,7 @@ | |||
| 10 | 10 | ||
| 11 | extern char *strndup_user(const char __user *, long); | 11 | extern char *strndup_user(const char __user *, long); |
| 12 | extern void *memdup_user(const void __user *, size_t); | 12 | extern void *memdup_user(const void __user *, size_t); |
| 13 | extern void *memdup_user_nul(const void __user *, size_t); | ||
| 13 | 14 | ||
| 14 | /* | 15 | /* |
| 15 | * Include machine specific inline routines | 16 | * Include machine specific inline routines |
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 |
