* Re: [RFC PATCH 1/1] virtio: write back features before verify
[not found] ` <20211003021027-mutt-send-email-mst@kernel.org>
@ 2021-10-03 7:26 ` Michael S. Tsirkin
2021-10-04 12:01 ` [virtio-dev] " Cornelia Huck
0 siblings, 1 reply; 11+ messages in thread
From: Michael S. Tsirkin @ 2021-10-03 7:26 UTC (permalink / raw)
To: Halil Pasic
Cc: Cornelia Huck, Jason Wang, Xie Yongji, virtualization,
linux-kernel, markver, Christian Borntraeger, linux-s390,
virtio-dev
On Sun, Oct 03, 2021 at 02:42:30AM -0400, Michael S. Tsirkin wrote:
> On Sun, Oct 03, 2021 at 07:00:30AM +0200, Halil Pasic wrote:
> > On Sat, 2 Oct 2021 14:20:47 -0400
> > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> >
> > > > >From my perspective the problem is that the version of the device
> > > > remains in limbo as long as the features have not yet been finalized,
> > > > which means that the endianness of the config space remains in limbo as
> > > > well. Both device and driver might come to different conclusions.
> > >
> > > Version === legacy versus modern?
> > > It is true that feature negotiation can not be used by device to decide that
> > > question simply because it happens too late.
> > > So let's not use it for that then ;)
> > >
> > > Yes we have VERSION_1 which looks like it should allow this, but
> > > unfortunately it only helps with that for the driver, not the device.
> > >
> > > In practice legacy versus modern has to be determined by
> > > transport specific versioning, luckily we have that for all
> > > specified transports (can't say what happens with rproc).
> >
> > So if we look at ccw, you say that the revision negotiation already
> > determines whether VERSION_1 is negotiated or not, and the
> > feature bit VERSION_1 is superfluous?
> >
> > That would also imply, that
> > 1) if revision > 0 was negotiated then the device must offer VERSION_1
> > 2) if revision > 0 was negotiated and the driver cleared VERSION_1
> > the device must refuse to operate.
> > 3) if revision > 0 was negotiated then the driver should reject
> > to drive a device if it does not offer VERSION_1
> > 4) if revision > 0 was negotiated the driver must accept VERSION_1
> > 5) if revision > 0 was *not* negotiated then the device should not offer
> > VERSION_1 because at this point it is already certain that the device
> > can not act in accordance to the virtio 1.0 or higher interface.
> >
> > Does that sound about right?
>
> To me, it does.
>
> > IMHO we should also change
> > https://docs.oasis-open.org/virtio/virtio/v1.1/cs01/virtio-v1.1-cs01.html#x1-160003
> > and the definition of VERSION_1 because both sides have to know what is
> > going on before features are fully negotiated. Or?
> >
> > Regards,
> > Halil
> >
>
> I guess so. And I guess we need transport-specific sections
> describing this behaviour for each transport.
>
> So something like this, for starters?
Sent too early. So here's what I propose. Could you pls take a look
and if you like this, post a ccw section?
There's also an attempt to prevent fallback from modern to legacy
here since if driver does fallback then failing FEATURES_OK can't work
properly.
That's a separate issue, will be a separate patch when I post
this for consideration by the TC.
diff --git a/content.tex b/content.tex
index 1398390..06271f4 100644
--- a/content.tex
+++ b/content.tex
@@ -140,10 +140,13 @@ \subsection{Legacy Interface: A Note on Feature
Bits}\label{sec:Basic Facilities of a Virtio Device / Feature
Bits / Legacy Interface: A Note on Feature Bits}
-Transitional Drivers MUST detect Legacy Devices by detecting that
-the feature bit VIRTIO_F_VERSION_1 is not offered.
-Transitional devices MUST detect Legacy drivers by detecting that
-VIRTIO_F_VERSION_1 has not been acknowledged by the driver.
+Transitional drivers MAY support operating legacy devices.
+Transitional devices MAY support operation by legacy drivers.
+
+Transitional drivers MUST detect legacy devices in a way that is
+transport specific.
+Transitional devices MUST detect legacy drivers in a way that
+is transport specific.
In this case device is used through the legacy interface.
@@ -160,6 +163,33 @@ \subsection{Legacy Interface: A Note on Feature
Specification text within these sections generally does not apply
to non-transitional devices.
+\begin{note}
+The device offers different features when used through
+the legacy interface and when operated in accordance with this
+specification.
+\end{note}
+
+Transitional drivers MUST use Devices only through the legacy interface
+if the feature bit VIRTIO_F_VERSION_1 is not offered.
+Transitional devices MUST NOT offer VIRTIO_F_VERSION_1 when used through
+the legacy interface.
+
+When the driver uses a device through the legacy interface, then it
+MUST only accept the features the device offered through the
+legacy interface.
+
+When used through the legacy interface, the device SHOULD
+validate that the driver only accepted the features it
+offered through the legacy interface.
+
+When operating a transitional device, a transitional driver
+SHOULD NOT use the device through the legacy interface if
+operation through the modern interface has failed.
+In particular, a transitional driver
+SHOULD NOT fall back to using the device through the
+legacy interface if feature negotiation failed
+(since that would defeat the purpose of the FEATURES_OK bit).
+
\section{Notifications}\label{sec:Basic Facilities of a Virtio Device
/ Notifications}
@@ -1003,6 +1033,12 @@ \subsubsection{Common configuration structure layout}\label{sec:Virtio Transport
The driver MUST NOT write a 0 to \field{queue_enable}.
+\paragraph}{Legacy Interface: Common configuration structure layout}\label{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Legacy Interface: Common configuration structure layout}
+Transitional drivers SHOULD detect legacy devices by detecting
+that the device has the Transitional PCI Device ID in
+the range 0x1000 to 0x103f and lacks a VIRTIO_PCI_CAP_COMMON_CFG
+capability specifying the location of a common configuration structure.
+
\subsubsection{Notification structure layout}\label{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Notification capability}
The notification location is found using the VIRTIO_PCI_CAP_NOTIFY_CFG
@@ -1288,6 +1324,10 @@ \subsubsection{Legacy Interfaces: A Note on PCI Device Layout}\label{sec:Virtio
Transitional devices MUST present part of configuration
registers in a legacy configuration structure in BAR0 in the first I/O
region of the PCI device, as documented below.
+
+Transitional devices SHOULD detect legacy drivers by detecting
+access to the legacy configuration structure.
+
When using the legacy interface, transitional drivers
MUST use the legacy configuration structure in BAR0 in the first
I/O region of the PCI device, as documented below.
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [virtio-dev] Re: [RFC PATCH 1/1] virtio: write back features before verify
2021-10-03 7:26 ` [RFC PATCH 1/1] virtio: write back features before verify Michael S. Tsirkin
@ 2021-10-04 12:01 ` Cornelia Huck
2021-10-04 12:54 ` Michael S. Tsirkin
0 siblings, 1 reply; 11+ messages in thread
From: Cornelia Huck @ 2021-10-04 12:01 UTC (permalink / raw)
To: Michael S. Tsirkin, Halil Pasic
Cc: Jason Wang, Xie Yongji, virtualization, linux-kernel, markver,
Christian Borntraeger, linux-s390, virtio-dev
On Sun, Oct 03 2021, "Michael S. Tsirkin" <mst@redhat.com> wrote:
> Sent too early. So here's what I propose. Could you pls take a look
> and if you like this, post a ccw section?
We have not talked about the mmio transport so far, but I guess it
should be fine as legacy and standard are separated.
> There's also an attempt to prevent fallback from modern to legacy
> here since if driver does fallback then failing FEATURES_OK can't work
> properly.
> That's a separate issue, will be a separate patch when I post
> this for consideration by the TC.
>
>
> diff --git a/content.tex b/content.tex
> index 1398390..06271f4 100644
> --- a/content.tex
> +++ b/content.tex
> @@ -140,10 +140,13 @@ \subsection{Legacy Interface: A Note on Feature
> Bits}\label{sec:Basic Facilities of a Virtio Device / Feature
> Bits / Legacy Interface: A Note on Feature Bits}
>
> -Transitional Drivers MUST detect Legacy Devices by detecting that
> -the feature bit VIRTIO_F_VERSION_1 is not offered.
> -Transitional devices MUST detect Legacy drivers by detecting that
> -VIRTIO_F_VERSION_1 has not been acknowledged by the driver.
> +Transitional drivers MAY support operating legacy devices.
> +Transitional devices MAY support operation by legacy drivers.
Why 'MAY'? Isn't the whole point of transitional that it can deal with
both?
> +
> +Transitional drivers MUST detect legacy devices in a way that is
> +transport specific.
> +Transitional devices MUST detect legacy drivers in a way that
> +is transport specific.
>
> In this case device is used through the legacy interface.
>
> @@ -160,6 +163,33 @@ \subsection{Legacy Interface: A Note on Feature
> Specification text within these sections generally does not apply
> to non-transitional devices.
>
> +\begin{note}
> +The device offers different features when used through
> +the legacy interface and when operated in accordance with this
> +specification.
> +\end{note}
> +
> +Transitional drivers MUST use Devices only through the legacy interface
s/Devices only through the legacy interface/devices through the legacy
interface only/
?
> +if the feature bit VIRTIO_F_VERSION_1 is not offered.
> +Transitional devices MUST NOT offer VIRTIO_F_VERSION_1 when used through
> +the legacy interface.
> +
> +When the driver uses a device through the legacy interface, then it
> +MUST only accept the features the device offered through the
> +legacy interface.
> +
> +When used through the legacy interface, the device SHOULD
> +validate that the driver only accepted the features it
> +offered through the legacy interface.
> +
> +When operating a transitional device, a transitional driver
> +SHOULD NOT use the device through the legacy interface if
> +operation through the modern interface has failed.
> +In particular, a transitional driver
> +SHOULD NOT fall back to using the device through the
> +legacy interface if feature negotiation failed
> +(since that would defeat the purpose of the FEATURES_OK bit).
> +
> \section{Notifications}\label{sec:Basic Facilities of a Virtio Device
> / Notifications}
>
> @@ -1003,6 +1033,12 @@ \subsubsection{Common configuration structure layout}\label{sec:Virtio Transport
>
> The driver MUST NOT write a 0 to \field{queue_enable}.
>
> +\paragraph}{Legacy Interface: Common configuration structure layout}\label{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Legacy Interface: Common configuration structure layout}
> +Transitional drivers SHOULD detect legacy devices by detecting
> +that the device has the Transitional PCI Device ID in
> +the range 0x1000 to 0x103f and lacks a VIRTIO_PCI_CAP_COMMON_CFG
> +capability specifying the location of a common configuration structure.
> +
> \subsubsection{Notification structure layout}\label{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Notification capability}
>
> The notification location is found using the VIRTIO_PCI_CAP_NOTIFY_CFG
> @@ -1288,6 +1324,10 @@ \subsubsection{Legacy Interfaces: A Note on PCI Device Layout}\label{sec:Virtio
> Transitional devices MUST present part of configuration
> registers in a legacy configuration structure in BAR0 in the first I/O
> region of the PCI device, as documented below.
> +
> +Transitional devices SHOULD detect legacy drivers by detecting
> +access to the legacy configuration structure.
> +
> When using the legacy interface, transitional drivers
> MUST use the legacy configuration structure in BAR0 in the first
> I/O region of the PCI device, as documented below.
Generally, looks good to me.
---------------------------------------------------------------------
To unsubscribe, e-mail: virtio-dev-unsubscribe@lists.oasis-open.org
For additional commands, e-mail: virtio-dev-help@lists.oasis-open.org
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [RFC PATCH 1/1] virtio: write back features before verify
2021-10-04 12:01 ` [virtio-dev] " Cornelia Huck
@ 2021-10-04 12:54 ` Michael S. Tsirkin
2021-10-04 14:27 ` [virtio-dev] " Cornelia Huck
0 siblings, 1 reply; 11+ messages in thread
From: Michael S. Tsirkin @ 2021-10-04 12:54 UTC (permalink / raw)
To: Cornelia Huck
Cc: Halil Pasic, Jason Wang, Xie Yongji, virtualization, linux-kernel,
markver, Christian Borntraeger, linux-s390, virtio-dev
On Mon, Oct 04, 2021 at 02:01:14PM +0200, Cornelia Huck wrote:
> On Sun, Oct 03 2021, "Michael S. Tsirkin" <mst@redhat.com> wrote:
>
> > Sent too early. So here's what I propose. Could you pls take a look
> > and if you like this, post a ccw section?
>
> We have not talked about the mmio transport so far, but I guess it
> should be fine as legacy and standard are separated.
>
> > There's also an attempt to prevent fallback from modern to legacy
> > here since if driver does fallback then failing FEATURES_OK can't work
> > properly.
> > That's a separate issue, will be a separate patch when I post
> > this for consideration by the TC.
> >
> >
> > diff --git a/content.tex b/content.tex
> > index 1398390..06271f4 100644
> > --- a/content.tex
> > +++ b/content.tex
> > @@ -140,10 +140,13 @@ \subsection{Legacy Interface: A Note on Feature
> > Bits}\label{sec:Basic Facilities of a Virtio Device / Feature
> > Bits / Legacy Interface: A Note on Feature Bits}
> >
> > -Transitional Drivers MUST detect Legacy Devices by detecting that
> > -the feature bit VIRTIO_F_VERSION_1 is not offered.
> > -Transitional devices MUST detect Legacy drivers by detecting that
> > -VIRTIO_F_VERSION_1 has not been acknowledged by the driver.
> > +Transitional drivers MAY support operating legacy devices.
> > +Transitional devices MAY support operation by legacy drivers.
>
> Why 'MAY'? Isn't the whole point of transitional that it can deal with
> both?
I guess. OK we can make it MUST.
> > +
> > +Transitional drivers MUST detect legacy devices in a way that is
> > +transport specific.
> > +Transitional devices MUST detect legacy drivers in a way that
> > +is transport specific.
> >
> > In this case device is used through the legacy interface.
> >
> > @@ -160,6 +163,33 @@ \subsection{Legacy Interface: A Note on Feature
> > Specification text within these sections generally does not apply
> > to non-transitional devices.
> >
> > +\begin{note}
> > +The device offers different features when used through
> > +the legacy interface and when operated in accordance with this
> > +specification.
> > +\end{note}
> > +
> > +Transitional drivers MUST use Devices only through the legacy interface
>
> s/Devices only through the legacy interface/devices through the legacy
> interface only/
>
> ?
Both versions are actually confused, since how do you
find out that device does not offer VIRTIO_F_VERSION_1?
I think what this should really say is
Transitional drivers MUST NOT accept VIRTIO_F_VERSION_1 through
the legacy interface.
Does linux actually satisfy this? Will it accept VIRTIO_F_VERSION_1
through the legacy interface if offered?
> > +if the feature bit VIRTIO_F_VERSION_1 is not offered.
> > +Transitional devices MUST NOT offer VIRTIO_F_VERSION_1 when used through
> > +the legacy interface.
> > +
> > +When the driver uses a device through the legacy interface, then it
> > +MUST only accept the features the device offered through the
> > +legacy interface.
> > +
> > +When used through the legacy interface, the device SHOULD
> > +validate that the driver only accepted the features it
> > +offered through the legacy interface.
> > +
> > +When operating a transitional device, a transitional driver
> > +SHOULD NOT use the device through the legacy interface if
> > +operation through the modern interface has failed.
> > +In particular, a transitional driver
> > +SHOULD NOT fall back to using the device through the
> > +legacy interface if feature negotiation failed
> > +(since that would defeat the purpose of the FEATURES_OK bit).
> > +
> > \section{Notifications}\label{sec:Basic Facilities of a Virtio Device
> > / Notifications}
> >
> > @@ -1003,6 +1033,12 @@ \subsubsection{Common configuration structure layout}\label{sec:Virtio Transport
> >
> > The driver MUST NOT write a 0 to \field{queue_enable}.
> >
> > +\paragraph}{Legacy Interface: Common configuration structure layout}\label{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Legacy Interface: Common configuration structure layout}
> > +Transitional drivers SHOULD detect legacy devices by detecting
> > +that the device has the Transitional PCI Device ID in
> > +the range 0x1000 to 0x103f and lacks a VIRTIO_PCI_CAP_COMMON_CFG
> > +capability specifying the location of a common configuration structure.
> > +
> > \subsubsection{Notification structure layout}\label{sec:Virtio Transport Options / Virtio Over PCI Bus / PCI Device Layout / Notification capability}
> >
> > The notification location is found using the VIRTIO_PCI_CAP_NOTIFY_CFG
> > @@ -1288,6 +1324,10 @@ \subsubsection{Legacy Interfaces: A Note on PCI Device Layout}\label{sec:Virtio
> > Transitional devices MUST present part of configuration
> > registers in a legacy configuration structure in BAR0 in the first I/O
> > region of the PCI device, as documented below.
> > +
> > +Transitional devices SHOULD detect legacy drivers by detecting
> > +access to the legacy configuration structure.
> > +
> > When using the legacy interface, transitional drivers
> > MUST use the legacy configuration structure in BAR0 in the first
> > I/O region of the PCI device, as documented below.
>
> Generally, looks good to me.
Do we want to also add explanation that features can be
changed until FEATURES_OK?
^ permalink raw reply [flat|nested] 11+ messages in thread
* [virtio-dev] Re: [RFC PATCH 1/1] virtio: write back features before verify
2021-10-04 12:54 ` Michael S. Tsirkin
@ 2021-10-04 14:27 ` Cornelia Huck
2021-10-04 15:05 ` Michael S. Tsirkin
0 siblings, 1 reply; 11+ messages in thread
From: Cornelia Huck @ 2021-10-04 14:27 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: Halil Pasic, Jason Wang, Xie Yongji, virtualization, linux-kernel,
markver, Christian Borntraeger, linux-s390, virtio-dev
On Mon, Oct 04 2021, "Michael S. Tsirkin" <mst@redhat.com> wrote:
> On Mon, Oct 04, 2021 at 02:01:14PM +0200, Cornelia Huck wrote:
>> On Sun, Oct 03 2021, "Michael S. Tsirkin" <mst@redhat.com> wrote:
>> > @@ -160,6 +163,33 @@ \subsection{Legacy Interface: A Note on Feature
>> > Specification text within these sections generally does not apply
>> > to non-transitional devices.
>> >
>> > +\begin{note}
>> > +The device offers different features when used through
>> > +the legacy interface and when operated in accordance with this
>> > +specification.
>> > +\end{note}
>> > +
>> > +Transitional drivers MUST use Devices only through the legacy interface
>>
>> s/Devices only through the legacy interface/devices through the legacy
>> interface only/
>>
>> ?
>
> Both versions are actually confused, since how do you
> find out that device does not offer VIRTIO_F_VERSION_1?
>
> I think what this should really say is
>
> Transitional drivers MUST NOT accept VIRTIO_F_VERSION_1 through
> the legacy interface.
Ok, that makes sense.
Would it make sense that transitional drivers MUST accept VERSION_1
through the non-legacy interface? Or is that redundant?
>
>
> Does linux actually satisfy this? Will it accept VIRTIO_F_VERSION_1
> through the legacy interface if offered?
I think that the Linux drivers will not operate on feature bit 32+ if
they are in legacy mode?
>>
>> Generally, looks good to me.
>
> Do we want to also add explanation that features can be
> changed until FEATURES_OK?
I always considered that to be implict, as feature negotiation is not
over until we have FEATURES_OK. Not sure whether we need an extra note.
---------------------------------------------------------------------
To unsubscribe, e-mail: virtio-dev-unsubscribe@lists.oasis-open.org
For additional commands, e-mail: virtio-dev-help@lists.oasis-open.org
^ permalink raw reply [flat|nested] 11+ messages in thread
* [virtio-dev] Re: [RFC PATCH 1/1] virtio: write back features before verify
2021-10-04 14:27 ` [virtio-dev] " Cornelia Huck
@ 2021-10-04 15:05 ` Michael S. Tsirkin
2021-10-04 15:45 ` Cornelia Huck
0 siblings, 1 reply; 11+ messages in thread
From: Michael S. Tsirkin @ 2021-10-04 15:05 UTC (permalink / raw)
To: Cornelia Huck
Cc: Halil Pasic, Jason Wang, Xie Yongji, virtualization, linux-kernel,
markver, Christian Borntraeger, linux-s390, virtio-dev
On Mon, Oct 04, 2021 at 04:27:23PM +0200, Cornelia Huck wrote:
> On Mon, Oct 04 2021, "Michael S. Tsirkin" <mst@redhat.com> wrote:
>
> > On Mon, Oct 04, 2021 at 02:01:14PM +0200, Cornelia Huck wrote:
> >> On Sun, Oct 03 2021, "Michael S. Tsirkin" <mst@redhat.com> wrote:
> >> > @@ -160,6 +163,33 @@ \subsection{Legacy Interface: A Note on Feature
> >> > Specification text within these sections generally does not apply
> >> > to non-transitional devices.
> >> >
> >> > +\begin{note}
> >> > +The device offers different features when used through
> >> > +the legacy interface and when operated in accordance with this
> >> > +specification.
> >> > +\end{note}
> >> > +
> >> > +Transitional drivers MUST use Devices only through the legacy interface
> >>
> >> s/Devices only through the legacy interface/devices through the legacy
> >> interface only/
> >>
> >> ?
> >
> > Both versions are actually confused, since how do you
> > find out that device does not offer VIRTIO_F_VERSION_1?
> >
> > I think what this should really say is
> >
> > Transitional drivers MUST NOT accept VIRTIO_F_VERSION_1 through
> > the legacy interface.
>
> Ok, that makes sense.
>
> Would it make sense that transitional drivers MUST accept VERSION_1
> through the non-legacy interface? Or is that redundant?
We already have:
A driver MUST accept VIRTIO_F_VERSION_1 if it is offered.
> >
> >
> > Does linux actually satisfy this? Will it accept VIRTIO_F_VERSION_1
> > through the legacy interface if offered?
>
> I think that the Linux drivers will not operate on feature bit 32+ if
> they are in legacy mode?
Well ... with PCI there's no *way* for host to set bit 32 through
legacy. But it might be possible with MMIO/CCW. Can you tell me
what happens then?
> >>
> >> Generally, looks good to me.
> >
> > Do we want to also add explanation that features can be
> > changed until FEATURES_OK?
>
> I always considered that to be implict, as feature negotiation is not
> over until we have FEATURES_OK. Not sure whether we need an extra note.
Well Halil here says once you set a feature bit you can't clear it.
So maybe not ...
--
MST
---------------------------------------------------------------------
To unsubscribe, e-mail: virtio-dev-unsubscribe@lists.oasis-open.org
For additional commands, e-mail: virtio-dev-help@lists.oasis-open.org
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [virtio-dev] Re: [RFC PATCH 1/1] virtio: write back features before verify
2021-10-04 15:05 ` Michael S. Tsirkin
@ 2021-10-04 15:45 ` Cornelia Huck
2021-10-04 20:01 ` Michael S. Tsirkin
0 siblings, 1 reply; 11+ messages in thread
From: Cornelia Huck @ 2021-10-04 15:45 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: Halil Pasic, Jason Wang, Xie Yongji, virtualization, linux-kernel,
markver, Christian Borntraeger, linux-s390, virtio-dev
On Mon, Oct 04 2021, "Michael S. Tsirkin" <mst@redhat.com> wrote:
> On Mon, Oct 04, 2021 at 04:27:23PM +0200, Cornelia Huck wrote:
>> On Mon, Oct 04 2021, "Michael S. Tsirkin" <mst@redhat.com> wrote:
>>
>> > On Mon, Oct 04, 2021 at 02:01:14PM +0200, Cornelia Huck wrote:
>> >> On Sun, Oct 03 2021, "Michael S. Tsirkin" <mst@redhat.com> wrote:
>> >> > @@ -160,6 +163,33 @@ \subsection{Legacy Interface: A Note on Feature
>> >> > Specification text within these sections generally does not apply
>> >> > to non-transitional devices.
>> >> >
>> >> > +\begin{note}
>> >> > +The device offers different features when used through
>> >> > +the legacy interface and when operated in accordance with this
>> >> > +specification.
>> >> > +\end{note}
>> >> > +
>> >> > +Transitional drivers MUST use Devices only through the legacy interface
>> >>
>> >> s/Devices only through the legacy interface/devices through the legacy
>> >> interface only/
>> >>
>> >> ?
>> >
>> > Both versions are actually confused, since how do you
>> > find out that device does not offer VIRTIO_F_VERSION_1?
>> >
>> > I think what this should really say is
>> >
>> > Transitional drivers MUST NOT accept VIRTIO_F_VERSION_1 through
>> > the legacy interface.
>>
>> Ok, that makes sense.
>>
>> Would it make sense that transitional drivers MUST accept VERSION_1
>> through the non-legacy interface? Or is that redundant?
>
> We already have:
>
> A driver MUST accept VIRTIO_F_VERSION_1 if it is offered.
Yep, so it is redundant.
>
>
>> >
>> >
>> > Does linux actually satisfy this? Will it accept VIRTIO_F_VERSION_1
>> > through the legacy interface if offered?
>>
>> I think that the Linux drivers will not operate on feature bit 32+ if
>> they are in legacy mode?
>
>
> Well ... with PCI there's no *way* for host to set bit 32 through
> legacy. But it might be possible with MMIO/CCW. Can you tell me
> what happens then?
ccw does not support accessing bit 32+, either. Not sure about mmio.
>
>
>> >>
>> >> Generally, looks good to me.
>> >
>> > Do we want to also add explanation that features can be
>> > changed until FEATURES_OK?
>>
>> I always considered that to be implict, as feature negotiation is not
>> over until we have FEATURES_OK. Not sure whether we need an extra note.
>
> Well Halil here says once you set a feature bit you can't clear it.
> So maybe not ...
Ok, so what about something like
"If FEATURES_OK is not set, the driver MAY change the set of features it
accepts."
in the device initialization section?
---------------------------------------------------------------------
To unsubscribe, e-mail: virtio-dev-unsubscribe@lists.oasis-open.org
For additional commands, e-mail: virtio-dev-help@lists.oasis-open.org
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [virtio-dev] Re: [RFC PATCH 1/1] virtio: write back features before verify
2021-10-04 15:45 ` Cornelia Huck
@ 2021-10-04 20:01 ` Michael S. Tsirkin
2021-10-05 7:38 ` Cornelia Huck
2021-10-05 11:17 ` Halil Pasic
0 siblings, 2 replies; 11+ messages in thread
From: Michael S. Tsirkin @ 2021-10-04 20:01 UTC (permalink / raw)
To: Cornelia Huck
Cc: Halil Pasic, Jason Wang, Xie Yongji, virtualization, linux-kernel,
markver, Christian Borntraeger, linux-s390, virtio-dev
On Mon, Oct 04, 2021 at 05:45:06PM +0200, Cornelia Huck wrote:
> On Mon, Oct 04 2021, "Michael S. Tsirkin" <mst@redhat.com> wrote:
>
> > On Mon, Oct 04, 2021 at 04:27:23PM +0200, Cornelia Huck wrote:
> >> On Mon, Oct 04 2021, "Michael S. Tsirkin" <mst@redhat.com> wrote:
> >>
> >> > On Mon, Oct 04, 2021 at 02:01:14PM +0200, Cornelia Huck wrote:
> >> >> On Sun, Oct 03 2021, "Michael S. Tsirkin" <mst@redhat.com> wrote:
> >> >> > @@ -160,6 +163,33 @@ \subsection{Legacy Interface: A Note on Feature
> >> >> > Specification text within these sections generally does not apply
> >> >> > to non-transitional devices.
> >> >> >
> >> >> > +\begin{note}
> >> >> > +The device offers different features when used through
> >> >> > +the legacy interface and when operated in accordance with this
> >> >> > +specification.
> >> >> > +\end{note}
> >> >> > +
> >> >> > +Transitional drivers MUST use Devices only through the legacy interface
> >> >>
> >> >> s/Devices only through the legacy interface/devices through the legacy
> >> >> interface only/
> >> >>
> >> >> ?
> >> >
> >> > Both versions are actually confused, since how do you
> >> > find out that device does not offer VIRTIO_F_VERSION_1?
> >> >
> >> > I think what this should really say is
> >> >
> >> > Transitional drivers MUST NOT accept VIRTIO_F_VERSION_1 through
> >> > the legacy interface.
> >>
> >> Ok, that makes sense.
> >>
> >> Would it make sense that transitional drivers MUST accept VERSION_1
> >> through the non-legacy interface? Or is that redundant?
> >
> > We already have:
> >
> > A driver MUST accept VIRTIO_F_VERSION_1 if it is offered.
>
> Yep, so it is redundant.
>
> >
> >
> >> >
> >> >
> >> > Does linux actually satisfy this? Will it accept VIRTIO_F_VERSION_1
> >> > through the legacy interface if offered?
> >>
> >> I think that the Linux drivers will not operate on feature bit 32+ if
> >> they are in legacy mode?
> >
> >
> > Well ... with PCI there's no *way* for host to set bit 32 through
> > legacy. But it might be possible with MMIO/CCW. Can you tell me
> > what happens then?
>
> ccw does not support accessing bit 32+, either. Not sure about mmio.
>
> >
> >
> >> >>
> >> >> Generally, looks good to me.
> >> >
> >> > Do we want to also add explanation that features can be
> >> > changed until FEATURES_OK?
> >>
> >> I always considered that to be implict, as feature negotiation is not
> >> over until we have FEATURES_OK. Not sure whether we need an extra note.
> >
> > Well Halil here says once you set a feature bit you can't clear it.
> > So maybe not ...
>
> Ok, so what about something like
>
> "If FEATURES_OK is not set, the driver MAY change the set of features it
> accepts."
>
> in the device initialization section?
Maybe "as long as". However Halil implied that some features are not
turned off properly if that happens. Halil could you pls provide
some examples?
--
MST
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [virtio-dev] Re: [RFC PATCH 1/1] virtio: write back features before verify
2021-10-04 20:01 ` Michael S. Tsirkin
@ 2021-10-05 7:38 ` Cornelia Huck
2021-10-05 11:17 ` Halil Pasic
1 sibling, 0 replies; 11+ messages in thread
From: Cornelia Huck @ 2021-10-05 7:38 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: Halil Pasic, Jason Wang, Xie Yongji, virtualization, linux-kernel,
markver, Christian Borntraeger, linux-s390, virtio-dev
On Mon, Oct 04 2021, "Michael S. Tsirkin" <mst@redhat.com> wrote:
> On Mon, Oct 04, 2021 at 05:45:06PM +0200, Cornelia Huck wrote:
>> On Mon, Oct 04 2021, "Michael S. Tsirkin" <mst@redhat.com> wrote:
>>
>> > On Mon, Oct 04, 2021 at 04:27:23PM +0200, Cornelia Huck wrote:
>> >> On Mon, Oct 04 2021, "Michael S. Tsirkin" <mst@redhat.com> wrote:
>> >>
>> >> > Do we want to also add explanation that features can be
>> >> > changed until FEATURES_OK?
>> >>
>> >> I always considered that to be implict, as feature negotiation is not
>> >> over until we have FEATURES_OK. Not sure whether we need an extra note.
>> >
>> > Well Halil here says once you set a feature bit you can't clear it.
>> > So maybe not ...
>>
>> Ok, so what about something like
>>
>> "If FEATURES_OK is not set, the driver MAY change the set of features it
>> accepts."
>>
>> in the device initialization section?
>
> Maybe "as long as". However Halil implied that some features are not
> turned off properly if that happens. Halil could you pls provide
> some examples?
Yes, "as long as" sounds better.
---------------------------------------------------------------------
To unsubscribe, e-mail: virtio-dev-unsubscribe@lists.oasis-open.org
For additional commands, e-mail: virtio-dev-help@lists.oasis-open.org
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [virtio-dev] Re: [RFC PATCH 1/1] virtio: write back features before verify
2021-10-04 20:01 ` Michael S. Tsirkin
2021-10-05 7:38 ` Cornelia Huck
@ 2021-10-05 11:17 ` Halil Pasic
2021-10-05 11:22 ` Michael S. Tsirkin
1 sibling, 1 reply; 11+ messages in thread
From: Halil Pasic @ 2021-10-05 11:17 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: Cornelia Huck, Jason Wang, Xie Yongji, virtualization,
linux-kernel, markver, Christian Borntraeger, linux-s390,
virtio-dev, Halil Pasic
On Mon, 4 Oct 2021 16:01:12 -0400
"Michael S. Tsirkin" <mst@redhat.com> wrote:
> >
> > Ok, so what about something like
> >
> > "If FEATURES_OK is not set, the driver MAY change the set of features it
> > accepts."
> >
> > in the device initialization section?
>
> Maybe "as long as". However Halil implied that some features are not
> turned off properly if that happens. Halil could you pls provide
> some examples?
static void virtio_net_set_features(VirtIODevice *vdev, uint64_t features)
{
...
if (virtio_has_feature(features, VIRTIO_NET_F_STANDBY)) {
qapi_event_send_failover_negotiated(n->netclient_name);
qatomic_set(&n->failover_primary_hidden, false);
failover_add_primary(n, &err);
if (err) {
warn_report_err(err);
}
}
}
This is probably the only one in QEMU. Back then I stopped looking
after the first hit.
Regards,
Halil
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [virtio-dev] Re: [RFC PATCH 1/1] virtio: write back features before verify
2021-10-05 11:17 ` Halil Pasic
@ 2021-10-05 11:22 ` Michael S. Tsirkin
2021-10-05 15:20 ` Cornelia Huck
0 siblings, 1 reply; 11+ messages in thread
From: Michael S. Tsirkin @ 2021-10-05 11:22 UTC (permalink / raw)
To: Halil Pasic
Cc: Cornelia Huck, Jason Wang, Xie Yongji, virtualization,
linux-kernel, markver, Christian Borntraeger, linux-s390,
virtio-dev
On Tue, Oct 05, 2021 at 01:17:51PM +0200, Halil Pasic wrote:
> On Mon, 4 Oct 2021 16:01:12 -0400
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
>
> > >
> > > Ok, so what about something like
> > >
> > > "If FEATURES_OK is not set, the driver MAY change the set of features it
> > > accepts."
> > >
> > > in the device initialization section?
> >
> > Maybe "as long as". However Halil implied that some features are not
> > turned off properly if that happens. Halil could you pls provide
> > some examples?
>
>
>
> static void virtio_net_set_features(VirtIODevice *vdev, uint64_t features)
> {
> ...
> if (virtio_has_feature(features, VIRTIO_NET_F_STANDBY)) {
> qapi_event_send_failover_negotiated(n->netclient_name);
> qatomic_set(&n->failover_primary_hidden, false);
> failover_add_primary(n, &err);
> if (err) {
> warn_report_err(err);
> }
> }
> }
>
> This is probably the only one in QEMU. Back then I stopped looking
> after the first hit.
>
> Regards,
> Halil
Hmm ok more failover issues :(
This stuff really should be moved to set_status.
--
MST
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [virtio-dev] Re: [RFC PATCH 1/1] virtio: write back features before verify
2021-10-05 11:22 ` Michael S. Tsirkin
@ 2021-10-05 15:20 ` Cornelia Huck
0 siblings, 0 replies; 11+ messages in thread
From: Cornelia Huck @ 2021-10-05 15:20 UTC (permalink / raw)
To: Michael S. Tsirkin, Halil Pasic
Cc: Jason Wang, Xie Yongji, virtualization, linux-kernel, markver,
Christian Borntraeger, linux-s390, virtio-dev, qemu-devel
On Tue, Oct 05 2021, "Michael S. Tsirkin" <mst@redhat.com> wrote:
> On Tue, Oct 05, 2021 at 01:17:51PM +0200, Halil Pasic wrote:
>> On Mon, 4 Oct 2021 16:01:12 -0400
>> "Michael S. Tsirkin" <mst@redhat.com> wrote:
>>
>> > >
>> > > Ok, so what about something like
>> > >
>> > > "If FEATURES_OK is not set, the driver MAY change the set of features it
>> > > accepts."
>> > >
>> > > in the device initialization section?
>> >
>> > Maybe "as long as". However Halil implied that some features are not
>> > turned off properly if that happens. Halil could you pls provide
>> > some examples?
>>
>>
>>
>> static void virtio_net_set_features(VirtIODevice *vdev, uint64_t features)
>> {
>> ...
>> if (virtio_has_feature(features, VIRTIO_NET_F_STANDBY)) {
>> qapi_event_send_failover_negotiated(n->netclient_name);
>> qatomic_set(&n->failover_primary_hidden, false);
>> failover_add_primary(n, &err);
>> if (err) {
>> warn_report_err(err);
>> }
>> }
>> }
>>
>> This is probably the only one in QEMU. Back then I stopped looking
>> after the first hit.
After some grepping, I agree that this seems to be the only one.
>>
>> Regards,
>> Halil
>
> Hmm ok more failover issues :(
> This stuff really should be moved to set_status.
Yes, F_STANDBY does not exist for legacy, so performing those actions
when FEATURES_OK is set looks like the right thing to do.
---------------------------------------------------------------------
To unsubscribe, e-mail: virtio-dev-unsubscribe@lists.oasis-open.org
For additional commands, e-mail: virtio-dev-help@lists.oasis-open.org
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2021-10-05 15:20 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20210930012049.3780865-1-pasic@linux.ibm.com>
[not found] ` <20210930070444-mutt-send-email-mst@kernel.org>
[not found] ` <87fstm47no.fsf@redhat.com>
[not found] ` <20211002141351-mutt-send-email-mst@kernel.org>
[not found] ` <20211003070030.658fc94e.pasic@linux.ibm.com>
[not found] ` <20211003021027-mutt-send-email-mst@kernel.org>
2021-10-03 7:26 ` [RFC PATCH 1/1] virtio: write back features before verify Michael S. Tsirkin
2021-10-04 12:01 ` [virtio-dev] " Cornelia Huck
2021-10-04 12:54 ` Michael S. Tsirkin
2021-10-04 14:27 ` [virtio-dev] " Cornelia Huck
2021-10-04 15:05 ` Michael S. Tsirkin
2021-10-04 15:45 ` Cornelia Huck
2021-10-04 20:01 ` Michael S. Tsirkin
2021-10-05 7:38 ` Cornelia Huck
2021-10-05 11:17 ` Halil Pasic
2021-10-05 11:22 ` Michael S. Tsirkin
2021-10-05 15:20 ` Cornelia Huck
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox