From: "Michael S. Tsirkin" <mst@redhat.com>
To: Zhu Lingshan <lingshan.zhu@amd.com>
Cc: "Jason Wang" <jasowang@redhat.com>,
"Parav Pandit" <parav@nvidia.com>,
"cohuck@redhat.com" <cohuck@redhat.com>,
"virtio-comment@lists.linux.dev" <virtio-comment@lists.linux.dev>,
"Eugenio Pérez" <eperezma@redhat.com>,
"David Stevens" <stevensd@chromium.org>
Subject: Re: [PATCH V7 v7] virtio: introduce SUSPEND bit in device status
Date: Thu, 5 Sep 2024 04:12:29 -0400 [thread overview]
Message-ID: <20240905031759-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <47b21a27-d34f-4836-9af4-b009001536ef@amd.com>
On Thu, Sep 05, 2024 at 03:12:41PM +0800, Zhu Lingshan wrote:
>
>
> On 9/5/2024 2:51 PM, Michael S. Tsirkin wrote:
> > On Wed, Sep 04, 2024 at 02:38:36PM +0800, Zhu Lingshan wrote:
> >>
> >> On 9/4/2024 2:31 PM, Jason Wang wrote:
> >>> On Wed, Sep 4, 2024 at 12:03 PM Michael S. Tsirkin <mst@redhat.com> wrote:
> >>>> On Wed, Sep 04, 2024 at 11:07:25AM +0800, Jason Wang wrote:
> >>>>> On Tue, Sep 3, 2024 at 6:37 PM Michael S. Tsirkin <mst@redhat.com> wrote:
> >>>>>> On Tue, Sep 03, 2024 at 06:35:59AM -0400, Michael S. Tsirkin wrote:
> >>>>>>>>> But I don't like it that looking at the registers, one does not know the device
> >>>>>>>>> state. Hidden state is bad for debuggability.
> >>>>>>>>> We have 4 states:
> >>>>>>>>> suspending->suspended->resuming->resumed
> >>>>>>>>> so we need a register with at least 2 bits.
> >>>>>>>>>
> >>>>>>>>> we could steal 2 bits from status but it seems a bit much.
> >>>>>>>>>
> >>>>>>>> This is why letting the status tell the status and control register to control thing is elegant.
> >>>>>>> No argument here.
> >>>>>> Or, to be more precise, our status is driver status.
> >>>>> It looks like the device actually otherwise there's no need for
> >>>>> re-read or poll for things like reset and others.
> >>>> The need is there for complex device state transitions, which
> >>>> can not reasonably block a read response.
> >>>> Another standard approach with PCI is to specify the time
> >>>> transitions can take. I consider that less elegant -
> >>>> is this what you are advocating? The advantage is that
> >>>> driver does not load the pci bus with constant re-polling.
> >>>> The disadvantage is that it is hard to pick a universal
> >>>> number. A combination of these approaches might work,
> >>>> e.g. a recommended timeout then poll.
> >>> We've already had msleep() for vp_reset(), anyhow we can increase the
> >>> sleep time, if it can overload the pci:
> >>>
> >>> while (vp_modern_get_status(mdev))
> >>> msleep(1);
> >>>
> >>> We can do the same for suspending.
> >>>
> >>> The main blocker for timeout is that it may break migration and
> >>> complicate the hardening. Another proposal in the past is to have a
> >>> notification.
> >>>
> >>> But what I don't understand here is that suspend/resume should be
> >>> lighter than reset. If we can afford a reset, so did the
> >>> suspending/resume. If we want to have something new, that's fine but
> >>> it should be orthogonal to a specific new status bit?
> >> I agree, if we want new status indicator, then the new indicator should not be
> >> specific to SUSPEND.
> >>
> >> Thanks
> >> Zhu Lingshan
> > If you mean reset, we have a problem.
> > Specifically, reset has to work before feature
> > negotiation. So we can not do as we would with
> > SUSPEND and use a feature bit to expose presence
> > of the indicator register.
> I guess the driver can reset the device even after DRIVER_OK.
in fact, unlike suspend - at any point at all.
> IMHO the indicator should work for all device_status transitions,
> not only for RESET or SUSPEND, it should also apply for FEATURE_OK
> and DRIVER_OK.
I don't know what kind of transition is there for DRIVER/DRIVER_OK.
FEATURES_OK brings with it more issues, e.g. it can fail.
> So we don't need a feature bit, we may just
> place it in the common config space as you proposed before to
> define common config space for all transport. We can do this for sure!
I have to say, this project is really ballooning out ;)
> Of course another approach is what Jason proposed, the existing
> msleep and poll, driver knows whether the device is in progress
> of status transitions because it is the driver writes device_status.
>
> Thanks
or just a register for suspend transitions, worry about
extending it later/
> >
> > Regrettably, reset will have to still be supported
> > through clearing status just because this is always there.
> >
> >
> >>>>> Anyhow driver know
> >>>>> its own status.
> >>>>>
> >>>>> Thanks
> >>>> indeed, the status register is there to inform the device about
> >>>> the driver status.
> >>>>
> >>>>
> >>>>
> >>>>>> If we need
> >>>>>> to reflect and control device status, we need something else.
> >>>>>>
> >>> Thanks
> >>>
next prev parent reply other threads:[~2024-09-05 8:12 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-01 11:35 [PATCH V7 v7] virtio: introduce SUSPEND bit in device status Zhu Lingshan
2024-08-13 4:42 ` Parav Pandit
2024-08-13 5:44 ` Zhu Lingshan
2024-08-13 5:50 ` Parav Pandit
2024-08-13 6:14 ` Zhu Lingshan
2024-08-13 6:55 ` Parav Pandit
2024-08-15 8:23 ` Zhu Lingshan
2024-08-15 9:34 ` Parav Pandit
2024-08-30 2:31 ` Zhu Lingshan
2024-08-30 3:02 ` Parav Pandit
2024-09-03 9:05 ` Zhu Lingshan
2024-09-03 9:45 ` Michael S. Tsirkin
2024-09-03 10:09 ` Parav Pandit
2024-09-03 10:35 ` Michael S. Tsirkin
2024-09-03 10:37 ` Michael S. Tsirkin
2024-09-04 3:07 ` Jason Wang
2024-09-04 4:02 ` Michael S. Tsirkin
2024-09-04 6:31 ` Jason Wang
2024-09-04 6:38 ` Zhu Lingshan
2024-09-04 6:46 ` Parav Pandit
2024-09-05 7:14 ` Zhu Lingshan
2024-09-05 7:16 ` Parav Pandit
2024-09-05 7:29 ` Zhu Lingshan
2024-09-05 7:35 ` Parav Pandit
2024-09-05 8:30 ` Zhu Lingshan
2024-09-05 8:41 ` David Stevens
2024-09-06 1:53 ` Parav Pandit
2024-09-05 7:17 ` Michael S. Tsirkin
2024-09-05 7:31 ` Zhu Lingshan
2024-09-05 7:34 ` Parav Pandit
2024-09-05 6:51 ` Michael S. Tsirkin
2024-09-05 7:12 ` Zhu Lingshan
2024-09-05 8:12 ` Michael S. Tsirkin [this message]
2024-09-05 9:09 ` Zhu Lingshan
2024-09-06 1:54 ` Parav Pandit
2024-09-05 23:51 ` Jason Wang
2024-09-11 3:52 ` Zhu Lingshan
2024-09-11 10:20 ` Michael S. Tsirkin
2024-09-12 2:05 ` Jason Wang
2024-09-12 5:44 ` Michael S. Tsirkin
2024-09-24 7:35 ` Jason Wang
2024-09-24 23:05 ` Michael S. Tsirkin
2024-09-25 3:47 ` Jason Wang
2024-09-25 11:17 ` Michael S. Tsirkin
2024-09-27 4:08 ` Jason Wang
2024-09-29 17:55 ` Michael S. Tsirkin
2024-10-17 6:56 ` Jason Wang
2024-09-03 10:28 ` Parav Pandit
2024-09-05 7:20 ` Zhu Lingshan
2024-08-15 10:45 ` Michael S. Tsirkin
2024-08-30 2:32 ` Zhu Lingshan
2024-08-15 10:52 ` Michael S. Tsirkin
2024-08-15 10:59 ` Parav Pandit
2024-08-15 15:07 ` Michael S. Tsirkin
2024-08-17 5:19 ` Parav Pandit
2024-08-30 2:37 ` Zhu Lingshan
2024-08-30 3:10 ` Parav Pandit
2024-09-03 8:51 ` Zhu Lingshan
2024-09-03 8:55 ` Parav Pandit
2024-09-03 9:36 ` Michael S. Tsirkin
2024-09-05 7:27 ` Zhu Lingshan
2024-09-24 23:07 ` Michael S. Tsirkin
2024-08-13 7:51 ` Michael S. Tsirkin
2024-08-13 7:58 ` Parav Pandit
2024-08-13 8:03 ` Michael S. Tsirkin
2024-08-13 8:01 ` Michael S. Tsirkin
2024-08-15 9:12 ` Zhu Lingshan
2024-08-15 10:50 ` Michael S. Tsirkin
2024-08-30 2:20 ` Zhu Lingshan
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=20240905031759-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=cohuck@redhat.com \
--cc=eperezma@redhat.com \
--cc=jasowang@redhat.com \
--cc=lingshan.zhu@amd.com \
--cc=parav@nvidia.com \
--cc=stevensd@chromium.org \
--cc=virtio-comment@lists.linux.dev \
/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.