Re: Virtual Keyboard Issue

2012-06-19 Thread Bharathi Subramanian
Thanks Vishal. Initially I misunderstood your statement and trying to
use the Keyboard related APK from ICS Build. But later, I found the
icskeyboard.apk file and loaded it. Now Android Virtual Keyboard is
working fine.

Thanks,
--
Bharathi Subramanian

On Fri, Jun 8, 2012 at 11:18 PM, Vishal Bhoj vishal.b...@linaro.org wrote:
 Hi Bharathi,

 It is an issue with the soft keyboard. Can you install ICS keyboard apk . It
 should work well on GB releases.

 Regards,
 Vishal

 On 8 June 2012 20:38, Bharathi Subramanian bharathi.l...@gmail.com wrote:

 Hi, Any clue or pointers to solve this issue?

 On Wed, Jun 6, 2012 at 5:37 PM, Bharathi Subramanian wrote:
  Hi All,
 
  I am using Linaro 11.11 Gingerbread with 10 LCD and touchscreen. In
  that, the Android Virtual Keyboard is not visible fully on the screen.
  So unable to type Text in SMS or URL in Browser. Only 5mm of the
  keyboard's top portion alone is visible. Any clue on how to fix this
  issue?  Is it related to IDC file?

___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


[PATCH v2 0/5] ARM: topology: set the capacity of each cores for big.LITTLE

2012-06-19 Thread Vincent Guittot
This patchset creates an arch_scale_freq_power function for ARM, which is used 
to set the relative capacity of each core of a big.LITTLE system. It also 
removes
the broken power estimation of x86.

Modification since v1:
 - Add and update explanation about the use of the table and the range of the 
value 
 - Remove the use of NR_CPUS and use nr_cpu_ids instead
 - Remove broken power estimation of x86

Peter Zijlstra (1):
  sched, x86: Remove broken power estimation

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

 arch/arm/include/asm/topology.h |2 +
 arch/arm/kernel/topology.c  |  210 +++
 arch/x86/kernel/cpu/Makefile|2 +-
 arch/x86/kernel/cpu/sched.c |   55 --
 kernel/sched/features.h |2 +-
 5 files changed, 193 insertions(+), 78 deletions(-)
 delete mode 100644 arch/x86/kernel/cpu/sched.c

-- 
1.7.9.5


___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


[PATCH v2 2/5] ARM: topology: factorize the update of sibling masks

2012-06-19 Thread Vincent Guittot
This factorization has also been proposed in another patchset that has not been
merged yet:
http://lists.infradead.org/pipermail/linux-arm-kernel/2012-January/080873.html
So, this patch could be dropped depending of the state of the other one.

Signed-off-by: Lorenzo Pieralisi lorenzo.pieral...@arm.com
Signed-off-by: Vincent Guittot vincent.guit...@linaro.org
---
 arch/arm/kernel/topology.c |   47 
 1 file changed, 26 insertions(+), 21 deletions(-)

diff --git a/arch/arm/kernel/topology.c b/arch/arm/kernel/topology.c
index 37e2e57..92c2fb3 100644
--- a/arch/arm/kernel/topology.c
+++ b/arch/arm/kernel/topology.c
@@ -82,6 +82,31 @@ const struct cpumask *cpu_coregroup_mask(int cpu)
return cpu_topology[cpu].core_sibling;
 }
 
+void update_siblings_masks(unsigned int cpuid)
+{
+   struct cputopo_arm *cpu_topo, *cpuid_topo = cpu_topology[cpuid];
+   int cpu;
+   /* update core and thread sibling masks */
+   for_each_possible_cpu(cpu) {
+   cpu_topo = cpu_topology[cpu];
+
+   if (cpuid_topo-socket_id == cpu_topo-socket_id) {
+   cpumask_set_cpu(cpuid, cpu_topo-core_sibling);
+   if (cpu != cpuid)
+   cpumask_set_cpu(cpu, cpuid_topo-core_sibling);
+
+   if (cpuid_topo-core_id == cpu_topo-core_id) {
+   cpumask_set_cpu(cpuid,
+   cpu_topo-thread_sibling);
+   if (cpu != cpuid)
+   cpumask_set_cpu(cpu,
+   cpuid_topo-thread_sibling);
+   }
+   }
+   }
+   smp_wmb();
+}
+
 /*
  * store_cpu_topology is called at boot when only one cpu is running
  * and with the mutex cpu_hotplug.lock locked, when several cpus have booted,
@@ -91,7 +116,6 @@ void store_cpu_topology(unsigned int cpuid)
 {
struct cputopo_arm *cpuid_topo = cpu_topology[cpuid];
unsigned int mpidr;
-   unsigned int cpu;
 
/* If the cpu topology has been already set, just return */
if (cpuid_topo-core_id != -1)
@@ -133,26 +157,7 @@ void store_cpu_topology(unsigned int cpuid)
cpuid_topo-socket_id = -1;
}
 
