qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Akihiko Odaki <akihiko.odaki@daynix.com>
To: Jason Wang <jasowang@redhat.com>
Cc: Yuri Benditovich <yuri.benditovich@daynix.com>,
	qemu-devel@nongnu.org, Andrew Melnychenko <andrew@daynix.com>,
	"Michael S . Tsirkin" <mst@redhat.com>
Subject: Re: [PATCH v6 11/21] virtio-net: Return an error when vhost cannot enable RSS
Date: Wed, 1 Nov 2023 13:50:00 +0900	[thread overview]
Message-ID: <d0db0fb1-0a58-45b7-a623-df6ee9096e2e@daynix.com> (raw)
In-Reply-To: <CACGkMEv=A0KS-LtgZmsMehdoUL=EuQzhkfNipKaV1kdUr2Y5Bw@mail.gmail.com>

On 2023/11/01 13:19, Jason Wang wrote:
> On Mon, Oct 30, 2023 at 9:15 PM Akihiko Odaki <akihiko.odaki@daynix.com> wrote:
>>
>> On 2023/10/30 21:51, Yuri Benditovich wrote:
>>>
>>>
>>> On Mon, Oct 30, 2023 at 2:21 PM Akihiko Odaki <akihiko.odaki@daynix.com
>>> <mailto:akihiko.odaki@daynix.com>> wrote:
>>>
>>>      On 2023/10/30 21:14, Yuri Benditovich wrote:
>>>       >
>>>       >
>>>       > On Mon, Oct 30, 2023 at 7:14 AM Akihiko Odaki
>>>      <akihiko.odaki@daynix.com <mailto:akihiko.odaki@daynix.com>
>>>       > <mailto:akihiko.odaki@daynix.com
>>>      <mailto:akihiko.odaki@daynix.com>>> wrote:
>>>       >
>>>       >     vhost requires eBPF for RSS. When eBPF is not available,
>>>      virtio-net
>>>       >     implicitly disables RSS even if the user explicitly requests
>>>      it. Return
>>>       >     an error instead of implicitly disabling RSS if RSS is
>>>      requested but not
>>>       >     available.
>>>       >
>>>       >
>>>       > I think that suggesting RSS feature when in fact it is not
>>>      available is
>>>       > not a good idea, this rather desinforms the guest.
>>>       > Existing behavior (IMHO) makes more sense.
>>>       > We can extend this discussion if needed, of course.
>>>
>>>      This change is not to advertise RSS when it's not available; it instead
>>>      reports an error to the user.
>>>
>>>      For example, think of the following command line:
>>>      qemu-system-x86_64 -device virtio-net,rss=on,netdev=n -netdev user,id=n
>>>
>>>      Before this change, it gives no error and the user will not know RSS is
>>>      not available. With this change it now gives an error as follows:
>>>      qemu-system-x86_64: -device virtio-net,rss=on,netdev=n: Can't load
>>>      eBPF RSS
>>>
>>>
>>> Does this mean failure to run QEMU if the RSS required in the command
>>> line and EBPF can't be loaded?
>>> (for example if we run the system with kernel < 5.8)?
>>> I'm not sure this is user-friendly behavior...
>>
>> This patch is wrong that it assumes software RSS is not enabled at all;
>> I missed the vhost check before clearing VIRTIO_NET_F_RSS in
>> virtio_net_get_features().
>>
>> That said, I indeed intend to make it return a hard error for the case
>> that RSS is requested for vhost but eBPF can't be loaded.
>>
>> I believe the current behavior of implicitly disabling a feature
>> explicitly requested by the user is not good,
> 
> Yes, but it has been there for years. It complicates a lot to stick to
> the migration compatibility.
> 
>> but we can still emit a warning instead of an error.
>>
>> It's better to follow a convention common in QEMU but I see no
>> documentation regarding this kind of situation. I know virtio-gpu gives
>> an error in such a case but it's just one example.
> 
> The problem is that it's too late to fix old Qemu, so we probably
> can't do more than using compatibility flags...

This patch does not affect migration in my understanding; it does not 
touch any VM state or runtime behavior.

We had another discussion regarding migration for patch "virtio-net: Do 
not clear VIRTIO_NET_F_HASH_REPORT". It does change the runtime behavior 
so we need to take migration into account. I still think the patch does 
not require a compatibility flag since it only exposes a new feature and 
does not prevent migrating from old QEMU that exposes less features. It 
instead fixes the case where migrating between hosts with different tap 
feature sets.

