Hi Christoph, On Tue, Apr 14, 2020 at 02:25:05PM +0200, Christoph Hellwig wrote: > +static inline bool dma_map_direct(struct device *dev, > + const struct dma_map_ops *ops) > +{ > + if (likely(!ops)) > + return true; > + if (!dev->dma_ops_bypass) > + return false; > + > + return min_not_zero(*dev->dma_mask, dev->bus_dma_limit) >= > + dma_direct_get_required_mask(dev);
Why is the dma-mask check done here? The dma-direct code handles memory outside of the devices dma-mask with swiotlb, no? I also don't quite get what the difference between setting the dma_ops_bypass flag non-zero and setting ops to NULL is. Joerg