diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2017-06-21 03:07:52 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2017-06-21 03:07:52 -0400 |
commit | f0cd9ae5d0df8668e76359a3e0e99856aa9c53b9 (patch) | |
tree | 84d3297b16fa7e373f2eabef56cd12ae5a9b8a29 /include/linux | |
parent | 098b0e01a91c42aaaf0425605cd126b03fcb0bcf (diff) | |
parent | 8e6cec1c7c5afa489687c90be15d6ed82c742975 (diff) |
Merge branch 'timers/urgent' into timers/core
Pick up dependent changes.
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/blkdev.h | 2 | ||||
-rw-r--r-- | include/linux/cgroup-defs.h | 1 | ||||
-rw-r--r-- | include/linux/cgroup.h | 20 | ||||
-rw-r--r-- | include/linux/compiler-clang.h | 8 | ||||
-rw-r--r-- | include/linux/configfs.h | 3 | ||||
-rw-r--r-- | include/linux/dma-iommu.h | 1 | ||||
-rw-r--r-- | include/linux/dmi.h | 2 | ||||
-rw-r--r-- | include/linux/elevator.h | 2 | ||||
-rw-r--r-- | include/linux/irqchip/arm-gic-v3.h | 4 | ||||
-rw-r--r-- | include/linux/irqchip/arm-gic.h | 28 | ||||
-rw-r--r-- | include/linux/key.h | 1 | ||||
-rw-r--r-- | include/linux/mlx4/qp.h | 1 | ||||
-rw-r--r-- | include/linux/mlx5/mlx5_ifc.h | 10 | ||||
-rw-r--r-- | include/linux/mm.h | 53 | ||||
-rw-r--r-- | include/linux/netdevice.h | 15 | ||||
-rw-r--r-- | include/linux/quotaops.h | 6 | ||||
-rw-r--r-- | include/linux/srcu.h | 2 | ||||
-rw-r--r-- | include/linux/suspend.h | 7 | ||||
-rw-r--r-- | include/linux/timekeeper_internal.h | 5 |
19 files changed, 120 insertions, 51 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index ab92c4ea138b..b74a3edcb3da 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
@@ -586,6 +586,8 @@ struct request_queue { | |||
586 | 586 | ||
587 | size_t cmd_size; | 587 | size_t cmd_size; |
588 | void *rq_alloc_data; | 588 | void *rq_alloc_data; |
589 | |||
590 | struct work_struct release_work; | ||
589 | }; | 591 | }; |
590 | 592 | ||
591 | #define QUEUE_FLAG_QUEUED 1 /* uses generic tag queueing */ | 593 | #define QUEUE_FLAG_QUEUED 1 /* uses generic tag queueing */ |
diff --git a/include/linux/cgroup-defs.h b/include/linux/cgroup-defs.h index 21745946cae1..ec47101cb1bf 100644 --- a/include/linux/cgroup-defs.h +++ b/include/linux/cgroup-defs.h | |||
@@ -48,6 +48,7 @@ enum { | |||
48 | CSS_ONLINE = (1 << 1), /* between ->css_online() and ->css_offline() */ | 48 | CSS_ONLINE = (1 << 1), /* between ->css_online() and ->css_offline() */ |
49 | CSS_RELEASED = (1 << 2), /* refcnt reached zero, released */ | 49 | CSS_RELEASED = (1 << 2), /* refcnt reached zero, released */ |
50 | CSS_VISIBLE = (1 << 3), /* css is visible to userland */ | 50 | CSS_VISIBLE = (1 << 3), /* css is visible to userland */ |
51 | CSS_DYING = (1 << 4), /* css is dying */ | ||
51 | }; | 52 | }; |
52 | 53 | ||
53 | /* bits in struct cgroup flags field */ | 54 | /* bits in struct cgroup flags field */ |
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h index ed2573e149fa..710a005c6b7a 100644 --- a/include/linux/cgroup.h +++ b/include/linux/cgroup.h | |||
@@ -344,6 +344,26 @@ static inline bool css_tryget_online(struct cgroup_subsys_state *css) | |||
344 | } | 344 | } |
345 | 345 | ||
346 | /** | 346 | /** |
347 | * css_is_dying - test whether the specified css is dying | ||
348 | * @css: target css | ||
349 | * | ||
350 | * Test whether @css is in the process of offlining or already offline. In | ||
351 | * most cases, ->css_online() and ->css_offline() callbacks should be | ||
352 | * enough; however, the actual offline operations are RCU delayed and this | ||
353 | * test returns %true also when @css is scheduled to be offlined. | ||
354 | * | ||
355 | * This is useful, for example, when the use case requires synchronous | ||
356 | * behavior with respect to cgroup removal. cgroup removal schedules css | ||
357 | * offlining but the css can seem alive while the operation is being | ||
358 | * delayed. If the delay affects user visible semantics, this test can be | ||
359 | * used to resolve the situation. | ||
360 | */ | ||
361 | static inline bool css_is_dying(struct cgroup_subsys_state *css) | ||
362 | { | ||
363 | return !(css->flags & CSS_NO_REF) && percpu_ref_is_dying(&css->refcnt); | ||
364 | } | ||
365 | |||
366 | /** | ||
347 | * css_put - put a css reference | 367 | * css_put - put a css reference |
348 | * @css: target css | 368 | * @css: target css |
349 | * | 369 | * |
diff --git a/include/linux/compiler-clang.h b/include/linux/compiler-clang.h index de179993e039..d614c5ea1b5e 100644 --- a/include/linux/compiler-clang.h +++ b/include/linux/compiler-clang.h | |||
@@ -15,3 +15,11 @@ | |||
15 | * with any version that can compile the kernel | 15 | * with any version that can compile the kernel |
16 | */ | 16 | */ |
17 | #define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) | 17 | #define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) |
18 | |||
19 | /* | ||
20 | * GCC does not warn about unused static inline functions for | ||
21 | * -Wunused-function. This turns out to avoid the need for complex #ifdef | ||
22 | * directives. Suppress the warning in clang as well. | ||
23 | */ | ||
24 | #undef inline | ||
25 | #define inline inline __attribute__((unused)) notrace | ||
diff --git a/include/linux/configfs.h b/include/linux/configfs.h index 2319b8c108e8..c96709049683 100644 --- a/include/linux/configfs.h +++ b/include/linux/configfs.h | |||
@@ -74,7 +74,8 @@ extern void config_item_init_type_name(struct config_item *item, | |||
74 | const char *name, | 74 | const char *name, |
75 | struct config_item_type *type); | 75 | struct config_item_type *type); |
76 | 76 | ||
77 | extern struct config_item * config_item_get(struct config_item *); | 77 | extern struct config_item *config_item_get(struct config_item *); |
78 | extern struct config_item *config_item_get_unless_zero(struct config_item *); | ||
78 | extern void config_item_put(struct config_item *); | 79 | extern void config_item_put(struct config_item *); |
79 | 80 | ||
80 | struct config_item_type { | 81 | struct config_item_type { |
diff --git a/include/linux/dma-iommu.h b/include/linux/dma-iommu.h index 4eac2670bfa1..92f20832fd28 100644 --- a/include/linux/dma-iommu.h +++ b/include/linux/dma-iommu.h | |||
@@ -78,6 +78,7 @@ void iommu_dma_get_resv_regions(struct device *dev, struct list_head *list); | |||
78 | 78 | ||
79 | struct iommu_domain; | 79 | struct iommu_domain; |
80 | struct msi_msg; | 80 | struct msi_msg; |
81 | struct device; | ||
81 | 82 | ||
82 | static inline int iommu_dma_init(void) | 83 | static inline int iommu_dma_init(void) |
83 | { | 84 | { |
diff --git a/include/linux/dmi.h b/include/linux/dmi.h index 5e9c74cf8894..9bbf21a516e4 100644 --- a/include/linux/dmi.h +++ b/include/linux/dmi.h | |||
@@ -136,7 +136,7 @@ static inline int dmi_name_in_vendors(const char *s) { return 0; } | |||
136 | static inline int dmi_name_in_serial(const char *s) { return 0; } | 136 | static inline int dmi_name_in_serial(const char *s) { return 0; } |
137 | #define dmi_available 0 | 137 | #define dmi_available 0 |
138 | static inline int dmi_walk(void (*decode)(const struct dmi_header *, void *), | 138 | static inline int dmi_walk(void (*decode)(const struct dmi_header *, void *), |
139 | void *private_data) { return -1; } | 139 | void *private_data) { return -ENXIO; } |
140 | static inline bool dmi_match(enum dmi_field f, const char *str) | 140 | static inline bool dmi_match(enum dmi_field f, const char *str) |
141 | { return false; } | 141 | { return false; } |
142 | static inline void dmi_memdev_name(u16 handle, const char **bank, | 142 | static inline void dmi_memdev_name(u16 handle, const char **bank, |
diff --git a/include/linux/elevator.h b/include/linux/elevator.h index 9ec5e22846e0..0e306c5a86d6 100644 --- a/include/linux/elevator.h +++ b/include/linux/elevator.h | |||
@@ -153,7 +153,7 @@ struct elevator_type | |||
153 | #endif | 153 | #endif |
154 | 154 | ||
155 | /* managed by elevator core */ | 155 | /* managed by elevator core */ |
156 | char icq_cache_name[ELV_NAME_MAX + 5]; /* elvname + "_io_cq" */ | 156 | char icq_cache_name[ELV_NAME_MAX + 6]; /* elvname + "_io_cq" */ |
157 | struct list_head list; | 157 | struct list_head list; |
158 | }; | 158 | }; |
159 | 159 | ||
diff --git a/include/linux/irqchip/arm-gic-v3.h b/include/linux/irqchip/arm-gic-v3.h index fffb91202bc9..1fa293a37f4a 100644 --- a/include/linux/irqchip/arm-gic-v3.h +++ b/include/linux/irqchip/arm-gic-v3.h | |||
@@ -417,6 +417,10 @@ | |||
417 | #define ICH_HCR_EN (1 << 0) | 417 | #define ICH_HCR_EN (1 << 0) |
418 | #define ICH_HCR_UIE (1 << 1) | 418 | #define ICH_HCR_UIE (1 << 1) |
419 | 419 | ||
420 | #define ICH_VMCR_ACK_CTL_SHIFT 2 | ||
421 | #define ICH_VMCR_ACK_CTL_MASK (1 << ICH_VMCR_ACK_CTL_SHIFT) | ||
422 | #define ICH_VMCR_FIQ_EN_SHIFT 3 | ||
423 | #define ICH_VMCR_FIQ_EN_MASK (1 << ICH_VMCR_FIQ_EN_SHIFT) | ||
420 | #define ICH_VMCR_CBPR_SHIFT 4 | 424 | #define ICH_VMCR_CBPR_SHIFT 4 |
421 | #define ICH_VMCR_CBPR_MASK (1 << ICH_VMCR_CBPR_SHIFT) | 425 | #define ICH_VMCR_CBPR_MASK (1 << ICH_VMCR_CBPR_SHIFT) |
422 | #define ICH_VMCR_EOIM_SHIFT 9 | 426 | #define ICH_VMCR_EOIM_SHIFT 9 |
diff --git a/include/linux/irqchip/arm-gic.h b/include/linux/irqchip/arm-gic.h index dc30f3d057eb..d3453ee072fc 100644 --- a/include/linux/irqchip/arm-gic.h +++ b/include/linux/irqchip/arm-gic.h | |||
@@ -25,7 +25,18 @@ | |||
25 | #define GICC_ENABLE 0x1 | 25 | #define GICC_ENABLE 0x1 |
26 | #define GICC_INT_PRI_THRESHOLD 0xf0 | 26 | #define GICC_INT_PRI_THRESHOLD 0xf0 |
27 | 27 | ||
28 | #define GIC_CPU_CTRL_EOImodeNS (1 << 9) | 28 | #define GIC_CPU_CTRL_EnableGrp0_SHIFT 0 |
29 | #define GIC_CPU_CTRL_EnableGrp0 (1 << GIC_CPU_CTRL_EnableGrp0_SHIFT) | ||
30 | #define GIC_CPU_CTRL_EnableGrp1_SHIFT 1 | ||
31 | #define GIC_CPU_CTRL_EnableGrp1 (1 << GIC_CPU_CTRL_EnableGrp1_SHIFT) | ||
32 | #define GIC_CPU_CTRL_AckCtl_SHIFT 2 | ||
33 | #define GIC_CPU_CTRL_AckCtl (1 << GIC_CPU_CTRL_AckCtl_SHIFT) | ||
34 | #define GIC_CPU_CTRL_FIQEn_SHIFT 3 | ||
35 | #define GIC_CPU_CTRL_FIQEn (1 << GIC_CPU_CTRL_FIQEn_SHIFT) | ||
36 | #define GIC_CPU_CTRL_CBPR_SHIFT 4 | ||
37 | #define GIC_CPU_CTRL_CBPR (1 << GIC_CPU_CTRL_CBPR_SHIFT) | ||
38 | #define GIC_CPU_CTRL_EOImodeNS_SHIFT 9 | ||
39 | #define GIC_CPU_CTRL_EOImodeNS (1 << GIC_CPU_CTRL_EOImodeNS_SHIFT) | ||
29 | 40 | ||
30 | #define GICC_IAR_INT_ID_MASK 0x3ff | 41 | #define GICC_IAR_INT_ID_MASK 0x3ff |
31 | #define GICC_INT_SPURIOUS 1023 | 42 | #define GICC_INT_SPURIOUS 1023 |
@@ -84,8 +95,19 @@ | |||
84 | #define GICH_LR_EOI (1 << 19) | 95 | #define GICH_LR_EOI (1 << 19) |
85 | #define GICH_LR_HW (1 << 31) | 96 | #define GICH_LR_HW (1 << 31) |
86 | 97 | ||
87 | #define GICH_VMCR_CTRL_SHIFT 0 | 98 | #define GICH_VMCR_ENABLE_GRP0_SHIFT 0 |
88 | #define GICH_VMCR_CTRL_MASK (0x21f << GICH_VMCR_CTRL_SHIFT) | 99 | #define GICH_VMCR_ENABLE_GRP0_MASK (1 << GICH_VMCR_ENABLE_GRP0_SHIFT) |
100 | #define GICH_VMCR_ENABLE_GRP1_SHIFT 1 | ||
101 | #define GICH_VMCR_ENABLE_GRP1_MASK (1 << GICH_VMCR_ENABLE_GRP1_SHIFT) | ||
102 | #define GICH_VMCR_ACK_CTL_SHIFT 2 | ||
103 | #define GICH_VMCR_ACK_CTL_MASK (1 << GICH_VMCR_ACK_CTL_SHIFT) | ||
104 | #define GICH_VMCR_FIQ_EN_SHIFT 3 | ||
105 | #define GICH_VMCR_FIQ_EN_MASK (1 << GICH_VMCR_FIQ_EN_SHIFT) | ||
106 | #define GICH_VMCR_CBPR_SHIFT 4 | ||
107 | #define GICH_VMCR_CBPR_MASK (1 << GICH_VMCR_CBPR_SHIFT) | ||
108 | #define GICH_VMCR_EOI_MODE_SHIFT 9 | ||
109 | #define GICH_VMCR_EOI_MODE_MASK (1 << GICH_VMCR_EOI_MODE_SHIFT) | ||
110 | |||
89 | #define GICH_VMCR_PRIMASK_SHIFT 27 | 111 | #define GICH_VMCR_PRIMASK_SHIFT 27 |
90 | #define GICH_VMCR_PRIMASK_MASK (0x1f << GICH_VMCR_PRIMASK_SHIFT) | 112 | #define GICH_VMCR_PRIMASK_MASK (0x1f << GICH_VMCR_PRIMASK_SHIFT) |
91 | #define GICH_VMCR_BINPOINT_SHIFT 21 | 113 | #define GICH_VMCR_BINPOINT_SHIFT 21 |
diff --git a/include/linux/key.h b/include/linux/key.h index 0c9b93b0d1f7..78e25aabedaf 100644 --- a/include/linux/key.h +++ b/include/linux/key.h | |||
@@ -173,7 +173,6 @@ struct key { | |||
173 | #ifdef KEY_DEBUGGING | 173 | #ifdef KEY_DEBUGGING |
174 | unsigned magic; | 174 | unsigned magic; |
175 | #define KEY_DEBUG_MAGIC 0x18273645u | 175 | #define KEY_DEBUG_MAGIC 0x18273645u |
176 | #define KEY_DEBUG_MAGIC_X 0xf8e9dacbu | ||
177 | #endif | 176 | #endif |
178 | 177 | ||
179 | unsigned long flags; /* status flags (change with bitops) */ | 178 | unsigned long flags; /* status flags (change with bitops) */ |
diff --git a/include/linux/mlx4/qp.h b/include/linux/mlx4/qp.h index b4ee8f62ce8d..8e2828d48d7f 100644 --- a/include/linux/mlx4/qp.h +++ b/include/linux/mlx4/qp.h | |||
@@ -470,6 +470,7 @@ struct mlx4_update_qp_params { | |||
470 | u16 rate_val; | 470 | u16 rate_val; |
471 | }; | 471 | }; |
472 | 472 | ||
473 | struct mlx4_qp *mlx4_qp_lookup(struct mlx4_dev *dev, u32 qpn); | ||
473 | int mlx4_update_qp(struct mlx4_dev *dev, u32 qpn, | 474 | int mlx4_update_qp(struct mlx4_dev *dev, u32 qpn, |
474 | enum mlx4_update_qp_attr attr, | 475 | enum mlx4_update_qp_attr attr, |
475 | struct mlx4_update_qp_params *params); | 476 | struct mlx4_update_qp_params *params); |
diff --git a/include/linux/mlx5/mlx5_ifc.h b/include/linux/mlx5/mlx5_ifc.h index 32de0724b400..edafedb7b509 100644 --- a/include/linux/mlx5/mlx5_ifc.h +++ b/include/linux/mlx5/mlx5_ifc.h | |||
@@ -766,6 +766,12 @@ enum { | |||
766 | MLX5_CAP_PORT_TYPE_ETH = 0x1, | 766 | MLX5_CAP_PORT_TYPE_ETH = 0x1, |
767 | }; | 767 | }; |
768 | 768 | ||
769 | enum { | ||
770 | MLX5_CAP_UMR_FENCE_STRONG = 0x0, | ||
771 | MLX5_CAP_UMR_FENCE_SMALL = 0x1, | ||
772 | MLX5_CAP_UMR_FENCE_NONE = 0x2, | ||
773 | }; | ||
774 | |||
769 | struct mlx5_ifc_cmd_hca_cap_bits { | 775 | struct mlx5_ifc_cmd_hca_cap_bits { |
770 | u8 reserved_at_0[0x80]; | 776 | u8 reserved_at_0[0x80]; |
771 | 777 | ||
@@ -875,7 +881,9 @@ struct mlx5_ifc_cmd_hca_cap_bits { | |||
875 | u8 reserved_at_202[0x1]; | 881 | u8 reserved_at_202[0x1]; |
876 | u8 ipoib_enhanced_offloads[0x1]; | 882 | u8 ipoib_enhanced_offloads[0x1]; |
877 | u8 ipoib_basic_offloads[0x1]; | 883 | u8 ipoib_basic_offloads[0x1]; |
878 | u8 reserved_at_205[0xa]; | 884 | u8 reserved_at_205[0x5]; |
885 | u8 umr_fence[0x2]; | ||
886 | u8 reserved_at_20c[0x3]; | ||
879 | u8 drain_sigerr[0x1]; | 887 | u8 drain_sigerr[0x1]; |
880 | u8 cmdif_checksum[0x2]; | 888 | u8 cmdif_checksum[0x2]; |
881 | u8 sigerr_cqe[0x1]; | 889 | u8 sigerr_cqe[0x1]; |
diff --git a/include/linux/mm.h b/include/linux/mm.h index b892e95d4929..6f543a47fc92 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
@@ -1393,12 +1393,6 @@ int clear_page_dirty_for_io(struct page *page); | |||
1393 | 1393 | ||
1394 | int get_cmdline(struct task_struct *task, char *buffer, int buflen); | 1394 | int get_cmdline(struct task_struct *task, char *buffer, int buflen); |
1395 | 1395 | ||
1396 | /* Is the vma a continuation of the stack vma above it? */ | ||
1397 | static inline int vma_growsdown(struct vm_area_struct *vma, unsigned long addr) | ||
1398 | { | ||
1399 | return vma && (vma->vm_end == addr) && (vma->vm_flags & VM_GROWSDOWN); | ||
1400 | } | ||
1401 | |||
1402 | static inline bool vma_is_anonymous(struct vm_area_struct *vma) | 1396 | static inline bool vma_is_anonymous(struct vm_area_struct *vma) |
1403 | { | 1397 | { |
1404 | return !vma->vm_ops; | 1398 | return !vma->vm_ops; |
@@ -1414,28 +1408,6 @@ bool vma_is_shmem(struct vm_area_struct *vma); | |||
1414 | static inline bool vma_is_shmem(struct vm_area_struct *vma) { return false; } | 1408 | static inline bool vma_is_shmem(struct vm_area_struct *vma) { return false; } |
1415 | #endif | 1409 | #endif |
1416 | 1410 | ||
1417 | static inline int stack_guard_page_start(struct vm_area_struct *vma, | ||
1418 | unsigned long addr) | ||
1419 | { | ||
1420 | return (vma->vm_flags & VM_GROWSDOWN) && | ||
1421 | (vma->vm_start == addr) && | ||
1422 | !vma_growsdown(vma->vm_prev, addr); | ||
1423 | } | ||
1424 | |||
1425 | /* Is the vma a continuation of the stack vma below it? */ | ||
1426 | static inline int vma_growsup(struct vm_area_struct *vma, unsigned long addr) | ||
1427 | { | ||
1428 | return vma && (vma->vm_start == addr) && (vma->vm_flags & VM_GROWSUP); | ||
1429 | } | ||
1430 | |||
1431 | static inline int stack_guard_page_end(struct vm_area_struct *vma, | ||
1432 | unsigned long addr) | ||
1433 | { | ||
1434 | return (vma->vm_flags & VM_GROWSUP) && | ||
1435 | (vma->vm_end == addr) && | ||
1436 | !vma_growsup(vma->vm_next, addr); | ||
1437 | } | ||
1438 | |||
1439 | int vma_is_stack_for_current(struct vm_area_struct *vma); | 1411 | int vma_is_stack_for_current(struct vm_area_struct *vma); |
1440 | 1412 | ||
1441 | extern unsigned long move_page_tables(struct vm_area_struct *vma, | 1413 | extern unsigned long move_page_tables(struct vm_area_struct *vma, |
@@ -2222,6 +2194,7 @@ void page_cache_async_readahead(struct address_space *mapping, | |||
2222 | pgoff_t offset, | 2194 | pgoff_t offset, |
2223 | unsigned long size); | 2195 | unsigned long size); |
2224 | 2196 | ||
2197 | extern unsigned long stack_guard_gap; | ||
2225 | /* Generic expand stack which grows the stack according to GROWS{UP,DOWN} */ | 2198 | /* Generic expand stack which grows the stack according to GROWS{UP,DOWN} */ |
2226 | extern int expand_stack(struct vm_area_struct *vma, unsigned long address); | 2199 | extern int expand_stack(struct vm_area_struct *vma, unsigned long address); |
2227 | 2200 | ||
@@ -2250,6 +2223,30 @@ static inline struct vm_area_struct * find_vma_intersection(struct mm_struct * m | |||
2250 | return vma; | 2223 | return vma; |
2251 | } | 2224 | } |
2252 | 2225 | ||
2226 | static inline unsigned long vm_start_gap(struct vm_area_struct *vma) | ||
2227 | { | ||
2228 | unsigned long vm_start = vma->vm_start; | ||
2229 | |||
2230 | if (vma->vm_flags & VM_GROWSDOWN) { | ||
2231 | vm_start -= stack_guard_gap; | ||
2232 | if (vm_start > vma->vm_start) | ||
2233 | vm_start = 0; | ||
2234 | } | ||
2235 | return vm_start; | ||
2236 | } | ||
2237 | |||
2238 | static inline unsigned long vm_end_gap(struct vm_area_struct *vma) | ||
2239 | { | ||
2240 | unsigned long vm_end = vma->vm_end; | ||
2241 | |||
2242 | if (vma->vm_flags & VM_GROWSUP) { | ||
2243 | vm_end += stack_guard_gap; | ||
2244 | if (vm_end < vma->vm_end) | ||
2245 | vm_end = -PAGE_SIZE; | ||
2246 | } | ||
2247 | return vm_end; | ||
2248 | } | ||
2249 | |||
2253 | static inline unsigned long vma_pages(struct vm_area_struct *vma) | 2250 | static inline unsigned long vma_pages(struct vm_area_struct *vma) |
2254 | { | 2251 | { |
2255 | return (vma->vm_end - vma->vm_start) >> PAGE_SHIFT; | 2252 | return (vma->vm_end - vma->vm_start) >> PAGE_SHIFT; |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 3f39d27decf4..4ed952c17fc7 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -914,8 +914,7 @@ struct xfrmdev_ops { | |||
914 | * | 914 | * |
915 | * int (*ndo_change_mtu)(struct net_device *dev, int new_mtu); | 915 | * int (*ndo_change_mtu)(struct net_device *dev, int new_mtu); |
916 | * Called when a user wants to change the Maximum Transfer Unit | 916 | * Called when a user wants to change the Maximum Transfer Unit |
917 | * of a device. If not defined, any request to change MTU will | 917 | * of a device. |
918 | * will return an error. | ||
919 | * | 918 | * |
920 | * void (*ndo_tx_timeout)(struct net_device *dev); | 919 | * void (*ndo_tx_timeout)(struct net_device *dev); |
921 | * Callback used when the transmitter has not made any progress | 920 | * Callback used when the transmitter has not made any progress |
@@ -1596,8 +1595,8 @@ enum netdev_priv_flags { | |||
1596 | * @rtnl_link_state: This enum represents the phases of creating | 1595 | * @rtnl_link_state: This enum represents the phases of creating |
1597 | * a new link | 1596 | * a new link |
1598 | * | 1597 | * |
1599 | * @destructor: Called from unregister, | 1598 | * @needs_free_netdev: Should unregister perform free_netdev? |
1600 | * can be used to call free_netdev | 1599 | * @priv_destructor: Called from unregister |
1601 | * @npinfo: XXX: need comments on this one | 1600 | * @npinfo: XXX: need comments on this one |
1602 | * @nd_net: Network namespace this network device is inside | 1601 | * @nd_net: Network namespace this network device is inside |
1603 | * | 1602 | * |
@@ -1858,7 +1857,8 @@ struct net_device { | |||
1858 | RTNL_LINK_INITIALIZING, | 1857 | RTNL_LINK_INITIALIZING, |
1859 | } rtnl_link_state:16; | 1858 | } rtnl_link_state:16; |
1860 | 1859 | ||
1861 | void (*destructor)(struct net_device *dev); | 1860 | bool needs_free_netdev; |
1861 | void (*priv_destructor)(struct net_device *dev); | ||
1862 | 1862 | ||
1863 | #ifdef CONFIG_NETPOLL | 1863 | #ifdef CONFIG_NETPOLL |
1864 | struct netpoll_info __rcu *npinfo; | 1864 | struct netpoll_info __rcu *npinfo; |
@@ -4261,6 +4261,11 @@ static inline const char *netdev_name(const struct net_device *dev) | |||
4261 | return dev->name; | 4261 | return dev->name; |
4262 | } | 4262 | } |
4263 | 4263 | ||
4264 | static inline bool netdev_unregistering(const struct net_device *dev) | ||
4265 | { | ||
4266 | return dev->reg_state == NETREG_UNREGISTERING; | ||
4267 | } | ||
4268 | |||
4264 | static inline const char *netdev_reg_state(const struct net_device *dev) | 4269 | static inline const char *netdev_reg_state(const struct net_device *dev) |
4265 | { | 4270 | { |
4266 | switch (dev->reg_state) { | 4271 | switch (dev->reg_state) { |
diff --git a/include/linux/quotaops.h b/include/linux/quotaops.h index 9c6f768b7d32..dda22f45fc1b 100644 --- a/include/linux/quotaops.h +++ b/include/linux/quotaops.h | |||
@@ -44,6 +44,7 @@ void inode_sub_rsv_space(struct inode *inode, qsize_t number); | |||
44 | void inode_reclaim_rsv_space(struct inode *inode, qsize_t number); | 44 | void inode_reclaim_rsv_space(struct inode *inode, qsize_t number); |
45 | 45 | ||
46 | int dquot_initialize(struct inode *inode); | 46 | int dquot_initialize(struct inode *inode); |
47 | bool dquot_initialize_needed(struct inode *inode); | ||
47 | void dquot_drop(struct inode *inode); | 48 | void dquot_drop(struct inode *inode); |
48 | struct dquot *dqget(struct super_block *sb, struct kqid qid); | 49 | struct dquot *dqget(struct super_block *sb, struct kqid qid); |
49 | static inline struct dquot *dqgrab(struct dquot *dquot) | 50 | static inline struct dquot *dqgrab(struct dquot *dquot) |
@@ -207,6 +208,11 @@ static inline int dquot_initialize(struct inode *inode) | |||
207 | return 0; | 208 | return 0; |
208 | } | 209 | } |
209 | 210 | ||
211 | static inline bool dquot_initialize_needed(struct inode *inode) | ||
212 | { | ||
213 | return false; | ||
214 | } | ||
215 | |||
210 | static inline void dquot_drop(struct inode *inode) | 216 | static inline void dquot_drop(struct inode *inode) |
211 | { | 217 | { |
212 | } | 218 | } |
diff --git a/include/linux/srcu.h b/include/linux/srcu.h index 167ad8831aaf..4c1d5f7e62c4 100644 --- a/include/linux/srcu.h +++ b/include/linux/srcu.h | |||
@@ -172,9 +172,7 @@ static inline int srcu_read_lock(struct srcu_struct *sp) __acquires(sp) | |||
172 | { | 172 | { |
173 | int retval; | 173 | int retval; |
174 | 174 | ||
175 | preempt_disable(); | ||
176 | retval = __srcu_read_lock(sp); | 175 | retval = __srcu_read_lock(sp); |
177 | preempt_enable(); | ||
178 | rcu_lock_acquire(&(sp)->dep_map); | 176 | rcu_lock_acquire(&(sp)->dep_map); |
179 | return retval; | 177 | return retval; |
180 | } | 178 | } |
diff --git a/include/linux/suspend.h b/include/linux/suspend.h index 0b1cf32edfd7..d9718378a8be 100644 --- a/include/linux/suspend.h +++ b/include/linux/suspend.h | |||
@@ -189,8 +189,6 @@ struct platform_suspend_ops { | |||
189 | struct platform_freeze_ops { | 189 | struct platform_freeze_ops { |
190 | int (*begin)(void); | 190 | int (*begin)(void); |
191 | int (*prepare)(void); | 191 | int (*prepare)(void); |
192 | void (*wake)(void); | ||
193 | void (*sync)(void); | ||
194 | void (*restore)(void); | 192 | void (*restore)(void); |
195 | void (*end)(void); | 193 | void (*end)(void); |
196 | }; | 194 | }; |
@@ -430,8 +428,7 @@ extern unsigned int pm_wakeup_irq; | |||
430 | 428 | ||
431 | extern bool pm_wakeup_pending(void); | 429 | extern bool pm_wakeup_pending(void); |
432 | extern void pm_system_wakeup(void); | 430 | extern void pm_system_wakeup(void); |
433 | extern void pm_system_cancel_wakeup(void); | 431 | extern void pm_wakeup_clear(void); |
434 | extern void pm_wakeup_clear(bool reset); | ||
435 | extern void pm_system_irq_wakeup(unsigned int irq_number); | 432 | extern void pm_system_irq_wakeup(unsigned int irq_number); |
436 | extern bool pm_get_wakeup_count(unsigned int *count, bool block); | 433 | extern bool pm_get_wakeup_count(unsigned int *count, bool block); |
437 | extern bool pm_save_wakeup_count(unsigned int count); | 434 | extern bool pm_save_wakeup_count(unsigned int count); |
@@ -481,7 +478,7 @@ static inline int unregister_pm_notifier(struct notifier_block *nb) | |||
481 | 478 | ||
482 | static inline bool pm_wakeup_pending(void) { return false; } | 479 | static inline bool pm_wakeup_pending(void) { return false; } |
483 | static inline void pm_system_wakeup(void) {} | 480 | static inline void pm_system_wakeup(void) {} |
484 | static inline void pm_wakeup_clear(bool reset) {} | 481 | static inline void pm_wakeup_clear(void) {} |
485 | static inline void pm_system_irq_wakeup(unsigned int irq_number) {} | 482 | static inline void pm_system_irq_wakeup(unsigned int irq_number) {} |
486 | 483 | ||
487 | static inline void lock_system_sleep(void) {} | 484 | static inline void lock_system_sleep(void) {} |
diff --git a/include/linux/timekeeper_internal.h b/include/linux/timekeeper_internal.h index 110f4532188c..f7043ccca81c 100644 --- a/include/linux/timekeeper_internal.h +++ b/include/linux/timekeeper_internal.h | |||
@@ -29,7 +29,6 @@ | |||
29 | */ | 29 | */ |
30 | struct tk_read_base { | 30 | struct tk_read_base { |
31 | struct clocksource *clock; | 31 | struct clocksource *clock; |
32 | u64 (*read)(struct clocksource *cs); | ||
33 | u64 mask; | 32 | u64 mask; |
34 | u64 cycle_last; | 33 | u64 cycle_last; |
35 | u32 mult; | 34 | u32 mult; |
@@ -58,7 +57,7 @@ struct tk_read_base { | |||
58 | * interval. | 57 | * interval. |
59 | * @xtime_remainder: Shifted nano seconds left over when rounding | 58 | * @xtime_remainder: Shifted nano seconds left over when rounding |
60 | * @cycle_interval | 59 | * @cycle_interval |
61 | * @raw_interval: Raw nano seconds accumulated per NTP interval. | 60 | * @raw_interval: Shifted raw nano seconds accumulated per NTP interval. |
62 | * @ntp_error: Difference between accumulated time and NTP time in ntp | 61 | * @ntp_error: Difference between accumulated time and NTP time in ntp |
63 | * shifted nano seconds. | 62 | * shifted nano seconds. |
64 | * @ntp_error_shift: Shift conversion between clock shifted nano seconds and | 63 | * @ntp_error_shift: Shift conversion between clock shifted nano seconds and |
@@ -100,7 +99,7 @@ struct timekeeper { | |||
100 | u64 cycle_interval; | 99 | u64 cycle_interval; |
101 | u64 xtime_interval; | 100 | u64 xtime_interval; |
102 | s64 xtime_remainder; | 101 | s64 xtime_remainder; |
103 | u32 raw_interval; | 102 | u64 raw_interval; |
104 | /* The ntp_tick_length() value currently being used. | 103 | /* The ntp_tick_length() value currently being used. |
105 | * This cached copy ensures we consistently apply the tick | 104 | * This cached copy ensures we consistently apply the tick |
106 | * length for an entire tick, as ntp_tick_length may change | 105 | * length for an entire tick, as ntp_tick_length may change |