Messages in this thread | | | Subject | Re: [BISECTED REGRESSION] b43legacy broken on G4 PowerBook | From | Larry Finger <> | Date | Sat, 8 Jun 2019 16:52:24 -0500 |
| |
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.
Thus far I have not found what sets the low-order bit of dev->dma_mask. Suggestions are welcome.
These tests have all been with your patch that sets ARCH_ZONE_DMA_BITS to 30.
Larry
| |