From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Stultz Subject: [RESEND][PATCH v8 1/5] dma-buf: Add dma-buf heaps framework Date: Fri, 6 Sep 2019 18:47:08 +0000 Message-ID: <20190906184712.91980-2-john.stultz@linaro.org> References: <20190906184712.91980-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-x542.google.com (mail-pg1-x542.google.com [IPv6:2607:f8b0:4864:20::542]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8284E6E07F for ; Fri, 6 Sep 2019 18:47:20 +0000 (UTC) Received: by mail-pg1-x542.google.com with SMTP id l21so3969523pgm.3 for ; Fri, 06 Sep 2019 11:47:20 -0700 (PDT) In-Reply-To: <20190906184712.91980-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, Hridya Valsaraju , 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 YWNoYW4gPGFzdHJhY2hhbkBnb29nbGUuY29tPgpDYzogSHJpZHlhIFZhbHNhcmFqdSA8aHJpZHlh QGdvb2dsZS5jb20+CkNjOiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnClJldmlld2Vk LWJ5OiBCZW5qYW1pbiBHYWlnbmFyZCA8YmVuamFtaW4uZ2FpZ25hcmRAbGluYXJvLm9yZz4KU2ln bmVkLW9mZi1ieTogQW5kcmV3IEYuIERhdmlzIDxhZmRAdGkuY29tPgpTaWduZWQtb2ZmLWJ5OiBK b2huIFN0dWx0eiA8am9obi5zdHVsdHpAbGluYXJvLm9yZz4KLS0tCnYyOgoqIEZvbGRlZCBkb3du IGZpeGVzIEkgaGFkIHByZXZpb3VzbHkgc2hhcmVkIGluIGltcGxlbWVudGluZwogIGhlYXBzCiog TWFrZSBmbGFncyBhIHU2NCAoU3VnZ2VzdGVkIGJ5IExhdXJhKQoqIEFkZCBQQUdFX0FMSUdOKCkg Zml4IHRvIHRoZSBjb3JlIGFsbG9jIGZ1bmNpdG9uCiogSU9DVEwgZml4dXBzIHN1Z2dlc3RlZCBi eSBCcmlhbgoqIEFkZGVkIGZpeGVzIHN1Z2dlc3RlZCBieSBCZW5qYW1pbgoqIFJlbW92ZWQgY29y ZSBzdGF0cyBtZ210LCBhcyB0aGF0IHNob3VsZCBiZSBpbXBsZW1lbnRlZCBieQogIHBlci1oZWFw IGNvZGUKKiBDaGFuZ2VkIGFsbG9jIHRvIHJldHVybiBhIGRtYS1idWYgZmQsIHJhdGhlciB0aGFu IGEgYnVmZmVyCiAgKGFzIGl0IHNpbXBsaWZpZXMgZXJyb3IgaGFuZGxpbmcpCnYzOgoqIFJlbW92 ZWQgc2NhcmUtcXVvdGVzIGluIE1BSU5UQUlORVJTIGVtYWlsIGFkZHJlc3MKKiBHZXQgcmlkIG9m IC5yZWxlYXNlIGZ1bmN0aW9uIGFzIGl0IGRpZG4ndCBkbyBhbnl0aGluZyAoZnJvbQogIENocmlz dG9waCkKKiBSZW5hbWVkIGZpbHAgdG8gZmlsZSAoc3VnZ2VzdGVkIGJ5IENocmlzdG9waCkKKiBT cGxpdCBvdXQgaW9jdGwgaGFuZGxpbmcgdG8gc2VwYXJhdGUgZnVuY3Rpb24gKHN1Z2dlc3RlZCBi eQogIENocmlzdG9waCkKKiBBZGQgY29tbWVudCBkb2N1bWVudGluZyBQQUdFX0FMSUdOIHVzYWdl IChzdWdnZXN0ZWQgYnkgQnJpYW4pCiogU3dpdGNoIGZyb20gaWRyIHRvIFhhcnJheSAoc3VnZ2Vz dGVkIGJ5IEJyaWFuKQoqIEZpeHVwIGNkZXYgY3JlYXRpb24gKHN1Z2dlc3RlZCBieSBCcmlhbikK KiBBdm9pZCBFWFBPUlRfU1lNQk9MIHVudGlsIHdlIGZpbmFsaXplIG1vZHVsZXMgKHN1Z2dlc3Rl ZCBieQogIEJyaWFuKQoqIE1ha2Ugc3RydWN0IGRtYV9oZWFwIGludGVybmFsIG9ubHkgKGZvbGRl ZCBpbiBmcm9tIEFuZHJldykKKiBTbWFsbCBjbGVhbnVwcyBzdWdnZXN0ZWQgYnkgR3JlZ0tICiog UHJvdmlkZSBjbGFzcy0+ZGV2bm9kZSBjYWxsYmFjayB0byBnZXQgY29uc2lzdGVudCAvZGV2Lwog IHN1YmRpcmVjdG9yeSBuYW1pbmcgKFN1Z2dlc3RlZCBieSBCam9ybikKdjQ6CiogRm9sZGVkIGRv d24gZG1hLWhlYXAuaCBjaGFuZ2UgdGhhdCB3YXMgaW4gYSBmb2xsb3dpbmcgcGF0Y2gKKiBBZGRl ZCBmZF9mbGFncyBlbnRyeSB0byBhbGxvY2F0aW9uIHN0cnVjdHVyZSBhbmQgcGFzcyBpdAogIHRo cm91Z2ggdG8gaGVhcCBjb2RlIGZvciB1c2Ugb24gZG1hLWJ1ZiBmZCBjcmVhdGlvbiAoc3VnZ2Vz dGVkCiAgYnkgQmVuamFtaW4pCnY1OgoqIE1pbm9yIGNsZWFudXBzCnY2OgoqIEltcHJvdmVkIGVy cm9yIHBhdGggaGFuZGxpbmcsIG1pbm9yIHdoaXRlc3BhY2UgZml4ZXMsIGJvdGgKICBzdWdnZXN0 ZWQgYnkgQnJpYW4Kdjc6CiogTG9uZ2VyIEtjb25maWcgZGVzY3JpcHRpb24gdG8gcXVpZXQgY2hl Y2twYXRjaCB3YXJuaW5ncwoqIFJlLWFkZCBjb21wYXRfaW9jdGwgYml0cyAoSHJpZHlhIG5vdGlj ZWQgMzJiaXQgdXNlcmxhbmQgd2Fzbid0CiAgd29ya2luZykKdjg6CiogTWFrZSBzdHJ1Y3QgZG1h X2hlYXBfb3BzIGNvbnN0cyAoU3VnZ2VzdGVkIGJ5IENocmlzdG9waCkKKiBDaGVja3BhdGNoIHdo aXRlc3BhY2UgZml4dXBzCi0tLQogTUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgICAgfCAgMTgg KysrCiBkcml2ZXJzL2RtYS1idWYvS2NvbmZpZyAgICAgICB8ICAgOSArKwogZHJpdmVycy9kbWEt YnVmL01ha2VmaWxlICAgICAgfCAgIDEgKwogZHJpdmVycy9kbWEtYnVmL2RtYS1oZWFwLmMgICAg fCAyNTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9saW51eC9k bWEtaGVhcC5oICAgICAgfCAgNTkgKysrKysrKysKIGluY2x1ZGUvdWFwaS9saW51eC9kbWEtaGVh cC5oIHwgIDU1ICsrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDM5MiBpbnNlcnRpb25zKCspCiBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9kbWEtYnVmL2RtYS1oZWFwLmMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBpbmNsdWRlL2xpbnV4L2RtYS1oZWFwLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNs dWRlL3VhcGkvbGludXgvZG1hLWhlYXAuaAoKZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJ TlRBSU5FUlMKaW5kZXggZTdhNDdiNTIxMGZkLi4xM2U1NjRlMzcxNjEgMTAwNjQ0Ci0tLSBhL01B SU5UQUlORVJTCisrKyBiL01BSU5UQUlORVJTCkBAIC00OTA0LDYgKzQ5MDQsMjQgQEAgRjoJaW5j bHVkZS9saW51eC8qZmVuY2UuaAogRjoJRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RtYS1idWYu cnN0CiBUOglnaXQgZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvZHJtL2RybS1taXNjCiAK K0RNQS1CVUYgSEVBUFMgRlJBTUVXT1JLCitNOglTdW1pdCBTZW13YWwgPHN1bWl0LnNlbXdhbEBs aW5hcm8ub3JnPgorUjoJQW5kcmV3IEYuIERhdmlzIDxhZmRAdGkuY29tPgorUjoJQmVuamFtaW4g R2FpZ25hcmQgPGJlbmphbWluLmdhaWduYXJkQGxpbmFyby5vcmc+CitSOglMaWFtIE1hcmsgPGxt YXJrQGNvZGVhdXJvcmEub3JnPgorUjoJTGF1cmEgQWJib3R0IDxsYWJib3R0QHJlZGhhdC5jb20+ CitSOglCcmlhbiBTdGFya2V5IDxCcmlhbi5TdGFya2V5QGFybS5jb20+CitSOglKb2huIFN0dWx0 eiA8am9obi5zdHVsdHpAbGluYXJvLm9yZz4KK1M6CU1haW50YWluZWQKK0w6CWxpbnV4LW1lZGlh QHZnZXIua2VybmVsLm9yZworTDoJZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZworTDoJ bGluYXJvLW1tLXNpZ0BsaXN0cy5saW5hcm8ub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3Jp YmVycykKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9kbWEtaGVhcC5oCitGOglpbmNsdWRlL2xpbnV4 L2RtYS1oZWFwLmgKK0Y6CWRyaXZlcnMvZG1hLWJ1Zi9kbWEtaGVhcC5jCitGOglkcml2ZXJzL2Rt YS1idWYvaGVhcHMvKgorVDoJZ2l0IGdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL2RybS9k cm0tbWlzYworCiBETUEgR0VORVJJQyBPRkZMT0FEIEVOR0lORSBTVUJTWVNURU0KIE06CVZpbm9k IEtvdWwgPHZrb3VsQGtlcm5lbC5vcmc+CiBMOglkbWFlbmdpbmVAdmdlci5rZXJuZWwub3JnCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYvS2NvbmZpZyBiL2RyaXZlcnMvZG1hLWJ1Zi9LY29u ZmlnCmluZGV4IGI2YTljMmYxYmM0MS4uMTYyZTI0ZTFlNDI5IDEwMDY0NAotLS0gYS9kcml2ZXJz L2RtYS1idWYvS2NvbmZpZworKysgYi9kcml2ZXJzL2RtYS1idWYvS2NvbmZpZwpAQCAtMzksNCAr MzksMTMgQEAgY29uZmlnIFVETUFCVUYKIAkgIEEgZHJpdmVyIHRvIGxldCB1c2Vyc3BhY2UgdHVy biBtZW1mZCByZWdpb25zIGludG8gZG1hLWJ1ZnMuCiAJICBRZW11IGNhbiB1c2UgdGhpcyB0byBj cmVhdGUgaG9zdCBkbWFidWZzIGZvciBndWVzdCBmcmFtZWJ1ZmZlcnMuCiAKK21lbnVjb25maWcg RE1BQlVGX0hFQVBTCisJYm9vbCAiRE1BLUJVRiBVc2VybGFuZCBNZW1vcnkgSGVhcHMiCisJc2Vs ZWN0IERNQV9TSEFSRURfQlVGRkVSCisJaGVscAorCSAgQ2hvb3NlIHRoaXMgb3B0aW9uIHRvIGVu YWJsZSB0aGUgRE1BLUJVRiB1c2VybGFuZCBtZW1vcnkgaGVhcHMsCisJICB0aGlzIG9wdGlvbnMg Y3JlYXRlcyBwZXIgaGVhcCBjaGFyZGV2cyBpbiAvZGV2L2RtYV9oZWFwLyB3aGljaAorCSAgYWxs b3dzIHVzZXJzcGFjZSB0byB1c2UgdG8gYWxsb2NhdGUgZG1hLWJ1ZnMgdGhhdCBjYW4gYmUgc2hh cmVkCisJICBiZXR3ZWVuIGRyaXZlcnMuCisKIGVuZG1lbnUKZGlmZiAtLWdpdCBhL2RyaXZlcnMv ZG1hLWJ1Zi9NYWtlZmlsZSBiL2RyaXZlcnMvZG1hLWJ1Zi9NYWtlZmlsZQppbmRleCBlOGM3MzEw Y2I4MDAuLjFjYjNkZDEwNDgyNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9kbWEtYnVmL01ha2VmaWxl CisrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9NYWtlZmlsZQpAQCAtMSw2ICsxLDcgQEAKICMgU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogb2JqLXkgOj0gZG1hLWJ1Zi5vIGRtYS1m ZW5jZS5vIGRtYS1mZW5jZS1hcnJheS5vIGRtYS1mZW5jZS1jaGFpbi5vIFwKIAkgcmVzZXJ2YXRp b24ubyBzZXFuby1mZW5jZS5vCitvYmotJChDT05GSUdfRE1BQlVGX0hFQVBTKQkrPSBkbWEtaGVh cC5vCiBvYmotJChDT05GSUdfU1lOQ19GSUxFKQkJKz0gc3luY19maWxlLm8KIG9iai0kKENPTkZJ R19TV19TWU5DKQkJKz0gc3dfc3luYy5vIHN5bmNfZGVidWcubwogb2JqLSQoQ09ORklHX1VETUFC VUYpCQkrPSB1ZG1hYnVmLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtaGVhcC5j IGIvZHJpdmVycy9kbWEtYnVmL2RtYS1oZWFwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi5mOTYxZGJmNmVjNzIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2Rt YS1idWYvZG1hLWhlYXAuYwpAQCAtMCwwICsxLDI1MCBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjAKKy8qCisgKiBGcmFtZXdvcmsgZm9yIHVzZXJzcGFjZSBETUEtQlVGIGFs bG9jYXRpb25zCisgKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSwgSW5jLgorICogQ29w eXJpZ2h0IChDKSAyMDE5IExpbmFybyBMdGQuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2NkZXYu aD4KKyNpbmNsdWRlIDxsaW51eC9kZWJ1Z2ZzLmg+CisjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+ CisjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgorI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgorI2lu Y2x1ZGUgPGxpbnV4L3hhcnJheS5oPgorI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KKyNpbmNsdWRl IDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPgorI2luY2x1ZGUgPGxp bnV4L3N5c2NhbGxzLmg+CisjaW5jbHVkZSA8bGludXgvZG1hLWhlYXAuaD4KKyNpbmNsdWRlIDx1 YXBpL2xpbnV4L2RtYS1oZWFwLmg+CisKKyNkZWZpbmUgREVWTkFNRSAiZG1hX2hlYXAiCisKKyNk ZWZpbmUgTlVNX0hFQVBfTUlOT1JTIDEyOAorCisvKioKKyAqIHN0cnVjdCBkbWFfaGVhcCAtIHJl cHJlc2VudHMgYSBkbWFidWYgaGVhcCBpbiB0aGUgc3lzdGVtCisgKiBAbmFtZToJCXVzZWQgZm9y IGRlYnVnZ2luZy9kZXZpY2Utbm9kZSBuYW1lCisgKiBAb3BzOgkJb3BzIHN0cnVjdCBmb3IgdGhp cyBoZWFwCisgKiBAbWlub3IJCW1pbm9yIG51bWJlciBvZiB0aGlzIGhlYXAgZGV2aWNlCisgKiBA aGVhcF9kZXZ0CQloZWFwIGRldmljZSBub2RlCisgKiBAaGVhcF9jZGV2CQloZWFwIGNoYXIgZGV2 aWNlCisgKgorICogUmVwcmVzZW50cyBhIGhlYXAgb2YgbWVtb3J5IGZyb20gd2hpY2ggYnVmZmVy cyBjYW4gYmUgbWFkZS4KKyAqLworc3RydWN0IGRtYV9oZWFwIHsKKwljb25zdCBjaGFyICpuYW1l OworCWNvbnN0IHN0cnVjdCBkbWFfaGVhcF9vcHMgKm9wczsKKwl2b2lkICpwcml2OworCXVuc2ln bmVkIGludCBtaW5vcjsKKwlkZXZfdCBoZWFwX2RldnQ7CisJc3RydWN0IGNkZXYgaGVhcF9jZGV2 OworfTsKKworc3RhdGljIGRldl90IGRtYV9oZWFwX2RldnQ7CitzdGF0aWMgc3RydWN0IGNsYXNz ICpkbWFfaGVhcF9jbGFzczsKK3N0YXRpYyBERUZJTkVfWEFSUkFZX0FMTE9DKGRtYV9oZWFwX21p bm9ycyk7CisKK3N0YXRpYyBpbnQgZG1hX2hlYXBfYnVmZmVyX2FsbG9jKHN0cnVjdCBkbWFfaGVh cCAqaGVhcCwgc2l6ZV90IGxlbiwKKwkJCQkgdW5zaWduZWQgaW50IGZkX2ZsYWdzLAorCQkJCSB1 bnNpZ25lZCBpbnQgaGVhcF9mbGFncykKK3sKKwkvKgorCSAqIEFsbG9jYXRpb25zIGZyb20gYWxs IGhlYXBzIGhhdmUgdG8gYmVnaW4KKwkgKiBhbmQgZW5kIG9uIHBhZ2UgYm91bmRhcmllcy4KKwkg Ki8KKwlsZW4gPSBQQUdFX0FMSUdOKGxlbik7CisJaWYgKCFsZW4pCisJCXJldHVybiAtRUlOVkFM OworCisJcmV0dXJuIGhlYXAtPm9wcy0+YWxsb2NhdGUoaGVhcCwgbGVuLCBmZF9mbGFncywgaGVh cF9mbGFncyk7Cit9CisKK3N0YXRpYyBpbnQgZG1hX2hlYXBfb3BlbihzdHJ1Y3QgaW5vZGUgKmlu b2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKK3sKKwlzdHJ1Y3QgZG1hX2hlYXAgKmhlYXA7CisKKwlo ZWFwID0geGFfbG9hZCgmZG1hX2hlYXBfbWlub3JzLCBpbWlub3IoaW5vZGUpKTsKKwlpZiAoIWhl YXApIHsKKwkJcHJfZXJyKCJkbWFfaGVhcDogbWlub3IgJWQgdW5rbm93bi5cbiIsIGltaW5vcihp bm9kZSkpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwkvKiBpbnN0YW5jZSBkYXRhIGFzIGNv bnRleHQgKi8KKwlmaWxlLT5wcml2YXRlX2RhdGEgPSBoZWFwOworCW5vbnNlZWthYmxlX29wZW4o aW5vZGUsIGZpbGUpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBsb25nIGRtYV9oZWFwX2lv Y3RsX2FsbG9jYXRlKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBsb25nIGFyZykKK3sKKwlz dHJ1Y3QgZG1hX2hlYXBfYWxsb2NhdGlvbl9kYXRhIGhlYXBfYWxsb2NhdGlvbjsKKwlzdHJ1Y3Qg ZG1hX2hlYXAgKmhlYXAgPSBmaWxlLT5wcml2YXRlX2RhdGE7CisJaW50IGZkOworCisJaWYgKGNv cHlfZnJvbV91c2VyKCZoZWFwX2FsbG9jYXRpb24sICh2b2lkIF9fdXNlciAqKWFyZywKKwkJCSAg IHNpemVvZihoZWFwX2FsbG9jYXRpb24pKSkKKwkJcmV0dXJuIC1FRkFVTFQ7CisKKwlpZiAoaGVh cF9hbGxvY2F0aW9uLmZkIHx8CisJICAgIGhlYXBfYWxsb2NhdGlvbi5yZXNlcnZlZDAgfHwKKwkg ICAgaGVhcF9hbGxvY2F0aW9uLnJlc2VydmVkMSkgeworCQlwcl93YXJuX29uY2UoImRtYV9oZWFw OiBpb2N0bCBkYXRhIG5vdCB2YWxpZFxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWlm IChoZWFwX2FsbG9jYXRpb24uZmRfZmxhZ3MgJiB+RE1BX0hFQVBfVkFMSURfRkRfRkxBR1MpIHsK KwkJcHJfd2Fybl9vbmNlKCJkbWFfaGVhcDogZmRfZmxhZ3MgaGFzIGludmFsaWQgb3IgdW5zdXBw b3J0ZWQgZmxhZ3Mgc2V0XG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaWYgKGhlYXBf YWxsb2NhdGlvbi5oZWFwX2ZsYWdzICYgfkRNQV9IRUFQX1ZBTElEX0hFQVBfRkxBR1MpIHsKKwkJ cHJfd2Fybl9vbmNlKCJkbWFfaGVhcDogaGVhcCBmbGFncyBoYXMgaW52YWxpZCBvciB1bnN1cHBv cnRlZCBmbGFncyBzZXRcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlmZCA9IGRtYV9o ZWFwX2J1ZmZlcl9hbGxvYyhoZWFwLCBoZWFwX2FsbG9jYXRpb24ubGVuLAorCQkJCSAgIGhlYXBf YWxsb2NhdGlvbi5mZF9mbGFncywKKwkJCQkgICBoZWFwX2FsbG9jYXRpb24uaGVhcF9mbGFncyk7 CisJaWYgKGZkIDwgMCkKKwkJcmV0dXJuIGZkOworCisJaGVhcF9hbGxvY2F0aW9uLmZkID0gZmQ7 CisKKwlpZiAoY29weV90b191c2VyKCh2b2lkIF9fdXNlciAqKWFyZywgJmhlYXBfYWxsb2NhdGlv biwKKwkJCSBzaXplb2YoaGVhcF9hbGxvY2F0aW9uKSkpIHsKKwkJa3N5c19jbG9zZShmZCk7CisJ CXJldHVybiAtRUZBVUxUOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgbG9uZyBkbWFf aGVhcF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50IGNtZCwKKwkJCSAgIHVu c2lnbmVkIGxvbmcgYXJnKQoreworCWludCByZXQgPSAwOworCisJc3dpdGNoIChjbWQpIHsKKwlj YXNlIERNQV9IRUFQX0lPQ19BTExPQzoKKwkJcmV0ID0gZG1hX2hlYXBfaW9jdGxfYWxsb2NhdGUo ZmlsZSwgYXJnKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIC1FTk9UVFk7CisJfQor CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMg ZG1hX2hlYXBfZm9wcyA9IHsKKwkub3duZXIgICAgICAgICAgPSBUSElTX01PRFVMRSwKKwkub3Bl bgkJPSBkbWFfaGVhcF9vcGVuLAorCS51bmxvY2tlZF9pb2N0bCA9IGRtYV9oZWFwX2lvY3RsLAor I2lmZGVmIENPTkZJR19DT01QQVQKKwkuY29tcGF0X2lvY3RsCT0gZG1hX2hlYXBfaW9jdGwsCisj ZW5kaWYKK307CisKKy8qKgorICogZG1hX2hlYXBfZ2V0X2RhdGEoKSAtIGdldCBwZXItc3ViZHJp dmVyIGRhdGEgZm9yIHRoZSBoZWFwCisgKiBAaGVhcDogRE1BLUhlYXAgdG8gcmV0cmlldmUgcHJp dmF0ZSBkYXRhIGZvcgorICoKKyAqIFJldHVybnM6CisgKiBUaGUgcGVyLXN1YmRyaXZlciBkYXRh IGZvciB0aGUgaGVhcC4KKyAqLwordm9pZCAqZG1hX2hlYXBfZ2V0X2RhdGEoc3RydWN0IGRtYV9o ZWFwICpoZWFwKQoreworCXJldHVybiBoZWFwLT5wcml2OworfQorCitzdHJ1Y3QgZG1hX2hlYXAg KmRtYV9oZWFwX2FkZChjb25zdCBzdHJ1Y3QgZG1hX2hlYXBfZXhwb3J0X2luZm8gKmV4cF9pbmZv KQoreworCXN0cnVjdCBkbWFfaGVhcCAqaGVhcCwgKmVycl9yZXQ7CisJc3RydWN0IGRldmljZSAq ZGV2X3JldDsKKwlpbnQgcmV0OworCisJaWYgKCFleHBfaW5mby0+bmFtZSB8fCAhc3RyY21wKGV4 cF9pbmZvLT5uYW1lLCAiIikpIHsKKwkJcHJfZXJyKCJkbWFfaGVhcDogQ2Fubm90IGFkZCBoZWFw IHdpdGhvdXQgYSBuYW1lXG4iKTsKKwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CisJfQorCisJ aWYgKCFleHBfaW5mby0+b3BzIHx8ICFleHBfaW5mby0+b3BzLT5hbGxvY2F0ZSkgeworCQlwcl9l cnIoImRtYV9oZWFwOiBDYW5ub3QgYWRkIGhlYXAgd2l0aCBpbnZhbGlkIG9wcyBzdHJ1Y3RcbiIp OworCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKKwl9CisKKwloZWFwID0ga3phbGxvYyhzaXpl b2YoKmhlYXApLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWhlYXApCisJCXJldHVybiBFUlJfUFRSKC1F Tk9NRU0pOworCisJaGVhcC0+bmFtZSA9IGV4cF9pbmZvLT5uYW1lOworCWhlYXAtPm9wcyA9IGV4 cF9pbmZvLT5vcHM7CisJaGVhcC0+cHJpdiA9IGV4cF9pbmZvLT5wcml2OworCisJLyogRmluZCB1 bnVzZWQgbWlub3IgbnVtYmVyICovCisJcmV0ID0geGFfYWxsb2MoJmRtYV9oZWFwX21pbm9ycywg JmhlYXAtPm1pbm9yLCBoZWFwLAorCQkgICAgICAgWEFfTElNSVQoMCwgTlVNX0hFQVBfTUlOT1JT IC0gMSksIEdGUF9LRVJORUwpOworCWlmIChyZXQgPCAwKSB7CisJCXByX2VycigiZG1hX2hlYXA6 IFVuYWJsZSB0byBnZXQgbWlub3IgbnVtYmVyIGZvciBoZWFwXG4iKTsKKwkJZXJyX3JldCA9IEVS Ul9QVFIocmV0KTsKKwkJZ290byBlcnIwOworCX0KKworCS8qIENyZWF0ZSBkZXZpY2UgKi8KKwlo ZWFwLT5oZWFwX2RldnQgPSBNS0RFVihNQUpPUihkbWFfaGVhcF9kZXZ0KSwgaGVhcC0+bWlub3Ip OworCisJY2Rldl9pbml0KCZoZWFwLT5oZWFwX2NkZXYsICZkbWFfaGVhcF9mb3BzKTsKKwlyZXQg PSBjZGV2X2FkZCgmaGVhcC0+aGVhcF9jZGV2LCBoZWFwLT5oZWFwX2RldnQsIDEpOworCWlmIChy ZXQgPCAwKSB7CisJCXByX2VycigiZG1hX2hlYXA6IFVuYWJsZSB0byBhZGQgY2hhciBkZXZpY2Vc biIpOworCQllcnJfcmV0ID0gRVJSX1BUUihyZXQpOworCQlnb3RvIGVycjE7CisJfQorCisJZGV2 X3JldCA9IGRldmljZV9jcmVhdGUoZG1hX2hlYXBfY2xhc3MsCisJCQkJTlVMTCwKKwkJCQloZWFw LT5oZWFwX2RldnQsCisJCQkJTlVMTCwKKwkJCQloZWFwLT5uYW1lKTsKKwlpZiAoSVNfRVJSKGRl dl9yZXQpKSB7CisJCXByX2VycigiZG1hX2hlYXA6IFVuYWJsZSB0byBjcmVhdGUgZGV2aWNlXG4i KTsKKwkJZXJyX3JldCA9IChzdHJ1Y3QgZG1hX2hlYXAgKilkZXZfcmV0OworCQlnb3RvIGVycjI7 CisJfQorCisJcmV0dXJuIGhlYXA7CisKK2VycjI6CisJY2Rldl9kZWwoJmhlYXAtPmhlYXBfY2Rl dik7CitlcnIxOgorCXhhX2VyYXNlKCZkbWFfaGVhcF9taW5vcnMsIGhlYXAtPm1pbm9yKTsKK2Vy cjA6CisJa2ZyZWUoaGVhcCk7CisJcmV0dXJuIGVycl9yZXQ7Cit9CisKK3N0YXRpYyBjaGFyICpk bWFfaGVhcF9kZXZub2RlKHN0cnVjdCBkZXZpY2UgKmRldiwgdW1vZGVfdCAqbW9kZSkKK3sKKwly ZXR1cm4ga2FzcHJpbnRmKEdGUF9LRVJORUwsICJkbWFfaGVhcC8lcyIsIGRldl9uYW1lKGRldikp OworfQorCitzdGF0aWMgaW50IGRtYV9oZWFwX2luaXQodm9pZCkKK3sKKwlpbnQgcmV0OworCisJ cmV0ID0gYWxsb2NfY2hyZGV2X3JlZ2lvbigmZG1hX2hlYXBfZGV2dCwgMCwgTlVNX0hFQVBfTUlO T1JTLCBERVZOQU1FKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJZG1hX2hlYXBfY2xh c3MgPSBjbGFzc19jcmVhdGUoVEhJU19NT0RVTEUsIERFVk5BTUUpOworCWlmIChJU19FUlIoZG1h X2hlYXBfY2xhc3MpKSB7CisJCXVucmVnaXN0ZXJfY2hyZGV2X3JlZ2lvbihkbWFfaGVhcF9kZXZ0 LCBOVU1fSEVBUF9NSU5PUlMpOworCQlyZXR1cm4gUFRSX0VSUihkbWFfaGVhcF9jbGFzcyk7CisJ fQorCWRtYV9oZWFwX2NsYXNzLT5kZXZub2RlID0gZG1hX2hlYXBfZGV2bm9kZTsKKworCXJldHVy biAwOworfQorc3Vic3lzX2luaXRjYWxsKGRtYV9oZWFwX2luaXQpOwpkaWZmIC0tZ2l0IGEvaW5j bHVkZS9saW51eC9kbWEtaGVhcC5oIGIvaW5jbHVkZS9saW51eC9kbWEtaGVhcC5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZGY0M2U2ZDkwNWU3Ci0tLSAvZGV2L251 bGwKKysrIGIvaW5jbHVkZS9saW51eC9kbWEtaGVhcC5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCisvKgorICogRE1BQlVGIEhlYXBzIEFs bG9jYXRpb24gSW5mcmFzdHJ1Y3R1cmUKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl LCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTGluYXJvIEx0ZC4KKyAqLworCisjaWZuZGVm IF9ETUFfSEVBUFNfSAorI2RlZmluZSBfRE1BX0hFQVBTX0gKKworI2luY2x1ZGUgPGxpbnV4L2Nk ZXYuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorCitzdHJ1Y3QgZG1hX2hlYXA7CisKKy8q KgorICogc3RydWN0IGRtYV9oZWFwX29wcyAtIG9wcyB0byBvcGVyYXRlIG9uIGEgZ2l2ZW4gaGVh cAorICogQGFsbG9jYXRlOgkJYWxsb2NhdGUgZG1hYnVmIGFuZCByZXR1cm4gZmQKKyAqCisgKiBh bGxvY2F0ZSByZXR1cm5zIGRtYWJ1ZiBmZCAgb24gc3VjY2VzcywgLWVycm5vIG9uIGVycm9yLgor ICovCitzdHJ1Y3QgZG1hX2hlYXBfb3BzIHsKKwlpbnQgKCphbGxvY2F0ZSkoc3RydWN0IGRtYV9o ZWFwICpoZWFwLAorCQkJdW5zaWduZWQgbG9uZyBsZW4sCisJCQl1bnNpZ25lZCBsb25nIGZkX2Zs YWdzLAorCQkJdW5zaWduZWQgbG9uZyBoZWFwX2ZsYWdzKTsKK307CisKKy8qKgorICogc3RydWN0 IGRtYV9oZWFwX2V4cG9ydF9pbmZvIC0gaW5mb3JtYXRpb24gbmVlZGVkIHRvIGV4cG9ydCBhIG5l dyBkbWFidWYgaGVhcAorICogQG5hbWU6CXVzZWQgZm9yIGRlYnVnZ2luZy9kZXZpY2Utbm9kZSBu YW1lCisgKiBAb3BzOglvcHMgc3RydWN0IGZvciB0aGlzIGhlYXAKKyAqIEBwcml2OgloZWFwIGV4 cG9ydGVyIHByaXZhdGUgZGF0YQorICoKKyAqIEluZm9ybWF0aW9uIG5lZWRlZCB0byBleHBvcnQg YSBuZXcgZG1hYnVmIGhlYXAuCisgKi8KK3N0cnVjdCBkbWFfaGVhcF9leHBvcnRfaW5mbyB7CisJ Y29uc3QgY2hhciAqbmFtZTsKKwljb25zdCBzdHJ1Y3QgZG1hX2hlYXBfb3BzICpvcHM7CisJdm9p ZCAqcHJpdjsKK307CisKKy8qKgorICogZG1hX2hlYXBfZ2V0X2RhdGEoKSAtIGdldCBwZXItaGVh cCBkcml2ZXIgZGF0YQorICogQGhlYXA6IERNQS1IZWFwIHRvIHJldHJpZXZlIHByaXZhdGUgZGF0 YSBmb3IKKyAqCisgKiBSZXR1cm5zOgorICogVGhlIHBlci1oZWFwIGRhdGEgZm9yIHRoZSBoZWFw LgorICovCit2b2lkICpkbWFfaGVhcF9nZXRfZGF0YShzdHJ1Y3QgZG1hX2hlYXAgKmhlYXApOwor CisvKioKKyAqIGRtYV9oZWFwX2FkZCAtIGFkZHMgYSBoZWFwIHRvIGRtYWJ1ZiBoZWFwcworICog QGV4cF9pbmZvOgkJaW5mb3JtYXRpb24gbmVlZGVkIHRvIHJlZ2lzdGVyIHRoaXMgaGVhcAorICov CitzdHJ1Y3QgZG1hX2hlYXAgKmRtYV9oZWFwX2FkZChjb25zdCBzdHJ1Y3QgZG1hX2hlYXBfZXhw b3J0X2luZm8gKmV4cF9pbmZvKTsKKworI2VuZGlmIC8qIF9ETUFfSEVBUFNfSCAqLwpkaWZmIC0t Z2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2RtYS1oZWFwLmggYi9pbmNsdWRlL3VhcGkvbGludXgv ZG1hLWhlYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjZjZTVj YzY4ZDIzOAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9kbWEtaGVhcC5o CkBAIC0wLDAgKzEsNTUgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIFdJ VEggTGludXgtc3lzY2FsbC1ub3RlICovCisvKgorICogRE1BQlVGIEhlYXBzIFVzZXJzcGFjZSBB UEkKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlLCBJbmMuCisgKiBDb3B5cmlnaHQg KEMpIDIwMTkgTGluYXJvIEx0ZC4KKyAqLworI2lmbmRlZiBfVUFQSV9MSU5VWF9ETUFCVUZfUE9P TF9ICisjZGVmaW5lIF9VQVBJX0xJTlVYX0RNQUJVRl9QT09MX0gKKworI2luY2x1ZGUgPGxpbnV4 L2lvY3RsLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKworLyoqCisgKiBET0M6IERNQUJV RiBIZWFwcyBVc2Vyc3BhY2UgQVBJCisgKi8KKworLyogVmFsaWQgRkRfRkxBR1MgYXJlIE9fQ0xP RVhFQywgT19SRE9OTFksIE9fV1JPTkxZLCBPX1JEV1IgKi8KKyNkZWZpbmUgRE1BX0hFQVBfVkFM SURfRkRfRkxBR1MgKE9fQ0xPRVhFQyB8IE9fQUNDTU9ERSkKKworLyogQ3VycmVudGx5IG5vIGhl YXAgZmxhZ3MgKi8KKyNkZWZpbmUgRE1BX0hFQVBfVkFMSURfSEVBUF9GTEFHUyAoMCkKKworLyoq CisgKiBzdHJ1Y3QgZG1hX2hlYXBfYWxsb2NhdGlvbl9kYXRhIC0gbWV0YWRhdGEgcGFzc2VkIGZy b20gdXNlcnNwYWNlIGZvcgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGFsbG9jYXRpb25zCisgKiBAbGVuOgkJc2l6ZSBvZiB0aGUgYWxsb2NhdGlvbgorICogQGZkOgkJ CXdpbGwgYmUgcG9wdWxhdGVkIHdpdGggYSBmZCB3aGljaCBwcm92ZGVzIHRoZQorICoJCQloYW5k bGUgdG8gdGhlIGFsbG9jYXRlZCBkbWEtYnVmCisgKiBAZmRfZmxhZ3M6CQlmaWxlIGRlc2NyaXB0 b3IgZmxhZ3MgdXNlZCB3aGVuIGFsbG9jYXRpbmcKKyAqIEBoZWFwX2ZsYWdzOgkJZmxhZ3MgcGFz c2VkIHRvIGhlYXAKKyAqCisgKiBQcm92aWRlZCBieSB1c2Vyc3BhY2UgYXMgYW4gYXJndW1lbnQg dG8gdGhlIGlvY3RsCisgKi8KK3N0cnVjdCBkbWFfaGVhcF9hbGxvY2F0aW9uX2RhdGEgeworCV9f dTY0IGxlbjsKKwlfX3UzMiBmZDsKKwlfX3UzMiBmZF9mbGFnczsKKwlfX3U2NCBoZWFwX2ZsYWdz OworCV9fdTMyIHJlc2VydmVkMDsKKwlfX3UzMiByZXNlcnZlZDE7Cit9OworCisjZGVmaW5lIERN QV9IRUFQX0lPQ19NQUdJQwkJJ0gnCisKKy8qKgorICogRE9DOiBETUFfSEVBUF9JT0NfQUxMT0Mg LSBhbGxvY2F0ZSBtZW1vcnkgZnJvbSBwb29sCisgKgorICogVGFrZXMgYW4gZG1hX2hlYXBfYWxs b2NhdGlvbl9kYXRhIHN0cnVjdCBhbmQgcmV0dXJucyBpdCB3aXRoIHRoZSBmZCBmaWVsZAorICog cG9wdWxhdGVkIHdpdGggdGhlIGRtYWJ1ZiBoYW5kbGUgb2YgdGhlIGFsbG9jYXRpb24uCisgKi8K KyNkZWZpbmUgRE1BX0hFQVBfSU9DX0FMTE9DCV9JT1dSKERNQV9IRUFQX0lPQ19NQUdJQywgMCwg XAorCQkJCSAgICAgIHN0cnVjdCBkbWFfaGVhcF9hbGxvY2F0aW9uX2RhdGEpCisKKyNlbmRpZiAv KiBfVUFQSV9MSU5VWF9ETUFCVUZfUE9PTF9IICovCi0tIAoyLjE3LjEKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QK ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==