fix mmc hang during boot on socfpga
Subsystems (2)
PATCH 1/1 fix mmc hang during boot on socfpga
Without this patch, boot hangs when trying to mount root filesystem on socfpga platform in about 50% cases.
drivers/mmc/host/dw_mmc.c +14 -7
@@ -42,8 +42,8 @@/* Common flag combinations */ #define DW_MCI_DATA_ERROR_FLAGS (SDMMC_INT_DRTO | SDMMC_INT_DCRC | \ - SDMMC_INT_HTO | SDMMC_INT_SBE | \ - SDMMC_INT_EBE) + SDMMC_INT_HTO | SDMMC_INT_FRUN | \ + SDMMC_INT_SBE | SDMMC_INT_EBE)#define DW_MCI_CMD_ERROR_FLAGS (SDMMC_INT_RTO | SDMMC_INT_RCRC | \ SDMMC_INT_RESP_ERR)#define DW_MCI_ERROR_FLAGS (DW_MCI_DATA_ERROR_FLAGS | \
@@ -1302,7 +1302,8 @@ static void dw_mci_tasklet_func(unsigned long priv)if (test_and_clear_bit (EVENT_DATA_ERROR , &host->pending_events)) {dw_mci_stop_dma (host); -send_stop_abort (host, data); +if (data->stop) +send_stop_abort (host, data); state =STATE_DATA_ERROR ;break ; }
@@ -1324,6 +1325,11 @@ static void dw_mci_tasklet_func(unsigned long priv)set_bit (EVENT_DATA_COMPLETE , &host->completed_events); err =dw_mci_data_complete (host, data); +if (!data->stop) { +dw_mci_request_end (host, host->mrq); + goto unlock; + } +if (!err) {if (!data->stop || mrq->sbc) {if (mrq->sbc && data->stop)
@@ -1872,6 +1878,9 @@ static irqreturn_t dw_mci_interrupt(int irq, void *dev_id)queue_work (host->card_workqueue, &host->card_work); } +if (pending &SDMMC_INT_HLE ) +mci_writel (host,RINTSTS ,SDMMC_INT_HLE ); +/* Handle SDIO Interrupts */ for (i =0 ; i < host->num_slots; i++) {struct dw_mci_slot *slot = host->slot[i];
@@ -2361,8 +2370,7 @@ int dw_mci_probe(struct dw_mci *host) }if (host->pdata->num_slots >1 ) { -dev_err (host->dev, -"Platform data must supply num_slots.\n" ); +dev_err (host->dev,"Platform data must supply num_slots.\n" );return -ENODEV ; }
@@ -2399,8 +2407,7 @@ int dw_mci_probe(struct dw_mci *host) }if (!host->bus_hz) { -dev_err (host->dev, -"Platform data must supply bus speed\n" ); +dev_err (host->dev,"Platform data must supply bus speed\n" ); ret = -ENODEV ; goto err_clk_ciu; }
Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Quoted 3 lines · Pavel Machek
Without this patch, boot hangs when trying to mount root filesystem on socfpga platform in about 50% cases.
I think this should have a better description than this -- this is too vague. Did it use to always work, is this a new failure? You enable some more error checking and improved stop handling, why was the previous one inadequate on this platform?
-Olof
Quoted 8 lines · Olof Johansson
Quoted 2 lines · Pavel Machek
Without this patch, boot hangs when trying to mount root filesystem on socfpga platform in about 50% cases.
I think this should have a better description than this -- this is too vague. Did it use to always work, is this a new failure? You enable some more error checking and improved stop handling, why was the previous one inadequate on this platform?
+1
nit: It would also be nice if this patch contained proper mmc: tag in the Subject line (which applies to all other socfpga patches across all MLs).
Best regards,
Marek Vasut
Quoted 9 lines · Olof Johansson
Quoted 3 lines · Pavel Machek
Without this patch, boot hangs when trying to mount root filesystem on socfpga platform in about 50% cases.
I think this should have a better description than this -- this is too vague. Did it use to always work, is this a new failure? You enable some more error checking and improved stop handling, why was the previous one inadequate on this platform?
I don't think it ever worked reliably. I don't know what is different for socfpga, or if it is broken on other platforms, too. I have two socfpga boards here, but no other dw_mmc board.
Patch was separated from rocketboards.org repository.
Hope this helps,
Pavel
Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Jaehoon Chung
maintainerHi, Pavel.
Quoted 6 lines · Pavel Machek
Quoted 5 lines · Olof Johansson
Quoted 3 lines · Pavel Machek
Without this patch, boot hangs when trying to mount root filesystem on socfpga platform in about 50% cases.
Quoted 8 lines
Quoted 4 lines
I think this should have a better description than this -- this is too vague. Did it use to always work, is this a new failure? You enable some more error checking and improved stop handling, why was the previous one inadequate on this platform?
I don't think it ever worked reliably. I don't know what is different for socfpga, or if it is broken on other platforms, too. I have two socfpga boards here, but no other
dw_mmcboard.
I didn't know what error is occurred at your board. But i guess it looks like HLE error, right? Or you can share how booting is failed. than i think we can discuss more detailedly about your problem.
Best Regards,
Jaehoon Chung
Quoted 7 lines
Patch was separated from rocketboards.org repository.
Hope this helps,
Pavel