On 11/16/23 14:30, Peter Krempa wrote:
On Tue, Nov 07, 2023 at 13:55:24 +0100, Michal Privoznik wrote:
> Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
> ---
> NEWS.rst | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/NEWS.rst b/NEWS.rst
> index 08e5a3d04a..f73dd867d5 100644
> --- a/NEWS.rst
> +++ b/NEWS.rst
> @@ -17,6 +17,16 @@ v9.10.0 (unreleased)
>
> * **New features**
>
> + * Introduce pipewire audio backend
> +
> + The QEMU hypervisor driver now allows setting ``pipewire`` backend for
> + ``<audio/>`` device. Please note, that for domains under system URI it
> + might be necessary to set various environment variables (e.g.
> + ``PIPEWIRE_REMOTE`` and/or ``PIPEWIRE_RUNTIME_DIR``) to point QEMU process
> + to a PipeWire daemon running under a non-privileged user. See `knowledge base
> +
<
https://libvirt.org/kbase/qemu-passthrough-security.html#xml-document-add...
> + for more information on passing additional environment variables.
This seems to imply that you must set the XML env variable overrides,
but the code seems to do the passthrough from users environment. I think
it should be made obvious which is the case and also most likely a
better idea is to clarify it in formatdomain.rst to point users to what
additional config they need.
Maybe the wording is bad, but basically:
1) for qemu:///session, the virtqemud is started automagically, i.e.
after pipewire daemon was started and thus one of the env vars is
already present in the environment and passed through. Mind you,
pipewire daemon is also per user.
2) for qemu:///system, the virtqemud is going to be started by init
system and thus no env var is going to be set for it. This is different
from pulseaudio. In this case, you need to set the env var explicitly to
tell pipewire client (running inside of qemu) where to connect.
I'm not sure how to express this in the NEWS.
Though, there is some discussion in linked gitlab issue which suggest
that env var passing doesn't work. But I need to investigate.
Michal