-   /* update core and thread sibling masks */
-   for_each_possible_cpu(cpu) {
-   struct cputopo_arm *cpu_topo = cpu_topology[cpu];
-
-   if (cpuid_topo-socket_id == cpu_topo-socket_id) {
-   cpumask_set_cpu(cpuid, cpu_topo-core_sibling);
-   if (cpu != cpuid)
-   cpumask_set_cpu(cpu,
-   cpuid_topo-core_sibling);
-
-   if (cpuid_topo-core_id == cpu_topo-core_id) {
-   cpumask_set_cpu(cpuid,
-   cpu_topo-thread_sibling);
-   if (cpu != cpuid)
-   cpumask_set_cpu(cpu,
-   cpuid_topo-thread_sibling);
-   }
-   }
-   }
-   smp_wmb();
+   update_siblings_masks(cpuid);
 
printk(KERN_INFO CPU%u: thread %d, cpu %d, socket %d, mpidr %x\n,
cpuid, cpu_topology[cpuid].thread_id,
-- 
1.7.9.5


___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


[PATCH v2 1/5] ARM: topology: Add arch_scale_freq_power function

2012-06-19 Thread Vincent Guittot
Add infrastructure to be able to modify the cpu_power of each core

Signed-off-by: Vincent Guittot vincent.guit...@linaro.org
---
 arch/arm/include/asm/topology.h |2 ++
 arch/arm/kernel/topology.c  |   38 +-
 2 files changed, 39 insertions(+), 1 deletion(-)

diff --git a/arch/arm/include/asm/topology.h b/arch/arm/include/asm/topology.h
index 58b8b84..78e4c85 100644
--- a/arch/arm/include/asm/topology.h
+++ b/arch/arm/include/asm/topology.h
@@ -27,11 +27,13 @@ void init_cpu_topology(void);
 void store_cpu_topology(unsigned int cpuid);
 const struct cpumask *cpu_coregroup_mask(int cpu);
 
+void set_power_scale(unsigned int cpu, unsigned long power);
 #else
 
 static inline void init_cpu_topology(void) { }
 static inline void store_cpu_topology(unsigned int cpuid) { }
 
+static inline void set_power_scale(unsigned int cpu, unsigned long power) { }
 #endif
 
 #include asm-generic/topology.h
diff --git a/arch/arm/kernel/topology.c b/arch/arm/kernel/topology.c
index 8200dea..37e2e57 100644
--- a/arch/arm/kernel/topology.c
+++ b/arch/arm/kernel/topology.c
@@ -22,6 +22,37 @@
 #include asm/cputype.h
 #include asm/topology.h
 
+/*
+ * cpu power scale management
+ */
+
+/*
+ * cpu power table
+ * This per cpu data structure describes the relative capacity of each core.
+ * On a heteregenous system, cores don't have the same computation capacity
+ * and we reflect that difference in the cpu_power field so the scheduler can
+ * take this difference into account during load balance. A per cpu structure
+ * is preferred because each CPU updates its own cpu_power field during the
+ * load balance except for idle cores. One idle core is selected to run the
+ * rebalance_domains for all idle cores and the cpu_power can be updated
+ * during this sequence.
+ */
+static DEFINE_PER_CPU(unsigned long, cpu_scale);
+
+unsigned long arch_scale_freq_power(struct sched_domain *sd, int cpu)
+{
+   return per_cpu(cpu_scale, cpu);
+}
+
+void set_power_scale(unsigned int cpu, unsigned long power)
+{
+   per_cpu(cpu_scale, cpu) = power;
+}
+
+/*
+ * cpu topology management
+ */
+
 #define MPIDR_SMP_BITMASK (0x3  30)
 #define MPIDR_SMP_VALUE (0x2  30)
 
@@ -41,6 +72,9 @@
 #define MPIDR_LEVEL2_MASK 0xFF
 #define MPIDR_LEVEL2_SHIFT 16
 
+/*
+ * cpu topology table
+ */
 struct cputopo_arm cpu_topology[NR_CPUS];
 
 const struct cpumask *cpu_coregroup_mask(int cpu)
@@ -134,7 +168,7 @@ void init_cpu_topology(void)
 {
unsigned int cpu;
 
-   /* init core mask */
+   /* init core mask and power*/
for_each_possible_cpu(cpu) {
struct cputopo_arm *cpu_topo = (cpu_topology[cpu]);
 
@@ -143,6 +177,8 @@ void init_cpu_topology(void)
cpu_topo-socket_id = -1;
cpumask_clear(cpu_topo-core_sibling);
cpumask_clear(cpu_topo-thread_sibling);
+
+   per_cpu(cpu_scale, cpu) = SCHED_POWER_SCALE;
}
smp_wmb();
 }
-- 
1.7.9.5


___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


[PATCH v2 5/5] sched: cpu_power: enable ARCH_POWER

2012-06-19 Thread Vincent Guittot
Heteregeneous ARM platform uses arch_scale_freq_power function
to reflect the relative capacity of each core

Signed-off-by: Vincent Guittot vincent.guit...@linaro.org
---
 kernel/sched/features.h |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/sched/features.h b/kernel/sched/features.h
index de00a48..d98ae90 100644
--- a/kernel/sched/features.h
+++ b/kernel/sched/features.h
@@ -42,7 +42,7 @@ SCHED_FEAT(CACHE_HOT_BUDDY, true)
 /*
  * Use arch dependent cpu power functions
  */
-SCHED_FEAT(ARCH_POWER, false)
+SCHED_FEAT(ARCH_POWER, true)
 
 SCHED_FEAT(HRTICK, false)
 SCHED_FEAT(DOUBLE_TICK, false)
-- 
1.7.9.5


___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


[PATCH v2 4/5] sched, x86: Remove broken power estimation

2012-06-19 Thread Vincent Guittot
From: Peter Zijlstra a.p.zijls...@chello.nl

The x86 sched power implementation has been broken forever and gets in
the way of other stuff, remove it.

For archaeological interest, fixing this code would require dealing with
the cross-cpu calling of these functions and more importantly, we need
to filter idle time out of the a/m-perf stuff because the ratio will go
down to 0 when idle, giving a 0 capacity which is not what we'd want.

Signed-off-by: Peter Zijlstra a.p.zijls...@chello.nl
Link: http://lkml.kernel.org/n/tip-wjjwelpti8f8k7i1pdnzm...@git.kernel.org
---
 arch/x86/kernel/cpu/Makefile |2 +-
 arch/x86/kernel/cpu/sched.c  |   55 --
 2 files changed, 1 insertion(+), 56 deletions(-)
 delete mode 100644 arch/x86/kernel/cpu/sched.c

diff --git a/arch/x86/kernel/cpu/Makefile b/arch/x86/kernel/cpu/Makefile
index 6ab6aa2..c598126 100644
--- a/arch/x86/kernel/cpu/Makefile
+++ b/arch/x86/kernel/cpu/Makefile
@@ -14,7 +14,7 @@ CFLAGS_common.o   := $(nostackp)
 
 obj-y  := intel_cacheinfo.o scattered.o topology.o
 obj-y  += proc.o capflags.o powerflags.o common.o
-obj-y  += vmware.o hypervisor.o sched.o mshyperv.o
+obj-y  += vmware.o hypervisor.o mshyperv.o
 obj-y  += rdrand.o
 obj-y  += match.o
 
diff --git a/arch/x86/kernel/cpu/sched.c b/arch/x86/kernel/cpu/sched.c
deleted file mode 100644
index a640ae5..000
--- a/arch/x86/kernel/cpu/sched.c
+++ /dev/null
@@ -1,55 +0,0 @@
-#include linux/sched.h
-#include linux/math64.h
-#include linux/percpu.h
-#include linux/irqflags.h
-
-#include asm/cpufeature.h
-#include asm/processor.h
-
-#ifdef CONFIG_SMP
-
-static DEFINE_PER_CPU(struct aperfmperf, old_perf_sched);
-
-static unsigned long scale_aperfmperf(void)
-{
-   struct aperfmperf val, *old = __get_cpu_var(old_perf_sched);
-   unsigned long ratio, flags;
-
-   local_irq_save(flags);
-   get_aperfmperf(val);
-   local_irq_restore(flags);
-
-   ratio = calc_aperfmperf_ratio(old, val);
-   *old = val;
-
-   return ratio;
-}
-
-unsigned long arch_scale_freq_power(struct sched_domain *sd, int cpu)
-{
-   /*
-* do aperf/mperf on the cpu level because it includes things
-* like turbo mode, which are relevant to full cores.
-*/
-   if (boot_cpu_has(X86_FEATURE_APERFMPERF))
-   return scale_aperfmperf();
-
-   /*
-* maybe have something cpufreq here
-*/
-
-   return default_scale_freq_power(sd, cpu);
-}
-
-unsigned long arch_scale_smt_power(struct sched_domain *sd, int cpu)
-{
-   /*
-* aperf/mperf already includes the smt gain
-*/
-   if (boot_cpu_has(X86_FEATURE_APERFMPERF))
-   return SCHED_LOAD_SCALE;
-
-   return default_scale_smt_power(sd, cpu);
-}
-
-#endif
-- 
1.7.9.5


___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


[PATCH v2 3/5] ARM: topology: Update cpu_power according to DT information

2012-06-19 Thread Vincent Guittot
Use cpu compatibility field and clock-frequency field of DT to
estimate the capacity of each core of the system and to update
the cpu_power field accordingly.
This patch enables to put more running tasks on big cores than
on LITTLE ones. But this patch doesn't ensure that long running
tasks will run on big cores and short ones on LITTLE cores.

Signed-off-by: Vincent Guittot vincent.guit...@linaro.org
---
 arch/arm/kernel/topology.c |  127 
 1 file changed, 127 insertions(+)

diff --git a/arch/arm/kernel/topology.c b/arch/arm/kernel/topology.c
index 92c2fb3..1922ea8 100644
--- a/arch/arm/kernel/topology.c
+++ b/arch/arm/kernel/topology.c
@@ -17,7 +17,9 @@
 #include linux/percpu.h
 #include linux/node.h
 #include linux/nodemask.h
+#include linux/of.h
 #include linux/sched.h
+#include linux/slab.h
 
 #include asm/cputype.h
 #include asm/topology.h
@@ -49,6 +51,126 @@ void set_power_scale(unsigned int cpu, unsigned long power)
per_cpu(cpu_scale, cpu) = power;
 }
 
