docs/about/deprecated.rst | 7 +++++++ qapi/net.json | 11 +++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-)
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
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
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
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
© 2016 - 2026 Red Hat, Inc.