On Tue, Aug 23, 2022 at 10:01:59AM +0200, David Hildenbrand wrote: > On 23.08.22 00:24, Stefan Hajnoczi wrote: > > Register guest RAM using BlockRAMRegistrar and set the > > BDRV_REQ_REGISTERED_BUF flag so block drivers can optimize memory > > accesses in I/O requests. > > > > This is for vdpa-blk, vhost-user-blk, and other I/O interfaces that rely > > on DMA mapping/unmapping. > > Can you explain why we're monitoring RAMRegistrar to hook into "guest > RAM" and not go the usual path of the MemoryListener?
The requirements are similar to VFIO, which uses RAMBlockNotifier. We need to learn about all guest RAM because that's where I/O buffers are located. Do you think RAMBlockNotifier should be avoided? > What will BDRV_REQ_REGISTERED_BUF actually do? Pin all guest memory in > the worst case such as io_uring fixed buffers would do ( I hope not ). BLK_REQ_REGISTERED_BUF is a hint that no bounce buffer is necessary because the I/O buffer is located in memory that was previously registered with bdrv_registered_buf(). The RAMBlockNotifier calls bdrv_register_buf() to let the libblkio driver know about RAM. Some libblkio drivers ignore this hint, io_uring may use the fixed buffers feature, vhost-user sends the shared memory file descriptors to the vhost device server, and VFIO/vhost may pin pages. So the blkio block driver doesn't add anything new, it's the union of VFIO/vhost/vhost-user/etc memory requirements. Stefan
signature.asc
Description: PGP signature