Re: [PATCH] CPUFREQ : calculate delay after dbs_check_cpu

2011-02-15 Thread Vincent Guittot
Hi,

The ondemand delay value is calculated before calling dbs_check_cpu
which can lead to a delay value of sampling_rate*sampling_down_factor
but a frequency set to the lowest value. The main result is a slow
responsiveness during this period. This patch moves the calculation of
delay after the call of dbs_check_cpu. I have seen this problem when
testing cpufreq-bench on my Arm platform.

Vincent

On 7 February 2011 17:14, Vincent Guittot vincent.guit...@linaro.org wrote:
 calculate ondemand delay after dbs_check_cpu call because it can
 modify rate_mult value

 use freq_lo_jiffies value for the sub sample period of powersave_bias mode

 Signed-off-by: Vincent Guittot vincent.guit...@linaro.org
 ---
  drivers/cpufreq/cpufreq_ondemand.c |   20 +---
  1 files changed, 13 insertions(+), 7 deletions(-)

 diff --git a/drivers/cpufreq/cpufreq_ondemand.c
 b/drivers/cpufreq/cpufreq_ondemand.c
 index 58aa85e..44c2dba 100644
 --- a/drivers/cpufreq/cpufreq_ondemand.c
 +++ b/drivers/cpufreq/cpufreq_ondemand.c
 @@ -641,13 +641,7 @@ static void do_dbs_timer(struct work_struct *work)
                container_of(work, struct cpu_dbs_info_s, work.work);
        unsigned int cpu = dbs_info-cpu;
        int sample_type = dbs_info-sample_type;
 -
 -       /* We want all CPUs to do sampling nearly on same jiffy */
 -       int delay = usecs_to_jiffies(dbs_tuners_ins.sampling_rate
 -               * dbs_info-rate_mult);
 -
 -       if (num_online_cpus()  1)
 -               delay -= jiffies % delay;
 +       int delay;

        mutex_lock(dbs_info-timer_mutex);

 @@ -660,10 +654,22 @@ static void do_dbs_timer(struct work_struct *work)
                        /* Setup timer for SUB_SAMPLE */
                        dbs_info-sample_type = DBS_SUB_SAMPLE;
                        delay = dbs_info-freq_hi_jiffies;
 +               } else {
 +                       /* We want all CPUs to do sampling nearly on
 +                        * same jiffy
 +                        */
 +                       delay = usecs_to_jiffies(dbs_tuners_ins.sampling_rate
 +                               * dbs_info-rate_mult);
 +
 +                       if (num_online_cpus()  1)
 +                               delay -= jiffies % delay;
 +
                }
 +
        } else {
                __cpufreq_driver_target(dbs_info-cur_policy,
                        dbs_info-freq_lo, CPUFREQ_RELATION_H);
 +               delay = dbs_info-freq_lo_jiffies;
        }
        schedule_delayed_work_on(cpu, dbs_info-work, delay);
        mutex_unlock(dbs_info-timer_mutex);
 --
 1.7.1


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


Re: LAVA scheduler spec

2011-02-15 Thread Mirsad Vojnikovic
I have now updated the spec with your comments, thanks!

https://wiki.linaro.org/Platform/Validation/Specs/ValidationScheduler

On 11 February 2011 06:52, Paul Larson paul.lar...@linaro.org wrote:


 Ah, you are correct, that's excellent - a user story in the scheduler
 should then look something like this: Dave wants to rerun a previous test
 job from test job history. Comments?

 This would basically be a resubmit job feature, that would replicate the
 same parameters as the original job.

 As for some of the other things mentioned here, yes it has always been our
 intent that you should be able to request a job to run on a specific
 machine.  This is, in fact, the simplest thing to do.  As a step up from
 that, we should provide a way to say Run this on any single panda board,
 and the scheduler should be able to pick one from the list that has the
 least (hopefully 0) jobs queued.

 Thanks,
 Paul Larson

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


Re: Please review blueprint linaro-n-validation-job-dispatcher

2011-02-15 Thread Spring Zhang
On 28 January 2011 08:12, Paul Larson paul.lar...@linaro.org wrote:

 Other questions...


 What does it do after running the test?  How, and where does it leave the
 results?  What get's added to the results (e.g. serial log) and how does
 that happen?  What is the mechanism for then taking that bundle and pushing
 to the server?  What happens if there were no results from the client, what
 do we capture in that case?


About the test result, I draft a test result bundle template, for a job test
result bundle, it is stored in a text file.

Dispatcher server part will get the return value of the test case and the
serial port log, then create test result together with some info from job
message, client dispatcher test logs.

I think server dispatcher can fetch the client test logs initiatively after
client dispatcher ends.

If there is no result from the client, after timeout,
1. server dispatcher send some Ctrl+C to client dispatcher to end it.
2. then restart the client dispatcher.
3. try to get the client dispatcher remained test logs.
4. mark the test case to TIMEOUT and create the test result.
PS. If step 1 can not end the client dispatcher, it may need a reboot for
server dispatcher have lost the control of serial line.

Test result bundle composed of every test case result, for each test case
result, it includes:

   -

   LOG
   casename:Test case name
   testsuite:Test suite name
   testcmd:Test case Command
   timeout:Timeout
   retvalue:Return value
   version:kernel version(by cat /proc/version)
   seriallog:

   serial port log
   ENDLOG


e.g.

   -


   LOG
   casename:PERF001
   testsuite:abrek
   testcmd:x11perf
   timeout:6
   retvalue:0
   version:2.6.35-
   seriallog:
   xxx
   xxx
   xxx
   ENDLOG


And a test result bundle:


LOG
casename:PERF001
testsuite:abrek
testcmd:x11perf
timeout:6
retvalue:0
version:2.6.35-
seriallog:
xxx
xxx
xxx
ENDLOG

LOG
casename:USB002
testsuite:abrek
testcmd:usb_app

timeout:6
retvalue:0
version:2.6.35-
seriallog:
yyy
yyy
yyy
ENDLOG


What do you think?

The flow to get test result:
1. Server dispatcher sends commands to client dispatcher via serial line to
invoke client dispatcher, capture all the serial log and wait for the client
dispatcher ends.
2. Client dispatcher executes the command, save logs to some place on the
board.
3. If client dispatcher ends normally(return to the root@testimage:~$
string), server dispatcher uses echo $? to get the return value. Or
terminate the client dispatcher after timeout.
4. Server dispatcher gets client dispatcher test logs.
5. Server dispatcher uses the collected information to create test result.


-- 
Best wishes,
Spring Zhang
___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


[RFC] ARM: dma-mapping: outer cache is invalidated twice

2011-02-15 Thread Per Forlin
Hi,

My question concerns this patch

commit 2ffe2da3e71652d4f4cae19539b5c78c2a239136
Author: Russell King rmk+ker...@arm.linux.org.uk
Date:   Sat Oct 31 16:52:16 2009 +

ARMv6 and ARMv7 CPUs can perform speculative prefetching, which makes
DMA cache coherency handling slightly more interesting.  Rather than
being able to rely upon the CPU not accessing the DMA buffer until DMA
has completed, we now must expect that the cache could be loaded with
possibly stale data from the DMA buffer.

Where DMA involves data being transferred to the device, we clean the
cache before handing it over for DMA, otherwise we invalidate the buffer
to get rid of potential writebacks.  On DMA Completion, if data was
transferred from the device, we invalidate the buffer to get rid of
any stale speculative prefetches.

