On 16 June 2011 15:14, S, Venkatraman wrote:
> On Thu, May 26, 2011 at 3:27 AM, Per Forlin wrote:
>> pre_req() runs dma_map_sg(), post_req() runs dma_unmap_sg.
>> If not calling pre_req() before omap_hsmmc_request()
>> dma_map_sg will be issued before starting the transfer.
On 16 June 2011 15:16, S, Venkatraman wrote:
> On Thu, May 26, 2011 at 3:27 AM, Per Forlin wrote:
>> 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.
>&
On 16 June 2011 15:39, S, Venkatraman wrote:
> On Thu, May 26, 2011 at 3:27 AM, 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
>>
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 according to the documentation in DMA-API.txt.
Signed-off-by: Per Forlin
Reviewed-by: Venkatraman S
---
drivers/mmc/host/omap_hsmmc.c |5 +++
measurements from IOZone and mmc_test:
https://wiki.linaro.org/WorkingGroups/Kernel/Specs/StoragePerfMMC-async-req
Changes since v4:
* rebase on top of linux 3.0
Per Forlin (12):
mmc: add none blocking mmc request function
omap_hsmmc: use original sg_len for dma_unmap_sg
omap_hsmmc: add support
before ending the block
request and handing over the buffer to the block layer.
Add a host-private member in mmc_data to be used by
pre_req to mark the data. The host driver will then
check this mark to see if the data is prepared or not.
Signed-off-by: Per Forlin
---
drivers/mmc/core/core.c
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 according to the documentation in DMA-API.txt.
Signed-off-by: Per Forlin
Reviewed-by: Venkatraman S
---
drivers/mmc/host/omap_hsmmc.c |5 +++
pre_req() runs dma_map_sg(), post_req() runs dma_unmap_sg.
If not calling pre_req() before omap_hsmmc_request()
dma_map_sg will be issued before starting the transfer.
It is optional to use pre_req(). If issuing pre_req()
post_req() must be to be called as well.
Signed-off-by: Per Forlin
mmci.
Signed-off-by: Per Forlin
---
drivers/mmc/host/mmci.c | 146 ++
drivers/mmc/host/mmci.h |8 +++
2 files changed, 141 insertions(+), 13 deletions(-)
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c
index 7721de9..8b21467 100644
Add a debugfs file "testlist" to print all available tests
Signed-off-by: Per Forlin
---
drivers/mmc/card/mmc_test.c | 39 ++-
1 files changed, 38 insertions(+), 1 deletions(-)
diff --git a/drivers/mmc/card/mmc_test.c b/drivers/mmc/card/mmc_te
order to run the none blocking test cases.
Signed-off-by: Per Forlin
---
drivers/mmc/card/mmc_test.c | 322 +--
1 files changed, 313 insertions(+), 9 deletions(-)
diff --git a/drivers/mmc/card/mmc_test.c b/drivers/mmc/card/mmc_test.c
index e8508e9..19e1132
. This lies the ground for
using multiple active request for one mmc queue.
Signed-off-by: Per Forlin
---
drivers/mmc/card/block.c | 125 +---
drivers/mmc/card/queue.c | 129 --
drivers/mmc/card/queue.h | 31
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 | 224 ---
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 | 246 ++---
1 files changed, 142 insertions(+), 104 deletions(-)
diff --git a
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
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
isuue_rw_rq(), then it waits for the active request to complete before
pushing it to the host. When to mmc-queue is empty it will call
isuue_rw_rq() with req=NULL to finish off the active request
without starting a new request.
Signed-off-by: Per Forlin
---
drivers/mmc/card/block.c | 121
measurements from IOZone and mmc_test:
https://wiki.linaro.org/WorkingGroups/Kernel/Specs/StoragePerfMMC-async-req
Changes since v5:
* Fix spelling mistakes, replace "none blocking" with non-blocking.
* excluded patch "omap_hsmmc: use original sg_len..." since it is
being mer
before ending the block
request and handing over the buffer to the block layer.
Add a host-private member in mmc_data to be used by
pre_req to mark the data. The host driver will then
check this mark to see if the data is prepared or not.
Signed-off-by: Per Forlin
---
drivers/mmc/core/core.c
mmci.
Signed-off-by: Per Forlin
---
drivers/mmc/host/mmci.c | 146 ++
drivers/mmc/host/mmci.h |8 +++
2 files changed, 141 insertions(+), 13 deletions(-)
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c
index b4a7e4f..985c77d 100644
pre_req() runs dma_map_sg(), post_req() runs dma_unmap_sg.
If not calling pre_req() before omap_hsmmc_request()
dma_map_sg will be issued before starting the transfer.
It is optional to use pre_req(). If issuing pre_req()
post_req() must be to be called as well.
Signed-off-by: Per Forlin
to run the non-blocking test cases.
Signed-off-by: Per Forlin
---
drivers/mmc/card/mmc_test.c | 322 +--
1 files changed, 313 insertions(+), 9 deletions(-)
diff --git a/drivers/mmc/card/mmc_test.c b/drivers/mmc/card/mmc_test.c
index e8508e9..5325049
Add a debugfs file "testlist" to print all available tests
Signed-off-by: Per Forlin
---
drivers/mmc/card/mmc_test.c | 39 ++-
1 files changed, 38 insertions(+), 1 deletions(-)
diff --git a/drivers/mmc/card/mmc_test.c b/drivers/mmc/card/mmc_te
. This lies the ground for
using multiple active request for one mmc queue.
Signed-off-by: Per Forlin
---
drivers/mmc/card/block.c | 125 +---
drivers/mmc/card/queue.c | 129 --
drivers/mmc/card/queue.h | 31
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 | 224 ---
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 | 246 ++---
1 files changed, 142 insertions(+), 104 deletions(-)
diff --git a
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
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
isuue_rw_rq(), then it waits for the active request to complete before
pushing it to the host. When to mmc-queue is empty it will call
isuue_rw_rq() with req=NULL to finish off the active request
without starting a new request.
Signed-off-by: Per Forlin
---
drivers/mmc/card/block.c | 121
On 20 June 2011 17:17, Kishore Kadiyala wrote:
> On Mon, Jun 20, 2011 at 2:47 AM, Per Forlin wrote:
>> 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 h
On 21 June 2011 07:41, Kishore Kadiyala wrote:
>
>
>> +
>> +static void omap_hsmmc_pre_req(struct mmc_host *mmc, struct mmc_request
>> *mrq,
>> + bool is_first_req)
>
> I don't see the usage of "is_first_req" below.
> Is it required?
>
It is not required. It is only
On 21 June 2011 08:40, Per Forlin wrote:
> On 20 June 2011 17:17, Kishore Kadiyala wrote:
>> On Mon, Jun 20, 2011 at 2:47 AM, Per Forlin wrote:
>>> Change mmc_blk_issue_rw_rq() to become asynchronous.
>>> The execution flow looks like this:
>>> The mmc-queue
On 19 June 2011 23:17, Per Forlin wrote:
> 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
> issue_rw_rq() a
On 21 June 2011 09:53, Russell King - ARM Linux wrote:
> On Sun, Jun 19, 2011 at 11:17:26PM +0200, Per Forlin wrote:
>> How significant is the cache maintenance over head?
>
> Per,
>
> Can you measure how much difference this has before and after your
> patch set please?
A
On 21 June 2011 10:09, Per Forlin wrote:
> On 21 June 2011 09:53, Russell King - ARM Linux
> wrote:
>> On Sun, Jun 19, 2011 at 11:17:26PM +0200, Per Forlin wrote:
>>> How significant is the cache maintenance over head?
>>
>> Per,
>>
>> Can you me
mmci.
Signed-off-by: Per Forlin
---
drivers/mmc/host/mmci.c | 146 ++
drivers/mmc/host/mmci.h |8 +++
2 files changed, 141 insertions(+), 13 deletions(-)
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c
index 6e27433..f8c837b 100644
to run the non-blocking test cases.
Signed-off-by: Per Forlin
---
drivers/mmc/card/mmc_test.c | 322 +--
1 files changed, 313 insertions(+), 9 deletions(-)
diff --git a/drivers/mmc/card/mmc_test.c b/drivers/mmc/card/mmc_test.c
index 1853ebf..b0f9b00
Add a debugfs file "testlist" to print all available tests
Signed-off-by: Per Forlin
---
drivers/mmc/card/mmc_test.c | 39 ++-
1 files changed, 38 insertions(+), 1 deletions(-)
diff --git a/drivers/mmc/card/mmc_test.c b/drivers/mmc/card/mmc_te
pre_req() runs dma_map_sg(), post_req() runs dma_unmap_sg.
If not calling pre_req() before omap_hsmmc_request()
dma_map_sg will be issued before starting the transfer.
It is optional to use pre_req(). If issuing pre_req()
post_req() must be to be called as well.
Signed-off-by: Per Forlin
running tests on ext4 with discard enable.
The test procedure is documented here:
https://wiki.linaro.org/WorkingGroups/Kernel/Specs/StoragePerfMMC-async-req#Liability_test
* Resolved bug by preventing mmc async request run in parallel
to discard (mmc_erase).
Per Forlin (11):
mmc: add non
before ending the block
request and handing over the buffer to the block layer.
Add a host-private member in mmc_data to be used by
pre_req to mark the data. The host driver will then
check this mark to see if the data is prepared or not.
Signed-off-by: Per Forlin
---
drivers/mmc/core/core.c
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 | 226 +++---
1 files changed, 132 insertions(+), 94 deletions(-)
diff --git a
. This lies the ground for
using multiple active request for one mmc queue.
Signed-off-by: Per Forlin
---
drivers/mmc/card/block.c | 106 ++
drivers/mmc/card/queue.c | 129 --
drivers/mmc/card/queue.h | 30
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
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
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 ---
isuue_rw_rq(), then it waits for the active request to complete before
pushing it to the host. When to mmc-queue is empty it will call
isuue_rw_rq() with req=NULL to finish off the active request
without starting a new request.
Signed-off-by: Per Forlin
---
drivers/mmc/card/block.c | 120
On 21 June 2011 21:18, Nicolas Pitre wrote:
> On Tue, 21 Jun 2011, Per Forlin wrote:
>
>> On 21 June 2011 07:41, Kishore Kadiyala wrote:
>> >
>> >
>> >> +
>> >> +static void omap_hsmmc_pre_req(struct mmc_host *mmc, struct mmc_request
On 20 June 2011 17:17, Kishore Kadiyala wrote:
> On Mon, Jun 20, 2011 at 2:47 AM, Per Forlin wrote:
>> 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 h
before ending the block
request and handing over the buffer to the block layer.
Add a host-private member in mmc_data to be used by
pre_req to mark the data. The host driver will then
check this mark to see if the data is prepared or not.
Signed-off-by: Per Forlin
---
drivers/mmc/core/core.c
mmci.
Signed-off-by: Per Forlin
---
drivers/mmc/host/mmci.c | 146 ++
drivers/mmc/host/mmci.h |8 +++
2 files changed, 141 insertions(+), 13 deletions(-)
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c
index 6e27433..f8c837b 100644
://wiki.linaro.org/WorkingGroups/Kernel/Specs/StoragePerfMMC-async-req#Liability_test
* Resolved bug by preventing mmc async request run in parallel
to discard (mmc_erase).
Per Forlin (11):
mmc: add non-blocking mmc request function
omap_hsmmc: add support for pre_req and post_req
mmci
pre_req() runs dma_map_sg(), post_req() runs dma_unmap_sg.
If not calling pre_req() before omap_hsmmc_request()
dma_map_sg will be issued before starting the transfer.
It is optional to use pre_req(). If issuing pre_req()
post_req() must be to be called as well.
Signed-off-by: Per Forlin
to run the non-blocking test cases.
Signed-off-by: Per Forlin
---
drivers/mmc/card/mmc_test.c | 322 +--
1 files changed, 313 insertions(+), 9 deletions(-)
diff --git a/drivers/mmc/card/mmc_test.c b/drivers/mmc/card/mmc_test.c
index e8508e9..5325049
Add a debugfs file "testlist" to print all available tests
Signed-off-by: Per Forlin
---
drivers/mmc/card/mmc_test.c | 39 ++-
1 files changed, 38 insertions(+), 1 deletions(-)
diff --git a/drivers/mmc/card/mmc_test.c b/drivers/mmc/card/mmc_te
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 |
. This lies the ground for
using multiple active request for one mmc queue.
Signed-off-by: Per Forlin
---
drivers/mmc/card/block.c | 125 +---
drivers/mmc/card/queue.c | 129 --
drivers/mmc/card/queue.h | 31
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
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 | 244 +++---
1 files changed, 142 insertions(+), 102 deletions(-)
diff --git a
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
isuue_rw_rq(), then it waits for the active request to complete before
pushing it to the host. When to mmc-queue is empty it will call
isuue_rw_rq() with req=NULL to finish off the active request
without starting a new request.
Signed-off-by: Per Forlin
---
drivers/mmc/card/block.c | 124
On 22 June 2011 09:42, Venkatraman S wrote:
> On Wed, Jun 22, 2011 at 5:08 AM, Per Forlin wrote:
>> 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 waitin
On 22 June 2011 10:53, S, Venkatraman wrote:
> On Wed, Jun 22, 2011 at 2:15 PM, Per Forlin wrote:
>> On 22 June 2011 09:42, Venkatraman S wrote:
>>> On Wed, Jun 22, 2011 at 5:08 AM, Per Forlin wrote:
>>>> Previously there has only been one function mmc_wait_for_re
please clarify or show
me your build log?
I don't see how host->next_data.cookie is connected to DMA_ENGINE.
> On Wed, Jun 22, 2011 at 2:38 AM, Per Forlin wrote:
>>
>> @@ -2077,6 +2155,7 @@ static int __init omap_hsmmc_probe(struct
>> platform_device *pdev)
>&g
On 22 June 2011 11:31, Per Forlin wrote:
> On 22 June 2011 10:51, Nickolay Nickolaev wrote:
>> Hello,
>>
>> this one's causing me compilation trouble troubles when CONFIG_DMA_ENGINE is
>> not defined.
>>
> I don't see this issue when I
On 22 June 2011 01:38, Per Forlin wrote:
> 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
From: Per Forlin
Move dmaengine dependent host->next_data variable from mmci_probe to
mmci_dma_setup. The mmci fails to compile without CONFIG_DMA_ENGINE
if using next_data in mmci_probe.
Signed-off-by: Per Forlin
---
drivers/mmc/host/mmci.c |5 +++--
1 files changed, 3 insertions(+)
On 23 June 2011 15:37, Russell King - ARM Linux wrote:
> On Tue, Jun 21, 2011 at 11:26:27AM +0200, Per Forlin wrote:
>> Here are the results.
>
> It looks like this patch is either a no-op or slightly worse. As
> people have been telling me that dsb is rather expensive, and th
add missing mmc_test_wait_busy() to the check_result_async(). Host drivers
may fail it not waiting for busy state to go away before starting
the next transaction.
Signed-off-by: Per Forlin
---
drivers/mmc/card/mmc_test.c |3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a
On 24 June 2011 10:58, Per Forlin wrote:
> On 23 June 2011 15:37, Russell King - ARM Linux
> wrote:
>> On Tue, Jun 21, 2011 at 11:26:27AM +0200, Per Forlin wrote:
>>> Here are the results.
>>
>> It looks like this patch is either a no-op or slightly worse.
On 27 June 2011 12:02, Russell King - ARM Linux wrote:
> On Mon, Jun 27, 2011 at 11:42:52AM +0200, Per Forlin wrote:
>> Conclusion:
>> Working with mmc the relative cost of DSB is almost none. There seems
>> to be slightly higher number for mmc blocking requests with the DSB
Add a debugfs file "testlist" to print all available tests
Signed-off-by: Per Forlin
---
drivers/mmc/card/mmc_test.c | 39 ++-
1 files changed, 38 insertions(+), 1 deletions(-)
diff --git a/drivers/mmc/card/mmc_test.c b/drivers/mmc/card/mmc_te
mmci
* Add mmc test to measure how performance is affected by sg length
* Add missing wait_for_busy in mmc_test non-blocking test. This call got lost
in v4 of this patchset when refactoring mmc_start_req.
* Add sub-prefix (core block queue) to relevant patches.
Per Forlin (12):
mmc: core: ad
pre_req() runs dma_map_sg(), post_req() runs dma_unmap_sg.
If not calling pre_req() before omap_hsmmc_request()
dma_map_sg will be issued before starting the transfer.
It is optional to use pre_req(). If issuing pre_req()
post_req() must be to be called as well.
Signed-off-by: Per Forlin
before ending the block
request and handing over the buffer to the block layer.
Add a host-private member in mmc_data to be used by
pre_req to mark the data. The host driver will then
check this mark to see if the data is prepared or not.
Signed-off-by: Per Forlin
---
drivers/mmc/core/core.c
test that measures how the mmc bandwidth depends on the numbers of sg elements
in the sg list. The transfer size if fixed and sg length goes from a few up
to 512. The purpose is to measure overhead caused by multiple sg elements.
Signed-off-by: Per Forlin
---
drivers/mmc/card/mmc_test.c | 151
mmci.
Signed-off-by: Per Forlin
---
drivers/mmc/host/mmci.c | 147 ++
drivers/mmc/host/mmci.h |8 +++
2 files changed, 142 insertions(+), 13 deletions(-)
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c
index b4a7e4f..6ed6770 100644
to run the non-blocking test cases.
Signed-off-by: Per Forlin
---
drivers/mmc/card/mmc_test.c | 311 +-
1 files changed, 303 insertions(+), 8 deletions(-)
diff --git a/drivers/mmc/card/mmc_test.c b/drivers/mmc/card/mmc_test.c
index e8508e9..466a192
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
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 |
. This lies the ground for
using multiple active request for one mmc queue.
Signed-off-by: Per Forlin
---
drivers/mmc/card/block.c | 109 ++-
drivers/mmc/card/queue.c | 129 --
drivers/mmc/card/queue.h | 31
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
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 | 220 +++---
1 files changed, 131 insertions(+), 89 deletions(-)
diff --git a
isuue_rw_rq(), then it waits for the active request to complete before
pushing it to the host. When to mmc-queue is empty it will call
isuue_rw_rq() with req=NULL to finish off the active request
without starting a new request.
Signed-off-by: Per Forlin
---
drivers/mmc/card/block.c | 80
On 28 June 2011 10:11, Per Forlin wrote:
> 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
> issue_rw_rq() a
On 28 June 2011 10:11, Per Forlin wrote:
> Add four tests for read and write performance per
> different transfer size, 4k to 4M.
> * Read using blocking mmc request
> * Read using non-blocking mmc request
> * Write using blocking mmc request
> * Write using non-blocking m
On 28 June 2011 10:11, Per Forlin wrote:
> test that measures how the mmc bandwidth depends on the numbers of sg elements
> in the sg list. The transfer size if fixed and sg length goes from a few up
> to 512. The purpose is to measure overhead caused by multiple sg elements.
>
>
before ending the block
request and handing over the buffer to the block layer.
Add a host-private member in mmc_data to be used by
pre_req to mark the data. The host driver will then
check this mark to see if the data is prepared or not.
Signed-off-by: Per Forlin
Acked-by: Kyungmin Park
Acked-by
,
* allow non-blocking test even if pre/post is not implemented,
* return error if only one of pre or post is implemented.
Per Forlin (12):
mmc: core: add non-blocking mmc request function
omap_hsmmc: add support for pre_req and post_req
mmci: implement pre_req() and post_req()
mmc
mmci.
Signed-off-by: Per Forlin
Tested-by: Linus Walleij
---
drivers/mmc/host/mmci.c | 147 ++
drivers/mmc/host/mmci.h |8 +++
2 files changed, 142 insertions(+), 13 deletions(-)
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c
index
pre_req() runs dma_map_sg(), post_req() runs dma_unmap_sg.
If not calling pre_req() before omap_hsmmc_request()
dma_map_sg will be issued before starting the transfer.
It is optional to use pre_req(). If issuing pre_req()
post_req() must be to be called as well.
Signed-off-by: Per Forlin
Add a debugfs file "testlist" to print all available tests
Signed-off-by: Per Forlin
Acked-by: Kyungmin Park
Acked-by: Arnd Bergmann
Reviewed-by: Venkatraman S
Tested-by: Sourav Poddar
Tested-by: Linus Walleij
---
drivers/mmc/card/mmc_test.c | 39
to run the non-blocking test cases.
Signed-off-by: Per Forlin
Acked-by: Kyungmin Park
Acked-by: Arnd Bergmann
Reviewed-by: Venkatraman S
Tested-by: Sourav Poddar
Tested-by: Linus Walleij
---
drivers/mmc/card/mmc_test.c | 318 +-
1 files changed, 310
test that measures how the mmc bandwidth depends on the numbers of sg elements
in the sg list. The transfer size if fixed and sg length goes from a few up
to 512. The purpose is to measure overhead caused by multiple sg elements.
Signed-off-by: Per Forlin
Acked-by: Kyungmin Park
Acked-by: Arnd
Break out code without functional changes. This simplifies the code and
makes way for handle two parallel request.
Signed-off-by: Per Forlin
Acked-by: Kyungmin Park
Acked-by: Arnd Bergmann
Reviewed-by: Venkatraman S
Tested-by: Sourav Poddar
Tested-by: Linus Walleij
---
drivers/mmc/card
. This lies the ground for
using multiple active request for one mmc queue.
Signed-off-by: Per Forlin
Acked-by: Kyungmin Park
Acked-by: Arnd Bergmann
Reviewed-by: Venkatraman S
Tested-by: Sourav Poddar
Tested-by: Linus Walleij
---
drivers/mmc/card/block.c | 109
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
Acked-by: Kyungmin Park
Acked-by: Arnd Bergmann
Reviewed-by: Venkatraman S
Tested-by: Sourav Poddar
Tested-by
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
Acked-by: Kyungmin Park
Acked-by: Arnd Bergmann
Reviewed-by: Venkatraman S
T
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
Acked-by: Kyungmin Park
Acked-by: Arnd Bergmann
isuue_rw_rq(), then it waits for the active request to complete before
pushing it to the host. When to mmc-queue is empty it will call
isuue_rw_rq() with req=NULL to finish off the active request
without starting a new request.
Signed-off-by: Per Forlin
Acked-by: Kyungmin Park
Acked-by: Arnd Bergmann
1 - 100 of 327 matches
Mail list logo