[PATCH v3] qapi: net/tap: deprecate vhostforce option

Vladimir Sementsov-Ogievskiy posted 1 patch 5 months, 1 week ago
Failed in applying to current master (apply log)
There is a newer version of this series
docs/about/deprecated.rst |  7 +++++++
qapi/net.json             | 11 +++++++++--
2 files changed, 16 insertions(+), 2 deletions(-)
[PATCH v3] qapi: net/tap: deprecate vhostforce option
Posted by Vladimir Sementsov-Ogievskiy 5 months, 1 week ago
This option doesn't make sense since long ago (10 years!)
commit 1e7398a140f7a6 ("vhost: enable vhost without without MSI-X").

Prior 1e7398a140f7a6, to enable vhost for some specific kind of guests
(that don't have MSI-X support), you should have set vhostforce=on
(with vhost=on or unset).

Since 1e7398a140f7a6, guest type doesn't matter, all guests are equal
for vhost-enabling options logic.

The current logic is:
  vhost=on / vhost=off : vhostforce ignored, doesn't make sense
  vhost unset : vhostforce counts, enabling vhost

Currently you may enable vhost several ways:
- vhost=on
- vhostforce=on
- vhost=on + vhostforce=on
- and even vhost=on + vhostforce=off

- they are all equal.

Let's finally deprecate the extra option.

Also, fix @vhostforce documentation.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
---

v3: - two spaces between sentences for vhostforce description
    - add r-b by Markus

 docs/about/deprecated.rst |  7 +++++++
 qapi/net.json             | 11 +++++++++--
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
index d50645a071..b17a5a41aa 100644
--- a/docs/about/deprecated.rst
+++ b/docs/about/deprecated.rst
@@ -516,6 +516,13 @@ Stream ``reconnect`` (since 9.2)
 The ``reconnect`` option only allows specifying second granularity timeouts,
 which is not enough for all types of use cases, use ``reconnect-ms`` instead.
 
+TAP ``vhostforce`` (since 10.2)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The ``vhostforce`` option is redundant with the ``vhost`` option.
+If they conflict, ``vhost`` takes precedence.  Just use ``vhost``.
+
+
 VFIO device options
 '''''''''''''''''''
 
diff --git a/qapi/net.json b/qapi/net.json
index 78bcc9871e..bab26e0c5d 100644
--- a/qapi/net.json
+++ b/qapi/net.json
@@ -346,13 +346,20 @@
 # @vhostfds: file descriptors of multiple already opened vhost net
 #     devices
 #
-# @vhostforce: vhost on for non-MSIX virtio guests
+# @vhostforce: enable vhost-net network accelerator.  Ignored when
+#    @vhost is set.
 #
 # @queues: number of queues to be created for multiqueue capable tap
 #
 # @poll-us: maximum number of microseconds that could be spent on busy
 #     polling for tap (since 2.7)
 #
+# Features:
+#
+# @deprecated: Member @vhostforce is deprecated.  The @vhostforce
+#    option is redundant with the @vhost option. If they conflict,
+#    @vhost takes precedence.  Just use @vhost.
+#
 # Since: 1.2
 ##
 { 'struct': 'NetdevTapOptions',
@@ -369,7 +376,7 @@
     '*vhost':      'bool',
     '*vhostfd':    'str',
     '*vhostfds':   'str',
-    '*vhostforce': 'bool',
+    '*vhostforce': { 'type': 'bool', 'features': [ 'deprecated' ] },
     '*queues':     'uint32',
     '*poll-us':    'uint32'} }
 
-- 
2.48.1
Re: [PATCH v3] qapi: net/tap: deprecate vhostforce option
Posted by Jason Wang via Devel 3 months, 3 weeks ago
On Mon, Sep 1, 2025 at 11:39 PM Vladimir Sementsov-Ogievskiy
<vsementsov@yandex-team.ru> wrote:
>
> This option doesn't make sense since long ago (10 years!)
> commit 1e7398a140f7a6 ("vhost: enable vhost without without MSI-X").

qemu-options.hx still say:

