2008-06-06 15:31:35

by Nicolas Ferre

[permalink] [raw]
Subject: mmc_test : some results

Hi Pierre,

Here are the results of a mmc_test run played on at91_mci after applying
this patch series :
http://lkml.org/lkml/2008/5/30/201

I skipped some of the tests just to concentrate on those ones.

Can you tell me if the test is correct : are the errors reported for the
xfer_size tests the normal behavior (I assume yes because a failure is
simulated) ?

~ # echo 1 > /sys/class/mmc_host/mmc0/mmc0\:e624/test
mmc0: Starting tests of card mmc0:e624...
mmc0: Test case 1. Basic write (no data verification)...
mmc0: Result: OK
mmc0: Test case 2. Basic read (no data verification)...
mmc0: Result: OK
mmc0: Test case 3. Basic write (with data verification)...
mmc0: Result: OK
mmc0: Test case 4. Basic read (with data verification)...
mmc0: Result: OK
mmc0: Test case 5. Multi-block write...
mmc0: Result: OK
mmc0: Test case 6. Multi-block read...
mmc0: Result: OK
mmc0: Test case 7. Correct xfer_size at write (start failure)...
mmc0: Result: ERROR (-84)
mmc0: Test case 8. Correct xfer_size at read (start failure)...
mmc0: Result: ERROR (-110)
mmc0: Test case 9. Correct xfer_size at write (midway failure)...
mmc0: Result: ERROR (-84)
mmc0: Test case 10. Correct xfer_size at read (midway failure)...
mmc0: Result: ERROR (-110)
mmc0: Tests completed.
~ #

Thanks, regards,
--
Nicolas Ferre


2008-06-09 06:04:35

by Gururaja Hebbar K R

[permalink] [raw]
Subject: RE: mmc_test : some results

Hi Nicolas,

Could you please be kind enough to share the test program so that we can
test mmc driver on other platforms.

i have a customized arm9 versatile board with mmci controller and
would like to test the same

TIA,

Regards
Gururaja


-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of
Nicolas Ferre
Sent: Friday, June 06, 2008 8:31 AM
To: Pierre Ossman; ARM Linux Mailing List; Linux Kernel list
Subject: mmc_test : some results

Hi Pierre,

Here are the results of a mmc_test run played on at91_mci after applying
this patch series :
http://lkml.org/lkml/2008/5/30/201

I skipped some of the tests just to concentrate on those ones.

Can you tell me if the test is correct : are the errors reported for the
xfer_size tests the normal behavior (I assume yes because a failure is
simulated) ?

~ # echo 1 > /sys/class/mmc_host/mmc0/mmc0\:e624/test
mmc0: Starting tests of card mmc0:e624...
mmc0: Test case 1. Basic write (no data verification)...
mmc0: Result: OK
mmc0: Test case 2. Basic read (no data verification)...
mmc0: Result: OK
mmc0: Test case 3. Basic write (with data verification)...
mmc0: Result: OK
mmc0: Test case 4. Basic read (with data verification)...
mmc0: Result: OK
mmc0: Test case 5. Multi-block write...
mmc0: Result: OK
mmc0: Test case 6. Multi-block read...
mmc0: Result: OK
mmc0: Test case 7. Correct xfer_size at write (start failure)...
mmc0: Result: ERROR (-84)
mmc0: Test case 8. Correct xfer_size at read (start failure)...
mmc0: Result: ERROR (-110)
mmc0: Test case 9. Correct xfer_size at write (midway failure)...
mmc0: Result: ERROR (-84)
mmc0: Test case 10. Correct xfer_size at read (midway failure)...
mmc0: Result: ERROR (-110)
mmc0: Tests completed.
~ #

Thanks, regards,
--
Nicolas Ferre


-------------------------------------------------------------------
List admin:
http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel
FAQ: http://www.arm.linux.org.uk/mailinglists/faq.php
Etiquette: http://www.arm.linux.org.uk/mailinglists/etiquette.php

2008-06-09 07:55:01

by Nicolas Ferre

[permalink] [raw]
Subject: Re: mmc_test : some results

Gururaja Hebbar K R :
> Hi Nicolas,
>
> Could you please be kind enough to share the test program so that we can
> test mmc driver on other platforms.

mmc_test is included in the mainline kernel :
http://lkml.org/lkml/2008/5/17/45

I just selected the tests I wanted to use in the source code (in
mmc_test_cases tab).

Cheers,
--
Nicolas Ferre

2008-06-09 11:09:35

