On Fri, Sep 27, 2019 at 02:33:14AM +0200, Halil Pasic wrote: > Thank you for your feedback. Just to be sure we are on the same pager, I > read commit a0be1db4304f like this: > 1) virtio_pci_legacy needs to allocate the virtqueues so that the base > address fits 44 bits > 2) if 64 bit dma is possible they set coherent_dma_mask to > DMA_BIT_MASK(44) and dma_mask to DMA_BIT_MASK(64) > 3) since the queues get allocated with coherent allocations 1) is > satisfied > 4) when the streaming mappings see a buffer that is beyond > DMA_BIT_MASK(44) then it has to treat it as not coherent memory > and do the syncing magic (which isn't actually required, just > a side effect of the workaround. 1-3 is correct, 4 is not. The coherent mask is a little misnamed and doesn't have to anything with coherency. It is the mask for DMA allocations, while the dma mask is for streaming mappings. > I've already implemented a patch (see after the scissors line) that > takes a similar route as commit a0be1db4304f, but I consider that a > workaround at best. But if that is what the community wants... I have to > get the job done one way or the other. That patch (minus the comments about being a workaround) is what you should have done from the beginning.