All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Max Gurtovoy <mgurtovoy@nvidia.com>
Cc: Cornelia Huck <cohuck@redhat.com>,
	jasowang@redhat.com, virtio-comment@lists.oasis-open.org,
	virtio-dev@lists.oasis-open.org, oren@nvidia.com,
	parav@nvidia.com, shahafs@nvidia.com, aadam@redhat.com,
	virtio@lists.oasis-open.org
Subject: Re: [virtio-comment] Re: [PATCH v5 2/7] Introduce admin command set
Date: Mon, 20 Jun 2022 18:26:01 -0400	[thread overview]
Message-ID: <20220620170913-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <1a323f19-6651-c2e1-73c7-2e8b5213a24d@nvidia.com>

On Wed, May 18, 2022 at 05:16:13PM +0300, Max Gurtovoy wrote:
> 
> On 5/18/2022 4:50 PM, Cornelia Huck wrote:
> > On Wed, May 18 2022, Max Gurtovoy <mgurtovoy@nvidia.com> wrote:
> > 
> > > On 5/15/2022 6:23 PM, Michael S. Tsirkin wrote:
> > > > On Wed, Apr 27, 2022 at 01:58:19AM +0300, Max Gurtovoy wrote:
> > > > > This command set is used for essential administrative and management
> > > > > operations.
> > > > > 
> > > > > Admin commands should be submitted to a well defined management
> > > > > interface.
> > > > > 
> > > > > Reviewed-by: Parav Pandit <parav@nvidia.com>
> > > > > Signed-off-by: Max Gurtovoy <mgurtovoy@nvidia.com>
> > > > > ---
> > > > >    admin.tex   | 123 ++++++++++++++++++++++++++++++++++++++++++++++++++++
> > > > >    content.tex |   2 +
> > > > >    2 files changed, 125 insertions(+)
> > > > >    create mode 100644 admin.tex
> > > > > 
> > > > > +The VIRTIO_ADMIN_DEVICE_CAPS_ACCEPT command is used by the driver to acknowledge those admin capabilities it understands and wishes to use.
> > > > ok so we have a protocol here, kind of like feature negotiation. Please write its description.
> > > > e.g. is it ok to change accepted caps? when? can device change its caps
> > > > etc etc etc.
> > > I don't understand what does this mean to change a cap ?
> > > 
> > > Device can offer a cap and driver can accept it if it wishes to use it.
> > > 
> > > That is it.
> > > 
> > > I added this mechanism just for your request.
> > > 
> > > I never saw a device that asks acceptance from driver but I did my best
> > > to fulfill your request.
> > > 
> > > > Avoiding this kind of spec work is exactly why me and jason keep telling
> > > > you to consider just using features instead. Add a 64 bit admin features
> > > > field to the PCI transport and be done with it. CCW and MMIO already
> > > > have feature selector so it's trivial to add feature bits.
> > > It's not scalable for admin mechanism and I don't want to perform 100
> > > write/read from configuration space instead of doing all in 1 admin command.
> > Why use the config space for that; just use feature bits, there are
> > enough of those, and we already have a defined protocol.
> 
> can you please propose something concrete ?
> 
> that will be scalable and will not add complexity to the feature negotiation
> mechanism we have today ?

I think you just say: "feature bits 64 to 127 are reserved for management
purposes" or something to this end. Then each command (or a group if
they are related) maps to a feature bit.

There's a cost in that the feature bits map to driver feature bits
which are writeable on device memory. But the cost scales well as
it's per group and not per device in a group.


