From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752151AbeBFOXM (ORCPT ); Tue, 6 Feb 2018 09:23:12 -0500 Received: from mx1.redhat.com ([209.132.183.28]:40136 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750990AbeBFOXG (ORCPT ); Tue, 6 Feb 2018 09:23:06 -0500 Date: Tue, 6 Feb 2018 15:23:02 +0100 From: Gerd Hoffmann To: Tomeu Vizoso Cc: linux-kernel@vger.kernel.org, Zach Reizner , kernel@collabora.com, dri-devel@lists.freedesktop.org, virtualization@lists.linux-foundation.org, "Michael S. Tsirkin" , David Airlie , Jason Wang , Stefan Hajnoczi Subject: Re: [PATCH v3 1/2] drm/virtio: Add window server support Message-ID: <20180206142302.vdjyqmnoypydci4t@sirius.home.kraxel.org> References: <20180126135803.29781-1-tomeu.vizoso@collabora.com> <20180126135803.29781-2-tomeu.vizoso@collabora.com> <20180201163623.5cs2ysykg5wgulf4@sirius.home.kraxel.org> <49785e0d-936a-c3b4-62dd-aafc7083a942@collabora.com> <20180205122017.4vb5nlpodkq2uhxa@sirius.home.kraxel.org> <20180205160322.sntv5uoqp5o7flnh@sirius.home.kraxel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: NeoMutt/20171215 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, > > Hmm? I'm assuming the wayland client (in the guest) talks to the > > wayland proxy, using the wayland protocol, like it would talk to a > > wayland display server. Buffers must be passed from client to > > server/proxy somehow, probably using fd passing, so where is the > > problem? > > > > Or did I misunderstand the role of the proxy? > > Hi Gerd, > > it's starting to look to me that we're talking a bit past the other, so I > have pasted below a few words describing my current plan regarding the 3 key > scenarios that I'm addressing. You are describing the details, but I'm missing the big picture ... So, virtualization aside, how do buffers work in wayland? As far I know it goes like this: (a) software rendering: client allocates shared memory buffer, renders into it, then passes a file handle for that shmem block together with some meta data (size, format, ...) to the wayland server. (b) gpu rendering: client opens a render node, allocates a buffer, asks the cpu to renders into it, exports the buffer as dma-buf (DRM_IOCTL_PRIME_HANDLE_TO_FD), passes this to the wayland server (again including meta data of course). Is that correct? Now, with virtualization added to the mix it becomes a bit more complicated. Client and server are unmodified. The client talks to the guest proxy (wayland protocol). The guest proxy talks to the host proxy (protocol to be defined). The host proxy talks to the server (wayland protocol). Buffers must be managed along the way, and we want avoid copying around the buffers. The host proxy could be implemented directly in qemu, or as separate process which cooperates with qemu for buffer management. Fine so far? > I really think that whatever we come up with needs to support 3D clients as > well. Lets start with 3d clients, I think these are easier. They simply use virtio-gpu for 3d rendering as usual. When they are done the rendered buffer already lives in a host drm buffer (because virgl runs the actual rendering on the host gpu). So the client passes the dma-buf to the guest proxy, the guest proxy imports it to look up the resource-id, passes the resource-id to the host proxy, the host proxy looks up the drm buffer and exports it as dma-buf, then passes it to the server. Done, without any extra data copies. > Creation of shareable buffer by guest > ------------------------------------------------- > > 1. Client requests virtio driver to create a buffer suitable for sharing > with host (DRM_VIRTGPU_RESOURCE_CREATE) client or guest proxy? > 4. QEMU maps that buffer to the guest's address space > (KVM_SET_USER_MEMORY_REGION), passes the guest PFN to the virtio driver That part is problematic. The host can't simply allocate something in the physical address space, because most physical address space management is done by the guest. All pci bars are mapped by the guest firmware for example (or by the guest OS in case of hotplug). > 4. QEMU pops data+buffers from the virtqueue, looks up shmem FD for each > resource, sends data + FDs to the compositor with SCM_RIGHTS BTW: Is there a 1:1 relationship between buffers and shmem blocks? Or does the wayland protocol allow for offsets in buffer meta data, so you can place multiple buffers in a single shmem block? cheers, Gerd From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gerd Hoffmann Subject: Re: [PATCH v3 1/2] drm/virtio: Add window server support Date: Tue, 6 Feb 2018 15:23:02 +0100 Message-ID: <20180206142302.vdjyqmnoypydci4t@sirius.home.kraxel.org> References: <20180126135803.29781-1-tomeu.vizoso@collabora.com> <20180126135803.29781-2-tomeu.vizoso@collabora.com> <20180201163623.5cs2ysykg5wgulf4@sirius.home.kraxel.org> <49785e0d-936a-c3b4-62dd-aafc7083a942@collabora.com> <20180205122017.4vb5nlpodkq2uhxa@sirius.home.kraxel.org> <20180205160322.sntv5uoqp5o7flnh@sirius.home.kraxel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by gabe.freedesktop.org (Postfix) with ESMTPS id C7A9A6E46F for ; Tue, 6 Feb 2018 14:23:06 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Tomeu Vizoso Cc: "Michael S. Tsirkin" , David Airlie , Stefan Hajnoczi , Jason Wang , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, virtualization@lists.linux-foundation.org, kernel@collabora.com List-Id: dri-devel@lists.freedesktop.org ICBIaSwKCj4gPiBIbW0/ICBJJ20gYXNzdW1pbmcgdGhlIHdheWxhbmQgY2xpZW50IChpbiB0aGUg Z3Vlc3QpIHRhbGtzIHRvIHRoZQo+ID4gd2F5bGFuZCBwcm94eSwgdXNpbmcgdGhlIHdheWxhbmQg cHJvdG9jb2wsIGxpa2UgaXQgd291bGQgdGFsayB0byBhCj4gPiB3YXlsYW5kIGRpc3BsYXkgc2Vy dmVyLiAgQnVmZmVycyBtdXN0IGJlIHBhc3NlZCBmcm9tIGNsaWVudCB0bwo+ID4gc2VydmVyL3By b3h5IHNvbWVob3csIHByb2JhYmx5IHVzaW5nIGZkIHBhc3NpbmcsIHNvIHdoZXJlIGlzIHRoZQo+ ID4gcHJvYmxlbT8KPiA+IAo+ID4gT3IgZGlkIEkgbWlzdW5kZXJzdGFuZCB0aGUgcm9sZSBvZiB0 aGUgcHJveHk/Cj4gCj4gSGkgR2VyZCwKPiAKPiBpdCdzIHN0YXJ0aW5nIHRvIGxvb2sgdG8gbWUg dGhhdCB3ZSdyZSB0YWxraW5nIGEgYml0IHBhc3QgdGhlIG90aGVyLCBzbyBJCj4gaGF2ZSBwYXN0 ZWQgYmVsb3cgYSBmZXcgd29yZHMgZGVzY3JpYmluZyBteSBjdXJyZW50IHBsYW4gcmVnYXJkaW5n IHRoZSAzIGtleQo+IHNjZW5hcmlvcyB0aGF0IEknbSBhZGRyZXNzaW5nLgoKWW91IGFyZSBkZXNj cmliaW5nIHRoZSBkZXRhaWxzLCBidXQgSSdtIG1pc3NpbmcgdGhlIGJpZyBwaWN0dXJlIC4uLgoK U28sIHZpcnR1YWxpemF0aW9uIGFzaWRlLCBob3cgZG8gYnVmZmVycyB3b3JrIGluIHdheWxhbmQ/ ICBBcyBmYXIgSSBrbm93Cml0IGdvZXMgbGlrZSB0aGlzOgoKICAoYSkgc29mdHdhcmUgcmVuZGVy aW5nOiBjbGllbnQgYWxsb2NhdGVzIHNoYXJlZCBtZW1vcnkgYnVmZmVyLCByZW5kZXJzCiAgICAg IGludG8gaXQsIHRoZW4gcGFzc2VzIGEgZmlsZSBoYW5kbGUgZm9yIHRoYXQgc2htZW0gYmxvY2sg dG9nZXRoZXIKICAgICAgd2l0aCBzb21lIG1ldGEgZGF0YSAoc2l6ZSwgZm9ybWF0LCAuLi4pIHRv IHRoZSB3YXlsYW5kIHNlcnZlci4KCiAgKGIpIGdwdSByZW5kZXJpbmc6IGNsaWVudCBvcGVucyBh IHJlbmRlciBub2RlLCBhbGxvY2F0ZXMgYSBidWZmZXIsCiAgICAgIGFza3MgdGhlIGNwdSB0byBy ZW5kZXJzIGludG8gaXQsIGV4cG9ydHMgdGhlIGJ1ZmZlciBhcyBkbWEtYnVmCiAgICAgIChEUk1f SU9DVExfUFJJTUVfSEFORExFX1RPX0ZEKSwgcGFzc2VzIHRoaXMgdG8gdGhlIHdheWxhbmQgc2Vy dmVyCiAgICAgIChhZ2FpbiBpbmNsdWRpbmcgbWV0YSBkYXRhIG9mIGNvdXJzZSkuCgpJcyB0aGF0 IGNvcnJlY3Q/CgpOb3csIHdpdGggdmlydHVhbGl6YXRpb24gYWRkZWQgdG8gdGhlIG1peCBpdCBi ZWNvbWVzIGEgYml0IG1vcmUKY29tcGxpY2F0ZWQuICBDbGllbnQgYW5kIHNlcnZlciBhcmUgdW5t b2RpZmllZC4gIFRoZSBjbGllbnQgdGFsa3MgdG8gdGhlCmd1ZXN0IHByb3h5ICh3YXlsYW5kIHBy b3RvY29sKS4gIFRoZSBndWVzdCBwcm94eSB0YWxrcyB0byB0aGUgaG9zdCBwcm94eQoocHJvdG9j b2wgdG8gYmUgZGVmaW5lZCkuIFRoZSBob3N0IHByb3h5IHRhbGtzIHRvIHRoZSBzZXJ2ZXIgKHdh eWxhbmQKcHJvdG9jb2wpLgoKQnVmZmVycyBtdXN0IGJlIG1hbmFnZWQgYWxvbmcgdGhlIHdheSwg YW5kIHdlIHdhbnQgYXZvaWQgY29weWluZyBhcm91bmQKdGhlIGJ1ZmZlcnMuICBUaGUgaG9zdCBw cm94eSBjb3VsZCBiZSBpbXBsZW1lbnRlZCBkaXJlY3RseSBpbiBxZW11LCBvcgphcyBzZXBhcmF0 ZSBwcm9jZXNzIHdoaWNoIGNvb3BlcmF0ZXMgd2l0aCBxZW11IGZvciBidWZmZXIgbWFuYWdlbWVu dC4KCkZpbmUgc28gZmFyPwoKPiBJIHJlYWxseSB0aGluayB0aGF0IHdoYXRldmVyIHdlIGNvbWUg dXAgd2l0aCBuZWVkcyB0byBzdXBwb3J0IDNEIGNsaWVudHMgYXMKPiB3ZWxsLgoKTGV0cyBzdGFy dCB3aXRoIDNkIGNsaWVudHMsIEkgdGhpbmsgdGhlc2UgYXJlIGVhc2llci4gIFRoZXkgc2ltcGx5 IHVzZQp2aXJ0aW8tZ3B1IGZvciAzZCByZW5kZXJpbmcgYXMgdXN1YWwuICBXaGVuIHRoZXkgYXJl IGRvbmUgdGhlIHJlbmRlcmVkCmJ1ZmZlciBhbHJlYWR5IGxpdmVzIGluIGEgaG9zdCBkcm0gYnVm ZmVyIChiZWNhdXNlIHZpcmdsIHJ1bnMgdGhlIGFjdHVhbApyZW5kZXJpbmcgb24gdGhlIGhvc3Qg Z3B1KS4gIFNvIHRoZSBjbGllbnQgcGFzc2VzIHRoZSBkbWEtYnVmIHRvIHRoZQpndWVzdCBwcm94 eSwgdGhlIGd1ZXN0IHByb3h5IGltcG9ydHMgaXQgdG8gbG9vayB1cCB0aGUgcmVzb3VyY2UtaWQs CnBhc3NlcyB0aGUgcmVzb3VyY2UtaWQgdG8gdGhlIGhvc3QgcHJveHksIHRoZSBob3N0IHByb3h5 IGxvb2tzIHVwIHRoZQpkcm0gYnVmZmVyIGFuZCBleHBvcnRzIGl0IGFzIGRtYS1idWYsIHRoZW4g cGFzc2VzIGl0IHRvIHRoZSBzZXJ2ZXIuCkRvbmUsIHdpdGhvdXQgYW55IGV4dHJhIGRhdGEgY29w aWVzLgoKPiBDcmVhdGlvbiBvZiBzaGFyZWFibGUgYnVmZmVyIGJ5IGd1ZXN0Cj4gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IAo+IDEuIENsaWVudCBy ZXF1ZXN0cyB2aXJ0aW8gZHJpdmVyIHRvIGNyZWF0ZSBhIGJ1ZmZlciBzdWl0YWJsZSBmb3Igc2hh cmluZwo+IHdpdGggaG9zdCAoRFJNX1ZJUlRHUFVfUkVTT1VSQ0VfQ1JFQVRFKQoKY2xpZW50IG9y IGd1ZXN0IHByb3h5PwoKPiA0LiBRRU1VIG1hcHMgdGhhdCBidWZmZXIgdG8gdGhlIGd1ZXN0J3Mg YWRkcmVzcyBzcGFjZQo+IChLVk1fU0VUX1VTRVJfTUVNT1JZX1JFR0lPTiksIHBhc3NlcyB0aGUg Z3Vlc3QgUEZOIHRvIHRoZSB2aXJ0aW8gZHJpdmVyCgpUaGF0IHBhcnQgaXMgcHJvYmxlbWF0aWMu ICBUaGUgaG9zdCBjYW4ndCBzaW1wbHkgYWxsb2NhdGUgc29tZXRoaW5nIGluCnRoZSBwaHlzaWNh bCBhZGRyZXNzIHNwYWNlLCBiZWNhdXNlIG1vc3QgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZQptYW5h Z2VtZW50IGlzIGRvbmUgYnkgdGhlIGd1ZXN0LiAgQWxsIHBjaSBiYXJzIGFyZSBtYXBwZWQgYnkg dGhlIGd1ZXN0CmZpcm13YXJlIGZvciBleGFtcGxlIChvciBieSB0aGUgZ3Vlc3QgT1MgaW4gY2Fz ZSBvZiBob3RwbHVnKS4KCj4gNC4gUUVNVSBwb3BzIGRhdGErYnVmZmVycyBmcm9tIHRoZSB2aXJ0 cXVldWUsIGxvb2tzIHVwIHNobWVtIEZEIGZvciBlYWNoCj4gcmVzb3VyY2UsIHNlbmRzIGRhdGEg KyBGRHMgdG8gdGhlIGNvbXBvc2l0b3Igd2l0aCBTQ01fUklHSFRTCgpCVFc6IElzIHRoZXJlIGEg MToxIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGJ1ZmZlcnMgYW5kIHNobWVtIGJsb2Nrcz8gIE9yCmRv ZXMgdGhlIHdheWxhbmQgcHJvdG9jb2wgYWxsb3cgZm9yIG9mZnNldHMgaW4gYnVmZmVyIG1ldGEg ZGF0YSwgc28geW91CmNhbiBwbGFjZSBtdWx0aXBsZSBidWZmZXJzIGluIGEgc2luZ2xlIHNobWVt IGJsb2NrPwoKY2hlZXJzLAogIEdlcmQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo=