* [PATCH] mmc: dw_mmc: Support predefined multiple block transfers.
@ 2011-09-26 9:15 Seungwon Jeon
2011-09-28 1:20 ` Seungwon Jeon
0 siblings, 1 reply; 10+ messages in thread
From: Seungwon Jeon @ 2011-09-26 9:15 UTC (permalink / raw)
To: linux-mmc; +Cc: linux-samsung-soc, Chris Ball, dh.han, Seungwon Jeon
This patch adds the support for predefined multiple block read/write.
Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com>
---
drivers/mmc/host/dw_mmc.c | 32 ++++++++++++++++++++++++++------
1 files changed, 26 insertions(+), 6 deletions(-)
diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index 0ed1d28..36a5576 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -588,11 +588,10 @@ static void dw_mci_setup_bus(struct dw_mci_slot *slot)
mci_writel(host, CTYPE, (slot->ctype << slot->id));
}
-static void dw_mci_start_request(struct dw_mci *host,
- struct dw_mci_slot *slot)
+static void __dw_mci_start_request(struct dw_mci *host,
+ struct dw_mci_slot *slot, struct mmc_command *cmd)
{
struct mmc_request *mrq;
- struct mmc_command *cmd;
struct mmc_data *data;
u32 cmdflags;
@@ -610,14 +609,13 @@ static void dw_mci_start_request(struct dw_mci *host,
host->completed_events = 0;
host->data_status = 0;
- data = mrq->data;
+ data = cmd->data;
if (data) {
dw_mci_set_timeout(host);
mci_writel(host, BYTCNT, data->blksz*data->blocks);
mci_writel(host, BLKSIZ, data->blksz);
}
- cmd = mrq->cmd;
cmdflags = dw_mci_prepare_command(slot->mmc, cmd);
/* this is the first command, send the initialization clock */
@@ -635,6 +633,16 @@ static void dw_mci_start_request(struct dw_mci *host,
host->stop_cmdr = dw_mci_prepare_command(slot->mmc, mrq->stop);
}
+static void dw_mci_start_request(struct dw_mci *host,
+ struct dw_mci_slot *slot)
+{
+ struct mmc_request *mrq = slot->mrq;
+ struct mmc_command *cmd;
+
+ cmd = mrq->sbc ? mrq->sbc : mrq->cmd;
+ __dw_mci_start_request(host, slot, cmd);
+}
+
/* must be called with host->lock held */
static void dw_mci_queue_request(struct dw_mci *host, struct dw_mci_slot *slot,
struct mmc_request *mrq)
@@ -889,7 +897,13 @@ static void dw_mci_tasklet_func(unsigned long priv)
cmd = host->cmd;
host->cmd = NULL;
set_bit(EVENT_CMD_COMPLETE, &host->completed_events);
- dw_mci_command_complete(host, host->mrq->cmd);
+ dw_mci_command_complete(host, cmd);
+ if ((cmd == host->mrq->sbc) && !cmd->error) {
+ prev_state = state = STATE_SENDING_CMD;
+ __dw_mci_start_request(host, host->cur_slot, host->mrq->cmd);
+ goto unlock;
+ }
+
if (!host->mrq->data || cmd->error) {
dw_mci_request_end(host, host->mrq);
goto unlock;
@@ -967,6 +981,12 @@ static void dw_mci_tasklet_func(unsigned long priv)
goto unlock;
}
+ if (host->mrq->sbc && !data->error) {
+ data->stop->error = 0;
+ dw_mci_request_end(host, host->mrq);
+ goto unlock;
+ }
+
prev_state = state = STATE_SENDING_STOP;
if (!data->error)
send_stop_cmd(host, data);
--
1.7.0.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH] mmc: dw_mmc: Support predefined multiple block transfers.
@ 2011-09-26 11:46 Seungwon Jeon
2011-09-26 16:35 ` Andrei Warkentin
0 siblings, 1 reply; 10+ messages in thread
From: Seungwon Jeon @ 2011-09-26 11:46 UTC (permalink / raw)
To: linux-mmc
Cc: 'Chris Ball', linux-samsung-soc, kgene.kim, dh.han,
'Seungwon Jeon'
This patch adds the support for predefined multiple block read/write.
Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com>
---
drivers/mmc/host/dw_mmc.c | 32 ++++++++++++++++++++++++++------
1 files changed, 26 insertions(+), 6 deletions(-)
diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index 0ed1d28..36a5576 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -588,11 +588,10 @@ static void dw_mci_setup_bus(struct dw_mci_slot *slot)
mci_writel(host, CTYPE, (slot->ctype << slot->id));
}
-static void dw_mci_start_request(struct dw_mci *host,
- struct dw_mci_slot *slot)
+static void __dw_mci_start_request(struct dw_mci *host,
+ struct dw_mci_slot *slot, struct mmc_command *cmd)
{
struct mmc_request *mrq;
- struct mmc_command *cmd;
struct mmc_data *data;
u32 cmdflags;
@@ -610,14 +609,13 @@ static void dw_mci_start_request(struct dw_mci *host,
host->completed_events = 0;
host->data_status = 0;
- data = mrq->data;
+ data = cmd->data;
if (data) {
dw_mci_set_timeout(host);
mci_writel(host, BYTCNT, data->blksz*data->blocks);
mci_writel(host, BLKSIZ, data->blksz);
}
- cmd = mrq->cmd;
cmdflags = dw_mci_prepare_command(slot->mmc, cmd);
/* this is the first command, send the initialization clock */
@@ -635,6 +633,16 @@ static void dw_mci_start_request(struct dw_mci *host,
host->stop_cmdr = dw_mci_prepare_command(slot->mmc, mrq->stop);
}
+static void dw_mci_start_request(struct dw_mci *host,
+ struct dw_mci_slot *slot)
+{
+ struct mmc_request *mrq = slot->mrq;
+ struct mmc_command *cmd;
+
+ cmd = mrq->sbc ? mrq->sbc : mrq->cmd;
+ __dw_mci_start_request(host, slot, cmd);
+}
+
/* must be called with host->lock held */
static void dw_mci_queue_request(struct dw_mci *host, struct dw_mci_slot *slot,
struct mmc_request *mrq)
@@ -889,7 +897,13 @@ static void dw_mci_tasklet_func(unsigned long priv)
cmd = host->cmd;
host->cmd = NULL;
set_bit(EVENT_CMD_COMPLETE, &host->completed_events);
- dw_mci_command_complete(host, host->mrq->cmd);
+ dw_mci_command_complete(host, cmd);
+ if ((cmd == host->mrq->sbc) && !cmd->error) {
+ prev_state = state = STATE_SENDING_CMD;
+ __dw_mci_start_request(host, host->cur_slot, host->mrq->cmd);
+ goto unlock;
+ }
+
if (!host->mrq->data || cmd->error) {
dw_mci_request_end(host, host->mrq);
goto unlock;
@@ -967,6 +981,12 @@ static void dw_mci_tasklet_func(unsigned long priv)
goto unlock;
}
+ if (host->mrq->sbc && !data->error) {
+ data->stop->error = 0;
+ dw_mci_request_end(host, host->mrq);
+ goto unlock;
+ }
+
prev_state = state = STATE_SENDING_STOP;
if (!data->error)
send_stop_cmd(host, data);
--
1.7.0.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH] mmc: dw_mmc: Support predefined multiple block transfers.
2011-09-26 11:46 [PATCH] mmc: dw_mmc: Support predefined multiple block transfers Seungwon Jeon
@ 2011-09-26 16:35 ` Andrei Warkentin
2011-09-27 2:12 ` Seungwon Jeon
0 siblings, 1 reply; 10+ messages in thread
From: Andrei Warkentin @ 2011-09-26 16:35 UTC (permalink / raw)
To: Seungwon Jeon; +Cc: Chris Ball, linux-samsung-soc, kgene kim, dh han, linux-mmc
Hi Seungwon,
----- Original Message -----
> From: "Seungwon Jeon" <tgih.jun@samsung.com>
> To: linux-mmc@vger.kernel.org
> Cc: "Chris Ball" <cjb@laptop.org>, linux-samsung-soc@vger.kernel.org, "kgene kim" <kgene.kim@samsung.com>, "dh han"
> <dh.han@samsung.com>, "Seungwon Jeon" <tgih.jun@samsung.com>
> Sent: Monday, September 26, 2011 7:46:59 AM
> Subject: [PATCH] mmc: dw_mmc: Support predefined multiple block transfers.
>
> This patch adds the support for predefined multiple block read/write.
>
> Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com>
Without knowing much about dw_mmc host, your logic otherwise looks ok, given what
I've previously done for SDHCI as far as CMD23/Auto-CMD23 enhancement.
Just curious, what eMMC cards did you test this on, and what improvement did you see?
Acked-by: Andrei Warkentin <andrey.warkentin@gmail.com>
Thanks,
A
^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [PATCH] mmc: dw_mmc: Support predefined multiple block transfers.
2011-09-26 16:35 ` Andrei Warkentin
@ 2011-09-27 2:12 ` Seungwon Jeon
2011-09-27 4:58 ` Andrei E. Warkentin
0 siblings, 1 reply; 10+ messages in thread
From: Seungwon Jeon @ 2011-09-27 2:12 UTC (permalink / raw)
To: 'Andrei Warkentin'
Cc: 'Chris Ball', linux-samsung-soc, 'kgene kim',
'dh han', linux-mmc
Andrei Warkentin wrote:
> Hi Seungwon,
>
> ----- Original Message -----
> > From: "Seungwon Jeon" <tgih.jun@samsung.com>
> > To: linux-mmc@vger.kernel.org
> > Cc: "Chris Ball" <cjb@laptop.org>, linux-samsung-soc@vger.kernel.org,
> "kgene kim" <kgene.kim@samsung.com>, "dh han"
> > <dh.han@samsung.com>, "Seungwon Jeon" <tgih.jun@samsung.com>
> > Sent: Monday, September 26, 2011 7:46:59 AM
> > Subject: [PATCH] mmc: dw_mmc: Support predefined multiple block
> transfers.
> >
> > This patch adds the support for predefined multiple block read/write.
> >
> > Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com>
>
> Without knowing much about dw_mmc host, your logic otherwise looks ok,
> given what
> I've previously done for SDHCI as far as CMD23/Auto-CMD23 enhancement.
> Just curious, what eMMC cards did you test this on, and what improvement
> did you see?
Thank you for review.
As you done, predefined transfer is required for reliable writes and eMMC4.5 feature.
Sadly, I didn't gain an improvement in my case.
(I don't know whether I can clarify the tested eMMC card, just one sample.)
Best regards,
Seungwon Jeon.
>
> Acked-by: Andrei Warkentin <andrey.warkentin@gmail.com>
>
> Thanks,
> A
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] mmc: dw_mmc: Support predefined multiple block transfers.
2011-09-27 2:12 ` Seungwon Jeon
@ 2011-09-27 4:58 ` Andrei E. Warkentin
2011-09-28 8:23 ` Seungwon Jeon
0 siblings, 1 reply; 10+ messages in thread
From: Andrei E. Warkentin @ 2011-09-27 4:58 UTC (permalink / raw)
To: Seungwon Jeon
Cc: Andrei Warkentin, Chris Ball, linux-samsung-soc, kgene kim,
dh han, linux-mmc
2011/9/26 Seungwon Jeon <tgih.jun@samsung.com>:
> Andrei Warkentin wrote:
>> Hi Seungwon,
>>
>> ----- Original Message -----
>> > From: "Seungwon Jeon" <tgih.jun@samsung.com>
>> > To: linux-mmc@vger.kernel.org
>> > Cc: "Chris Ball" <cjb@laptop.org>, linux-samsung-soc@vger.kernel.org,
>> "kgene kim" <kgene.kim@samsung.com>, "dh han"
>> > <dh.han@samsung.com>, "Seungwon Jeon" <tgih.jun@samsung.com>
>> > Sent: Monday, September 26, 2011 7:46:59 AM
>> > Subject: [PATCH] mmc: dw_mmc: Support predefined multiple block
>> transfers.
>> >
>> > This patch adds the support for predefined multiple block read/write.
>> >
>> > Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com>
>>
>> Without knowing much about dw_mmc host, your logic otherwise looks ok,
>> given what
>> I've previously done for SDHCI as far as CMD23/Auto-CMD23 enhancement.
>> Just curious, what eMMC cards did you test this on, and what improvement
>> did you see?
>
> Thank you for review.
> As you done, predefined transfer is required for reliable writes and eMMC4.5 feature.
> Sadly, I didn't gain an improvement in my case.
> (I don't know whether I can clarify the tested eMMC card, just one sample.)
>
So far I've seen some Sandisk cards have a noticeable real-life
improvement (30%) over
open-ended transfers.
You might wish to try out https://github.com/andreiw/superalign to be certain.
A
^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [PATCH] mmc: dw_mmc: Support predefined multiple block transfers.
2011-09-26 9:15 Seungwon Jeon
@ 2011-09-28 1:20 ` Seungwon Jeon
0 siblings, 0 replies; 10+ messages in thread
From: Seungwon Jeon @ 2011-09-28 1:20 UTC (permalink / raw)
To: 'Seungwon Jeon', linux-mmc
Cc: linux-samsung-soc, 'Chris Ball', dh.han
This is a duplicate patch from our security machine.
Please ignore this resending.
Best regards,
Seungwon Jeon.
>
> This patch adds the support for predefined multiple block read/write.
>
> Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com>
> ---
> drivers/mmc/host/dw_mmc.c | 32 ++++++++++++++++++++++++++------
> 1 files changed, 26 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
> index 0ed1d28..36a5576 100644
> --- a/drivers/mmc/host/dw_mmc.c
> +++ b/drivers/mmc/host/dw_mmc.c
> @@ -588,11 +588,10 @@ static void dw_mci_setup_bus(struct dw_mci_slot
> *slot)
> mci_writel(host, CTYPE, (slot->ctype << slot->id));
> }
>
> -static void dw_mci_start_request(struct dw_mci *host,
> - struct dw_mci_slot *slot)
> +static void __dw_mci_start_request(struct dw_mci *host,
> + struct dw_mci_slot *slot, struct mmc_command
> *cmd)
> {
> struct mmc_request *mrq;
> - struct mmc_command *cmd;
> struct mmc_data *data;
> u32 cmdflags;
>
> @@ -610,14 +609,13 @@ static void dw_mci_start_request(struct dw_mci *host,
> host->completed_events = 0;
> host->data_status = 0;
>
> - data = mrq->data;
> + data = cmd->data;
> if (data) {
> dw_mci_set_timeout(host);
> mci_writel(host, BYTCNT, data->blksz*data->blocks);
> mci_writel(host, BLKSIZ, data->blksz);
> }
>
> - cmd = mrq->cmd;
> cmdflags = dw_mci_prepare_command(slot->mmc, cmd);
>
> /* this is the first command, send the initialization clock */
> @@ -635,6 +633,16 @@ static void dw_mci_start_request(struct dw_mci *host,
> host->stop_cmdr = dw_mci_prepare_command(slot->mmc, mrq-
> >stop);
> }
>
> +static void dw_mci_start_request(struct dw_mci *host,
> + struct dw_mci_slot *slot)
> +{
> + struct mmc_request *mrq = slot->mrq;
> + struct mmc_command *cmd;
> +
> + cmd = mrq->sbc ? mrq->sbc : mrq->cmd;
> + __dw_mci_start_request(host, slot, cmd);
> +}
> +
> /* must be called with host->lock held */
> static void dw_mci_queue_request(struct dw_mci *host, struct dw_mci_slot
> *slot,
> struct mmc_request *mrq)
> @@ -889,7 +897,13 @@ static void dw_mci_tasklet_func(unsigned long priv)
> cmd = host->cmd;
> host->cmd = NULL;
> set_bit(EVENT_CMD_COMPLETE, &host->completed_events);
> - dw_mci_command_complete(host, host->mrq->cmd);
> + dw_mci_command_complete(host, cmd);
> + if ((cmd == host->mrq->sbc) && !cmd->error) {
> + prev_state = state = STATE_SENDING_CMD;
> + __dw_mci_start_request(host, host->cur_slot,
> host->mrq->cmd);
> + goto unlock;
> + }
> +
> if (!host->mrq->data || cmd->error) {
> dw_mci_request_end(host, host->mrq);
> goto unlock;
> @@ -967,6 +981,12 @@ static void dw_mci_tasklet_func(unsigned long priv)
> goto unlock;
> }
>
> + if (host->mrq->sbc && !data->error) {
> + data->stop->error = 0;
> + dw_mci_request_end(host, host->mrq);
> + goto unlock;
> + }
> +
> prev_state = state = STATE_SENDING_STOP;
> if (!data->error)
> send_stop_cmd(host, data);
> --
> 1.7.0.4
^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [PATCH] mmc: dw_mmc: Support predefined multiple block transfers.
2011-09-27 4:58 ` Andrei E. Warkentin
@ 2011-09-28 8:23 ` Seungwon Jeon
2011-10-05 5:02 ` Jaehoon Chung
0 siblings, 1 reply; 10+ messages in thread
From: Seungwon Jeon @ 2011-09-28 8:23 UTC (permalink / raw)
To: 'Andrei E. Warkentin'
Cc: 'Andrei Warkentin', 'Chris Ball',
linux-samsung-soc, 'kgene kim', 'dh han',
linux-mmc
Andrei Warkentin wrote:
> 2011/9/26 Seungwon Jeon <tgih.jun@samsung.com>:
> > Andrei Warkentin wrote:
> >> Hi Seungwon,
> >>
> >> ----- Original Message -----
> >> > From: "Seungwon Jeon" <tgih.jun@samsung.com>
> >> > To: linux-mmc@vger.kernel.org
> >> > Cc: "Chris Ball" <cjb@laptop.org>, linux-samsung-soc@vger.kernel.org,
> >> "kgene kim" <kgene.kim@samsung.com>, "dh han"
> >> > <dh.han@samsung.com>, "Seungwon Jeon" <tgih.jun@samsung.com>
> >> > Sent: Monday, September 26, 2011 7:46:59 AM
> >> > Subject: [PATCH] mmc: dw_mmc: Support predefined multiple block
> >> transfers.
> >> >
> >> > This patch adds the support for predefined multiple block read/write.
> >> >
> >> > Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com>
> >>
> >> Without knowing much about dw_mmc host, your logic otherwise looks ok,
> >> given what
> >> I've previously done for SDHCI as far as CMD23/Auto-CMD23 enhancement.
> >> Just curious, what eMMC cards did you test this on, and what
> improvement
> >> did you see?
> >
> > Thank you for review.
> > As you done, predefined transfer is required for reliable writes and
> eMMC4.5 feature.
> > Sadly, I didn't gain an improvement in my case.
> > (I don't know whether I can clarify the tested eMMC card, just one
> sample.)
> >
>
> So far I've seen some Sandisk cards have a noticeable real-life
> improvement (30%) over
> open-ended transfers.
>
> You might wish to try out https://github.com/andreiw/superalign to be
> certain.
I had already tested this patch with IOZONE, but I found no difference.
Maybe a result depends on eMMC device.
As your recommend, I applied above benchmark tool.
Predefined transfer seems like a little better, but there is no difference.
Thanks.
Seungwon Jeon.
>
> A
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] mmc: dw_mmc: Support predefined multiple block transfers.
2011-09-28 8:23 ` Seungwon Jeon
@ 2011-10-05 5:02 ` Jaehoon Chung
2011-10-05 8:02 ` Seungwon Jeon
0 siblings, 1 reply; 10+ messages in thread
From: Jaehoon Chung @ 2011-10-05 5:02 UTC (permalink / raw)
To: Seungwon Jeon
Cc: 'Andrei E. Warkentin', 'Andrei Warkentin',
'Chris Ball', linux-samsung-soc, 'kgene kim',
'dh han', linux-mmc
Hi Mr.Jeon
One question...if we used predefined transfer, didn't send stop-command?
then i think that didn't need to enter this condition..how about this?
In __dw_mci_start_reqeust() function(at your patch)
if (mrq->stop)
host->stop_cmdr = dw_mci_prepare_command(slot->mmc, mrq->stop);
If i misunderstood something, plz let me know...Thanks.
Tested-by: Jaehoon Chung <jh80.chung@samsung.com>
On 09/28/2011 05:23 PM, Seungwon Jeon wrote:
> Andrei Warkentin wrote:
>> 2011/9/26 Seungwon Jeon <tgih.jun@samsung.com>:
>>> Andrei Warkentin wrote:
>>>> Hi Seungwon,
>>>>
>>>> ----- Original Message -----
>>>>> From: "Seungwon Jeon" <tgih.jun@samsung.com>
>>>>> To: linux-mmc@vger.kernel.org
>>>>> Cc: "Chris Ball" <cjb@laptop.org>, linux-samsung-soc@vger.kernel.org,
>>>> "kgene kim" <kgene.kim@samsung.com>, "dh han"
>>>>> <dh.han@samsung.com>, "Seungwon Jeon" <tgih.jun@samsung.com>
>>>>> Sent: Monday, September 26, 2011 7:46:59 AM
>>>>> Subject: [PATCH] mmc: dw_mmc: Support predefined multiple block
>>>> transfers.
>>>>>
>>>>> This patch adds the support for predefined multiple block read/write.
>>>>>
>>>>> Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com>
>>>>
>>>> Without knowing much about dw_mmc host, your logic otherwise looks ok,
>>>> given what
>>>> I've previously done for SDHCI as far as CMD23/Auto-CMD23 enhancement.
>>>> Just curious, what eMMC cards did you test this on, and what
>> improvement
>>>> did you see?
>>>
>>> Thank you for review.
>>> As you done, predefined transfer is required for reliable writes and
>> eMMC4.5 feature.
>>> Sadly, I didn't gain an improvement in my case.
>>> (I don't know whether I can clarify the tested eMMC card, just one
>> sample.)
>>>
>>
>> So far I've seen some Sandisk cards have a noticeable real-life
>> improvement (30%) over
>> open-ended transfers.
>>
>> You might wish to try out https://github.com/andreiw/superalign to be
>> certain.
>
> I had already tested this patch with IOZONE, but I found no difference.
> Maybe a result depends on eMMC device.
> As your recommend, I applied above benchmark tool.
> Predefined transfer seems like a little better, but there is no difference.
>
> Thanks.
> Seungwon Jeon.
>
>>
>> A
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [PATCH] mmc: dw_mmc: Support predefined multiple block transfers.
2011-10-05 5:02 ` Jaehoon Chung
@ 2011-10-05 8:02 ` Seungwon Jeon
2011-10-05 8:19 ` Jaehoon Chung
0 siblings, 1 reply; 10+ messages in thread
From: Seungwon Jeon @ 2011-10-05 8:02 UTC (permalink / raw)
To: 'Jaehoon Chung'
Cc: 'Andrei E. Warkentin', 'Andrei Warkentin',
'Chris Ball', linux-samsung-soc, 'kgene kim',
'dh han', linux-mmc
Jaehoon Chung wrote:
>
> Hi Mr.Jeon
>
> One question...if we used predefined transfer, didn't send stop-command?
> then i think that didn't need to enter this condition..how about this?
>
> In __dw_mci_start_reqeust() function(at your patch)
>
> if (mrq->stop)
> host->stop_cmdr = dw_mci_prepare_command(slot->mmc, mrq->stop);
>
> If i misunderstood something, plz let me know...Thanks.
Yes, predefined transfer doesn't send stop command normally.
But if transfer error is occurred, stop command is required.
Thank you for test.
Best regards,
Seungwon Jeon.
>
> Tested-by: Jaehoon Chung <jh80.chung@samsung.com>
>
> On 09/28/2011 05:23 PM, Seungwon Jeon wrote:
>
> > Andrei Warkentin wrote:
> >> 2011/9/26 Seungwon Jeon <tgih.jun@samsung.com>:
> >>> Andrei Warkentin wrote:
> >>>> Hi Seungwon,
> >>>>
> >>>> ----- Original Message -----
> >>>>> From: "Seungwon Jeon" <tgih.jun@samsung.com>
> >>>>> To: linux-mmc@vger.kernel.org
> >>>>> Cc: "Chris Ball" <cjb@laptop.org>, linux-samsung-soc@vger.kernel.org,
> >>>> "kgene kim" <kgene.kim@samsung.com>, "dh han"
> >>>>> <dh.han@samsung.com>, "Seungwon Jeon" <tgih.jun@samsung.com>
> >>>>> Sent: Monday, September 26, 2011 7:46:59 AM
> >>>>> Subject: [PATCH] mmc: dw_mmc: Support predefined multiple block
> >>>> transfers.
> >>>>>
> >>>>> This patch adds the support for predefined multiple block read/write.
> >>>>>
> >>>>> Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com>
> >>>>
> >>>> Without knowing much about dw_mmc host, your logic otherwise looks ok,
> >>>> given what
> >>>> I've previously done for SDHCI as far as CMD23/Auto-CMD23 enhancement.
> >>>> Just curious, what eMMC cards did you test this on, and what
> >> improvement
> >>>> did you see?
> >>>
> >>> Thank you for review.
> >>> As you done, predefined transfer is required for reliable writes and
> >> eMMC4.5 feature.
> >>> Sadly, I didn't gain an improvement in my case.
> >>> (I don't know whether I can clarify the tested eMMC card, just one
> >> sample.)
> >>>
> >>
> >> So far I've seen some Sandisk cards have a noticeable real-life
> >> improvement (30%) over
> >> open-ended transfers.
> >>
> >> You might wish to try out https://github.com/andreiw/superalign to be
> >> certain.
> >
> > I had already tested this patch with IOZONE, but I found no difference.
> > Maybe a result depends on eMMC device.
> > As your recommend, I applied above benchmark tool.
> > Predefined transfer seems like a little better, but there is no
> difference.
> >
> > Thanks.
> > Seungwon Jeon.
> >
> >>
> >> A
> >> --
> >> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> >> the body of a message to majordomo@vger.kernel.org
> >> More majordomo info at http://vger.kernel.org/majordomo-info.html
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
> >
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] mmc: dw_mmc: Support predefined multiple block transfers.
2011-10-05 8:02 ` Seungwon Jeon
@ 2011-10-05 8:19 ` Jaehoon Chung
0 siblings, 0 replies; 10+ messages in thread
From: Jaehoon Chung @ 2011-10-05 8:19 UTC (permalink / raw)
To: Seungwon Jeon
Cc: 'Jaehoon Chung', 'Andrei E. Warkentin',
'Andrei Warkentin', 'Chris Ball',
linux-samsung-soc, 'kgene kim', 'dh han',
linux-mmc
On 10/05/2011 05:02 PM, Seungwon Jeon wrote:
> Jaehoon Chung wrote:
>>
>> Hi Mr.Jeon
>>
>> One question...if we used predefined transfer, didn't send stop-command?
>> then i think that didn't need to enter this condition..how about this?
>>
>> In __dw_mci_start_reqeust() function(at your patch)
>>
>> if (mrq->stop)
>> host->stop_cmdr = dw_mci_prepare_command(slot->mmc, mrq->stop);
>>
>> If i misunderstood something, plz let me know...Thanks.
> Yes, predefined transfer doesn't send stop command normally.
> But if transfer error is occurred, stop command is required.
Thanks for your answer. i didn't look in detail.
your patch is worked when there is data->error, send stop command..right?
This patch looks good to me.
Best Regards,
Jaehoon Chung
>
> Thank you for test.
> Best regards,
> Seungwon Jeon.
>>
>> Tested-by: Jaehoon Chung <jh80.chung@samsung.com>
>>
>> On 09/28/2011 05:23 PM, Seungwon Jeon wrote:
>>
>>> Andrei Warkentin wrote:
>>>> 2011/9/26 Seungwon Jeon <tgih.jun@samsung.com>:
>>>>> Andrei Warkentin wrote:
>>>>>> Hi Seungwon,
>>>>>>
>>>>>> ----- Original Message -----
>>>>>>> From: "Seungwon Jeon" <tgih.jun@samsung.com>
>>>>>>> To: linux-mmc@vger.kernel.org
>>>>>>> Cc: "Chris Ball" <cjb@laptop.org>, linux-samsung-soc@vger.kernel.org,
>>>>>> "kgene kim" <kgene.kim@samsung.com>, "dh han"
>>>>>>> <dh.han@samsung.com>, "Seungwon Jeon" <tgih.jun@samsung.com>
>>>>>>> Sent: Monday, September 26, 2011 7:46:59 AM
>>>>>>> Subject: [PATCH] mmc: dw_mmc: Support predefined multiple block
>>>>>> transfers.
>>>>>>>
>>>>>>> This patch adds the support for predefined multiple block read/write.
>>>>>>>
>>>>>>> Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com>
>>>>>>
>>>>>> Without knowing much about dw_mmc host, your logic otherwise looks ok,
>>>>>> given what
>>>>>> I've previously done for SDHCI as far as CMD23/Auto-CMD23 enhancement.
>>>>>> Just curious, what eMMC cards did you test this on, and what
>>>> improvement
>>>>>> did you see?
>>>>>
>>>>> Thank you for review.
>>>>> As you done, predefined transfer is required for reliable writes and
>>>> eMMC4.5 feature.
>>>>> Sadly, I didn't gain an improvement in my case.
>>>>> (I don't know whether I can clarify the tested eMMC card, just one
>>>> sample.)
>>>>>
>>>>
>>>> So far I've seen some Sandisk cards have a noticeable real-life
>>>> improvement (30%) over
>>>> open-ended transfers.
>>>>
>>>> You might wish to try out https://github.com/andreiw/superalign to be
>>>> certain.
>>>
>>> I had already tested this patch with IOZONE, but I found no difference.
>>> Maybe a result depends on eMMC device.
>>> As your recommend, I applied above benchmark tool.
>>> Predefined transfer seems like a little better, but there is no
>> difference.
>>>
>>> Thanks.
>>> Seungwon Jeon.
>>>
>>>>
>>>> A
>>>> --
>>>> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
>>>> the body of a message to majordomo@vger.kernel.org
>>>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>>
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
>>> the body of a message to majordomo@vger.kernel.org
>>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>>
>>
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2011-10-05 8:20 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-09-26 11:46 [PATCH] mmc: dw_mmc: Support predefined multiple block transfers Seungwon Jeon
2011-09-26 16:35 ` Andrei Warkentin
2011-09-27 2:12 ` Seungwon Jeon
2011-09-27 4:58 ` Andrei E. Warkentin
2011-09-28 8:23 ` Seungwon Jeon
2011-10-05 5:02 ` Jaehoon Chung
2011-10-05 8:02 ` Seungwon Jeon
2011-10-05 8:19 ` Jaehoon Chung
-- strict thread matches above, loose matches on Subject: below --
2011-09-26 9:15 Seungwon Jeon
2011-09-28 1:20 ` Seungwon Jeon
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox