Re: [PATCH] vsock: Enable H2G override
From: "Michael S. Tsirkin" <mst@redhat.com>
Date: 2026-03-03 07:19:20
Also in:
kvm, lkml, virtualization
On Tue, Mar 03, 2026 at 07:51:32AM +0100, Alexander Graf wrote:
On 02.03.26 20:52, Michael S. Tsirkin wrote:quoted
On Mon, Mar 02, 2026 at 04:48:33PM +0100, Alexander Graf wrote:quoted
On 02.03.26 13:06, Stefano Garzarella wrote:quoted
CCing Bryan, Vishnu, and Broadcom list. On Mon, Mar 02, 2026 at 12:47:05PM +0100, Stefano Garzarella wrote:quoted
Please target net-next tree for this new feature. On Mon, Mar 02, 2026 at 10:41:38AM +0000, Alexander Graf wrote:quoted
Vsock maintains a single CID number space which can be used to communicate to the host (G2H) or to a child-VM (H2G). The current logic trivially assumes that G2H is only relevant for CID <= 2 because these target the hypervisor. However, in environments like Nitro Enclaves, an instance that hosts vhost_vsock powered VMs may still want to communicate to Enclaves that are reachable at higher CIDs through virtio-vsock-pci. That means that for CID > 2, we really want an overlay. By default, all CIDs are owned by the hypervisor. But if vhost registers a CID, it takes precedence. Implement that logic. Vhost already knows which CIDs it supports anyway. With this logic, I can run a Nitro Enclave as well as a nested VM with vhost-vsock support in parallel, with the parent instance able to communicate to both simultaneously.I honestly don't understand why VMADDR_FLAG_TO_HOST (added specifically for Nitro IIRC) isn't enough for this scenario and we have to add this change. Can you elaborate a bit more about the relationship between this change and VMADDR_FLAG_TO_HOST we added?The main problem I have with VMADDR_FLAG_TO_HOST for connect() is that it punts the complexity to the user. Instead of a single CID address space, you now effectively create 2 spaces: One for TO_HOST (needs a flag) and one for TO_GUEST (no flag). But every user space tool needs to learn about this flag. That may work for super special-case applications. But propagating that all the way into socat, iperf, etc etc? It's just creating friction. IMHO the most natural experience is to have a single CID space, potentially manually segmented by launching VMs of one kind within a certain range. At the end of the day, the host vs guest problem is super similar to a routing table.If this is what's desired, some bits could be stolen from the CID to specify the destination type. Would that address the issue? Just a thought.If we had thought of this from the beginning, yes. But now that everyone thinks CID (guest) == CID (host), I believe this is no longer feasible. Alex
I don't really insist, but just to point out that if we wanted to, we could map multiple CIDs to host. Anyway.
Amazon Web Services Development Center Germany GmbH Tamara-Danz-Str. 13 10243 Berlin Geschaeftsfuehrung: Christof Hellmis, Andreas Stieger Eingetragen am Amtsgericht Charlottenburg unter HRB 257764 B Sitz: Berlin Ust-ID: DE 365 538 597