summaryrefslogtreecommitdiffstats
path: root/debian/patches-rt/0001-cgroup-Remove-css_rstat_flush.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches-rt/0001-cgroup-Remove-css_rstat_flush.patch')
-rw-r--r--debian/patches-rt/0001-cgroup-Remove-css_rstat_flush.patch117
1 files changed, 117 insertions, 0 deletions
diff --git a/debian/patches-rt/0001-cgroup-Remove-css_rstat_flush.patch b/debian/patches-rt/0001-cgroup-Remove-css_rstat_flush.patch
new file mode 100644
index 000000000..915ccbf10
--- /dev/null
+++ b/debian/patches-rt/0001-cgroup-Remove-css_rstat_flush.patch
@@ -0,0 +1,117 @@
+From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+Date: Thu, 15 Aug 2019 18:14:16 +0200
+Subject: [PATCH 1/4] cgroup: Remove ->css_rstat_flush()
+Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/5.4/older/patches-5.4.3-rt1.tar.xz
+
+I was looking at the lifetime of the the ->css_rstat_flush() to see if
+cgroup_rstat_cpu_lock should remain a raw_spinlock_t. I didn't find any
+users and is unused since it was introduced in commit
+ 8f53470bab042 ("cgroup: Add cgroup_subsys->css_rstat_flush()")
+
+Remove the css_rstat_flush callback because it has no users.
+
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+---
+ include/linux/cgroup-defs.h | 5 -----
+ kernel/cgroup/cgroup.c | 12 ------------
+ kernel/cgroup/rstat.c | 10 +---------
+ 3 files changed, 1 insertion(+), 26 deletions(-)
+
+--- a/include/linux/cgroup-defs.h
++++ b/include/linux/cgroup-defs.h
+@@ -144,9 +144,6 @@ struct cgroup_subsys_state {
+ struct list_head sibling;
+ struct list_head children;
+
+- /* flush target list anchored at cgrp->rstat_css_list */
+- struct list_head rstat_css_node;
+-
+ /*
+ * PI: Subsys-unique ID. 0 is unused and root is always 1. The
+ * matching css can be looked up using css_from_id().
+@@ -455,7 +452,6 @@ struct cgroup {
+
+ /* per-cpu recursive resource statistics */
+ struct cgroup_rstat_cpu __percpu *rstat_cpu;
+- struct list_head rstat_css_list;
+
+ /* cgroup basic resource statistics */
+ struct cgroup_base_stat pending_bstat; /* pending from children */
+@@ -633,7 +629,6 @@ struct cgroup_subsys {
+ void (*css_released)(struct cgroup_subsys_state *css);
+ void (*css_free)(struct cgroup_subsys_state *css);
+ void (*css_reset)(struct cgroup_subsys_state *css);
+- void (*css_rstat_flush)(struct cgroup_subsys_state *css, int cpu);
+ int (*css_extra_stat_show)(struct seq_file *seq,
+ struct cgroup_subsys_state *css);
+
+--- a/kernel/cgroup/cgroup.c
++++ b/kernel/cgroup/cgroup.c
+@@ -1957,7 +1957,6 @@ static void init_cgroup_housekeeping(str
+ cgrp->dom_cgrp = cgrp;
+ cgrp->max_descendants = INT_MAX;
+ cgrp->max_depth = INT_MAX;
+- INIT_LIST_HEAD(&cgrp->rstat_css_list);
+ prev_cputime_init(&cgrp->prev_cputime);
+
+ for_each_subsys(ss, ssid)
+@@ -5013,12 +5012,6 @@ static void css_release_work_fn(struct w
+ list_del_rcu(&css->sibling);
+
+ if (ss) {
+- /* css release path */
+- if (!list_empty(&css->rstat_css_node)) {
+- cgroup_rstat_flush(cgrp);
+- list_del_rcu(&css->rstat_css_node);
+- }
+-
+ cgroup_idr_replace(&ss->css_idr, NULL, css->id);
+ if (ss->css_released)
+ ss->css_released(css);
+@@ -5080,7 +5073,6 @@ static void init_and_link_css(struct cgr
+ css->id = -1;
+ INIT_LIST_HEAD(&css->sibling);
+ INIT_LIST_HEAD(&css->children);
+- INIT_LIST_HEAD(&css->rstat_css_node);
+ css->serial_nr = css_serial_nr_next++;
+ atomic_set(&css->online_cnt, 0);
+
+@@ -5089,9 +5081,6 @@ static void init_and_link_css(struct cgr
+ css_get(css->parent);
+ }
+
+- if (cgroup_on_dfl(cgrp) && ss->css_rstat_flush)
+- list_add_rcu(&css->rstat_css_node, &cgrp->rstat_css_list);
+-
+ BUG_ON(cgroup_css(cgrp, ss));
+ }
+
+@@ -5193,7 +5182,6 @@ static struct cgroup_subsys_state *css_c
+ err_list_del:
+ list_del_rcu(&css->sibling);
+ err_free_css:
+- list_del_rcu(&css->rstat_css_node);
+ INIT_RCU_WORK(&css->destroy_rwork, css_free_rwork_fn);
+ queue_rcu_work(cgroup_destroy_wq, &css->destroy_rwork);
+ return ERR_PTR(err);
+--- a/kernel/cgroup/rstat.c
++++ b/kernel/cgroup/rstat.c
+@@ -162,17 +162,9 @@ static void cgroup_rstat_flush_locked(st
+ struct cgroup *pos = NULL;
+
+ raw_spin_lock(cpu_lock);
+- while ((pos = cgroup_rstat_cpu_pop_updated(pos, cgrp, cpu))) {
+- struct cgroup_subsys_state *css;
+-
++ while ((pos = cgroup_rstat_cpu_pop_updated(pos, cgrp, cpu)))
+ cgroup_base_stat_flush(pos, cpu);
+
+- rcu_read_lock();
+- list_for_each_entry_rcu(css, &pos->rstat_css_list,
+- rstat_css_node)
+- css->ss->css_rstat_flush(css, cpu);
+- rcu_read_unlock();
+- }
+ raw_spin_unlock(cpu_lock);
+
+ /* if @may_sleep, play nice and yield if necessary */