"""
    "                use vhostforce=on to force vhost on for non-MSIX
virtio guests\n"
"""

Should we fix that as well?

>
> Prior 1e7398a140f7a6, to enable vhost for some specific kind of guests
> (that don't have MSI-X support), you should have set vhostforce=on
> (with vhost=on or unset).
>
> Since 1e7398a140f7a6, guest type doesn't matter, all guests are equal
> for vhost-enabling options logic.
>
> The current logic is:
>   vhost=on / vhost=off : vhostforce ignored, doesn't make sense
>   vhost unset : vhostforce counts, enabling vhost
>
> Currently you may enable vhost several ways:
> - vhost=on
> - vhostforce=on
> - vhost=on + vhostforce=on
> - and even vhost=on + vhostforce=off
>
> - they are all equal.
>
> Let's finally deprecate the extra option.

Note that vhostforce works for vhost-user as well:

{ 'struct': 'NetdevVhostUserOptions',
  'data': {
    'chardev':        'str',
    '*vhostforce':    'bool',
    '*queues':        'int' } }

Should we change that as well?

>
> Also, fix @vhostforce documentation.
>
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
> Reviewed-by: Markus Armbruster <armbru@redhat.com>
> ---
>
> v3: - two spaces between sentences for vhostforce description
>     - add r-b by Markus
>
>  docs/about/deprecated.rst |  7 +++++++
>  qapi/net.json             | 11 +++++++++--
>  2 files changed, 16 insertions(+), 2 deletions(-)
>
> diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
> index d50645a071..b17a5a41aa 100644
> --- a/docs/about/deprecated.rst
> +++ b/docs/about/deprecated.rst
> @@ -516,6 +516,13 @@ Stream ``reconnect`` (since 9.2)
>  The ``reconnect`` option only allows specifying second granularity timeouts,
>  which is not enough for all types of use cases, use ``reconnect-ms`` instead.
>
> +TAP ``vhostforce`` (since 10.2)
> +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> +
> +The ``vhostforce`` option is redundant with the ``vhost`` option.
> +If they conflict, ``vhost`` takes precedence.  Just use ``vhost``.
> +
> +
>  VFIO device options
>  '''''''''''''''''''
>
> diff --git a/qapi/net.json b/qapi/net.json
> index 78bcc9871e..bab26e0c5d 100644
> --- a/qapi/net.json
> +++ b/qapi/net.json
> @@ -346,13 +346,20 @@
>  # @vhostfds: file descriptors of multiple already opened vhost net
>  #     devices
>  #
> -# @vhostforce: vhost on for non-MSIX virtio guests
> +# @vhostforce: enable vhost-net network accelerator.  Ignored when
> +#    @vhost is set.
>  #
>  # @queues: number of queues to be created for multiqueue capable tap
>  #
>  # @poll-us: maximum number of microseconds that could be spent on busy
>  #     polling for tap (since 2.7)
>  #
> +# Features:
> +#
> +# @deprecated: Member @vhostforce is deprecated.  The @vhostforce
> +#    option is redundant with the @vhost option. If they conflict,
> +#    @vhost takes precedence.  Just use @vhost.
> +#
>  # Since: 1.2
>  ##
>  { 'struct': 'NetdevTapOptions',
> @@ -369,7 +376,7 @@
>      '*vhost':      'bool',
>      '*vhostfd':    'str',
>      '*vhostfds':   'str',
> -    '*vhostforce': 'bool',
> +    '*vhostforce': { 'type': 'bool', 'features': [ 'deprecated' ] },
>      '*queues':     'uint32',
>      '*poll-us':    'uint32'} }
>
> --
> 2.48.1
>

Thanks
Re: [PATCH v3] qapi: net/tap: deprecate vhostforce option
Posted by Vladimir Sementsov-Ogievskiy 3 months, 3 weeks ago
On 14.10.25 08:48, Jason Wang wrote:
> On Mon, Sep 1, 2025 at 11:39 PM Vladimir Sementsov-Ogievskiy
> <vsementsov@yandex-team.ru> wrote:
>>
>> This option doesn't make sense since long ago (10 years!)
>> commit 1e7398a140f7a6 ("vhost: enable vhost without without MSI-X").
> 
> qemu-options.hx still say:
> 
> """
>      "                use vhostforce=on to force vhost on for non-MSIX
> virtio guests\n"
> """
> 
> Should we fix that as well?

