Re: [PATCH v3 02/12] mmc: mmc_test: add debugfs file to list all tests

2011-05-08 Thread Andy Shevchenko
On Sat, May 7, 2011 at 10:14 PM, Per Forlin  wrote:
> Add a debugfs file "testlist" to print all available tests
>
> Signed-off-by: Per Forlin 
> ---
>  drivers/mmc/card/mmc_test.c |   30 ++
>  1 files changed, 30 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/mmc/card/mmc_test.c b/drivers/mmc/card/mmc_test.c
> index abc1a63..c1c3c5a 100644
> --- a/drivers/mmc/card/mmc_test.c
> +++ b/drivers/mmc/card/mmc_test.c


> @@ -2476,6 +2502,10 @@ static int mmc_test_register_file_test(struct mmc_card 
> *card)
>                file = debugfs_create_file("test", S_IWUSR | S_IRUGO,
>                        card->debugfs_root, card, &mmc_test_fops_test);
>
> +       if (card->debugfs_root)
> +               file = debugfs_create_file("testlist", S_IRUGO,
> +                       card->debugfs_root, card, &mmc_test_fops_testlist);
> +
>        if (IS_ERR_OR_NULL(file)) {
>                dev_err(&card->dev,
>                        "Can't create file. Perhaps debugfs is disabled.\n");
I think you also need to use similar error path for both files: test
and testlist.


-- 
With Best Regards,
Andy Shevchenko

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


Re: linaro-android track

2011-05-08 Thread James Westby
On Fri, 06 May 2011 10:29:57 +1200, Michael Hudson-Doyle 
 wrote:
> It's still there :(  Thursday after the afternoon keynotes in Elod.
> Good luck killing it some more!

It's now gone.

Thanks,

James

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


Re: [PATCH v3 02/12] mmc: mmc_test: add debugfs file to list all tests

2011-05-08 Thread Per Forlin
On 8 May 2011 00:18, Andy Shevchenko  wrote:
> On Sat, May 7, 2011 at 10:14 PM, Per Forlin  wrote:
>> Add a debugfs file "testlist" to print all available tests
>>
>> Signed-off-by: Per Forlin 
>> ---
>>  drivers/mmc/card/mmc_test.c |   30 ++
>>  1 files changed, 30 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/mmc/card/mmc_test.c b/drivers/mmc/card/mmc_test.c
>> index abc1a63..c1c3c5a 100644
>> --- a/drivers/mmc/card/mmc_test.c
>> +++ b/drivers/mmc/card/mmc_test.c
>
>
>> @@ -2476,6 +2502,10 @@ static int mmc_test_register_file_test(struct 
>> mmc_card *card)
>>                file = debugfs_create_file("test", S_IWUSR | S_IRUGO,
>>                        card->debugfs_root, card, &mmc_test_fops_test);
>>
>> +       if (card->debugfs_root)
>> +               file = debugfs_create_file("testlist", S_IRUGO,
>> +                       card->debugfs_root, card, &mmc_test_fops_testlist);
>> +
>>        if (IS_ERR_OR_NULL(file)) {
>>                dev_err(&card->dev,
>>                        "Can't create file. Perhaps debugfs is disabled.\n");
> I think you also need to use similar error path for both files: test
> and testlist.
Thanks, I'll fix that and add this check for both.

>
>
> --
> With Best Regards,
> Andy Shevchenko
>
Regards,
Per

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


Issues with Android toolchain build

2011-05-08 Thread Paul Sokolovsky
(sorry, first time sent from wrong email, don't know if that'll get
thru)

Hello Android team,

I was working on making Android toolchain buildable using Android build
service, and finally I was able to do successful and reproducible
builds - of AOSP pristine bare-matal toolchain so far
(https://android-build.linaro.org/builds/~pfalcon/aosp-toolchain/).
There were few issues which needed to be investigated and resolved,
and which I would like to discuss here:

1. make -jN breakage

Android build service builds on EC2 XLARGE instances with 16
concurrent make jobs (-j16). This invariably leads to build failure
sooner or later (exact location depends on other options and maybe
non-deterministic at all). The failure is "error: Link tests are not
allowed after GCC_NO_EXECUTABLES." which somehow sends issue-hunting
the wrong trail (like sysroot issues, etc.) but after some experiments
I reduced this to exactly -j >1 being used, with -j1 it went past usual
failure points reliably.

2. Lack of DESTDIR support

There's standard GNU autotools variable "DESTDIR" to install package
into other directory besides $prefix. It is supported for gcc,
binutils, etc., but not for Android's own toolchain/build project. The
usual local-use trick is just to pass another prefix just for make
install target, and that's what toolchain/build's README suggests. My
only concern is "cleanroomness" of the results - suppose make install
suddenly wants to rebuild something (libtool used to have such habit),
then new prefix may be embedded into some executable, and then hit
beyond the usual usage pattern (like, with non-English locale). Still,
this is more a theoretical risk, which I as a build engineer should
note, but not something to much worry about.

3. libstdc++v3 build

toolchain/build's README says that the default is not to build
libstdc++v3 and it must be enabled explicitly. But in the current
master I found that not to be the case - it gets enabled by default.
And its build requires sysroot, so I had to disable it explicitly
for bare-metal build.

4. sysroot source

So, to build full-fledged toolchain, we need to supply sysroot.
What should be source of it? Android build service script I started
from extracts it from an official Android SDK release. Is that good
enough source? I guess we'd miss some non-released optimizations that
way (byteswap ARMv6 optimizations come to mind). Otherwise, what should
be used instead? Obvious choice is to build Android target images, then
build toolchain on that tree. But that would be too long and expensive.
Should we prepare and tar sysroot and provide it as extra build
artifact for Android target builds? Also, can there be any
machine-specificity, or it's for sure one generic sysroot for specific
Android version (with arch-specific things handled via #ifdef's)?


Of these 4, first 3 are upstream-related bugreports with known
workarounds. I wanted to write them down, but I'm not sure if more can
be done about them - if you think it would be useful to submit them as
bugs at lp/linaro-android (or directly to upstream?), I can do it.
Sysroot issue of course requires input/discussion - in mail or at some
LDS session.


Thanks,
 Paul  mailto:pmis...@gmail.com


-- 
Best Regards,
Paul

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


Re: Issues with Android toolchain build

2011-05-08 Thread Zach Pfeffer
Paul, thanks for getting some builds going.

On 8 May 2011 18:40, Paul Sokolovsky  wrote:
> (sorry, first time sent from wrong email, don't know if that'll get
> thru)
>
> Hello Android team,
>
> I was working on making Android toolchain buildable using Android build
> service, and finally I was able to do successful and reproducible
> builds - of AOSP pristine bare-matal toolchain so far
> (https://android-build.linaro.org/builds/~pfalcon/aosp-toolchain/).
> There were few issues which needed to be investigated and resolved,
> and which I would like to discuss here:
>
> 1. make -jN breakage
>
> Android build service builds on EC2 XLARGE instances with 16
> concurrent make jobs (-j16). This invariably leads to build failure
> sooner or later (exact location depends on other options and maybe
> non-deterministic at all). The failure is "error: Link tests are not
> allowed after GCC_NO_EXECUTABLES." which somehow sends issue-hunting
> the wrong trail (like sysroot issues, etc.) but after some experiments
> I reduced this to exactly -j >1 being used, with -j1 it went past usual
> failure points reliably.
>
> 2. Lack of DESTDIR support
>
> There's standard GNU autotools variable "DESTDIR" to install package
> into other directory besides $prefix. It is supported for gcc,
> binutils, etc., but not for Android's own toolchain/build project. The
> usual local-use trick is just to pass another prefix just for make
> install target, and that's what toolchain/build's README suggests. My
> only concern is "cleanroomness" of the results - suppose make install
> suddenly wants to rebuild something (libtool used to have such habit),
> then new prefix may be embedded into some executable, and then hit
> beyond the usual usage pattern (like, with non-English locale). Still,
> this is more a theoretical risk, which I as a build engineer should
> note, but not something to much worry about.
>
> 3. libstdc++v3 build
>
> toolchain/build's README says that the default is not to build
> libstdc++v3 and it must be enabled explicitly. But in the current
> master I found that not to be the case - it gets enabled by default.
> And its build requires sysroot, so I had to disable it explicitly
> for bare-metal build.

Sounds like out-of-date documentation.

> 4. sysroot source
>
> So, to build full-fledged toolchain, we need to supply sysroot.
> What should be source of it? Android build service script I started
> from extracts it from an official Android SDK release. Is that good
> enough source? I guess we'd miss some non-released optimizations that
> way (byteswap ARMv6 optimizations come to mind). Otherwise, what should
> be used instead? Obvious choice is to build Android target images, then
> build toolchain on that tree. But that would be too long and expensive.
> Should we prepare and tar sysroot and provide it as extra build
> artifact for Android target builds? Also, can there be any
> machine-specificity, or it's for sure one generic sysroot for specific
> Android version (with arch-specific things handled via #ifdef's)?
>
>
> Of these 4, first 3 are upstream-related bugreports with known
> workarounds. I wanted to write them down, but I'm not sure if more can
> be done about them - if you think it would be useful to submit them as
> bugs at lp/linaro-android (or directly to upstream?), I can do it.
> Sysroot issue of course requires input/discussion - in mail or at some
> LDS session.

I think bug reports would be useful, would you file them? We'll chat at LDS.

>
>
> Thanks,
>  Paul                          mailto:pmis...@gmail.com
>
>
> --
> Best Regards,
> Paul
>

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


Issues with Android toolchain build

2011-05-08 Thread Paul Sokolovsky
Hello Android team,

I was working on making Android toolchain buildable using Android build
service, and finally I was able to do successful and reproducible
builds - of AOSP pristine bare-matal toolchain so far
(https://android-build.linaro.org/builds/~pfalcon/aosp-toolchain/).
There were few issues which needed to be investigated and resolved,
and which I would like to discuss here:

1. make -jN breakage

Android build service builds on EC2 XLARGE instances with 16
concurrent make jobs (-j16). This invariably leads to build failure
sooner or later (exact location depends on other options and maybe
non-deterministic at all). The failure is "error: Link tests are not
allowed after GCC_NO_EXECUTABLES." which somehow sends issue-hunting
the wrong trail (like sysroot issues, etc.) but after some experiments
I reduced this to exactly -j >1 being used, with -j1 it went past usual
failure points reliably.

2. Lack of DESTDIR support

There's standard GNU autotools variable "DESTDIR" to install package
into other directory besides $prefix. It is supported for gcc,
binutils, etc., but not for Android's own toolchain/build project. The
usual local-use trick is just to pass another prefix just for make
install target, and that's what toolchain/build's README suggests. My
only concern is "cleanroomness" of the results - suppose make install
suddenly wants to rebuild something (libtool used to have such habit),
then new prefix may be embedded into some executable, and then hit
beyond the usual usage pattern (like, with non-English locale). Still,
this is more a theoretical risk, which I as a build engineer should
note, but not something to much worry about.

3. libstdc++v3 build

toolchain/build's README says that the default is not to build
libstdc++v3 and it must be enabled explicitly. But in the current
master I found that not to be the case - it gets enabled by default.
And its build requires sysroot, so I had to disable it explicitly
for bare-metal build.

4. sysroot source

So, to build full-fledged toolchain, we need to supply sysroot.
What should be source of it? Android build service script I started
from extracts it from an official Android SDK release. Is that good
enough source? I guess we'd miss some non-released optimizations that
way (byteswap ARMv6 optimizations come to mind). Otherwise, what should
be used instead? Obvious choice is to build Android target images, then
build toolchain on that tree. But that would be too long and expensive.
Should we prepare and tar sysroot and provide it as extra build
artifact for Android target builds? Also, can there be any
machine-specificity, or it's for sure one generic sysroot for specific
Android version (with arch-specific things handled via #ifdef's)?


Of these 4, first 3 are upstream-related bugreports with known
workarounds. I wanted to write them down, but I'm not sure if more can
be done about them - if you think it would be useful to submit them as
bugs at lp/linaro-android (or directly to upstream?), I can do it.
Sysroot issue of course requires input/discussion - in mail or at some
LDS session.


Thanks,
 Paul  mailto:pmis...@gmail.com

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


Re: [PATCH v3 00/12] mmc: use nonblock mmc requests to minimize latency

2011-05-08 Thread Philip Rakity

Hi Per,

We noticed on some of our systems if we ADMA or SDMA and a bounce buffer it is 
significantly faster then SDMA.

I believe ADMA will do large transfers.  Another data point.

Philip

On May 7, 2011, at 12:14 PM, Per Forlin wrote:

> How significant is the cache maintenance over head?
> It depends, the eMMC are much faster now
> compared to a few years ago and cache maintenance cost more due to
> multiple cache levels and speculative cache pre-fetch. In relation the
> cost for handling the caches have increased and is now a bottle neck
> dealing with fast eMMC together with DMA.
> 
> The intention for introducing none blocking mmc requests is to minimize the
> time between a mmc request ends and another mmc request starts. In the
> current implementation the MMC controller is idle when dma_map_sg and
> dma_unmap_sg is processing. Introducing none blocking mmc request makes it
> possible to prepare the caches for next job parallel with an active
> mmc request.
> 
> This is done by making the issue_rw_rq() none blocking.
> The increase in throughput is proportional to the time it takes to
> prepare (major part of preparations is dma_map_sg and dma_unmap_sg)
> a request and how fast the memory is. The faster the MMC/SD is
> the more significant the prepare request time becomes. Measurements on U5500
> and Panda on eMMC and SD shows significant performance gain for for large
> reads when running DMA mode. In the PIO case the performance is unchanged.
> 
> There are two optional hooks pre_req() and post_req() that the host driver
> may implement in order to move work to before and after the actual mmc_request
> function is called. In the DMA case pre_req() may do dma_map_sg() and prepare
> the dma descriptor and post_req runs the dma_unmap_sg.
> 
> Details on measurements from IOZone and mmc_test:
> https://wiki.linaro.org/WorkingGroups/Kernel/Specs/StoragePerfMMC-async-req
> 
> Under consideration:
> * Make pre_req and post_req private to core.c.
> * Generalize implementation and make it available for SDIO. 
> 
> Changes since v2:
> * Fix compile warnings in core.c and block.c
> * Simplify max transfer size in mmc_test
> * set TASK_RUNNING in queue.c before issue_req()
> 
> Per Forlin (12):
>  mmc: add none blocking mmc request function
>  mmc: mmc_test: add debugfs file to list all tests
>  mmc: mmc_test: add test for none blocking transfers
>  mmc: add member in mmc queue struct to hold request data
>  mmc: add a block request prepare function
>  mmc: move error code in mmc_block_issue_rw_rq to a separate function.
>  mmc: add a second mmc queue request member
>  mmc: add handling for two parallel block requests in issue_rw_rq
>  mmc: test: add random fault injection in core.c
>  omap_hsmmc: use original sg_len for dma_unmap_sg
>  omap_hsmmc: add support for pre_req and post_req
>  mmci: implement pre_req() and post_req()
> 
> drivers/mmc/card/block.c  |  493 +++--
> drivers/mmc/card/mmc_test.c   |  340 +++-
> drivers/mmc/card/queue.c  |  180 ++--
> drivers/mmc/card/queue.h  |   31 ++-
> drivers/mmc/core/core.c   |  132 ++-
> drivers/mmc/core/debugfs.c|5 +
> drivers/mmc/host/mmci.c   |  146 +++-
> drivers/mmc/host/mmci.h   |8 +
> drivers/mmc/host/omap_hsmmc.c |   90 +++-
> include/linux/mmc/core.h  |9 +-
> include/linux/mmc/host.h  |   13 +-
> lib/Kconfig.debug |   11 +
> 12 files changed, 1174 insertions(+), 284 deletions(-)
> 
> -- 
> 1.7.4.1
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


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