+#ifdef CONFIG_OF
+struct cpu_efficiency {
+   const char *compatible;
+   unsigned long efficiency;
+};
+
+/*
+ * Table of relative efficiency of each processors
+ * The efficiency value must fit in 20bit. The final
+ * cpu_scale value must be in the range
+ * 0  cpu_scale  2*SCHED_POWER_SCALE.
+ * Processors that are not defined in the table,
+ * use the default SCHED_POWER_SCALE value for cpu_scale.
+ */
+struct cpu_efficiency table_efficiency[] = {
+   {arm,cortex-a15, 3891},
+   {arm,cortex-a7,  2048},
+   {NULL, },
+};
+
+struct cpu_capacity {
+   unsigned long hwid;
+   unsigned long capacity;
+};
+
+struct cpu_capacity *cpu_capacity;
+
+unsigned long middle_capacity = 1;
+
+static void __init parse_dt_topology(void)
+{
+   struct cpu_efficiency *cpu_eff;
+   struct device_node *cn = NULL;
+   unsigned long min_capacity = (unsigned long)(-1);
+   unsigned long max_capacity = 0;
+   unsigned long capacity = 0;
+   int alloc_size, cpu = 0;
+
+   alloc_size = nr_cpu_ids * sizeof(struct cpu_capacity);
+   cpu_capacity = (struct cpu_capacity *)kzalloc(alloc_size, GFP_NOWAIT);
+
+   while ((cn = of_find_node_by_type(cn, cpu))) {
+   const u32 *rate, *reg;
+   char *compatible;
+   int len;
+
+   if (cpu = num_possible_cpus())
+   break;
+
+   compatible = of_get_property(cn, compatible, len);
+
+   for (cpu_eff = table_efficiency; cpu_eff-compatible; cpu_eff++)
+   if (of_device_is_compatible(cn, cpu_eff-compatible))
+   break;
+
+   if (cpu_eff-compatible == NULL)
+   continue;
+
+   rate = of_get_property(cn, clock-frequency, len);
+   if (!rate || len != 4) {
+   pr_err(%s missing clock-frequency property\n,
+   cn-full_name);
+   continue;
+   }
+
+   reg = of_get_property(cn, reg, len);
+   if (!reg || len != 4) {
+   pr_err(%s missing reg property\n, cn-full_name);
+   continue;
+   }
+
+   capacity = ((be32_to_cpup(rate))  20)
+   * cpu_eff-efficiency;
+
+   /* Save min capacity of the system */
+   if (capacity  min_capacity)
+   min_capacity = capacity;
+
+   /* Save max capacity of the system */
+   if (capacity  max_capacity)
+   max_capacity = capacity;
+
+   cpu_capacity[cpu].capacity = capacity;
+   cpu_capacity[cpu++].hwid = be32_to_cpup(reg);
+   }
+
+   if (cpu  num_possible_cpus())
+   cpu_capacity[cpu].hwid = (unsigned long)(-1);
+
+   middle_capacity = (min_capacity + max_capacity)  11;
+}
+
+void update_cpu_power(unsigned int cpu, unsigned long hwid)
+{
+   unsigned int idx = 0;
+
+   /* look for the cpu's hwid in the cpu capacity table */
+   for (idx = 0; idx  num_possible_cpus(); idx++) {
+   if (cpu_capacity[idx].hwid == hwid)
+   break;
+
+   if (cpu_capacity[idx].hwid == -1)
+   return;
+   }
+
+   if (idx == num_possible_cpus())
+   return;
+
+   set_power_scale(cpu, cpu_capacity[idx].capacity / middle_capacity);
+
+   printk(KERN_INFO CPU%u: update cpu_power %lu\n,
+   cpu, arch_scale_freq_power(NULL, cpu));
+}
+
+#else
+static inline void parse_dt_topology(void) {}
+static inline void update_cpu_power(unsigned int cpuid, unsigned int mpidr) {}
+#endif
+
+
 /*
  * cpu topology management
  */
