From: "Michael S. Tsirkin" <mst@redhat.com>
To: Parav Pandit <parav@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>,
Jason Gunthorpe <jgg@nvidia.com>, 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 14:36:05 -0400 [thread overview]
Message-ID: <20230925141713-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <PH0PR12MB5481ED78F7467EEB0740847EDCFCA@PH0PR12MB5481.namprd12.prod.outlook.com>
On Mon, Sep 25, 2023 at 08:26:33AM +0000, Parav Pandit wrote:
>
>
> > From: Jason Wang <jasowang@redhat.com>
> > Sent: Monday, September 25, 2023 8:00 AM
> >
> > On Fri, Sep 22, 2023 at 8:25 PM Parav Pandit <parav@nvidia.com> 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.
> >
> > How do you know this?
> >
> Not sure the motivation of same discussion done in the OASIS with you and others in past.
>
> Anyways, please find the answer below.
>
> About reset,
> The legacy device specification has not enforced below cited 1.0 driver requirement of 1.0.
>
> "The driver SHOULD consider a driver-initiated reset complete when it reads device status as 0."
>
> [1] https://ozlabs.org/~rusty/virtio-spec/virtio-0.9.5.pdf
Basically, I think any drivers that did not read status (linux pre 2011)
before freeing memory under DMA have a reset path that is racy wrt DMA, since
memory writes are posted and IO writes while not posted have completion
that does not order posted transactions, e.g. from pci express spec:
D2b
An I/O or Configuration Write Completion 37 is permitted to pass a Posted Request.
having said that there were a ton of driver races discovered on this
path in the years since, I suspect if one cares about this then
just avoiding stress on reset is wise.
> > > The drivers do not wait for reset to complete; it was written for the sw
> > backend.
> >
> > Do you see there's a flush after reset in the legacy driver?
> >
> Yes. it only flushes the write by reading it. The driver does not get _wait_ for the reset to complete within the device like above.
One can thinkably do that wait in hardware, though. Just defer completion until
read is done.
> Please see the reset flow of 1.x device as below.
> In fact the comment of the 1.x device also needs to be updated to indicate that driver need to wait for the device to finish the reset.
> I will send separate patch for improving this comment of vp_reset() to match the spec.
>
> static void vp_reset(struct virtio_device *vdev)
> {
> struct virtio_pci_device *vp_dev = to_vp_device(vdev);
> struct virtio_pci_modern_device *mdev = &vp_dev->mdev;
>
> /* 0 status means a reset. */
> vp_modern_set_status(mdev, 0);
> /* After writing 0 to device_status, the driver MUST wait for a read of
> * device_status to return 0 before reinitializing the device.
> * This will flush out the status write, and flush in device writes,
> * including MSI-X interrupts, if any.
> */
> while (vp_modern_get_status(mdev))
> msleep(1);
> /* Flush pending VQ/configuration callbacks. */
> vp_synchronize_vectors(vdev);
> }
>
>
> > static void vp_reset(struct virtio_device *vdev) {
> > struct virtio_pci_device *vp_dev = to_vp_device(vdev);
> > /* 0 status means a reset. */
> > vp_legacy_set_status(&vp_dev->ldev, 0);
> > /* Flush out the status write, and flush in device writes,
> > * including MSi-X interrupts, if any. */
> > vp_legacy_get_status(&vp_dev->ldev);
> > /* Flush pending VQ/configuration callbacks. */
> > vp_synchronize_vectors(vdev);
> > }
> >
> > Thanks
> >
> >
> >
> > > Hence MMIO BAR0 is not the best option in real implementations.
> > >
>
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
next prev parent reply other threads:[~2023-09-25 18: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
2023-09-25 2:30 ` Jason Wang
2023-09-25 8:26 ` Parav Pandit via Virtualization
2023-09-25 18:36 ` Michael S. Tsirkin [this message]
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=20230925141713-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=parav@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).