All of lore.kernel.org
 help / color / mirror / Atom feed
From: Parav Pandit <parav@nvidia.com>
To: Cornelia Huck <cohuck@redhat.com>,
	"virtio-dev@lists.oasis-open.org"
	<virtio-dev@lists.oasis-open.org>
Cc: Max Gurtovoy <mgurtovoy@nvidia.com>,
	Shahaf Shuler <shahafs@nvidia.com>, Oren Duer <oren@nvidia.com>
Subject: RE: [virtio-dev] [PATCH] Add device reset timeout field
Date: Fri, 1 Oct 2021 12:25:11 +0000	[thread overview]
Message-ID: <PH0PR12MB548116BD0816E447A3F2CDDDDCAB9@PH0PR12MB5481.namprd12.prod.outlook.com> (raw)
In-Reply-To: <87y27d2bup.fsf@redhat.com>


> From: Cornelia Huck <cohuck@redhat.com>
> Sent: Friday, October 1, 2021 5:31 PM
> 
> On Thu, Sep 30 2021, Parav Pandit <parav@nvidia.com> wrote:
> 
[..]

> > +Once the driver initiates a reset, the device may not be able to
> > +finish the reset immediately. Such device provides a hint to the
> > +driver about how long a device may take to complete the reset. Driver
> > +should wait at least for the time specified by the device to let
> > +device finish the reset or if the device status field to become 0 within the
> specified time interval.
> 
> Would such a timeout also apply to the virtqueue reset that is discussed
> elsewhere on the virtio lists?
> 
No. I haven't read that thread fully but device reset timeout is not intent to solve all the timeouts.
It is intent to have the specific purpose described in this proposal.

> Can transports specify what can actually time out? For example, for an
> asynchronous transport like ccw, it might make sense to have the timeout
> apply to the interrupt that is supposed to come in for the RESET command (the
> driver then can try to terminate the running command, if desired.)
> 
> > +Such driver initialization sequence specified in \ref{sec:General
> > +Initialization And Device Operation / Device Initialization}.
> 
> I'm sorry, I don't parse that statement.
It is similar statement that exists in "Driver Requirements" section as first line.
Do you mean I should rewrite above sentence or?

> 
> > +
> >  \devicenormative{\subsection}{Device Status Field}{Basic Facilities
> > of a Virtio Device / Device Status Field}
> >
> >  The device MUST NOT consume buffers or send any used buffer @@
> > -210,11 +219,20 @@ \section{Device Reset}\label{sec:Basic Facilities
> > of a Virtio Device / Device Re  indicating completion of the reset by
> > reinitializing \field{device status}  to 0, until the driver re-initializes the
> device.
> >
> > +A device may not be able to complete reset action when the driver initiates
> a reset operation.
> > +Such a device should provide the hint as to how long a device may take to
> finish the reset operation.
> > +This hint is provided by the device using device reset timeout field in units
> of 10 milliseconds.
> 
> Is this supposed to go into the device config space? Or can each transport
> decide how to expose the value?
>
Isn't each transport define how a config space is accessible?
In this proposal for PCI it is part of the struct virtio_pci_common_cfg.

 > > +
> >  \drivernormative{\subsection}{Device Reset}{Basic Facilities of a
> > Virtio Device / Device Reset}
> >
> >  The driver SHOULD consider a driver-initiated reset complete when it
> > reads \field{device status} as 0.
> >
> > +When a device reports a non-zero device reset timeout value, the
> > +driver SHOULD wait for the device to finish the reset action during
> > +the initialization sequence before giving up on the device. When
> > +device reset timeout is not provided by the device, driver SHOULD choose a
> reasonable timeout value for reset operation to complete.
> 
> Is the driver allowed to not time the reset action out at all?
> 
Which is what is being done by the Linux driver today.
Not sure I follow the question.
As virtio spec follows RFC 2119, driver is recommended to time the reset with above text description.

> What does "giving up on the device" imply? 
I should probably better write it as " action during the initialization sequence before declaring the device as unable_to_reset".

> Can the driver perform some
> recovery actions (e.g for ccw, the driver may be able to terminate the running
> reset command and re-try)?
>
Will that retry help to recover the device? If so, what is the new operation that helps in recovery?
 
> What about a reset that is done outside of the initialization sequence?
In general reset leads to device re-initialization. Isn't it?
Can a virtio device be reset without initialization or re-initialization?

> 
> (...)
> 
> > @@ -6673,6 +6711,11 @@ \chapter{Reserved Feature
> Bits}\label{sec:Reserved Feature Bits}
> >    transport specific.
> >    For more details about driver notifications over PCI see \ref{sec:Virtio
> Transport Options / Virtio Over PCI Bus / PCI-specific Initialization And Device
> Operation / Available Buffer Notifications}.
> >
> > +  \item[VIRTIO_F_DEV_RESET_TO(40)] This feature indicates that the
> > + device
> 
> I think we should spell this out as VIRTIO_F_DEV_RESET_TIMEOUT 
Ok. I will revise it in v2.


  reply	other threads:[~2021-10-01 12:25 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-30  9:17 [virtio-dev] [PATCH] Add device reset timeout field Parav Pandit
2021-10-01 12:01 ` Cornelia Huck
2021-10-01 12:25   ` Parav Pandit [this message]
2021-10-04 15:38     ` Cornelia Huck
2021-10-05  3:16       ` Parav Pandit
2021-10-05  6:47         ` Cornelia Huck
2021-10-05  8:42           ` Parav Pandit
2021-10-06  8:35             ` Max Gurtovoy

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=PH0PR12MB548116BD0816E447A3F2CDDDDCAB9@PH0PR12MB5481.namprd12.prod.outlook.com \
    --to=parav@nvidia.com \
    --cc=cohuck@redhat.com \
    --cc=mgurtovoy@nvidia.com \
    --cc=oren@nvidia.com \
    --cc=shahafs@nvidia.com \
    --cc=virtio-dev@lists.oasis-open.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 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.