From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: [PATCH v3] drm/xen-front: Add support for Xen PV display frontend Date: Wed, 21 Mar 2018 16:58:12 +0200 Message-ID: <1521644293-14612-1-git-send-email-andr2000@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lf0-x230.google.com (mail-lf0-x230.google.com [IPv6:2a00:1450:4010:c07::230]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5268F6E327 for ; Wed, 21 Mar 2018 14:58:23 +0000 (UTC) Received: by mail-lf0-x230.google.com with SMTP id z143-v6so8327459lff.3 for ; Wed, 21 Mar 2018 07:58:23 -0700 (PDT) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, airlied@linux.ie, daniel.vetter@intel.com, seanpaul@chromium.org, gustavo@padovan.org, jgross@suse.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com Cc: andr2000@gmail.com, Oleksandr Andrushchenko List-Id: dri-devel@lists.freedesktop.org RnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVw YW0uY29tPgoKSGVsbG8hCgpUaGlzIHBhdGNoIHNlcmllcyBhZGRzIHN1cHBvcnQgZm9yIFhlbiBb MV0gcGFyYS12aXJ0dWFsaXplZApmcm9udGVuZCBkaXNwbGF5IGRyaXZlci4gSXQgaW1wbGVtZW50 cyB0aGUgcHJvdG9jb2wgZnJvbQppbmNsdWRlL3hlbi9pbnRlcmZhY2UvaW8vZGlzcGxpZi5oIFsy XS4KQWNjb21wYW55aW5nIGJhY2tlbmQgWzNdIGlzIGltcGxlbWVudGVkIGFzIGEgdXNlci1zcGFj ZSBhcHBsaWNhdGlvbgphbmQgaXRzIGhlbHBlciBsaWJyYXJ5IFs0XSwgY2FwYWJsZSBvZiBydW5u aW5nIGFzIGEgV2VzdG9uIGNsaWVudApvciBEUk0gbWFzdGVyLgpDb25maWd1cmF0aW9uIG9mIGJv dGggYmFja2VuZCBhbmQgZnJvbnRlbmQgaXMgZG9uZSB2aWEgClhlbiBndWVzdCBkb21haW4gY29u ZmlndXJhdGlvbiBvcHRpb25zIFs1XS4KCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiBEcml2ZXIg bGltaXRhdGlvbnMKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogMS4gQ29uZmlndXJhdGlvbiBvcHRp b25zIDEuMSAoY29udGlndW91cyBkaXNwbGF5IGJ1ZmZlcnMpIGFuZCAyIChiYWNrZW5kCiAgICBh bGxvY2F0ZWQgYnVmZmVycykgYmVsb3cgYXJlIG5vdCBzdXBwb3J0ZWQgYXQgdGhlIHNhbWUgdGlt ZS4KCiAyLiBPbmx5IHByaW1hcnkgcGxhbmUgd2l0aG91dCBhZGRpdGlvbmFsIHByb3BlcnRpZXMg aXMgc3VwcG9ydGVkLgoKIDMuIE9ubHkgb25lIHZpZGVvIG1vZGUgc3VwcG9ydGVkIHdoaWNoIHJl c29sdXRpb24gaXMgY29uZmlndXJlZCB2aWEgWGVuU3RvcmUuCgogNC4gQWxsIENSVENzIG9wZXJh dGUgYXQgZml4ZWQgZnJlcXVlbmN5IG9mIDYwSHouCgoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiog RHJpdmVyIG1vZGVzIG9mIG9wZXJhdGlvbiBpbiB0ZXJtcyBvZiBkaXNwbGF5IGJ1ZmZlcnMgdXNl ZAoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCiBEZXBlbmRpbmcgb24gdGhlIHJlcXVpcmVtZW50cyBm b3IgdGhlIHBhcmEtdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIG5hbWVseQogcmVxdWlyZW1lbnRz IGRpY3RhdGVkIGJ5IHRoZSBhY2NvbXBhbnlpbmcgRFJNLyh2KUdQVSBkcml2ZXJzIHJ1bm5pbmcg aW4gYm90aAogaG9zdCBhbmQgZ3Vlc3QgZW52aXJvbm1lbnRzLCBudW1iZXIgb2Ygb3BlcmF0aW5n IG1vZGVzIG9mIHBhcmEtdmlydHVhbGl6ZWQKIGRpc3BsYXkgZHJpdmVyIGFyZSBzdXBwb3J0ZWQ6 CiAgLSBkaXNwbGF5IGJ1ZmZlcnMgY2FuIGJlIGFsbG9jYXRlZCBieSBlaXRoZXIgZnJvbnRlbmQg ZHJpdmVyIG9yIGJhY2tlbmQKICAtIGRpc3BsYXkgYnVmZmVycyBjYW4gYmUgYWxsb2NhdGVkIHRv IGJlIGNvbnRpZ3VvdXMgaW4gbWVtb3J5IG9yIG5vdAoKIE5vdGUhIEZyb250ZW5kIGRyaXZlciBp dHNlbGYgaGFzIG5vIGRlcGVuZGVuY3kgb24gY29udGlndW91cyBtZW1vcnkgZm9yCiAgICAgICBp dHMgb3BlcmF0aW9uLgoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqIDEuIEJ1ZmZlcnMgYWxsb2Nh dGVkIGJ5IHRoZSBmcm9udGVuZCBkcml2ZXIuCioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiBUaGUg YmVsb3cgbW9kZXMgb2Ygb3BlcmF0aW9uIGFyZSBjb25maWd1cmVkIGF0IGNvbXBpbGUtdGltZSB2 aWEKIGZyb250ZW5kIGRyaXZlcidzIGtlcm5lbCBjb25maWd1cmF0aW9uLgoKIDEuMS4gRnJvbnQg ZHJpdmVyIGNvbmZpZ3VyZWQgdG8gdXNlIEdFTSBDTUEgaGVscGVycwogICAgICBUaGlzIHVzZS1j YXNlIGlzIHVzZWZ1bCB3aGVuIHVzZWQgd2l0aCBhY2NvbXBhbnlpbmcgRFJNL3ZHUFUgZHJpdmVy IGluCiAgICAgIGd1ZXN0IGRvbWFpbiB3aGljaCB3YXMgZGVzaWduZWQgdG8gb25seSB3b3JrIHdp dGggY29udGlndW91cyBidWZmZXJzLAogICAgICBlLmcuIERSTSBkcml2ZXIgYmFzZWQgb24gR0VN IENNQSBoZWxwZXJzOiBzdWNoIGRyaXZlcnMgY2FuIG9ubHkgaW1wb3J0CiAgICAgIGNvbnRpZ3Vv dXMgUFJJTUUgYnVmZmVycywgdGh1cyByZXF1aXJpbmcgZnJvbnRlbmQgZHJpdmVyIHRvIHByb3Zp ZGUKICAgICAgc3VjaC4gSW4gb3JkZXIgdG8gaW1wbGVtZW50IHRoaXMgbW9kZSBvZiBvcGVyYXRp b24gcGFyYS12aXJ0dWFsaXplZAogICAgICBmcm9udGVuZCBkcml2ZXIgY2FuIGJlIGNvbmZpZ3Vy ZWQgdG8gdXNlIEdFTSBDTUEgaGVscGVycy4KCiAxLjIuIEZyb250IGRyaXZlciBkb2Vzbid0IHVz ZSBHRU0gQ01BCiAgICAgIElmIGFjY29tcGFueWluZyBkcml2ZXJzIGNhbiBjb3BlIHdpdGggbm9u LWNvbnRpZ3VvdXMgbWVtb3J5IHRoZW4sIHRvCiAgICAgIGxvd2VyIHByZXNzdXJlIG9uIENNQSBz dWJzeXN0ZW0gb2YgdGhlIGtlcm5lbCwgZHJpdmVyIGNhbiBhbGxvY2F0ZQogICAgICBidWZmZXJz IGZyb20gc3lzdGVtIG1lbW9yeS4KCiBOb3RlISBJZiB1c2VkIHdpdGggYWNjb21wYW55aW5nIERS TS8odilHUFUgZHJpdmVycyB0aGlzIG1vZGUgb2Ygb3BlcmF0aW9uCiAgIG1heSByZXF1aXJlIElP TU1VIHN1cHBvcnQgb24gdGhlIHBsYXRmb3JtLCBzbyBhY2NvbXBhbnlpbmcgRFJNL3ZHUFUKICAg aGFyZHdhcmUgY2FuIHN0aWxsIHJlYWNoIGRpc3BsYXkgYnVmZmVyIG1lbW9yeSB3aGlsZSBpbXBv cnRpbmcgUFJJTUUKICAgYnVmZmVycyBmcm9tIHRoZSBmcm9udGVuZCBkcml2ZXIuCgoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCiogMi4gQnVmZmVycyBhbGxvY2F0ZWQgYnkgdGhlIGJhY2tlbmQKKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgoKIFRoaXMgbW9kZSBvZiBvcGVyYXRpb24gaXMgcnVuLXRpbWUg Y29uZmlndXJlZCB2aWEgZ3Vlc3QgZG9tYWluIGNvbmZpZ3VyYXRpb24KIHRocm91Z2ggWGVuU3Rv cmUgZW50cmllcy4KCiBGb3Igc3lzdGVtcyB3aGljaCBkbyBub3QgcHJvdmlkZSBJT01NVSBzdXBw b3J0LCBidXQgaGF2aW5nIHNwZWNpZmljCiByZXF1aXJlbWVudHMgZm9yIGRpc3BsYXkgYnVmZmVy cyBpdCBpcyBwb3NzaWJsZSB0byBhbGxvY2F0ZSBzdWNoIGJ1ZmZlcnMKIGF0IGJhY2tlbmQgc2lk ZSBhbmQgc2hhcmUgdGhvc2Ugd2l0aCB0aGUgZnJvbnRlbmQuCiBGb3IgZXhhbXBsZSwgaWYgaG9z dCBkb21haW4gaXMgMToxIG1hcHBlZCBhbmQgaGFzIERSTS9HUFUgaGFyZHdhcmUgZXhwZWN0aW5n CiBwaHlzaWNhbGx5IGNvbnRpZ3VvdXMgbWVtb3J5LCB0aGlzIGFsbG93cyBpbXBsZW1lbnRpbmcg emVyby1jb3B5aW5nCiB1c2UtY2FzZXMuCgoKSSB3b3VsZCBsaWtlIHRvIHRoYW5rIGF0IGxlYXN0 LCBidXQgbm90IGF0IGxhc3QgdGhlIGZvbGxvd2luZwpwZW9wbGUvY29tbXVuaXRpZXMgd2hvIGhl bHBlZCB0aGlzIGRyaXZlciB0byBoYXBwZW4gOykKCjEuIE15IHRlYW0gYXQgRVBBTSBmb3IgY29u dGludW91cyBzdXBwb3J0CjIuIFhlbiBjb21tdW5pdHkgZm9yIGFuc3dlcmluZyB0b25zIG9mIHF1 ZXN0aW9ucyBvbiBkaWZmZXJlbnQKbW9kZXMgb2Ygb3BlcmF0aW9uIG9mIHRoZSBkcml2ZXIgd2l0 aCByZXNwZWN0IHRvIHZpcnR1YWxpemVkCmVudmlyb25tZW50LgozLiBSb2IgQ2xhcmsgZm9yICJH RU0gYWxsb2NhdGlvbiBmb3IgcGFyYS12aXJ0dWFsaXplZCBEUk0gZHJpdmVyIiBbNl0KNC4gTWFh cnRlbiBMYW5raG9yc3QgZm9yICJBdG9taWMgZHJpdmVyIGFuZCBvbGQgcmVtb3ZlIEZCIGJlaGF2 aW9yIiBbN10KNS4gVmlsbGUgU3lyasOkbMOkIGZvciAiUXVlc3Rpb25zIG9uIHBhZ2UgZmxpcHMg YW5kIGF0b21pYyBtb2Rlc2V0IiBbOF0KCkNoYW5nZXMgc2luY2UgdjI6CioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKLSBubyBjaGFuZ2VzIHRvIFhlbiByZWxhdGVkIGNvZGUgKHNoYXJlZCBidWZmZXIg aGFuZGxpbmcsIGV2ZW50IGNoYW5uZWxzIGV0Yy4pCi0gcmV3b3JrIERSTSBkcml2ZXIgcmVsZWFz ZSB3aXRoIGhvdHBsdWcgKERhbmllbCkKLSBzcXVhc2ggeGVuX2RybV9mcm9udCBhbmQgeGVuX2Ry bV9mcm9udF9kcnYgYXMgdGhleSBkZXBlbmQgb24gZWFjaAogIG90aGVyIHRvbyBoZWF2aWx5IG5v dwotIHJlbW92ZSBwbGF0Zm9ybSBkcml2ZXIgYW5kIGluc3RhbnRpYXRlIERSTSBkZXZpY2UKICBm cm9tIHhlbmJ1cyBkcml2ZXIgZGlyZWN0bHkKLSBoYXZlIHNlcmlhbGl6aW5nIG11dGV4IHBlciBj b25uZWN0b3IsIG5vdCBhIHNpbmdsZSBvbmUsCiAgc28gd2UgZG9uJ3QgaW50cm9kdWNlIGEgYm90 dGxlIG5lY2sgZm9yIG11bHRpcGxlIGNvbm5lY3RvcnMKLSBtaW5vciBjb21tZW50cyBhZGRyZXNz ZWQgKERhbmllbCkKCkNoYW5nZXMgc2luY2UgdjE6CioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSB1 c2UgU1BEWCBsaWNlbnNlIGlkZW50aWZpZXIsIHNldCBsaWNlbnNlIHRvIEdQTHYyIE9SIE1JVAot IGNoYW5nZWQgbWlkbGF5ZXJzIHRvIGRpcmVjdCBmdW5jdGlvbiBjYWxscywgcmVtb3ZlZDoKICAt IGZyb250X29wcwogIC0gZ2VtX29wcwotIHJlbmFtZWQgeGVuYnVzX2RyaXZlciBjYWxsYmFja3Mg dG8gYWxpZ24gd2l0aCBleGlzaXRuZyBQViBkcml2ZXJzCi0gcmUtd29ya2VkIGJhY2tlbmQgZXJy b3IgaGFuZGxpbmcgd2l0aCBjb25uZWN0b3IgaG90cGx1ZyB1ZXZlbnRzCi0gcmVtb3ZlZCB2Ymxh bmsgaGFuZGxpbmcgc28gdXNlci1zcGFjZSBkb2Vzbid0IGhhdmUgYW4gaW1wcmVzc2lvbgogIHdl IHJlYWxseSBzdXBwb3J0IHRoYXQKLSBkaXJlY3RseSB1c2UgZnJvbnQncyBtb2RlX3NldCBpbiBk aXNwbGF5IGVuYWJsZS9kaXNhYmxlCi0gcmVtb3ZlZCBCVUdfT04sIGVycm9yIGhhbmRsaW5nIGlt cGxlbWVudGVkCi0gbW92ZWQgZHJpdmVyIGRvY3VtZW50YXRpb24gaW50byBEb2N1bWVudGF0aW9u L2dwdQotIG90aGVyIGNvbW1lbnRzIGZyb20gWGVuIGNvbW11bml0eSBhZGRyZXNzZWQgKEJvcmlz IGFuZCBKdWVyZ2VuKQotIHNxdWFzaGVkIFhlbiBhbmQgRFJNIHBhdGNoZXMgZm9yIGJldHRlciBp bnRlcnJjb25uZWN0aW9uIHZpc2liaWxpdHkKLSBmb3IgeW91ciBjb252ZW5pZW5jZSBkcml2ZXIg aXMgYXZhaWxhYmxlIGF0IFsxMV0KClRoYW5rIHlvdSwKT2xla3NhbmRyIEFuZHJ1c2hjaGVua28K Ck9sZWtzYW5kciBBbmRydXNoY2hlbmtvICgxKToKICBkcm0veGVuLWZyb250OiBBZGQgc3VwcG9y dCBmb3IgWGVuIFBWIGRpc3BsYXkgZnJvbnRlbmQKCiBEb2N1bWVudGF0aW9uL2dwdS9kcml2ZXJz LnJzdCAgICAgICAgICAgICAgIHwgICAxICsKIERvY3VtZW50YXRpb24vZ3B1L3hlbi1mcm9udC5y c3QgICAgICAgICAgICAgfCAgNDMgKysKIGRyaXZlcnMvZ3B1L2RybS9LY29uZmlnICAgICAgICAg ICAgICAgICAgICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAgICAg ICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0veGVuL0tjb25maWcgICAgICAgICAgICAg ICAgIHwgIDMwICsKIGRyaXZlcnMvZ3B1L2RybS94ZW4vTWFrZWZpbGUgICAgICAgICAgICAgICAg fCAgMTYgKwogZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250LmMgICAgICAgICB8IDgz MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9k cm1fZnJvbnQuaCAgICAgICAgIHwgMTk4ICsrKysrKysKIGRyaXZlcnMvZ3B1L2RybS94ZW4veGVu X2RybV9mcm9udF9jZmcuYyAgICAgfCAgNzcgKysrCiBkcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9k cm1fZnJvbnRfY2ZnLmggICAgIHwgIDM3ICsrCiBkcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1f ZnJvbnRfY29ubi5jICAgIHwgMTQ1ICsrKysrCiBkcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1f ZnJvbnRfY29ubi5oICAgIHwgIDI3ICsKIGRyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9u dF9ldnRjaG5sLmMgfCAzODMgKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5f ZHJtX2Zyb250X2V2dGNobmwuaCB8ICA4MSArKysKIGRyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2Ry bV9mcm9udF9nZW0uYyAgICAgfCAzMzMgKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS94ZW4v eGVuX2RybV9mcm9udF9nZW0uaCAgICAgfCAgNDEgKysKIGRyaXZlcnMvZ3B1L2RybS94ZW4veGVu X2RybV9mcm9udF9nZW1fY21hLmMgfCAgNzMgKysrCiBkcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9k cm1fZnJvbnRfa21zLmMgICAgIHwgMzIzICsrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0veGVu L3hlbl9kcm1fZnJvbnRfa21zLmggICAgIHwgIDI4ICsKIGRyaXZlcnMvZ3B1L2RybS94ZW4veGVu X2RybV9mcm9udF9zaGJ1Zi5jICAgfCA0MzIgKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9k cm0veGVuL3hlbl9kcm1fZnJvbnRfc2hidWYuaCAgIHwgIDcyICsrKwogMjEgZmlsZXMgY2hhbmdl ZCwgMzE3NiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9n cHUveGVuLWZyb250LnJzdAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94ZW4v S2NvbmZpZwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94ZW4vTWFrZWZpbGUK IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnQuYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udC5oCiBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2NmZy5j CiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2Nm Zy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250 X2Nvbm4uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9m cm9udF9jb25uLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9k cm1fZnJvbnRfZXZ0Y2hubC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3hl bi94ZW5fZHJtX2Zyb250X2V2dGNobmwuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1 L2RybS94ZW4veGVuX2RybV9mcm9udF9nZW0uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9nZW0uaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9nZW1fY21hLmMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfa21zLmMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfa21zLmgKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfc2hidWYuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9zaGJ1Zi5oCgot LSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752463AbeCUO60 (ORCPT ); Wed, 21 Mar 2018 10:58:26 -0400 Received: from mail-lf0-f45.google.com ([209.85.215.45]:44741 "EHLO mail-lf0-f45.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752407AbeCUO6X (ORCPT ); Wed, 21 Mar 2018 10:58:23 -0400 X-Google-Smtp-Source: AG47ELsK5NdNoflyTm89AQNOBxrMktr5RHBVkOqb9oi00CpbVL8FGciN6Fkh+6xGWge0EMCiMZa1Vw== From: Oleksandr Andrushchenko To: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, airlied@linux.ie, daniel.vetter@intel.com, seanpaul@chromium.org, gustavo@padovan.org, jgross@suse.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com Cc: andr2000@gmail.com, Oleksandr Andrushchenko Subject: [PATCH v3] drm/xen-front: Add support for Xen PV display frontend Date: Wed, 21 Mar 2018 16:58:12 +0200 Message-Id: <1521644293-14612-1-git-send-email-andr2000@gmail.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Oleksandr Andrushchenko Hello! This patch series adds support for Xen [1] para-virtualized frontend display driver. It implements the protocol from include/xen/interface/io/displif.h [2]. Accompanying backend [3] is implemented as a user-space application and its helper library [4], capable of running as a Weston client or DRM master. Configuration of both backend and frontend is done via Xen guest domain configuration options [5]. ******************************************************************************* * Driver limitations ******************************************************************************* 1. Configuration options 1.1 (contiguous display buffers) and 2 (backend allocated buffers) below are not supported at the same time. 2. Only primary plane without additional properties is supported. 3. Only one video mode supported which resolution is configured via XenStore. 4. All CRTCs operate at fixed frequency of 60Hz. ******************************************************************************* * Driver modes of operation in terms of display buffers used ******************************************************************************* Depending on the requirements for the para-virtualized environment, namely requirements dictated by the accompanying DRM/(v)GPU drivers running in both host and guest environments, number of operating modes of para-virtualized display driver are supported: - display buffers can be allocated by either frontend driver or backend - display buffers can be allocated to be contiguous in memory or not Note! Frontend driver itself has no dependency on contiguous memory for its operation. ******************************************************************************* * 1. Buffers allocated by the frontend driver. ******************************************************************************* The below modes of operation are configured at compile-time via frontend driver's kernel configuration. 1.1. Front driver configured to use GEM CMA helpers This use-case is useful when used with accompanying DRM/vGPU driver in guest domain which was designed to only work with contiguous buffers, e.g. DRM driver based on GEM CMA helpers: such drivers can only import contiguous PRIME buffers, thus requiring frontend driver to provide such. In order to implement this mode of operation para-virtualized frontend driver can be configured to use GEM CMA helpers. 1.2. Front driver doesn't use GEM CMA If accompanying drivers can cope with non-contiguous memory then, to lower pressure on CMA subsystem of the kernel, driver can allocate buffers from system memory. Note! If used with accompanying DRM/(v)GPU drivers this mode of operation may require IOMMU support on the platform, so accompanying DRM/vGPU hardware can still reach display buffer memory while importing PRIME buffers from the frontend driver. ******************************************************************************* * 2. Buffers allocated by the backend ******************************************************************************* This mode of operation is run-time configured via guest domain configuration through XenStore entries. For systems which do not provide IOMMU support, but having specific requirements for display buffers it is possible to allocate such buffers at backend side and share those with the frontend. For example, if host domain is 1:1 mapped and has DRM/GPU hardware expecting physically contiguous memory, this allows implementing zero-copying use-cases. I would like to thank at least, but not at last the following people/communities who helped this driver to happen ;) 1. My team at EPAM for continuous support 2. Xen community for answering tons of questions on different modes of operation of the driver with respect to virtualized environment. 3. Rob Clark for "GEM allocation for para-virtualized DRM driver" [6] 4. Maarten Lankhorst for "Atomic driver and old remove FB behavior" [7] 5. Ville Syrjälä for "Questions on page flips and atomic modeset" [8] Changes since v2: ******************************************************************************* - no changes to Xen related code (shared buffer handling, event channels etc.) - rework DRM driver release with hotplug (Daniel) - squash xen_drm_front and xen_drm_front_drv as they depend on each other too heavily now - remove platform driver and instantiate DRM device from xenbus driver directly - have serializing mutex per connector, not a single one, so we don't introduce a bottle neck for multiple connectors - minor comments addressed (Daniel) Changes since v1: ******************************************************************************* - use SPDX license identifier, set license to GPLv2 OR MIT - changed midlayers to direct function calls, removed: - front_ops - gem_ops - renamed xenbus_driver callbacks to align with exisitng PV drivers - re-worked backend error handling with connector hotplug uevents - removed vblank handling so user-space doesn't have an impression we really support that - directly use front's mode_set in display enable/disable - removed BUG_ON, error handling implemented - moved driver documentation into Documentation/gpu - other comments from Xen community addressed (Boris and Juergen) - squashed Xen and DRM patches for better interrconnection visibility - for your convenience driver is available at [11] Thank you, Oleksandr Andrushchenko Oleksandr Andrushchenko (1): drm/xen-front: Add support for Xen PV display frontend Documentation/gpu/drivers.rst | 1 + Documentation/gpu/xen-front.rst | 43 ++ drivers/gpu/drm/Kconfig | 2 + drivers/gpu/drm/Makefile | 1 + drivers/gpu/drm/xen/Kconfig | 30 + drivers/gpu/drm/xen/Makefile | 16 + drivers/gpu/drm/xen/xen_drm_front.c | 833 ++++++++++++++++++++++++++++ drivers/gpu/drm/xen/xen_drm_front.h | 198 +++++++ drivers/gpu/drm/xen/xen_drm_front_cfg.c | 77 +++ drivers/gpu/drm/xen/xen_drm_front_cfg.h | 37 ++ drivers/gpu/drm/xen/xen_drm_front_conn.c | 145 +++++ drivers/gpu/drm/xen/xen_drm_front_conn.h | 27 + drivers/gpu/drm/xen/xen_drm_front_evtchnl.c | 383 +++++++++++++ drivers/gpu/drm/xen/xen_drm_front_evtchnl.h | 81 +++ drivers/gpu/drm/xen/xen_drm_front_gem.c | 333 +++++++++++ drivers/gpu/drm/xen/xen_drm_front_gem.h | 41 ++ drivers/gpu/drm/xen/xen_drm_front_gem_cma.c | 73 +++ drivers/gpu/drm/xen/xen_drm_front_kms.c | 323 +++++++++++ drivers/gpu/drm/xen/xen_drm_front_kms.h | 28 + drivers/gpu/drm/xen/xen_drm_front_shbuf.c | 432 +++++++++++++++ drivers/gpu/drm/xen/xen_drm_front_shbuf.h | 72 +++ 21 files changed, 3176 insertions(+) create mode 100644 Documentation/gpu/xen-front.rst create mode 100644 drivers/gpu/drm/xen/Kconfig create mode 100644 drivers/gpu/drm/xen/Makefile create mode 100644 drivers/gpu/drm/xen/xen_drm_front.c create mode 100644 drivers/gpu/drm/xen/xen_drm_front.h create mode 100644 drivers/gpu/drm/xen/xen_drm_front_cfg.c create mode 100644 drivers/gpu/drm/xen/xen_drm_front_cfg.h create mode 100644 drivers/gpu/drm/xen/xen_drm_front_conn.c create mode 100644 drivers/gpu/drm/xen/xen_drm_front_conn.h create mode 100644 drivers/gpu/drm/xen/xen_drm_front_evtchnl.c create mode 100644 drivers/gpu/drm/xen/xen_drm_front_evtchnl.h create mode 100644 drivers/gpu/drm/xen/xen_drm_front_gem.c create mode 100644 drivers/gpu/drm/xen/xen_drm_front_gem.h create mode 100644 drivers/gpu/drm/xen/xen_drm_front_gem_cma.c create mode 100644 drivers/gpu/drm/xen/xen_drm_front_kms.c create mode 100644 drivers/gpu/drm/xen/xen_drm_front_kms.h create mode 100644 drivers/gpu/drm/xen/xen_drm_front_shbuf.c create mode 100644 drivers/gpu/drm/xen/xen_drm_front_shbuf.h -- 2.7.4