History

Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net

No conflicts.

Jakub Kicinski committed 5 years ago

Commit 9fe11552 parents c514fbb 1da3854265 files · +2787 −1902Browse files

Showing the changes to kernel (4 of 265 files). Show all

Unified · Split

4 files
  1. kernel/bpf/stackmap.c +2 −1
  2. kernel/events/core.c +30 −4
  3. kernel/sched/debug.c +7 −1
  4. kernel/sched/fair.c +5 −1
kernel/bpf/stackmap.c+2−1
@@ -63,7 +63,8 @@ static inline int stack_map_data_size(struct bpf_map *map) · 62 unmodified lines
6363
6464 static int prealloc_elems_and_freelist(struct bpf_stack_map *smap)
6565 {
66− u32 elem_size = sizeof(struct stack_map_bucket) + smap->map.value_size;
66+ u64 elem_size = sizeof(struct stack_map_bucket) +
67+ (u64)smap->map.value_size;
6768 int err;
6869
6970 smap->elems = bpf_map_area_alloc(elem_size * smap->map.max_entries,
kernel/events/core.c+30−4
@@ -3707,6 +3707,29 @@ static noinline int visit_groups_merge(struct perf_cpu_context *cpuctx, · 3706 unmodified lines
37073707 return 0;
37083708 }
37093709
3710+static inline bool event_update_userpage(struct perf_event *event)
3711+{
3712+ if (likely(!atomic_read(&event->mmap_count)))
3713+ return false;
3714+
3715+ perf_event_update_time(event);
3716+ perf_set_shadow_time(event, event->ctx);
3717+ perf_event_update_userpage(event);
3718+
3719+ return true;
3720+}
3721+
3722+static inline void group_update_userpage(struct perf_event *group_event)
3723+{
3724+ struct perf_event *event;
3725+
3726+ if (!event_update_userpage(group_event))
3727+ return;
3728+
3729+ for_each_sibling_event(event, group_event)
3730+ event_update_userpage(event);
3731+}
3732+
37103733 static int merge_sched_in(struct perf_event *event, void *data)
37113734 {
37123735 struct perf_event_context *ctx = event->ctx;
@@ -3725,14 +3748,15 @@ static int merge_sched_in(struct perf_event *event, void *data) · 12 unmodified lines
37253748 }
37263749
37273750 if (event->state == PERF_EVENT_STATE_INACTIVE) {
3751+ *can_add_hw = 0;
37283752 if (event->attr.pinned) {
37293753 perf_cgroup_event_disable(event, ctx);
37303754 perf_event_set_state(event, PERF_EVENT_STATE_ERROR);
3755+ } else {
3756+ ctx->rotate_necessary = 1;
3757+ perf_mux_hrtimer_restart(cpuctx);
3758+ group_update_userpage(event);
37313759 }
3732−
3733− *can_add_hw = 0;
3734− ctx->rotate_necessary = 1;
3735− perf_mux_hrtimer_restart(cpuctx);
37363760 }
37373761
37383762 return 0;
@@ -6324,6 +6348,8 @@ accounting: · 2585 unmodified lines
63246348
63256349 ring_buffer_attach(event, rb);
63266350
6351+ perf_event_update_time(event);
6352+ perf_set_shadow_time(event, event->ctx);
63276353 perf_event_init_userpage(event);
63286354 perf_event_update_userpage(event);
63296355 } else {
kernel/sched/debug.c+7−1
@@ -173,16 +173,22 @@ static ssize_t sched_scaling_write(struct file *filp, const char __user *ubuf, · 172 unmodified lines
173173 size_t cnt, loff_t *ppos)
174174 {
175175 char buf[16];
176+ unsigned int scaling;
176177
177178 if (cnt > 15)
178179 cnt = 15;
179180
180181 if (copy_from_user(&buf, ubuf, cnt))
181182 return -EFAULT;
183+ buf[cnt] = '\0';
182184
183− if (kstrtouint(buf, 10, &sysctl_sched_tunable_scaling))
185+ if (kstrtouint(buf, 10, &scaling))
184186 return -EINVAL;
185187
188+ if (scaling >= SCHED_TUNABLESCALING_END)
189+ return -EINVAL;
190+
191+ sysctl_sched_tunable_scaling = scaling;
186192 if (sched_update_scaling())
187193 return -EINVAL;
188194
kernel/sched/fair.c+5−1
@@ -4936,8 +4936,12 @@ void unthrottle_cfs_rq(struct cfs_rq *cfs_rq) · 4935 unmodified lines
49364936 /* update hierarchical throttle state */
49374937 walk_tg_tree_from(cfs_rq->tg, tg_nop, tg_unthrottle_up, (void *)rq);
49384938
4939− if (!cfs_rq->load.weight)
4939+ /* Nothing to run but something to decay (on_list)? Complete the branch */
4940+ if (!cfs_rq->load.weight) {
4941+ if (cfs_rq->on_list)
4942+ goto unthrottle_throttle;
49404943 return;
4944+ }
49414945
49424946 task_delta = cfs_rq->h_nr_running;
49434947 idle_task_delta = cfs_rq->idle_h_nr_running;