1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
| | ---
layout: page
title: Cloud Hypervisor with virtio-gpu support
---
<!-- SPDX-FileCopyrightText: 2019-2020, 2022, 2024 Alyssa Ross <hi@alyssa.is> -->
<!-- SPDX-License-Identifier: CC-BY-SA-4.0 OR GFDL-1.3-no-invariants-or-later -->
<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
<p>
This is a patchset for <a href="https://cloudhypervisor.org/">Cloud
Hypervisor</a> support providing a virtio-gpu device to guests,
using <a href="https://crosvm.dev/">crosvm</a>’s virtio-gpu
implementation
over <a href="https://www.qemu.org/docs/master/interop/vhost-user.html">vhost-user</a>.
<p>
If this patchset is useful to you, please consider donating to support
its continued development via
either <a href="https://github.com/sponsors/alyssais">GitHub
Sponsors</a> or <a href="https://liberapay.com/qyliss">LiberaPay</a>.
<p>
The patches as developed as part of <a href="../..">Spectrum</a>, a
compartmentalized desktop operating system project.
<h2>Building</h2>
<ol>
<li>
Clone the repository
for <a href="https://github.com/cloud-hypervisor/cloud-hypervisor">Cloud
Hypervisor</a>.
<li>
Download and apply the patchset for the correct version of Cloud
Hypervisor.
<li>
Use <code>cargo build</code> in the Cloud Hypervisor source tree as
normal.
</ol>
<h2>Usage example</h2>
Start the crosvm GPU device:
<pre><code>crosvm device gpu --socket-path gpu.sock</code></pre>
Connect to the GPU device with cloud-hypervisor:
<pre><code>cloud-hypervisor --generic-vhost-user virtio_id=gpu,socket=gpu.sock,queue_sizes='[16,256]' …</code></pre>
<h2>Downloads</h2>
<ol reversed style="list-style-type: none; padding-left: 0;">
<li><a href="https://spectrum-os.org/software/cloud-hypervisor/cloud-hypervisor-50.0-spectrum0-patches.tar.gz">cloud-hypervisor-50.0-spectrum0-patches.tar.gz</a>
(tested with crosvm <a href="https://chromium.googlesource.com/chromiumos/platform/crosvm/+/18bc84d003e04108d973a5233f0c6f3b2039d756">18bc84d00</a>)
<li><a href="https://spectrum-os.org/software/cloud-hypervisor/cloud-hypervisor-49.0-spectrum0-patches.tar.gz">cloud-hypervisor-49.0-spectrum0-patches.tar.gz</a>
(tested with crosvm <a href="https://chromium.googlesource.com/chromiumos/platform/crosvm/+/f6de423867b914a59d86c54d102831bccc7ed2c8">f6de42386</a>)
<li><a href="https://spectrum-os.org/software/cloud-hypervisor/cloud-hypervisor-48.0-spectrum0-patches.tar.gz">cloud-hypervisor-48.0-spectrum0-patches.tar.gz</a>
(tested with crosvm <a href="https://chromium.googlesource.com/chromiumos/platform/crosvm/+/3202c663eaa555678bd142320d51c63acce266bc">3202c663e</a>)
<li><a href="https://spectrum-os.org/software/cloud-hypervisor/cloud-hypervisor-47.0-spectrum0-patches.tar.gz">cloud-hypervisor-47.0-spectrum0-patches.tar.gz</a>
(tested with crosvm <a href="https://chromium.googlesource.com/chromiumos/platform/crosvm/+/940eaae7246300bb01e1efb8c3d21ea93e0e63cd">940eaae72</a>)
<li><a href="https://spectrum-os.org/software/cloud-hypervisor/cloud-hypervisor-46.0-spectrum0-patches.tar.gz">cloud-hypervisor-46.0-spectrum0-patches.tar.gz</a>
(tested with crosvm <a href="https://chromium.googlesource.com/chromiumos/platform/crosvm/+/581ccb06d726b037fd75f64ef964b3d0eb989e33">581ccb06d</a>)
<li><a href="https://spectrum-os.org/software/cloud-hypervisor/cloud-hypervisor-45.0-spectrum0-patches.tar.gz">cloud-hypervisor-45.0-spectrum0-patches.tar.gz</a>
(tested with crosvm <a href="https://chromium.googlesource.com/chromiumos/platform/crosvm/+/6b75e831de4d5f44a362142d25b77d9c4d7988aa">6b75e831d</a>)
<li><a href="https://spectrum-os.org/software/cloud-hypervisor/cloud-hypervisor-44.0-spectrum0-patches.tar.gz">cloud-hypervisor-44.0-spectrum0-patches.tar.gz</a>
(tested with crosvm <a href="https://chromium.googlesource.com/chromiumos/platform/crosvm/+/d8e0f16c287b962505c8746c3be08323492186c9">d8e0f16c2</a>)
<li><a href="https://spectrum-os.org/software/cloud-hypervisor/cloud-hypervisor-43.0-spectrum0-patches.tar.gz">cloud-hypervisor-43.0-spectrum0-patches.tar.gz</a>
(tested with crosvm <a href="https://chromium.googlesource.com/chromiumos/platform/crosvm/+/9d42f918373f962b7d035ff52a1629e184cb496e">9d42f9183</a>)
<li><a href="https://spectrum-os.org/software/cloud-hypervisor/cloud-hypervisor-42.0-spectrum0-patches.tar.gz">cloud-hypervisor-42.0-spectrum0-patches.tar.gz</a>
(tested with crosvm <a href="https://chromium.googlesource.com/chromiumos/platform/crosvm/+/b7fd753b43baf2da422a1fe5e2c6d05180f7cd0b">b7fd753b4</a>)
<li><a href="https://spectrum-os.org/software/cloud-hypervisor/cloud-hypervisor-40.0-spectrum0-patches.tar.gz">cloud-hypervisor-40.0-spectrum0-patches.tar.gz</a>
(tested with crosvm <a href="https://chromium.googlesource.com/chromiumos/platform/crosvm/+/6a7ff1ecb7fad6820d3bbfe8b11e65854059aba5">6a7ff1ecb</a>)
<li><a href="https://spectrum-os.org/software/cloud-hypervisor/cloud-hypervisor-39.0-spectrum1-patches.tar.gz">cloud-hypervisor-39.0-spectrum1-patches.tar.gz</a>
(tested with crosvm <a href="https://chromium.googlesource.com/chromiumos/platform/crosvm/+/bc2900b9ccbdf37b780a63888ca94437fd7dd6af">bc2900b9c</a>)
<li><a href="https://spectrum-os.org/software/cloud-hypervisor/cloud-hypervisor-39.0-spectrum0-patches.tar.gz">cloud-hypervisor-39.0-spectrum0-patches.tar.gz</a>
(tested with crosvm <a href="https://chromium.googlesource.com/chromiumos/platform/crosvm/+/7c75ad6185893b4cc26676b6a0eb9fbdf9ed5b72">7c75ad618</a>)
<li><a href="https://spectrum-os.org/software/cloud-hypervisor/cloud-hypervisor-38.0-spectrum0-patches.tar.xz">cloud-hypervisor-38.0-spectrum0-patches.tar.xz</a>
<li><a href="https://spectrum-os.org/software/cloud-hypervisor/cloud-hypervisor-37.0-spectrum0-patches.tar.xz">cloud-hypervisor-37.0-spectrum0-patches.tar.xz</a>
</ol>
<h2>Contributing</h2>
<p>
The patches are maintained
in <a href="https://spectrum-os.org/git/spectrum">Spectrum’s git
repository</a>. Please refer to the documentation
for <a href="/doc/contributing/">contributing to Spectrum</a>.
<h2>Can these patches be upstreamed?</h2>
<p>
I don’t think so. The Cloud Hypervisor developers
are <a href="https://github.com/cloud-hypervisor/cloud-hypervisor/issues/3212#issuecomment-937823742">not
very interested</a> in GPU support — although perhaps an
implementation that was just a vfio-user frontend implementation,
deletaging all of the complexity of rendering, input handling, etc. to
another process would be light enough to overcome that — but on top of
that, communicating with crosvm’s GPU device requires using
non-standard commands that are not part of
the <a href="https://www.qemu.org/docs/master/interop/vhost-user.html">vhost-user
specification</a>.
<p>
It’s possible that, in future, it might be possible to use an external
virtual GPU device with an unmodified Cloud Hypervisor
using <a href="https://spdk.io/news/2021/05/04/vfio-user/">vfio-user</a>
or <a href="https://lore.kernel.org/qemu-devel/20230901110018.3704459-1-alex.bennee@linaro.org/"><code>VHOST_USER_PROTOCOL_F_PROBE</code></a>,
or that at least the custom vhost-user commands could be standardized.
<p>
Other Cloud Hypervisor work is
regularly <a href="https://github.com/cloud-hypervisor/cloud-hypervisor/commits?author=alyssais">upstreamed</a>
as part of the Spectrum project.
<h2>Bug reports and other questions</h2>
<p>
Bug reports for and other questions about the patchset are welcome!
You can send mail to
the <a href="mailto:discuss@spectrum-os.org">discuss@spectrum-os.org</a>
<a href="/doc/contributing/communication.html#mailing-lists">mailing
list</a>, or ask in the
Spectrum <a href="/doc/contributing/communication.html#chat">Matrix
chat</a>.
|