From: "Michael S. Tsirkin" <mst@redhat.com>
To: Jason Gunthorpe <jgg@nvidia.com>
Cc: "kvm@vger.kernel.org" <kvm@vger.kernel.org>,
Maor Gottlieb <maorg@nvidia.com>,
"virtualization@lists.linux-foundation.org"
<virtualization@lists.linux-foundation.org>,
Jiri Pirko <jiri@nvidia.com>, Leon Romanovsky <leonro@nvidia.com>
Subject: Re: [PATCH vfio 11/11] vfio/virtio: Introduce a vfio driver over virtio devices
Date: Mon, 25 Sep 2023 13:36:06 -0400 [thread overview]
Message-ID: <20230925060510-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20230922162233.GT13733@nvidia.com>
On Fri, Sep 22, 2023 at 01:22:33PM -0300, Jason Gunthorpe wrote:
> On Fri, Sep 22, 2023 at 11:40:58AM -0400, Michael S. Tsirkin wrote:
> > On Fri, Sep 22, 2023 at 12:15:34PM -0300, Jason Gunthorpe wrote:
> > > On Fri, Sep 22, 2023 at 11:13:18AM -0400, Michael S. Tsirkin wrote:
> > > > On Fri, Sep 22, 2023 at 12:25:06PM +0000, Parav Pandit wrote:
> > > > >
> > > > > > From: Jason Gunthorpe <jgg@nvidia.com>
> > > > > > Sent: Friday, September 22, 2023 5:53 PM
> > > > >
> > > > >
> > > > > > > And what's more, using MMIO BAR0 then it can work for legacy.
> > > > > >
> > > > > > Oh? How? Our team didn't think so.
> > > > >
> > > > > It does not. It was already discussed.
> > > > > The device reset in legacy is not synchronous.
> > > > > The drivers do not wait for reset to complete; it was written for the sw backend.
> > > > > Hence MMIO BAR0 is not the best option in real implementations.
> > > >
> > > > Or maybe they made it synchronous in hardware, that's all.
> > > > After all same is true for the IO BAR0 e.g. for the PF: IO writes
> > > > are posted anyway.
> > >
> > > IO writes are not posted in PCI.
> >
> > Aha, I was confused. Thanks for the correction. I guess you just buffer
> > subsequent transactions while reset is going on and reset quickly enough
> > for it to be seemless then?
>
> >From a hardware perspective the CPU issues an non-posted IO write and
> then it stops processing until the far side returns an IO completion.
>
> Using that you can emulate what the SW virtio model did and delay the
> CPU from restarting until the reset is completed.
>
> Since MMIO is always posted, this is not possible to emulate directly
> using MMIO.
>
> Converting IO into non-posted admin commands is a fairly close
> recreation to what actual HW would do.
>
> Jason
I thought you asked how it is possible for hardware to support reset if
all it does is replace IO BAR with memory BAR. The answer is that since
2011 the reset is followed by read of the status field (which isn't much
older than MSIX support from 2009 - which this code assumes). If one
uses a Linux driver from 2011 and on then all you need to do is defer
response to this read until after the reset is complete.
If you are using older drivers or other OSes then reset using a posted
write after device has operated for a while might not be safe, so e.g.
you might trigger races if you remove drivers from system or
trigger hot unplug. For example:
static void virtio_pci_remove(struct pci_dev *pci_dev)
{
....
unregister_virtio_device(&vp_dev->vdev);
^^^^ triggers reset, then releases memory
....
pci_disable_device(pci_dev);
^^^ blocks DMA by clearing bus master
}
here you could see some DMA into memory that has just been released.
As Jason mentions hardware exists that is used under one of these two
restrictions on the guest (Linux since 2011 or no resets while DMA is
going on), and it works fine with these existing guests.
Given the restrictions, virtio TC didn't elect to standardize this
approach and instead opted for the heavier approach of
converting IO into non-posted admin commands in software.
--
MST
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
next prev parent reply other threads:[~2023-09-25 17:36 UTC|newest]
Thread overview: 140+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-21 12:40 [PATCH vfio 00/11] Introduce a vfio driver over virtio devices Yishai Hadas via Virtualization
2023-09-21 12:40 ` [PATCH vfio 01/11] virtio-pci: Use virtio pci device layer vq info instead of generic one Yishai Hadas via Virtualization
2023-09-21 13:46 ` Michael S. Tsirkin
2023-09-26 19:13 ` Feng Liu via Virtualization
2023-09-27 18:09 ` Feng Liu via Virtualization
2023-09-27 21:24 ` Michael S. Tsirkin
2023-09-21 12:40 ` [PATCH vfio 02/11] virtio: Define feature bit for administration virtqueue Yishai Hadas via Virtualization
2023-09-21 12:40 ` [PATCH vfio 03/11] virtio-pci: Introduce admin virtqueue Yishai Hadas via Virtualization
2023-09-21 13:57 ` Michael S. Tsirkin
2023-09-26 19:23 ` Feng Liu via Virtualization
2023-09-27 18:12 ` Feng Liu via Virtualization
2023-09-27 21:27 ` Michael S. Tsirkin
2023-10-02 18:07 ` Feng Liu via Virtualization
2023-09-21 12:40 ` [PATCH vfio 04/11] virtio: Expose the synchronous command helper function Yishai Hadas via Virtualization
2023-09-21 12:40 ` [PATCH vfio 05/11] virtio-pci: Introduce admin command sending function Yishai Hadas via Virtualization
2023-09-21 12:40 ` [PATCH vfio 06/11] virtio-pci: Introduce API to get PF virtio device from VF PCI device Yishai Hadas via Virtualization
2023-09-21 12:40 ` [PATCH vfio 07/11] virtio-pci: Introduce admin commands Yishai Hadas via Virtualization
2023-09-24 5:18 ` kernel test robot
2023-09-25 3:18 ` kernel test robot
2023-09-21 12:40 ` [PATCH vfio 08/11] vfio/pci: Expose vfio_pci_core_setup_barmap() Yishai Hadas via Virtualization
2023-09-21 16:35 ` Alex Williamson
2023-09-26 9:45 ` Yishai Hadas via Virtualization
2023-09-21 12:40 ` [PATCH vfio 09/11] vfio/pci: Expose vfio_pci_iowrite/read##size() Yishai Hadas via Virtualization
2023-09-21 12:40 ` [PATCH vfio 10/11] vfio/virtio: Expose admin commands over virtio device Yishai Hadas via Virtualization
2023-09-21 13:08 ` Michael S. Tsirkin
2023-09-21 20:34 ` Michael S. Tsirkin
2023-09-26 10:51 ` Yishai Hadas via Virtualization
2023-09-26 11:25 ` Michael S. Tsirkin
2023-09-22 9:54 ` Michael S. Tsirkin
2023-09-26 11:14 ` Yishai Hadas via Virtualization
2023-09-26 11:41 ` Michael S. Tsirkin
[not found] ` <20230927131817.GA338226@nvidia.com>
2023-09-27 21:30 ` Michael S. Tsirkin
[not found] ` <20230927231600.GD339126@nvidia.com>
2023-09-28 5:26 ` Michael S. Tsirkin
2023-10-02 6:28 ` Christoph Hellwig
[not found] ` <20231002151320.GA650762@nvidia.com>
2023-10-05 8:49 ` Christoph Hellwig
[not found] ` <20231005111004.GK682044@nvidia.com>
2023-10-06 13:09 ` Christoph Hellwig
[not found] ` <20231010131031.GJ3952@nvidia.com>
2023-10-10 13:56 ` Michael S. Tsirkin
[not found] ` <20231010140849.GL3952@nvidia.com>
2023-10-10 14:54 ` Michael S. Tsirkin
2023-10-10 15:09 ` Yishai Hadas via Virtualization
2023-10-10 15:14 ` Michael S. Tsirkin
2023-10-10 15:43 ` Yishai Hadas via Virtualization
2023-10-10 15:58 ` Parav Pandit via Virtualization
2023-10-10 15:58 ` Michael S. Tsirkin
2023-10-10 16:09 ` Yishai Hadas via Virtualization
2023-10-10 20:42 ` Michael S. Tsirkin
2023-10-11 7:44 ` Yishai Hadas via Virtualization
2023-10-11 8:02 ` Michael S. Tsirkin
2023-10-11 8:58 ` Yishai Hadas via Virtualization
2023-10-11 9:03 ` Michael S. Tsirkin
2023-10-11 11:25 ` Yishai Hadas via Virtualization
2023-10-11 6:12 ` Christoph Hellwig
[not found] ` <20231010155937.GN3952@nvidia.com>
2023-10-10 16:03 ` Michael S. Tsirkin
[not found] ` <20231010160712.GO3952@nvidia.com>
2023-10-10 16:21 ` Parav Pandit via Virtualization
2023-10-10 20:38 ` Michael S. Tsirkin
2023-10-11 6:13 ` Christoph Hellwig
2023-10-11 6:43 ` Michael S. Tsirkin
2023-10-11 6:59 ` Christoph Hellwig
2023-10-11 8:00 ` Parav Pandit via Virtualization
2023-10-11 8:10 ` Michael S. Tsirkin
[not found] ` <20231011121849.GV3952@nvidia.com>
2023-10-11 17:03 ` Michael S. Tsirkin
2023-10-11 17:05 ` Michael S. Tsirkin
2023-10-12 10:29 ` Zhu, Lingshan
[not found] ` <20231012132749.GK3952@nvidia.com>
2023-10-13 10:28 ` Zhu, Lingshan
2023-10-13 13:50 ` Michael S. Tsirkin
2023-10-16 8:33 ` Zhu, Lingshan
2023-10-16 8:52 ` Michael S. Tsirkin
2023-10-16 9:53 ` Zhu, Lingshan
2023-10-11 8:12 ` Michael S. Tsirkin
2023-10-12 10:30 ` Zhu, Lingshan
2023-10-11 6:26 ` Christoph Hellwig
[not found] ` <20231011135709.GW3952@nvidia.com>
2023-10-11 14:17 ` Christoph Hellwig
[not found] ` <20231011145810.GZ3952@nvidia.com>
2023-10-11 16:59 ` Michael S. Tsirkin
[not found] ` <20231011171944.GA3952@nvidia.com>
2023-10-11 20:20 ` Michael S. Tsirkin
2023-09-21 12:40 ` [PATCH vfio 11/11] vfio/virtio: Introduce a vfio driver over virtio devices Yishai Hadas via Virtualization
2023-09-21 13:16 ` Michael S. Tsirkin
[not found] ` <20230921141125.GM13733@nvidia.com>
2023-09-21 14:16 ` Michael S. Tsirkin
[not found] ` <20230921164139.GP13733@nvidia.com>
2023-09-21 16:53 ` Michael S. Tsirkin
[not found] ` <20230921183926.GV13733@nvidia.com>
2023-09-21 19:13 ` Michael S. Tsirkin
[not found] ` <20230921194946.GX13733@nvidia.com>
2023-09-21 20:45 ` Michael S. Tsirkin
[not found] ` <20230921225526.GE13733@nvidia.com>
2023-09-22 3:02 ` Jason Wang
2023-09-22 11:23 ` Michael S. Tsirkin
2023-09-22 3:01 ` Jason Wang
[not found] ` <20230922121132.GK13733@nvidia.com>
2023-09-25 2:34 ` Jason Wang
[not found] ` <20230925122607.GW13733@nvidia.com>
2023-09-25 19:44 ` Michael S. Tsirkin
[not found] ` <20230926004059.GM13733@nvidia.com>
2023-09-26 5:34 ` Michael S. Tsirkin
2023-09-26 5:42 ` Michael S. Tsirkin
[not found] ` <20230926135057.GO13733@nvidia.com>
2023-09-27 21:38 ` Michael S. Tsirkin
[not found] ` <20230927232005.GE339126@nvidia.com>
2023-09-28 5:31 ` Michael S. Tsirkin
2023-09-26 4:37 ` Jason Wang
2023-09-26 5:33 ` Parav Pandit via Virtualization
2023-09-21 19:17 ` Michael S. Tsirkin
[not found] ` <20230921195115.GY13733@nvidia.com>
2023-09-21 20:55 ` Michael S. Tsirkin
2023-09-25 4:44 ` Zhu, Lingshan
2023-09-22 3:45 ` Zhu, Lingshan
2023-09-21 13:33 ` Michael S. Tsirkin
2023-09-21 16:43 ` Alex Williamson
[not found] ` <20230921165224.GR13733@nvidia.com>
2023-09-21 17:01 ` Michael S. Tsirkin
2023-09-21 17:09 ` Parav Pandit via Virtualization
2023-09-21 17:24 ` Michael S. Tsirkin
[not found] ` <20230921170709.GS13733@nvidia.com>
2023-09-21 17:21 ` Michael S. Tsirkin
[not found] ` <20230921174450.GT13733@nvidia.com>
2023-09-21 17:55 ` Michael S. Tsirkin
[not found] ` <20230921181637.GU13733@nvidia.com>
2023-09-21 19:34 ` Michael S. Tsirkin
[not found] ` <20230921195345.GZ13733@nvidia.com>
2023-09-21 20:16 ` Michael S. Tsirkin
2023-09-22 3:02 ` Jason Wang
[not found] ` <20230922122246.GN13733@nvidia.com>
2023-09-22 12:25 ` Parav Pandit via Virtualization
2023-09-22 15:13 ` Michael S. Tsirkin
[not found] ` <20230922151534.GR13733@nvidia.com>
2023-09-22 15:40 ` Michael S. Tsirkin
[not found] ` <20230922162233.GT13733@nvidia.com>
2023-09-25 17:36 ` Michael S. Tsirkin [this message]
2023-09-25 2:30 ` Jason Wang
2023-09-25 8:26 ` Parav Pandit via Virtualization
2023-09-25 18:36 ` Michael S. Tsirkin
2023-09-26 2:34 ` Zhu, Lingshan
2023-09-26 3:45 ` Parav Pandit via Virtualization
2023-09-26 4:37 ` Jason Wang
2023-10-12 10:52 ` Michael S. Tsirkin
2023-10-12 11:11 ` Parav Pandit via Virtualization
2023-10-12 11:30 ` Michael S. Tsirkin
2023-10-12 11:40 ` Parav Pandit via Virtualization
2023-09-26 2:32 ` Jason Wang
2023-09-26 4:01 ` Parav Pandit via Virtualization
2023-09-26 4:37 ` Jason Wang
2023-09-26 5:27 ` Parav Pandit via Virtualization
2023-09-26 11:49 ` Michael S. Tsirkin
2023-10-08 4:28 ` Jason Wang
[not found] ` <20230921224836.GD13733@nvidia.com>
2023-09-22 9:47 ` Michael S. Tsirkin
[not found] ` <20230922122328.GO13733@nvidia.com>
2023-09-22 15:45 ` Michael S. Tsirkin
2023-09-22 3:02 ` Jason Wang
[not found] ` <20230922122501.GP13733@nvidia.com>
2023-09-22 15:39 ` Michael S. Tsirkin
[not found] ` <20230922161928.GS13733@nvidia.com>
2023-09-25 18:16 ` Michael S. Tsirkin
[not found] ` <20230925185318.GK13733@nvidia.com>
2023-09-25 19:52 ` Michael S. Tsirkin
2023-09-21 19:58 ` Alex Williamson
[not found] ` <20230921200121.GA13733@nvidia.com>
2023-09-21 20:20 ` Michael S. Tsirkin
2023-09-21 20:59 ` Alex Williamson
[not found] ` <20230922123708.GA130749@nvidia.com>
2023-09-22 12:59 ` Parav Pandit via Virtualization
2023-09-26 15:20 ` Yishai Hadas via Virtualization
2023-09-26 17:00 ` Michael S. Tsirkin
2023-10-02 4:38 ` Parav Pandit via Virtualization
2023-09-22 10:10 ` Michael S. Tsirkin
2023-09-22 15:53 ` Michael S. Tsirkin
2023-10-02 11:23 ` Parav Pandit via Virtualization
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=20230925060510-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=jgg@nvidia.com \
--cc=jiri@nvidia.com \
--cc=kvm@vger.kernel.org \
--cc=leonro@nvidia.com \
--cc=maorg@nvidia.com \
--cc=virtualization@lists.linux-foundation.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).