Signed-off-by: Russell King rmk+ker...@arm.linux.org.uk
Tested-By: Santosh Shilimkar santosh.shilim...@ti.com
-

file: arch/arm/mm/dma-mapping.c
 void ___dma_page_cpu_to_dev(struct page *page, unsigned long off,
   size_t size, enum dma_data_direction dir)
 {
 ...
   if (dir == DMA_FROM_DEVICE) {
   outer_inv_range(paddr, paddr + size);
 ...
 }
 EXPORT_SYMBOL(___dma_page_cpu_to_dev);

 void ___dma_page_dev_to_cpu(struct page *page, unsigned long off,
   size_t size, enum dma_data_direction dir)
 {
 ...
   if (dir != DMA_TO_DEVICE)
   outer_inv_range(paddr, paddr + size);
 ...
 }

outer_inv_range () is called twice for DMA_FROM_DEVICE.
The first time to get rid of potential writebacks and the second
time to get rid of any stale speculative prefetches
outer_inv_range() is a rather expensive operation. In the first case
isn't it enough to just call cache_sync()?

What about:
void ___dma_page_cpu_to_dev(struct page *page, unsigned long off,
size_t size, enum dma_data_direction dir)
{
...
if (dir == DMA_FROM_DEVICE) {
-   outer_inv_range(paddr, paddr + size);
+   outer_sync();
...
}

/Per

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


Re: Notes Actions: Linaro Graphics Working Group - Feb 09, 2011

2011-02-15 Thread Clark, Rob
On Fri, Feb 11, 2011 at 7:47 AM, Alexandros Frantzis
alexandros.frant...@linaro.org wrote:

  * First version of Unified Memory Management position:
   
 https://wiki.linaro.org/WorkingGroups/Middleware/Graphics/Projects/UnifiedMemoryManagement

btw, the access control aspect of this sort of reminds me of the DRM
driver infrastructure, and authentication between direct rendering
client and x-server (or whoever the DRM master is)..

I wonder if there is, or should be, a connection..

BR,
-R

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


Re: [RFC] ARM: dma-mapping: outer cache is invalidated twice

2011-02-15 Thread Russell King - ARM Linux
On Tue, Feb 15, 2011 at 02:14:55PM +0100, Per Forlin wrote:
 outer_inv_range () is called twice for DMA_FROM_DEVICE.
 The first time to get rid of potential writebacks and the second
 time to get rid of any stale speculative prefetches

Correct.

 outer_inv_range() is a rather expensive operation. In the first case
 isn't it enough to just call cache_sync()?

No.  If the CPU speculatively fetches data from the DMA buffer after
it's been mapped for DMA, it will bring data into the L2 cache.  This
data may or may not be up to date with the DMA buffer contents once
DMA has completed.

As there is no way to know, we have to invalidate the L2 cache (and the
L1 cache) after the DMA has completed to avoid any possibility of data
corruption.

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


Re: [RFC] ARM: dma-mapping: outer cache is invalidated twice

2011-02-15 Thread Per Forlin
On 15 February 2011 14:41, Russell King - ARM Linux
li...@arm.linux.org.uk wrote:
 On Tue, Feb 15, 2011 at 01:32:32PM +, Russell King - ARM Linux wrote:
 On Tue, Feb 15, 2011 at 02:14:55PM +0100, Per Forlin wrote:
  outer_inv_range () is called twice for DMA_FROM_DEVICE.
  The first time to get rid of potential writebacks and the second
  time to get rid of any stale speculative prefetches

 Correct.

  outer_inv_range() is a rather expensive operation. In the first case
  isn't it enough to just call cache_sync()?

 No.  If the CPU speculatively fetches data from the DMA buffer after
 it's been mapped for DMA, it will bring data into the L2 cache.  This
 data may or may not be up to date with the DMA buffer contents once
 DMA has completed.

 As there is no way to know, we have to invalidate the L2 cache (and the
 L1 cache) after the DMA has completed to avoid any possibility of data
 corruption.

 I should add: the solution to all of this is to have cache coherent DMA.

 As the CPUs become more complex and start playing tricks like speculative
 prefetching, we have seen cache maintainence for DMA becomes more expensive.
 The only way to reduce the cost of that is to have cache coherency for DMA.

 There is no way to safely avoid the double-invalidate for DMA_FROM_DEVICE.

I don't fully understand this yet. I think you are right but I need a
little help
to get there myself.
I agree, the cache (L1 and L2) must be invalidated after the DMA has completed.
Before starting the DMA the write buffers must be drained (cache_sync).

Why invalidate the cache before starting the DMA?

The user shouldn't care about the cache until the DMA has finished and
the cache is
invalidated.
I don't unsderstand how the DMA transfered data can be corrupt from a
CPU perspective
if the cache is invalidated after DMA transfer is done, but _not_
before DMA is started?

Thanks for your fast response
/Per

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


Re: [linaro-android][PATCH] device/linaro/u8500href: Install 0xbench native applications

2011-02-15 Thread Patrik Ryd
Hi,

Looks good to me. I will push it to git.linaro.org.

 /Patrik


On 15 February 2011 05:30, Jeremy Chang jer...@0xlab.org wrote:

 From 78b170843eadf0e72d6b0d4cb0fc5f3be5edcae8 Mon Sep 17 00:00:00 2001
 From: Jeremy Chang jer...@0xlab.org
 Date: Tue, 15 Feb 2011 12:17:16 +0800
 Subject: [PATCH] Install 0xbench native applications


 Signed-off-by: Jeremy Chang jer...@0xlab.org
 ---
  ZeroXBenchmark.mk |   96
 +
  u8500href.mk  |5 ++-
  2 files changed, 100 insertions(+), 1 deletions(-)
  create mode 100644 ZeroXBenchmark.mk

 diff --git a/ZeroXBenchmark.mk b/ZeroXBenchmark.mk
 new file mode 100644
 index 000..e78047d
 --- /dev/null
 +++ b/ZeroXBenchmark.mk
 @@ -0,0 +1,96 @@
 +UNIXBENCH_BENCH_APPS := \
 +bench_ubench_hanoi  \
 +bench_ubench_syscall\
 +bench_ubench_context1   \
 +bench_ubench_pipe   \
 +bench_ubench_spawn  \
 +bench_ubench_execl  \
 +bench_ubench_looper \
 +bench_ubench_fstime \
 +bench_ubench_arithoh\
 +bench_ubench_register   \
 +bench_ubench_short  \
 +bench_ubench_int\
 +bench_ubench_long   \
 +bench_ubench_float  \
 +bench_ubench_double \
 +bench_ubench_dhry2  \
 +bench_ubench_dhry2reg   \
 +bench_ubench_whetstone-double
 +
 +LIBMICRO_BENCH_APPS :=  \
 +bench_getpid\
 +bench_bind  \
 +bench_cascade_mutex \
 +bench_cascade_fcntl \
 +bench_cascade_flock \
 +bench_chdir \
 +bench_close \
 +bench_close_tcp \
 +bench_connection\
 +bench_dup   \
 +bench_exec  \
 +bench_exit  \
 +bench_exp   \
 +bench_fcntl \
 +bench_fcntl_ndelay  \
 +bench_file_lock \
 +bench_fork  \
 +bench_getenv\
 +bench_gettimeofday  \
 +bench_getpeername   \
 +bench_getrusage \
 +bench_getsockname   \
 +bench_isatty\
 +bench_listen\
 +bench_localtime_r   \
 +bench_log   \
 +bench_longjmp   \
 +bench_lrand48   \
 +bench_lseek \
 +bench_malloc\
 +bench_memcpy\
 +bench_memmove   \
 +bench_memrand   \
 +bench_memset\
 +bench_mktime\
 +bench_mprotect  \
 +bench_mmap  \
 +bench_msync \
 +bench_munmap\
 +bench_mutex \
 +bench_nop   \
 +bench_open  \
 +bench_pipe  \
 +bench_poll  \
 +bench_pread \
 +bench_pthread_create\
 +bench_pwrite\
 +bench_read  \
 +bench_realpath  \
 +bench_recurse   \
 +bench_select\
 +bench_setsockopt\
 +bench_sigaction \
 +bench_siglongjmp\
 +bench_signal\
 +bench_sigprocmask   \
 +bench_socket\
 +bench_socketpair\
 +bench_stat  \
 +bench_strcasecmp\
 +bench_strchr\
 +bench_strcmp\
 +bench_strcpy\
 +bench_strftime  \
 +bench_strlen\
 +bench_strtol\
 +bench_system\
 +bench_time  \
 +bench_times \
 +bench_write \
 +bench_writev
 +
 +ZEROXBENCHMARK_NATIVE_APPS :=   \
 +$(UNIXBENCH_BENCH_APPS) \
 +$(LIBMICRO_BENCH_APPS)
 diff --git a/u8500href.mk b/u8500href.mk
 index 3efd467..37a9eab 100644
 --- a/u8500href.mk
 +++ b/u8500href.mk
 @@ -1,5 +1,7 @@
  # The beagleboard product that is specialized for beagleboard.

 +include $(LOCAL_PATH)/ZeroXBenchmark.mk
 +
  PRODUCT_PACKAGES := \
 ZeroXBenchmark \
 libmicro \
 @@ -22,7 +24,8 @@ PRODUCT_PACKAGES := \
 Sync \
 Updater \
 CalendarProvider \
 -SyncProvider
 +SyncProvider \
 +$(ZEROXBENCHMARK_NATIVE_APPS)

  $(call inherit-product, $(SRC_TARGET_DIR)/product/core.mk)

 --
 1.7.1


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


Re: [linaro-android][PATCH] device/linaro/pandaboard: Install 0xbench native applications

2011-02-15 Thread Patrik Ryd
Hi,

Looks good to me. I will push it to git.linaro.org.

 /Patrik

On 15 February 2011 05:28, Jeremy Chang jer...@0xlab.org wrote:

 From 8d63ba7ae90b3629dd60eeab12fdc28a8dcc58e7 Mon Sep 17 00:00:00 2001
 From: Jeremy Chang jer...@0xlab.org
 Date: Tue, 15 Feb 2011 12:10:02 +0800
 Subject: [PATCH] Install 0xbench native applications


 Signed-off-by: Jeremy Chang jer...@0xlab.org
 ---
  ZeroXBenchmark.mk |   96
 +
  pandaboard.mk |5 ++-
  2 files changed, 100 insertions(+), 1 deletions(-)
  create mode 100644 ZeroXBenchmark.mk

 diff --git a/ZeroXBenchmark.mk b/ZeroXBenchmark.mk
 new file mode 100644
 index 000..e78047d
 --- /dev/null
 +++ b/ZeroXBenchmark.mk
 @@ -0,0 +1,96 @@
 +UNIXBENCH_BENCH_APPS := \
 +bench_ubench_hanoi  \
 +bench_ubench_syscall\
 +bench_ubench_context1   \
 +bench_ubench_pipe   \
 +bench_ubench_spawn  \
 +bench_ubench_execl  \
 +bench_ubench_looper \
 +bench_ubench_fstime \
 +bench_ubench_arithoh\
 +bench_ubench_register   \
 +bench_ubench_short  \
 +bench_ubench_int\
 +bench_ubench_long   \
 +bench_ubench_float  \
 +bench_ubench_double \
 +bench_ubench_dhry2  \
 +bench_ubench_dhry2reg   \
 +bench_ubench_whetstone-double
 +
 +LIBMICRO_BENCH_APPS :=  \
 +bench_getpid\
 +bench_bind  \
 +bench_cascade_mutex \
 +bench_cascade_fcntl \
 +bench_cascade_flock \
 +bench_chdir \
 +bench_close \
 +bench_close_tcp \
 +bench_connection\
 +bench_dup   \
 +bench_exec  \
 +bench_exit  \
 +bench_exp   \
 +bench_fcntl \
 +bench_fcntl_ndelay  \
 +bench_file_lock \
 +bench_fork  \
 +bench_getenv\
 +bench_gettimeofday  \
 +bench_getpeername   \
 +bench_getrusage \
 +bench_getsockname   \
 +bench_isatty\
 +bench_listen\
 +bench_localtime_r   \
 +bench_log   \
 +bench_longjmp   \
 +bench_lrand48   \
 +bench_lseek \
 +bench_malloc\
 +bench_memcpy\
 +bench_memmove   \
 +bench_memrand   \
 +bench_memset\
 +bench_mktime\
 +bench_mprotect  \
 +bench_mmap  \
 +bench_msync \
 +bench_munmap\
 +bench_mutex \
 +bench_nop   \
 +bench_open  \
 +bench_pipe  \
 +bench_poll  \
 +bench_pread \
 +bench_pthread_create\
 +bench_pwrite\
 +bench_read  \
 +bench_realpath  \
 +bench_recurse   \
 +bench_select\
 +bench_setsockopt\
 +bench_sigaction \
 +bench_siglongjmp\
 +bench_signal\
 +bench_sigprocmask   \
 +bench_socket\
 +bench_socketpair\
 +bench_stat  \
 +bench_strcasecmp\
 +bench_strchr\
 +bench_strcmp\
 +bench_strcpy\
 +bench_strftime  \
 +bench_strlen\
 +bench_strtol\
 +bench_system\
 +bench_time  \
 +bench_times \
 +bench_write \
 +bench_writev
 +
 +ZEROXBENCHMARK_NATIVE_APPS :=   \
 +$(UNIXBENCH_BENCH_APPS) \
 +$(LIBMICRO_BENCH_APPS)
 diff --git a/pandaboard.mk b/pandaboard.mk
 index 2aca6a5..b7aab1c 100644
 --- a/pandaboard.mk
 +++ b/pandaboard.mk
 @@ -1,5 +1,7 @@
  # The pandaboard product that is specialized for pandaboard.

 +include $(LOCAL_PATH)/ZeroXBenchmark.mk
 +
  PRODUCT_PACKAGES := \
 ZeroXBenchmark \
 libmicro \
 @@ -22,7 +24,8 @@ PRODUCT_PACKAGES := \
 Sync \
 Updater \
 CalendarProvider \
 -SyncProvider
 +SyncProvider \
 +$(ZEROXBENCHMARK_NATIVE_APPS)

  $(call inherit-product, $(SRC_TARGET_DIR)/product/core.mk)

 --
 1.7.1


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


Re: [linaro-android][PATCH] Install 0xbench native applications

2011-02-15 Thread Patrik Ryd
Hi,

Looks good to me. I will push it to git.linaro.org.

 /Patrik

On 14 February 2011 11:08, Jeremy Chang jer...@0xlab.org wrote:

 From 9a8781bb34fe1ff3463a1dc48f3b33b43e2f Mon Sep 17 00:00:00 2001
 From: Jeremy Chang jer...@0xlab.org
 Date: Sun, 13 Feb 2011 20:49:26 +0800
 Subject: [PATCH] Install 0xbench native applications


 Signed-off-by: Jeremy Chang jer...@0xlab.org
 ---
  ZeroXBenchmark.mk |   96
 +
  beagleboard.mk|6 +++-
  2 files changed, 101 insertions(+), 1 deletions(-)
  create mode 100644 ZeroXBenchmark.mk

 diff --git a/ZeroXBenchmark.mk b/ZeroXBenchmark.mk
 new file mode 100644
 index 000..e78047d
 --- /dev/null
 +++ b/ZeroXBenchmark.mk
 @@ -0,0 +1,96 @@
 +UNIXBENCH_BENCH_APPS := \
 +bench_ubench_hanoi  \
 +bench_ubench_syscall\
 +bench_ubench_context1   \
 +bench_ubench_pipe   \
 +bench_ubench_spawn  \
 +bench_ubench_execl  \
 +bench_ubench_looper \
 +bench_ubench_fstime \
 +bench_ubench_arithoh\
 +bench_ubench_register   \
 +bench_ubench_short  \
 +bench_ubench_int\
 +bench_ubench_long   \
 +bench_ubench_float  \
 +bench_ubench_double \
 +bench_ubench_dhry2  \
 +bench_ubench_dhry2reg   \
 +bench_ubench_whetstone-double
 +
 +LIBMICRO_BENCH_APPS :=  \
 +bench_getpid\
 +bench_bind  \
 +bench_cascade_mutex \
 +bench_cascade_fcntl \
 +bench_cascade_flock \
 +bench_chdir \
 +bench_close \
 +bench_close_tcp \
 +bench_connection\
 +bench_dup   \
 +bench_exec  \
 +bench_exit  \
 +bench_exp   \
 +bench_fcntl \
 +bench_fcntl_ndelay  \
 +bench_file_lock \
 +bench_fork  \
 +bench_getenv\
 +bench_gettimeofday  \
 +bench_getpeername   \
 +bench_getrusage \
 +bench_getsockname   \
 +bench_isatty\
 +bench_listen\
 +bench_localtime_r   \
 +bench_log   \
 +bench_longjmp   \
 +bench_lrand48   \
 +bench_lseek \
 +bench_malloc\
 +bench_memcpy\
 +bench_memmove   \
 +bench_memrand   \
 +bench_memset\
 +bench_mktime\
 +bench_mprotect  \
 +bench_mmap  \
 +bench_msync \
 +bench_munmap\
 +bench_mutex \
 +bench_nop   \
 +bench_open  \
 +bench_pipe  \
 +bench_poll  \
 +bench_pread \
 +bench_pthread_create\
 +bench_pwrite\
 +bench_read  \
 +bench_realpath  \
 +bench_recurse   \
 +bench_select\
 +bench_setsockopt\
 +bench_sigaction \
 +bench_siglongjmp\
 +bench_signal\
 +bench_sigprocmask   \
 +bench_socket\
 +bench_socketpair\
 +bench_stat  \
 +bench_strcasecmp\
 +bench_strchr\
 +bench_strcmp\
 +bench_strcpy\
 +bench_strftime  \
 +bench_strlen\
 +bench_strtol\
 +bench_system\
 +bench_time  \
 +bench_times \
 +bench_write \
 +bench_writev
 +
 +ZEROXBENCHMARK_NATIVE_APPS :=   \
 +$(UNIXBENCH_BENCH_APPS) \
 +$(LIBMICRO_BENCH_APPS)
 diff --git a/beagleboard.mk b/beagleboard.mk
 index c10e0fa..f810f36 100644
 --- a/beagleboard.mk
 +++ b/beagleboard.mk
 @@ -1,5 +1,7 @@
  # The beagleboard product that is specialized for beagleboard.

 +include $(LOCAL_PATH)/ZeroXBenchmark.mk
 +
  PRODUCT_PACKAGES := \
 ZeroXBenchmark \
 libmicro \
 @@ -22,7 +24,9 @@ PRODUCT_PACKAGES := \
 Sync \
 Updater \
 CalendarProvider \
 -SyncProvider
 +SyncProvider \
 +$(ZEROXBENCHMARK_NATIVE_APPS)
 +

  $(call inherit-product, $(SRC_TARGET_DIR)/product/core.mk)

 --
 1.7.1


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


ST-Ericsson launches the Igloo open source community

2011-02-15 Thread Lee Jones
http://eetimes.eu/en/st-ericsson-launches-the-igloo-open-source-community.html?cmp_id=7news_id=222905920vID=209#

=:-D

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


Re: [RFC] ARM: dma-mapping: outer cache is invalidated twice

2011-02-15 Thread Russell King - ARM Linux
On Tue, Feb 15, 2011 at 02:54:21PM +0100, Per Forlin wrote:
 I don't fully understand this yet. I think you are right but I need a
 little help to get there myself.
 I agree, the cache (L1 and L2) must be invalidated after the DMA has 
 completed.
 Before starting the DMA the write buffers must be drained (cache_sync).
 
 Why invalidate the cache before starting the DMA?

Think about what happens if you have dirty cache lines in the DMA region.
These can be evicted when other cache lines are loaded, which will result
in them overwriting contents of memory.  If the DMA device has already
written to that memory, the result is data corruption.

So, the invalidate prior to DMA is to get rid of any dirty cache lines
which could be written back to memory.

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


Re: [PATCH] i.MX23/28 framebuffer driver

2011-02-15 Thread Clark, Rob
On Wed, Feb 9, 2011 at 10:31 AM, Arnd Bergmann a...@arndb.de wrote:
 On Wednesday 09 February 2011, Sascha Hauer wrote:

 The driver patch itself is Cced to linux-fbdev, only the introductory
 mail is not.

 Ok, I see.

  Did you consider making the driver a KMS driver instead of
  a frame buffer? I think the recommendation these days is
  to start out with KMS for new drivers, which will be somewhat
  simpler and give you a frame buffer device as well. I don't
  think that there is a need to change over any drivers from
  fb to kms though, since you've already done the work.

 I tried doing so for the i.MX51 which supports multiple displays on dvi
 and vga outputs and thus could make good use of KMS and friends. Anyway,
 I got stuck quite fast. The KMS stuff is tightly coupled with DRM/DRI
 and needs many many callbacks to implement. Additionally the userspace
 tools expect a nvidia/amd/intel driver and do not have a generic
 fallback. I think this stuff is good for implementing a full blown
 graphics driver, but is lacking support for simple framebuffer grapics.
 I'd love to go this way but it still requires a lot of work.

 Ok. This sounds like a lot of upfront work indeed, to make KMS more
 generic, though I think a number of driver would benefit from it
 eventually. It could be something for the Linaro graphics working
 group to look at in the following 11.11 release, depending on how
 many other people are interested in getting there.


fwiw, it seems to me like xorg could have some more common code to
deal with the KMS part of DRM.. the various userspace xorg drivers end
up having a lot of very similar code to deal with enumerating
CRTCs/outputs and modes, handle hotplug, etc.

I'd been experimenting a bit on the side w/ the DRM driver framework (
http://gitorious.com/~robclark/pandaboard/robclarks-kernel-omap4/commits/omap_gpu
), but had to add a good chunk of mostly boilerplate code to our xorg
driver in order just to test it.  Maybe some generic support for KMS
in xf86-video-fbdev would have made this easier to develop the kernel
part without in parallel having to implement the userspace part.  I'm
not sure if this is the sort of thing the linaro-wg has in mind?

BR,
-R

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


Re: [RFC] ARM: dma-mapping: outer cache is invalidated twice

2011-02-15 Thread Per Forlin
On 15 February 2011 15:12, Russell King - ARM Linux
li...@arm.linux.org.uk wrote:
 On Tue, Feb 15, 2011 at 02:54:21PM +0100, Per Forlin wrote:
 I don't fully understand this yet. I think you are right but I need a
 little help to get there myself.
 I agree, the cache (L1 and L2) must be invalidated after the DMA has 
 completed.
 Before starting the DMA the write buffers must be drained (cache_sync).

 Why invalidate the cache before starting the DMA?

 Think about what happens if you have dirty cache lines in the DMA region.
 These can be evicted when other cache lines are loaded, which will result
 in them overwriting contents of memory.  If the DMA device has already
 written to that memory, the result is data corruption.

 So, the invalidate prior to DMA is to get rid of any dirty cache lines
 which could be written back to memory.

True. In my case write back is disable but read back is enable, that's
why I didn't consider it.
Do you think it is feasible to let dma-mapping detect the cache
configurations in runtime in order to prevent unnecessary cache
operations? I can see some FIXME comments in the code which indicates
you may have plans to change it.

I can try to think of a proposal if you agree.

Thanks again,
/Per

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


Re: Notes Actions: Linaro Graphics Working Group - Feb 09, 2011

2011-02-15 Thread Jesse Barker
Rob,

It is certainly analogous to the DRM access control interfaces, and I would
expect that access to memory objects from the graphics stack would go
through those interfaces (i.e. Xorg/EGL calls libdrm, calls DRM kernel
ioctl, calls memory manger inside the kernel), but we need to make sure we
have equivalent interfaces setup for non-graphics applications to make sure
that all access control policy is honored.  So, in short, yes, there's a
connection :-).