by Pierre Ossman

[permalink] [raw]
Subject: Re: mmc_test : some results

On Fri, 06 Jun 2008 17:31:15 +0200
Nicolas Ferre <[email protected]> wrote:

> Hi Pierre,
>
> Here are the results of a mmc_test run played on at91_mci after applying
> this patch series :
> http://lkml.org/lkml/2008/5/30/201
>
> I skipped some of the tests just to concentrate on those ones.
>
> Can you tell me if the test is correct : are the errors reported for the
> xfer_size tests the normal behavior (I assume yes because a failure is
> simulated) ?

No. You're supposed to get an OK there as well. Basically it tests that
the driver doesn't report some unexpected error (-ETIMEDOUT is the
desired one) or overreports the number of written bytes.
>
> ~ # echo 1 > /sys/class/mmc_host/mmc0/mmc0\:e624/test

FYI, I've added some changes that will make that invocation only run
test 1. Do echo "" for all tests in the future.

Rgds
Pierre


Attachments:
signature.asc (197.00 B)

2008-06-10 09:27:56

by Nicolas Ferre

[permalink] [raw]
Subject: [PATCH] at91_mci: manage cmd error and data error independently

In at91_mci_completed_command() function, this patch distinguishes
command error and data error. It reports it in the corresponding
error field.

Signed-off-by: Nicolas Ferre <[email protected]>
---
Related to this thread :

Pierre Ossman :

> On Fri, 06 Jun 2008 17:31:15 +0200
> Nicolas Ferre <[email protected]> wrote:
>
>
>> Hi Pierre,
>>
>> Here are the results of a mmc_test run played on at91_mci after applying
>> this patch series :
>> http://lkml.org/lkml/2008/5/30/201
>>
>> I skipped some of the tests just to concentrate on those ones.
>>
>> Can you tell me if the test is correct : are the errors reported for the
>> xfer_size tests the normal behavior (I assume yes because a failure is
>> simulated) ?
>>
>
> No. You're supposed to get an OK there as well. Basically it tests that
> the driver doesn't report some unexpected error (-ETIMEDOUT is the
> desired one) or overreports the number of written bytes.
>
Ok, so here is the first correction of the driver reporting the proper
values in read.

It goes on top of this series :
http://lkml.org/lkml/2008/5/30/201

drivers/mmc/host/at91_mci.c | 28 ++++++++++++++++++++--------
1 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/drivers/mmc/host/at91_mci.c b/drivers/mmc/host/at91_mci.c
index 9948fe1..86a3c5b 100644
--- a/drivers/mmc/host/at91_mci.c
+++ b/drivers/mmc/host/at91_mci.c
@@ -663,6 +664,7 @@ static void at91_mci_process_next(struct at91mci_host *host)
static void at91_mci_completed_command(struct at91mci_host *host, unsigned int status)
{
struct mmc_command *cmd = host->cmd;
+ struct mmc_data *data = cmd->data;

at91_mci_write(host, AT91_MCI_IDR, 0xffffffff & ~(AT91_MCI_SDIOIRQA | AT91_MCI_SDIOIRQB));

@@ -685,15 +687,25 @@ static void at91_mci_completed_command(struct at91mci_host *host, unsigned int s
cmd->error = 0;
}
else {
- if (status & (AT91_MCI_RTOE | AT91_MCI_DTOE))
- cmd->error = -ETIMEDOUT;
- else if (status & (AT91_MCI_RCRCE | AT91_MCI_DCRCE))
- cmd->error = -EILSEQ;
- else
- cmd->error = -EIO;
+ if (status & (AT91_MCI_DTOE | AT91_MCI_DCRCE)) {
+ if (data) {
+ if (status & AT91_MCI_DTOE)
+ data->error = -ETIMEDOUT;
+ else if (status & AT91_MCI_DCRCE)
+ data->error = -EILSEQ;
+ }
+ } else {
+ if (status & AT91_MCI_RTOE)
+ cmd->error = -ETIMEDOUT;
+ else if (status & AT91_MCI_RCRCE)
+ cmd->error = -EILSEQ;
+ else
+ cmd->error = -EIO;
+ }

- pr_debug("Error detected and set to %d (cmd = %d, retries = %d)\n",
- cmd->error, cmd->opcode, cmd->retries);
+ pr_debug("Error detected and set to %d/%d (cmd = %d, retries = %d)\n",
+ cmd->error, data ? data->error : 0,
+ cmd->opcode, cmd->retries);
}
}
else
--
1.5.3.7