From: Morten Rasmussen <morten.rasmussen@arm.com>
To: mingo@kernel.org, peterz@infradead.org
Cc: pjt@google.com, arjan@linux.intel.com, rjw@sisk.pl,
dirk.j.brandewie@intel.com, vincent.guittot@linaro.org,
alex.shi@linaro.org, preeti@linux.vnet.ibm.com, efault@gmx.de,
corbet@lwn.net, tglx@linutronix.de, catalin.marinas@arm.com,
morten.rasmussen@arm.com, linux-kernel@vger.kernel.org,
linaro-kernel@lists.linaro.org
Subject: [RFC][PATCH 2/7] sched: power: Power driver late callback interface
Date: Fri, 11 Oct 2013 18:19:12 +0100 [thread overview]
Message-ID: <1381511957-29776-3-git-send-email-morten.rasmussen@arm.com> (raw)
In-Reply-To: <1381511957-29776-1-git-send-email-morten.rasmussen@arm.com>
Adds a late callback to the power driver interface which is called
with irq enabled and no locks held. The power driver may postpone
work that can't be done in schedule context (irq disabled and rq
locks held) and let the late callback handle it.
Signed-off-by: Morten Rasmussen <morten.rasmussen@arm.com>
---
include/linux/sched/power.h | 3 +++
kernel/sched/core.c | 1 +
kernel/sched/fair.c | 2 ++
kernel/sched/power.c | 6 ++++++
kernel/sched/sched.h | 8 ++++++++
5 files changed, 20 insertions(+)
diff --git a/include/linux/sched/power.h b/include/linux/sched/power.h
index cb2cf37..aba5f47 100644
--- a/include/linux/sched/power.h
+++ b/include/linux/sched/power.h
@@ -25,6 +25,9 @@ struct power_driver {
int (*go_faster) (int cpu, int hint);
/* Decrease cpu capacity hint */
int (*go_slower) (int cpu, int hint);
+
+ /* Scheduler call-back without rq lock held and with irq enabled */
+ void (*late_callback) (int cpu);
};
int power_driver_register(struct power_driver *driver);
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 05c39f0..12b4753 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -1913,6 +1913,7 @@ static void finish_task_switch(struct rq *rq, struct task_struct *prev)
put_task_struct(prev);
}
+ power_late_callback(raw_smp_processor_id());
tick_nohz_task_switch(current);
}
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 68f1609..edba1bb 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -5742,6 +5742,8 @@ static void run_rebalance_domains(struct softirq_action *h)
* stopped.
*/
nohz_idle_balance(this_cpu, idle);
+
+ power_late_callback(this_cpu);
}
static inline int on_null_domain(int cpu)
diff --git a/kernel/sched/power.c b/kernel/sched/power.c
index b82965a..f70b563 100644
--- a/kernel/sched/power.c
+++ b/kernel/sched/power.c
@@ -56,3 +56,9 @@ int go_slower(int cpu, int hint)
return power_driver->go_slower(cpu, hint);
}
+void power_late_callback(int cpu)
+{
+ if (!power_driver)
+ return;
+ power_driver->late_callback(cpu);
+}
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
index ef0a7b2..907a967 100644
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
@@ -1364,3 +1364,11 @@ static inline u64 irq_time_read(int cpu)
}
#endif /* CONFIG_64BIT */
#endif /* CONFIG_IRQ_TIME_ACCOUNTING */
+
+#ifdef CONFIG_SCHED_POWER
+extern void power_late_callback(int cpu);
+#else
+static inline void power_late_callback(int cpu)
+{
+}
+#endif /* CONFIG_SCHED_POWER */
--
1.7.9.5
next prev parent reply other threads:[~2013-10-11 17:19 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-11 17:19 [RFC][PATCH 0/7] Power-aware scheduling v2 Morten Rasmussen
2013-10-11 17:19 ` [RFC][PATCH 1/7] Initial power driver interface infrastructure Morten Rasmussen
2013-10-11 17:19 ` Morten Rasmussen [this message]
2013-10-14 13:42 ` [RFC][PATCH 2/7] sched: power: Power driver late callback interface Peter Zijlstra
2013-10-11 17:19 ` [RFC][PATCH 3/7] sched: power: go_faster/slower power driver hints Morten Rasmussen
2013-10-12 2:58 ` Michael wang
2013-10-14 12:42 ` Morten Rasmussen
2013-10-14 13:48 ` Peter Zijlstra
2013-10-14 15:55 ` Morten Rasmussen
2013-10-11 17:19 ` [RFC][PATCH 4/7] sched: power: Remove power capacity hints for kworker threads Morten Rasmussen
2013-10-14 13:33 ` Peter Zijlstra
2013-10-14 15:14 ` Arjan van de Ven
2013-10-17 16:40 ` Morten Rasmussen
2013-10-17 16:54 ` Peter Zijlstra
2013-10-17 17:18 ` Arjan van de Ven
2013-10-18 8:47 ` Morten Rasmussen
2013-10-18 13:43 ` Arjan van de Ven
2013-10-18 8:38 ` Morten Rasmussen
2013-10-14 16:10 ` Morten Rasmussen
2013-10-14 16:13 ` Arjan van de Ven
2013-10-14 17:19 ` Morten Rasmussen
2013-10-11 17:19 ` [RFC][PATCH 5/7] sched: power: Increase cpu capacity based on rq tracked load Morten Rasmussen
2013-10-11 17:19 ` [RFC][PATCH 6/7] sched: power: cpufreq: Initial schedpower cpufreq governor/power driver Morten Rasmussen
2013-10-11 17:19 ` [RFC][PATCH 7/7] sched: power: Let the power driver choose the best wake-up cpu Morten Rasmussen
2013-10-14 13:32 ` [RFC][PATCH 0/7] Power-aware scheduling v2 Peter Zijlstra
2013-10-14 17:15 ` Morten Rasmussen
2013-10-14 17:31 ` Peter Zijlstra
2013-10-15 17:05 ` Morten Rasmussen
2013-10-15 9:57 ` Preeti U Murthy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1381511957-29776-3-git-send-email-morten.rasmussen@arm.com \
--to=morten.rasmussen@arm.com \
--cc=alex.shi@linaro.org \
--cc=arjan@linux.intel.com \
--cc=catalin.marinas@arm.com \
--cc=corbet@lwn.net \
--cc=dirk.j.brandewie@intel.com \
--cc=efault@gmx.de \
--cc=linaro-kernel@lists.linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=pjt@google.com \
--cc=preeti@linux.vnet.ibm.com \
--cc=rjw@sisk.pl \
--cc=tglx@linutronix.de \
--cc=vincent.guittot@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®