@@ -62,6 +184,7 @@ void set_power_scale(unsigned int cpu, unsigned long power)
  * These masks reflect the current use of the affinity levels.
  * The affinity level can be up to 16 bits 

Re: [Linaro-validation] Can we use mmcblk0p8?

2012-06-19 Thread Dave Pigott
On 18 Jun 2012, at 23:49, Paul Larson wrote:

 On Mon, Jun 18, 2012 at 5:03 PM, Michael Hudson-Doyle 
 michael.hud...@linaro.org wrote:
 Yes, we've discussed that very thing before but it was a lower priority 
 because we didn't need to extend the partition numbers that far.  Not sure 
 why we are needing to do it now,

This is because YonQin was adding an android userdata partition to the 
partitioning script. Works fine on panda et al, because they start off with two 
partitions. origen and imx53 have that magic additional first partition, so 
this pushes it over the limit.

Dave

 but it was always assumed that if we hit a situation that made it necessary, 
 this would be the most straightforward thing to do until we have the 
 necessary hardware/software in place to image a complete, recoverable system 
 onto the SD externally in a generic way.  Basically, we just replace the 
 reformatting of the boot partition with removal of a testboot directory, and 
 point at the directory for grabbing the new kernel and initrd.
 
 One thing I was thinking, is whether we could munge the boot script when we 
 install it to this partition and replace the paths in some automagic way.  
 This would solve the issue of making sure we always have the latest bootargs 
 and dtb files for booting, and get us one step closer to parity with a 
 manually imaged system.
 
 Thanks,
 Paul Larson
 ___
 linaro-validation mailing list
 linaro-validat...@lists.linaro.org
 http://lists.linaro.org/mailman/listinfo/linaro-validation

___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


Re: [Linaro-validation] Can we use mmcblk0p8?

2012-06-19 Thread YongQin Liu
On 19 June 2012 16:46, Dave Pigott dave.pig...@linaro.org wrote:

 On 18 Jun 2012, at 23:49, Paul Larson wrote:

 On Mon, Jun 18, 2012 at 5:03 PM, Michael Hudson-Doyle 
 michael.hud...@linaro.org wrote:
 Yes, we've discussed that very thing before but it was a lower priority
 because we didn't need to extend the partition numbers that far.  Not sure
 why we are needing to do it now,


 This is because YonQin was adding an android userdata partition to the
 partitioning script. Works fine on panda et al, because they start off with
 two partitions. origen and imx53 have that magic additional first
 partition, so this pushes it over the limit.

 Yeah, the latest CTS test needs both the data partition and sdcard
partition on android.

Thanks
Yongqin Liu



 but it was always assumed that if we hit a situation that made it
 necessary, this would be the most straightforward thing to do until we have
 the necessary hardware/software in place to image a complete, recoverable
 system onto the SD externally in a generic way.  Basically, we just replace
 the reformatting of the boot partition with removal of a testboot
 directory, and point at the directory for grabbing the new kernel and
 initrd.

 One thing I was thinking, is whether we could munge the boot script when
 we install it to this partition and replace the paths in some automagic
 way.  This would solve the issue of making sure we always have the latest
 bootargs and dtb files for booting, and get us one step closer to parity
 with a manually imaged system.

 Thanks,
 Paul Larson
 ___
 linaro-validation mailing list
 linaro-validat...@lists.linaro.org
 http://lists.linaro.org/mailman/listinfo/linaro-validation



 ___
 linaro-validation mailing list
 linaro-validat...@lists.linaro.org
 http://lists.linaro.org/mailman/listinfo/linaro-validation


___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


Re: [PATCH v2 5/5] sched: cpu_power: enable ARCH_POWER

2012-06-19 Thread Yong Zhang
On Tue, Jun 19, 2012 at 10:28:56AM +0200, Vincent Guittot wrote:
 Heteregeneous ARM platform uses arch_scale_freq_power function
 to reflect the relative capacity of each core
 
 Signed-off-by: Vincent Guittot vincent.guit...@linaro.org
 ---
  kernel/sched/features.h |2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/kernel/sched/features.h b/kernel/sched/features.h
 index de00a48..d98ae90 100644
 --- a/kernel/sched/features.h
 +++ b/kernel/sched/features.h
 @@ -42,7 +42,7 @@ SCHED_FEAT(CACHE_HOT_BUDDY, true)
  /*
   * Use arch dependent cpu power functions
   */
 -SCHED_FEAT(ARCH_POWER, false)
 +SCHED_FEAT(ARCH_POWER, true)

Hmmm...seems we can remove this knob completely.

__weak arch_scale_smt_power() is doing all the trick.

Thanks,
Yong

___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


Re: android-build.linaro.org planned downtime

