On Fri, Jun 04, 2021 at 09:11:03AM +0800, Jason Wang wrote: > > nor do any virtio drivers implement the required platform specific > > cache flushing to make no-snoop TLPs work. > > I don't get why virtio drivers needs to do that. I think DMA API should hide > those arch/platform specific stuffs from us. It is not arch/platform stuff. If the device uses no-snoop then a very platform specific recovery is required in the device driver. It is not part of the normal DMA API, it is side APIs like flush_agp_cache() or wbinvd() that are used by GPU drivers only. If drivers/virtio doesn't explicitly call these things it doesn't support no-snoop - hence no VDPA device can ever use no-snoop. Since VIRTIO_F_ACCESS_PLATFORM doesn't trigger wbinvd on x86 it has nothing to do with no-snoop. Jason