From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Stultz Subject: [PATCH v5 1/5] dma-buf: Add dma-buf heaps framework Date: Fri, 7 Jun 2019 03:07:15 +0000 Message-ID: <20190607030719.77286-2-john.stultz@linaro.org> References: <20190607030719.77286-1-john.stultz@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pg1-x541.google.com (mail-pg1-x541.google.com [IPv6:2607:f8b0:4864:20::541]) by gabe.freedesktop.org (Postfix) with ESMTPS id 79C3E89A60 for ; Fri, 7 Jun 2019 03:07:26 +0000 (UTC) Received: by mail-pg1-x541.google.com with SMTP id f25so352323pgv.10 for ; Thu, 06 Jun 2019 20:07:26 -0700 (PDT) In-Reply-To: <20190607030719.77286-1-john.stultz@linaro.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: lkml Cc: Sudipto Paul , Vincent Donnefort , Chenbo Feng , Alistair Strachan , Liam Mark , "Andrew F. Davis" , Christoph Hellwig , dri-devel@lists.freedesktop.org, Pratik Patel List-Id: dri-devel@lists.freedesktop.org RnJvbTogIkFuZHJldyBGLiBEYXZpcyIgPGFmZEB0aS5jb20+CgpUaGlzIGZyYW1ld29yayBhbGxv d3MgYSB1bmlmaWVkIHVzZXJzcGFjZSBpbnRlcmZhY2UgZm9yIGRtYS1idWYKZXhwb3J0ZXJzLCBh bGxvd2luZyB1c2VybGFuZCB0byBhbGxvY2F0ZSBzcGVjaWZpYyB0eXBlcyBvZiBtZW1vcnkKZm9y IHVzZSBpbiBkbWEtYnVmIHNoYXJpbmcuCgpFYWNoIGhlYXAgaXMgZ2l2ZW4gaXRzIG93biBkZXZp Y2Ugbm9kZSwgd2hpY2ggYSB1c2VyIGNhbiBhbGxvY2F0ZQphIGRtYS1idWYgZmQgZnJvbSB1c2lu ZyB0aGUgRE1BX0hFQVBfSU9DX0FMTE9DLgoKVGhpcyBjb2RlIGlzIGFuIGV2b2x1aXRvbiBvZiB0 aGUgQW5kcm9pZCBJT04gaW1wbGVtZW50YXRpb24sCmFuZCBhIGJpZyB0aGFua3MgaXMgZHVlIHRv IGl0cyBhdXRob3JzL21haW50YWluZXJzIG92ZXIgdGltZQpmb3IgdGhlaXIgZWZmb3J0OgogIFJl YmVjY2EgU2NodWx0eiBaYXZpbiwgQ29saW4gQ3Jvc3MsIEJlbmphbWluIEdhaWduYXJkLAogIExh dXJhIEFiYm90dCwgYW5kIG1hbnkgb3RoZXIgY29udHJpYnV0b3JzIQoKQ2M6IExhdXJhIEFiYm90 dCA8bGFiYm90dEByZWRoYXQuY29tPgpDYzogQmVuamFtaW4gR2FpZ25hcmQgPGJlbmphbWluLmdh aWduYXJkQGxpbmFyby5vcmc+CkNjOiBTdW1pdCBTZW13YWwgPHN1bWl0LnNlbXdhbEBsaW5hcm8u b3JnPgpDYzogTGlhbSBNYXJrIDxsbWFya0Bjb2RlYXVyb3JhLm9yZz4KQ2M6IFByYXRpayBQYXRl bCA8cHJhdGlrcEBjb2RlYXVyb3JhLm9yZz4KQ2M6IEJyaWFuIFN0YXJrZXkgPEJyaWFuLlN0YXJr ZXlAYXJtLmNvbT4KQ2M6IFZpbmNlbnQgRG9ubmVmb3J0IDxWaW5jZW50LkRvbm5lZm9ydEBhcm0u Y29tPgpDYzogU3VkaXB0byBQYXVsIDxTdWRpcHRvLlBhdWxAYXJtLmNvbT4KQ2M6IEFuZHJldyBG LiBEYXZpcyA8YWZkQHRpLmNvbT4KQ2M6IENocmlzdG9waCBIZWxsd2lnIDxoY2hAaW5mcmFkZWFk Lm9yZz4KQ2M6IENoZW5ibyBGZW5nIDxmZW5nY0Bnb29nbGUuY29tPgpDYzogQWxpc3RhaXIgU3Ry YWNoYW4gPGFzdHJhY2hhbkBnb29nbGUuY29tPgpDYzogZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpSZXZpZXdlZC1ieTogQmVuamFtaW4gR2FpZ25hcmQgPGJlbmphbWluLmdhaWduYXJk QGxpbmFyby5vcmc+ClNpZ25lZC1vZmYtYnk6IEFuZHJldyBGLiBEYXZpcyA8YWZkQHRpLmNvbT4K U2lnbmVkLW9mZi1ieTogSm9obiBTdHVsdHogPGpvaG4uc3R1bHR6QGxpbmFyby5vcmc+CkNoYW5n ZS1JZDogSTRhZjQzYTEzN2FkMzRmZjZmN2RhNGQ2YjI4NjRmM2NkODZmYjc2NTIKLS0tCnYyOgoq IEZvbGRlZCBkb3duIGZpeGVzIEkgaGFkIHByZXZpb3VzbHkgc2hhcmVkIGluIGltcGxlbWVudGlu ZwogIGhlYXBzCiogTWFrZSBmbGFncyBhIHU2NCAoU3VnZ2VzdGVkIGJ5IExhdXJhKQoqIEFkZCBQ QUdFX0FMSUdOKCkgZml4IHRvIHRoZSBjb3JlIGFsbG9jIGZ1bmNpdG9uCiogSU9DVEwgZml4dXBz IHN1Z2dlc3RlZCBieSBCcmlhbgoqIEFkZGVkIGZpeGVzIHN1Z2dlc3RlZCBieSBCZW5qYW1pbgoq IFJlbW92ZWQgY29yZSBzdGF0cyBtZ210LCBhcyB0aGF0IHNob3VsZCBiZSBpbXBsZW1lbnRlZCBi eQogIHBlci1oZWFwIGNvZGUKKiBDaGFuZ2VkIGFsbG9jIHRvIHJldHVybiBhIGRtYS1idWYgZmQs IHJhdGhlciB0aGVuIGEgYnVmZmVyCiAgKGFzIGl0IHNpbXBsaWZpZXMgZXJyb3IgaGFuZGxpbmcp CnYzOgoqIFJlbW92ZWQgc2NhcmUtcXVvdGVzIGluIE1BSU5UQUlORVJTIGVtYWlsIGFkZHJlc3MK KiBHZXQgcmlkIG9mIC5yZWxlYXNlIGZ1bmN0aW9uIGFzIGl0IGRpZG4ndCBkbyBhbnl0aGluZyAo ZnJvbQogIENocmlzdG9waCkKKiBSZW5hbWVkIGZpbHAgdG8gZmlsZSAoc3VnZ2VzdGVkIGJ5IENo cmlzdG9waCkKKiBTcGxpdCBvdXQgaW9jdGwgaGFuZGxpbmcgdG8gc2VwYXJhdGUgZnVuY3Rpb24g KHN1Z2dlc3RlZCBieQogIENocmlzdG9waCkKKiBBZGQgY29tbWVudCBkb2N1bWVudGluZyBQQUdF X0FMSUdOIHVzYWdlIChzdWdnZXN0ZWQgYnkgQnJpYW4pCiogU3dpdGNoIGZyb20gaWRyIHRvIFhh cnJheSAoc3VnZ2VzdGVkIGJ5IEJyaWFuKQoqIEZpeHVwIGNkZXYgY3JlYXRpb24gKHN1Z2dlc3Rl ZCBieSBCcmlhbikKKiBBdm9pZCBFWFBPUlRfU1lNQk9MIHVudGlsIHdlIGZpbmFsaXplIG1vZHVs ZXMgKHN1Z2dlc3RlZCBieQogIEJyaWFuKQoqIE1ha2Ugc3RydWN0IGRtYV9oZWFwIGludGVybmFs IG9ubHkgKGZvbGRlZCBpbiBmcm9tIEFuZHJldykKKiBTbWFsbCBjbGVhbnVwcyBzdWdnZXN0ZWQg YnkgR3JlZ0tICiogUHJvdmlkZSBjbGFzcy0+ZGV2bm9kZSBjYWxsYmFjayB0byBnZXQgY29uc2lz dGVudCAvZGV2LwogIHN1YmRpcmVjdG9yeSBuYW1pbmcgKFN1Z2dlc3RlZCBieSBCam9ybikKdjQ6 CiogRm9sZGVkIGRvd24gZG1hLWhlYXAuaCBjaGFuZ2UgdGhhdCB3YXMgaW4gYSBmb2xsb3dpbmcg cGF0Y2gKKiBBZGRlZCBmZF9mbGFncyBlbnRyeSB0byBhbGxvY2F0aW9uIHN0cnVjdHVyZSBhbmQg cGFzcyBpdAogIHRocm91Z2ggdG8gaGVhcCBjb2RlIGZvciB1c2Ugb24gZG1hLWJ1ZiBmZCBjcmVh dGlvbiAoc3VnZ2VzdGVkCiAgYnkgQmVuamFtaW4pCnY1OgoqIE1pbm9yIGNsZWFudXBzCi0tLQog TUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgICAgfCAgMTggKysrCiBkcml2ZXJzL2RtYS1idWYv S2NvbmZpZyAgICAgICB8ICAgOCArKwogZHJpdmVycy9kbWEtYnVmL01ha2VmaWxlICAgICAgfCAg IDEgKwogZHJpdmVycy9kbWEtYnVmL2RtYS1oZWFwLmMgICAgfCAyMzcgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9saW51eC9kbWEtaGVhcC5oICAgICAgfCAgNTkg KysrKysrKysrCiBpbmNsdWRlL3VhcGkvbGludXgvZG1hLWhlYXAuaCB8ICA1NiArKysrKysrKwog NiBmaWxlcyBjaGFuZ2VkLCAzNzkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvZG1hLWJ1Zi9kbWEtaGVhcC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9saW51 eC9kbWEtaGVhcC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS91YXBpL2xpbnV4L2RtYS1o ZWFwLmgKCmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IGE2OTU0 Nzc2YTM3ZS4uNWFkZWQ3ZTlhMDYyIDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysgYi9NQUlO VEFJTkVSUwpAQCAtNDgxMyw2ICs0ODEzLDI0IEBAIEY6CWluY2x1ZGUvbGludXgvKmZlbmNlLmgK IEY6CURvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kbWEtYnVmLnJzdAogVDoJZ2l0IGdpdDovL2Fu b25naXQuZnJlZWRlc2t0b3Aub3JnL2RybS9kcm0tbWlzYwogCitETUEtQlVGIEhFQVBTIEZSQU1F V09SSworTToJU3VtaXQgU2Vtd2FsIDxzdW1pdC5zZW13YWxAbGluYXJvLm9yZz4KK1I6CUFuZHJl dyBGLiBEYXZpcyA8YWZkQHRpLmNvbT4KK1I6CUJlbmphbWluIEdhaWduYXJkIDxiZW5qYW1pbi5n YWlnbmFyZEBsaW5hcm8ub3JnPgorUjoJTGlhbSBNYXJrIDxsbWFya0Bjb2RlYXVyb3JhLm9yZz4K K1I6CUxhdXJhIEFiYm90dCA8bGFiYm90dEByZWRoYXQuY29tPgorUjoJQnJpYW4gU3RhcmtleSA8 QnJpYW4uU3RhcmtleUBhcm0uY29tPgorUjoJSm9obiBTdHVsdHogPGpvaG4uc3R1bHR6QGxpbmFy by5vcmc+CitTOglNYWludGFpbmVkCitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK0w6 CWRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKK0w6CWxpbmFyby1tbS1zaWdAbGlzdHMu bGluYXJvLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitGOglpbmNsdWRlL3Vh cGkvbGludXgvZG1hLWhlYXAuaAorRjoJaW5jbHVkZS9saW51eC9kbWEtaGVhcC5oCitGOglkcml2 ZXJzL2RtYS1idWYvZG1hLWhlYXAuYworRjoJZHJpdmVycy9kbWEtYnVmL2hlYXBzLyoKK1Q6CWdp dCBnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9kcm0vZHJtLW1pc2MKKwogRE1BIEdFTkVS SUMgT0ZGTE9BRCBFTkdJTkUgU1VCU1lTVEVNCiBNOglWaW5vZCBLb3VsIDx2a291bEBrZXJuZWwu b3JnPgogTDoJZG1hZW5naW5lQHZnZXIua2VybmVsLm9yZwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9k bWEtYnVmL0tjb25maWcgYi9kcml2ZXJzL2RtYS1idWYvS2NvbmZpZwppbmRleCBkNWY5MTU4MzBi NjguLjliOTNmODZmNTk3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9kbWEtYnVmL0tjb25maWcKKysr IGIvZHJpdmVycy9kbWEtYnVmL0tjb25maWcKQEAgLTM5LDQgKzM5LDEyIEBAIGNvbmZpZyBVRE1B QlVGCiAJICBBIGRyaXZlciB0byBsZXQgdXNlcnNwYWNlIHR1cm4gbWVtZmQgcmVnaW9ucyBpbnRv IGRtYS1idWZzLgogCSAgUWVtdSBjYW4gdXNlIHRoaXMgdG8gY3JlYXRlIGhvc3QgZG1hYnVmcyBm b3IgZ3Vlc3QgZnJhbWVidWZmZXJzLgogCittZW51Y29uZmlnIERNQUJVRl9IRUFQUworCWJvb2wg IkRNQS1CVUYgVXNlcmxhbmQgTWVtb3J5IEhlYXBzIgorCXNlbGVjdCBETUFfU0hBUkVEX0JVRkZF UgorCWhlbHAKKwkgIENob29zZSB0aGlzIG9wdGlvbiB0byBlbmFibGUgdGhlIERNQS1CVUYgdXNl cmxhbmQgbWVtb3J5IGhlYXBzLAorCSAgdGhpcyBhbGxvd3MgdXNlcnNwYWNlIHRvIGFsbG9jYXRl IGRtYS1idWZzIHRoYXQgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuCisJICBkcml2ZXJzLgorCiBlbmRt ZW51CmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYvTWFrZWZpbGUgYi9kcml2ZXJzL2RtYS1i dWYvTWFrZWZpbGUKaW5kZXggZThjNzMxMGNiODAwLi4xY2IzZGQxMDQ4MjUgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZG1hLWJ1Zi9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2RtYS1idWYvTWFrZWZpbGUK QEAgLTEsNiArMSw3IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkK IG9iai15IDo9IGRtYS1idWYubyBkbWEtZmVuY2UubyBkbWEtZmVuY2UtYXJyYXkubyBkbWEtZmVu Y2UtY2hhaW4ubyBcCiAJIHJlc2VydmF0aW9uLm8gc2Vxbm8tZmVuY2Uubworb2JqLSQoQ09ORklH X0RNQUJVRl9IRUFQUykJKz0gZG1hLWhlYXAubwogb2JqLSQoQ09ORklHX1NZTkNfRklMRSkJCSs9 IHN5bmNfZmlsZS5vCiBvYmotJChDT05GSUdfU1dfU1lOQykJCSs9IHN3X3N5bmMubyBzeW5jX2Rl YnVnLm8KIG9iai0kKENPTkZJR19VRE1BQlVGKQkJKz0gdWRtYWJ1Zi5vCmRpZmYgLS1naXQgYS9k cml2ZXJzL2RtYS1idWYvZG1hLWhlYXAuYyBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtaGVhcC5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmJlYWYzMTkyYTBkCi0tLSAv ZGV2L251bGwKKysrIGIvZHJpdmVycy9kbWEtYnVmL2RtYS1oZWFwLmMKQEAgLTAsMCArMSwyMzcg QEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCisvKgorICogRnJhbWV3b3Jr IGZvciB1c2Vyc3BhY2UgRE1BLUJVRiBhbGxvY2F0aW9ucworICoKKyAqIENvcHlyaWdodCAoQykg MjAxMSBHb29nbGUsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxOSBMaW5hcm8gTHRkLgorICov CisKKyNpbmNsdWRlIDxsaW51eC9jZGV2Lmg+CisjaW5jbHVkZSA8bGludXgvZGVidWdmcy5oPgor I2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYuaD4KKyNp bmNsdWRlIDxsaW51eC9lcnIuaD4KKyNpbmNsdWRlIDxsaW51eC94YXJyYXkuaD4KKyNpbmNsdWRl IDxsaW51eC9saXN0Lmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4 L3VhY2Nlc3MuaD4KKworI2luY2x1ZGUgPGxpbnV4L2RtYS1oZWFwLmg+CisjaW5jbHVkZSA8dWFw aS9saW51eC9kbWEtaGVhcC5oPgorCisjZGVmaW5lIERFVk5BTUUgImRtYV9oZWFwIgorCisjZGVm aW5lIE5VTV9IRUFQX01JTk9SUyAxMjgKKworLyoqCisgKiBzdHJ1Y3QgZG1hX2hlYXAgLSByZXBy ZXNlbnRzIGEgZG1hYnVmIGhlYXAgaW4gdGhlIHN5c3RlbQorICogQG5hbWU6CQl1c2VkIGZvciBk ZWJ1Z2dpbmcvZGV2aWNlLW5vZGUgbmFtZQorICogQG9wczoJCW9wcyBzdHJ1Y3QgZm9yIHRoaXMg aGVhcAorICogQG1pbm9yCQltaW5vciBudW1iZXIgb2YgdGhpcyBoZWFwIGRldmljZQorICogQGhl YXBfZGV2dAkJaGVhcCBkZXZpY2Ugbm9kZQorICogQGhlYXBfY2RldgkJaGVhcCBjaGFyIGRldmlj ZQorICoKKyAqIFJlcHJlc2VudHMgYSBoZWFwIG9mIG1lbW9yeSBmcm9tIHdoaWNoIGJ1ZmZlcnMg Y2FuIGJlIG1hZGUuCisgKi8KK3N0cnVjdCBkbWFfaGVhcCB7CisJY29uc3QgY2hhciAqbmFtZTsK KwlzdHJ1Y3QgZG1hX2hlYXBfb3BzICpvcHM7CisJdm9pZCAqcHJpdjsKKwl1bnNpZ25lZCBpbnQg bWlub3I7CisJZGV2X3QgaGVhcF9kZXZ0OworCXN0cnVjdCBjZGV2IGhlYXBfY2RldjsKK307CisK K3N0YXRpYyBkZXZfdCBkbWFfaGVhcF9kZXZ0Oworc3RhdGljIHN0cnVjdCBjbGFzcyAqZG1hX2hl YXBfY2xhc3M7CitzdGF0aWMgREVGSU5FX1hBUlJBWV9BTExPQyhkbWFfaGVhcF9taW5vcnMpOwor CitzdGF0aWMgaW50IGRtYV9oZWFwX2J1ZmZlcl9hbGxvYyhzdHJ1Y3QgZG1hX2hlYXAgKmhlYXAs IHNpemVfdCBsZW4sCisJCQkJIHVuc2lnbmVkIGludCBmZF9mbGFncywKKwkJCQkgdW5zaWduZWQg aW50IGhlYXBfZmxhZ3MpCit7CisJLyoKKwkgKiBBbGxvY2F0aW9ucyBmcm9tIGFsbCBoZWFwcyBo YXZlIHRvIGJlZ2luCisJICogYW5kIGVuZCBvbiBwYWdlIGJvdW5kYXJpZXMuCisJICovCisJbGVu ID0gUEFHRV9BTElHTihsZW4pOworCWlmICghbGVuKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXJl dHVybiBoZWFwLT5vcHMtPmFsbG9jYXRlKGhlYXAsIGxlbiwgZmRfZmxhZ3MsIGhlYXBfZmxhZ3Mp OworfQorCitzdGF0aWMgaW50IGRtYV9oZWFwX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3Ry dWN0IGZpbGUgKmZpbGUpCit7CisJc3RydWN0IGRtYV9oZWFwICpoZWFwOworCisJaGVhcCA9IHhh X2xvYWQoJmRtYV9oZWFwX21pbm9ycywgaW1pbm9yKGlub2RlKSk7CisJaWYgKCFoZWFwKSB7CisJ CXByX2VycigiZG1hX2hlYXA6IG1pbm9yICVkIHVua25vd24uXG4iLCBpbWlub3IoaW5vZGUpKTsK KwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCisJLyogaW5zdGFuY2UgZGF0YSBhcyBjb250ZXh0ICov CisJZmlsZS0+cHJpdmF0ZV9kYXRhID0gaGVhcDsKKwlub25zZWVrYWJsZV9vcGVuKGlub2RlLCBm aWxlKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgbG9uZyBkbWFfaGVhcF9pb2N0bF9hbGxv Y2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgbG9uZyBhcmcpCit7CisJc3RydWN0IGRt YV9oZWFwX2FsbG9jYXRpb25fZGF0YSBoZWFwX2FsbG9jYXRpb247CisJc3RydWN0IGRtYV9oZWFw ICpoZWFwID0gZmlsZS0+cHJpdmF0ZV9kYXRhOworCWludCBmZDsKKworCWlmIChjb3B5X2Zyb21f dXNlcigmaGVhcF9hbGxvY2F0aW9uLCAodm9pZCBfX3VzZXIgKilhcmcsCisJCQkgICBzaXplb2Yo aGVhcF9hbGxvY2F0aW9uKSkpCisJCXJldHVybiAtRUZBVUxUOworCisJaWYgKGhlYXBfYWxsb2Nh dGlvbi5mZCB8fAorCSAgICBoZWFwX2FsbG9jYXRpb24ucmVzZXJ2ZWQwIHx8CisJICAgIGhlYXBf YWxsb2NhdGlvbi5yZXNlcnZlZDEpIHsKKwkJcHJfd2Fybl9vbmNlKCJkbWFfaGVhcDogaW9jdGwg ZGF0YSBub3QgdmFsaWRcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlpZiAoaGVhcF9h bGxvY2F0aW9uLmZkX2ZsYWdzICYgfkRNQV9IRUFQX1ZBTElEX0ZEX0ZMQUdTKSB7CisJCXByX3dh cm5fb25jZSgiZG1hX2hlYXA6IGZkX2ZsYWdzIGhhcyBpbnZhbGlkIG9yIHVuc3VwcG9ydGVkIGZs YWdzIHNldFxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWlmIChoZWFwX2FsbG9jYXRp b24uaGVhcF9mbGFncyAmIH5ETUFfSEVBUF9WQUxJRF9IRUFQX0ZMQUdTKSB7CisJCXByX3dhcm5f b25jZSgiZG1hX2hlYXA6IGhlYXAgZmxhZ3MgaGFzIGludmFsaWQgb3IgdW5zdXBwb3J0ZWQgZmxh Z3Mgc2V0XG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisKKwlmZCA9IGRtYV9oZWFwX2J1 ZmZlcl9hbGxvYyhoZWFwLCBoZWFwX2FsbG9jYXRpb24ubGVuLAorCQkJCSAgIGhlYXBfYWxsb2Nh dGlvbi5mZF9mbGFncywKKwkJCQkgICBoZWFwX2FsbG9jYXRpb24uaGVhcF9mbGFncyk7CisJaWYg KGZkIDwgMCkKKwkJcmV0dXJuIGZkOworCisJaGVhcF9hbGxvY2F0aW9uLmZkID0gZmQ7CisKKwlp ZiAoY29weV90b191c2VyKCh2b2lkIF9fdXNlciAqKWFyZywgJmhlYXBfYWxsb2NhdGlvbiwKKwkJ CSBzaXplb2YoaGVhcF9hbGxvY2F0aW9uKSkpCisJCXJldHVybiAtRUZBVUxUOworCisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBsb25nIGRtYV9oZWFwX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1 bnNpZ25lZCBpbnQgY21kLAorCQkJICAgdW5zaWduZWQgbG9uZyBhcmcpCit7CisJaW50IHJldCA9 IDA7CisKKwlzd2l0Y2ggKGNtZCkgeworCWNhc2UgRE1BX0hFQVBfSU9DX0FMTE9DOgorCQlyZXQg PSBkbWFfaGVhcF9pb2N0bF9hbGxvY2F0ZShmaWxlLCBhcmcpOworCQlicmVhazsKKwlkZWZhdWx0 OgorCQlyZXR1cm4gLUVOT1RUWTsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgY29u c3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBkbWFfaGVhcF9mb3BzID0geworCS5vd25lciAgICAg ICAgICA9IFRISVNfTU9EVUxFLAorCS5vcGVuCQk9IGRtYV9oZWFwX29wZW4sCisJLnVubG9ja2Vk X2lvY3RsID0gZG1hX2hlYXBfaW9jdGwsCit9OworCisvKioKKyAqIGRtYV9oZWFwX2dldF9kYXRh KCkgLSBnZXQgcGVyLXN1YmRyaXZlciBkYXRhIGZvciB0aGUgaGVhcAorICogQGhlYXA6IERNQS1I ZWFwIHRvIHJldHJpZXZlIHByaXZhdGUgZGF0YSBmb3IKKyAqCisgKiBSZXR1cm5zOgorICogVGhl IHBlci1zdWJkcml2ZXIgZGF0YSBmb3IgdGhlIGhlYXAuCisgKi8KK3ZvaWQgKmRtYV9oZWFwX2dl dF9kYXRhKHN0cnVjdCBkbWFfaGVhcCAqaGVhcCkKK3sKKwlyZXR1cm4gaGVhcC0+cHJpdjsKK30K Kworc3RydWN0IGRtYV9oZWFwICpkbWFfaGVhcF9hZGQoY29uc3Qgc3RydWN0IGRtYV9oZWFwX2V4 cG9ydF9pbmZvICpleHBfaW5mbykKK3sKKwlzdHJ1Y3QgZG1hX2hlYXAgKmhlYXA7CisJc3RydWN0 IGRldmljZSAqZGV2X3JldDsKKwlpbnQgcmV0OworCisJaWYgKCFleHBfaW5mby0+bmFtZSB8fCAh c3RyY21wKGV4cF9pbmZvLT5uYW1lLCAiIikpIHsKKwkJcHJfZXJyKCJkbWFfaGVhcDogQ2Fubm90 IGFkZCBoZWFwIHdpdGhvdXQgYSBuYW1lXG4iKTsKKwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7 CisJfQorCisJaWYgKCFleHBfaW5mby0+b3BzIHx8ICFleHBfaW5mby0+b3BzLT5hbGxvY2F0ZSkg eworCQlwcl9lcnIoImRtYV9oZWFwOiBDYW5ub3QgYWRkIGhlYXAgd2l0aCBpbnZhbGlkIG9wcyBz dHJ1Y3RcbiIpOworCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKKwl9CisKKwloZWFwID0ga3ph bGxvYyhzaXplb2YoKmhlYXApLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWhlYXApCisJCXJldHVybiBF UlJfUFRSKC1FTk9NRU0pOworCisJaGVhcC0+bmFtZSA9IGV4cF9pbmZvLT5uYW1lOworCWhlYXAt Pm9wcyA9IGV4cF9pbmZvLT5vcHM7CisJaGVhcC0+cHJpdiA9IGV4cF9pbmZvLT5wcml2OworCisJ LyogRmluZCB1bnVzZWQgbWlub3IgbnVtYmVyICovCisJcmV0ID0geGFfYWxsb2MoJmRtYV9oZWFw X21pbm9ycywgJmhlYXAtPm1pbm9yLCBoZWFwLAorCQkJWEFfTElNSVQoMCwgTlVNX0hFQVBfTUlO T1JTIC0gMSksIEdGUF9LRVJORUwpOworCWlmIChyZXQgPCAwKSB7CisJCXByX2VycigiZG1hX2hl YXA6IFVuYWJsZSB0byBnZXQgbWlub3IgbnVtYmVyIGZvciBoZWFwXG4iKTsKKwkJcmV0dXJuIEVS Ul9QVFIocmV0KTsKKwl9CisKKwkvKiBDcmVhdGUgZGV2aWNlICovCisJaGVhcC0+aGVhcF9kZXZ0 ID0gTUtERVYoTUFKT1IoZG1hX2hlYXBfZGV2dCksIGhlYXAtPm1pbm9yKTsKKworCWNkZXZfaW5p dCgmaGVhcC0+aGVhcF9jZGV2LCAmZG1hX2hlYXBfZm9wcyk7CisJcmV0ID0gY2Rldl9hZGQoJmhl YXAtPmhlYXBfY2RldiwgaGVhcC0+aGVhcF9kZXZ0LCAxKTsKKwlpZiAocmV0IDwgMCkgeworCQlw cl9lcnIoImRtYV9oZWFwOiBVbmFibGUgdG8gYWRkIGNoYXIgZGV2aWNlXG4iKTsKKwkJcmV0dXJu IEVSUl9QVFIocmV0KTsKKwl9CisKKwlkZXZfcmV0ID0gZGV2aWNlX2NyZWF0ZShkbWFfaGVhcF9j bGFzcywKKwkJCQlOVUxMLAorCQkJCWhlYXAtPmhlYXBfZGV2dCwKKwkJCQlOVUxMLAorCQkJCWhl YXAtPm5hbWUpOworCWlmIChJU19FUlIoZGV2X3JldCkpIHsKKwkJcHJfZXJyKCJkbWFfaGVhcDog VW5hYmxlIHRvIGNyZWF0ZSBkZXZpY2VcbiIpOworCQljZGV2X2RlbCgmaGVhcC0+aGVhcF9jZGV2 KTsKKwkJcmV0dXJuIChzdHJ1Y3QgZG1hX2hlYXAgKilkZXZfcmV0OworCX0KKworCXJldHVybiBo ZWFwOworfQorCitzdGF0aWMgY2hhciAqZG1hX2hlYXBfZGV2bm9kZShzdHJ1Y3QgZGV2aWNlICpk ZXYsIHVtb2RlX3QgKm1vZGUpCit7CisJcmV0dXJuIGthc3ByaW50ZihHRlBfS0VSTkVMLCAiZG1h X2hlYXAvJXMiLCBkZXZfbmFtZShkZXYpKTsKK30KKworCitzdGF0aWMgaW50IGRtYV9oZWFwX2lu aXQodm9pZCkKK3sKKwlpbnQgcmV0OworCisJcmV0ID0gYWxsb2NfY2hyZGV2X3JlZ2lvbigmZG1h X2hlYXBfZGV2dCwgMCwgTlVNX0hFQVBfTUlOT1JTLCBERVZOQU1FKTsKKwlpZiAocmV0KQorCQly ZXR1cm4gcmV0OworCisJZG1hX2hlYXBfY2xhc3MgPSBjbGFzc19jcmVhdGUoVEhJU19NT0RVTEUs IERFVk5BTUUpOworCWlmIChJU19FUlIoZG1hX2hlYXBfY2xhc3MpKSB7CisJCXVucmVnaXN0ZXJf Y2hyZGV2X3JlZ2lvbihkbWFfaGVhcF9kZXZ0LCBOVU1fSEVBUF9NSU5PUlMpOworCQlyZXR1cm4g UFRSX0VSUihkbWFfaGVhcF9jbGFzcyk7CisJfQorCWRtYV9oZWFwX2NsYXNzLT5kZXZub2RlID0g ZG1hX2hlYXBfZGV2bm9kZTsKKworCXJldHVybiAwOworfQorc3Vic3lzX2luaXRjYWxsKGRtYV9o ZWFwX2luaXQpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kbWEtaGVhcC5oIGIvaW5jbHVk ZS9saW51eC9kbWEtaGVhcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uN2ExYjYzM2FjMDJmCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9saW51eC9kbWEtaGVh cC5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w ICovCisvKgorICogRE1BQlVGIEhlYXBzIEFsbG9jYXRpb24gSW5mcmFzdHJ1Y3R1cmUKKyAqCisg KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg TGluYXJvIEx0ZC4KKyAqLworCisjaWZuZGVmIF9ETUFfSEVBUFNfSAorI2RlZmluZSBfRE1BX0hF QVBTX0gKKworI2luY2x1ZGUgPGxpbnV4L2NkZXYuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5o PgorCitzdHJ1Y3QgZG1hX2hlYXA7CisKKy8qKgorICogc3RydWN0IGRtYV9oZWFwX29wcyAtIG9w cyB0byBvcGVyYXRlIG9uIGEgZ2l2ZW4gaGVhcAorICogQGFsbG9jYXRlOgkJYWxsb2NhdGUgZG1h YnVmIGFuZCByZXR1cm4gZmQKKyAqCisgKiBhbGxvY2F0ZSByZXR1cm5zIGRtYWJ1ZiBmZCAgb24g c3VjY2VzcywgLWVycm5vIG9uIGVycm9yLgorICovCitzdHJ1Y3QgZG1hX2hlYXBfb3BzIHsKKwlp bnQgKCphbGxvY2F0ZSkoc3RydWN0IGRtYV9oZWFwICpoZWFwLAorCQkJdW5zaWduZWQgbG9uZyBs ZW4sCisJCQl1bnNpZ25lZCBsb25nIGZkX2ZsYWdzLAorCQkJdW5zaWduZWQgbG9uZyBoZWFwX2Zs YWdzKTsKK307CisKKy8qKgorICogc3RydWN0IGRtYV9oZWFwX2V4cG9ydF9pbmZvIC0gaW5mb3Jt YXRpb24gbmVlZGVkIHRvIGV4cG9ydCBhIG5ldyBkbWFidWYgaGVhcAorICogQG5hbWU6CXVzZWQg Zm9yIGRlYnVnZ2luZy9kZXZpY2Utbm9kZSBuYW1lCisgKiBAb3BzOglvcHMgc3RydWN0IGZvciB0 aGlzIGhlYXAKKyAqIEBwcml2OgloZWFwIGV4cG9ydGVyIHByaXZhdGUgZGF0YQorICoKKyAqIElu Zm9ybWF0aW9uIG5lZWRlZCB0byBleHBvcnQgYSBuZXcgZG1hYnVmIGhlYXAuCisgKi8KK3N0cnVj dCBkbWFfaGVhcF9leHBvcnRfaW5mbyB7CisJY29uc3QgY2hhciAqbmFtZTsKKwlzdHJ1Y3QgZG1h X2hlYXBfb3BzICpvcHM7CisJdm9pZCAqcHJpdjsKK307CisKKy8qKgorICogZG1hX2hlYXBfZ2V0 X2RhdGEoKSAtIGdldCBwZXItaGVhcCBkcml2ZXIgZGF0YQorICogQGhlYXA6IERNQS1IZWFwIHRv IHJldHJpZXZlIHByaXZhdGUgZGF0YSBmb3IKKyAqCisgKiBSZXR1cm5zOgorICogVGhlIHBlci1o ZWFwIGRhdGEgZm9yIHRoZSBoZWFwLgorICovCit2b2lkICpkbWFfaGVhcF9nZXRfZGF0YShzdHJ1 Y3QgZG1hX2hlYXAgKmhlYXApOworCisvKioKKyAqIGRtYV9oZWFwX2FkZCAtIGFkZHMgYSBoZWFw IHRvIGRtYWJ1ZiBoZWFwcworICogQGV4cF9pbmZvOgkJaW5mb3JtYXRpb24gbmVlZGVkIHRvIHJl Z2lzdGVyIHRoaXMgaGVhcAorICovCitzdHJ1Y3QgZG1hX2hlYXAgKmRtYV9oZWFwX2FkZChjb25z dCBzdHJ1Y3QgZG1hX2hlYXBfZXhwb3J0X2luZm8gKmV4cF9pbmZvKTsKKworI2VuZGlmIC8qIF9E TUFfSEVBUFNfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2RtYS1oZWFwLmgg Yi9pbmNsdWRlL3VhcGkvbGludXgvZG1hLWhlYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLmMzODIyODAyNzdkNwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUv dWFwaS9saW51eC9kbWEtaGVhcC5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovCisvKgorICogRE1B QlVGIEhlYXBzIFVzZXJzcGFjZSBBUEkKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl LCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTGluYXJvIEx0ZC4KKyAqLworI2lmbmRlZiBf VUFQSV9MSU5VWF9ETUFCVUZfUE9PTF9ICisjZGVmaW5lIF9VQVBJX0xJTlVYX0RNQUJVRl9QT09M X0gKKworI2luY2x1ZGUgPGxpbnV4L2lvY3RsLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4K KworLyoqCisgKiBET0M6IERNQUJVRiBIZWFwcyBVc2Vyc3BhY2UgQVBJCisgKgorICovCisKKy8q IFZhbGlkIEZEX0ZMQUdTIGFyZSBPX0NMT0VYRUMsIE9fUkRPTkxZLCBPX1dST05MWSwgT19SRFdS ICovCisjZGVmaW5lIERNQV9IRUFQX1ZBTElEX0ZEX0ZMQUdTIChPX0NMT0VYRUMgfCBPX0FDQ01P REUpCisKKy8qIEN1cnJlbnRseSBubyBoZWFwIGZsYWdzICovCisjZGVmaW5lIERNQV9IRUFQX1ZB TElEX0hFQVBfRkxBR1MgKDApCisKKy8qKgorICogc3RydWN0IGRtYV9oZWFwX2FsbG9jYXRpb25f ZGF0YSAtIG1ldGFkYXRhIHBhc3NlZCBmcm9tIHVzZXJzcGFjZSBmb3IKKyAqICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9ucworICogQGxlbjoJCXNpemUgb2Yg dGhlIGFsbG9jYXRpb24KKyAqIEBmZDoJCQl3aWxsIGJlIHBvcHVsYXRlZCB3aXRoIGEgZmQgd2hp Y2ggcHJvdmRlcyB0aGUKKyAqCQkJaGFuZGxlIHRvIHRoZSBhbGxvY2F0ZWQgZG1hLWJ1ZgorICog QGZkX2ZsYWdzOgkJZmlsZSBkZXNjcmlwdG9yIGZsYWdzIHVzZWQgd2hlbiBhbGxvY2F0aW5nCisg KiBAaGVhcF9mbGFnczoJCWZsYWdzIHBhc3NlZCB0byBoZWFwCisgKgorICogUHJvdmlkZWQgYnkg dXNlcnNwYWNlIGFzIGFuIGFyZ3VtZW50IHRvIHRoZSBpb2N0bAorICovCitzdHJ1Y3QgZG1hX2hl YXBfYWxsb2NhdGlvbl9kYXRhIHsKKwlfX3U2NCBsZW47CisJX191MzIgZmQ7CisJX191MzIgZmRf ZmxhZ3M7CisJX191NjQgaGVhcF9mbGFnczsKKwlfX3UzMiByZXNlcnZlZDA7CisJX191MzIgcmVz ZXJ2ZWQxOworfTsKKworI2RlZmluZSBETUFfSEVBUF9JT0NfTUFHSUMJCSdIJworCisvKioKKyAq IERPQzogRE1BX0hFQVBfSU9DX0FMTE9DIC0gYWxsb2NhdGUgbWVtb3J5IGZyb20gcG9vbAorICoK KyAqIFRha2VzIGFuIGRtYV9oZWFwX2FsbG9jYXRpb25fZGF0YSBzdHJ1Y3QgYW5kIHJldHVybnMg aXQgd2l0aCB0aGUgZmQgZmllbGQKKyAqIHBvcHVsYXRlZCB3aXRoIHRoZSBkbWFidWYgaGFuZGxl IG9mIHRoZSBhbGxvY2F0aW9uLgorICovCisjZGVmaW5lIERNQV9IRUFQX0lPQ19BTExPQwlfSU9X UihETUFfSEVBUF9JT0NfTUFHSUMsIDAsIFwKKwkJCQkgICAgICBzdHJ1Y3QgZG1hX2hlYXBfYWxs b2NhdGlvbl9kYXRhKQorCisjZW5kaWYgLyogX1VBUElfTElOVVhfRE1BQlVGX1BPT0xfSCAqLwot LSAKMi4xNy4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=