This patchset updates devfreq core to add support for devices
which can idle. When device idleness is detected perhaps
through runtime-pm, need some mechanism to suspend devfreq
load monitoring and resume when device is back online.
patch 1 introduce core design changes - per device work, decouple
delayed work from core and event based interaction.
patch 2 add devfreq suspend and resume apis.
patch 3 current frequency bug fix and add new sysfs attribute for
governor predicted next target frequency.
The existing devfreq apis are kept intact. Two new apis
devfreq_suspend_device() and devfreq_resume_device() are
added to support suspend/resume of device devfreq.
Rajagopal Venkat (3):
devfreq: core updates to support devices which can idle
devfreq: Add suspend and resume apis
devfreq: Add current freq callback in device profile
Documentation/ABI/testing/sysfs-class-devfreq | 7 +
drivers/devfreq/devfreq.c | 412 +++++++++++---------------
drivers/devfreq/governor.h | 11 +
drivers/devfreq/governor_performance.c | 16 +-
drivers/devfreq/governor_powersave.c | 16 +-
drivers/devfreq/governor_simpleondemand.c | 42 +++
drivers/devfreq/governor_userspace.c | 23 +-
include/linux/devfreq.h | 46 ++-
8 files changed, 291 insertions(+), 282 deletions(-)
I have flashed my SD card with linaro-media-create with precise-devel
and latest h/w pack (12.08)
Now i have two requirements:
- Always use my copy of devel instead of the new devel everytime from
the latest release
As i do install a lot of stuff on it. Will apt-get update would be
enough to get the latest things
- Update kernel image, with my kernel, from mainline or linaro I have
tried a lot of
combinations... but always some issues
I went through this too: https://wiki.linaro.org/Resources/HowTo/KernelDeploy
I want to know what's the best practice of updating image that is
followed by most of the Linaro developers?
NOTE: I raised this query here too:
On 28 August 2012 10:37, Viresh Kumar <viresh.kumar(a)linaro.org> wrote:
> I have updated
> as per our last discussion. Please see if i have missed something.
I will be sending PULL request of big-LITTLE-MP-v7 today as per schedule.
Do let me know if you want anything to be included in it before that.
@Morten: What should i do with patch reported by Santosh:
Do i need to apply it over your branch?
The semihosting and FDT code makes use of libc style string
functions implemented in our string.c, however it relies of the system
providing the string.h header file.
This causes problems on toolchains that don't provide these headers,
like Android toolchains, and it also means that we include declaration
for functions which aren't implemented in the bootwrapper.
Resolve this by providing our own string.h which declares only
the functions we implement and add the base directory to the
include path so this header is found.
Signed-off-by: Jon Medhurst <tixy(a)linaro.org>
Makefile | 2 +-
string.h | 16 ++++++++++++++++
2 files changed, 17 insertions(+), 1 deletion(-)
create mode 100644 string.h
diff --git a/Makefile b/Makefile
index 995fd8f..f8fc841 100644
@@ -57,7 +57,7 @@ monitor.o: $(MONITOR)
$(CC) $(CPPFLAGS) -c -o $@ $<
- $(CC) $(CPPFLAGS) -O2 -ffreestanding -Ilibfdt -c -o $@ $<
+ $(CC) $(CPPFLAGS) -O2 -ffreestanding -I. -Ilibfdt -c -o $@ $<
model.lds: $(LD_SCRIPT) Makefile
$(CC) $(CPPFLAGS) -E -P -C -o $@ $<
diff --git a/string.h b/string.h
new file mode 100644
@@ -0,0 +1,16 @@
+extern void *(memcpy)(void *__dest, __const void *__src, size_t __n);
+extern void *(memmove)(void *__dest, __const void *__src, size_t __n);
+extern void *(memchr)(void const *s, int c, size_t n);
+extern size_t (strlen)(const char *s);
+extern void *(memset)(void *s, int c, size_t count);
+extern int (memcmp)(void const *p1, void const *p2, size_t n);
+extern int (strcmp)(char const *s1, char const *s2);
+extern int (strncmp)(char const *s1, char const *s2, size_t n);
+extern char *(strchr)(char const *s, int c);
Incorrect timer and work perf events timestamp tracing is one
of the reason for reporting usage over 100%. This patch will
resolve the issue by
- rejecting the events for which entry timestamp is not recorded.
Currently these events exit timestamp itself is considered as
usage period resulting in over 100% usage.
- clearing event timestamps from global map at the end of each
measurement to avoid collision with earlier recorded timestamps.
Signed-off-by: Rajagopal Venkat <rajagopal.venkat(a)linaro.org>
src/process/timer.cpp | 5 ++++-
src/process/work.cpp | 5 ++++-
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/src/process/timer.cpp b/src/process/timer.cpp
index 8917490..db074c4 100644
@@ -79,7 +79,8 @@ uint64_t timer::done(uint64_t time, uint64_t timer_struct)
- if (running_since[timer_struct] > time)
+ if (running_since.find(timer_struct) == running_since.end() ||
+ running_since[timer_struct] > time)
delta = time - running_since[timer_struct];
@@ -147,6 +148,8 @@ void clear_timers(void)
it = all_timers.begin();
diff --git a/src/process/work.cpp b/src/process/work.cpp
index 82f13a2..e436643 100644
@@ -56,7 +56,8 @@ uint64_t work::done(uint64_t time, uint64_t work_struct)
- if (running_since[work_struct] > time)
+ if (running_since.find(work_struct) == running_since.end() ||
+ running_since[work_struct] > time)
delta = time - running_since[work_struct];
@@ -102,6 +103,8 @@ void clear_work(void)
it = all_work.begin();
Since commit 46bcfad7a819bd17ac4e831b04405152d59784ab,
cpuidle: Single/Global registration of idle states
we have a single registration for the cpuidle states which makes
sense. But now two new architectures are coming: tegra3 and big.LITTLE.
These architectures have different cpus with different caracteristics
for power saving. High load => powerfull processors, idle => small processors.
That implies different cpu latencies.
This patchset present a simple way to keep the current behavior as introduced
by Deepthi without breaking the drivers and add the possibility to specify a
per cpu states.
Daniel Lezcano (5):
acpi : move the acpi_idle_driver variable declaration
acpi : move cpuidle_device field out of the acpi_processor_power
cpuidle : add a pointer for cpuidle_state in the cpuidle_device
cpuidle : use per cpuidle device cpu states
cpuidle : add cpuidle_register_states function
drivers/acpi/processor_driver.c | 2 +-
drivers/acpi/processor_idle.c | 25 ++++++++++++++++++-------
drivers/cpuidle/cpuidle.c | 24 +++++++++++++++++++++---
drivers/cpuidle/governors/ladder.c | 18 +++++++++---------
drivers/cpuidle/governors/menu.c | 8 ++++----
drivers/cpuidle/sysfs.c | 3 +--
include/acpi/processor.h | 3 ---
include/linux/cpuidle.h | 11 ++++++++---
8 files changed, 62 insertions(+), 32 deletions(-)
The bootwrapper is really doubling as firmware, so it doesn't make
sense for it to drop out of the Secure World before getting a
chance to parse its parameters and configuration.
Instead, it should make sense to delay switching to the Normal
World for as long as possible so that we have a chance to do any
required firmware-level configuration in the Secure World first.
This quick hack is ***completely untested***, since I'm not working
with any suitable kernel tree right now.
If someone with a KVM tree ready to run could give it a try,
that would definitely save me some time.
Review also welcome (naturally)
Dave Martin (3):
bootwrapper: Fix misaligned Hyp mode vector table
bootwrapper: Refactor entry into Hyp mode to be more reusable
bootwrapper: Delay switch to Hyp mode until kernel entry
boot.S | 58 +++++++++++++++++++++++++++++++++++++-------------------
semi_loader.h | 6 +++-
2 files changed, 42 insertions(+), 22 deletions(-)