On Tue, Mar 8, 2016 at 8:59 AM, Timur Tabi <timur@xxxxxxxxxxxxxx> wrote: >> + /* Try setting the coherent_dma_mask to 64 bits, then try 32 bits >> */ >> + ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64)); >> + if (ret) { >> + ret = dma_set_mask_and_coherent(&pdev->dev, >> DMA_BIT_MASK(32)); >> + if (ret) >> + return ret; >> + } > > > I still do not understand what situation would cause a 64-bit mask to fail, > but a 32-bit mask to succeed. If the driver says that the device can > support 64-bit DMA, why would that ever fail? That means that the device > can DMA anywhere, so there are no restrictions. Can anyone help me understand this? It's been a month since I posted this question, and I haven't gotten an answer. I see the whole try-64-and-then-32-bit-masks code in a number of places, but I've never understood why it's necessary. -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html