From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.5 required=3.0 tests=BAYES_00, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1BB48C55178 for ; Thu, 29 Oct 2020 08:13:35 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B93F52071A for ; Thu, 29 Oct 2020 08:13:34 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B93F52071A Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=sina.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 5F6406E8A6; Thu, 29 Oct 2020 08:13:02 +0000 (UTC) Received: from mail3-166.sinamail.sina.com.cn (mail3-166.sinamail.sina.com.cn [202.108.3.166]) by gabe.freedesktop.org (Postfix) with SMTP id E18406E821 for ; Thu, 29 Oct 2020 07:10:50 +0000 (UTC) Received: from unknown (HELO localhost.localdomain)([103.193.190.174]) by sina.com with ESMTP id 5F9A6AF60001CFCD; Thu, 29 Oct 2020 15:10:47 +0800 (CST) X-Sender: hdanton@sina.com X-Auth-ID: hdanton@sina.com X-SMAIL-MID: 65442054919325 From: Hillf Danton To: John Stultz Subject: Re: [PATCH v4 7/7] dma-buf: system_heap: Add a system-uncached heap re-using the system heap Date: Thu, 29 Oct 2020 15:10:37 +0800 Message-Id: <20201029071037.2913-1-hdanton@sina.com> In-Reply-To: <20201029001624.17513-8-john.stultz@linaro.org> References: <20201029001624.17513-1-john.stultz@linaro.org> MIME-Version: 1.0 X-Mailman-Approved-At: Thu, 29 Oct 2020 08:12:48 +0000 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: James Jones , Robin Murphy , Liam Mark , lkml , Christoph Hellwig , dri-devel@lists.freedesktop.org, Ezequiel Garcia , linux-media@vger.kernel.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" T24gVGh1LCAyOSBPY3QgMjAyMCAwMDoxNjoyNCArMDAwMCBKb2huIFN0dWx0eiB3cm90ZToKPiAK PiBUaGlzIGFkZHMgYSBoZWFwIHRoYXQgYWxsb2NhdGVzIG5vbi1jb250aWd1b3VzIGJ1ZmZlcnMg dGhhdCBhcmUKPiBtYXJrZWQgYXMgd3JpdGVjb21iaW5lZCwgc28gdGhleSBhcmUgbm90IGNhY2hl ZCBieSB0aGUgQ1BVLgo+IAo+IFRoaXMgaXMgdXNlZnVsLCBhcyBtb3N0IGdyYXBoaWNzIGJ1ZmZl cnMgYXJlIHVzdWFsbHkgbm90IHRvdWNoZWQKPiBieSB0aGUgQ1BVIG9yIG9ubHkgd3JpdHRlbiBp bnRvIG9uY2UgYnkgdGhlIENQVS4gU28gd2hlbiBtYXBwaW5nCj4gdGhlIGJ1ZmZlciBvdmVyIGFu ZCBvdmVyIGJldHdlZW4gZGV2aWNlcywgd2UgY2FuIHNraXAgdGhlIENQVQo+IHN5bmNpbmcsIHdo aWNoIHNhdmVzIGEgbG90IG9mIGNhY2hlIG1hbmFnZW1lbnQgb3ZlcmhlYWQsIGdyZWF0bHkKPiBp bXByb3ZpbmcgcGVyZm9ybWFuY2UuCj4gCj4gRm9yIGZvbGsgdXNpbmcgSU9OLCB0aGVyZSB3YXMg YSBJT05fRkxBR19DQUNIRUQgZmxhZywgd2hpY2gKPiBzaWduYWxlZCBpZiB0aGUgcmV0dXJuZWQg YnVmZmVyIHNob3VsZCBiZSBDUFUgY2FjaGVhYmxlIG9yIG5vdC4KPiBXaXRoIERNQS1CVUYgaGVh cHMsIHdlIGRvIG5vdCB5ZXQgaGF2ZSBzdWNoIGEgZmxhZywgYW5kIGJ5IGRlZmF1bHQKPiB0aGUg Y3VycmVudCBoZWFwcyAoc3lzdGVtIGFuZCBjbWEpIHByb2R1Y2UgQ1BVIGNhY2hhYmxlIGJ1ZmZl cnMuCj4gU28gZm9yIGZvbGtzIHRyYW5zaXRpb25pbmcgZnJvbSBJT04gdG8gRE1BLUJVRiBIZWFw cywgdGhpcyBmaWxscwo+IGluIHNvbWUgb2YgdGhhdCBtaXNzaW5nIGZ1bmN0aW9uYWxpdHkuCj4g Cj4gVGhlcmUgaGFzIGJlZW4gYSBzdWdnZXN0aW9uIHRvIG1ha2UgdGhpcyBmdW5jdGlvbmFsaXR5 IGEgZmxhZwo+IChETUFIRUFQX0ZMQUdfVU5DQUNIRUQ/KSBvbiB0aGUgc3lzdGVtIGhlYXAsIHNp bWlsYXIgdG8gaG93Cj4gSU9OIHVzZWQgdGhlIElPTl9GTEFHX0NBQ0hFRC4gQnV0IEkgd2FudCB0 byBtYWtlIHN1cmUgYW4KPiBfVU5DQUNIRUQgZmxhZyB3b3VsZCB0cnVlbHkgYmUgYSBnZW5lcmlj IGF0dHJpYnV0ZSBhY3Jvc3MgYWxsCj4gaGVhcHMuIFNvIGZhciB0aGF0IGhhcyBiZWVuIHVuY2xl YXIsIHNvIGhhdmluZyBpdCBhcyBhIHNlcGFyYXRlCj4gaGVhcCBzZWVtZXMgYmV0dGVyIGZvciBu b3cuIChCdXQgSSdtIG9wZW4gdG8gZGlzY3Vzc2lvbiBvbiB0aGlzCj4gcG9pbnQhKQo+IAo+IFRo aXMgaXMgYSByZXdvcmsgb2YgZWFybGllciBlZmZvcnRzIHRvIGFkZCBhIHVuY2FjaGVkIHN5c3Rl bSBoZWFwLAo+IGRvbmUgdXRpbGl6aW5nIHRoZSBleGlzaXRuZyBzeXN0ZW0gaGVhcCwgYWRkaW5n IGp1c3QgYSBiaXQgb2YKPiBsb2dpYyB0byBoYW5kbGUgdGhlIHVuY2FjaGVkIGNhc2UuCj4gCj4g RmVlZGJhY2sgd291bGQgYmUgdmVyeSB3ZWxjb21lIQo+IAo+IE1hbnkgdGhhbmtzIHRvIExpYW0g TWFyayBmb3IgaGlzIGhlbHAgdG8gZ2V0IHRoaXMgd29ya2luZy4KPiAKPiBQZW5kaW5nIG9wZW5z b3VyY2UgdXNlcnMgb2YgdGhpcyBjb2RlIGluY2x1ZGU6Cj4gKiBBT1NQIEhpS2V5OTYwIGdyYWxs b2M6Cj4gICAtIGh0dHBzOi8vYW5kcm9pZC1yZXZpZXcuZ29vZ2xlc291cmNlLmNvbS9jL2Rldmlj ZS9saW5hcm8vaGlrZXkvKy8xMzk5NTE5Cj4gICAtIFZpc2libHkgaW1wcm92ZXMgcGVyZm9ybWFu Y2Ugb3ZlciB0aGUgc3lzdGVtIGhlYXAKPiAqIEFPU1AgQ29kZWMyIChwb3NzaWJseSwgbmVlZHMg bW9yZSByZXZpZXcpOgo+ICAgLSBodHRwczovL2FuZHJvaWQtcmV2aWV3Lmdvb2dsZXNvdXJjZS5j b20vYy9wbGF0Zm9ybS9mcmFtZXdvcmtzL2F2LysvMTM2MDY0MC8xNy9tZWRpYS9jb2RlYzIvdm5k ay9DMkRtYUJ1ZkFsbG9jYXRvci5jcHAjMzI1Cj4gCj4gQ2M6IFN1bWl0IFNlbXdhbCA8c3VtaXQu c2Vtd2FsQGxpbmFyby5vcmc+Cj4gQ2M6IExpYW0gTWFyayA8bG1hcmtAY29kZWF1cm9yYS5vcmc+ Cj4gQ2M6IExhdXJhIEFiYm90dCA8bGFiYm90dEBrZXJuZWwub3JnPgo+IENjOiBCcmlhbiBTdGFy a2V5IDxCcmlhbi5TdGFya2V5QGFybS5jb20+Cj4gQ2M6IEhyaWR5YSBWYWxzYXJhanUgPGhyaWR5 YUBnb29nbGUuY29tPgo+IENjOiBTdXJlbiBCYWdoZGFzYXJ5YW4gPHN1cmVuYkBnb29nbGUuY29t Pgo+IENjOiBTYW5kZWVwIFBhdGlsIDxzc3BhdGlsQGdvb2dsZS5jb20+Cj4gQ2M6IERhbmllbCBN ZW50eiA8ZGFuaWVsbWVudHpAZ29vZ2xlLmNvbT4KPiBDYzogQ2hyaXMgR29sZHN3b3J0aHkgPGNn b2xkc3dvQGNvZGVhdXJvcmEub3JnPgo+IENjOiDDmHJqYW4gRWlkZSA8b3JqYW4uZWlkZUBhcm0u Y29tPgo+IENjOiBSb2JpbiBNdXJwaHkgPHJvYmluLm11cnBoeUBhcm0uY29tPgo+IENjOiBFemVx dWllbCBHYXJjaWEgPGV6ZXF1aWVsQGNvbGxhYm9yYS5jb20+Cj4gQ2M6IFNpbW9uIFNlciA8Y29u dGFjdEBlbWVyc2lvbi5mcj4KPiBDYzogSmFtZXMgSm9uZXMgPGpham9uZXNAbnZpZGlhLmNvbT4K PiBDYzogbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCj4gQ2M6IGRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKPiBTaWduZWQtb2ZmLWJ5OiBKb2huIFN0dWx0eiA8am9obi5zdHVsdHpA bGluYXJvLm9yZz4KPiAtLS0KPiB2NDoKPiAqIE1ha2Ugc3lzX3VuY2FjaGVkX2hlYXAgc3RhdGlj LCBhcwo+ICAgICBSZXBvcnRlZC1ieToga2VybmVsIHRlc3Qgcm9ib3QgPGxrcEBpbnRlbC5jb20+ Cj4gKiBGaXggd3JvbmcgcmV0dXJuIHZhbHVlLCBjYXVnaHQgYnkgc21hdGNoCj4gICAgIFJlcG9y dGVkLWJ5OiBrZXJuZWwgdGVzdCByb2JvdCA8bGtwQGludGVsLmNvbT4KPiAgICAgUmVwb3J0ZWQt Ynk6IERhbiBDYXJwZW50ZXIgPGRhbi5jYXJwZW50ZXJAb3JhY2xlLmNvbT4KPiAqIEVuc3VyZSB3 ZSBjYWxsIGZsdXNoL2ludmFsaWRhdGVfa2VybmVsX3ZtYXBfcmFuZ2UoKSBpbiB0aGUKPiAgIHVu Y2FjaGVkIGNhc2VzIHRvIHRyeSB0byBhZGRyZXNzIGZlZWRiYWNrIGFib3V0IFZJVlQgY2FjaGVz Cj4gICBmcm9tIENocmlzdG9waAo+ICogUmVvcmRlciBhIGZldyBsaW5lcyBhcyBzdWdnZXN0ZWQg YnkgQnJpYW5TCj4gKiBBdm9pZCBob2xkaW5nIHRoZSBpbml0aWFsIG1hcHBpbmcgZm9yIHRoZSBs aWZldGltZSBvZiB0aGUgYnVmZmVyCj4gICBhcyBzdWdnZXN0ZWQgYnkgQnJpYW5TCj4gKiBGaXgg YSB1bmxpa2VseSByYWNlIGJldHdlZW4gYWxsb2NhdGUgYW5kIHVwZGF0aW5nIHRoZSBkbWFfbWFz awo+ICAgdGhhdCBCcmlhblMgbm90aWNlZC4KPiAtLS0KPiAgZHJpdmVycy9kbWEtYnVmL2hlYXBz L3N5c3RlbV9oZWFwLmMgfCAxMTEgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQo+ICAxIGZp bGUgY2hhbmdlZCwgOTUgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9oZWFwcy9zeXN0ZW1faGVhcC5jIGIvZHJpdmVycy9kbWEt YnVmL2hlYXBzL3N5c3RlbV9oZWFwLmMKPiBpbmRleCBlZjRiMmMxMDMyZGYuLmEzMjhjNzYyNDlk MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2RtYS1idWYvaGVhcHMvc3lzdGVtX2hlYXAuYwo+ICsr KyBiL2RyaXZlcnMvZG1hLWJ1Zi9oZWFwcy9zeXN0ZW1faGVhcC5jCj4gQEAgLTIyLDYgKzIyLDcg QEAKPiAgI2luY2x1ZGUgPGxpbnV4L3ZtYWxsb2MuaD4KPiAgCj4gIHN0YXRpYyBzdHJ1Y3QgZG1h X2hlYXAgKnN5c19oZWFwOwo+ICtzdGF0aWMgc3RydWN0IGRtYV9oZWFwICpzeXNfdW5jYWNoZWRf aGVhcDsKPiAgCj4gIHN0cnVjdCBzeXN0ZW1faGVhcF9idWZmZXIgewo+ICAJc3RydWN0IGRtYV9o ZWFwICpoZWFwOwo+IEBAIC0zMSw2ICszMiw4IEBAIHN0cnVjdCBzeXN0ZW1faGVhcF9idWZmZXIg ewo+ICAJc3RydWN0IHNnX3RhYmxlIHNnX3RhYmxlOwo+ICAJaW50IHZtYXBfY250Owo+ICAJdm9p ZCAqdmFkZHI7Cj4gKwo+ICsJYm9vbCB1bmNhY2hlZDsKPiAgfTsKPiAgCj4gIHN0cnVjdCBkbWFf aGVhcF9hdHRhY2htZW50IHsKPiBAQCAtMzgsNiArNDEsOCBAQCBzdHJ1Y3QgZG1hX2hlYXBfYXR0 YWNobWVudCB7Cj4gIAlzdHJ1Y3Qgc2dfdGFibGUgKnRhYmxlOwo+ICAJc3RydWN0IGxpc3RfaGVh ZCBsaXN0Owo+ICAJYm9vbCBtYXBwZWQ7Cj4gKwo+ICsJYm9vbCB1bmNhY2hlZDsKPiAgfTsKPiAg Cj4gICNkZWZpbmUgSElHSF9PUkRFUl9HRlAgICgoKEdGUF9ISUdIVVNFUiB8IF9fR0ZQX1pFUk8g fCBfX0dGUF9OT1dBUk4gXAo+IEBAIC05NCw3ICs5OSw3IEBAIHN0YXRpYyBpbnQgc3lzdGVtX2hl YXBfYXR0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsCj4gIAlhLT5kZXYgPSBhdHRhY2htZW50 LT5kZXY7Cj4gIAlJTklUX0xJU1RfSEVBRCgmYS0+bGlzdCk7Cj4gIAlhLT5tYXBwZWQgPSBmYWxz ZTsKPiAtCj4gKwlhLT51bmNhY2hlZCA9IGJ1ZmZlci0+dW5jYWNoZWQ7Cj4gIAlhdHRhY2htZW50 LT5wcml2ID0gYTsKPiAgCj4gIAltdXRleF9sb2NrKCZidWZmZXItPmxvY2spOwo+IEBAIC0xMjQs OSArMTI5LDEzIEBAIHN0YXRpYyBzdHJ1Y3Qgc2dfdGFibGUgKnN5c3RlbV9oZWFwX21hcF9kbWFf YnVmKHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjCj4gIHsKPiAgCXN0cnVjdCBkbWFf aGVhcF9hdHRhY2htZW50ICphID0gYXR0YWNobWVudC0+cHJpdjsKPiAgCXN0cnVjdCBzZ190YWJs ZSAqdGFibGUgPSBhLT50YWJsZTsKPiArCWludCBhdHRyID0gMDsKPiAgCWludCByZXQ7Cj4gIAo+ IC0JcmV0ID0gZG1hX21hcF9zZ3RhYmxlKGF0dGFjaG1lbnQtPmRldiwgdGFibGUsIGRpcmVjdGlv biwgMCk7Cj4gKwlpZiAoYS0+dW5jYWNoZWQpCj4gKwkJYXR0ciA9IERNQV9BVFRSX1NLSVBfQ1BV X1NZTkM7Cj4gKwo+ICsJcmV0ID0gZG1hX21hcF9zZ3RhYmxlKGF0dGFjaG1lbnQtPmRldiwgdGFi bGUsIGRpcmVjdGlvbiwgYXR0cik7Cj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiBFUlJfUFRSKHJl dCk7Cj4gIAo+IEBAIC0xMzksOSArMTQ4LDEyIEBAIHN0YXRpYyB2b2lkIHN5c3RlbV9oZWFwX3Vu bWFwX2RtYV9idWYoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNobWVudCwKPiAgCQkJ CSAgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcmVjdGlvbikKPiAgewo+ICAJc3RydWN0 IGRtYV9oZWFwX2F0dGFjaG1lbnQgKmEgPSBhdHRhY2htZW50LT5wcml2Owo+ICsJaW50IGF0dHIg PSAwOwo+ICAKPiArCWlmIChhLT51bmNhY2hlZCkKPiArCQlhdHRyID0gRE1BX0FUVFJfU0tJUF9D UFVfU1lOQzsKPiAgCWEtPm1hcHBlZCA9IGZhbHNlOwo+IC0JZG1hX3VubWFwX3NndGFibGUoYXR0 YWNobWVudC0+ZGV2LCB0YWJsZSwgZGlyZWN0aW9uLCAwKTsKPiArCWRtYV91bm1hcF9zZ3RhYmxl KGF0dGFjaG1lbnQtPmRldiwgdGFibGUsIGRpcmVjdGlvbiwgYXR0cik7Cj4gIH0KPiAgCj4gIHN0 YXRpYyBpbnQgc3lzdGVtX2hlYXBfZG1hX2J1Zl9iZWdpbl9jcHVfYWNjZXNzKHN0cnVjdCBkbWFf YnVmICpkbWFidWYsCj4gQEAgLTE1NSwxMCArMTY3LDEyIEBAIHN0YXRpYyBpbnQgc3lzdGVtX2hl YXBfZG1hX2J1Zl9iZWdpbl9jcHVfYWNjZXNzKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsCj4gIAlp ZiAoYnVmZmVyLT52bWFwX2NudCkKPiAgCQlpbnZhbGlkYXRlX2tlcm5lbF92bWFwX3JhbmdlKGJ1 ZmZlci0+dmFkZHIsIGJ1ZmZlci0+bGVuKTsKPiAgCj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGEs ICZidWZmZXItPmF0dGFjaG1lbnRzLCBsaXN0KSB7Cj4gLQkJaWYgKCFhLT5tYXBwZWQpCj4gLQkJ CWNvbnRpbnVlOwo+IC0JCWRtYV9zeW5jX3NndGFibGVfZm9yX2NwdShhLT5kZXYsIGEtPnRhYmxl LCBkaXJlY3Rpb24pOwo+ICsJaWYgKCFidWZmZXItPnVuY2FjaGVkKSB7Cj4gKwkJbGlzdF9mb3Jf ZWFjaF9lbnRyeShhLCAmYnVmZmVyLT5hdHRhY2htZW50cywgbGlzdCkgewo+ICsJCQlpZiAoIWEt Pm1hcHBlZCkKPiArCQkJCWNvbnRpbnVlOwo+ICsJCQlkbWFfc3luY19zZ3RhYmxlX2Zvcl9jcHUo YS0+ZGV2LCBhLT50YWJsZSwgZGlyZWN0aW9uKTsKPiArCQl9Cj4gIAl9Cj4gIAltdXRleF91bmxv Y2soJmJ1ZmZlci0+bG9jayk7Cj4gIAo+IEBAIC0xNzYsMTAgKzE5MCwxMiBAQCBzdGF0aWMgaW50 IHN5c3RlbV9oZWFwX2RtYV9idWZfZW5kX2NwdV9hY2Nlc3Moc3RydWN0IGRtYV9idWYgKmRtYWJ1 ZiwKPiAgCWlmIChidWZmZXItPnZtYXBfY250KQo+ICAJCWZsdXNoX2tlcm5lbF92bWFwX3Jhbmdl KGJ1ZmZlci0+dmFkZHIsIGJ1ZmZlci0+bGVuKTsKPiAgCj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5 KGEsICZidWZmZXItPmF0dGFjaG1lbnRzLCBsaXN0KSB7Cj4gLQkJaWYgKCFhLT5tYXBwZWQpCj4g LQkJCWNvbnRpbnVlOwo+IC0JCWRtYV9zeW5jX3NndGFibGVfZm9yX2RldmljZShhLT5kZXYsIGEt PnRhYmxlLCBkaXJlY3Rpb24pOwo+ICsJaWYgKCFidWZmZXItPnVuY2FjaGVkKSB7Cj4gKwkJbGlz dF9mb3JfZWFjaF9lbnRyeShhLCAmYnVmZmVyLT5hdHRhY2htZW50cywgbGlzdCkgewo+ICsJCQlp ZiAoIWEtPm1hcHBlZCkKPiArCQkJCWNvbnRpbnVlOwo+ICsJCQlkbWFfc3luY19zZ3RhYmxlX2Zv cl9kZXZpY2UoYS0+ZGV2LCBhLT50YWJsZSwgZGlyZWN0aW9uKTsKPiArCQl9Cj4gIAl9Cj4gIAlt dXRleF91bmxvY2soJmJ1ZmZlci0+bG9jayk7Cj4gIAo+IEBAIC0xOTQsNiArMjEwLDkgQEAgc3Rh dGljIGludCBzeXN0ZW1faGVhcF9tbWFwKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0cnVjdCB2 bV9hcmVhX3N0cnVjdCAqdm1hKQo+ICAJc3RydWN0IHNnX3BhZ2VfaXRlciBwaXRlcjsKPiAgCWlu dCByZXQ7Cj4gIAo+ICsJaWYgKGJ1ZmZlci0+dW5jYWNoZWQpCj4gKwkJdm1hLT52bV9wYWdlX3By b3QgPSBwZ3Byb3Rfd3JpdGVjb21iaW5lKHZtYS0+dm1fcGFnZV9wcm90KTsKPiArCgpXb25kZXIg d2h5IHlvdSB0dXJuIGJhY2sgdG8gZG1hX21tYXBfd2MoKSBhbmQgZnJpZW5kcz8KCj4gIAlmb3Jf ZWFjaF9zZ3RhYmxlX3BhZ2UodGFibGUsICZwaXRlciwgdm1hLT52bV9wZ29mZikgewo+ICAJCXN0 cnVjdCBwYWdlICpwYWdlID0gc2dfcGFnZV9pdGVyX3BhZ2UoJnBpdGVyKTsKPiAgCj4gQEAgLTIx NSwxNyArMjM0LDIxIEBAIHN0YXRpYyB2b2lkICpzeXN0ZW1faGVhcF9kb192bWFwKHN0cnVjdCBz eXN0ZW1faGVhcF9idWZmZXIgKmJ1ZmZlcikKPiAgCXN0cnVjdCBwYWdlICoqcGFnZXMgPSB2bWFs bG9jKHNpemVvZihzdHJ1Y3QgcGFnZSAqKSAqIG5wYWdlcyk7Cj4gIAlzdHJ1Y3QgcGFnZSAqKnRt cCA9IHBhZ2VzOwo+ICAJc3RydWN0IHNnX3BhZ2VfaXRlciBwaXRlcjsKPiArCXBncHJvdF90IHBn cHJvdCA9IFBBR0VfS0VSTkVMOwo+ICAJdm9pZCAqdmFkZHI7Cj4gIAo+ICAJaWYgKCFwYWdlcykK PiAgCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAgCj4gKwlpZiAoYnVmZmVyLT51bmNhY2hl ZCkKPiArCQlwZ3Byb3QgPSBwZ3Byb3Rfd3JpdGVjb21iaW5lKFBBR0VfS0VSTkVMKTsKPiArCj4g IAlmb3JfZWFjaF9zZ3RhYmxlX3BhZ2UodGFibGUsICZwaXRlciwgMCkgewo+ICAJCVdBUk5fT04o dG1wIC0gcGFnZXMgPj0gbnBhZ2VzKTsKPiAgCQkqdG1wKysgPSBzZ19wYWdlX2l0ZXJfcGFnZSgm cGl0ZXIpOwo+ICAJfQo+ICAKPiAtCXZhZGRyID0gdm1hcChwYWdlcywgbnBhZ2VzLCBWTV9NQVAs IFBBR0VfS0VSTkVMKTsKPiArCXZhZGRyID0gdm1hcChwYWdlcywgbnBhZ2VzLCBWTV9NQVAsIHBn cHJvdCk7Cj4gIAl2ZnJlZShwYWdlcyk7Cj4gIAo+ICAJaWYgKCF2YWRkcikKPiBAQCAtMzIwLDEw ICszNDMsMTEgQEAgc3RhdGljIHN0cnVjdCBwYWdlICphbGxvY19sYXJnZXN0X2F2YWlsYWJsZSh1 bnNpZ25lZCBsb25nIHNpemUsCj4gIAlyZXR1cm4gTlVMTDsKPiAgfQo+ICAKPiAtc3RhdGljIGlu dCBzeXN0ZW1faGVhcF9hbGxvY2F0ZShzdHJ1Y3QgZG1hX2hlYXAgKmhlYXAsCj4gLQkJCQl1bnNp Z25lZCBsb25nIGxlbiwKPiAtCQkJCXVuc2lnbmVkIGxvbmcgZmRfZmxhZ3MsCj4gLQkJCQl1bnNp Z25lZCBsb25nIGhlYXBfZmxhZ3MpCj4gK3N0YXRpYyBpbnQgc3lzdGVtX2hlYXBfZG9fYWxsb2Nh dGUoc3RydWN0IGRtYV9oZWFwICpoZWFwLAo+ICsJCQkJICAgdW5zaWduZWQgbG9uZyBsZW4sCj4g KwkJCQkgICB1bnNpZ25lZCBsb25nIGZkX2ZsYWdzLAo+ICsJCQkJICAgdW5zaWduZWQgbG9uZyBo ZWFwX2ZsYWdzLAo+ICsJCQkJICAgYm9vbCB1bmNhY2hlZCkKPiAgewo+ICAJc3RydWN0IHN5c3Rl bV9oZWFwX2J1ZmZlciAqYnVmZmVyOwo+ICAJREVGSU5FX0RNQV9CVUZfRVhQT1JUX0lORk8oZXhw X2luZm8pOwo+IEBAIC0zNDQsNiArMzY4LDcgQEAgc3RhdGljIGludCBzeXN0ZW1faGVhcF9hbGxv Y2F0ZShzdHJ1Y3QgZG1hX2hlYXAgKmhlYXAsCj4gIAltdXRleF9pbml0KCZidWZmZXItPmxvY2sp Owo+ICAJYnVmZmVyLT5oZWFwID0gaGVhcDsKPiAgCWJ1ZmZlci0+bGVuID0gbGVuOwo+ICsJYnVm ZmVyLT51bmNhY2hlZCA9IHVuY2FjaGVkOwo+ICAKPiAgCUlOSVRfTElTVF9IRUFEKCZwYWdlcyk7 Cj4gIAlpID0gMDsKPiBAQCAtMzkzLDYgKzQxOCwxOCBAQCBzdGF0aWMgaW50IHN5c3RlbV9oZWFw X2FsbG9jYXRlKHN0cnVjdCBkbWFfaGVhcCAqaGVhcCwKPiAgCQkvKiBqdXN0IHJldHVybiwgYXMg cHV0IHdpbGwgY2FsbCByZWxlYXNlIGFuZCB0aGF0IHdpbGwgZnJlZSAqLwo+ICAJCXJldHVybiBy ZXQ7Cj4gIAl9Cj4gKwo+ICsJLyoKPiArCSAqIEZvciB1bmNhY2hlZCBidWZmZXJzLCB3ZSBuZWVk IHRvIGluaXRpYWxseSBmbHVzaCBjcHUgY2FjaGUsIHNpbmNlCj4gKwkgKiB0aGUgX19HRlBfWkVS TyBvbiB0aGUgYWxsb2NhdGlvbiBtZWFucyB0aGUgemVyb2luZyB3YXMgZG9uZSBieSB0aGUKPiAr CSAqIGNwdSBhbmQgdGh1cyBpdCBpcyBsaWtlbHkgY2FjaGVkLiBNYXAgKGFuZCBpbXBsaWNpdGx5 IGZsdXNoKSBhbmQKPiArCSAqIHVubWFwIGl0IG5vdyBzbyB3ZSBkb24ndCBnZXQgY29ycnVwdGlv biBsYXRlciBvbi4KPiArCSAqLwo+ICsJaWYgKGJ1ZmZlci0+dW5jYWNoZWQpIHsKPiArCQlkbWFf bWFwX3NndGFibGUoZG1hX2hlYXBfZ2V0X2RldihoZWFwKSwgdGFibGUsIERNQV9CSURJUkVDVElP TkFMLCAwKTsKPiArCQlkbWFfdW5tYXBfc2d0YWJsZShkbWFfaGVhcF9nZXRfZGV2KGhlYXApLCB0 YWJsZSwgRE1BX0JJRElSRUNUSU9OQUwsIDApOwo+ICsJfQo+ICsKPiAgCXJldHVybiByZXQ7Cj4g IAo+ICBmcmVlX3BhZ2VzOgo+IEBAIC00MTAsMTAgKzQ0Nyw0MCBAQCBzdGF0aWMgaW50IHN5c3Rl bV9oZWFwX2FsbG9jYXRlKHN0cnVjdCBkbWFfaGVhcCAqaGVhcCwKPiAgCXJldHVybiByZXQ7Cj4g IH0KPiAgCj4gK3N0YXRpYyBpbnQgc3lzdGVtX2hlYXBfYWxsb2NhdGUoc3RydWN0IGRtYV9oZWFw ICpoZWFwLAo+ICsJCQkJdW5zaWduZWQgbG9uZyBsZW4sCj4gKwkJCQl1bnNpZ25lZCBsb25nIGZk X2ZsYWdzLAo+ICsJCQkJdW5zaWduZWQgbG9uZyBoZWFwX2ZsYWdzKQo+ICt7Cj4gKwlyZXR1cm4g c3lzdGVtX2hlYXBfZG9fYWxsb2NhdGUoaGVhcCwgbGVuLCBmZF9mbGFncywgaGVhcF9mbGFncywg ZmFsc2UpOwo+ICt9Cj4gKwo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGRtYV9oZWFwX29wcyBzeXN0 ZW1faGVhcF9vcHMgPSB7Cj4gIAkuYWxsb2NhdGUgPSBzeXN0ZW1faGVhcF9hbGxvY2F0ZSwKPiAg fTsKPiAgCj4gK3N0YXRpYyBpbnQgc3lzdGVtX3VuY2FjaGVkX2hlYXBfYWxsb2NhdGUoc3RydWN0 IGRtYV9oZWFwICpoZWFwLAo+ICsJCQkJCSB1bnNpZ25lZCBsb25nIGxlbiwKPiArCQkJCQkgdW5z aWduZWQgbG9uZyBmZF9mbGFncywKPiArCQkJCQkgdW5zaWduZWQgbG9uZyBoZWFwX2ZsYWdzKQo+ ICt7Cj4gKwlyZXR1cm4gc3lzdGVtX2hlYXBfZG9fYWxsb2NhdGUoaGVhcCwgbGVuLCBmZF9mbGFn cywgaGVhcF9mbGFncywgdHJ1ZSk7Cj4gK30KPiArCj4gKy8qIER1bW15IGZ1bmN0aW9uIHRvIGJl IHVzZWQgdW50aWwgd2UgY2FuIGNhbGwgY29lcmNlX21hc2tfYW5kX2NvaGVyZW50ICovCj4gK3N0 YXRpYyBpbnQgc3lzdGVtX3VuY2FjaGVkX2hlYXBfbm90X2luaXRpYWxpemVkKHN0cnVjdCBkbWFf aGVhcCAqaGVhcCwKPiArCQkJCQkJdW5zaWduZWQgbG9uZyBsZW4sCj4gKwkJCQkJCXVuc2lnbmVk IGxvbmcgZmRfZmxhZ3MsCj4gKwkJCQkJCXVuc2lnbmVkIGxvbmcgaGVhcF9mbGFncykKPiArewo+ ICsJcmV0dXJuIC1FQlVTWTsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBkbWFfaGVhcF9vcHMg c3lzdGVtX3VuY2FjaGVkX2hlYXBfb3BzID0gewo+ICsJLyogQWZ0ZXIgc3lzdGVtX2hlYXBfY3Jl YXRlIGlzIGNvbXBsZXRlLCB3ZSB3aWxsIHN3YXAgdGhpcyAqLwo+ICsJLmFsbG9jYXRlID0gc3lz dGVtX3VuY2FjaGVkX2hlYXBfbm90X2luaXRpYWxpemVkLAo+ICt9Owo+ICsKPiAgc3RhdGljIGlu dCBzeXN0ZW1faGVhcF9jcmVhdGUodm9pZCkKPiAgewo+ICAJc3RydWN0IGRtYV9oZWFwX2V4cG9y dF9pbmZvIGV4cF9pbmZvOwo+IEBAIC00MjYsNiArNDkzLDE4IEBAIHN0YXRpYyBpbnQgc3lzdGVt X2hlYXBfY3JlYXRlKHZvaWQpCj4gIAlpZiAoSVNfRVJSKHN5c19oZWFwKSkKPiAgCQlyZXR1cm4g UFRSX0VSUihzeXNfaGVhcCk7Cj4gIAo+ICsJZXhwX2luZm8ubmFtZSA9ICJzeXN0ZW0tdW5jYWNo ZWQiOwo+ICsJZXhwX2luZm8ub3BzID0gJnN5c3RlbV91bmNhY2hlZF9oZWFwX29wczsKPiArCWV4 cF9pbmZvLnByaXYgPSBOVUxMOwo+ICsKPiArCXN5c191bmNhY2hlZF9oZWFwID0gZG1hX2hlYXBf YWRkKCZleHBfaW5mbyk7Cj4gKwlpZiAoSVNfRVJSKHN5c191bmNhY2hlZF9oZWFwKSkKPiArCQly ZXR1cm4gUFRSX0VSUihzeXNfdW5jYWNoZWRfaGVhcCk7Cj4gKwo+ICsJZG1hX2NvZXJjZV9tYXNr X2FuZF9jb2hlcmVudChkbWFfaGVhcF9nZXRfZGV2KHN5c191bmNhY2hlZF9oZWFwKSwgRE1BX0JJ VF9NQVNLKDY0KSk7Cj4gKwltYigpOyAvKiBtYWtlIHN1cmUgd2Ugb25seSBzZXQgYWxsb2NhdGUg YWZ0ZXIgZG1hX21hc2sgaXMgc2V0ICovCj4gKwlzeXN0ZW1fdW5jYWNoZWRfaGVhcF9vcHMuYWxs b2NhdGUgPSBzeXN0ZW1fdW5jYWNoZWRfaGVhcF9hbGxvY2F0ZTsKPiArCj4gIAlyZXR1cm4gMDsK PiAgfQo+ICBtb2R1bGVfaW5pdChzeXN0ZW1faGVhcF9jcmVhdGUpOwo+IC0tIAo+IDIuMTcuMQpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwg bWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK