diff options
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/capability.h | 6 | ||||
-rw-r--r-- | include/linux/ceph/messenger.h | 12 | ||||
-rw-r--r-- | include/linux/device.h | 2 | ||||
-rw-r--r-- | include/linux/eventpoll.h | 2 | ||||
-rw-r--r-- | include/linux/ftrace_event.h | 5 | ||||
-rw-r--r-- | include/linux/init_task.h | 4 | ||||
-rw-r--r-- | include/linux/intel-iommu.h | 2 | ||||
-rw-r--r-- | include/linux/irq.h | 2 | ||||
-rw-r--r-- | include/linux/jump_label.h | 17 | ||||
-rw-r--r-- | include/linux/kernel.h | 1 | ||||
-rw-r--r-- | include/linux/key.h | 4 | ||||
-rw-r--r-- | include/linux/kmsg_dump.h | 16 | ||||
-rw-r--r-- | include/linux/pci_ids.h | 11 | ||||
-rw-r--r-- | include/linux/perf_event.h | 3 | ||||
-rw-r--r-- | include/linux/rcupdate.h | 53 | ||||
-rw-r--r-- | include/linux/sched.h | 1 | ||||
-rw-r--r-- | include/linux/smp.h | 5 | ||||
-rw-r--r-- | include/linux/tracepoint.h | 2 |
18 files changed, 69 insertions, 79 deletions
diff --git a/include/linux/capability.h b/include/linux/capability.h index 68d56effc328..d10b7ed595b1 100644 --- a/include/linux/capability.h +++ b/include/linux/capability.h | |||
@@ -360,11 +360,11 @@ struct cpu_vfs_cap_data { | |||
360 | 360 | ||
361 | #define CAP_WAKE_ALARM 35 | 361 | #define CAP_WAKE_ALARM 35 |
362 | 362 | ||
363 | /* Allow preventing system suspends while epoll events are pending */ | 363 | /* Allow preventing system suspends */ |
364 | 364 | ||
365 | #define CAP_EPOLLWAKEUP 36 | 365 | #define CAP_BLOCK_SUSPEND 36 |
366 | 366 | ||
367 | #define CAP_LAST_CAP CAP_EPOLLWAKEUP | 367 | #define CAP_LAST_CAP CAP_BLOCK_SUSPEND |
368 | 368 | ||
369 | #define cap_valid(x) ((x) >= 0 && (x) <= CAP_LAST_CAP) | 369 | #define cap_valid(x) ((x) >= 0 && (x) <= CAP_LAST_CAP) |
370 | 370 | ||
diff --git a/include/linux/ceph/messenger.h b/include/linux/ceph/messenger.h index 2521a95fa6d9..44c87e731e9d 100644 --- a/include/linux/ceph/messenger.h +++ b/include/linux/ceph/messenger.h | |||
@@ -163,16 +163,8 @@ struct ceph_connection { | |||
163 | 163 | ||
164 | /* connection negotiation temps */ | 164 | /* connection negotiation temps */ |
165 | char in_banner[CEPH_BANNER_MAX_LEN]; | 165 | char in_banner[CEPH_BANNER_MAX_LEN]; |
166 | union { | 166 | struct ceph_msg_connect out_connect; |
167 | struct { /* outgoing connection */ | 167 | struct ceph_msg_connect_reply in_reply; |
168 | struct ceph_msg_connect out_connect; | ||
169 | struct ceph_msg_connect_reply in_reply; | ||
170 | }; | ||
171 | struct { /* incoming */ | ||
172 | struct ceph_msg_connect in_connect; | ||
173 | struct ceph_msg_connect_reply out_reply; | ||
174 | }; | ||
175 | }; | ||
176 | struct ceph_entity_addr actual_peer_addr; | 168 | struct ceph_entity_addr actual_peer_addr; |
177 | 169 | ||
178 | /* message out temps */ | 170 | /* message out temps */ |
diff --git a/include/linux/device.h b/include/linux/device.h index 161d96241b1b..6de94151ff6f 100644 --- a/include/linux/device.h +++ b/include/linux/device.h | |||
@@ -865,8 +865,6 @@ extern int (*platform_notify_remove)(struct device *dev); | |||
865 | extern struct device *get_device(struct device *dev); | 865 | extern struct device *get_device(struct device *dev); |
866 | extern void put_device(struct device *dev); | 866 | extern void put_device(struct device *dev); |
867 | 867 | ||
868 | extern void wait_for_device_probe(void); | ||
869 | |||
870 | #ifdef CONFIG_DEVTMPFS | 868 | #ifdef CONFIG_DEVTMPFS |
871 | extern int devtmpfs_create_node(struct device *dev); | 869 | extern int devtmpfs_create_node(struct device *dev); |
872 | extern int devtmpfs_delete_node(struct device *dev); | 870 | extern int devtmpfs_delete_node(struct device *dev); |
diff --git a/include/linux/eventpoll.h b/include/linux/eventpoll.h index 6f8be328770a..f4bb378ccf6a 100644 --- a/include/linux/eventpoll.h +++ b/include/linux/eventpoll.h | |||
@@ -34,7 +34,7 @@ | |||
34 | * re-allowed until epoll_wait is called again after consuming the wakeup | 34 | * re-allowed until epoll_wait is called again after consuming the wakeup |
35 | * event(s). | 35 | * event(s). |
36 | * | 36 | * |
37 | * Requires CAP_EPOLLWAKEUP | 37 | * Requires CAP_BLOCK_SUSPEND |
38 | */ | 38 | */ |
39 | #define EPOLLWAKEUP (1 << 29) | 39 | #define EPOLLWAKEUP (1 << 29) |
40 | 40 | ||
diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h index 176a939d1547..af961d6f7ab1 100644 --- a/include/linux/ftrace_event.h +++ b/include/linux/ftrace_event.h | |||
@@ -65,7 +65,7 @@ struct trace_iterator { | |||
65 | void *private; | 65 | void *private; |
66 | int cpu_file; | 66 | int cpu_file; |
67 | struct mutex mutex; | 67 | struct mutex mutex; |
68 | struct ring_buffer_iter *buffer_iter[NR_CPUS]; | 68 | struct ring_buffer_iter **buffer_iter; |
69 | unsigned long iter_flags; | 69 | unsigned long iter_flags; |
70 | 70 | ||
71 | /* trace_seq for __print_flags() and __print_symbolic() etc. */ | 71 | /* trace_seq for __print_flags() and __print_symbolic() etc. */ |
@@ -207,6 +207,9 @@ struct ftrace_event_call { | |||
207 | * bit 1: enabled | 207 | * bit 1: enabled |
208 | * bit 2: filter_active | 208 | * bit 2: filter_active |
209 | * bit 3: enabled cmd record | 209 | * bit 3: enabled cmd record |
210 | * bit 4: allow trace by non root (cap any) | ||
211 | * bit 5: failed to apply filter | ||
212 | * bit 6: ftrace internal event (do not enable) | ||
210 | * | 213 | * |
211 | * Changes to flags must hold the event_mutex. | 214 | * Changes to flags must hold the event_mutex. |
212 | * | 215 | * |
diff --git a/include/linux/init_task.h b/include/linux/init_task.h index 9e65eff6af3b..8a7476186990 100644 --- a/include/linux/init_task.h +++ b/include/linux/init_task.h | |||
@@ -168,8 +168,8 @@ extern struct cred init_cred; | |||
168 | .children = LIST_HEAD_INIT(tsk.children), \ | 168 | .children = LIST_HEAD_INIT(tsk.children), \ |
169 | .sibling = LIST_HEAD_INIT(tsk.sibling), \ | 169 | .sibling = LIST_HEAD_INIT(tsk.sibling), \ |
170 | .group_leader = &tsk, \ | 170 | .group_leader = &tsk, \ |
171 | RCU_INIT_POINTER(.real_cred, &init_cred), \ | 171 | RCU_POINTER_INITIALIZER(real_cred, &init_cred), \ |
172 | RCU_INIT_POINTER(.cred, &init_cred), \ | 172 | RCU_POINTER_INITIALIZER(cred, &init_cred), \ |
173 | .comm = INIT_TASK_COMM, \ | 173 | .comm = INIT_TASK_COMM, \ |
174 | .thread = INIT_THREAD, \ | 174 | .thread = INIT_THREAD, \ |
175 | .fs = &init_fs, \ | 175 | .fs = &init_fs, \ |
diff --git a/include/linux/intel-iommu.h b/include/linux/intel-iommu.h index e6ca56de9936..78e2ada50cd5 100644 --- a/include/linux/intel-iommu.h +++ b/include/linux/intel-iommu.h | |||
@@ -308,6 +308,8 @@ enum { | |||
308 | 308 | ||
309 | struct intel_iommu { | 309 | struct intel_iommu { |
310 | void __iomem *reg; /* Pointer to hardware regs, virtual addr */ | 310 | void __iomem *reg; /* Pointer to hardware regs, virtual addr */ |
311 | u64 reg_phys; /* physical address of hw register set */ | ||
312 | u64 reg_size; /* size of hw register set */ | ||
311 | u64 cap; | 313 | u64 cap; |
312 | u64 ecap; | 314 | u64 ecap; |
313 | u32 gcmd; /* Holds TE, EAFL. Don't need SRTP, SFL, WBF */ | 315 | u32 gcmd; /* Holds TE, EAFL. Don't need SRTP, SFL, WBF */ |
diff --git a/include/linux/irq.h b/include/linux/irq.h index a5261e3d2e3c..553fb66da130 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h | |||
@@ -150,9 +150,7 @@ struct irq_data { | |||
150 | void *handler_data; | 150 | void *handler_data; |
151 | void *chip_data; | 151 | void *chip_data; |
152 | struct msi_desc *msi_desc; | 152 | struct msi_desc *msi_desc; |
153 | #ifdef CONFIG_SMP | ||
154 | cpumask_var_t affinity; | 153 | cpumask_var_t affinity; |
155 | #endif | ||
156 | }; | 154 | }; |
157 | 155 | ||
158 | /* | 156 | /* |
diff --git a/include/linux/jump_label.h b/include/linux/jump_label.h index c513a40510f5..0976fc46d1e0 100644 --- a/include/linux/jump_label.h +++ b/include/linux/jump_label.h | |||
@@ -42,8 +42,7 @@ | |||
42 | * allowed. | 42 | * allowed. |
43 | * | 43 | * |
44 | * Not initializing the key (static data is initialized to 0s anyway) is the | 44 | * Not initializing the key (static data is initialized to 0s anyway) is the |
45 | * same as using STATIC_KEY_INIT_FALSE and static_key_false() is | 45 | * same as using STATIC_KEY_INIT_FALSE. |
46 | * equivalent with static_branch(). | ||
47 | * | 46 | * |
48 | */ | 47 | */ |
49 | 48 | ||
@@ -107,12 +106,6 @@ static __always_inline bool static_key_true(struct static_key *key) | |||
107 | return !static_key_false(key); | 106 | return !static_key_false(key); |
108 | } | 107 | } |
109 | 108 | ||
110 | /* Deprecated. Please use 'static_key_false() instead. */ | ||
111 | static __always_inline bool static_branch(struct static_key *key) | ||
112 | { | ||
113 | return arch_static_branch(key); | ||
114 | } | ||
115 | |||
116 | extern struct jump_entry __start___jump_table[]; | 109 | extern struct jump_entry __start___jump_table[]; |
117 | extern struct jump_entry __stop___jump_table[]; | 110 | extern struct jump_entry __stop___jump_table[]; |
118 | 111 | ||
@@ -166,14 +159,6 @@ static __always_inline bool static_key_true(struct static_key *key) | |||
166 | return false; | 159 | return false; |
167 | } | 160 | } |
168 | 161 | ||
169 | /* Deprecated. Please use 'static_key_false() instead. */ | ||
170 | static __always_inline bool static_branch(struct static_key *key) | ||
171 | { | ||
172 | if (unlikely(atomic_read(&key->enabled)) > 0) | ||
173 | return true; | ||
174 | return false; | ||
175 | } | ||
176 | |||
177 | static inline void static_key_slow_inc(struct static_key *key) | 162 | static inline void static_key_slow_inc(struct static_key *key) |
178 | { | 163 | { |
179 | atomic_inc(&key->enabled); | 164 | atomic_inc(&key->enabled); |
diff --git a/include/linux/kernel.h b/include/linux/kernel.h index e07f5e0c5df4..604382143bcf 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h | |||
@@ -377,7 +377,6 @@ extern enum system_states { | |||
377 | SYSTEM_HALT, | 377 | SYSTEM_HALT, |
378 | SYSTEM_POWER_OFF, | 378 | SYSTEM_POWER_OFF, |
379 | SYSTEM_RESTART, | 379 | SYSTEM_RESTART, |
380 | SYSTEM_SUSPEND_DISK, | ||
381 | } system_state; | 380 | } system_state; |
382 | 381 | ||
383 | #define TAINT_PROPRIETARY_MODULE 0 | 382 | #define TAINT_PROPRIETARY_MODULE 0 |
diff --git a/include/linux/key.h b/include/linux/key.h index 4cd22ed627ef..cef3b315ba7c 100644 --- a/include/linux/key.h +++ b/include/linux/key.h | |||
@@ -303,7 +303,9 @@ static inline bool key_is_instantiated(const struct key *key) | |||
303 | rwsem_is_locked(&((struct key *)(KEY))->sem))) | 303 | rwsem_is_locked(&((struct key *)(KEY))->sem))) |
304 | 304 | ||
305 | #define rcu_assign_keypointer(KEY, PAYLOAD) \ | 305 | #define rcu_assign_keypointer(KEY, PAYLOAD) \ |
306 | (rcu_assign_pointer((KEY)->payload.rcudata, PAYLOAD)) | 306 | do { \ |
307 | rcu_assign_pointer((KEY)->payload.rcudata, (PAYLOAD)); \ | ||
308 | } while (0) | ||
307 | 309 | ||
308 | #ifdef CONFIG_SYSCTL | 310 | #ifdef CONFIG_SYSCTL |
309 | extern ctl_table key_sysctls[]; | 311 | extern ctl_table key_sysctls[]; |
diff --git a/include/linux/kmsg_dump.h b/include/linux/kmsg_dump.h index d6bd50110ec2..2e7a1e032c71 100644 --- a/include/linux/kmsg_dump.h +++ b/include/linux/kmsg_dump.h | |||
@@ -55,12 +55,17 @@ struct kmsg_dumper { | |||
55 | #ifdef CONFIG_PRINTK | 55 | #ifdef CONFIG_PRINTK |
56 | void kmsg_dump(enum kmsg_dump_reason reason); | 56 | void kmsg_dump(enum kmsg_dump_reason reason); |
57 | 57 | ||
58 | bool kmsg_dump_get_line_nolock(struct kmsg_dumper *dumper, bool syslog, | ||
59 | char *line, size_t size, size_t *len); | ||
60 | |||
58 | bool kmsg_dump_get_line(struct kmsg_dumper *dumper, bool syslog, | 61 | bool kmsg_dump_get_line(struct kmsg_dumper *dumper, bool syslog, |
59 | char *line, size_t size, size_t *len); | 62 | char *line, size_t size, size_t *len); |
60 | 63 | ||
61 | bool kmsg_dump_get_buffer(struct kmsg_dumper *dumper, bool syslog, | 64 | bool kmsg_dump_get_buffer(struct kmsg_dumper *dumper, bool syslog, |
62 | char *buf, size_t size, size_t *len); | 65 | char *buf, size_t size, size_t *len); |
63 | 66 | ||
67 | void kmsg_dump_rewind_nolock(struct kmsg_dumper *dumper); | ||
68 | |||
64 | void kmsg_dump_rewind(struct kmsg_dumper *dumper); | 69 | void kmsg_dump_rewind(struct kmsg_dumper *dumper); |
65 | 70 | ||
66 | int kmsg_dump_register(struct kmsg_dumper *dumper); | 71 | int kmsg_dump_register(struct kmsg_dumper *dumper); |
@@ -71,6 +76,13 @@ static inline void kmsg_dump(enum kmsg_dump_reason reason) | |||
71 | { | 76 | { |
72 | } | 77 | } |
73 | 78 | ||
79 | static inline bool kmsg_dump_get_line_nolock(struct kmsg_dumper *dumper, | ||
80 | bool syslog, const char *line, | ||
81 | size_t size, size_t *len) | ||
82 | { | ||
83 | return false; | ||
84 | } | ||
85 | |||
74 | static inline bool kmsg_dump_get_line(struct kmsg_dumper *dumper, bool syslog, | 86 | static inline bool kmsg_dump_get_line(struct kmsg_dumper *dumper, bool syslog, |
75 | const char *line, size_t size, size_t *len) | 87 | const char *line, size_t size, size_t *len) |
76 | { | 88 | { |
@@ -83,6 +95,10 @@ static inline bool kmsg_dump_get_buffer(struct kmsg_dumper *dumper, bool syslog, | |||
83 | return false; | 95 | return false; |
84 | } | 96 | } |
85 | 97 | ||
98 | static inline void kmsg_dump_rewind_nolock(struct kmsg_dumper *dumper) | ||
99 | { | ||
100 | } | ||
101 | |||
86 | static inline void kmsg_dump_rewind(struct kmsg_dumper *dumper) | 102 | static inline void kmsg_dump_rewind(struct kmsg_dumper *dumper) |
87 | { | 103 | { |
88 | } | 104 | } |
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index ab741b0d0074..5f187026b812 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
@@ -2755,6 +2755,17 @@ | |||
2755 | #define PCI_DEVICE_ID_INTEL_IOAT_SNB7 0x3c27 | 2755 | #define PCI_DEVICE_ID_INTEL_IOAT_SNB7 0x3c27 |
2756 | #define PCI_DEVICE_ID_INTEL_IOAT_SNB8 0x3c2e | 2756 | #define PCI_DEVICE_ID_INTEL_IOAT_SNB8 0x3c2e |
2757 | #define PCI_DEVICE_ID_INTEL_IOAT_SNB9 0x3c2f | 2757 | #define PCI_DEVICE_ID_INTEL_IOAT_SNB9 0x3c2f |
2758 | #define PCI_DEVICE_ID_INTEL_UNC_HA 0x3c46 | ||
2759 | #define PCI_DEVICE_ID_INTEL_UNC_IMC0 0x3cb0 | ||
2760 | #define PCI_DEVICE_ID_INTEL_UNC_IMC1 0x3cb1 | ||
2761 | #define PCI_DEVICE_ID_INTEL_UNC_IMC2 0x3cb4 | ||
2762 | #define PCI_DEVICE_ID_INTEL_UNC_IMC3 0x3cb5 | ||
2763 | #define PCI_DEVICE_ID_INTEL_UNC_QPI0 0x3c41 | ||
2764 | #define PCI_DEVICE_ID_INTEL_UNC_QPI1 0x3c42 | ||
2765 | #define PCI_DEVICE_ID_INTEL_UNC_R2PCIE 0x3c43 | ||
2766 | #define PCI_DEVICE_ID_INTEL_UNC_R3QPI0 0x3c44 | ||
2767 | #define PCI_DEVICE_ID_INTEL_UNC_R3QPI1 0x3c45 | ||
2768 | #define PCI_DEVICE_ID_INTEL_JAKETOWN_UBOX 0x3ce0 | ||
2758 | #define PCI_DEVICE_ID_INTEL_IOAT_SNB 0x402f | 2769 | #define PCI_DEVICE_ID_INTEL_IOAT_SNB 0x402f |
2759 | #define PCI_DEVICE_ID_INTEL_5100_16 0x65f0 | 2770 | #define PCI_DEVICE_ID_INTEL_5100_16 0x65f0 |
2760 | #define PCI_DEVICE_ID_INTEL_5100_21 0x65f5 | 2771 | #define PCI_DEVICE_ID_INTEL_5100_21 0x65f5 |
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index 45db49f64bb4..76c5c8b724a7 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h | |||
@@ -677,6 +677,7 @@ struct hw_perf_event { | |||
677 | u64 last_tag; | 677 | u64 last_tag; |
678 | unsigned long config_base; | 678 | unsigned long config_base; |
679 | unsigned long event_base; | 679 | unsigned long event_base; |
680 | int event_base_rdpmc; | ||
680 | int idx; | 681 | int idx; |
681 | int last_cpu; | 682 | int last_cpu; |
682 | 683 | ||
@@ -1106,6 +1107,8 @@ perf_event_create_kernel_counter(struct perf_event_attr *attr, | |||
1106 | struct task_struct *task, | 1107 | struct task_struct *task, |
1107 | perf_overflow_handler_t callback, | 1108 | perf_overflow_handler_t callback, |
1108 | void *context); | 1109 | void *context); |
1110 | extern void perf_pmu_migrate_context(struct pmu *pmu, | ||
1111 | int src_cpu, int dst_cpu); | ||
1109 | extern u64 perf_event_read_value(struct perf_event *event, | 1112 | extern u64 perf_event_read_value(struct perf_event *event, |
1110 | u64 *enabled, u64 *running); | 1113 | u64 *enabled, u64 *running); |
1111 | 1114 | ||
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h index 9cac722b169c..115ead2b5155 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h | |||
@@ -147,6 +147,7 @@ extern void synchronize_sched(void); | |||
147 | 147 | ||
148 | extern void __rcu_read_lock(void); | 148 | extern void __rcu_read_lock(void); |
149 | extern void __rcu_read_unlock(void); | 149 | extern void __rcu_read_unlock(void); |
150 | extern void rcu_read_unlock_special(struct task_struct *t); | ||
150 | void synchronize_rcu(void); | 151 | void synchronize_rcu(void); |
151 | 152 | ||
152 | /* | 153 | /* |
@@ -255,6 +256,10 @@ static inline void destroy_rcu_head_on_stack(struct rcu_head *head) | |||
255 | } | 256 | } |
256 | #endif /* #else !CONFIG_DEBUG_OBJECTS_RCU_HEAD */ | 257 | #endif /* #else !CONFIG_DEBUG_OBJECTS_RCU_HEAD */ |
257 | 258 | ||
259 | #if defined(CONFIG_DEBUG_LOCK_ALLOC) || defined(CONFIG_SMP) | ||
260 | extern int rcu_is_cpu_idle(void); | ||
261 | #endif /* #if defined(CONFIG_DEBUG_LOCK_ALLOC) || defined(CONFIG_SMP) */ | ||
262 | |||
258 | #if defined(CONFIG_HOTPLUG_CPU) && defined(CONFIG_PROVE_RCU) | 263 | #if defined(CONFIG_HOTPLUG_CPU) && defined(CONFIG_PROVE_RCU) |
259 | bool rcu_lockdep_current_cpu_online(void); | 264 | bool rcu_lockdep_current_cpu_online(void); |
260 | #else /* #if defined(CONFIG_HOTPLUG_CPU) && defined(CONFIG_PROVE_RCU) */ | 265 | #else /* #if defined(CONFIG_HOTPLUG_CPU) && defined(CONFIG_PROVE_RCU) */ |
@@ -266,15 +271,6 @@ static inline bool rcu_lockdep_current_cpu_online(void) | |||
266 | 271 | ||
267 | #ifdef CONFIG_DEBUG_LOCK_ALLOC | 272 | #ifdef CONFIG_DEBUG_LOCK_ALLOC |
268 | 273 | ||
269 | #ifdef CONFIG_PROVE_RCU | ||
270 | extern int rcu_is_cpu_idle(void); | ||
271 | #else /* !CONFIG_PROVE_RCU */ | ||
272 | static inline int rcu_is_cpu_idle(void) | ||
273 | { | ||
274 | return 0; | ||
275 | } | ||
276 | #endif /* else !CONFIG_PROVE_RCU */ | ||
277 | |||
278 | static inline void rcu_lock_acquire(struct lockdep_map *map) | 274 | static inline void rcu_lock_acquire(struct lockdep_map *map) |
279 | { | 275 | { |
280 | lock_acquire(map, 0, 0, 2, 1, NULL, _THIS_IP_); | 276 | lock_acquire(map, 0, 0, 2, 1, NULL, _THIS_IP_); |
@@ -431,8 +427,7 @@ extern int rcu_my_thread_group_empty(void); | |||
431 | static inline void rcu_preempt_sleep_check(void) | 427 | static inline void rcu_preempt_sleep_check(void) |
432 | { | 428 | { |
433 | rcu_lockdep_assert(!lock_is_held(&rcu_lock_map), | 429 | rcu_lockdep_assert(!lock_is_held(&rcu_lock_map), |
434 | "Illegal context switch in RCU read-side " | 430 | "Illegal context switch in RCU read-side critical section"); |
435 | "critical section"); | ||
436 | } | 431 | } |
437 | #else /* #ifdef CONFIG_PROVE_RCU */ | 432 | #else /* #ifdef CONFIG_PROVE_RCU */ |
438 | static inline void rcu_preempt_sleep_check(void) | 433 | static inline void rcu_preempt_sleep_check(void) |
@@ -513,10 +508,10 @@ static inline void rcu_preempt_sleep_check(void) | |||
513 | (_________p1); \ | 508 | (_________p1); \ |
514 | }) | 509 | }) |
515 | #define __rcu_assign_pointer(p, v, space) \ | 510 | #define __rcu_assign_pointer(p, v, space) \ |
516 | ({ \ | 511 | do { \ |
517 | smp_wmb(); \ | 512 | smp_wmb(); \ |
518 | (p) = (typeof(*v) __force space *)(v); \ | 513 | (p) = (typeof(*v) __force space *)(v); \ |
519 | }) | 514 | } while (0) |
520 | 515 | ||
521 | 516 | ||
522 | /** | 517 | /** |
@@ -851,7 +846,7 @@ static inline notrace void rcu_read_unlock_sched_notrace(void) | |||
851 | * | 846 | * |
852 | * Assigns the specified value to the specified RCU-protected | 847 | * Assigns the specified value to the specified RCU-protected |
853 | * pointer, ensuring that any concurrent RCU readers will see | 848 | * pointer, ensuring that any concurrent RCU readers will see |
854 | * any prior initialization. Returns the value assigned. | 849 | * any prior initialization. |
855 | * | 850 | * |
856 | * Inserts memory barriers on architectures that require them | 851 | * Inserts memory barriers on architectures that require them |
857 | * (which is most of them), and also prevents the compiler from | 852 | * (which is most of them), and also prevents the compiler from |
@@ -903,25 +898,17 @@ static inline notrace void rcu_read_unlock_sched_notrace(void) | |||
903 | * the reader-accessible portions of the linked structure. | 898 | * the reader-accessible portions of the linked structure. |
904 | */ | 899 | */ |
905 | #define RCU_INIT_POINTER(p, v) \ | 900 | #define RCU_INIT_POINTER(p, v) \ |
906 | p = (typeof(*v) __force __rcu *)(v) | 901 | do { \ |
907 | 902 | p = (typeof(*v) __force __rcu *)(v); \ | |
908 | static __always_inline bool __is_kfree_rcu_offset(unsigned long offset) | 903 | } while (0) |
909 | { | ||
910 | return offset < 4096; | ||
911 | } | ||
912 | |||
913 | static __always_inline | ||
914 | void __kfree_rcu(struct rcu_head *head, unsigned long offset) | ||
915 | { | ||
916 | typedef void (*rcu_callback)(struct rcu_head *); | ||
917 | |||
918 | BUILD_BUG_ON(!__builtin_constant_p(offset)); | ||
919 | |||
920 | /* See the kfree_rcu() header comment. */ | ||
921 | BUILD_BUG_ON(!__is_kfree_rcu_offset(offset)); | ||
922 | 904 | ||
923 | kfree_call_rcu(head, (rcu_callback)offset); | 905 | /** |
924 | } | 906 | * RCU_POINTER_INITIALIZER() - statically initialize an RCU protected pointer |
907 | * | ||
908 | * GCC-style initialization for an RCU-protected pointer in a structure field. | ||
909 | */ | ||
910 | #define RCU_POINTER_INITIALIZER(p, v) \ | ||
911 | .p = (typeof(*v) __force __rcu *)(v) | ||
925 | 912 | ||
926 | /* | 913 | /* |
927 | * Does the specified offset indicate that the corresponding rcu_head | 914 | * Does the specified offset indicate that the corresponding rcu_head |
@@ -935,7 +922,7 @@ void __kfree_rcu(struct rcu_head *head, unsigned long offset) | |||
935 | #define __kfree_rcu(head, offset) \ | 922 | #define __kfree_rcu(head, offset) \ |
936 | do { \ | 923 | do { \ |
937 | BUILD_BUG_ON(!__is_kfree_rcu_offset(offset)); \ | 924 | BUILD_BUG_ON(!__is_kfree_rcu_offset(offset)); \ |
938 | call_rcu(head, (void (*)(struct rcu_head *))(unsigned long)(offset)); \ | 925 | kfree_call_rcu(head, (void (*)(struct rcu_head *))(unsigned long)(offset)); \ |
939 | } while (0) | 926 | } while (0) |
940 | 927 | ||
941 | /** | 928 | /** |
diff --git a/include/linux/sched.h b/include/linux/sched.h index 4a1f493e0fef..64d9df5c3a49 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -1581,7 +1581,6 @@ struct task_struct { | |||
1581 | #endif | 1581 | #endif |
1582 | #ifdef CONFIG_UPROBES | 1582 | #ifdef CONFIG_UPROBES |
1583 | struct uprobe_task *utask; | 1583 | struct uprobe_task *utask; |
1584 | int uprobe_srcu_id; | ||
1585 | #endif | 1584 | #endif |
1586 | }; | 1585 | }; |
1587 | 1586 | ||
diff --git a/include/linux/smp.h b/include/linux/smp.h index 717fb746c9a8..dd6f06be3c9f 100644 --- a/include/linux/smp.h +++ b/include/linux/smp.h | |||
@@ -90,10 +90,6 @@ void kick_all_cpus_sync(void); | |||
90 | void __init call_function_init(void); | 90 | void __init call_function_init(void); |
91 | void generic_smp_call_function_single_interrupt(void); | 91 | void generic_smp_call_function_single_interrupt(void); |
92 | void generic_smp_call_function_interrupt(void); | 92 | void generic_smp_call_function_interrupt(void); |
93 | void ipi_call_lock(void); | ||
94 | void ipi_call_unlock(void); | ||
95 | void ipi_call_lock_irq(void); | ||
96 | void ipi_call_unlock_irq(void); | ||
97 | #else | 93 | #else |
98 | static inline void call_function_init(void) { } | 94 | static inline void call_function_init(void) { } |
99 | #endif | 95 | #endif |
@@ -181,7 +177,6 @@ static inline int up_smp_call_function(smp_call_func_t func, void *info) | |||
181 | } while (0) | 177 | } while (0) |
182 | 178 | ||
183 | static inline void smp_send_reschedule(int cpu) { } | 179 | static inline void smp_send_reschedule(int cpu) { } |
184 | #define num_booting_cpus() 1 | ||
185 | #define smp_prepare_boot_cpu() do {} while (0) | 180 | #define smp_prepare_boot_cpu() do {} while (0) |
186 | #define smp_call_function_many(mask, func, info, wait) \ | 181 | #define smp_call_function_many(mask, func, info, wait) \ |
187 | (up_smp_call_function(func, info)) | 182 | (up_smp_call_function(func, info)) |
diff --git a/include/linux/tracepoint.h b/include/linux/tracepoint.h index bd96ecd0e05c..802de56c41e8 100644 --- a/include/linux/tracepoint.h +++ b/include/linux/tracepoint.h | |||
@@ -153,7 +153,7 @@ static inline void tracepoint_synchronize_unregister(void) | |||
153 | } \ | 153 | } \ |
154 | static inline void trace_##name##_rcuidle(proto) \ | 154 | static inline void trace_##name##_rcuidle(proto) \ |
155 | { \ | 155 | { \ |
156 | if (static_branch(&__tracepoint_##name.key)) \ | 156 | if (static_key_false(&__tracepoint_##name.key)) \ |
157 | __DO_TRACE(&__tracepoint_##name, \ | 157 | __DO_TRACE(&__tracepoint_##name, \ |
158 | TP_PROTO(data_proto), \ | 158 | TP_PROTO(data_proto), \ |
159 | TP_ARGS(data_args), \ | 159 | TP_ARGS(data_args), \ |