patches and low-level development discussion
 help / color / mirror / code / Atom feed
From: Alyssa Ross <hi@alyssa.is>
To: Dom Rodriguez <shymega@shymega.org.uk>
Cc: Dom RODRIGUEZ <dominic.rodriguez@rodriguez.org.uk>,
	devel@spectrum-os.org
Subject: Re: [PATCH v2] crosvm: Rename `--vhost-user-{fs,gpu}` args
Date: Mon, 11 Nov 2024 11:49:49 +0100	[thread overview]
Message-ID: <87wmhacaeq.fsf@alyssa.is> (raw)
In-Reply-To: <rpocpxe3s3yyughdoixmejurjq4pbxmk4qoypa5yqpkdmc6qir@jzvzlqikqpt5>

[-- Attachment #1: Type: text/plain, Size: 5409 bytes --]

Dom Rodriguez <shymega@shymega.org.uk> writes:

> On 09.11.2024 22:46, Alyssa Ross wrote:
>>Dom RODRIGUEZ <dominic.rodriguez@rodriguez.org.uk> writes:
>>
>>> On 28.09.2024 16:27, Alyssa Ross wrote:
>>>>Dom Rodriguez <shymega@shymega.org.uk> writes:
>>>>
>>>>> On 07.09.2024 18:40, Alyssa Ross wrote:
>>>>>>Dom Rodriguez <shymega@shymega.org.uk> writes:
>>>>>>
>>>>>>> crosvm was producing warnings when using `--vhost-user-gpu` and
>>>>>>> `--vhost-user-fs`.
>>>>>>>
>>>>>>> In this commit, I have adjusted the `crosvm` invocations to look
>>>>>>> something like `--vhost-user $DEVICE,socket=$PATH`, where `$DEVICE` is, in this case,
>>>>>>> `gpu` or `fs`, and `$PATH` is the path to the Unix socket.
>>>>>>>
>>>>>>> Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
>>>>>>> ---
>>>>>>>  img/app/Makefile                   | 4 ++--
>>>>>>>  release/checks/wayland/default.nix | 2 +-
>>>>>>>  2 files changed, 3 insertions(+), 3 deletions(-)
>>>>>>>
>>>>>>> diff --git a/img/app/Makefile b/img/app/Makefile
>>>>>>> index 3adf8c4..11ef6e1 100644
>>>>>>> --- a/img/app/Makefile
>>>>>>> +++ b/img/app/Makefile
>>>>>>> @@ -152,8 +152,8 @@ run-crosvm: $(imgdir)/appvm/blk/root.img start-vhost-user-gpu start-virtiofsd
>>>>>>>  	    --disk $(RUN_IMG) \
>>>>>>>  	    -p "console=ttyS0 root=PARTLABEL=root" \
>>>>>>>  	    --net tap-name=tap0 \
>>>>>>> -	    --vhost-user-fs build/virtiofsd.sock:virtiofs0 \
>>>>>>> -	    --vhost-user-gpu build/vhost-user-gpu.sock \
>>>>>>> +	    --vhost-user fs,socket=build/virtiofsd.sock:virtiofs0 \
>>>>>>> +	    --vhost-user gpu,socket=build/vhost-user-gpu.sock \
>>>>>>>  	    --vsock cid=3 \
>>>>>>>  	    --serial type=file,hardware=serial,path=build/serial.log \
>>>>>>>  	    --serial type=stdout,hardware=virtio-console,stdin=true \
>>>>>>
>>>>>>This is still not right, I'm afraid.
>>>>>>
>>>>>>When I run nix-shell --run 'make clean && make run' VMM=crosvm in
>>>>>>img/app, I get this error:
>>>>>>
>>>>>>[2024-09-07T16:36:32.592274891+00:00 ERROR crosvm] exiting with error 1: failed to connect to vhost-user socket path build/virtiofsd.sock:virtiofs0
>>>>>>
>>>>>>Probably the tag should also be a comma-separated key=value option?
>>>>>>
>>>>>>(This doesn't have any automated test, because it's just part of the
>>>>>>development environment, and setting up a test environment to resemble a
>>>>>>development machine isn't trivial.  Should be possible though.)
>>>>>
>>>>> It's bizarre. I've done some more testing, and it seems that
>>>>> `--vhost-user` isn't *quite* there yet on feature parity with
>>>>> `--vhost-user-fs`. Maybe I'm going wrong here, but it doesn't recognise
>>>>> the tag as a k/v option.
>>>>>
>>>>> I have managed to get the tests running with `--vhost-user-fs`, but it
>>>>> does look mismatched now.
>>>>>
>>>>> Would you prefer I revert the changes to `--vhost-user fs` =>
>>>>> `--vhost-user-fs`?
>>>>
>>>>You're right!  I've just spent the last little while looking around
>>>>trying to figure out what's up here, and I think I've figured it out.
>>>>
>>>>In this commit[1] they made the vhost-user-fs tag optional, because it
>>>>can now be set with virtiosfd instead of the VMM.  This is probably
>>>>good, because the more generic vhost-user becomes, the more hope
>>>>Spectrum has of one day not needing Cloud Hypervisor patches. :)  So we
>>>>could try using --vhost-user fs for crosvm, and then passing --tag to
>>>>virtiofsd, but it'd need to be tested with VMM=qemu and
>>>>VMM=cloud-hypervisor as well, because I'm not sure whether they support
>>>>a backend-provided tag.
>>>
>>> Finally got round to this.
>>>
>>> By the looks of it, currently `cloud-hypervisor` and QEMU do not support a
>>> backend-provided tag.
>>>
>>> We could introduce an abstraction [function] in the Makefile over
>>> `vhost-user-fs` arguments for each hypervisor, which we could use whilst
>>> waiting for QEMU and cloud-hypervisor to support backend-provided tags
>>> with `vhost-user-fs`, and in the meantime use the abstraction for
>>> crosvm.
>>>
>>> I envision the abstraction as taking a few arguments: hypervisor,
>>> virtiofsd socket path, and tag. The abstraction would then construct &
>>> return the correct command-line argument for the hypervisor. We would
>>> call the abstractive function in the call to the `run` Make target.
>>>
>>> That way, we're prepared for the future.
>>>
>>> What do you think?
>>
>>Given that they don't support the optional protocol feature, I'd expect
>>cloud-hypervisor and QEMU to just ignore the tag given to virtiofsd —
>>can we not just set the tag on the virtiofsd invocation for crosvm, and
>>keep setting it in the cloud-hypervisor and QEMU command lines for them?
>
> That's a fair conclusion. Are you happy for me to submit a patch just
> for crosvm for now?

Yeah.  Add the tag to the virtiofsd invocation, update the crosvm
command line, then check that "make run" in a nix-shell still works with
each of VMM=cloud-hypervisor, VMM=qemu, and VMM=crosvm, and let me know
if you need help with anything. :)