will do.

> 
>>
>> Prior 1e7398a140f7a6, to enable vhost for some specific kind of guests
>> (that don't have MSI-X support), you should have set vhostforce=on
>> (with vhost=on or unset).
>>
>> Since 1e7398a140f7a6, guest type doesn't matter, all guests are equal
>> for vhost-enabling options logic.
>>
>> The current logic is:
>>    vhost=on / vhost=off : vhostforce ignored, doesn't make sense
>>    vhost unset : vhostforce counts, enabling vhost
>>
>> Currently you may enable vhost several ways:
>> - vhost=on
>> - vhostforce=on
>> - vhost=on + vhostforce=on
>> - and even vhost=on + vhostforce=off
>>
>> - they are all equal.
>>
>> Let's finally deprecate the extra option.
> 
> Note that vhostforce works for vhost-user as well:
> 
> { 'struct': 'NetdevVhostUserOptions',
>    'data': {
>      'chardev':        'str',
>      '*vhostforce':    'bool',
>      '*queues':        'int' } }
> 
> Should we change that as well?
> 

hmm, this vhostforce is unused. Will deprecate it as well.

>>
>> Also, fix @vhostforce documentation.
>>
>> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
>> Reviewed-by: Markus Armbruster <armbru@redhat.com>
>> ---
>>
>> v3: - two spaces between sentences for vhostforce description
>>      - add r-b by Markus
>>
>>   docs/about/deprecated.rst |  7 +++++++
>>   qapi/net.json             | 11 +++++++++--
>>   2 files changed, 16 insertions(+), 2 deletions(-)
>>
>> diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
>> index d50645a071..b17a5a41aa 100644
>> --- a/docs/about/deprecated.rst
>> +++ b/docs/about/deprecated.rst
>> @@ -516,6 +516,13 @@ Stream ``reconnect`` (since 9.2)
>>   The ``reconnect`` option only allows specifying second granularity timeouts,
>>   which is not enough for all types of use cases, use ``reconnect-ms`` instead.
>>
>> +TAP ``vhostforce`` (since 10.2)
>> +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>> +
>> +The ``vhostforce`` option is redundant with the ``vhost`` option.
>> +If they conflict, ``vhost`` takes precedence.  Just use ``vhost``.
>> +
>> +
>>   VFIO device options
>>   '''''''''''''''''''
>>
>> diff --git a/qapi/net.json b/qapi/net.json
>> index 78bcc9871e..bab26e0c5d 100644
>> --- a/qapi/net.json
>> +++ b/qapi/net.json
>> @@ -346,13 +346,20 @@
>>   # @vhostfds: file descriptors of multiple already opened vhost net
>>   #     devices
>>   #
>> -# @vhostforce: vhost on for non-MSIX virtio guests
>> +# @vhostforce: enable vhost-net network accelerator.  Ignored when
>> +#    @vhost is set.
>>   #
>>   # @queues: number of queues to be created for multiqueue capable tap
>>   #
>>   # @poll-us: maximum number of microseconds that could be spent on busy
>>   #     polling for tap (since 2.7)
>>   #
>> +# Features:
>> +#
>> +# @deprecated: Member @vhostforce is deprecated.  The @vhostforce
>> +#    option is redundant with the @vhost option. If they conflict,
>> +#    @vhost takes precedence.  Just use @vhost.
>> +#
>>   # Since: 1.2
>>   ##
>>   { 'struct': 'NetdevTapOptions',
>> @@ -369,7 +376,7 @@
>>       '*vhost':      'bool',
>>       '*vhostfd':    'str',
>>       '*vhostfds':   'str',
>> -    '*vhostforce': 'bool',
>> +    '*vhostforce': { 'type': 'bool', 'features': [ 'deprecated' ] },
>>       '*queues':     'uint32',
>>       '*poll-us':    'uint32'} }
>>
>> --
>> 2.48.1
>>
> 
> Thanks
> 

Thanks for reviewing!

-- 
Best regards,
Vladimir
Re: [PATCH v3] qapi: net/tap: deprecate vhostforce option
Posted by Vladimir Sementsov-Ogievskiy 4 months, 4 weeks ago
ping)

On 01.09.25 18:39, Vladimir Sementsov-Ogievskiy wrote:
> This option doesn't make sense since long ago (10 years!)
> commit 1e7398a140f7a6 ("vhost: enable vhost without without MSI-X").
> 
> Prior 1e7398a140f7a6, to enable vhost for some specific kind of guests
> (that don't have MSI-X support), you should have set vhostforce=on
> (with vhost=on or unset).
> 
> Since 1e7398a140f7a6, guest type doesn't matter, all guests are equal
> for vhost-enabling options logic.
> 
> The current logic is:
>    vhost=on / vhost=off : vhostforce ignored, doesn't make sense
>    vhost unset : vhostforce counts, enabling vhost
> 
> Currently you may enable vhost several ways:
> - vhost=on
> - vhostforce=on
> - vhost=on + vhostforce=on
> - and even vhost=on + vhostforce=off
> 
> - they are all equal.
> 
> Let's finally deprecate the extra option.
> 
> Also, fix @vhostforce documentation.
> 
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
> Reviewed-by: Markus Armbruster <armbru@redhat.com>
> ---
> 
> v3: - two spaces between sentences for vhostforce description
>      - add r-b by Markus
> 
>   docs/about/deprecated.rst |  7 +++++++
>   qapi/net.json             | 11 +++++++++--
>   2 files changed, 16 insertions(+), 2 deletions(-)
> 
> diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
> index d50645a071..b17a5a41aa 100644
> --- a/docs/about/deprecated.rst
> +++ b/docs/about/deprecated.rst
> @@ -516,6 +516,13 @@ Stream ``reconnect`` (since 9.2)
>   The ``reconnect`` option only allows specifying second granularity timeouts,
>   which is not enough for all types of use cases, use ``reconnect-ms`` instead.
>   
> +TAP ``vhostforce`` (since 10.2)
> +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> +
> +The ``vhostforce`` option is redundant with the ``vhost`` option.
> +If they conflict, ``vhost`` takes precedence.  Just use ``vhost``.
> +
> +
>   VFIO device options
>   '''''''''''''''''''
>   
> diff --git a/qapi/net.json b/qapi/net.json
> index 78bcc9871e..bab26e0c5d 100644
> --- a/qapi/net.json
> +++ b/qapi/net.json
> @@ -346,13 +346,20 @@
>   # @vhostfds: file descriptors of multiple already opened vhost net
>   #     devices
>   #
> -# @vhostforce: vhost on for non-MSIX virtio guests
> +# @vhostforce: enable vhost-net network accelerator.  Ignored when
> +#    @vhost is set.
>   #
>   # @queues: number of queues to be created for multiqueue capable tap
>   #
>   # @poll-us: maximum number of microseconds that could be spent on busy
>   #     polling for tap (since 2.7)
>   #
> +# Features:
> +#
> +# @deprecated: Member @vhostforce is deprecated.  The @vhostforce
> +#    option is redundant with the @vhost option. If they conflict,
> +#    @vhost takes precedence.  Just use @vhost.
> +#
>   # Since: 1.2
>   ##
>   { 'struct': 'NetdevTapOptions',
> @@ -369,7 +376,7 @@
>       '*vhost':      'bool',
>       '*vhostfd':    'str',
>       '*vhostfds':   'str',
> -    '*vhostforce': 'bool',
> +    '*vhostforce': { 'type': 'bool', 'features': [ 'deprecated' ] },
>       '*queues':     'uint32',
>       '*poll-us':    'uint32'} }
>   


-- 
Best regards,
Vladimir