Re: [virtio-dev] Re: [RFC PATCH 1/1] virtio: write back features before verify
On Tue, Oct 05 2021, "Michael S. Tsirkin" 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" 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. ___ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
Re: [virtio-dev] Re: [RFC PATCH 1/1] virtio: write back features before verify
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" 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 ___ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
Re: [virtio-dev] Re: [RFC PATCH 1/1] virtio: write back features before verify
On Mon, 4 Oct 2021 16:01:12 -0400 "Michael S. Tsirkin" 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 ___ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
Re: [virtio-dev] Re: [RFC PATCH 1/1] virtio: write back features before verify
On Mon, Oct 04 2021, "Michael S. Tsirkin" wrote: > On Mon, Oct 04, 2021 at 05:45:06PM +0200, Cornelia Huck wrote: >> On Mon, Oct 04 2021, "Michael S. Tsirkin" wrote: >> >> > On Mon, Oct 04, 2021 at 04:27:23PM +0200, Cornelia Huck wrote: >> >> On Mon, Oct 04 2021, "Michael S. Tsirkin" 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. ___ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
Re: [virtio-dev] Re: [RFC PATCH 1/1] virtio: write back features before verify
On Mon, Oct 04, 2021 at 05:45:06PM +0200, Cornelia Huck wrote: > On Mon, Oct 04 2021, "Michael S. Tsirkin" wrote: > > > On Mon, Oct 04, 2021 at 04:27:23PM +0200, Cornelia Huck wrote: > >> On Mon, Oct 04 2021, "Michael S. Tsirkin" wrote: > >> > >> > On Mon, Oct 04, 2021 at 02:01:14PM +0200, Cornelia Huck wrote: > >> >> On Sun, Oct 03 2021, "Michael S. Tsirkin" 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 ___ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
Re: [virtio-dev] Re: [RFC PATCH 1/1] virtio: write back features before verify
On Mon, Oct 04 2021, "Michael S. Tsirkin" wrote: > On Mon, Oct 04, 2021 at 04:27:23PM +0200, Cornelia Huck wrote: >> On Mon, Oct 04 2021, "Michael S. Tsirkin" wrote: >> >> > On Mon, Oct 04, 2021 at 02:01:14PM +0200, Cornelia Huck wrote: >> >> On Sun, Oct 03 2021, "Michael S. Tsirkin" 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? ___ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization