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

2011-05-07 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/mm

[PATCH v3 07/12] mmc: add a second mmc queue request member

2011-05-07 Thread Per Forlin
Add an additional mmc queue request instance to make way for two active block requests. One request may be active while the other request is being prepared. Signed-off-by: Per Forlin --- drivers/mmc/card/queue.c | 44 ++-- drivers/mmc/card/queue.h |3

[PATCH v3 06/12] mmc: move error code in mmc_block_issue_rw_rq to a separate function.

2011-05-07 Thread Per Forlin
Break out code without functional changes. This simplifies the code and makes way for handle two parallel request. Signed-off-by: Per Forlin --- drivers/mmc/card/block.c | 225 +++--- 1 files changed, 132 insertions(+), 93 deletions(-) diff --git a/drive

[PATCH v3 05/12] mmc: add a block request prepare function

2011-05-07 Thread Per Forlin
Break out code from mmc_blk_issue_rw_rq to create a block request prepare function. This doesn't change any functionallity. This helps when handling more than one active block request. Signed-off-by: Per Forlin --- drivers/mmc/card/block.c | 170 - 1

[PATCH v3 03/12] mmc: mmc_test: add test for none blocking transfers

2011-05-07 Thread Per Forlin
Add four tests for read and write performance per different transfer size, 4k to 4M. * Read using blocking mmc request * Read using none blocking mmc request * Write using blocking mmc request * Write using none blocking mmc request The host dirver must support pre_req() and post_req() in orde

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

2011-05-07 Thread Per Forlin
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..c1c

[PATCH v3 01/12] mmc: add none blocking mmc request function

2011-05-07 Thread Per Forlin
Previously there has only been one function mmc_wait_for_req to start and wait for a request. This patch adds * mmc_start_req - starts a request wihtout waiting * mmc_wait_for_req_done - waits until request is done * mmc_pre_req - asks the host driver to prepare for the next job * mmc_post_req

[PATCH v3 08/12] mmc: add handling for two parallel block requests in issue_rw_rq

2011-05-07 Thread Per Forlin
Change mmc_blk_issue_rw_rq() to become asynchronous. The execution flow looks like this: The mmc-queue calls issue_rw_rq(), which sends the request to the host and returns back to the mmc-queue. The mmc-queue calls isuue_rw_rq() again with a new request. This new request is prepared, in isuue_rw_rq

[PATCH v3 10/12] omap_hsmmc: use original sg_len for dma_unmap_sg

2011-05-07 Thread Per Forlin
Don't use the returned sg_len from dma_map_sg() as inparameter to dma_unmap_sg(). Use the original sg_len for both dma_map_sg and dma_unmap_sg. Signed-off-by: Per Forlin --- drivers/mmc/host/omap_hsmmc.c |5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/mmc/hos

[PATCH v3 12/12] mmci: implement pre_req() and post_req()

2011-05-07 Thread Per Forlin
pre_req() runs dma_map_sg() and prepares the dma descriptor for the next mmc data transfer. post_req() runs dma_unmap_sg. If not calling pre_req() before mmci_request(), mmci_request() will prepare the cache and dma just like it did it before. It is optional to use pre_req() and post_req() for mmci

[PATCH v3 11/12] omap_hsmmc: add support for pre_req and post_req

2011-05-07 Thread Per Forlin
pre_req() runs dma_map_sg() post_req() runs dma_unmap_sg. If not calling pre_req() before omap_hsmmc_request(), request() will prepare the cache just like it did it before. It is optional to use pre_req() and post_req(). Signed-off-by: Per Forlin --- drivers/mmc/host/omap_hsmmc.c | 87

[PATCH v3 09/12] mmc: test: add random fault injection in core.c

2011-05-07 Thread Per Forlin
This simple fault injection proved to be very useful to test the error handling in the block.c rw_rq(). It may still be useful to test if the host driver handle pre_req() and post_req() correctly in case of errors. Signed-off-by: Per Forlin --- drivers/mmc/core/core.c| 54 +

[PATCH v3 04/12] mmc: add member in mmc queue struct to hold request data

2011-05-07 Thread Per Forlin
The way the request data is organized in the mmc queue struct it only allows processing of one request at the time. This patch adds a new struct to hold mmc queue request data such as sg list, request, blk request and bounce buffers, and updates any functions depending on the mmc queue struct. This

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

2011-05-07 Thread Per Forlin
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

Re: mmc blkqueue is empty even if there are pending reads in do_generic_file_read()

2011-05-07 Thread Per Forlin
On 4 May 2011 21:13, Per Forlin wrote: > On 3 May 2011 22:02, Arnd Bergmann wrote: >> On Tuesday 03 May 2011 20:54:43 Per Forlin wrote: >>> >> page_not_up_to_date: >>> >> /* Get exclusive access to the page ... */ >>> >> error = lock_page_killable(page); >>> > I looked at the code in do_generic_f