> > 
> > > > 
> > > > > +The \field{command} is set to VIRTIO_ADMIN_DEVICE_CAPS_ACCEPT by the driver.
> > > > > +
> > > > > +The command specific data set by the driver is of form:
> > > > > +\begin{lstlisting}
> > > > > +struct virtio_admin_device_caps_accept_data {
> > > > > +       /* Indicates which of the below fields were set
> > > > > +        * (1 means that field is set):
> > > > yes we all know that 1 means set.
> > > > 
> > > > do you really mean field is valid maybe?
> > > yes valid == set.
> > > > 
> > > > > +        * Bit 0 - driver_admin_caps
> > > > > +        * Bits 1 - 63 - reserved for future fields
> > > > > +        */
> > > > > +       le64 attrs_mask;
> > > > looks like going overboard. just send 64 caps bits and be done with it.
> > > > and rename accept_data to accept_caps.
> > > this is the command specific data.
> > > > > +       /* This field indicates which of the below admin
> > > > > +        * capabilities are supported by the driver:
> > > > > +        * Bits 0 - 63 - reserved for future capabilities.
> > > > > +        */
> > > > > +       le64 driver_admin_caps;
> > > > > +       u8 reserved[112];
> > > > I just noticed this. Please do not add this huge amount of padding
> > > > everywhere. instead, explain that device must be ready to accept
> > > > a smaller or larger buffer depending on feature bits.
> > > It's not huge. It's 128B command data.
> > > 
> > > We will be sorry in the future for not doing extendable API.
> > > 
> > > I prefer keep it 128B unless there is a concrete reason for not doing so.
> > So just use a variable length structure, that should be extendable for
> > all future use cases.
> 
> I don't know how to develop compatible HW that use variable length
> structure.

There's a length field accompanying each descriptor.

> And why ? without any good reason.

To save memory space if we ever map the commands to memory: it's a
limited resource, often limited to 32 bit, but sometimes even to 16 bit.

-- 
MST


  reply	other threads:[~2022-06-20 22:26 UTC|newest]

Thread overview: 103+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-26 22:58 [PATCH v5 0/7] Introduce device group and device management Max Gurtovoy
2022-04-26 22:58 ` [virtio-comment] [PATCH v5 1/7] Introduce device group Max Gurtovoy
2022-05-15 15:25   ` Michael S. Tsirkin
2022-05-18 13:14     ` [virtio-comment] " Max Gurtovoy
2022-05-18 13:32       ` Cornelia Huck
2022-06-01 13:43         ` Max Gurtovoy
2022-06-02  2:21           ` Jason Wang
2022-06-02  6:59             ` Michael S. Tsirkin
2022-06-27 21:52               ` Max Gurtovoy
2022-06-28 18:54                 ` Michael S. Tsirkin
2022-07-06 11:25                   ` Max Gurtovoy
2022-07-06 11:42                     ` Michael S. Tsirkin
2022-07-06 12:01                       ` Max Gurtovoy
2022-07-06 12:23                         ` Michael S. Tsirkin
2022-07-06 15:18                           ` Max Gurtovoy
2022-04-26 22:58 ` [PATCH v5 2/7] Introduce admin command set Max Gurtovoy
2022-05-15 15:23   ` Michael S. Tsirkin
2022-05-16 21:08     ` [virtio-comment] " Parav Pandit
2022-05-17 10:08       ` [virtio-dev] " Cornelia Huck
2022-05-18 13:42         ` Max Gurtovoy
2022-05-17 11:48       ` Michael S. Tsirkin
2022-05-18 14:09         ` Max Gurtovoy
2022-05-18 14:42           ` [virtio] " Cornelia Huck
2022-05-18 14:48             ` Max Gurtovoy
2022-05-31 20:39         ` Parav Pandit
2022-06-20  9:23           ` Michael S. Tsirkin
2022-06-20  9:49             ` Michael S. Tsirkin
2022-06-20  9:59           ` Michael S. Tsirkin
2022-06-20 11:06             ` Parav Pandit
2022-06-20 16:46               ` Michael S. Tsirkin
2022-06-20 16:54                 ` Max Gurtovoy
2022-06-20 17:04                   ` Michael S. Tsirkin
2022-06-20 17:19                     ` Parav Pandit
2022-06-20 20:53                       ` Michael S. Tsirkin
2022-06-20 23:54                         ` Parav Pandit
2022-06-20 17:16                 ` Parav Pandit
2022-06-23  1:26               ` Jason Wang
2022-06-23  2:07                 ` Parav Pandit
2022-06-23  2:41                   ` Jason Wang
2022-06-23  2:57                     ` Parav Pandit
2022-06-23  3:34                       ` Jason Wang
2022-06-28 14:24                         ` Michael S. Tsirkin
2022-06-29  8:43                           ` Jason Wang
2022-06-29  9:02                             ` Michael S. Tsirkin
2022-06-30  1:53                               ` Jason Wang
2022-05-18 13:39     ` [virtio-comment] " Max Gurtovoy
2022-05-18 13:50       ` [virtio] " Cornelia Huck
2022-05-18 14:16         ` Max Gurtovoy
2022-06-20 22:26           ` Michael S. Tsirkin [this message]
2022-06-20 21:08       ` Michael S. Tsirkin
2022-04-26 22:58 ` [PATCH v5 3/7] Introduce new destination type for admin commands Max Gurtovoy
2022-05-15 15:01   ` Michael S. Tsirkin
2022-05-18 14:27     ` [virtio-comment] " Max Gurtovoy
2022-05-15 15:09   ` Michael S. Tsirkin
2022-05-16 21:21     ` Parav Pandit
2022-05-16 23:33       ` Michael S. Tsirkin
2022-05-18 14:36         ` Max Gurtovoy
2022-05-18 14:34     ` Max Gurtovoy
2022-05-18 23:55       ` Michael S. Tsirkin
2022-04-26 22:58 ` [PATCH v5 4/7] Introduce virtio admin virtqueue Max Gurtovoy
2022-05-15 14:59   ` Michael S. Tsirkin
2022-05-18 14:37     ` Max Gurtovoy
2022-05-18 23:56       ` Michael S. Tsirkin
2022-04-26 22:58 ` [PATCH v5 5/7] Add miscellaneous configuration structure for PCI Max Gurtovoy
2022-05-15 14:49   ` Michael S. Tsirkin
2022-06-01 14:46     ` Max Gurtovoy
2022-05-15 14:57   ` Michael S. Tsirkin
2022-05-17 10:12     ` [virtio] " Cornelia Huck
2022-05-18 14:42       ` Max Gurtovoy
2022-05-18 23:58         ` Michael S. Tsirkin
2022-04-26 22:58 ` [PATCH v5 6/7] Introduce MGMT admin commands Max Gurtovoy
2022-05-15 14:37   ` Michael S. Tsirkin
2022-05-16 21:47     ` Parav Pandit
2022-05-17 12:31       ` [virtio-comment] " Michael S. Tsirkin
2022-05-18 15:14         ` Max Gurtovoy
2022-05-17  2:28     ` Jason Wang
2022-05-18 15:27       ` Max Gurtovoy
2022-05-18 16:41         ` Michael S. Tsirkin
2022-05-18 23:10           ` Max Gurtovoy
2022-05-18 15:03     ` Max Gurtovoy
2022-06-20  9:45       ` Michael S. Tsirkin
2022-04-26 22:58 ` [PATCH v5 7/7] RFC: add initial support for configuring feature bits Max Gurtovoy
2022-05-15 14:38   ` Michael S. Tsirkin
2022-05-18 15:31     ` Max Gurtovoy
2022-05-18 16:34       ` Michael S. Tsirkin
2022-05-18 23:18         ` Max Gurtovoy
2022-05-15 15:27 ` [PATCH v5 0/7] Introduce device group and device management Michael S. Tsirkin
2022-05-18 15:32   ` Max Gurtovoy
2022-07-05 13:56 ` Michael S. Tsirkin
2022-07-05 15:11   ` [virtio-comment] " Parav Pandit
2022-07-06  2:54     ` [virtio-dev] " Jason Wang
2022-07-06 10:10       ` Michael S. Tsirkin
2022-07-06 10:46       ` [virtio-comment] " Parav Pandit
2022-07-06 11:00     ` Michael S. Tsirkin
2022-07-06 20:45       ` Parav Pandit
2022-07-24 21:09         ` Michael S. Tsirkin
2022-07-24 21:25           ` [virtio-comment] " Parav Pandit
2022-07-24 23:41             ` Michael S. Tsirkin
2022-07-25  2:53               ` [virtio-comment] " Parav Pandit
2022-07-25  7:44                 ` Michael S. Tsirkin
2022-07-30 13:21                   ` [virtio-comment] " Parav Pandit
2022-07-31 15:38                     ` Michael S. Tsirkin
2022-08-02 17:40                       ` Parav Pandit

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=20220620170913-mutt-send-email-mst@kernel.org \
    --to=mst@redhat.com \
    --cc=aadam@redhat.com \
    --cc=cohuck@redhat.com \
    --cc=jasowang@redhat.com \
    --cc=mgurtovoy@nvidia.com \
    --cc=oren@nvidia.com \
    --cc=parav@nvidia.com \
    --cc=shahafs@nvidia.com \
    --cc=virtio-comment@lists.oasis-open.org \
    --cc=virtio-dev@lists.oasis-open.org \
    --cc=virtio@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.