On Tuesday 21 October 2014 12:26:23 Adrian Hunter wrote: > + return 0; > + > + if (host->flags & SDHCI_USE_64_BIT_DMA) { > + if (host->quirks2 & SDHCI_QUIRK2_BROKEN_64_BIT_DMA) { > + host->flags &= ~SDHCI_USE_64_BIT_DMA; > + } else { > + err = dma_coerce_mask_and_coherent(dev, > + DMA_BIT_MASK(64)); > + if (err) > + dev_warn(dev, "Failed to set 64-bit DMA mask\n"); > + } > + } > + > + if (err) > + err = dma_coerce_mask_and_coherent(dev, DMA_BIT_MASK(32)); > + > + c->dma_setup = !err; > Never use dma_coerce_mask_and_coherent(), it will ignore limitations of the upstream bus. Use dma_set_mask_and_coherent instead. If it fails, I think you need to clear the SDHCI_USE_64_BIT_DMA flag. Arnd -- 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