Hi Michael, On Thu, Mar 1, 2018 at 3:55 AM, Michael Schmitz <schmitz...@gmail.com> wrote: > The generic DMA API uses dev->dma_mask to check the DMA addressable > memory bitmask, and warns if no mask is set or even allocated. > > Allocate z->dev.dma_mask on Zorro bus scan so device drivers can use > dma_set_mask_and_coherent() to set their DMA bit mask. > > Signed-off-by: Michael Schmitz <schmitz...@gmail.com> > --- > drivers/zorro/zorro.c | 2 ++ > 1 files changed, 2 insertions(+), 0 deletions(-) > > diff --git a/drivers/zorro/zorro.c b/drivers/zorro/zorro.c > index cc1b1ac..e2d0344 100644 > --- a/drivers/zorro/zorro.c > +++ b/drivers/zorro/zorro.c > @@ -185,6 +185,8 @@ static int __init amiga_zorro_probe(struct > platform_device *pdev) > z->dev.parent = &bus->dev; > z->dev.bus = &zorro_bus_type; > z->dev.id = i; > + z->dev.dma_mask = > + kmalloc(sizeof(*z->dev.dma_mask), GFP_KERNEL);
Now *dma_mask will contain random garbage. Possible alternatives: 1. PCI has pci_dev.dma_mask, and sets dev.dma_mask to &pci_dev.dma_mask. 2. drivers/of/device.c does /* * Set default coherent_dma_mask to 32 bit. Drivers are expected to * setup the correct supported mask. */ if (!dev->coherent_dma_mask) dev->coherent_dma_mask = DMA_BIT_MASK(32); /* * Set it to coherent_dma_mask by default if the architecture * code has not set it. */ if (!dev->dma_mask) dev->dma_mask = &dev->coherent_dma_mask; So dev->coherent_dma_mask = DMA_BIT_MASK(32); dev->dma_mask = &dev->coherent_dma_mask; may be the simplest solution. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds -- To unsubscribe from this list: send the line "unsubscribe linux-m68k" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html