Re: [PATCH] mmc: dw_mmc: fix the error handling for dma operation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 11/17/2016 05:08 PM, Shawn Lin wrote:
> Hi Jaehoon,
> 
> 在 2016/11/17 15:53, Jaehoon Chung 写道:
>> When OWN bit of dma descriptor is not cleared, then it returns -EINVAL.
>> Then it has to fall back to PIO mode for current transfer.
>>
>> Host controller was already set to bits relevant to DMA operation.
>> If needs to use the PIO mode, Host controller has to stop the DMA
>> operation. (It's more stable than now.)
>>
> 
> It looks good to me, but
> 
>> When it occurred error, it's not running any request.
>>
>> Fixes: 3b2a067b98b4 ("mmc: dw_mmc: avoid race condition of cpu and IDMAC")
>>
> 
> I think the real fixes tag should indicate the another commit,
> 3fc7eaef44dbcbcd60 ("mmc: dw_mmc: Add external dma interface support")

You're right. 
But my main problem is "checking OWN bit".  Thanks for noticing this commit. :)
Some time..OWN bit is never released.. 

Best Regards,
Jaehoon Chung

> 
> otherwise,
> 
> Reviewed-by: Shawn Lin <shawn.lin@xxxxxxxxxxxxxx>
> 
>> Signed-off-by: Jaehoon Chung <jh80.chung@xxxxxxxxxxx>
>> ---
>>  drivers/mmc/host/dw_mmc.c | 1 +
>>  1 file changed, 1 insertion(+)
>>
>> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
>> index 9341b18..080003b 100644
>> --- a/drivers/mmc/host/dw_mmc.c
>> +++ b/drivers/mmc/host/dw_mmc.c
>> @@ -1058,6 +1058,7 @@ static int dw_mci_submit_data_dma(struct dw_mci *host, struct mmc_data *data)
>>      spin_unlock_irqrestore(&host->irq_lock, irqflags);
>>
>>      if (host->dma_ops->start(host, sg_len)) {
>> +        host->dma_ops->stop(host);
>>          /* We can't do DMA, try PIO for this one */
>>          dev_dbg(host->dev,
>>              "%s: fall back to PIO mode for current transfer\n",
>>
> 
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux