Re: [PATCH v4 00/25] MMC/SDHCI fixes

Ulf Hansson
2016-02-16T13:08:35Z

[...]

>
> I have taken the liberty of re-organizing Russell's patches to put the
> bug fixes first with stable cc's. I also did 2 tweaks which result in
> final code having the diff below to the original:
>
>
> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
> index f857cb2a3d05..03fbb36580f7 100644
> --- a/drivers/mmc/host/sdhci.c
> +++ b/drivers/mmc/host/sdhci.c
> @@ -2270,7 +2270,7 @@ static void sdhci_cmd_irq(struct sdhci_host *host, u32 intmask, u32 *mask)
> * will time out.
> */
> if (host->cmd->data &&
> - intmask & (SDHCI_INT_CRC | SDHCI_INT_TIMEOUT) ==
> + (intmask & (SDHCI_INT_CRC | SDHCI_INT_TIMEOUT)) ==
> SDHCI_INT_CRC) {
> host->cmd = NULL;
> return;
> @@ -2920,7 +2920,8 @@ int sdhci_add_host(struct sdhci_host *host)
> pr_warn("%s: Unable to allocate ADMA buffers - falling back to standard DMA\n",
> mmc_hostname(mmc));
> host->flags &= ~SDHCI_USE_ADMA;
> - } else if (dma & SDHCI_ADMA2_MASK) {
> + } else if ((dma + host->align_buffer_sz) &
> + (SDHCI_ADMA2_DESC_ALIGN - 1)) {
> pr_warn("%s: unable to allocate aligned ADMA descriptor\n",
> mmc_hostname(mmc));
> host->flags &= ~SDHCI_USE_ADMA;
>
>
> Where I have made changes, they are indicated in the patch commit.
>
> I did some basic testing of eMMC, SD card and SDIO, for the fixes alone
> and also the entire patch set.
>
> Russell, please let me know if this is OK, and if so, Ulf please consider
> pulling:
>
>
> The following changes since commit 7d9e20d2be0d836c4eb7afca901eced34274c8dd:
>
> Merge branch 'fixes' into next (2016-02-08 16:22:56 +0100)
>
> are available in the git repository at:
>
>
> git://git.infradead.org/users/ahunter/linux-sdhci.git master
>
> for you to fetch changes up to eb6bf3c3513d2e2ab77d86bc6c2f2755073f0745:
>
> mmc: sdhci: further code simplication (2016-02-11 16:24:46 +0200)
>
> ----------------------------------------------------------------
> Russell King (22):
> mmc: sdhci: move initialisation of command error member
> mmc: sdhci: clean up command error handling
> mmc: sdhci: fix command response CRC error handling
> mmc: sdhci: avoid unnecessary mapping/unmapping of align buffer
> mmc: sdhci: plug DMA mapping leak on error
> mmc: sdhci-pxav3: fix higher speed mode capabilities
> mmc: sdhci: further fix for DMA unmapping in sdhci_post_req()
> mmc: sdhci: fix data timeout (part 1)
> mmc: sdhci: fix data timeout (part 2)
> mmc: sdhci: allocate alignment and DMA descriptor buffer together
> mmc: sdhci: clean up coding style in sdhci_adma_table_pre()
> mmc: sdhci: avoid walking SG list for writes
> mmc: sdhci: factor out common DMA cleanup in sdhci_finish_data()
> mmc: sdhci: move sdhci_pre_dma_transfer()
> mmc: sdhci: factor out sdhci_pre_dma_transfer() from sdhci_adma_table_pre()
> mmc: sdhci: pass the cookie into sdhci_pre_dma_transfer()
> mmc: sdhci: always unmap a mapped data transfer in sdhci_post_req()
> mmc: sdhci: clean up host cookie handling
> mmc: sdhci: cleanup DMA un-mapping
> mmc: sdhci: prepare DMA address/size quirk handling consolidation
> mmc: sdhci: consolidate the DMA/ADMA size/address quicks
> mmc: sdhci: further code simplication
>
> drivers/mmc/host/sdhci-pxav3.c | 6 ++-
> drivers/mmc/host/sdhci.c | 444 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------------------------------------
> drivers/mmc/host/sdhci.h | 4 +-
> 3 files changed, 200 insertions(+), 254 deletions(-)
>
>
> Regards
> Adrian

Thanks Adrian!

I have pulled in the changes, or actually cherry-picked them as I have
re-based my next branch.

Also, I have added Gregory's tested-by tag.

Kind regards
Uffe