cheers,
Jesse

On Tue, Feb 15, 2011 at 5:27 AM, Clark, Rob r...@ti.com wrote:

 On Fri, Feb 11, 2011 at 7:47 AM, Alexandros Frantzis
 alexandros.frant...@linaro.org wrote:
 
   * First version of Unified Memory Management position:
 
 https://wiki.linaro.org/WorkingGroups/Middleware/Graphics/Projects/UnifiedMemoryManagement

 btw, the access control aspect of this sort of reminds me of the DRM
 driver infrastructure, and authentication between direct rendering
 client and x-server (or whoever the DRM master is)..

 I wonder if there is, or should be, a connection..

 BR,
 -R

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

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


Notes Actions: 2/9 Linaro Developer Platform Weekly Status Meeting

2011-02-15 Thread Tom Gall
Enclosed you'll find a link to the agenda, notes and actions from the
Linaro Developer Platforms Weekly Status meeting held on February 9th
in #linaro-meeting on irc.freenode.net at 16:00 UTC.

https://wiki.linaro.org/Platform/Foundations/2011-02-09

Actions from the meeting where as follows:

  * JamieBennett to come up with test assignments for the new
developer image: carried over
 * jcrigby to write up landing team u-boot, kernel workflows and send
for review after first draft is done: carried over
 * wookey to work with tgall_foo to get the linaro-nano image building
 * tgall_foo and JamieBennett to get linaro-desktop building in Offspring
 * slangasek and fturgis to decide whether or not to move to more
recent version of systemtap
 * ppearse to investigate how libtool does ldopen for GObject Introspection work

Regards,
Tom (tgall_foo)
Developer Platforms Team

We want great men who, when fortune frowns will not be discouraged.
- Colonel Henry Knox
w) tom.gall att linaro.org
w) tom_gall att vnet.ibm.com
h) tom_gall att mac.com

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


Re: Please review blueprint linaro-n-validation-job-dispatcher

2011-02-15 Thread Mirsad Vojnikovic
On 9 February 2011 20:12, Paul Larson paul.lar...@linaro.org wrote:

 On Mon, Jan 31, 2011 at 11:58 AM, Paul Larson paul.lar...@linaro.orgwrote:

  2. One queue TOTAL. One queue may seem like a bottleneck, but I don't
 think it has to be in practice.  One process can monitor that queue, then
 launch a process or thread to handle each new job that comes in.

 I think RabbitMQ message can have the ability to include the board
 information in it to use one queue, and also we can use different queues for
 different types of boards.

 Right, but my question was, if you are already encoding that information
 in the job stream, what is the advantage to having a queue for each board
 type, rather than a single queue?





 Job description:
 I'd like to see some more detail here.  Can you provide an example of a
 job file that would illustrate how you see it working?  We also need to
 specify the underlying mechanisms that will handle parsing what's in the 
 job
 file, and calling [something?] to do those tasks.  What we have here feels
 like it might be a bit cumbersome.

 I added an detailed one on the spec, like:

