* 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