diff mbox

mmc: davinci_mmc: add warnings for edma failures

Message ID 546FD21C.7010208@sysam.it (mailing list archive)
State New, archived
Headers show

Commit Message

Angelo Dureghello Nov. 22, 2014, midnight UTC
Add warnings in case the edma engine driver fails to allocate slots or 
channels requested from the davinci_mmc driver.

Some ti-davinci based boards (i.e. board-da850-evm.c) are asking for
some reserved chans / slots at board init stage. Later, the mmc driver
results in a silent locked state.

Signed-off-by: Angelo Dureghello <angelo <at> sysam.it>

                 }
@@ -461,8 +461,8 @@ static int mmc_davinci_send_dma_request(struct 
mmc_davinci_host *host,
                                 DMA_DEV_TO_MEM,
                                 DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
                 if (!desc) {
-                       dev_dbg(mmc_dev(host->mmc),
-                               "failed to allocate DMA RX descriptor");
+                       WARN(1, KERN_WARNING
+                               "failed to allocate DMA RX descriptor\n");
                         ret = -1;
                         goto out;
                 }

--
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

Comments

Ulf Hansson Nov. 27, 2014, 10:04 a.m. UTC | #1
On 22 November 2014 at 01:00, Angelo Dureghello <angelo@sysam.it> wrote:
> Add warnings in case the edma engine driver fails to allocate slots or
> channels requested from the davinci_mmc driver.
>
> Some ti-davinci based boards (i.e. board-da850-evm.c) are asking for
> some reserved chans / slots at board init stage. Later, the mmc driver
> results in a silent locked state.

So why does davinci_acquire_dma_channels() succeed then? Isn't that
real problem you should be looking into?

Kind regards
Uffe

>
> Signed-off-by: Angelo Dureghello <angelo <at> sysam.it>
>
> diff --git a/drivers/mmc/host/davinci_mmc.c b/drivers/mmc/host/davinci_mmc.c
> index 5d4c5e0..65d4990 100644
> --- a/drivers/mmc/host/davinci_mmc.c
> +++ b/drivers/mmc/host/davinci_mmc.c
> @@ -439,8 +439,8 @@ static int mmc_davinci_send_dma_request(struct
> mmc_davinci_host *host,
>                                 DMA_MEM_TO_DEV,
>                                 DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
>                 if (!desc) {
> -                       dev_dbg(mmc_dev(host->mmc),
> -                               "failed to allocate DMA TX descriptor");
> +                       WARN(1, KERN_WARNING
> +                               "failed to allocate DMA TX descriptor\n");
>                         ret = -1;
>                         goto out;
>                 }
> @@ -461,8 +461,8 @@ static int mmc_davinci_send_dma_request(struct
> mmc_davinci_host *host,
>                                 DMA_DEV_TO_MEM,
>                                 DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
>                 if (!desc) {
> -                       dev_dbg(mmc_dev(host->mmc),
> -                               "failed to allocate DMA RX descriptor");
> +                       WARN(1, KERN_WARNING
> +                               "failed to allocate DMA RX descriptor\n");
>                         ret = -1;
>                         goto out;
>                 }
>
> --
> 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
Angelo Dureghello Nov. 27, 2014, 10:18 a.m. UTC | #2
Hi Uffe,

many hanks for the reply,

 >> Add warnings in case the edma engine driver fails to allocate slots or
 >> channels requested from the davinci_mmc driver.
 >>
 >> Some ti-davinci based boards (i.e. board-da850-evm.c) are asking for
 >> some reserved chans / slots at board init stage. Later, the mmc driver
 >> results in a silent locked state.
 >
 > So why does davinci_acquire_dma_channels() succeed then? Isn't that
 > real problem you should be looking into?

i explain with more details,

my custom am1808 board initialization, based on 
arch/arm/mach-davinci/board-da850-evm.c, reserves some dma chans / slots 
for the audio at
early boot.

While on kernel 3.5.1 mmc was working properly, moving to kernel
3.17.0, due to the dma-engine wrapper introduction (to be selected
into menuconfig), the mmc host driver locks silently. System cannot
even "reboot" after the failed attempt to reserve the dma slots.

I hardly found out the reason due to missing of clear warnings.

So there is nothing to fix in any other place. Simply, i am suggesting
a more visible warning so the driver, instead of lock-up silently,
throws a problem.

Feel free to add or discard the patch, as you can see it is nothing 
functional.

Regards,
Angelo



--
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
Ulf Hansson Nov. 28, 2014, 11:20 a.m. UTC | #3
On 27 November 2014 at 11:18, Angelo Dureghello <angelo@sysam.it> wrote:
> Hi Uffe,
>
> many hanks for the reply,
>
>>> Add warnings in case the edma engine driver fails to allocate slots or
>>> channels requested from the davinci_mmc driver.
>>>
>>> Some ti-davinci based boards (i.e. board-da850-evm.c) are asking for
>>> some reserved chans / slots at board init stage. Later, the mmc driver
>>> results in a silent locked state.
>>
>> So why does davinci_acquire_dma_channels() succeed then? Isn't that
>> real problem you should be looking into?
>
> i explain with more details,
>
> my custom am1808 board initialization, based on
> arch/arm/mach-davinci/board-da850-evm.c, reserves some dma chans / slots for
> the audio at
> early boot.
>
> While on kernel 3.5.1 mmc was working properly, moving to kernel
> 3.17.0, due to the dma-engine wrapper introduction (to be selected
> into menuconfig), the mmc host driver locks silently. System cannot
> even "reboot" after the failed attempt to reserve the dma slots.
>
> I hardly found out the reason due to missing of clear warnings.
>
> So there is nothing to fix in any other place. Simply, i am suggesting
> a more visible warning so the driver, instead of lock-up silently,
> throws a problem.

I understand, thanks for clarifying.

So apparently the error handling for this path isn't working. I think
we should fix that instead of just WARN about it.

Kind regards
Uffe
--
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
diff mbox

Patch

diff --git a/drivers/mmc/host/davinci_mmc.c b/drivers/mmc/host/davinci_mmc.c
index 5d4c5e0..65d4990 100644
--- a/drivers/mmc/host/davinci_mmc.c
+++ b/drivers/mmc/host/davinci_mmc.c
@@ -439,8 +439,8 @@  static int mmc_davinci_send_dma_request(struct 
mmc_davinci_host *host,
                                 DMA_MEM_TO_DEV,
                                 DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
                 if (!desc) {
-                       dev_dbg(mmc_dev(host->mmc),
-                               "failed to allocate DMA TX descriptor");
+                       WARN(1, KERN_WARNING
+                               "failed to allocate DMA TX descriptor\n");
                         ret = -1;
                         goto out;