(I think QEMU might not be able to open application windows at the moment
for upstream reasons, so if that's the case rather than checking an
application window appears, you could instead just check that
/run/virtiofs/virtiofs0 is non-empty in the QEMU serial console.)

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 227 bytes --]

      reply	other threads:[~2024-11-11 10:50 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-06 22:42 [PATCH v2] crosvm: Rename `--vhost-user-{fs,gpu}` args Dom Rodriguez
2024-09-07 16:40 ` Alyssa Ross
2024-09-21 22:52   ` Dom Rodriguez
2024-09-28 14:27     ` Alyssa Ross
2024-10-18 19:53       ` Dom Rodriguez
2024-10-21  9:08         ` Alyssa Ross
2024-10-21 19:53           ` Alyssa Ross
2024-11-09  1:03       ` Dom RODRIGUEZ
2024-11-09 21:46         ` Alyssa Ross
2024-11-11  1:35           ` Dom Rodriguez
2024-11-11 10:49             ` Alyssa Ross [this message]

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=87wmhacaeq.fsf@alyssa.is \
    --to=hi@alyssa.is \
    --cc=devel@spectrum-os.org \
    --cc=dominic.rodriguez@rodriguez.org.uk \
    --cc=shymega@shymega.org.uk \
    /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.
Code repositories for project(s) associated with this public inbox

	https://spectrum-os.org/git/crosvm
	https://spectrum-os.org/git/doc
	https://spectrum-os.org/git/mktuntap
	https://spectrum-os.org/git/nixpkgs
	https://spectrum-os.org/git/spectrum
	https://spectrum-os.org/git/ucspi-vsock
	https://spectrum-os.org/git/www

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).