From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Andrew F. Davis" Subject: Re: [RFC][PATCH 2/6 v3] dma-buf: heaps: Add heap helpers Date: Fri, 29 Mar 2019 09:24:52 -0500 Message-ID: References: <1553818562-2516-1-git-send-email-john.stultz@linaro.org> <1553818562-2516-3-git-send-email-john.stultz@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from lelv0143.ext.ti.com (lelv0143.ext.ti.com [198.47.23.248]) by gabe.freedesktop.org (Postfix) with ESMTPS id E73A96E8D9 for ; Fri, 29 Mar 2019 14:25:17 +0000 (UTC) In-Reply-To: <1553818562-2516-3-git-send-email-john.stultz@linaro.org> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: John Stultz , lkml Cc: Yudongbin , Sudipto Paul , Xu YiPing , Vincent Donnefort , "Chenfeng (puck)" , dri-devel@lists.freedesktop.org, Chenbo Feng , Alistair Strachan , Liam Mark , Christoph Hellwig , "Xiaqing (A)" , Pratik Patel , butao List-Id: dri-devel@lists.freedesktop.org T24gMy8yOC8xOSA3OjE1IFBNLCBKb2huIFN0dWx0eiB3cm90ZToKPiBBZGQgZ2VuZXJpYyBoZWxw ZXIgZG1hYnVmIG9wcyBmb3IgZG1hIGhlYXBzLCBzbyB3ZSBjYW4gcmVkdWNlCj4gdGhlIGFtb3Vu dCBvZiBkdXBsaWNhdGl2ZSBjb2RlIGZvciB0aGUgZXhwb3J0ZWQgZG1hYnVmcy4KPiAKPiBUaGlz IGNvZGUgaXMgYW4gZXZvbHV0aW9uIG9mIHRoZSBBbmRyb2lkIElPTiBpbXBsZW1lbnRhdGlvbiwg c28KPiB0aGFua3MgdG8gaXRzIG9yaWdpbmFsIGF1dGhvcnMgYW5kIG1haW50YWludGVyczoKPiAg IFJlYmVjY2EgU2NodWx0eiBaYXZpbiwgQ29saW4gQ3Jvc3MsIExhdXJhIEFiYm90dCwgYW5kIG90 aGVycyEKPiAKPiBDYzogTGF1cmEgQWJib3R0IDxsYWJib3R0QHJlZGhhdC5jb20+Cj4gQ2M6IEJl bmphbWluIEdhaWduYXJkIDxiZW5qYW1pbi5nYWlnbmFyZEBsaW5hcm8ub3JnPgo+IENjOiBTdW1p dCBTZW13YWwgPHN1bWl0LnNlbXdhbEBsaW5hcm8ub3JnPgo+IENjOiBMaWFtIE1hcmsgPGxtYXJr QGNvZGVhdXJvcmEub3JnPgo+IENjOiBQcmF0aWsgUGF0ZWwgPHByYXRpa3BAY29kZWF1cm9yYS5v cmc+Cj4gQ2M6IEJyaWFuIFN0YXJrZXkgPEJyaWFuLlN0YXJrZXlAYXJtLmNvbT4KPiBDYzogVmlu Y2VudCBEb25uZWZvcnQgPFZpbmNlbnQuRG9ubmVmb3J0QGFybS5jb20+Cj4gQ2M6IFN1ZGlwdG8g UGF1bCA8U3VkaXB0by5QYXVsQGFybS5jb20+Cj4gQ2M6IEFuZHJldyBGLiBEYXZpcyA8YWZkQHRp LmNvbT4KPiBDYzogWHUgWWlQaW5nIDx4dXlpcGluZ0BoaXNpbGljb24uY29tPgo+IENjOiAiQ2hl bmZlbmcgKHB1Y2spIiA8cHVjay5jaGVuQGhpc2lsaWNvbi5jb20+Cj4gQ2M6IGJ1dGFvIDxidXRh b0BoaXNpbGljb24uY29tPgo+IENjOiAiWGlhcWluZyAoQSkiIDxzYWJlcmxpbHkueGlhQGhpc2ls aWNvbi5jb20+Cj4gQ2M6IFl1ZG9uZ2JpbiA8eXVkb25nYmluQGhpc2lsaWNvbi5jb20+Cj4gQ2M6 IENocmlzdG9waCBIZWxsd2lnIDxoY2hAaW5mcmFkZWFkLm9yZz4KPiBDYzogQ2hlbmJvIEZlbmcg PGZlbmdjQGdvb2dsZS5jb20+Cj4gQ2M6IEFsaXN0YWlyIFN0cmFjaGFuIDxhc3RyYWNoYW5AZ29v Z2xlLmNvbT4KPiBDYzogZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IFNpZ25lZC1v ZmYtYnk6IEpvaG4gU3R1bHR6IDxqb2huLnN0dWx0ekBsaW5hcm8ub3JnPgo+IC0tLQo+IHYyOgo+ ICogUmVtb3ZlZCBjYWNoZSBtYW5hZ2VtZW50IHBlcmZvcm1hbmNlIGhhY2sgdGhhdCBJIGhhZAo+ ICAgYWNjaWRlbnRhbGx5IGZvbGRlZCBpbi4KPiAqIFJlbW92ZWQgc3RhdHMgY29kZSB0aGF0IHdh cyBpbiBoZWxwZXJzCj4gKiBMb3RzIG9mIGNoZWNrcGF0Y2ggY2xlYW51cHMKPiAKPiB2MzoKPiAq IFVuaW5saW5lIElOSVRfSEVBUF9IRUxQRVJfQlVGRkVSIChzdWdnZXN0ZWQgYnkgQ2hyaXN0b3Bo KQo+ICogU3dpdGNoIHRvIFdBUk4gb24gYnVmZmVyIGRlc3Ryb3kgZmFpbHVyZSAoc3VnZ2VzdGVk IGJ5IEJyaWFuKQo+ICogYnVmZmVyLT5rbWFwX2NudCBkZWNyZW1lbnRpbmcgY2xlYW51cCAoc3Vn Z2VzdGVkIGJ5IENocmlzdG9waCkKPiAqIEV4dHJhIGJ1ZmZlci0+dmFkZHIgY2hlY2tpbmcgaW4g ZG1hX2hlYXBfZG1hX2J1Zl9rbWFwCj4gICAoc3VnZ2VzdGVkIGJ5IEJyaWFuKQo+ICogU3dpdGNo IHRvX2hlbHBlcl9idWZmZXIgZnJvbSBtYWNybyB0byBpbmxpbmUgZnVuY3Rpb24KPiAgIChzdWdn ZXN0ZWQgYnkgQmVuamFtaW4pCj4gKiBSZW5hbWUga21hcC0+dm1hcCAoZm9sZGVkIGluIGZyb20g QW5kcmV3KQo+ICogVXNlIHZtYXAgZm9yIHZtYXBwaW5nIC0gbm90IGJlZ2luX2NwdV9hY2Nlc3Mg KGZvbGRlZCBpbiBmcm9tCj4gICBBbmRyZXcpCj4gKiBEcm9wIGttYXAgZm9yIG5vdywgYXMgaXRz IG9wdGlvbmFsIChmb2xkZWQgaW4gZnJvbSBBbmRyZXcpCj4gKiBGb2xkIGRtYV9oZWFwX21hcF91 c2VyIGludG8gdGhlIHNpbmdsZSBjYWxsZXIgKGZvbGVkIGluIGZyb20KPiAgIEFuZHJldykKPiAq IEZvbGRlZCBpbiBwYXRjaCBmcm9tIEFuZHJldyB0byB0cmFjayBwYWdlIGxpc3QgcGVyIGhlYXAg bm90Cj4gICBzZ2xpc3QsIHdoaWNoIHNpbXBsaWZpZXMgdGhlIHRyYWNraW5nIGxvZ2ljCj4gLS0t Cj4gIGRyaXZlcnMvZG1hLWJ1Zi9NYWtlZmlsZSAgICAgICAgICAgICB8ICAgMSArCj4gIGRyaXZl cnMvZG1hLWJ1Zi9oZWFwcy9NYWtlZmlsZSAgICAgICB8ICAgMiArCj4gIGRyaXZlcnMvZG1hLWJ1 Zi9oZWFwcy9oZWFwLWhlbHBlcnMuYyB8IDI2MSArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwo+ICBkcml2ZXJzL2RtYS1idWYvaGVhcHMvaGVhcC1oZWxwZXJzLmggfCAgNTUgKysr KysrKysKPiAgaW5jbHVkZS9saW51eC9kbWEtaGVhcC5oICAgICAgICAgICAgIHwgIDE0ICstCj4g IDUgZmlsZXMgY2hhbmdlZCwgMzIwIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQo+ICBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9kbWEtYnVmL2hlYXBzL01ha2VmaWxlCj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2RtYS1idWYvaGVhcHMvaGVhcC1oZWxwZXJzLmMKPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZG1hLWJ1Zi9oZWFwcy9oZWFwLWhlbHBlcnMuaAo+IAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYvTWFrZWZpbGUgYi9kcml2ZXJzL2RtYS1idWYv TWFrZWZpbGUKPiBpbmRleCBiMDMzMmYxLi4wOWMyZjJkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv ZG1hLWJ1Zi9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9NYWtlZmlsZQo+IEBAIC0x LDQgKzEsNSBAQAo+ICBvYmoteSA6PSBkbWEtYnVmLm8gZG1hLWZlbmNlLm8gZG1hLWZlbmNlLWFy cmF5Lm8gcmVzZXJ2YXRpb24ubyBzZXFuby1mZW5jZS5vCj4gK29iai0kKENPTkZJR19ETUFCVUZf SEVBUFMpCSs9IGhlYXBzLwo+ICBvYmotJChDT05GSUdfRE1BQlVGX0hFQVBTKQkrPSBkbWEtaGVh cC5vCj4gIG9iai0kKENPTkZJR19TWU5DX0ZJTEUpCQkrPSBzeW5jX2ZpbGUubwo+ICBvYmotJChD T05GSUdfU1dfU1lOQykJCSs9IHN3X3N5bmMubyBzeW5jX2RlYnVnLm8KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9kbWEtYnVmL2hlYXBzL01ha2VmaWxlIGIvZHJpdmVycy9kbWEtYnVmL2hlYXBzL01h a2VmaWxlCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5kZTQ5ODk4Cj4g LS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9oZWFwcy9NYWtlZmlsZQo+IEBA IC0wLDAgKzEsMiBAQAo+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gK29i ai15CQkJCQkrPSBoZWFwLWhlbHBlcnMubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYv aGVhcHMvaGVhcC1oZWxwZXJzLmMgYi9kcml2ZXJzL2RtYS1idWYvaGVhcHMvaGVhcC1oZWxwZXJz LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjAwY2JkYmIKPiAtLS0g L2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9kbWEtYnVmL2hlYXBzL2hlYXAtaGVscGVycy5jCj4g QEAgLTAsMCArMSwyNjEgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAK PiArI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5o Pgo+ICsjaW5jbHVkZSA8bGludXgvZXJyLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pZHIuaD4KPiAr I2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPiArI2lu Y2x1ZGUgPGxpbnV4L3VhY2Nlc3MuaD4KPiArI2luY2x1ZGUgPHVhcGkvbGludXgvZG1hLWhlYXAu aD4KPiArCj4gKyNpbmNsdWRlICJoZWFwLWhlbHBlcnMuaCIKPiArCj4gK3ZvaWQgSU5JVF9IRUFQ X0hFTFBFUl9CVUZGRVIoc3RydWN0IGhlYXBfaGVscGVyX2J1ZmZlciAqYnVmZmVyLAo+ICsJCQkg ICAgIHZvaWQgKCpmcmVlKShzdHJ1Y3QgaGVhcF9oZWxwZXJfYnVmZmVyICopKQo+ICt7Cj4gKwli dWZmZXItPnByaXZhdGVfZmxhZ3MgPSAwOwo+ICsJYnVmZmVyLT5wcml2X3ZpcnQgPSBOVUxMOwo+ ICsJbXV0ZXhfaW5pdCgmYnVmZmVyLT5sb2NrKTsKPiArCWJ1ZmZlci0+dm1hcF9jbnQgPSAwOwo+ ICsJYnVmZmVyLT52YWRkciA9IE5VTEw7Cj4gKwlJTklUX0xJU1RfSEVBRCgmYnVmZmVyLT5hdHRh Y2htZW50cyk7Cj4gKwlidWZmZXItPmZyZWUgPSBmcmVlOwo+ICt9Cj4gKwo+ICsKPiArc3RhdGlj IHZvaWQgKmRtYV9oZWFwX21hcF9rZXJuZWwoc3RydWN0IGhlYXBfaGVscGVyX2J1ZmZlciAqYnVm ZmVyKQo+ICt7Cj4gKwl2b2lkICp2YWRkcjsKPiArCj4gKwl2YWRkciA9IHZtYXAoYnVmZmVyLT5w YWdlcywgYnVmZmVyLT5wYWdlY291bnQsIFZNX01BUCwgUEFHRV9LRVJORUwpOwo+ICsJaWYgKCF2 YWRkcikKPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiArCj4gKwlyZXR1cm4gdmFkZHI7 Cj4gK30KPiArCj4gK3ZvaWQgZG1hX2hlYXBfYnVmZmVyX2Rlc3Ryb3koc3RydWN0IGRtYV9oZWFw X2J1ZmZlciAqaGVhcF9idWZmZXIpCj4gK3sKPiArCXN0cnVjdCBoZWFwX2hlbHBlcl9idWZmZXIg KmJ1ZmZlciA9IHRvX2hlbHBlcl9idWZmZXIoaGVhcF9idWZmZXIpOwo+ICsKPiArCWlmIChidWZm ZXItPnZtYXBfY250ID4gMCkgewo+ICsJCVdBUk4oIiVzOiBidWZmZXIgc3RpbGwgbWFwcGVkIGlu IHRoZSBrZXJuZWxcbiIsCj4gKwkJCSAgICAgX19mdW5jX18pOwo+ICsJCXZ1bm1hcChidWZmZXIt PnZhZGRyKTsKPiArCX0KPiArCj4gKwlidWZmZXItPmZyZWUoYnVmZmVyKTsKPiArfQo+ICsKPiAr c3RhdGljIHZvaWQgKmRtYV9oZWFwX2J1ZmZlcl92bWFwX2dldChzdHJ1Y3QgZG1hX2hlYXBfYnVm ZmVyICpoZWFwX2J1ZmZlcikKPiArewo+ICsJc3RydWN0IGhlYXBfaGVscGVyX2J1ZmZlciAqYnVm ZmVyID0gdG9faGVscGVyX2J1ZmZlcihoZWFwX2J1ZmZlcik7Cj4gKwl2b2lkICp2YWRkcjsKPiAr Cj4gKwlpZiAoYnVmZmVyLT52bWFwX2NudCkgewo+ICsJCWJ1ZmZlci0+dm1hcF9jbnQrKzsKPiAr CQlyZXR1cm4gYnVmZmVyLT52YWRkcjsKPiArCX0KPiArCXZhZGRyID0gZG1hX2hlYXBfbWFwX2tl cm5lbChidWZmZXIpOwo+ICsJaWYgKFdBUk5fT05DRSghdmFkZHIsCj4gKwkJICAgICAgImhlYXAt Pm9wcy0+bWFwX2tlcm5lbCBzaG91bGQgcmV0dXJuIEVSUl9QVFIgb24gZXJyb3IiKSkKPiArCQly ZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKPiArCWlmIChJU19FUlIodmFkZHIpKQo+ICsJCXJldHVy biB2YWRkcjsKPiArCWJ1ZmZlci0+dmFkZHIgPSB2YWRkcjsKPiArCWJ1ZmZlci0+dm1hcF9jbnQr KzsKPiArCXJldHVybiB2YWRkcjsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZG1hX2hlYXBfYnVm ZmVyX3ZtYXBfcHV0KHN0cnVjdCBkbWFfaGVhcF9idWZmZXIgKmhlYXBfYnVmZmVyKQo+ICt7Cj4g KwlzdHJ1Y3QgaGVhcF9oZWxwZXJfYnVmZmVyICpidWZmZXIgPSB0b19oZWxwZXJfYnVmZmVyKGhl YXBfYnVmZmVyKTsKPiArCj4gKwlpZiAoIS0tYnVmZmVyLT52bWFwX2NudCkgewo+ICsJCXZ1bm1h cChidWZmZXItPnZhZGRyKTsKPiArCQlidWZmZXItPnZhZGRyID0gTlVMTDsKPiArCX0KPiArfQo+ ICsKPiArc3RydWN0IGRtYV9oZWFwc19hdHRhY2htZW50IHsKPiArCXN0cnVjdCBkZXZpY2UgKmRl djsKPiArCXN0cnVjdCBzZ190YWJsZSB0YWJsZTsKPiArCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsK PiArfTsKPiArCj4gK3N0YXRpYyBpbnQgZG1hX2hlYXBfYXR0YWNoKHN0cnVjdCBkbWFfYnVmICpk bWFidWYsCj4gKwkJCSAgICAgIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaG1lbnQp Cj4gK3sKPiArCXN0cnVjdCBkbWFfaGVhcHNfYXR0YWNobWVudCAqYTsKPiArCXN0cnVjdCBkbWFf aGVhcF9idWZmZXIgKmhlYXBfYnVmZmVyID0gZG1hYnVmLT5wcml2Owo+ICsJc3RydWN0IGhlYXBf aGVscGVyX2J1ZmZlciAqYnVmZmVyID0gdG9faGVscGVyX2J1ZmZlcihoZWFwX2J1ZmZlcik7Cj4g KwlpbnQgcmV0Owo+ICsKPiArCWEgPSBremFsbG9jKHNpemVvZigqYSksIEdGUF9LRVJORUwpOwo+ ICsJaWYgKCFhKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCXJldCA9IHNnX2FsbG9jX3Rh YmxlX2Zyb21fcGFnZXMoJmEtPnRhYmxlLCBidWZmZXItPnBhZ2VzLAo+ICsJCQkJCWJ1ZmZlci0+ cGFnZWNvdW50LCAwLAo+ICsJCQkJCWJ1ZmZlci0+cGFnZWNvdW50IDw8IFBBR0VfU0hJRlQsCj4g KwkJCQkJR0ZQX0tFUk5FTCk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJa2ZyZWUoYSk7Cj4gKwkJcmV0 dXJuIHJldDsKPiArCX0KPiArCj4gKwlhLT5kZXYgPSBhdHRhY2htZW50LT5kZXY7Cj4gKwlJTklU X0xJU1RfSEVBRCgmYS0+bGlzdCk7Cj4gKwo+ICsJYXR0YWNobWVudC0+cHJpdiA9IGE7Cj4gKwo+ ICsJbXV0ZXhfbG9jaygmYnVmZmVyLT5sb2NrKTsKPiArCWxpc3RfYWRkKCZhLT5saXN0LCAmYnVm ZmVyLT5hdHRhY2htZW50cyk7Cj4gKwltdXRleF91bmxvY2soJmJ1ZmZlci0+bG9jayk7Cj4gKwo+ ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGRtYV9oZWFwX2RldGF0Y2goc3Ry dWN0IGRtYV9idWYgKmRtYWJ1ZiwKPiArCQkJCXN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0 dGFjaG1lbnQpCj4gK3sKPiArCXN0cnVjdCBkbWFfaGVhcHNfYXR0YWNobWVudCAqYSA9IGF0dGFj aG1lbnQtPnByaXY7Cj4gKwlzdHJ1Y3QgZG1hX2hlYXBfYnVmZmVyICpoZWFwX2J1ZmZlciA9IGRt YWJ1Zi0+cHJpdjsKPiArCXN0cnVjdCBoZWFwX2hlbHBlcl9idWZmZXIgKmJ1ZmZlciA9IHRvX2hl bHBlcl9idWZmZXIoaGVhcF9idWZmZXIpOwo+ICsKPiArCW11dGV4X2xvY2soJmJ1ZmZlci0+bG9j ayk7Cj4gKwlsaXN0X2RlbCgmYS0+bGlzdCk7Cj4gKwltdXRleF91bmxvY2soJmJ1ZmZlci0+bG9j ayk7Cj4gKwo+ICsJc2dfZnJlZV90YWJsZSgmYS0+dGFibGUpOwo+ICsJa2ZyZWUoYSk7Cj4gK30K PiArCj4gK3N0YXRpYyBzdHJ1Y3Qgc2dfdGFibGUgKmRtYV9oZWFwX21hcF9kbWFfYnVmKAo+ICsJ CQkJCXN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaG1lbnQsCj4gKwkJCQkJZW51bSBk bWFfZGF0YV9kaXJlY3Rpb24gZGlyZWN0aW9uKQo+ICt7Cj4gKwlzdHJ1Y3QgZG1hX2hlYXBzX2F0 dGFjaG1lbnQgKmEgPSBhdHRhY2htZW50LT5wcml2Owo+ICsJc3RydWN0IHNnX3RhYmxlICp0YWJs ZTsKPiArCj4gKwl0YWJsZSA9ICZhLT50YWJsZTsKPiArCj4gKwlpZiAoIWRtYV9tYXBfc2coYXR0 YWNobWVudC0+ZGV2LCB0YWJsZS0+c2dsLCB0YWJsZS0+bmVudHMsCj4gKwkJCWRpcmVjdGlvbikp Cj4gKwkJdGFibGUgPSBFUlJfUFRSKC1FTk9NRU0pOwo+ICsJcmV0dXJuIHRhYmxlOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgdm9pZCBkbWFfaGVhcF91bm1hcF9kbWFfYnVmKHN0cnVjdCBkbWFfYnVmX2F0 dGFjaG1lbnQgKmF0dGFjaG1lbnQsCj4gKwkJCSAgICAgIHN0cnVjdCBzZ190YWJsZSAqdGFibGUs Cj4gKwkJCSAgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcmVjdGlvbikKPiArewo+ICsJ ZG1hX3VubWFwX3NnKGF0dGFjaG1lbnQtPmRldiwgdGFibGUtPnNnbCwgdGFibGUtPm5lbnRzLCBk aXJlY3Rpb24pOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm1fZmF1bHRfdCBkbWFfaGVhcF92bV9mYXVs dChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKPiArewo+ICsJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2 bWEgPSB2bWYtPnZtYTsKPiArCXN0cnVjdCBoZWFwX2hlbHBlcl9idWZmZXIgKmJ1ZmZlciA9IHZt YS0+dm1fcHJpdmF0ZV9kYXRhOwo+ICsKPiArCXZtZi0+cGFnZSA9IGJ1ZmZlci0+cGFnZXNbdm1m LT5wZ29mZl07Cj4gKwlnZXRfcGFnZSh2bWYtPnBhZ2UpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHZtX29wZXJhdGlvbnNfc3RydWN0IGRtYV9oZWFw X3ZtX29wcyA9IHsKPiArCS5mYXVsdCA9IGRtYV9oZWFwX3ZtX2ZhdWx0LAo+ICt9Owo+ICsKPiAr c3RhdGljIGludCBkbWFfaGVhcF9tbWFwKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0cnVjdCB2 bV9hcmVhX3N0cnVjdCAqdm1hKQo+ICt7Cj4gKwlzdHJ1Y3QgZG1hX2hlYXBfYnVmZmVyICpoZWFw X2J1ZmZlciA9IGRtYWJ1Zi0+cHJpdjsKPiArCXN0cnVjdCBoZWFwX2hlbHBlcl9idWZmZXIgKmJ1 ZmZlciA9IHRvX2hlbHBlcl9idWZmZXIoaGVhcF9idWZmZXIpOwo+ICsKPiArCWlmICgodm1hLT52 bV9mbGFncyAmIChWTV9TSEFSRUQgfCBWTV9NQVlTSEFSRSkpID09IDApCj4gKwkJcmV0dXJuIC1F SU5WQUw7Cj4gKwo+ICsJdm1hLT52bV9vcHMgPSAmZG1hX2hlYXBfdm1fb3BzOwo+ICsJdm1hLT52 bV9wcml2YXRlX2RhdGEgPSBidWZmZXI7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0 YXRpYyB2b2lkIGRtYV9oZWFwX2RtYV9idWZfcmVsZWFzZShzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVm KQo+ICt7Cj4gKwlzdHJ1Y3QgZG1hX2hlYXBfYnVmZmVyICpidWZmZXIgPSBkbWFidWYtPnByaXY7 Cj4gKwo+ICsJZG1hX2hlYXBfYnVmZmVyX2Rlc3Ryb3koYnVmZmVyKTsKPiArfQo+ICsKPiArc3Rh dGljIGludCBkbWFfaGVhcF9kbWFfYnVmX2JlZ2luX2NwdV9hY2Nlc3Moc3RydWN0IGRtYV9idWYg KmRtYWJ1ZiwKPiArCQkJCQllbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pCj4gK3sK PiArCXN0cnVjdCBkbWFfaGVhcF9idWZmZXIgKmhlYXBfYnVmZmVyID0gZG1hYnVmLT5wcml2Owo+ ICsJc3RydWN0IGhlYXBfaGVscGVyX2J1ZmZlciAqYnVmZmVyID0gdG9faGVscGVyX2J1ZmZlciho ZWFwX2J1ZmZlcik7Cj4gKwlzdHJ1Y3QgZG1hX2hlYXBzX2F0dGFjaG1lbnQgKmE7Cj4gKwlpbnQg cmV0ID0gMDsKPiArCj4gKwltdXRleF9sb2NrKCZidWZmZXItPmxvY2spOwo+ICsJbGlzdF9mb3Jf ZWFjaF9lbnRyeShhLCAmYnVmZmVyLT5hdHRhY2htZW50cywgbGlzdCkgewo+ICsJCWRtYV9zeW5j X3NnX2Zvcl9jcHUoYS0+ZGV2LCBhLT50YWJsZS5zZ2wsIGEtPnRhYmxlLm5lbnRzLAo+ICsJCQkJ ICAgIGRpcmVjdGlvbik7Cj4gKwl9Cj4gKwltdXRleF91bmxvY2soJmJ1ZmZlci0+bG9jayk7Cj4g Kwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGludCBkbWFfaGVhcF9kbWFfYnVm X2VuZF9jcHVfYWNjZXNzKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsCj4gKwkJCQkgICAgICBlbnVt IGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pCj4gK3sKPiArCXN0cnVjdCBkbWFfaGVhcF9i dWZmZXIgKmhlYXBfYnVmZmVyID0gZG1hYnVmLT5wcml2Owo+ICsJc3RydWN0IGhlYXBfaGVscGVy X2J1ZmZlciAqYnVmZmVyID0gdG9faGVscGVyX2J1ZmZlcihoZWFwX2J1ZmZlcik7Cj4gKwlzdHJ1 Y3QgZG1hX2hlYXBzX2F0dGFjaG1lbnQgKmE7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmYnVmZmVyLT5s b2NrKTsKPiArCWxpc3RfZm9yX2VhY2hfZW50cnkoYSwgJmJ1ZmZlci0+YXR0YWNobWVudHMsIGxp c3QpIHsKPiArCQlkbWFfc3luY19zZ19mb3JfZGV2aWNlKGEtPmRldiwgYS0+dGFibGUuc2dsLCBh LT50YWJsZS5uZW50cywKPiArCQkJCSAgICAgICBkaXJlY3Rpb24pOwo+ICsJfQo+ICsJbXV0ZXhf dW5sb2NrKCZidWZmZXItPmxvY2spOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICt2b2lk ICpkbWFfaGVhcF9kbWFfYnVmX3ZtYXAoc3RydWN0IGRtYV9idWYgKmRtYWJ1ZikKPiArewo+ICsJ c3RydWN0IGRtYV9oZWFwX2J1ZmZlciAqaGVhcF9idWZmZXIgPSBkbWFidWYtPnByaXY7Cj4gKwlz dHJ1Y3QgaGVhcF9oZWxwZXJfYnVmZmVyICpidWZmZXIgPSB0b19oZWxwZXJfYnVmZmVyKGhlYXBf YnVmZmVyKTsKPiArCXZvaWQgKnZhZGRyOwo+ICsKPiArCW11dGV4X2xvY2soJmJ1ZmZlci0+bG9j ayk7Cj4gKwl2YWRkciA9IGRtYV9oZWFwX2J1ZmZlcl92bWFwX2dldChoZWFwX2J1ZmZlcik7Cj4g KwltdXRleF91bmxvY2soJmJ1ZmZlci0+bG9jayk7Cj4gKwo+ICsJcmV0dXJuIHZhZGRyOwo+ICt9 Cj4gKwo+ICt2b2lkIGRtYV9oZWFwX2RtYV9idWZfdnVubWFwKHN0cnVjdCBkbWFfYnVmICpkbWFi dWYsIHZvaWQgKnZhZGRyKQo+ICt7Cj4gKwlzdHJ1Y3QgZG1hX2hlYXBfYnVmZmVyICpoZWFwX2J1 ZmZlciA9IGRtYWJ1Zi0+cHJpdjsKPiArCXN0cnVjdCBoZWFwX2hlbHBlcl9idWZmZXIgKmJ1ZmZl ciA9IHRvX2hlbHBlcl9idWZmZXIoaGVhcF9idWZmZXIpOwo+ICsKPiArCW11dGV4X2xvY2soJmJ1 ZmZlci0+bG9jayk7Cj4gKwlkbWFfaGVhcF9idWZmZXJfdm1hcF9wdXQoaGVhcF9idWZmZXIpOwo+ ICsJbXV0ZXhfdW5sb2NrKCZidWZmZXItPmxvY2spOwo+ICt9Cj4gKwo+ICtjb25zdCBzdHJ1Y3Qg ZG1hX2J1Zl9vcHMgaGVhcF9oZWxwZXJfb3BzID0gewo+ICsJLm1hcF9kbWFfYnVmID0gZG1hX2hl YXBfbWFwX2RtYV9idWYsCj4gKwkudW5tYXBfZG1hX2J1ZiA9IGRtYV9oZWFwX3VubWFwX2RtYV9i dWYsCj4gKwkubW1hcCA9IGRtYV9oZWFwX21tYXAsCj4gKwkucmVsZWFzZSA9IGRtYV9oZWFwX2Rt YV9idWZfcmVsZWFzZSwKPiArCS5hdHRhY2ggPSBkbWFfaGVhcF9hdHRhY2gsCj4gKwkuZGV0YWNo ID0gZG1hX2hlYXBfZGV0YXRjaCwKPiArCS5iZWdpbl9jcHVfYWNjZXNzID0gZG1hX2hlYXBfZG1h X2J1Zl9iZWdpbl9jcHVfYWNjZXNzLAo+ICsJLmVuZF9jcHVfYWNjZXNzID0gZG1hX2hlYXBfZG1h X2J1Zl9lbmRfY3B1X2FjY2VzcywKPiArCS52bWFwID0gZG1hX2hlYXBfZG1hX2J1Zl92bWFwLAo+ ICsJLnZ1bm1hcCA9IGRtYV9oZWFwX2RtYV9idWZfdnVubWFwLAo+ICt9Owo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2RtYS1idWYvaGVhcHMvaGVhcC1oZWxwZXJzLmggYi9kcml2ZXJzL2RtYS1idWYv aGVhcHMvaGVhcC1oZWxwZXJzLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAw MDAuLmExNzUwMmQKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9kbWEtYnVmL2hlYXBz L2hlYXAtaGVscGVycy5oCj4gQEAgLTAsMCArMSw1NSBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMLTIuMCAqLwo+ICsvKgo+ICsgKiBETUFCVUYgSGVhcHMgaGVscGVyIGNvZGUK PiArICoKPiArICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSwgSW5jLgo+ICsgKiBDb3B5cmln aHQgKEMpIDIwMTkgTGluYXJvIEx0ZC4KPiArICovCj4gKwo+ICsjaWZuZGVmIF9IRUFQX0hFTFBF UlNfSAo+ICsjZGVmaW5lIF9IRUFQX0hFTFBFUlNfSAo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2Rt YS1oZWFwLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9saXN0Lmg+Cj4gKwo+ICsvKioKPiArICogc3Ry dWN0IGRtYV9oZWFwX2J1ZmZlciAtIG1ldGFkYXRhIGZvciBhIHBhcnRpY3VsYXIgYnVmZmVyCj4g KyAqIEBoZWFwOgkJYmFjayBwb2ludGVyIHRvIHRoZSBoZWFwIHRoZSBidWZmZXIgY2FtZSBmcm9t Cj4gKyAqIEBkbWFidWY6CQliYWNraW5nIGRtYS1idWYgZm9yIHRoaXMgYnVmZmVyCj4gKyAqIEBz aXplOgkJc2l6ZSBvZiB0aGUgYnVmZmVyCj4gKyAqIEBmbGFnczoJCWJ1ZmZlciBzcGVjaWZpYyBm bGFncwo+ICsgKi8KPiArc3RydWN0IGRtYV9oZWFwX2J1ZmZlciB7Cj4gKwlzdHJ1Y3QgZG1hX2hl YXAgKmhlYXA7Cj4gKwlzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmOwo+ICsJc2l6ZV90IHNpemU7Cj4g Kwl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICt9Owo+ICsKPiArc3RydWN0IGhlYXBfaGVscGVyX2J1 ZmZlciB7Cj4gKwlzdHJ1Y3QgZG1hX2hlYXBfYnVmZmVyIGhlYXBfYnVmZmVyOwo+ICsKPiArCXVu c2lnbmVkIGxvbmcgcHJpdmF0ZV9mbGFnczsKPiArCXZvaWQgKnByaXZfdmlydDsKPiArCXN0cnVj dCBtdXRleCBsb2NrOwo+ICsJaW50IHZtYXBfY250Owo+ICsJdm9pZCAqdmFkZHI7Cj4gKwlwZ29m Zl90IHBhZ2Vjb3VudDsKPiArCXN0cnVjdCBwYWdlICoqcGFnZXM7Cj4gKwlzdHJ1Y3QgbGlzdF9o ZWFkIGF0dGFjaG1lbnRzOwo+ICsKPiArCXZvaWQgKCpmcmVlKShzdHJ1Y3QgaGVhcF9oZWxwZXJf YnVmZmVyICpidWZmZXIpOwo+ICsKPiArfTsKPiArCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGhl YXBfaGVscGVyX2J1ZmZlciAqdG9faGVscGVyX2J1ZmZlcigKPiArCQkJCQkJc3RydWN0IGRtYV9o ZWFwX2J1ZmZlciAqaCkKPiArewo+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihoLCBzdHJ1Y3QgaGVh cF9oZWxwZXJfYnVmZmVyLCBoZWFwX2J1ZmZlcik7Cj4gK30KPiArCj4gK3ZvaWQgSU5JVF9IRUFQ X0hFTFBFUl9CVUZGRVIoc3RydWN0IGhlYXBfaGVscGVyX2J1ZmZlciAqYnVmZmVyLAo+ICsJCQkJ IHZvaWQgKCpmcmVlKShzdHJ1Y3QgaGVhcF9oZWxwZXJfYnVmZmVyICopKTsKPiArZXh0ZXJuIGNv bnN0IHN0cnVjdCBkbWFfYnVmX29wcyBoZWFwX2hlbHBlcl9vcHM7Cj4gKwo+ICsjZW5kaWYgLyog X0hFQVBfSEVMUEVSU19IICovCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZG1hLWhlYXAu aCBiL2luY2x1ZGUvbGludXgvZG1hLWhlYXAuaAo+IGluZGV4IGQ3YmY2MjQuLmQxN2I4MzkgMTAw NjQ0Cj4gLS0tIGEvaW5jbHVkZS9saW51eC9kbWEtaGVhcC5oCj4gKysrIGIvaW5jbHVkZS9saW51 eC9kbWEtaGVhcC5oCj4gQEAgLTEyLDE5ICsxMiw3IEBACj4gICNpbmNsdWRlIDxsaW51eC9jZGV2 Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgo+ICAKPiAtLyoqCj4gLSAqIHN0cnVjdCBk bWFfaGVhcF9idWZmZXIgLSBtZXRhZGF0YSBmb3IgYSBwYXJ0aWN1bGFyIGJ1ZmZlcgo+IC0gKiBA aGVhcDoJCWJhY2sgcG9pbnRlciB0byB0aGUgaGVhcCB0aGUgYnVmZmVyIGNhbWUgZnJvbQo+IC0g KiBAZG1hYnVmOgkJYmFja2luZyBkbWEtYnVmIGZvciB0aGlzIGJ1ZmZlcgo+IC0gKiBAc2l6ZToJ CXNpemUgb2YgdGhlIGJ1ZmZlcgo+IC0gKiBAZmxhZ3M6CQlidWZmZXIgc3BlY2lmaWMgZmxhZ3MK PiAtICovCj4gLXN0cnVjdCBkbWFfaGVhcF9idWZmZXIgewo+IC0Jc3RydWN0IGRtYV9oZWFwICpo ZWFwOwo+IC0Jc3RydWN0IGRtYV9idWYgKmRtYWJ1ZjsKPiAtCXNpemVfdCBzaXplOwo+IC0JdW5z aWduZWQgbG9uZyBmbGFnczsKPiAtfTsKPiArc3RydWN0IGRtYV9oZWFwOwo+ICAKClRoaXMgY2hh bmdlIGNhbiBnZXQgc3F1YXNoZWQgaW50byB0aGUgZmlyc3QgcGF0Y2guCgpBbmRyZXcKCj4gIC8q Kgo+ICAgKiBzdHJ1Y3QgZG1hX2hlYXBfb3BzIC0gb3BzIHRvIG9wZXJhdGUgb24gYSBnaXZlbiBo ZWFwCj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==