1.

[Beagle-1,

 http://snapshots.linaro.org/11.05-daily/linaro-hwpacks/imx51/20110131/0/images/hwpack/hwpack_linaro-imx51_20110131-0_armel_unsupported.tar.gz,


 http://snapshots.linaro.org/11.05-daily/linaro-headless/20110131/0/images/tar/linaro-natty-headless-tar-20110131-0.tar.gz,
900, [abrek, LTP, 180], [none, echo 100  abc, 1], ... ]
2.

[IMX51-2, 20100131, 900, [abrek, LTP, 180], [none, echo 100 
abc, 1], ... ]

 This looks almost like JSON, which is what Zygmunt was originally pushing
 for IIRC.  If we are already going down that path, seems it would be
 sensible to take it a step further and have defined sections.  For example:

 Tests:[
 {
 name:LTP,
 testsuite:abrek,
 subtest:ltp,  not thrilled about that name subtest,
 but can't think of something better to call it at the moment
 timeout:180,
 reboot_after:True
 },
 {
 name:echo test,
 testsuite:shell,
 timeout:20
 reboot_after:False
 }
 ]
 What do you think?  Obviously, there would be other sections for things
 like defining the host characteristics, the image to deploy, etc.





 Other questions...
 What if we have a dependency, how does that get installed on the target
 image? For example, if I want to do a test that requires bootchart be
 installed before the system is booted, we should be able to specify that,
 and have it installed before booting.

 What about installing necessary test suites?  How do we tell it, in
 advance, what we need to have installed, and how does it get on the image
 before we boot, or before we start testing?

 I think validation tools, test suites and necessary files are likely to
 install after test image deployment.

 Yes, clearly they have to be installed after deployment, but we may also
 need to consider them installing BEFORE we actually boot the test image.

 Had another thought on this tonight, I didn't hear much back on the
 previous proposal, but how about something more like this as an example of
 what a job description might look like.  In this scenario, there would be
 some metadata for the job itself, such as timeout values, etc.  Then steps
 that would define commands with parameters.  That would allow us to be more
 flexible, and add support for more commands without changing the format.
 Hopefully the mailer doesn't mangle this too badly. :)

 {
   job_name: foo,
   target: panda01,
   timeout: 18000,
   steps: [
 {
   command: deploy,
   parameters:
 {
   rootfs: 
 http://snapshots.linaro.org/11.05-daily/linaro-developer/20110208/0/images/tar/linaro-n-developer-tar-20110208-0.tar.gz
 
   hwpack: 
 http://snapshots.linaro.org/11.05-daily/linaro-hwpacks/panda/20110208/0/images/hwpack/hwpack_linaro-panda_20110208-0_armel_supported.tar.gz
 
 }
 },
 {
   command: boot_test_image
 },
 {
   command: test_abrek,
   parameters:
 {
   test_name: ltp
 }
 },
 {
   command: submit_results,
   parameters:
 {
   server: http://dashboard.linaro.org;,
   stream: panda01-ltp
 }
 }
   ]
 }

I think this looks good. Is this the JSON file definition we will use
initially? Asking this because the corresponding Dispatcher WI is set to
done [qzhang] Define the job description both on dispatcher and scheduler:
DONE. I will need at least initial version to work with on Scheduler parts.

Also, I wonder if we will support more complex test jobs involving more than
one board, either of the same type or different types? If yes, how will the
Dispatcher handle those? Should we put that in queue as a single job or as
multiple jobs? How will that affect JSON file definition?


 Thanks,
 Paul Larson

___
linaro-dev mailing list

[RFC] agent-based remote validation invocation for LAVA

2011-02-15 Thread Jim Huang
...@linaro.org-20110215171535-bzd9sb3wont0il67
# target_branch: http://bazaar.launchpad.net/~pwlars/abrek/trunk/
# testament_sha1: 3effa4a7c980a9b31968fc80514a0eabc5568e0b
# timestamp: 2011-02-16 02:02:38 +0800
# base_revision_id: paul.lar...@canonical.com-20110112145515-\
#   z05a1jdktss8rbtu
# 
# Begin patch
=== added file 'abrek/test_definitions/monkey.py'
--- abrek/test_definitions/monkey.py	1970-01-01 00:00:00 +
+++ abrek/test_definitions/monkey.py	2011-02-15 17:15:35 +
@@ -0,0 +1,27 @@
+import re
+import abrek.testdef
+
+VERSION=20110215
+RUNSTEPS = ['adb shell monkey -s 1 --pct-syskeys 100 --throttle 500 100']
+
+class MonkeyParser(abrek.testdef.AbrekTestParser):
+def parse(self):
+filename = testoutput.log
+PAT = ^## Network stats: elapsed time?\W+(?Pmeasurement\d+)ms
+pat = re.compile(PAT)
+with open(filename) as fd:
+for line in fd:
+match = pat.search(line)
+if match:
+d = match.groupdict()
+d['units'] = mseconds
+d['result'] = pass
+d['test_case_id'] = monkey
+self.results['test_results'].append(d)
+
+monkeyinst = abrek.testdef.AbrekTestInstaller(deps=[monkey])
+monkeyrun = abrek.testdef.AbrekTestRunner(RUNSTEPS)
+monkeyparser = MonkeyParser()
+testobj = abrek.testdef.AbrekTest(testname=monkey, version=VERSION,
+  installer=monkeyinst, runner=monkeyrun,
+  parser=monkeyparser)

# Begin bundle
IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWW3hhegAAej/gERUQAFY7//3
8iPfj7BQBO92YDl0cQoDpQ0QJpGTaoek2U2Cn6mkaADQGQAwgA0Qmp6ZMjRoUHoQ
1U9pGk0xMQA0AAAGgAAaYgBw00yMRhNMBDAJphGCYmQ0yNDQCSIRpqYhqMCMmpNtNTEno9TUzUab
UaDQ9TT0kAKLNYMvvSJqqDbZsmaEGYQEHgDA5VS0gDcStIz3bFxytYWtBJfJkkEUl0oobvO/5H8/
M8vKubu7cPVVy+HMi87Hl2O7x0SWr1I6ZoiUFBU9Uy0dJ+eRyEZha1Ao4ZtB00JqEoYtUUV6NgvX
G2MJj31pOu3UpxJRakjP4MIBnRpbJHfNpBGDLfQGHLdnXAtj1ZZX4kqgpj0XPSSOlw7hvS4y3BWC
rHIwsWLT4WzjCpOcz8gaKkt60UdT9iUlXDei26Vn3XSZul3e9tLcOj1oUA1Mggx9lYZwgny2EShG
WUXmaLy5gc53K61jZBH9dBd3VpLlxRlNWVdlVcIKyIf7PLDKmAziczML2Xb5DrFx44QVMwcrAZu/
jRYuVBIuqyZ8cojX14UsYKYHPk06TmyFQpsV1mYwFGGqpTIYVxCFuS2OSyEBhsl1g1l8ZXFQnTZW
IKAExhZDFgTUG5TSn6LKwa+M4tYXmOVgpnUWQtTk6t1CjEoFYFslOEqUknFkQGEISY9ya8JYCzFF
lB0mMou1igLDmjO2WcEh+ArgDpuMFxAxqVXtei9lUVRmNa7rFBaBNNqiwJ2N3n02oXNh2YtnJEYf
DOvT42d0612pXHoDqZQ0YGMbsWYQh0MKB8Qgnw9ykLh0KkI6R2xCHBAGRlC+R408njtNrZfn/QdD
NkNe1nYGn2uQHDtXtPdctDbvC6w4FvUFF8L1TGDyhjSqW/j3e+7GimJJzcMzVrFR4Qr/OAwSk84r
8NZlFccTup7fjpwRvBs68Bek7zo7xGKC1l9I71DOPyeOtAgsInIkSWydSqNcKhQazNOPi28wirz0
iGEqgwsATt8AJIYTiloqxzaTApvwcWGoT4S8i2g7FDXkyGzhRSlS1eFrRPkSuoKpw03SUJ5RJDGA
8bDlwm2Nqbcm7Tg3uklmtEdmXe2XBz0XnJMDnyjPyt5plfWXtWxDNojGWxJ502YrPFmTJ2AtWT4O
EFmEEsJtewNy+vAPV1mc3HQUPrtl8eF+uPlyOcCPDOJ0uCHNp3cLGRuBknshthkTF/nS1aXd7+3i
yaf1kdYtXSwSVxmNyTwDCXs8Qz8oqmbMQigHBkAfomEjXL38I5S+B0A3DvD7PQh2RegLtwbVj3ri
qwqXWKWKKOpYvRrrU2mwxWeCXNtujsdX3O82MOpMb6D1BbuxZ4Fmyllzag1NDxZma2hXQ+ldqULW
lCDnvYUDPdUlQi4eFTjbBySUF2QpBAMRTwX7tOAmQ7Jl15krW0NsRfUHOmh78a0oPMYUuArLGtLQ
2JSgG5RWSoeyepmTdp26+MZLVqmYrWepiGqVemF2VP3EaEHQfAZQD18FK454iLa0pI/Tstv6aFqV
c64Iglj7I5fZlqSmymO2kogrU6OMYjveqAyoJEDCOYE/G2TWbfWsFdUYtsiUxprqGDSV46xvg4zJ
MmsZKgMGDytaDTdtfTAsecNdchY3eKGb7DBa0UyIPdE5tzaEZueMjHO2GWGvCPILfSCqI4oU5pzq
LjKZ2QpXUE0tN4Dhb5IaoYIgVdAHYdP5CviFMbqjDENyUE7ILdCoZcBchV/4u5IpwoSDbwwvQA==
___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


Re: [RFC] agent-based remote validation invocation for LAVA

2011-02-15 Thread Zygmunt Krynicki

W dniu 15.02.2011 21:01, Jim Huang pisze:

Hi Jim, great work!


** Why can't we execute LAVA/Abrek directly on Android devices?


I agree that direct abrek is not the right solution for Android. I think 
there is a class of use cases that also falls into this category:

 * testing early silicon
 * testing very primitive systems
 * testing other foreign systems

They all have either no python or running python is not desirable.



