[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <6cf0c06a-b884-3251-166b-6ff3dec3ebc7@collabora.com>
Date: Mon, 12 Feb 2018 15:42:37 +0100
From: Tomeu Vizoso <tomeu.vizoso@...labora.com>
To: Gerd Hoffmann <kraxel@...hat.com>
Cc: linux-kernel@...r.kernel.org, Zach Reizner <zachr@...gle.com>,
kernel@...labora.com, dri-devel@...ts.freedesktop.org,
virtualization@...ts.linux-foundation.org,
"Michael S. Tsirkin" <mst@...hat.com>,
David Airlie <airlied@...ux.ie>,
Jason Wang <jasowang@...hat.com>,
Stefan Hajnoczi <stefanha@...il.com>
Subject: Re: [PATCH v3 1/2] drm/virtio: Add window server support
On 02/12/2018 03:27 PM, Gerd Hoffmann wrote:
> On Mon, Feb 12, 2018 at 03:00:24PM +0100, Tomeu Vizoso wrote:
>> On 02/12/2018 12:52 PM, Gerd Hoffmann wrote:
>>> Hi,
>>>
>>>> can we reach agreement on whether vsock should be involved in this?
>>>
>>> I think the best approach would be to have guest proxy and host proxy
>>> use vsock for the wayland protocol. Use a wayland protocol extension to
>>> reference the buffers in stdvga / ivshmem / virtio-gpu. Only the two
>>> proxies need to understand the extension, the client <=> guest proxy and
>>> host proxy <=> server communication would be standard wayland protocol.
>>
>> Thanks for the ideas. What I haven't understood yet is how you see the
>> actual passing of buffers via vsock. Are you thinking of using ancillary
>> data to pass FDs, or something else?
>
> I was more thinking about a struct containing enough info to allow the
> proxy on the host side find the buffer, something like:
>
> struct {
> enum type { stdvga, virtio-cpu, ... }
> pcislot device;
> union {
> int stdvga_pcibar_offset;
> int virtio_gpu_resource_id;
> }
> }
>
> So when the guest proxy gets a message with a fd referencing a buffer it
> would have to figure where the buffer is, rewrite the message into the
> struct above for the host proxy. The host proxy would rewrite the
> message again for the server.
What I don't understand yet is how we can keep the buffer descriptions
together with the protocol data that references them.
With SCM_RIGHTS, the FDs are placed in the ancillary data that "travels"
together with the protocol data that references them.
With the present series, the DRM_IOCTL_VIRTGPU_WINSRV_TX ioctl struct has
a field for the protocol data and an array of FDs.
How are you proposing to pass instances of that struct from above along
the protocol data that refers to them?
Thanks,
Tomeu
Powered by blists - more mailing lists