From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: [PATCH v5 0/8] xen: dma-buf support for grant device Date: Fri, 20 Jul 2018 12:01:42 +0300 Message-ID: <20180720090150.24560-1-andr2000@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lj1-x242.google.com (mail-lj1-x242.google.com [IPv6:2a00:1450:4864:20::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 236D06EEEF for ; Fri, 20 Jul 2018 09:02:00 +0000 (UTC) Received: by mail-lj1-x242.google.com with SMTP id u7-v6so10532799lji.3 for ; Fri, 20 Jul 2018 02:02:00 -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, linux-media@vger.kernel.org, jgross@suse.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com Cc: andr2000@gmail.com, daniel.vetter@intel.com, dongwon.kim@intel.com, Oleksandr Andrushchenko List-Id: dri-devel@lists.freedesktop.org RnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVw YW0uY29tPgoKVGhpcyB3b3JrIGlzIGluIHJlc3BvbnNlIHRvIG15IHByZXZpb3VzIGF0dGVtcHQg dG8gaW50cm9kdWNlIFhlbi9EUk0KemVyby1jb3B5IGRyaXZlciBbMV0gdG8gZW5hYmxlIExpbnV4 IGRtYS1idWYgQVBJIFsyXSBmb3IgWGVuIGJhc2VkCmZyb250ZW5kcy9iYWNrZW5kcy4gVGhlcmUg aXMgYWxzbyBhbiBleGlzdGluZyBoeXBlcl9kbWFidWYgYXBwcm9hY2gKYXZhaWxhYmxlIFszXSB3 aGljaCwgaWYgcmV3b3JrZWQgdG8gdXRpbGl6ZSB0aGUgcHJvcG9zZWQgc29sdXRpb24sCmNhbiBn cmVhdGx5IGJlbmVmaXQgYXMgd2VsbC4KClJGQyBmb3IgdGhpcyBzZXJpZXMgd2FzIHB1Ymxpc2hl ZCBhbmQgZGlzY3Vzc2VkIFs5XSwgY29tbWVudHMgYWRkcmVzc2VkLgoKVGhlIG9yaWdpbmFsIHJh dGlvbmFsZSBiZWhpbmQgdGhpcyB3b3JrIHdhcyB0byBlbmFibGUgemVyby1jb3B5aW5nCnVzZS1j YXNlcyB3aGlsZSB3b3JraW5nIHdpdGggWGVuIHBhcmEtdmlydHVhbCBkaXNwbGF5IGRyaXZlciBb NF06CndoZW4gdXNpbmcgWGVuIFBWIERSTSBmcm9udGVuZCBkcml2ZXIgdGhlbiBvbiBiYWNrZW5k IHNpZGUgb25lIHdpbGwKbmVlZCB0byBkbyBjb3B5aW5nIG9mIGRpc3BsYXkgYnVmZmVycycgY29u dGVudHMgKGZpbGxlZCBieSB0aGUKZnJvbnRlbmQncyB1c2VyLXNwYWNlKSBpbnRvIGJ1ZmZlcnMg YWxsb2NhdGVkIGF0IHRoZSBiYWNrZW5kIHNpZGUuClRha2luZyBpbnRvIGFjY291bnQgdGhlIHNp emUgb2YgZGlzcGxheSBidWZmZXJzIGFuZCBmcmFtZXMgcGVyCnNlY29uZCBpdCBtYXkgcmVzdWx0 IGluIHVubmVlZGVkIGh1Z2UgZGF0YSBidXMgb2NjdXBhdGlvbiBhbmQKcGVyZm9ybWFuY2UgbG9z cy4KClRoZSBoZWxwZXIgZHJpdmVyIFs0XSBhbGxvd3MgaW1wbGVtZW50aW5nIHplcm8tY29weWlu ZyB1c2UtY2FzZXMKd2hlbiB1c2luZyBYZW4gcGFyYS12aXJ0dWFsaXplZCBmcm9udGVuZCBkaXNw bGF5IGRyaXZlciBieSBpbXBsZW1lbnRpbmcKYSBEUk0vS01TIGhlbHBlciBkcml2ZXIgcnVubmlu ZyBvbiBiYWNrZW5kJ3Mgc2lkZS4KSXQgdXRpbGl6ZXMgUFJJTUUgYnVmZmVycyBBUEkgKGltcGxl bWVudGVkIG9uIHRvcCBvZiBMaW51eCBkbWEtYnVmKQp0byBzaGFyZSBmcm9udGVuZCdzIGJ1ZmZl cnMgd2l0aCBwaHlzaWNhbCBkZXZpY2UgZHJpdmVycyBvbgpiYWNrZW5kJ3Mgc2lkZToKCiAtIGEg ZHVtYiBidWZmZXIgY3JlYXRlZCBvbiBiYWNrZW5kJ3Mgc2lkZSBjYW4gYmUgc2hhcmVkCiAgIHdp dGggdGhlIFhlbiBQViBmcm9udGVuZCBkcml2ZXIsIHNvIGl0IGRpcmVjdGx5IHdyaXRlcwogICBp bnRvIGJhY2tlbmQncyBkb21haW4gbWVtb3J5IChpbnRvIHRoZSBidWZmZXIgZXhwb3J0ZWQgZnJv bQogICBEUk0vS01TIGRyaXZlciBvZiBhIHBoeXNpY2FsIGRpc3BsYXkgZGV2aWNlKQogLSBhIGR1 bWIgYnVmZmVyIGFsbG9jYXRlZCBieSB0aGUgZnJvbnRlbmQgY2FuIGJlIGltcG9ydGVkCiAgIGlu dG8gcGh5c2ljYWwgZGV2aWNlIERSTS9LTVMgZHJpdmVyLCB0aHVzIGFsbG93aW5nIHRvCiAgIGFj aGlldmUgbm8gY29weWluZyBhcyB3ZWxsCgpGaW5hbGx5LCBpdCB3YXMgZGlzY3Vzc2VkIGFuZCBk ZWNpZGVkIChbMV0sIFs1XSkgdGhhdCBpdCBpcyB3b3J0aAppbXBsZW1lbnRpbmcgc3VjaCB1c2Ut Y2FzZXMgdmlhIGV4dGVuc2lvbiBvZiB0aGUgZXhpc3RpbmcgWGVuIGdudGRldgpkcml2ZXIgaW5z dGVhZCBvZiBpbnRyb2R1Y2luZyBuZXcgRFJNIHNwZWNpZmljIGRyaXZlci4KUGxlYXNlIG5vdGUs IHRoYXQgdGhlIHN1cHBvcnQgb2YgZG1hLWJ1ZiBpcyBMaW51eCBvbmx5LAphcyBkbWEtYnVmIGlz IGEgTGludXggb25seSB0aGluZy4KCk5vdyB0byB0aGUgcHJvcG9zZWQgc29sdXRpb24uIFRoZSBj aGFuZ2VzICB0byB0aGUgZXhpc3RpbmcgWGVuIGRyaXZlcnMKaW4gdGhlIExpbnV4IGtlcm5lbCBm YWxsIGludG8gMiBjYXRlZ29yaWVzOgoxLiBETUEtYWJsZSBtZW1vcnkgYnVmZmVyIGFsbG9jYXRp b24gYW5kIGluY3JlYXNpbmcvZGVjcmVhc2luZyBtZW1vcnkKICAgcmVzZXJ2YXRpb24gb2YgdGhl IHBhZ2VzIG9mIHN1Y2ggYSBidWZmZXIuCiAgIFRoaXMgaXMgcmVxdWlyZWQgaWYgd2UgYXJlIGFi b3V0IHRvIHNoYXJlIGRtYS1idWYgd2l0aCB0aGUgaGFyZHdhcmUKICAgdGhhdCBkb2VzIHJlcXVp cmUgdGhvc2UgdG8gYmUgYWxsb2NhdGVkIHdpdGggZG1hX2FsbG9jX3h4eCBBUEkuCiAgIChJdCBp cyBzdGlsbCBwb3NzaWJsZSB0byBhbGxvY2F0ZSBhIGRtYS1idWYgZnJvbSBhbnkgc3lzdGVtIG1l bW9yeSwKICAgZS5nLiBzeXN0ZW0gcGFnZXMpLgoyLiBFeHRlbnNpb24gb2YgdGhlIGdudGRldiBk cml2ZXIgdG8gZW5hYmxlIGl0IHRvIGltcG9ydC9leHBvcnQgZG1hLWJ1ZuKAmXMuCgpUaGUgZmly c3QgZml2ZSBwYXRjaGVzIGFyZSBpbiBwcmVwYXJhdGlvbiBmb3IgWGVuIGRtYS1idWYgc3VwcG9y dCwKYnV0IEkgY29uc2lkZXIgdGhvc2UgdXNhYmxlIHJlZ2FyZGxlc3Mgb2YgdGhlIGRtYS1idWYg dXNlLWNhc2UsCmUuZy4gb3RoZXIgZnJvbnRlbmQvYmFja2VuZCBrZXJuZWwgbW9kdWxlcyBtYXkg YWxzbyBiZW5lZml0IGZyb20gdGhlc2UKZm9yIGJldHRlciBjb2RlIHJldXNlOgogICAgMDAwMS14 ZW4tZ3JhbnQtdGFibGUtTWFrZS1zZXQtY2xlYXItcGFnZS1wcml2YXRlLWNvZGUtc2hhLnBhdGNo CiAgICAwMDAyLXhlbi1iYWxsb29uLVNoYXJlLWNvbW1vbi1tZW1vcnktcmVzZXJ2YXRpb24tcm91 dGluZXMucGF0Y2gKICAgIDAwMDMteGVuLWdyYW50LXRhYmxlLUFsbG93LWFsbG9jYXRpbmctYnVm ZmVycy1zdWl0YWJsZS1mby5wYXRjaAogICAgMDAwNC14ZW4tZ250ZGV2LUFsbG93LW1hcHBpbmdz LWZvci1ETUEtYnVmZmVycy5wYXRjaAogICAgMDAwNS14ZW4tZ250ZGV2LU1ha2UtcHJpdmF0ZS1y b3V0aW5lcy1zdHJ1Y3R1cmVzLWFjY2Vzc2liLnBhdGNoCgpUaGUgbmV4dCB0aHJlZSBwYXRjaGVz IGFyZSBYZW4gaW1wbGVtZW50YXRpb24gb2YgZG1hLWJ1ZiBhcyBwYXJ0IG9mCnRoZSBncmFudCBk ZXZpY2U6CiAgICAwMDA2LXhlbi1nbnRkZXYtQWRkLWluaXRpYWwtc3VwcG9ydC1mb3ItZG1hLWJ1 Zi1VQVBJLnBhdGNoCiAgICAwMDA3LXhlbi1nbnRkZXYtSW1wbGVtZW50LWRtYS1idWYtZXhwb3J0 LWZ1bmN0aW9uYWxpdHkucGF0Y2gKICAgIDAwMDgteGVuLWdudGRldi1JbXBsZW1lbnQtZG1hLWJ1 Zi1pbXBvcnQtZnVuY3Rpb25hbGl0eS5wYXRjaAoKVGhlIGNvcnJlc3BvbmRpbmcgbGlieGVuZ250 dGFiIGNoYW5nZXMgYXJlIGF2YWlsYWJsZSBhdCBbNl0uCgpBbGwgdGhlIGFib3ZlIHdhcyB0ZXN0 ZWQgd2l0aCBkaXNwbGF5IGJhY2tlbmQgWzddIGFuZCBpdHMgYWNjb21wYW55aW5nCmhlbHBlciBs aWJyYXJ5IFs4XSBvbiBSZW5lc2FzIEFSTTY0IGJhc2VkIGJvYXJkLgpCYXNpYyBiYWxsb29uIHRl c3RzIG9uIHg4Ni4KCipUbyBhbGwgdGhlIGNvbW11bml0aWVzKjogSSB3b3VsZCBsaWtlIHRvIGFz ayB5b3UgdG8gcmV2aWV3IHRoZSBwcm9wb3NlZApzb2x1dGlvbiBhbmQgZ2l2ZSBmZWVkYmFjayBv biBpdCwgc28gSSBjYW4gaW1wcm92ZSBhbmQgc2VuZCBmaW5hbApwYXRjaGVzIGZvciByZXZpZXcg KHRoaXMgaXMgc3RpbGwgd29yayBpbiBwcm9ncmVzcywgYnV0IGVub3VnaCB0byBzdGFydApkaXNj dXNzaW5nIHRoZSBpbXBsZW1lbnRhdGlvbikuCgpUaGFuayB5b3UgaW4gYWR2YW5jZSwKT2xla3Nh bmRyIEFuZHJ1c2hjaGVua28KClsxXSBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNo aXZlcy9kcmktZGV2ZWwvMjAxOC1BcHJpbC8xNzMxNjMuaHRtbApbMl0gaHR0cHM6Ly9lbGl4aXIu Ym9vdGxpbi5jb20vbGludXgvdjQuMTctcmM1L3NvdXJjZS9Eb2N1bWVudGF0aW9uL2RyaXZlci1h cGkvZG1hLWJ1Zi5yc3QKWzNdIGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvYXJjaGl2ZXMv aHRtbC94ZW4tZGV2ZWwvMjAxOC0wMi9tc2cwMTIwMi5odG1sCls0XSBodHRwczovL2NnaXQuZnJl ZWRlc2t0b3Aub3JnL2RybS9kcm0tbWlzYy90cmVlL2RyaXZlcnMvZ3B1L2RybS94ZW4KWzVdIGh0 dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0Y2gvMTAyNzk2ODEvCls2XSBodHRwczovL2dp dGh1Yi5jb20vYW5kcjIwMDAveGVuL3RyZWUveGVuX2RtYV9idWZfdjEKWzddIGh0dHBzOi8vZ2l0 aHViLmNvbS9hbmRyMjAwMC9kaXNwbF9iZS90cmVlL3hlbl9kbWFfYnVmX3YxCls4XSBodHRwczov L2dpdGh1Yi5jb20vYW5kcjIwMDAvbGlieGVuYmUvdHJlZS94ZW5fZG1hX2J1Zl92MQpbOV0gaHR0 cHM6Ly9sa21sLm9yZy9sa21sLzIwMTgvNS8xNy8yMTUKCkNoYW5nZXMgc2luY2UgdjQ6CioqKioq KioqKioqKioqKioqCi0gYWRkZWQgci1iIHRhZ3MKLSByZWJhc2VkIG9udG8gdjQuMTgtcmM1CgpD aGFuZ2VzIHNpbmNlIHYzOgoqKioqKioqKioqKioqKioqKgotIGFkZGVkIHItYiB0YWdzCi0gbWlu b3IgZml4ZXMKLSByZW1vdmVkIGdudGRldl9yZW1vdmVfbWFwIGFzIGl0IGNhbiBiZSBjb2RlZCBk aXJlY3RseSBub3cKLSBtb3ZlZCBJT0NUTCBjb2RlIHRvIGdudGRldi1kbWFidWYuYwotIHJlbW92 ZWQgdXNsZXNzIHdhaXQgbGlzdCB3YWxrcyBhbmQgY2hhbmdlZCBzb21lIHdhbGtzIHRvIHVzZQog IG5vcm1hbCB2ZXJzaW9uIG9mIGxpc3QgaXRlcmF0b3JzIGluc3RlYWQgb2Ygc2FmZSBvbmVzIGFz CiAgd2UgcnVuIHVuZGVyIGEgbG9jayBhbnl3YXlzCi0gY2xlYW5lZCB1cCBjb21tZW50cywgZGVz Y3JpcHRpb25zLCBwcl9kZWJ1ZyBtZXNzYWdlcwoKQ2hhbmdlcyBzaW5jZSB2MjoKKioqKioqKioq KioqKioqKioKLSBmaXhlZCBtaXNzZWQgYnJlYWsgaW4gZG1hYnVmX2V4cF93YWl0X29ial9zaWdu YWwKLSByZS13b3JrZWQgZGVidWcgYW5kIGVycm9yIG1lc3NhZ2VzLCBiZSBsZXNzIHZlcmJvc2UK LSByZW1vdmVkIHBhdGNoIGZvciBtYWtpbmcgZ250ZGV2IGZ1bmN0aW9ucyBhdmFpbGFibGUgdG8g b3RoZXIgZHJpdmVycwotIHJlbW92ZWQgV0FSTl9PTidzIGluIGRtYS1idWYgY29kZQotIG1vdmVk IGFsbCBkbWEtYnVmIHJlbGF0ZWQgY29kZSBpbnRvIGdudGRldi1kbWFidWYKLSBpbnRyb2R1Y2Vk IGdudGRldi1jb21tb24uaCB3aXRoIGNvbW1vbiBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbiBwcm90 b3R5cGVzCi0gYWRkZWQgYWRkaXRpb25hbCBjaGVja3MgZm9yIG51bWJlciBvZiBncmFudHMgaW4g SU9DVExzCi0gZ250dGFiIHBhdGNoIGNsZWFudXAKLSBtYWRlIHhlbm1lbV9yZXNlcnZhdGlvbl9z Y3J1Yl9wYWdlIGRlZmluZWQgaW4gdGhlIGhlYWRlciBhcyBpbmxpbmUKLSBmaXhlZCBfX3Bmbl90 b19tZm4gdXNlIHRvIHBmbl90b19iZm4KLSBubyBjaGFuZ2VzIHRvIHBhdGNoZXMgMS0yCgpDaGFu Z2VzIHNpbmNlIHYxOgoqKioqKioqKioqKioqKioqKgotIERlZmluZSBHTlRERVZfRE1BX0ZMQUdf WFhYIHN0YXJ0aW5nIGZyb20gYml0IDAKLSBSZW5hbWUgbWVtX3Jlc2VydmF0aW9uLmggdG8gbWVt LXJlc2VydmF0aW9uLmgKLSBSZW1vdmUgdXNsZXNzIGNvbW1lbnRzCi0gQ2hhbmdlIGxpY2Vuc2Vz IGZyb20gR1BMdjIgT1IgTUlUIHRvIEdQTHYyIG9ubHkKLSBNYWtlIHhlbm1lbV9yZXNlcnZhdGlv bl92YV9tYXBwaW5nX3t1cGRhdGV8Y2xlYXJ9IGlubGluZQotIENoYW5nZSBFWFBPUlRfU1lNQk9M IHRvIEVYUE9SVF9TWU1CT0xfR1BMIGZvciBuZXcgZnVuY3Rpb25zCi0gTWFrZSBnbnR0YWJfZG1h X3thbGxvY3xmcmVlfV9wYWdlcyB0byByZXF1ZXN0IGZyYW1lcyBhcnJheQogIGJlIGFsbG9jYXRl ZCBvdXRzaWRlCi0gRml4ZSBnbnR0YWJfZG1hX2FsbG9jX3BhZ2VzIGZhaWwgcGF0aCAoYWRkZWQg eGVubWVtX3Jlc2VydmF0aW9uX2luY3JlYXNlKQotIE1vdmUgbW9zdCBvZiBkbWEtYnVmIGZyb20g Z250ZGV2LmMgdG8gZ250ZGV2LWRtYWJ1Zi5jCi0gQWRkIHJlcXVpcmVkIGRlcGVuZGVuY2llcyB0 byBLY29uZmlnCi0gUmV3b3JrICIjaWZkZWYgQ09ORklHX1hFTl9YWFgiIGZvciBpZi9lbHNlCi0g RXhwb3J0IGdudHRhYl97YWxsb2N8ZnJlZX1fcGFnZXMgYXMgR1BMIHN5bWJvbHMgKHBhdGNoIDEp CgpPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyAoOCk6CiAgeGVuL2dyYW50LXRhYmxlOiBNYWtlIHNl dC9jbGVhciBwYWdlIHByaXZhdGUgY29kZSBzaGFyZWQKICB4ZW4vYmFsbG9vbjogU2hhcmUgY29t bW9uIG1lbW9yeSByZXNlcnZhdGlvbiByb3V0aW5lcwogIHhlbi9ncmFudC10YWJsZTogQWxsb3cg YWxsb2NhdGluZyBidWZmZXJzIHN1aXRhYmxlIGZvciBETUEKICB4ZW4vZ250ZGV2OiBBbGxvdyBt YXBwaW5ncyBmb3IgRE1BIGJ1ZmZlcnMKICB4ZW4vZ250ZGV2OiBNYWtlIHByaXZhdGUgcm91dGlu ZXMvc3RydWN0dXJlcyBhY2Nlc3NpYmxlCiAgeGVuL2dudGRldjogQWRkIGluaXRpYWwgc3VwcG9y dCBmb3IgZG1hLWJ1ZiBVQVBJCiAgeGVuL2dudGRldjogSW1wbGVtZW50IGRtYS1idWYgZXhwb3J0 IGZ1bmN0aW9uYWxpdHkKICB4ZW4vZ250ZGV2OiBJbXBsZW1lbnQgZG1hLWJ1ZiBpbXBvcnQgZnVu Y3Rpb25hbGl0eQoKIGRyaXZlcnMveGVuL0tjb25maWcgICAgICAgICAgIHwgIDI0ICsKIGRyaXZl cnMveGVuL01ha2VmaWxlICAgICAgICAgIHwgICAyICsKIGRyaXZlcnMveGVuL2JhbGxvb24uYyAg ICAgICAgIHwgIDc1ICstLQogZHJpdmVycy94ZW4vZ250ZGV2LWNvbW1vbi5oICAgfCAgOTQgKysr KwogZHJpdmVycy94ZW4vZ250ZGV2LWRtYWJ1Zi5jICAgfCA4NTUgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogZHJpdmVycy94ZW4vZ250ZGV2LWRtYWJ1Zi5oICAgfCAgMzMgKysK IGRyaXZlcnMveGVuL2dudGRldi5jICAgICAgICAgIHwgMjIwICsrKysrKy0tLQogZHJpdmVycy94 ZW4vZ3JhbnQtdGFibGUuYyAgICAgfCAxNTEgKysrKystCiBkcml2ZXJzL3hlbi9tZW0tcmVzZXJ2 YXRpb24uYyB8IDExOCArKysrKwogaW5jbHVkZS91YXBpL3hlbi9nbnRkZXYuaCAgICAgfCAxMDYg KysrKysKIGluY2x1ZGUveGVuL2dyYW50X3RhYmxlLmggICAgIHwgIDIxICsKIGluY2x1ZGUveGVu L21lbS1yZXNlcnZhdGlvbi5oIHwgIDU5ICsrKwogMTIgZmlsZXMgY2hhbmdlZCwgMTU5OSBpbnNl cnRpb25zKCspLCAxNTkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy94 ZW4vZ250ZGV2LWNvbW1vbi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy94ZW4vZ250ZGV2 LWRtYWJ1Zi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy94ZW4vZ250ZGV2LWRtYWJ1Zi5o CiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy94ZW4vbWVtLXJlc2VydmF0aW9uLmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3hlbi9tZW0tcmVzZXJ2YXRpb24uaAoKLS0gCjIuMTguMAoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-lj1-f194.google.com ([209.85.208.194]:42298 "EHLO mail-lj1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727243AbeGTJtR (ORCPT ); Fri, 20 Jul 2018 05:49:17 -0400 From: Oleksandr Andrushchenko To: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org, jgross@suse.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com Cc: daniel.vetter@intel.com, andr2000@gmail.com, dongwon.kim@intel.com, matthew.d.roper@intel.com, Oleksandr Andrushchenko Subject: [PATCH v5 0/8] xen: dma-buf support for grant device Date: Fri, 20 Jul 2018 12:01:42 +0300 Message-Id: <20180720090150.24560-1-andr2000@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-media-owner@vger.kernel.org List-ID: From: Oleksandr Andrushchenko This work is in response to my previous attempt to introduce Xen/DRM zero-copy driver [1] to enable Linux dma-buf API [2] for Xen based frontends/backends. There is also an existing hyper_dmabuf approach available [3] which, if reworked to utilize the proposed solution, can greatly benefit as well. RFC for this series was published and discussed [9], comments addressed. The original rationale behind this work was to enable zero-copying use-cases while working with Xen para-virtual display driver [4]: when using Xen PV DRM frontend driver then on backend side one will need to do copying of display buffers' contents (filled by the frontend's user-space) into buffers allocated at the backend side. Taking into account the size of display buffers and frames per second it may result in unneeded huge data bus occupation and performance loss. The helper driver [4] allows implementing zero-copying use-cases when using Xen para-virtualized frontend display driver by implementing a DRM/KMS helper driver running on backend's side. It utilizes PRIME buffers API (implemented on top of Linux dma-buf) to share frontend's buffers with physical device drivers on backend's side: - a dumb buffer created on backend's side can be shared with the Xen PV frontend driver, so it directly writes into backend's domain memory (into the buffer exported from DRM/KMS driver of a physical display device) - a dumb buffer allocated by the frontend can be imported into physical device DRM/KMS driver, thus allowing to achieve no copying as well Finally, it was discussed and decided ([1], [5]) that it is worth implementing such use-cases via extension of the existing Xen gntdev driver instead of introducing new DRM specific driver. Please note, that the support of dma-buf is Linux only, as dma-buf is a Linux only thing. Now to the proposed solution. The changes to the existing Xen drivers in the Linux kernel fall into 2 categories: 1. DMA-able memory buffer allocation and increasing/decreasing memory reservation of the pages of such a buffer. This is required if we are about to share dma-buf with the hardware that does require those to be allocated with dma_alloc_xxx API. (It is still possible to allocate a dma-buf from any system memory, e.g. system pages). 2. Extension of the gntdev driver to enable it to import/export dma-buf’s. The first five patches are in preparation for Xen dma-buf support, but I consider those usable regardless of the dma-buf use-case, e.g. other frontend/backend kernel modules may also benefit from these for better code reuse: 0001-xen-grant-table-Make-set-clear-page-private-code-sha.patch 0002-xen-balloon-Share-common-memory-reservation-routines.patch 0003-xen-grant-table-Allow-allocating-buffers-suitable-fo.patch 0004-xen-gntdev-Allow-mappings-for-DMA-buffers.patch 0005-xen-gntdev-Make-private-routines-structures-accessib.patch The next three patches are Xen implementation of dma-buf as part of the grant device: 0006-xen-gntdev-Add-initial-support-for-dma-buf-UAPI.patch 0007-xen-gntdev-Implement-dma-buf-export-functionality.patch 0008-xen-gntdev-Implement-dma-buf-import-functionality.patch The corresponding libxengnttab changes are available at [6]. All the above was tested with display backend [7] and its accompanying helper library [8] on Renesas ARM64 based board. Basic balloon tests on x86. *To all the communities*: I would like to ask you to review the proposed solution and give feedback on it, so I can improve and send final patches for review (this is still work in progress, but enough to start discussing the implementation). Thank you in advance, Oleksandr Andrushchenko [1] https://lists.freedesktop.org/archives/dri-devel/2018-April/173163.html [2] https://elixir.bootlin.com/linux/v4.17-rc5/source/Documentation/driver-api/dma-buf.rst [3] https://lists.xenproject.org/archives/html/xen-devel/2018-02/msg01202.html [4] https://cgit.freedesktop.org/drm/drm-misc/tree/drivers/gpu/drm/xen [5] https://patchwork.kernel.org/patch/10279681/ [6] https://github.com/andr2000/xen/tree/xen_dma_buf_v1 [7] https://github.com/andr2000/displ_be/tree/xen_dma_buf_v1 [8] https://github.com/andr2000/libxenbe/tree/xen_dma_buf_v1 [9] https://lkml.org/lkml/2018/5/17/215 Changes since v4: ***************** - added r-b tags - rebased onto v4.18-rc5 Changes since v3: ***************** - added r-b tags - minor fixes - removed gntdev_remove_map as it can be coded directly now - moved IOCTL code to gntdev-dmabuf.c - removed usless wait list walks and changed some walks to use normal version of list iterators instead of safe ones as we run under a lock anyways - cleaned up comments, descriptions, pr_debug messages Changes since v2: ***************** - fixed missed break in dmabuf_exp_wait_obj_signal - re-worked debug and error messages, be less verbose - removed patch for making gntdev functions available to other drivers - removed WARN_ON's in dma-buf code - moved all dma-buf related code into gntdev-dmabuf - introduced gntdev-common.h with common structures and function prototypes - added additional checks for number of grants in IOCTLs - gnttab patch cleanup - made xenmem_reservation_scrub_page defined in the header as inline - fixed __pfn_to_mfn use to pfn_to_bfn - no changes to patches 1-2 Changes since v1: ***************** - Define GNTDEV_DMA_FLAG_XXX starting from bit 0 - Rename mem_reservation.h to mem-reservation.h - Remove usless comments - Change licenses from GPLv2 OR MIT to GPLv2 only - Make xenmem_reservation_va_mapping_{update|clear} inline - Change EXPORT_SYMBOL to EXPORT_SYMBOL_GPL for new functions - Make gnttab_dma_{alloc|free}_pages to request frames array be allocated outside - Fixe gnttab_dma_alloc_pages fail path (added xenmem_reservation_increase) - Move most of dma-buf from gntdev.c to gntdev-dmabuf.c - Add required dependencies to Kconfig - Rework "#ifdef CONFIG_XEN_XXX" for if/else - Export gnttab_{alloc|free}_pages as GPL symbols (patch 1) Oleksandr Andrushchenko (8): xen/grant-table: Make set/clear page private code shared xen/balloon: Share common memory reservation routines xen/grant-table: Allow allocating buffers suitable for DMA xen/gntdev: Allow mappings for DMA buffers xen/gntdev: Make private routines/structures accessible xen/gntdev: Add initial support for dma-buf UAPI xen/gntdev: Implement dma-buf export functionality xen/gntdev: Implement dma-buf import functionality drivers/xen/Kconfig | 24 + drivers/xen/Makefile | 2 + drivers/xen/balloon.c | 75 +-- drivers/xen/gntdev-common.h | 94 ++++ drivers/xen/gntdev-dmabuf.c | 855 ++++++++++++++++++++++++++++++++++ drivers/xen/gntdev-dmabuf.h | 33 ++ drivers/xen/gntdev.c | 220 ++++++--- drivers/xen/grant-table.c | 151 +++++- drivers/xen/mem-reservation.c | 118 +++++ include/uapi/xen/gntdev.h | 106 +++++ include/xen/grant_table.h | 21 + include/xen/mem-reservation.h | 59 +++ 12 files changed, 1599 insertions(+), 159 deletions(-) create mode 100644 drivers/xen/gntdev-common.h create mode 100644 drivers/xen/gntdev-dmabuf.c create mode 100644 drivers/xen/gntdev-dmabuf.h create mode 100644 drivers/xen/mem-reservation.c create mode 100644 include/xen/mem-reservation.h -- 2.18.0