On Thu, 19 Nov 2020 10:00:17 -0400 Jason Gunthorpe wrote: > Finally, in the mlx5 model VDPA is just an "application". It asks the > device to create a 'RDMA' raw ethernet packet QP that is uses rings > formed in the virtio-net specification. We can create it in the kernel > using mlx5_vdpa, and we can create it in userspace through the RDMA > subsystem. Like any "RDMA" application it is contained by the security > boundary of the PF/VF/SF the mlx5_core is running on. Thanks for the write up! The SF part is pretty clear to me, it is what it is. DPDK camp has been pretty excited about ADI/PASID for a while now. The part that's blurry to me is VDPA. I was under the impression that for VDPA the device is supposed to support native virtio 2.0 (or whatever the "HW friendly" spec was). I believe that's what the early patches from Intel did. You're saying it's a client application like any other - do I understand it right that the hypervisor driver will be translating descriptors between virtio and device-native then? The vdpa parent is in the hypervisor correct? Can a VDPA device have multiple children of the same type? Why do we have a representor for a SF, if the interface is actually VDPA? Block and net traffic can't reasonably be treated the same by the switch. Also I'm confused how block device can bind to mlx5_core - in that case I'm assuming the QP is bound 1:1 with a QP on the SmartNIC side, and that QP is plugged into an appropriate backend?