On Sat, Jun 08, 2019 at 04:52:24PM -0500, Larry Finger wrote: > On 6/7/19 12:29 PM, Christoph Hellwig wrote: >> I don't think we should work around this in the driver, we need to fix >> it in the core. I'm curious why my previous patch didn't work. Can >> you throw in a few printks what failed? I.e. did dma_direct_supported >> return false? Did the actual allocation fail? > > Routine dma_direct_supported() returns true. > > The failure is in routine dma_set_mask() in the following if test: > > if (!dev->dma_mask || !dma_supported(dev, mask)) > return -EIO; > > For b43legacy, dev->dma_mask is 0xc265684800000000. > dma_supported(dev, mask) is 0xc08b000000000000, mask is 0x3fffffff, and > the routine returns -EIO. > > For b43, dev->dma_mask is 0xc265684800000001, > dma_supported(dev, mask) is 0xc08b000000000000, mask is 0x77777777, and > the routine returns 0. I don't fully understand what values the above map to. Can you send me your actual debugging patch as well?