2012-06-19 Thread Deepti Kalakeri
Hello All,

https://android-build.linaro.org/jenkins/ is back again after maintenance.
If you notice any problem on a-b* please ping the infrastructure
maintenance team (Milo and Deepti) for any problems.

On Mon, Jun 18, 2012 at 1:47 PM, Deepti Kalakeri deepti.kalak...@linaro.org
 wrote:

 Hi All,

 Infrastructure team fixed a jenkins issue reported in the bug
 https://bugs.launchpad.net/linaro-ci/+bug/959945.
 The patched jenkins including the fix has been tested for more than a week
 on ci.linaro.org successfully.
 In order to deploy the fix we need to take
 https://android-build.linaro.org/jenkins/ offline for about 15 minutes
 on June 19th, 2012 at 11:00 UTC (
 http://www.worldtimeserver.com/current_time_in_UTC.aspx).

 If the downtime will cause you significant problems, please get in touch
 with us and we will arrange a better time.
 If we do not get response we will assume that there is no problem and go
 ahead with the deployment.

 --
 Thanks and Regards,
 Deepti
 Infrastructure Team Member, Linaro Platform Teams
 Linaro.org | Open source software for ARM SoCs
 Follow Linaro: http://www.facebook.com/pages/Linaro
 http://twitter.com/#!/linaroorg - http://www.linaro.org/linaro-blog





-- 
Thanks and Regards,
Deepti
Infrastructure Team Member, Linaro Platform Teams
Linaro.org | Open source software for ARM SoCs
Follow Linaro: http://www.facebook.com/pages/Linaro
http://twitter.com/#!/linaroorg - http://www.linaro.org/linaro-blog
___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


Thanks Ken, Android on QEMU writeup

2012-06-19 Thread Zach Pfeffer
Thought this deserved a wide audience.

Ken worked out how to run Android on QEMU and wrote up a wiki for it:

https://wiki.linaro.org/KenWerner/Sandbox/AndroidQEMU

Thanks Ken!

It may be worth creating a little script that encapsulates everything
so that people can just run it and go on their local box.

-- 
Zach Pfeffer
Android Platform Team Lead, Linaro Platform Teams
Linaro.org | Open source software for ARM SoCs
Follow Linaro: http://www.facebook.com/pages/Linaro
http://twitter.com/#!/linaroorg - http://www.linaro.org/linaro-blog

___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


[PATCH] [CPUFREQ] VCPUfreq: Virtual CPU frequency driver.

2012-06-19 Thread Pantelis Antoniou
Many current interesting systems have no ability to simulate the upcoming
bigLITTLE machines, since their cores have to be clocked at the same speeds.

Using this driver it is possible to simulate a bigLITTLE system by means
of a standard (virtual) cpufreq driver.

By using a timer per core  irq affinity it is possible to do something
like this:

$ cpucycle cpu0
90403235
$ cpucycle cpu1
89810456
$ cd /sys/devices/system/cpu/cpu0/cpufreq
$ cat scaling_available_frequencies
233325 466651 699977
$ echo 466651  scaling_setspeed
$ cpucycle cpu0
58936083

Note that the ratios are about the same so it is somewhat accurate.
451  /  699977 =~ 0.666
58936083 / 90403235 =~ 0.652

The available tunables available as module parameters are:

freq:
Normal maximum CPU frequency in kHz
When 0, then the platform glue layer should probe for it.
default 0

hogtime:
Amount of time in usecs that the timer interrupt handler will hog
the CPU. Note this is time spend spinning in an IRQ handler, so
it should be as low as possible. A higher value result in more
accurate simulation.
Default 100

latency:
Simulated latency in usecs of cpu freq change.
Default 500

splits:
Number of splits in the frequency value. For example when freq is
100 and splits is 2 then two frequency OPPs will be generated,
one in 50 and one in 100.

Only one glue layer for omap2plus is provided, but it should be trivial to
add more for other platforms.
---
 drivers/cpufreq/Kconfig |   26 
 drivers/cpufreq/Makefile|5 +
 drivers/cpufreq/vcpufreq-omap.c |  251 +++
 drivers/cpufreq/vcpufreq.c  |  216 +
 drivers/cpufreq/vcpufreq.h  |   25 
 5 files changed, 523 insertions(+), 0 deletions(-)
 create mode 100644 drivers/cpufreq/vcpufreq-omap.c
 create mode 100644 drivers/cpufreq/vcpufreq.c
 create mode 100644 drivers/cpufreq/vcpufreq.h

diff --git a/drivers/cpufreq/Kconfig b/drivers/cpufreq/Kconfig
index e24a2a1..1fef0ad 100644
--- a/drivers/cpufreq/Kconfig
+++ b/drivers/cpufreq/Kconfig
@@ -194,5 +194,31 @@ depends on PPC32 || PPC64
 source drivers/cpufreq/Kconfig.powerpc
 endmenu
 
+config VCPUFREQ
+   bool Virtual CPU freq driver
+   depends on CPU_FREQ
+   select CPU_FREQ_TABLE
+   help
+ This driver implements a cycle-soaker cpufreq driver.
+
+ To compile this driver as a module, choose M here: the
+ module will be called vcpufreq.
+
+ If in doubt, say N.
+
+if VCPUFREQ
+
+choice
+   prompt VCPUFREQ Platform glue Layer
+
+config VCPUFREQ_OMAP2PLUS
+   bool OMAP VCPUFREQ driver
+   depends on ARCH_OMAP2PLUS
+
+endchoice
+
+endif
+
 endif
+
 endmenu
diff --git a/drivers/cpufreq/Makefile b/drivers/cpufreq/Makefile
index 9531fc2..97d3011 100644
--- a/drivers/cpufreq/Makefile
+++ b/drivers/cpufreq/Makefile
@@ -52,3 +52,8 @@ obj-$(CONFIG_ARM_OMAP2PLUS_CPUFREQ) += omap-cpufreq.o
 
##
 # PowerPC platform drivers
 obj-$(CONFIG_CPU_FREQ_MAPLE)   += maple-cpufreq.o
+
+##
+# Virtual driver
+obj-$(CONFIG_VCPUFREQ) += vcpufreq.o
+obj-$(CONFIG_VCPUFREQ_OMAP2PLUS)   += vcpufreq-omap.o
diff --git a/drivers/cpufreq/vcpufreq-omap.c b/drivers/cpufreq/vcpufreq-omap.c
new file mode 100644
index 000..fd789c4
--- /dev/null
+++ b/drivers/cpufreq/vcpufreq-omap.c
@@ -0,0 +1,251 @@
+/*
+ * Copyright 2012 Pantelis Antoniou pa...@antoniou-consulting.com
+ *
+ * Virtual CPUFreq glue driver for OMAP2PLUS
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#define pr_fmt(fmt) cpufreq:  fmt
+
+#include linux/kernel.h
+#include linux/types.h
+#include linux/init.h
+#include linux/cpufreq.h
+#include linux/clk.h
+#include linux/err.h
+#include linux/module.h
+#include linux/slab.h
+#include linux/interrupt.h
+#include linux/irq.h
+#include linux/math64.h
+#include linux/delay.h
+
+#include asm/smp_plat.h
+#include asm/cpu.h
+#include plat/cpu.h
+#include plat/dmtimer.h  
+
+#include vcpufreq.h
+
+struct omap_timer_info {
+   unsigned int cpu;
+   struct omap_dm_timer *dm_timer;
+   unsigned int irq;
+   uint64_t counter;
+   char irqname[16];   /* vcpufreq%d */
+   unsigned int hwtimer_rate;
+   unsigned int hog_delta;
+};
+
+static DEFINE_PER_CPU(struct omap_timer_info, omap_timer);
+
+static irqreturn_t dm_timer_handler(int irq, void *dev_id)
+{
+   struct omap_timer_info *oti = dev_id;
+   unsigned int status;
+   unsigned int start;

Android Platform Team 2012/6/20 Agenda Posted

2012-06-19 Thread Zach Pfeffer
See:

https://wiki.linaro.org/Platform/Android/Meetings/2012-06-20

Please feel free to add to it.

Android team,

Please list your status.

See everyone tomorrow on #linaro-meeting at 14:00 UTC (8 AM Texas time).

Its like a big hug. :)

