Hi all,
Git Location: http://git.linaro.org/gitweb?p=arm/big.LITTLE/mp.git%3Ba=summary Branch: big-LITTLE-MP-v1
We're announcing a kernel tree to track the various topics of the big.LITTLE MP project. The aim of this tree is to help consolidate the various topic patchsets that improve the behaviour of Linux on asymmetric cores (e.g. big.LITTLE) and make smarter scheduling decisions possible in order to save power. I'd like to think of it as a linux-next tree focused on asymmetric support enablement.
Viresh will recreate this tree when new versions of the topic patchsets are available. IOW, as the patches are reviewed on the lists and go through iterations, we'll pull each topic patchset into a topic branch (e.g. per-task-load-average-v2, arm-asymmetric-support-v3). Then a merge tree will be created (e.g. big-LITTLE-MP-v1) as needed based on the latest versions of these topics. This should allow users to track individual topics or leave out some topics if they so desire. More topics will be added to this tree as the work becomes available.
Linaro platform team will take the merge branch (big-LITTLE-MP-v1, -v2, etc.) and use it for platform enablement work and testing on real hardware and models.
Problems should be reported on LKML/LAKML as usual if they are related to the individual topic trees. If they're related to a bad merge or config enablement please report on linaro-dev@lists.linaro.org.
Regards, Amit p.s. People who've shown an interest in this tree have been bcc'ed so they don't miss the announcement. They are requested to join either linaro-dev or linaro-sched-sig for future announcements.
On 4 July 2012 10:09, Amit Kucheria amit.kucheria@linaro.org wrote:
Hi all,
Git Location: http://git.linaro.org/gitweb?p=arm/big.LITTLE/mp.git%3Ba=summary Branch: big-LITTLE-MP-v1
We're announcing a kernel tree to track the various topics of the big.LITTLE MP project. The aim of this tree is to help consolidate the various topic patchsets that improve the behaviour of Linux on asymmetric cores (e.g. big.LITTLE) and make smarter scheduling decisions possible in order to save power. I'd like to think of it as a linux-next tree focused on asymmetric support enablement.
Viresh will recreate this tree when new versions of the topic patchsets are available. IOW, as the patches are reviewed on the lists and go through iterations, we'll pull each topic patchset into a topic branch (e.g. per-task-load-average-v2, arm-asymmetric-support-v3). Then a merge tree will be created (e.g. big-LITTLE-MP-v1) as needed based on the latest versions of these topics. This should allow users to track individual topics or leave out some topics if they so desire. More topics will be added to this tree as the work becomes available.
Linaro platform team will take the merge branch (big-LITTLE-MP-v1, -v2, etc.) and use it for platform enablement work and testing on real hardware and models.
Problems should be reported on LKML/LAKML as usual if they are related to the individual topic trees. If they're related to a bad merge or config enablement please report on linaro-dev@lists.linaro.org.
Regards, Amit p.s. People who've shown an interest in this tree have been bcc'ed so they don't miss the announcement. They are requested to join either linaro-dev or linaro-sched-sig for future announcements.
Amit would you also include linaro-android in future mails?
On 4 July 2012 16:09, Amit Kucheria amit.kucheria@linaro.org wrote:
Hi all,
Git Location: http://git.linaro.org/gitweb?p=arm/big.LITTLE/mp.git%3Ba=summary Branch: big-LITTLE-MP-v1
We're announcing a kernel tree to track the various topics of the big.LITTLE MP project. The aim of this tree is to help consolidate the various topic patchsets that improve the behaviour of Linux on asymmetric cores (e.g. big.LITTLE) and make smarter scheduling decisions possible in order to save power. I'd like to think of it as a linux-next tree focused on asymmetric support enablement.
Viresh will recreate this tree when new versions of the topic patchsets are available. IOW, as the patches are reviewed on the lists and go through iterations, we'll pull each topic patchset into a topic branch (e.g. per-task-load-average-v2, arm-asymmetric-support-v3). Then a merge tree will be created (e.g. big-LITTLE-MP-v1) as needed based on the latest versions of these topics. This should allow users to track individual topics or leave out some topics if they so desire. More topics will be added to this tree as the work becomes available.
Linaro platform team will take the merge branch (big-LITTLE-MP-v1, -v2, etc.) and use it for platform enablement work and testing on real hardware and models.
Problems should be reported on LKML/LAKML as usual if they are related to the individual topic trees. If they're related to a bad merge or config enablement please report on linaro-dev@lists.linaro.org.
Hi Andrey,
big-LITTLE-MP-v2 is ready to be pulled in. Following is a pull request for it:
--------------8<--------------------->8-------------------
The following changes since commit bd0a521e88aa7a06ae7aabaed7ae196ed4ad867a:
Linux 3.5-rc6 (2012-07-07 17:23:56 -0700)
are available in the git repository at:
git://git.linaro.org/arm/big.LITTLE/mp.git big-LITTLE-MP-v2
for you to fetch changes up to ca789c61deb0219cd3fefdb26090bbc9701deada:
Merge branches 'arm-asymmetric-support-v3', 'cpuidle-next-v4', 'per-cpu-thread-hotplug-v2', 'task-placement-v1' and 'config-fragments' into big-LITTLE-MP-v3 (2012-07-11 10:51:29 +0100)
----------------------------------------------------------------
Ben Segall (1): sched: maintain per-rq runnable averages
Colin Cross (4): cpuidle: refactor out cpuidle_enter_state cpuidle: fix error handling in __cpuidle_register_device cpuidle: add support for states that affect multiple cpus cpuidle: coupled: add parallel barrier function
Morten Rasmussen (5): sched: Add ftrace events for entity load-tracking sched: entity load-tracking load_avg_ratio sched: load-tracking driven wakeup migration for HMP platforms sched: Forced migration of high load task on HMP platforms sched: Add HMP forced task migration ftrace event
Paul E. McKenney (1): rcu: Use smp_hotplug_thread facility for RCUs per-CPU kthread
Paul Turner (15): sched: track the runnable average on a per-task entitiy basis sched: aggregate load contributed by task entities on parenting cfs_rq sched: maintain the load contribution of blocked entities sched: add an rq migration call-back to sched_class sched: account for blocked load waking back up sched: aggregate total task_group load sched: compute load contribution by a group entity sched: normalize tg load contributions against runnable time sched: maintain runnable averages across throttled periods sched: replace update_shares weight distribution with per-entity computation sched: refactor update_shares_cpu() -> update_blocked_avgs() sched: update_cfs_shares at period edge sched: make __update_entity_runnable_avg() fast sched: implement usage tracking sched: introduce temporary FAIR_GROUP_SCHED dependency for load-tracking
Peter Zijlstra (1): sched, x86: Remove broken power estimation
Thomas Gleixner (6): rcu: Yield simpler kthread: Implement park/unpark facility smpboot: Provide infrastructure for percpu hotplug threads softirq: Use hotplug thread infrastructure watchdog: Use hotplug thread infrastructure infiniband: ehca: Use hotplug thread infrastructure
Vincent Guittot (4): ARM: topology: Add arch_scale_freq_power function ARM: topology: factorize the update of sibling masks ARM: topology: Update cpu_power according to DT information sched: cpu_power: enable ARCH_POWER
Viresh Kumar (3): configs: Add config fragments for big LITTLE MP linaro/configs: Update big LITTLE MP fragment for task placement work Merge branches 'arm-asymmetric-support-v3', 'cpuidle-next-v4', 'per-cpu-thread-hotplug-v2', 'task-placement-v1' and 'config-fragments' into big-LITTLE-MP-v3
arch/arm/Kconfig | 29 + arch/arm/kernel/topology.c | 209 +++- arch/x86/kernel/cpu/Makefile | 2 +- arch/x86/kernel/cpu/sched.c | 55 - drivers/cpuidle/Kconfig | 3 + drivers/cpuidle/Makefile | 1 + drivers/cpuidle/coupled.c | 715 +++++++++++ drivers/cpuidle/cpuidle.c | 68 +- drivers/cpuidle/cpuidle.h | 32 + drivers/infiniband/hw/ehca/ehca_irq.c | 240 ++-- drivers/infiniband/hw/ehca/ehca_irq.h | 5 +- include/linux/cpuidle.h | 11 + include/linux/kthread.h | 11 +- include/linux/sched.h | 19 + include/linux/smpboot.h | 40 + include/trace/events/sched.h | 151 +++ kernel/cpu.c | 10 +- kernel/kthread.c | 184 ++- kernel/rcutree.c | 12 +- kernel/rcutree.h | 15 +- kernel/rcutree_plugin.h | 375 +----- kernel/rcutree_trace.c | 3 +- kernel/sched/core.c | 5 + kernel/sched/debug.c | 39 +- kernel/sched/fair.c | 1105 ++++++++++++++--- kernel/sched/features.h | 2 +- kernel/sched/sched.h | 60 +- kernel/smpboot.c | 206 ++++ kernel/smpboot.h | 4 + kernel/softirq.c | 84 +- kernel/watchdog.c | 231 ++-- linaro/configs/android.conf | 30 + linaro/configs/big-LITTLE-MP.conf | 9 + linaro/configs/linaro-base.conf | 84 ++ linaro/configs/ubuntu-minimal.conf | 24 + linaro/configs/ubuntu.conf | 2133 +++++++++++++++++++++++++++++++++ 36 files changed, 5174 insertions(+), 1032 deletions(-) delete mode 100644 arch/x86/kernel/cpu/sched.c create mode 100644 drivers/cpuidle/coupled.c create mode 100644 include/linux/smpboot.h create mode 100644 linaro/configs/android.conf create mode 100644 linaro/configs/big-LITTLE-MP.conf create mode 100644 linaro/configs/linaro-base.conf create mode 100644 linaro/configs/ubuntu-minimal.conf create mode 100644 linaro/configs/ubuntu.conf
On Wed, 2012-07-11 at 10:57 +0100, Viresh Kumar wrote:
Hi Andrey,
big-LITTLE-MP-v2 is ready to be pulled in.
There's going to be an 'interesting' merge with our TC2 enablement branch.
In arch/arm/kernel/topology.c both branches factor out update_siblings_masks(), one of them modifies it.
And in the same file, both branches also add functions called parse_dt_topology() with different functionality. In the resolution I'm currently testing, I fixed this by renaming the version from big-LITTLE-MP-v2 to parse_dt_for_cpu_capacity() as that seemed an accurate description of what it did. Is it tool late to also do this in the MP branch?
On 11 July 2012 14:32, Jon Medhurst (Tixy) tixy@linaro.org wrote:
On Wed, 2012-07-11 at 10:57 +0100, Viresh Kumar wrote: There's going to be an 'interesting' merge with our TC2 enablement branch.
In arch/arm/kernel/topology.c both branches factor out update_siblings_masks(), one of them modifies it.
And in the same file, both branches also add functions called parse_dt_topology() with different functionality. In the resolution I'm currently testing, I fixed this by renaming the version from big-LITTLE-MP-v2 to parse_dt_for_cpu_capacity() as that seemed an accurate description of what it did. Is it tool late to also do this in the MP branch?
There are two patches doing the same thing (Vincent probably picked this patch from Lorenzo and updated it a bit),
So, you can probably drop below patch from linux-arm tree and try a merge.
c5833d5 ARM: kernel: build CPU topology from DT
I have tested this branch of mine, (big-LITTLE-MP-V2) with TC2 patches from linux-arm and MP task placement patches are working fine. (Obviously I dropped above mentioned patch)
-- viresh
On Wed, 2012-07-11 at 17:00 +0100, Viresh Kumar wrote:
On 11 July 2012 14:32, Jon Medhurst (Tixy) tixy@linaro.org wrote: On Wed, 2012-07-11 at 10:57 +0100, Viresh Kumar wrote: There's going to be an 'interesting' merge with our TC2 enablement branch. In arch/arm/kernel/topology.c both branches factor out update_siblings_masks(), one of them modifies it. And in the same file, both branches also add functions called parse_dt_topology() with different functionality. In the resolution I'm currently testing, I fixed this by renaming the version from big-LITTLE-MP-v2 to parse_dt_for_cpu_capacity() as that seemed an accurate description of what it did. Is it tool late to also do this in the MP branch?
There are two patches doing the same thing (Vincent probably picked this patch from Lorenzo and updated it a bit),
The don't look like they are doing the same thing to me?!?
Lorenzo's patch parses DT for cluster layout.
Vincent's patch parses DT looking for CPU core type and frequency so it can set power/capaciy.
I can see no overlap in the CPU node properties that they parse.
Perhaps Lorenzo and Vincent can comment?
On Wed, Jul 11, 2012 at 05:17:44PM +0100, Jon Medhurst (Tixy) wrote:
On Wed, 2012-07-11 at 17:00 +0100, Viresh Kumar wrote:
On 11 July 2012 14:32, Jon Medhurst (Tixy) tixy@linaro.org wrote: On Wed, 2012-07-11 at 10:57 +0100, Viresh Kumar wrote: There's going to be an 'interesting' merge with our TC2 enablement branch. In arch/arm/kernel/topology.c both branches factor out update_siblings_masks(), one of them modifies it. And in the same file, both branches also add functions called parse_dt_topology() with different functionality. In the resolution I'm currently testing, I fixed this by renaming the version from big-LITTLE-MP-v2 to parse_dt_for_cpu_capacity() as that seemed an accurate description of what it did. Is it tool late to also do this in the MP branch?
There are two patches doing the same thing (Vincent probably picked this patch from Lorenzo and updated it a bit),
The don't look like they are doing the same thing to me?!?
Lorenzo's patch parses DT for cluster layout.
Vincent's patch parses DT looking for CPU core type and frequency so it can set power/capaciy.
I can see no overlap in the CPU node properties that they parse.
Perhaps Lorenzo and Vincent can comment?
You can drop my patch since it is not strictly needed on TC2. I have to work out the conflict with Vincent's code, but again for now drop the patch, it is safe to do that, topology is set-up according to the MPIDR wiring and it is correct, at least on TC2.
Thanks a lot, Lorenzo
On Wed, 2012-07-11 at 17:25 +0100, Lorenzo Pieralisi wrote:
On Wed, Jul 11, 2012 at 05:17:44PM +0100, Jon Medhurst (Tixy) wrote:
On Wed, 2012-07-11 at 17:00 +0100, Viresh Kumar wrote:
On 11 July 2012 14:32, Jon Medhurst (Tixy) tixy@linaro.org wrote: On Wed, 2012-07-11 at 10:57 +0100, Viresh Kumar wrote: There's going to be an 'interesting' merge with our TC2 enablement branch. In arch/arm/kernel/topology.c both branches factor out update_siblings_masks(), one of them modifies it. And in the same file, both branches also add functions called parse_dt_topology() with different functionality. In the resolution I'm currently testing, I fixed this by renaming the version from big-LITTLE-MP-v2 to parse_dt_for_cpu_capacity() as that seemed an accurate description of what it did. Is it tool late to also do this in the MP branch?
There are two patches doing the same thing (Vincent probably picked this patch from Lorenzo and updated it a bit),
The don't look like they are doing the same thing to me?!?
Lorenzo's patch parses DT for cluster layout.
Vincent's patch parses DT looking for CPU core type and frequency so it can set power/capaciy.
I can see no overlap in the CPU node properties that they parse.
Perhaps Lorenzo and Vincent can comment?
You can drop my patch since it is not strictly needed on TC2. I have to work out the conflict with Vincent's code, but again for now drop the patch, it is safe to do that, topology is set-up according to the MPIDR wiring and it is correct, at least on TC2.
Thanks, I'll get onto that immediately then.
On 11 July 2012 18:25, Lorenzo Pieralisi lorenzo.pieralisi@arm.com wrote:
On Wed, Jul 11, 2012 at 05:17:44PM +0100, Jon Medhurst (Tixy) wrote:
On Wed, 2012-07-11 at 17:00 +0100, Viresh Kumar wrote:
On 11 July 2012 14:32, Jon Medhurst (Tixy) tixy@linaro.org wrote: On Wed, 2012-07-11 at 10:57 +0100, Viresh Kumar wrote: There's going to be an 'interesting' merge with our TC2 enablement branch.
In arch/arm/kernel/topology.c both branches factor out update_siblings_masks(), one of them modifies it. And in the same file, both branches also add functions called parse_dt_topology() with different functionality. In the resolution I'm currently testing, I fixed this by renaming the version from big-LITTLE-MP-v2 to parse_dt_for_cpu_capacity() as that seemed an accurate description of what it did. Is it tool late to also do this in the MP branch?
There are two patches doing the same thing (Vincent probably picked this patch from Lorenzo and updated it a bit),
The don't look like they are doing the same thing to me?!?
Lorenzo's patch parses DT for cluster layout.
Vincent's patch parses DT looking for CPU core type and frequency so it can set power/capaciy.
I can see no overlap in the CPU node properties that they parse.
Perhaps Lorenzo and Vincent can comment?
You can drop my patch since it is not strictly needed on TC2. I have to work out the conflict with Vincent's code, but again for now drop the patch, it is safe to do that, topology is set-up according to the MPIDR wiring and it is correct, at least on TC2.
Thanks Lorenzo
Vincent
Thanks a lot, Lorenzo
On Wed, 2012-07-11 at 17:25 +0100, Lorenzo Pieralisi wrote:
On Wed, Jul 11, 2012 at 05:17:44PM +0100, Jon Medhurst (Tixy) wrote:
On Wed, 2012-07-11 at 17:00 +0100, Viresh Kumar wrote:
On 11 July 2012 14:32, Jon Medhurst (Tixy) tixy@linaro.org wrote: On Wed, 2012-07-11 at 10:57 +0100, Viresh Kumar wrote: There's going to be an 'interesting' merge with our TC2 enablement branch. In arch/arm/kernel/topology.c both branches factor out update_siblings_masks(), one of them modifies it. And in the same file, both branches also add functions called parse_dt_topology() with different functionality. In the resolution I'm currently testing, I fixed this by renaming the version from big-LITTLE-MP-v2 to parse_dt_for_cpu_capacity() as that seemed an accurate description of what it did. Is it tool late to also do this in the MP branch?
There are two patches doing the same thing (Vincent probably picked this patch from Lorenzo and updated it a bit),
The don't look like they are doing the same thing to me?!?
Lorenzo's patch parses DT for cluster layout.
Vincent's patch parses DT looking for CPU core type and frequency so it can set power/capaciy.
I can see no overlap in the CPU node properties that they parse.
Perhaps Lorenzo and Vincent can comment?
You can drop my patch since it is not strictly needed on TC2. I have to work out the conflict with Vincent's code, but again for now drop the patch, it is safe to do that, topology is set-up according to the MPIDR wiring and it is correct, at least on TC2.
I've now dropped that patch from my tracking-armlt-tc2 branch and also taken the opportunity to add clock-frequency values to the device tree for TC2 as required by the big-LITTLE-MP code.
My test merge of ARM LT branches and big-LITTLE-MP (with the config fragment to enable that) builds and boots OK on TC2 running Android.