[SPDK] Re: The difference between vhost-nvme and vhost-blk

Thanos Makatos <thanos.makatos at nutanix.com> Tue, 08 Mar 2022 13:31:44 +0000
Newsgroups dev.linux.lists.spdk
Message-ID < <CH0PR02MB8009E49760A3C541BB6E94F28B099@CH0PR02MB8009.namprd02.prod.outlook.com>>
> -----Original Message-----
> From: zbhhbz <zbhhbz(a)yeah.net>
> Sent: 08 March 2022 13:20
> To: Storage Performance Development Kit <spdk(a)lists.01.org>
> Subject: [SPDK] Re: The difference between vhost-nvme and vhost-blk
> 
> 
> 
> 
> thanks, this helps a lot.
> 
> 
> about the vfio-user,
> 
> 
> I understand that in the vfio-user,
> the guestOS can issue DMA read/write to a "pcie space " of a virtual device,
> but I'm confused:
> 1. does the guestOS issue DMA read/write to region on actual physical device
> or just a DRAM region?

A DRAM region.

>      if the guestOS directly access the physical device(DMA,IOMMU), where
> does spdk stands?
> 2. why do vfio-user need a socket, what kind of data does the socket carries?

The vfio-user protocol allows a device to be emulated outside QEMU (the vfio-user client), in a separate process (the vfio-user server, SPDK running the nvmf/vfio-user target in our case). The UNIX domain socket is used between QEMU and SPDK for initial device setup, virtual IRQs, and other infrequent operations.

> 3. Does the vfio-user look like the vhost-user except for direct DMA access
> instead of shared memory communication?

vfio-user allows any kind of device to be emulated in a separate process (even non-PCI), while vhost-user is mainly for VirtIO devices.

> 
> 
> thanks
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> At 2022-03-08 17:40:12, "Thanos Makatos" <thanos.makatos(a)nutanix.com>
> wrote:
> >> -----Original Message-----
> >> From: zbhhbz <zbhhbz(a)yeah.net>
> >> Sent: 08 March 2022 09:29
> >> To: spdk <spdk(a)lists.01.org>
> >> Subject: [SPDK] Re: The difference between vhost-nvme and vhost-blk
> >>
> >> thanks, follow up questions:
> >> 1. if I still use Vhost-user-blk-pci in qemu and with nvme ssd(bdev), i cant'
> >> have access to the nvme feature in guest(shadow door bell). is that
> correct?
> >
> >Correct.
> >
> >> 2. in the vfio-user solution, does the interrupt sending from the
> ssd(nvme)
> >> go through the qemu/kvm? or it go straight to the guest kernel?
> >
> >It doesn't go to QEMU/KVM. It depends on how you've set it up in SPDK: it
> can either go the host kernel or to SPDK.
> >
> >> 3. when will the vfio-user be available? does kvm have same delima here?
> >
> >vfio-user is under review in QEMU, so we can't predict when it will be
> accepted upstream. This doesn't mean you can't use it though, have a look
> here: https://urldefense.proofpoint.com/v2/url?u=https-
> 3A__github.com_nutanix_libvfio-
> 2Duser_blob_master_docs_spdk.md&d=DwIGaQ&c=s883GpUCOChKOHiocY
> tGcg&r=XTpYsh5Ps2zJvtw6ogtti46atk736SI4vgsJiUKIyDE&m=5xzcHgA4AEwEk
> wrWO3u9vZt5Fmg2QcvFmOxjMr4NL5Usz4o_2HIoCisBygQ9-
> D1Q&s=k2t1I2xi9Och5KIeiaXyo2wo9wFbhIyALcMUph5xLK0&e=
> >
> >>
> >>
> >> thank you very much!
> >>
> >>
> >>
> >>
> >> ---- 回复的原邮件 ----
> >> | 发件人 | Liu, Changpeng<changpeng.liu(a)intel.com> |
> >> | 日期 | 2022年03月08日 16:33 |
> >> | 收件人 | Storage Performance Development Kit<spdk(a)lists.01.org> |
> >> | 抄送至 | |
> >> | 主题 | [SPDK] Re: The difference between vhost-nvme and vhost-blk |
> >> Previously SPDK extended QEMU with a separate driver to enable vhost-
> >> nvme, this driver
> >> was not accepted by QEMU, so now we support emulated NVMe with a
> new
> >> solution
> >> "vfio-user", again the driver for supporting this is still under code review
> of
> >> QEMU community,
> >> but SPDK already supports this.
> >>
> >> > -----Original Message-----
> >> > From: zbhhbz(a)yeah.net <zbhhbz(a)yeah.net>
> >> > Sent: Tuesday, March 8, 2022 4:29 PM
> >> > To: spdk(a)lists.01.org
> >> > Subject: [SPDK] The difference between vhost-nvme and vhost-blk
> >> >
> >> > Could someone help me understand the difference between vhost-
> nvme
> >> and
> >> > vhost-blk?
> >> > The online doc only shows there is vhost-user-blk-pci, why not vhost-
> user-
> >> nvme-
> >> > pci?
> >> > There is little doc fined in github/spdk and the qemu itself doesn't help
> >> either
> >> > Thanks!
> >> > _______________________________________________
> >> > SPDK mailing list -- spdk(a)lists.01.org
> >> > To unsubscribe send an email to spdk-leave(a)lists.01.org
> >> _______________________________________________
> >> SPDK mailing list -- spdk(a)lists.01.org
> >> To unsubscribe send an email to spdk-leave(a)lists.01.org
> >> _______________________________________________
> >> SPDK mailing list -- spdk(a)lists.01.org
> >> To unsubscribe send an email to spdk-leave(a)lists.01.org
> >_______________________________________________
> >SPDK mailing list -- spdk(a)lists.01.org
> >To unsubscribe send an email to spdk-leave(a)lists.01.org
> _______________________________________________
> SPDK mailing list -- spdk(a)lists.01.org
> To unsubscribe send an email to spdk-leave(a)lists.01.org