** So, what's agent-based remote validation invocation for LAVA?

There are three key items:
(a) Agent
(b) Remote validation invocation
(c) LAVA

We keep in mind that we make no technical impact to LAVA architecture,
and the Agent is just the helper.
Originally, the client-server communication looks like the following:

 LAVA server  LAVA client --  Abrek test suite



Currently LAVA is just taking shape. Things like server and client are 
still not very well defined. You don't have to be constrained by this. 
The only thing that is somewhat well defined is abrek that was produced 
in the previous cycle. Abrek was designed to run _on_ the device. For 
use cases where Abrek is just interacting with the test device we may 
want to extend it sensibly to clearly separate those cases where 
necessary while retaining as much common code and user interface as 
possible.


There are a few things to consider here:

Device context: Currently abrek has some logic to probe the running 
system for context information. Context is loosely defined as the 
collection of relevant software and hardware information that might be 
interesting to analyze or that can be used to connect distinct test 
results in post-process analysis. If we are just interacting with a 
remote device we need to determine this information in some other way 
_and_ ensure we're not adding any dummy information from the host system.


Remote device registration: A single host may talk to possibly large 
number of such devices. At the very least we should plan how we intend 
to manage the process of defining/adding/removing a device and how to 
allow remote tests to be invoked on registered devices, if possible (if 
the device supports this test).


Test classes: So far abrek tests could run on any Linux box (where any 
was poorly defined as any ubuntu-like system. This is no longer the 
case so we should be able to classify tests (and devices) somehow.



IMHO we could define a new tool (or just a new sub-command class for 
abrek), say abrek-remote that will be used instead of the normal abrek call.


Another crazy option would be to expose LAVA Job Dispatcher directly and 
allow people to run jobs. In this case one job would use abrek and some 
other tools to invoke tests, process results and send them to the 
dashboard while other job (one for android) would not run abrek at all, 
instead it would call some other helper, while still reusing identical 
components for process results and send to result storage phases. This 
is still in flux but has some advantages:

0) Jobs are simple text files that can be stored and shared with others
1) Jobs can encapsulate device information like which android device to 
connect to and how.
2) Jobs can still call to other parts of the LAVA stack such as result 
submission
3) Jobs can be extended locally (by LAVA plugins) so that anyone can 
develop specialized use cases for their very specific needs without

altering the stack or having to write something completely custom.

Another upside is that such job definitions (and any required LAVA 
plugins) would just integrate with the rest of LAVA (farm backend, 
frontend, etc). You could work on a job description on your workstation 
and once it's finished you could add it to a job scheduler for automatic 
processing.



** Show me the use case

The attached patch is just trivial proof-of concept implementation
done by Jeremy Chang that adds a 'monkey'
test definition file for abrek.  Once TCP/IP or USB is ready, for
Android's monkey testing, the procedure is like
as following:
(1) abrek run monkey
(2) abrek dashboard put /anonymous/ monkey1297752359.0


Could you please forgive my android ignorance and tell me how I can run 
this test? Please include any hardware/software I should have. Can I run 
this on a beagle board with some android installation? Do I need a real 
android phone? This is just so that I can participate in the discussion 
and not make clueless and pointless arguments later.



Any suggestion is appreciated.  Thank you in advance.


I hope we can work on making this solid.

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


Re: [PATCH v2 1/2] ARM: IMX5: cpuidle driver

2011-02-15 Thread Sascha Hauer
On Fri, Feb 11, 2011 at 10:36:12AM +0100, yong.s...@linaro.org wrote:
 From: Yong Shen yong.s...@freescale.com
 
 implement cpuidle driver for iMX5 SOCs, leave cpuidle params to board
 related code.
 
 Signed-off-by: Yong Shen yong.s...@freescale.com
 ---
  arch/arm/mach-mx5/Makefile  |1 +
  arch/arm/mach-mx5/cpuidle.c |  113 
 +++
  arch/arm/mach-mx5/cpuidle.h |   26 ++
  3 files changed, 140 insertions(+), 0 deletions(-)
  create mode 100644 arch/arm/mach-mx5/cpuidle.c
  create mode 100644 arch/arm/mach-mx5/cpuidle.h
 
 diff --git a/arch/arm/mach-mx5/Makefile b/arch/arm/mach-mx5/Makefile
 index 0d43be9..12239e0 100644
 --- a/arch/arm/mach-mx5/Makefile
 +++ b/arch/arm/mach-mx5/Makefile
 @@ -7,6 +7,7 @@ obj-y   := cpu.o mm.o clock-mx51-mx53.o devices.o
  obj-$(CONFIG_SOC_IMX50) += mm-mx50.o
  
  obj-$(CONFIG_CPU_FREQ_IMX)+= cpu_op-mx51.o
 +obj-$(CONFIG_CPU_IDLE)   += cpuidle.o
  obj-$(CONFIG_MACH_MX51_BABBAGE) += board-mx51_babbage.o
  obj-$(CONFIG_MACH_MX51_3DS) += board-mx51_3ds.o
  obj-$(CONFIG_MACH_MX53_EVK) += board-mx53_evk.o
 diff --git a/arch/arm/mach-mx5/cpuidle.c b/arch/arm/mach-mx5/cpuidle.c
 new file mode 100644
 index 000..9d77c47
 --- /dev/null
 +++ b/arch/arm/mach-mx5/cpuidle.c
 @@ -0,0 +1,113 @@
 +/*
 + * arch/arm/mach-mx5/cpuidle.c
 + *
 + * This file is licensed under the terms of the GNU General Public
 + * License version 2.  This program is licensed as is without any
 + * warranty of any kind, whether express or implied.
 + */
 +
 +#include linux/io.h
 +#include linux/cpuidle.h
 +#include asm/proc-fns.h
 +#include mach/hardware.h
 +#include cpuidle.h
 +#include crm_regs.h
 +
 +static struct imx_cpuidle_params *imx_cpuidle_params;
 +void imx_cpuidle_board_params(struct imx_cpuidle_params *cpuidle_params)
 +{
 + imx_cpuidle_params = cpuidle_params;
 +}
 +
 +extern int tzic_enable_wake(int is_idle);