-- 
Zach Pfeffer
Android Platform Team Lead, Linaro Platform Teams
Linaro.org | Open source software for ARM SoCs
Follow Linaro: http://www.facebook.com/pages/Linaro
http://twitter.com/#!/linaroorg - http://www.linaro.org/linaro-blog

___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


Re: [PATCH] [CPUFREQ] VCPUfreq: Virtual CPU frequency driver.

2012-06-19 Thread Amit Kucheria
Panto,

This looks interesting. cc'ing Rob and Charles who were interested in
this at Connect.

/Amit

On Thu, Jun 21, 2012 at 3:15 AM, Pantelis Antoniou
pa...@antoniou-consulting.com wrote:
 Many current interesting systems have no ability to simulate the upcoming
 bigLITTLE machines, since their cores have to be clocked at the same speeds.

 Using this driver it is possible to simulate a bigLITTLE system by means
 of a standard (virtual) cpufreq driver.

 By using a timer per core  irq affinity it is possible to do something
 like this:

        $ cpucycle cpu0
        90403235
        $ cpucycle cpu1
        89810456
        $ cd /sys/devices/system/cpu/cpu0/cpufreq
        $ cat scaling_available_frequencies
        233325 466651 699977
        $ echo 466651  scaling_setspeed
        $ cpucycle cpu0
        58936083

 Note that the ratios are about the same so it is somewhat accurate.
        451  /  699977 =~ 0.666
        58936083 / 90403235 =~ 0.652

 The available tunables available as module parameters are:

 freq:
        Normal maximum CPU frequency in kHz
        When 0, then the platform glue layer should probe for it.
        default 0

 hogtime:
        Amount of time in usecs that the timer interrupt handler will hog
        the CPU. Note this is time spend spinning in an IRQ handler, so
        it should be as low as possible. A higher value result in more
        accurate simulation.
        Default 100

 latency:
        Simulated latency in usecs of cpu freq change.
        Default 500

 splits:
        Number of splits in the frequency value. For example when freq is
        100 and splits is 2 then two frequency OPPs will be generated,
        one in 50 and one in 100.

 Only one glue layer for omap2plus is provided, but it should be trivial to
 add more for other platforms.
 ---
  drivers/cpufreq/Kconfig         |   26 
  drivers/cpufreq/Makefile        |    5 +
  drivers/cpufreq/vcpufreq-omap.c |  251 
 +++
  drivers/cpufreq/vcpufreq.c      |  216 +
  drivers/cpufreq/vcpufreq.h      |   25 
  5 files changed, 523 insertions(+), 0 deletions(-)
  create mode 100644 drivers/cpufreq/vcpufreq-omap.c
  create mode 100644 drivers/cpufreq/vcpufreq.c
  create mode 100644 drivers/cpufreq/vcpufreq.h

 diff --git a/drivers/cpufreq/Kconfig b/drivers/cpufreq/Kconfig
 index e24a2a1..1fef0ad 100644
 --- a/drivers/cpufreq/Kconfig
 +++ b/drivers/cpufreq/Kconfig
 @@ -194,5 +194,31 @@ depends on PPC32 || PPC64
  source drivers/cpufreq/Kconfig.powerpc
  endmenu

 +config VCPUFREQ
 +       bool Virtual CPU freq driver
 +       depends on CPU_FREQ
 +       select CPU_FREQ_TABLE
 +       help
 +         This driver implements a cycle-soaker cpufreq driver.
 +
 +         To compile this driver as a module, choose M here: the
 +         module will be called vcpufreq.
 +
 +         If in doubt, say N.
 +
 +if VCPUFREQ
 +
 +choice
 +       prompt VCPUFREQ Platform glue Layer
 +
 +config VCPUFREQ_OMAP2PLUS
 +       bool OMAP VCPUFREQ driver
 +       depends on ARCH_OMAP2PLUS
 +
 +endchoice
 +
 +endif
 +
  endif
 +
  endmenu
 diff --git a/drivers/cpufreq/Makefile b/drivers/cpufreq/Makefile
 index 9531fc2..97d3011 100644
 --- a/drivers/cpufreq/Makefile
 +++ b/drivers/cpufreq/Makefile
 @@ -52,3 +52,8 @@ obj-$(CONFIG_ARM_OMAP2PLUS_CPUFREQ)     += omap-cpufreq.o
  ##
  # PowerPC platform drivers
  obj-$(CONFIG_CPU_FREQ_MAPLE)           += maple-cpufreq.o
 +
 +##
 +# Virtual driver
 +obj-$(CONFIG_VCPUFREQ)                 += vcpufreq.o
 +obj-$(CONFIG_VCPUFREQ_OMAP2PLUS)       += vcpufreq-omap.o
 diff --git a/drivers/cpufreq/vcpufreq-omap.c b/drivers/cpufreq/vcpufreq-omap.c
 new file mode 100644
 index 000..fd789c4
 --- /dev/null
 +++ b/drivers/cpufreq/vcpufreq-omap.c
 @@ -0,0 +1,251 @@
 +/*
 + * Copyright 2012 Pantelis Antoniou pa...@antoniou-consulting.com
 + *
 + * Virtual CPUFreq glue driver for OMAP2PLUS
 + *
 + * This program is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License version 2 as
 + * published by the Free Software Foundation.
 + */
 +
 +#define pr_fmt(fmt) cpufreq:  fmt
 +
 +#include linux/kernel.h
 +#include linux/types.h
 +#include linux/init.h
 +#include linux/cpufreq.h
 +#include linux/clk.h
 +#include linux/err.h
 +#include linux/module.h
 +#include linux/slab.h
 +#include linux/interrupt.h
 +#include linux/irq.h
 +#include linux/math64.h
 +#include linux/delay.h
 +
 +#include asm/smp_plat.h
 +#include asm/cpu.h
 +#include plat/cpu.h
 +#include plat/dmtimer.h
 +
 +#include vcpufreq.h
 +
 +struct omap_timer_info {
 +       unsigned int cpu;
 +       struct omap_dm_timer *dm_timer;
 +       unsigned int irq;
 +       uint64_t counter;
 +       char irqname[16];       /* vcpufreq%d */