From: Christoph Hellwig <hch@lst.de>
To: Mike Christie <michael.christie@oracle.com>
Cc: chaitanyak@nvidia.com, kbusch@kernel.org, hch@lst.de,
sagi@grimberg.me, joao.m.martins@oracle.com,
linux-nvme@lists.infradead.org, kvm@vger.kernel.org,
kwankhede@nvidia.com, alex.williamson@redhat.com,
mlevitsk@redhat.com
Subject: Re: [PATCH RFC 00/11] nvmet: Add NVMe target mdev/vfio driver
Date: Thu, 13 Mar 2025 07:47:43 +0100 [thread overview]
Message-ID: <20250313064743.GA10198@lst.de> (raw)
In-Reply-To: <20250313052222.178524-1-michael.christie@oracle.com>
On Thu, Mar 13, 2025 at 12:18:01AM -0500, Mike Christie wrote:
>
> If we agree on a new virtual NVMe driver being ok, why mdev vs vhost?
> =====================================================================
> The problem with a vhost nvme is:
>
> 2.1. If we do a fully vhost nvmet solution, it will require new guest
> drivers that present NVMe interfaces to userspace then perform the
> vhost spec on the backend like how vhost-scsi does.
>
> I don't want to implement a windows or even a linux nvme vhost
> driver. I don't think anyone wants the extra headache.
As in a nvme-virtio spec? Note that I suspect you could use the
vhost infrastructure for something that isn't virtio, but it would
be a fair amount of work.
> 2.2. We can do a hybrid approach where in the guest it looks like we
> are a normal old local NVMe drive and use the guest's native NVMe driver.
> However in QEMU we would have a vhost nvme module that instead of using
> vhost virtqueues handles virtual PCI memory accesses as well as a vhost
> nvme kernel or user driver to process IO.
>
> So not as much extra code as option 1 since we don't have to worry about
> the guest but still extra QEMU code.
And it does sound rather inefficient to me.
> Why not a new blk driver or why not vdpa blk?
> =============================================
> Applications want standardized interfaces for things like persistent
> reservations. They have to support them with SCSI and NVMe already
> and don't want to have to support a new virtio block interface.
>
> Also the nvmet-mdev-pci driver in this patchset can perform was well
> as SPDK vhost blk so that doesn't have the perf advantage like it
> used to.
Maybe I'm too old school, but I find vdpa a complete pain in the neck
to deal with in any way..
> 1. Should the driver integrate with pci-epf (the drivers work very
> differently but could share some code)?
If we can easily share code we should in a library. But we should
not force sharing code where it just make things more complicated.
> 2. Should it try to fit into the existing configfs interface or implement
> it's own like how pci-epf did? I did an attempt for this but it feels
> wrong.
pci-epf needs to integrate with the pci endpoint configfs interface
exposed by that subsystem. So the way it works wasn't really a choice
but a requirement to interact with the underlying abstraction.
next prev parent reply other threads:[~2025-03-13 6:47 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-13 5:18 [PATCH RFC 00/11] nvmet: Add NVMe target mdev/vfio driver Mike Christie
2025-03-13 5:18 ` [PATCH RFC 01/11] nvmet: Remove duplicate uuid_copy Mike Christie
2025-03-13 6:36 ` Christoph Hellwig
2025-03-13 8:59 ` Damien Le Moal
2025-03-13 17:20 ` Keith Busch
2025-03-13 5:18 ` [PATCH RFC 02/11] nvmet: Export nvmet_add_async_event and add definitions Mike Christie
2025-03-13 6:36 ` Christoph Hellwig
2025-03-13 17:50 ` Mike Christie
2025-03-13 5:18 ` [PATCH RFC 03/11] nvmet: Add nvmet_fabrics_ops flag to indicate SGLs not supported Mike Christie
2025-03-13 6:37 ` Christoph Hellwig
2025-03-13 9:02 ` Damien Le Moal
2025-03-13 9:13 ` Christoph Hellwig
2025-03-13 9:16 ` Damien Le Moal
2025-03-13 17:19 ` Mike Christie
2025-03-13 5:18 ` [PATCH RFC 04/11] nvmet: Add function to get nvmet_fabrics_ops from trtype Mike Christie
2025-03-13 9:03 ` Damien Le Moal
2025-03-13 5:18 ` [PATCH RFC 05/11] nvmet: Add function to print trtype Mike Christie
2025-03-13 5:18 ` [PATCH RFC 06/11] nvmet: Allow nvmet_alloc_ctrl users to specify the cntlid Mike Christie
2025-03-13 5:18 ` [PATCH RFC 07/11] nvmet: Add static controller support to configfs Mike Christie
2025-03-13 5:18 ` [PATCH RFC 08/11] nvmet: Add shadow doorbell support Mike Christie
2025-03-13 5:18 ` [PATCH RFC 09/11] nvmet: Add helpers to find and get static controllers Mike Christie
2025-03-13 5:18 ` [PATCH RFC 10/11] nvmet: Add addr fam and trtype for mdev pci driver Mike Christie
2025-03-13 6:42 ` Christoph Hellwig
2025-03-13 17:56 ` Mike Christie
2025-03-13 5:18 ` [PATCH RFC 11/11] nvmet: Add nvmet-mdev-pci driver Mike Christie
2025-03-14 7:32 ` kernel test robot
2025-03-13 5:32 ` [PATCH RFC 00/11] nvmet: Add NVMe target mdev/vfio driver Damien Le Moal
2025-03-13 6:47 ` Christoph Hellwig [this message]
2025-03-13 17:17 ` Mike Christie
2025-03-14 8:31 ` Hannes Reinecke
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250313064743.GA10198@lst.de \
--to=hch@lst.de \
--cc=alex.williamson@redhat.com \
--cc=chaitanyak@nvidia.com \
--cc=joao.m.martins@oracle.com \
--cc=kbusch@kernel.org \
--cc=kvm@vger.kernel.org \
--cc=kwankhede@nvidia.com \
--cc=linux-nvme@lists.infradead.org \
--cc=michael.christie@oracle.com \
--cc=mlevitsk@redhat.com \
--cc=sagi@grimberg.me \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.