On Wed, Dec 23, 2020 at 2:38 PM Jason Wang <jasowang@xxxxxxxxxx> wrote: > > > On 2020/12/22 下午10:52, Xie Yongji wrote: > > This series introduces a framework, which can be used to implement > > vDPA Devices in a userspace program. The work consist of two parts: > > control path forwarding and data path offloading. > > > > In the control path, the VDUSE driver will make use of message > > mechnism to forward the config operation from vdpa bus driver > > to userspace. Userspace can use read()/write() to receive/reply > > those control messages. > > > > In the data path, the core is mapping dma buffer into VDUSE > > daemon's address space, which can be implemented in different ways > > depending on the vdpa bus to which the vDPA device is attached. > > > > In virtio-vdpa case, we implements a MMU-based on-chip IOMMU driver with > > bounce-buffering mechanism to achieve that. > > > Rethink about the bounce buffer stuffs. I wonder instead of using kernel > pages with mmap(), how about just use userspace pages like what vhost did? > > It means we need a worker to do bouncing but we don't need to care about > annoying stuffs like page reclaiming? > Now the I/O bouncing is done in the streaming DMA mapping routines which can be called from interrupt context. If we put this into a kworker, that means we need to synchronize with a kworker in an interrupt context. I think it can't work. Thanks, Yongji