Regards,
Akihiko Odaki


  reply	other threads:[~2023-11-01  4:50 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-30  5:12 [PATCH v6 00/21] virtio-net RSS/hash report fixes and improvements Akihiko Odaki
2023-10-30  5:12 ` [PATCH v6 01/21] tap: Remove tap_probe_vnet_hdr_len() Akihiko Odaki
2023-10-30  5:12 ` [PATCH v6 02/21] tap: Remove qemu_using_vnet_hdr() Akihiko Odaki
2023-10-30  5:12 ` [PATCH v6 03/21] net: Move virtio-net header length assertion Akihiko Odaki
2023-10-30  5:12 ` [PATCH v6 04/21] net: Remove receive_raw() Akihiko Odaki
2023-10-30  5:12 ` [PATCH v6 05/21] tap: Remove tap_receive() Akihiko Odaki
2023-10-30 18:52   ` Zhang, Chen
2023-10-31  4:57     ` Akihiko Odaki
2023-10-30  5:12 ` [PATCH v6 06/21] net: Remove flag propagation Akihiko Odaki
2023-11-10  7:35   ` Pavel Dovgalyuk
2023-11-11 14:27     ` Akihiko Odaki
2023-11-13  8:14       ` Pavel Dovgalyuk
2023-10-30  5:12 ` [PATCH v6 07/21] tap: Shrink zeroed virtio-net header Akihiko Odaki
2023-10-30  5:12 ` [PATCH v6 08/21] virtio-net: Copy header only when necessary Akihiko Odaki
2023-10-30  5:12 ` [PATCH v6 09/21] virtio-net: Disable RSS on reset Akihiko Odaki
2023-10-30  5:12 ` [PATCH v6 10/21] virtio-net: Unify the logic to update NIC state for RSS Akihiko Odaki
2023-10-30  5:12 ` [PATCH v6 11/21] virtio-net: Return an error when vhost cannot enable RSS Akihiko Odaki
2023-10-30 12:14   ` Yuri Benditovich
2023-10-30 12:21     ` Akihiko Odaki
2023-10-30 12:51       ` Yuri Benditovich
2023-10-30 13:14         ` Akihiko Odaki
2023-11-01  4:19           ` Jason Wang
2023-11-01  4:50             ` Akihiko Odaki [this message]
2023-11-01  6:38               ` Michael S. Tsirkin
2023-11-01  8:35                 ` Akihiko Odaki
2023-11-01  9:09                   ` Michael S. Tsirkin
2023-11-01  9:15                     ` Akihiko Odaki
2023-11-02  9:09                       ` Yuri Benditovich
2023-11-02  9:33                         ` Michael S. Tsirkin
2023-11-02 10:20                           ` Yuri Benditovich
2023-11-02 11:26                             ` Michael S. Tsirkin
2023-11-02 12:00                               ` Yuri Benditovich
2023-11-02 13:18                                 ` Michael S. Tsirkin
2023-11-02 14:56                             ` Akihiko Odaki
2023-11-03  9:35                               ` Yuri Benditovich
2023-11-03  9:55                                 ` Akihiko Odaki
2023-11-03 13:14                                   ` Yuri Benditovich
2023-11-11 15:28                                     ` Akihiko Odaki
2023-11-13 11:44                                       ` Yuri Benditovich
2023-11-13 12:44                                         ` Akihiko Odaki
2023-11-13 17:26                                           ` Yuri Benditovich
2023-11-14  7:03                                             ` Akihiko Odaki
2023-11-14 22:09                                               ` Yuri Benditovich
2023-11-15  6:09                                                 ` Akihiko Odaki
2023-11-16  5:14                                                   ` Jason Wang
2023-10-30  5:12 ` [PATCH v6 12/21] virtio-net: Enable software RSS Akihiko Odaki
2023-10-30 12:42   ` Yuri Benditovich
2023-10-30  5:12 ` [PATCH v6 13/21] virtio-net: Always set populate_hash Akihiko Odaki
2023-10-30 19:02   ` Zhang, Chen
2023-10-31  4:47     ` Akihiko Odaki
2023-10-30  5:12 ` [PATCH v6 14/21] virtio-net: Do not write hashes to peer buffer Akihiko Odaki
2023-10-30  5:12 ` [PATCH v6 15/21] virtio-net: Do not clear VIRTIO_NET_F_HASH_REPORT Akihiko Odaki
2023-11-03 13:26   ` Yuri Benditovich
2023-10-30  5:12 ` [PATCH v6 16/21] ebpf: Fix RSS error handling Akihiko Odaki
2023-10-30  5:12 ` [PATCH v6 17/21] ebpf: Use standard section name Akihiko Odaki
2023-10-30  5:12 ` [PATCH v6 18/21] ebpf: Simplify error handling Akihiko Odaki
2023-10-30  5:12 ` [PATCH v6 19/21] ebpf: Return 0 when configuration fails Akihiko Odaki
2023-10-30  5:12 ` [PATCH v6 20/21] ebpf: Refactor tun_rss_steering_prog() Akihiko Odaki
2023-10-30  5:12 ` [PATCH v6 21/21] ebpf: Add a separate target for skeleton Akihiko Odaki

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=d0db0fb1-0a58-45b7-a623-df6ee9096e2e@daynix.com \
    --to=akihiko.odaki@daynix.com \
    --cc=andrew@daynix.com \
    --cc=jasowang@redhat.com \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=yuri.benditovich@daynix.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).