From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Stultz Subject: [PATCH v7 2/5] dma-buf: heaps: Add heap helpers Date: Wed, 24 Jul 2019 00:36:53 +0000 Message-ID: <20190724003656.59780-3-john.stultz@linaro.org> References: <20190724003656.59780-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-pf1-x444.google.com (mail-pf1-x444.google.com [IPv6:2607:f8b0:4864:20::444]) by gabe.freedesktop.org (Postfix) with ESMTPS id 976A06E408 for ; Wed, 24 Jul 2019 00:37:07 +0000 (UTC) Received: by mail-pf1-x444.google.com with SMTP id m30so19979348pff.8 for ; Tue, 23 Jul 2019 17:37:07 -0700 (PDT) In-Reply-To: <20190724003656.59780-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 , Christoph Hellwig , dri-devel@lists.freedesktop.org, "Andrew F . Davis" , Hridya Valsaraju , Pratik Patel List-Id: dri-devel@lists.freedesktop.org QWRkIGdlbmVyaWMgaGVscGVyIGRtYWJ1ZiBvcHMgZm9yIGRtYSBoZWFwcywgc28gd2UgY2FuIHJl ZHVjZQp0aGUgYW1vdW50IG9mIGR1cGxpY2F0aXZlIGNvZGUgZm9yIHRoZSBleHBvcnRlZCBkbWFi dWZzLgoKVGhpcyBjb2RlIGlzIGFuIGV2b2x1dGlvbiBvZiB0aGUgQW5kcm9pZCBJT04gaW1wbGVt ZW50YXRpb24sIHNvCnRoYW5rcyB0byBpdHMgb3JpZ2luYWwgYXV0aG9ycyBhbmQgbWFpbnRhaW50 ZXJzOgogIFJlYmVjY2EgU2NodWx0eiBaYXZpbiwgQ29saW4gQ3Jvc3MsIExhdXJhIEFiYm90dCwg YW5kIG90aGVycyEKCkNjOiBMYXVyYSBBYmJvdHQgPGxhYmJvdHRAcmVkaGF0LmNvbT4KQ2M6IEJl bmphbWluIEdhaWduYXJkIDxiZW5qYW1pbi5nYWlnbmFyZEBsaW5hcm8ub3JnPgpDYzogU3VtaXQg U2Vtd2FsIDxzdW1pdC5zZW13YWxAbGluYXJvLm9yZz4KQ2M6IExpYW0gTWFyayA8bG1hcmtAY29k ZWF1cm9yYS5vcmc+CkNjOiBQcmF0aWsgUGF0ZWwgPHByYXRpa3BAY29kZWF1cm9yYS5vcmc+CkNj OiBCcmlhbiBTdGFya2V5IDxCcmlhbi5TdGFya2V5QGFybS5jb20+CkNjOiBWaW5jZW50IERvbm5l Zm9ydCA8VmluY2VudC5Eb25uZWZvcnRAYXJtLmNvbT4KQ2M6IFN1ZGlwdG8gUGF1bCA8U3VkaXB0 by5QYXVsQGFybS5jb20+CkNjOiBBbmRyZXcgRi4gRGF2aXMgPGFmZEB0aS5jb20+CkNjOiBDaHJp c3RvcGggSGVsbHdpZyA8aGNoQGluZnJhZGVhZC5vcmc+CkNjOiBDaGVuYm8gRmVuZyA8ZmVuZ2NA Z29vZ2xlLmNvbT4KQ2M6IEFsaXN0YWlyIFN0cmFjaGFuIDxhc3RyYWNoYW5AZ29vZ2xlLmNvbT4K Q2M6IEhyaWR5YSBWYWxzYXJhanUgPGhyaWR5YUBnb29nbGUuY29tPgpDYzogZHJpLWRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpSZXZpZXdlZC1ieTogQmVuamFtaW4gR2FpZ25hcmQgPGJlbmph bWluLmdhaWduYXJkQGxpbmFyby5vcmc+ClNpZ25lZC1vZmYtYnk6IEpvaG4gU3R1bHR6IDxqb2hu LnN0dWx0ekBsaW5hcm8ub3JnPgotLS0KdjI6CiogUmVtb3ZlZCBjYWNoZSBtYW5hZ2VtZW50IHBl cmZvcm1hbmNlIGhhY2sgdGhhdCBJIGhhZAogIGFjY2lkZW50YWxseSBmb2xkZWQgaW4uCiogUmVt b3ZlZCBzdGF0cyBjb2RlIHRoYXQgd2FzIGluIGhlbHBlcnMKKiBMb3RzIG9mIGNoZWNrcGF0Y2gg Y2xlYW51cHMKdjM6CiogVW5pbmxpbmUgSU5JVF9IRUFQX0hFTFBFUl9CVUZGRVIgKHN1Z2dlc3Rl ZCBieSBDaHJpc3RvcGgpCiogU3dpdGNoIHRvIFdBUk4gb24gYnVmZmVyIGRlc3Ryb3kgZmFpbHVy ZSAoc3VnZ2VzdGVkIGJ5IEJyaWFuKQoqIGJ1ZmZlci0+a21hcF9jbnQgZGVjcmVtZW50aW5nIGNs ZWFudXAgKHN1Z2dlc3RlZCBieSBDaHJpc3RvcGgpCiogRXh0cmEgYnVmZmVyLT52YWRkciBjaGVj a2luZyBpbiBkbWFfaGVhcF9kbWFfYnVmX2ttYXAKICAoc3VnZ2VzdGVkIGJ5IEJyaWFuKQoqIFN3 aXRjaCB0b19oZWxwZXJfYnVmZmVyIGZyb20gbWFjcm8gdG8gaW5saW5lIGZ1bmN0aW9uCiAgKHN1 Z2dlc3RlZCBieSBCZW5qYW1pbikKKiBSZW5hbWUga21hcC0+dm1hcCAoZm9sZGVkIGluIGZyb20g QW5kcmV3KQoqIFVzZSB2bWFwIGZvciB2bWFwcGluZyAtIG5vdCBiZWdpbl9jcHVfYWNjZXNzIChm b2xkZWQgaW4gZnJvbQogIEFuZHJldykKKiBEcm9wIGttYXAgZm9yIG5vdywgYXMgaXRzIG9wdGlv bmFsIChmb2xkZWQgaW4gZnJvbSBBbmRyZXcpCiogRm9sZCBkbWFfaGVhcF9tYXBfdXNlciBpbnRv IHRoZSBzaW5nbGUgY2FsbGVyIChmb2xlZCBpbiBmcm9tCiAgQW5kcmV3KQoqIEZvbGRlZCBpbiBw YXRjaCBmcm9tIEFuZHJldyB0byB0cmFjayBwYWdlIGxpc3QgcGVyIGhlYXAgbm90CiAgc2dsaXN0 LCB3aGljaCBzaW1wbGlmaWVzIHRoZSB0cmFja2luZyBsb2dpYwp2NDoKKiBNb3ZlZCBkbWEtaGVh cC5oIGNoYW5nZSBvdXQgdG8gcHJldmlvdXMgcGF0Y2gKdjY6CiogTWlub3IgY2xlYW51cHMgYW5k IHR5cG8gZml4ZXMgc3VnZ2VzdGVkIGJ5IEJyaWFuCnY3OgoqIFJlbW92ZWQgc3RyYXkgOwoqIE1h a2UgaW5pdF9oZWFwX2hlbHBlcl9idWZmZXIgbG93ZXJjYXNlLCBhcyBzdWdnZXN0ZWQgYnkgQ2hy aXN0b3BoCiogQWRkIGRtYWJ1ZiBleHBvcnQgaGVscGVyIHRvIHJlZHVjZSBib2lsZXJwbGF0ZSBj b2RlCi0tLQogZHJpdmVycy9kbWEtYnVmL01ha2VmaWxlICAgICAgICAgICAgIHwgICAxICsKIGRy aXZlcnMvZG1hLWJ1Zi9oZWFwcy9NYWtlZmlsZSAgICAgICB8ICAgMiArCiBkcml2ZXJzL2RtYS1i dWYvaGVhcHMvaGVhcC1oZWxwZXJzLmMgfCAyNzYgKysrKysrKysrKysrKysrKysrKysrKysrKysr CiBkcml2ZXJzL2RtYS1idWYvaGVhcHMvaGVhcC1oZWxwZXJzLmggfCAgNTggKysrKysrCiA0IGZp bGVzIGNoYW5nZWQsIDMzNyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9kbWEtYnVmL2hlYXBzL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9kbWEt YnVmL2hlYXBzL2hlYXAtaGVscGVycy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9kbWEt YnVmL2hlYXBzL2hlYXAtaGVscGVycy5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL01h a2VmaWxlIGIvZHJpdmVycy9kbWEtYnVmL01ha2VmaWxlCmluZGV4IDFjYjNkZDEwNDgyNS4uZTNl M2RjYTI5ZTQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2RtYS1idWYvTWFrZWZpbGUKKysrIGIvZHJp dmVycy9kbWEtYnVmL01ha2VmaWxlCkBAIC0xLDYgKzEsNyBAQAogIyBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMLTIuMC1vbmx5CiBvYmoteSA6PSBkbWEtYnVmLm8gZG1hLWZlbmNlLm8gZG1h LWZlbmNlLWFycmF5Lm8gZG1hLWZlbmNlLWNoYWluLm8gXAogCSByZXNlcnZhdGlvbi5vIHNlcW5v LWZlbmNlLm8KK29iai0kKENPTkZJR19ETUFCVUZfSEVBUFMpCSs9IGhlYXBzLwogb2JqLSQoQ09O RklHX0RNQUJVRl9IRUFQUykJKz0gZG1hLWhlYXAubwogb2JqLSQoQ09ORklHX1NZTkNfRklMRSkJ CSs9IHN5bmNfZmlsZS5vCiBvYmotJChDT05GSUdfU1dfU1lOQykJCSs9IHN3X3N5bmMubyBzeW5j X2RlYnVnLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9oZWFwcy9NYWtlZmlsZSBiL2Ry aXZlcnMvZG1hLWJ1Zi9oZWFwcy9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLmRlNDk4OTgxMTJkYgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZG1h LWJ1Zi9oZWFwcy9NYWtlZmlsZQpAQCAtMCwwICsxLDIgQEAKKyMgU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjAKK29iai15CQkJCQkrPSBoZWFwLWhlbHBlcnMubwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9kbWEtYnVmL2hlYXBzL2hlYXAtaGVscGVycy5jIGIvZHJpdmVycy9kbWEtYnVmL2hl YXBzL2hlYXAtaGVscGVycy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uZGYxYmQzY2Y3MjYyCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9kbWEtYnVmL2hlYXBz L2hlYXAtaGVscGVycy5jCkBAIC0wLDAgKzEsMjc2IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMAorI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4 L2RtYS1idWYuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnIuaD4KKyNpbmNsdWRlIDxsaW51eC9pZHIu aD4KKyNpbmNsdWRlIDxsaW51eC9saXN0Lmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2lu Y2x1ZGUgPGxpbnV4L3VhY2Nlc3MuaD4KKyNpbmNsdWRlIDx1YXBpL2xpbnV4L2RtYS1oZWFwLmg+ CisKKyNpbmNsdWRlICJoZWFwLWhlbHBlcnMuaCIKKwordm9pZCBpbml0X2hlYXBfaGVscGVyX2J1 ZmZlcihzdHJ1Y3QgaGVhcF9oZWxwZXJfYnVmZmVyICpidWZmZXIsCisJCQkgICAgIHZvaWQgKCpm cmVlKShzdHJ1Y3QgaGVhcF9oZWxwZXJfYnVmZmVyICopKQoreworCWJ1ZmZlci0+cHJpdmF0ZV9m bGFncyA9IDA7CisJYnVmZmVyLT5wcml2X3ZpcnQgPSBOVUxMOworCW11dGV4X2luaXQoJmJ1ZmZl ci0+bG9jayk7CisJYnVmZmVyLT52bWFwX2NudCA9IDA7CisJYnVmZmVyLT52YWRkciA9IE5VTEw7 CisJYnVmZmVyLT5wYWdlY291bnQgPSAwOworCWJ1ZmZlci0+cGFnZXMgPSBOVUxMOworCUlOSVRf TElTVF9IRUFEKCZidWZmZXItPmF0dGFjaG1lbnRzKTsKKwlidWZmZXItPmZyZWUgPSBmcmVlOwor fQorCitzdHJ1Y3QgZG1hX2J1ZiAqaGVhcF9oZWxwZXJfZXhwb3J0X2RtYWJ1ZigKKwkJCQlzdHJ1 Y3QgaGVhcF9oZWxwZXJfYnVmZmVyICpoZWxwZXJfYnVmZmVyLAorCQkJCWludCBmZF9mbGFncykK K3sKKwlERUZJTkVfRE1BX0JVRl9FWFBPUlRfSU5GTyhleHBfaW5mbyk7CisKKwlleHBfaW5mby5v cHMgPSAmaGVhcF9oZWxwZXJfb3BzOworCWV4cF9pbmZvLnNpemUgPSBoZWxwZXJfYnVmZmVyLT5o ZWFwX2J1ZmZlci5zaXplOworCWV4cF9pbmZvLmZsYWdzID0gZmRfZmxhZ3M7CisJZXhwX2luZm8u cHJpdiA9ICZoZWxwZXJfYnVmZmVyLT5oZWFwX2J1ZmZlcjsKKworCXJldHVybiBkbWFfYnVmX2V4 cG9ydCgmZXhwX2luZm8pOworfQorCitzdGF0aWMgdm9pZCAqZG1hX2hlYXBfbWFwX2tlcm5lbChz dHJ1Y3QgaGVhcF9oZWxwZXJfYnVmZmVyICpidWZmZXIpCit7CisJdm9pZCAqdmFkZHI7CisKKwl2 YWRkciA9IHZtYXAoYnVmZmVyLT5wYWdlcywgYnVmZmVyLT5wYWdlY291bnQsIFZNX01BUCwgUEFH RV9LRVJORUwpOworCWlmICghdmFkZHIpCisJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworCisJ cmV0dXJuIHZhZGRyOworfQorCitzdGF0aWMgdm9pZCBkbWFfaGVhcF9idWZmZXJfZGVzdHJveShz dHJ1Y3QgZG1hX2hlYXBfYnVmZmVyICpoZWFwX2J1ZmZlcikKK3sKKwlzdHJ1Y3QgaGVhcF9oZWxw ZXJfYnVmZmVyICpidWZmZXIgPSB0b19oZWxwZXJfYnVmZmVyKGhlYXBfYnVmZmVyKTsKKworCWlm IChidWZmZXItPnZtYXBfY250ID4gMCkgeworCQlXQVJOKCIlczogYnVmZmVyIHN0aWxsIG1hcHBl ZCBpbiB0aGUga2VybmVsXG4iLAorCQkJICAgICBfX2Z1bmNfXyk7CisJCXZ1bm1hcChidWZmZXIt PnZhZGRyKTsKKwl9CisKKwlidWZmZXItPmZyZWUoYnVmZmVyKTsKK30KKworc3RhdGljIHZvaWQg KmRtYV9oZWFwX2J1ZmZlcl92bWFwX2dldChzdHJ1Y3QgZG1hX2hlYXBfYnVmZmVyICpoZWFwX2J1 ZmZlcikKK3sKKwlzdHJ1Y3QgaGVhcF9oZWxwZXJfYnVmZmVyICpidWZmZXIgPSB0b19oZWxwZXJf YnVmZmVyKGhlYXBfYnVmZmVyKTsKKwl2b2lkICp2YWRkcjsKKworCWlmIChidWZmZXItPnZtYXBf Y250KSB7CisJCWJ1ZmZlci0+dm1hcF9jbnQrKzsKKwkJcmV0dXJuIGJ1ZmZlci0+dmFkZHI7CisJ fQorCXZhZGRyID0gZG1hX2hlYXBfbWFwX2tlcm5lbChidWZmZXIpOworCWlmIChXQVJOX09OQ0Uo IXZhZGRyLAorCQkgICAgICAiaGVhcC0+b3BzLT5tYXBfa2VybmVsIHNob3VsZCByZXR1cm4gRVJS X1BUUiBvbiBlcnJvciIpKQorCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKKwlpZiAoSVNfRVJS KHZhZGRyKSkKKwkJcmV0dXJuIHZhZGRyOworCWJ1ZmZlci0+dmFkZHIgPSB2YWRkcjsKKwlidWZm ZXItPnZtYXBfY250Kys7CisJcmV0dXJuIHZhZGRyOworfQorCitzdGF0aWMgdm9pZCBkbWFfaGVh cF9idWZmZXJfdm1hcF9wdXQoc3RydWN0IGRtYV9oZWFwX2J1ZmZlciAqaGVhcF9idWZmZXIpCit7 CisJc3RydWN0IGhlYXBfaGVscGVyX2J1ZmZlciAqYnVmZmVyID0gdG9faGVscGVyX2J1ZmZlciho ZWFwX2J1ZmZlcik7CisKKwlpZiAoIS0tYnVmZmVyLT52bWFwX2NudCkgeworCQl2dW5tYXAoYnVm ZmVyLT52YWRkcik7CisJCWJ1ZmZlci0+dmFkZHIgPSBOVUxMOworCX0KK30KKworc3RydWN0IGRt YV9oZWFwc19hdHRhY2htZW50IHsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0IHNnX3Rh YmxlIHRhYmxlOworCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKK307CisKK3N0YXRpYyBpbnQgZG1h X2hlYXBfYXR0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsCisJCQkgICAgICBzdHJ1Y3QgZG1h X2J1Zl9hdHRhY2htZW50ICphdHRhY2htZW50KQoreworCXN0cnVjdCBkbWFfaGVhcHNfYXR0YWNo bWVudCAqYTsKKwlzdHJ1Y3QgZG1hX2hlYXBfYnVmZmVyICpoZWFwX2J1ZmZlciA9IGRtYWJ1Zi0+ cHJpdjsKKwlzdHJ1Y3QgaGVhcF9oZWxwZXJfYnVmZmVyICpidWZmZXIgPSB0b19oZWxwZXJfYnVm ZmVyKGhlYXBfYnVmZmVyKTsKKwlpbnQgcmV0OworCisJYSA9IGt6YWxsb2Moc2l6ZW9mKCphKSwg R0ZQX0tFUk5FTCk7CisJaWYgKCFhKQorCQlyZXR1cm4gLUVOT01FTTsKKworCXJldCA9IHNnX2Fs bG9jX3RhYmxlX2Zyb21fcGFnZXMoJmEtPnRhYmxlLCBidWZmZXItPnBhZ2VzLAorCQkJCQlidWZm ZXItPnBhZ2Vjb3VudCwgMCwKKwkJCQkJYnVmZmVyLT5wYWdlY291bnQgPDwgUEFHRV9TSElGVCwK KwkJCQkJR0ZQX0tFUk5FTCk7CisJaWYgKHJldCkgeworCQlrZnJlZShhKTsKKwkJcmV0dXJuIHJl dDsKKwl9CisKKwlhLT5kZXYgPSBhdHRhY2htZW50LT5kZXY7CisJSU5JVF9MSVNUX0hFQUQoJmEt Pmxpc3QpOworCisJYXR0YWNobWVudC0+cHJpdiA9IGE7CisKKwltdXRleF9sb2NrKCZidWZmZXIt PmxvY2spOworCWxpc3RfYWRkKCZhLT5saXN0LCAmYnVmZmVyLT5hdHRhY2htZW50cyk7CisJbXV0 ZXhfdW5sb2NrKCZidWZmZXItPmxvY2spOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lk IGRtYV9oZWFwX2RldGFjaChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAorCQkJCXN0cnVjdCBkbWFf YnVmX2F0dGFjaG1lbnQgKmF0dGFjaG1lbnQpCit7CisJc3RydWN0IGRtYV9oZWFwc19hdHRhY2ht ZW50ICphID0gYXR0YWNobWVudC0+cHJpdjsKKwlzdHJ1Y3QgZG1hX2hlYXBfYnVmZmVyICpoZWFw X2J1ZmZlciA9IGRtYWJ1Zi0+cHJpdjsKKwlzdHJ1Y3QgaGVhcF9oZWxwZXJfYnVmZmVyICpidWZm ZXIgPSB0b19oZWxwZXJfYnVmZmVyKGhlYXBfYnVmZmVyKTsKKworCW11dGV4X2xvY2soJmJ1ZmZl ci0+bG9jayk7CisJbGlzdF9kZWwoJmEtPmxpc3QpOworCW11dGV4X3VubG9jaygmYnVmZmVyLT5s b2NrKTsKKworCXNnX2ZyZWVfdGFibGUoJmEtPnRhYmxlKTsKKwlrZnJlZShhKTsKK30KKworc3Rh dGljIHN0cnVjdCBzZ190YWJsZSAqZG1hX2hlYXBfbWFwX2RtYV9idWYoCisJCQkJCXN0cnVjdCBk bWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaG1lbnQsCisJCQkJCWVudW0gZG1hX2RhdGFfZGlyZWN0 aW9uIGRpcmVjdGlvbikKK3sKKwlzdHJ1Y3QgZG1hX2hlYXBzX2F0dGFjaG1lbnQgKmEgPSBhdHRh Y2htZW50LT5wcml2OworCXN0cnVjdCBzZ190YWJsZSAqdGFibGU7CisKKwl0YWJsZSA9ICZhLT50 YWJsZTsKKworCWlmICghZG1hX21hcF9zZyhhdHRhY2htZW50LT5kZXYsIHRhYmxlLT5zZ2wsIHRh YmxlLT5uZW50cywKKwkJCWRpcmVjdGlvbikpCisJCXRhYmxlID0gRVJSX1BUUigtRU5PTUVNKTsK KwlyZXR1cm4gdGFibGU7Cit9CisKK3N0YXRpYyB2b2lkIGRtYV9oZWFwX3VubWFwX2RtYV9idWYo c3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNobWVudCwKKwkJCSAgICAgIHN0cnVjdCBz Z190YWJsZSAqdGFibGUsCisJCQkgICAgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rp b24pCit7CisJZG1hX3VubWFwX3NnKGF0dGFjaG1lbnQtPmRldiwgdGFibGUtPnNnbCwgdGFibGUt Pm5lbnRzLCBkaXJlY3Rpb24pOworfQorCitzdGF0aWMgdm1fZmF1bHRfdCBkbWFfaGVhcF92bV9m YXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKK3sKKwlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZt YSA9IHZtZi0+dm1hOworCXN0cnVjdCBoZWFwX2hlbHBlcl9idWZmZXIgKmJ1ZmZlciA9IHZtYS0+ dm1fcHJpdmF0ZV9kYXRhOworCisJdm1mLT5wYWdlID0gYnVmZmVyLT5wYWdlc1t2bWYtPnBnb2Zm XTsKKwlnZXRfcGFnZSh2bWYtPnBhZ2UpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25z dCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgZG1hX2hlYXBfdm1fb3BzID0geworCS5mYXVs dCA9IGRtYV9oZWFwX3ZtX2ZhdWx0LAorfTsKKworc3RhdGljIGludCBkbWFfaGVhcF9tbWFwKHN0 cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQoreworCXN0 cnVjdCBkbWFfaGVhcF9idWZmZXIgKmhlYXBfYnVmZmVyID0gZG1hYnVmLT5wcml2OworCXN0cnVj dCBoZWFwX2hlbHBlcl9idWZmZXIgKmJ1ZmZlciA9IHRvX2hlbHBlcl9idWZmZXIoaGVhcF9idWZm ZXIpOworCisJaWYgKCh2bWEtPnZtX2ZsYWdzICYgKFZNX1NIQVJFRCB8IFZNX01BWVNIQVJFKSkg PT0gMCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwl2bWEtPnZtX29wcyA9ICZkbWFfaGVhcF92bV9v cHM7CisJdm1hLT52bV9wcml2YXRlX2RhdGEgPSBidWZmZXI7CisKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIHZvaWQgZG1hX2hlYXBfZG1hX2J1Zl9yZWxlYXNlKHN0cnVjdCBkbWFfYnVmICpkbWFi dWYpCit7CisJc3RydWN0IGRtYV9oZWFwX2J1ZmZlciAqYnVmZmVyID0gZG1hYnVmLT5wcml2Owor CisJZG1hX2hlYXBfYnVmZmVyX2Rlc3Ryb3koYnVmZmVyKTsKK30KKworc3RhdGljIGludCBkbWFf aGVhcF9kbWFfYnVmX2JlZ2luX2NwdV9hY2Nlc3Moc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwKKwkJ CQkJZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyZWN0aW9uKQoreworCXN0cnVjdCBkbWFfaGVh cF9idWZmZXIgKmhlYXBfYnVmZmVyID0gZG1hYnVmLT5wcml2OworCXN0cnVjdCBoZWFwX2hlbHBl cl9idWZmZXIgKmJ1ZmZlciA9IHRvX2hlbHBlcl9idWZmZXIoaGVhcF9idWZmZXIpOworCXN0cnVj dCBkbWFfaGVhcHNfYXR0YWNobWVudCAqYTsKKwlpbnQgcmV0ID0gMDsKKworCW11dGV4X2xvY2so JmJ1ZmZlci0+bG9jayk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShhLCAmYnVmZmVyLT5hdHRhY2ht ZW50cywgbGlzdCkgeworCQlkbWFfc3luY19zZ19mb3JfY3B1KGEtPmRldiwgYS0+dGFibGUuc2ds LCBhLT50YWJsZS5uZW50cywKKwkJCQkgICAgZGlyZWN0aW9uKTsKKwl9CisJbXV0ZXhfdW5sb2Nr KCZidWZmZXItPmxvY2spOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBkbWFfaGVh cF9kbWFfYnVmX2VuZF9jcHVfYWNjZXNzKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsCisJCQkJICAg ICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyZWN0aW9uKQoreworCXN0cnVjdCBkbWFfaGVh cF9idWZmZXIgKmhlYXBfYnVmZmVyID0gZG1hYnVmLT5wcml2OworCXN0cnVjdCBoZWFwX2hlbHBl cl9idWZmZXIgKmJ1ZmZlciA9IHRvX2hlbHBlcl9idWZmZXIoaGVhcF9idWZmZXIpOworCXN0cnVj dCBkbWFfaGVhcHNfYXR0YWNobWVudCAqYTsKKworCW11dGV4X2xvY2soJmJ1ZmZlci0+bG9jayk7 CisJbGlzdF9mb3JfZWFjaF9lbnRyeShhLCAmYnVmZmVyLT5hdHRhY2htZW50cywgbGlzdCkgewor CQlkbWFfc3luY19zZ19mb3JfZGV2aWNlKGEtPmRldiwgYS0+dGFibGUuc2dsLCBhLT50YWJsZS5u ZW50cywKKwkJCQkgICAgICAgZGlyZWN0aW9uKTsKKwl9CisJbXV0ZXhfdW5sb2NrKCZidWZmZXIt PmxvY2spOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkICpkbWFfaGVhcF9kbWFfYnVm X3ZtYXAoc3RydWN0IGRtYV9idWYgKmRtYWJ1ZikKK3sKKwlzdHJ1Y3QgZG1hX2hlYXBfYnVmZmVy ICpoZWFwX2J1ZmZlciA9IGRtYWJ1Zi0+cHJpdjsKKwlzdHJ1Y3QgaGVhcF9oZWxwZXJfYnVmZmVy ICpidWZmZXIgPSB0b19oZWxwZXJfYnVmZmVyKGhlYXBfYnVmZmVyKTsKKwl2b2lkICp2YWRkcjsK KworCW11dGV4X2xvY2soJmJ1ZmZlci0+bG9jayk7CisJdmFkZHIgPSBkbWFfaGVhcF9idWZmZXJf dm1hcF9nZXQoaGVhcF9idWZmZXIpOworCW11dGV4X3VubG9jaygmYnVmZmVyLT5sb2NrKTsKKwor CXJldHVybiB2YWRkcjsKK30KKworc3RhdGljIHZvaWQgZG1hX2hlYXBfZG1hX2J1Zl92dW5tYXAo c3RydWN0IGRtYV9idWYgKmRtYWJ1Ziwgdm9pZCAqdmFkZHIpCit7CisJc3RydWN0IGRtYV9oZWFw X2J1ZmZlciAqaGVhcF9idWZmZXIgPSBkbWFidWYtPnByaXY7CisJc3RydWN0IGhlYXBfaGVscGVy X2J1ZmZlciAqYnVmZmVyID0gdG9faGVscGVyX2J1ZmZlcihoZWFwX2J1ZmZlcik7CisKKwltdXRl eF9sb2NrKCZidWZmZXItPmxvY2spOworCWRtYV9oZWFwX2J1ZmZlcl92bWFwX3B1dChoZWFwX2J1 ZmZlcik7CisJbXV0ZXhfdW5sb2NrKCZidWZmZXItPmxvY2spOworfQorCitjb25zdCBzdHJ1Y3Qg ZG1hX2J1Zl9vcHMgaGVhcF9oZWxwZXJfb3BzID0geworCS5tYXBfZG1hX2J1ZiA9IGRtYV9oZWFw X21hcF9kbWFfYnVmLAorCS51bm1hcF9kbWFfYnVmID0gZG1hX2hlYXBfdW5tYXBfZG1hX2J1ZiwK KwkubW1hcCA9IGRtYV9oZWFwX21tYXAsCisJLnJlbGVhc2UgPSBkbWFfaGVhcF9kbWFfYnVmX3Jl bGVhc2UsCisJLmF0dGFjaCA9IGRtYV9oZWFwX2F0dGFjaCwKKwkuZGV0YWNoID0gZG1hX2hlYXBf ZGV0YWNoLAorCS5iZWdpbl9jcHVfYWNjZXNzID0gZG1hX2hlYXBfZG1hX2J1Zl9iZWdpbl9jcHVf YWNjZXNzLAorCS5lbmRfY3B1X2FjY2VzcyA9IGRtYV9oZWFwX2RtYV9idWZfZW5kX2NwdV9hY2Nl c3MsCisJLnZtYXAgPSBkbWFfaGVhcF9kbWFfYnVmX3ZtYXAsCisJLnZ1bm1hcCA9IGRtYV9oZWFw X2RtYV9idWZfdnVubWFwLAorfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9oZWFwcy9o ZWFwLWhlbHBlcnMuaCBiL2RyaXZlcnMvZG1hLWJ1Zi9oZWFwcy9oZWFwLWhlbHBlcnMuaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjc0MWM3ZWMwMTNmNQotLS0gL2Rl di9udWxsCisrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9oZWFwcy9oZWFwLWhlbHBlcnMuaApAQCAtMCww ICsxLDU4IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLworLyoKKyAq IERNQUJVRiBIZWFwcyBoZWxwZXIgY29kZQorICoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n bGUsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxOSBMaW5hcm8gTHRkLgorICovCisKKyNpZm5k ZWYgX0hFQVBfSEVMUEVSU19ICisjZGVmaW5lIF9IRUFQX0hFTFBFUlNfSAorCisjaW5jbHVkZSA8 bGludXgvZG1hLWhlYXAuaD4KKyNpbmNsdWRlIDxsaW51eC9saXN0Lmg+CisKKy8qKgorICogc3Ry dWN0IGRtYV9oZWFwX2J1ZmZlciAtIG1ldGFkYXRhIGZvciBhIHBhcnRpY3VsYXIgYnVmZmVyCisg KiBAaGVhcDoJCWJhY2sgcG9pbnRlciB0byB0aGUgaGVhcCB0aGUgYnVmZmVyIGNhbWUgZnJvbQor ICogQGRtYWJ1ZjoJCWJhY2tpbmcgZG1hLWJ1ZiBmb3IgdGhpcyBidWZmZXIKKyAqIEBzaXplOgkJ c2l6ZSBvZiB0aGUgYnVmZmVyCisgKiBAZmxhZ3M6CQlidWZmZXIgc3BlY2lmaWMgZmxhZ3MKKyAq Lworc3RydWN0IGRtYV9oZWFwX2J1ZmZlciB7CisJc3RydWN0IGRtYV9oZWFwICpoZWFwOworCXN0 cnVjdCBkbWFfYnVmICpkbWFidWY7CisJc2l6ZV90IHNpemU7CisJdW5zaWduZWQgbG9uZyBmbGFn czsKK307CisKK3N0cnVjdCBoZWFwX2hlbHBlcl9idWZmZXIgeworCXN0cnVjdCBkbWFfaGVhcF9i dWZmZXIgaGVhcF9idWZmZXI7CisKKwl1bnNpZ25lZCBsb25nIHByaXZhdGVfZmxhZ3M7CisJdm9p ZCAqcHJpdl92aXJ0OworCXN0cnVjdCBtdXRleCBsb2NrOworCWludCB2bWFwX2NudDsKKwl2b2lk ICp2YWRkcjsKKwlwZ29mZl90IHBhZ2Vjb3VudDsKKwlzdHJ1Y3QgcGFnZSAqKnBhZ2VzOworCXN0 cnVjdCBsaXN0X2hlYWQgYXR0YWNobWVudHM7CisKKwl2b2lkICgqZnJlZSkoc3RydWN0IGhlYXBf aGVscGVyX2J1ZmZlciAqYnVmZmVyKTsKK307CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGhlYXBf aGVscGVyX2J1ZmZlciAqdG9faGVscGVyX2J1ZmZlcigKKwkJCQkJCXN0cnVjdCBkbWFfaGVhcF9i dWZmZXIgKmgpCit7CisJcmV0dXJuIGNvbnRhaW5lcl9vZihoLCBzdHJ1Y3QgaGVhcF9oZWxwZXJf YnVmZmVyLCBoZWFwX2J1ZmZlcik7Cit9CisKK3ZvaWQgaW5pdF9oZWFwX2hlbHBlcl9idWZmZXIo c3RydWN0IGhlYXBfaGVscGVyX2J1ZmZlciAqYnVmZmVyLAorCQkJCSB2b2lkICgqZnJlZSkoc3Ry dWN0IGhlYXBfaGVscGVyX2J1ZmZlciAqKSk7CitzdHJ1Y3QgZG1hX2J1ZiAqaGVhcF9oZWxwZXJf ZXhwb3J0X2RtYWJ1ZigKKwkJCQlzdHJ1Y3QgaGVhcF9oZWxwZXJfYnVmZmVyICpoZWxwZXJfYnVm ZmVyLAorCQkJCWludCBmZF9mbGFncyk7CitleHRlcm4gY29uc3Qgc3RydWN0IGRtYV9idWZfb3Bz IGhlYXBfaGVscGVyX29wczsKKworCisjZW5kaWYgLyogX0hFQVBfSEVMUEVSU19IICovCi0tIAoy LjE3LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==