Please put this into a header file.

 +static int imx_enter_idle(struct cpuidle_device *dev,
 +struct cpuidle_state *state)
 +{
 + struct timeval before, after;
 + int idle_time;
 + u32 plat_lpc, arm_srpgcr, ccm_clpcr;
 + u32 empgc0, empgc1;
 +
 + local_irq_disable();
 + do_gettimeofday(before);
 +
 + plat_lpc = __raw_readl(MXC_CORTEXA8_PLAT_LPC) 
 + ~(MXC_CORTEXA8_PLAT_LPC_DSM);
 + ccm_clpcr = __raw_readl(MXC_CCM_CLPCR)  ~(MXC_CCM_CLPCR_LPM_MASK);
 + arm_srpgcr = __raw_readl(MXC_SRPG_ARM_SRPGCR)  ~(MXC_SRPGCR_PCR);
 + empgc0 = __raw_readl(MXC_SRPG_EMPGC0_SRPGCR)  ~(MXC_SRPGCR_PCR);
 + empgc1 = __raw_readl(MXC_SRPG_EMPGC1_SRPGCR)  ~(MXC_SRPGCR_PCR);
 +
 + if (state == dev-states[WAIT_CLK_ON])
 + ;

An if without code? This looks strange.

 + else if (state == dev-states[WAIT_CLK_OFF])
 + ccm_clpcr |= (0x1  MXC_CCM_CLPCR_LPM_OFFSET);
 + else if (state == dev-states[WAIT_CLK_OFF_POWER_OFF]) {
 + /* Wait unclocked, power off */
 + plat_lpc |= MXC_CORTEXA8_PLAT_LPC_DSM
 + | MXC_CORTEXA8_PLAT_LPC_DBG_DSM;
 + arm_srpgcr |= MXC_SRPGCR_PCR;
 + ccm_clpcr |= (0x1  MXC_CCM_CLPCR_LPM_OFFSET);
 + ccm_clpcr = ~MXC_CCM_CLPCR_VSTBY;
 + ccm_clpcr = ~MXC_CCM_CLPCR_SBYOS;
 + if (tzic_enable_wake(1) != 0) {
 + local_irq_enable();
 + return 0;
 + }
 + }
 +
 + __raw_writel(plat_lpc, MXC_CORTEXA8_PLAT_LPC);
 + __raw_writel(ccm_clpcr, MXC_CCM_CLPCR);
 + __raw_writel(arm_srpgcr, MXC_SRPG_ARM_SRPGCR);
 +
 + cpu_do_idle();
 +
 + do_gettimeofday(after);
 + local_irq_enable();
 + idle_time = (after.tv_sec - before.tv_sec) * USEC_PER_SEC +
 + (after.tv_usec - before.tv_usec);
 + return idle_time;
 +}
 +
 +static struct cpuidle_driver imx_cpuidle_driver = {
 + .name = imx_idle,
 + .owner =THIS_MODULE,
 +};
 +
 +static DEFINE_PER_CPU(struct cpuidle_device, imx_cpuidle_device);
 +
 +static int __init imx_cpuidle_init(void)
 +{
 + struct cpuidle_device *device;
 + int i;
 +
 + if (imx_cpuidle_params == NULL)
 + return -ENODEV;
 +
 + cpuidle_register_driver(imx_cpuidle_driver);
 +
 + device = per_cpu(imx_cpuidle_device, smp_processor_id());
 + device-state_count = IMX_MAX_CPUIDLE_STATE;
 +
 + for (i = 0; i  IMX_MAX_CPUIDLE_STATE  i  CPUIDLE_STATE_MAX; i++) {
 + device-states[i].enter = imx_enter_idle;
 + device-states[i].exit_latency = imx_cpuidle_params[i].latency;
 + device-states[i].flags = CPUIDLE_FLAG_TIME_VALID;
 + }
 +
 + strcpy(device-states[WAIT_CLK_ON].name, WFI 0);
 + strcpy(device-states[WAIT_CLK_ON].desc, Wait with clock on);
 + strcpy(device-states[WAIT_CLK_OFF].name, WFI 1);
 + strcpy(device-states[WAIT_CLK_OFF].desc, Wait with clock off);
 + strcpy(device-states[WAIT_CLK_OFF_POWER_OFF].name, WFI 

Notes from the Infrastructure team meeting - 2011-02-15

2011-02-15 Thread James Westby
Hi,

See the notes in full formatted glory:

  https://wiki.linaro.org/Platform/Infrastructure/Meetings/2011-02-15

or see below.

Thanks,

James



=== Attendees ===
  * Mattias Backman
  * Guilherme Salgado
  * Deepti Kalakeri
  * James Westby

=== Agenda ===
  * Team status
  * Actions from last meeting
  * AOB

=== Action Items ===
  * James to Cc Guilherme on RT for patchwork
  * James to email Guilherme with info on patc...@linaro.org account

=== Action Items from previous meeting ===
 * James to talk with Michael about requirement driving not wanting to host 
artefacts on Hudson

=== Minutes ===

  * Team status reports
* Mattias Backman
  * Started prototyping BuildFailureBugFiling
  * Snowball was taken away again
* Guilherme Salgado
  * Wrote design/implementation plans for PatchTracking
  * Submitted some patchwork patches and got good feedback
* James Westby
  * Continued positive feedback about status.linaro.org, along with 
requests for improvement
* Deepti Kalakeri
  * Set up Hudson locally to experiment with.
  * Panda should be arriving this week
  * Not going to rely on an IS deployed instance of Hudson/Jenkins for 
short-term experimentation.

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


Minutes for Mentor team meeting - 2011-2-15

2011-02-15 Thread Matt Waddel
The wiki formatted minutes are at:

https://wiki.linaro.org/Mentoring/Status/2011-02-15

Please direct suggestions or comments to Matt or Andy.

Cheers,
Matt

== Team Highlights ==
 * Wiki Additions
  * https://wiki.linaro.org/Mentoring/Additions-l-m-c
  * Email setup
   * https://wiki.linaro.org/Internal/Process/ThunderbirdSetup
   * https://wiki.linaro.org/Internal/Process/MuttSetup
  * https://wiki.linaro.org/Internal/Process/CalendarSetup
  * https://wiki.linaro.org/Mentoring/HowTo/UbuntuDevelopmentProcess
  * https://wiki.linaro.org/Mentoring/KernelDeploy

== Action Items and Minutes ==
 * Training the Trainers checklist - Both
 * IRC quick reference link - Matt
 * Xchat tutorial - Ericm's request - Andy
 * Conference Call System rewrite - Matt
 * Tailored new staff to-do list - Add to New Staff task? - Both
 * Recorded new staff checklist - Maybe a google form - Matt
 * Review survey - individuals and trends
  * Mumble - Matt
  * Gobby - Andy
 * Tech lead feedback email
  * Break out Angus' email into to-do items - Andy
 * Mapping between Launchpad projects and Linaro teams - Both
 * Android information - Andy
 * Extend category tag usage
 * Waiting on Trainers - should we suggest people

== Risks / Issues ==
 * Risk - Unable to recruit trainers within member organizations
- carry over from last week
  * Mitigation - Perform mentoring tasks from within this team
  * Mitigation - Break responsibilities into smaller portions and
recruit multiple trainers
 * Information we have developed is not easy to find or accessible

== Miscellaneous ==
 * Holidays - Feb 21, 2011 - US President's day

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


Re: Correction - Minutes for Mentor team meeting - 2011-2-15

2011-02-15 Thread Matt Waddel
On 02/15/2011 05:11 PM, Matt Waddel wrote:
snip
  * Wiki Additions
   * https://wiki.linaro.org/Mentoring/Additions-l-m-c

This should be:

* https://wiki.linaro.org/Mentoring/HowTo/AddingNewHardwareSupport

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


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


Announcing the Linaro porting jam

2011-02-15 Thread Steve Langasek
Hello, my fellow ARM aficionados!

The Linaro Developer Platform Team is pleased to announce a new initiative
to help improve the state of software on ARM: the ARM porting jam.  Starting
today, February 16th, we will be running a weekly IRC jam on Wednesdays from
1400-1800 UTC to bring developers together to work on all manner of
userspace porting bugs, with the aim of fixing portability issues and
getting the fixes delivered to our upstreams.

An initial porting queue of known issues can be found here:

  https://bugs.launchpad.net/ubuntu/+bugs?field.tag=arm-porting-queue

Interested in making the software in Ubuntu run better on ARM?  Stop on by
the #linaro channel on irc.linaro.org today!

-- 
Steve Langasek   Give me a lever long enough and a Free OS
Debian Developer   to set it on, and I can move the world.
Ubuntu Developerhttp://www.debian.org/
slanga...@ubuntu.com vor...@debian.org


signature.asc
Description: Digital signature
___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev