Re: [virtio-dev] Re: [RFC PATCH 1/1] virtio: write back features before verify

From: Cornelia Huck
Date: Tue Oct 05 2021 - 11:20:57 EST


On Tue, Oct 05 2021, "Michael S. Tsirkin" <mst@xxxxxxxxxx> 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@xxxxxxxxxx> 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.