From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 11/41] drm/i915: Introduce an internal allocator for disposable private objects Date: Fri, 14 Oct 2016 13:42:35 +0100 Message-ID: References: <20161014121833.439-1-chris@chris-wilson.co.uk> <20161014121833.439-12-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id F3ABC6EC12 for ; Fri, 14 Oct 2016 12:42:38 +0000 (UTC) In-Reply-To: <20161014121833.439-12-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDE0LzEwLzIwMTYgMTM6MTgsIENocmlzIFdpbHNvbiB3cm90ZToKPiBRdWl0ZSBhIGZldyBv ZiBvdXIgb2JqZWN0cyB1c2VkIGZvciBpbnRlcm5hbCBoYXJkd2FyZSBwcm9ncmFtbWluZyBkbyBu b3QKPiBiZW5lZml0IGZyb20gYmVpbmcgc3dhcHBhYmxlIG9yIGZyb20gYmVpbmcgemVybyBpbml0 aWFsaXNlZC4gQXMgc3VjaAo+IHRoZXkgZG8gbm90IGJlbmVmaXQgZnJvbSB1c2luZyBhIHNobWVt ZnMgYmFja2luZyBzdG9yYWdlIGFuZCBzaW5jZSB0aGV5Cj4gYXJlIGludGVybmFsIGFuZCBuZXZl ciBkaXJlY3RseSBleHBvc2VkIHRvIHRoZSB1c2VyLCB3ZSBkbyBub3QgbmVlZCB0bwo+IHdvcnJ5 IGFib3V0IHByb3ZpZGluZyBhIGZpbHAuIEZvciB0aGVzZSB3ZSBjYW4gdXNlIGFuCj4gZHJtX2k5 MTVfZ2VtX29iamVjdCB3cmFwcGVyIGFyb3VuZCBhIHNnX3RhYmxlIG9mIHBsYWluIHN0cnVjdCBw YWdlLiBUaGV5Cj4gYXJlIG5vdCBzd2FwIGJhY2tlZCBhbmQgbm90IGF1dG9tYXRpY2FsbHkgcGlu bmVkLiBJZiB0aGV5IGFyZSByZWFwZWQKPiBieSB0aGUgc2hyaW5rZXIsIHRoZSBwYWdlcyBhcmUg cmVsZWFzZWQgYW5kIHRoZSBjb250ZW50cyBkaXNjYXJkZWQuIEZvcgo+IHRoZSBpbnRlcm5hbCB1 c2UgY2FzZSwgdGhpcyBpcyBmaW5lIGFzIGZvciBleGFtcGxlLCByaW5nYnVmZmVycyBhcmUKPiBw aW5uZWQgZnJvbSBiZWluZyB3cml0dGVuIGJ5IGEgcmVxdWVzdCB0byBiZSByZWFkIGJ5IHRoZSBo YXJkd2FyZS4gT25jZQo+IHRoZXkgYXJlIGlkbGUsIHRoZXkgY2FuIGJlIGRpc2NhcmRlZCBlbnRp cmVseS4gQXMgc3VjaCB0aGV5IGFyZSBhIGdvb2QKPiBtYXRjaCBmb3IgZXhlY2xpc3QgcmluZ2J1 ZmZlcnMgYW5kIGEgc21hbGwgdmFyaWV0eSBvZiBvdGhlciBpbnRlcm5hbAo+IG9iamVjdHMuCj4K PiBJbiB0aGUgZmlyc3QgaXRlcmF0aW9uLCB0aGlzIGlzIGxpbWl0ZWQgdG8gdGhlIHNjcmF0Y2gg YmF0Y2ggYnVmZmVycyB3ZQo+IHVzZSAoZm9yIGNvbW1hbmQgcGFyc2luZyBhbmQgc3RhdGUgaW5p dGlhbGlzYXRpb24pLgo+Cj4gdjI6IEFsbG9jYXRlIHBoeXNpY2FsbHkgY29udGlndW91cyBwYWdl cywgd2hlcmUgcG9zc2libGUuCj4KPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlz QGNocmlzLXdpbHNvbi5jby51az4KPiBDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGlu QGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxl ICAgICAgICAgICAgICAgIHwgICAxICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggICAgICAgICAgICAgIHwgICA1ICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2JhdGNoX3Bvb2wuYyAgIHwgIDI3ICsrLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9pbnRlcm5hbC5jICAgICB8IDE2NCArKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5jIHwgICAyICstCj4g ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyAgICAgICB8ICAgMiArLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jICAgICAgfCAgMTQgKyst Cj4gICA3IGZpbGVzIGNoYW5nZWQsIDE5MSBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkK PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9pbnRl cm5hbC5jCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+IGluZGV4IDg3OTBhZTRmYjE3MS4uZWZhZjI1 Yjk4NGFmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBAQCAtMzUsNiArMzUsNyBAQCBpOTE1 LXkgKz0gaTkxNV9jbWRfcGFyc2VyLm8gXAo+ICAgCSAgaTkxNV9nZW1fZXhlY2J1ZmZlci5vIFwK PiAgIAkgIGk5MTVfZ2VtX2ZlbmNlLm8gXAo+ICAgCSAgaTkxNV9nZW1fZ3R0Lm8gXAo+ICsJICBp OTE1X2dlbV9pbnRlcm5hbC5vIFwKPiAgIAkgIGk5MTVfZ2VtLm8gXAo+ICAgCSAgaTkxNV9nZW1f cmVuZGVyX3N0YXRlLm8gXAo+ICAgCSAgaTkxNV9nZW1fcmVxdWVzdC5vIFwKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPiBpbmRleCA0YzBjOGVmNmMwODQuLjM4NDY3ZGRlMWVmZSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0zNTQwLDYgKzM1NDAsMTEgQEAgaTkxNV9nZW1fb2Jq ZWN0X2NyZWF0ZV9zdG9sZW5fZm9yX3ByZWFsbG9jYXRlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+ICAgCQkJCQkgICAgICAgdTMyIGd0dF9vZmZzZXQsCj4gICAJCQkJCSAgICAgICB1MzIgc2l6 ZSk7Cj4gICAKPiArLyogaTkxNV9nZW1faW50ZXJuYWwuYyAqLwo+ICtzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqCj4gK2k5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJdW5zaWduZWQgaW50IHNpemUpOwo+ICsK PiAgIC8qIGk5MTVfZ2VtX3Nocmlua2VyLmMgKi8KPiAgIHVuc2lnbmVkIGxvbmcgaTkxNV9nZW1f c2hyaW5rKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAkJCSAgICAgIHVu c2lnbmVkIGxvbmcgdGFyZ2V0LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9iYXRjaF9wb29sLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9iYXRj aF9wb29sLmMKPiBpbmRleCBjYjI1Y2FkMzMxOGMuLmFhNGUxZTA0M2I0ZSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9iYXRjaF9wb29sLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9iYXRjaF9wb29sLmMKPiBAQCAtOTcsOSArOTcsOSBA QCBpOTE1X2dlbV9iYXRjaF9wb29sX2dldChzdHJ1Y3QgaTkxNV9nZW1fYmF0Y2hfcG9vbCAqcG9v bCwKPiAgIAkJCXNpemVfdCBzaXplKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmogPSBOVUxMOwo+IC0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKnRtcCwgKm5l eHQ7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqdG1wOwo+ICAgCXN0cnVjdCBsaXN0 X2hlYWQgKmxpc3Q7Cj4gLQlpbnQgbjsKPiArCWludCBuLCByZXQ7Cj4gICAKPiAgIAlsb2NrZGVw X2Fzc2VydF9oZWxkKCZwb29sLT5lbmdpbmUtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAg Cj4gQEAgLTExMiwxOSArMTEyLDEyIEBAIGk5MTVfZ2VtX2JhdGNoX3Bvb2xfZ2V0KHN0cnVjdCBp OTE1X2dlbV9iYXRjaF9wb29sICpwb29sLAo+ICAgCQluID0gQVJSQVlfU0laRShwb29sLT5jYWNo ZV9saXN0KSAtIDE7Cj4gICAJbGlzdCA9ICZwb29sLT5jYWNoZV9saXN0W25dOwo+ICAgCj4gLQls aXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodG1wLCBuZXh0LCBsaXN0LCBiYXRjaF9wb29sX2xpbmsp IHsKPiArCWxpc3RfZm9yX2VhY2hfZW50cnkodG1wLCBsaXN0LCBiYXRjaF9wb29sX2xpbmspIHsK PiAgIAkJLyogVGhlIGJhdGNoZXMgYXJlIHN0cmljdGx5IExSVSBvcmRlcmVkICovCj4gICAJCWlm ICghaTkxNV9nZW1fYWN0aXZlX2lzX2lkbGUoJnRtcC0+bGFzdF9yZWFkW3Bvb2wtPmVuZ2luZS0+ aWRdLAo+ICAgCQkJCQkgICAgICZ0bXAtPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpKQo+ICAgCQkJ YnJlYWs7Cj4gICAKPiAtCQkvKiBXaGlsZSB3ZSdyZSBsb29waW5nLCBkbyBzb21lIGNsZWFuIHVw ICovCj4gLQkJaWYgKHRtcC0+bWFkdiA9PSBfX0k5MTVfTUFEVl9QVVJHRUQpIHsKPiAtCQkJbGlz dF9kZWwoJnRtcC0+YmF0Y2hfcG9vbF9saW5rKTsKPiAtCQkJaTkxNV9nZW1fb2JqZWN0X3B1dCh0 bXApOwo+IC0JCQljb250aW51ZTsKPiAtCQl9Cj4gLQo+ICAgCQlpZiAodG1wLT5iYXNlLnNpemUg Pj0gc2l6ZSkgewo+ICAgCQkJb2JqID0gdG1wOwo+ICAgCQkJYnJlYWs7Cj4gQEAgLTEzMiwxOSAr MTI1LDE1IEBAIGk5MTVfZ2VtX2JhdGNoX3Bvb2xfZ2V0KHN0cnVjdCBpOTE1X2dlbV9iYXRjaF9w b29sICpwb29sLAo+ICAgCX0KPiAgIAo+ICAgCWlmIChvYmogPT0gTlVMTCkgewo+IC0JCWludCBy ZXQ7Cj4gLQo+IC0JCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGUoJnBvb2wtPmVuZ2luZS0+ aTkxNS0+ZHJtLCBzaXplKTsKPiArCQlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX2ludGVy bmFsKHBvb2wtPmVuZ2luZS0+aTkxNSwgc2l6ZSk7Cj4gICAJCWlmIChJU19FUlIob2JqKSkKPiAg IAkJCXJldHVybiBvYmo7Cj4gLQo+IC0JCXJldCA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXMo b2JqKTsKPiAtCQlpZiAocmV0KQo+IC0JCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+IC0KPiAtCQlv YmotPm1hZHYgPSBJOTE1X01BRFZfRE9OVE5FRUQ7Cj4gICAJfQo+ICAgCj4gKwlyZXQgPSBpOTE1 X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKG9iaik7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiBFUlJf UFRSKHJldCk7Cj4gKwo+ICAgCWxpc3RfbW92ZV90YWlsKCZvYmotPmJhdGNoX3Bvb2xfbGluaywg bGlzdCk7Cj4gICAJaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwo+ICAgCXJldHVybiBv Ymo7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ludGVybmFs LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9pbnRlcm5hbC5jCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjI2MTA5NWU1NmYxNgo+IC0tLSAvZGV2 L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9pbnRlcm5hbC5jCj4g QEAgLTAsMCArMSwxNjQgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTQtMjAxNiBJbnRl bCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRo aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0 d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBj b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ICsg KiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNv bnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJq ZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNv cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUg bmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Ig c3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBU SEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg S0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE IFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNI QUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1Ig QU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZS T00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0Ug T1IgT1RIRVIgREVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ICsgKgo+ICsgKi8KPiAr Cj4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+Cj4g KyNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICsKPiArI2RlZmluZSBRVUlFVCAoX19HRlBfTk9SRVRS WSB8IF9fR0ZQX05PV0FSTikKPiArCj4gK3N0YXRpYyB2b2lkIGludGVybmFsX2ZyZWVfcGFnZXMo c3RydWN0IHNnX3RhYmxlICpzdCkKPiArewo+ICsJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsKPiAr Cj4gKwlmb3IgKHNnID0gc3QtPnNnbDsgc2c7IHNnID0gX19zZ19uZXh0KHNnKSkKPiArCQlfX2Zy ZWVfcGFnZXMoc2dfcGFnZShzZyksIGdldF9vcmRlcihzZy0+bGVuZ3RoKSk7Cj4gKwo+ICsJc2df ZnJlZV90YWJsZShzdCk7Cj4gKwlrZnJlZShzdCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgaTkx NV9nZW1fb2JqZWN0X2dldF9wYWdlc19pbnRlcm5hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUo b2JqLT5iYXNlLmRldik7Cj4gKwl1bnNpZ25lZCBpbnQgbnBhZ2VzID0gb2JqLT5iYXNlLnNpemUg LyBQQUdFX1NJWkU7Cj4gKwlzdHJ1Y3Qgc2dfdGFibGUgKnN0Owo+ICsJc3RydWN0IHNjYXR0ZXJs aXN0ICpzZzsKPiArCWludCBtYXhfb3JkZXI7Cj4gKwlnZnBfdCBnZnA7Cj4gKwo+ICsJc3QgPSBr bWFsbG9jKHNpemVvZigqc3QpLCBHRlBfS0VSTkVMKTsKPiArCWlmICghc3QpCj4gKwkJcmV0dXJu IC1FTk9NRU07Cj4gKwo+ICsJaWYgKHNnX2FsbG9jX3RhYmxlKHN0LCBucGFnZXMsIEdGUF9LRVJO RUwpKSB7Cj4gKwkJa2ZyZWUoc3QpOwo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsJfQo+ICsKPiAr CXNnID0gc3QtPnNnbDsKPiArCXN0LT5uZW50cyA9IDA7Cj4gKwo+ICsJbWF4X29yZGVyID0gTUFY X09SREVSOwo+ICsjaWZkZWYgQ09ORklHX1NXSU9UTEIKPiArCWlmIChzd2lvdGxiX25yX3RibCgp KQo+ICsJCW1heF9vcmRlciA9IG1pbihtYXhfb3JkZXIsIGlsb2cyKElPX1RMQl9TRUdTSVpFKSk7 Cj4gKyNlbmRpZgo+ICsKPiArCWdmcCA9IEdGUF9LRVJORUwgfCBfX0dGUF9ISUdITUVNIHwgX19H RlBfUkVDTEFJTUFCTEU7Cj4gKwlpZiAoSVNfQ1JFU1RMSU5FKGk5MTUpIHx8IElTX0JST0FEV0FU RVIoaTkxNSkpIHsKPiArCQkvKiA5NjVnbSBjYW5ub3QgcmVsb2NhdGUgb2JqZWN0cyBhYm92ZSA0 R2lCLiAqLwo+ICsJCWdmcCAmPSB+X19HRlBfSElHSE1FTTsKPiArCQlnZnAgfD0gX19HRlBfRE1B MzI7Cj4gKwl9Cj4gKwo+ICsJZG8gewo+ICsJCWludCBvcmRlciA9IG1pbihmbHMobnBhZ2VzKSAt IDEsIG1heF9vcmRlcik7CgpJIHN0aWxsIGhhdmUgcmVzZXJ2YXRpb25zIG9uIGdvaW5nIGJhY2sg dG8gbWF4X29yZGVyIHdoZW4gcHJldmlvdXMgCmNodW5rcyByZXF1aXJlZCBhbiBvcmRlciBkZWNy ZWFzZS4gU2l6ZSBvZiB0aGUgb2JqZWN0IGlzIHVuYm91bmQgc2luY2UgCml0IGlzIGluZGlyZWN0 bHkgY29udHJvbGxlZCBieSB1c2Vyc3BhY2UsIGNvcnJlY3Q/IEhvdyBhYm91dCBkZWNyZWFzaW5n IAp0aGUgbWF4X29yZGVyIG9uIGV2ZXJ5IHJlcGVhdGVkIG9yZGVyIGRlY3JlYXNlLCBmb2xsb3dp bmcgZmFpbGVkIG9yZGVyIAphbGxvY2F0aW9uPwoKUmVnYXJkcywKClR2cnRrbwoKPiArCQlzdHJ1 Y3QgcGFnZSAqcGFnZTsKPiArCj4gKwkJZG8gewo+ICsJCQlwYWdlID0gYWxsb2NfcGFnZXMoZ2Zw IHwgKG9yZGVyID8gUVVJRVQgOiAwKSwgb3JkZXIpOwo+ICsJCQlpZiAocGFnZSkKPiArCQkJCWJy ZWFrOwo+ICsJCQlpZiAoIW9yZGVyLS0pCj4gKwkJCQlnb3RvIGVycjsKPiArCQl9IHdoaWxlICgx KTsKPiArCj4gKwkJc2dfc2V0X3BhZ2Uoc2csIHBhZ2UsIFBBR0VfU0laRSA8PCBvcmRlciwgMCk7 Cj4gKwkJc3QtPm5lbnRzKys7Cj4gKwo+ICsJCW5wYWdlcyAtPSAxIDw8IG9yZGVyOwo+ICsJCWlm ICghbnBhZ2VzKSB7Cj4gKwkJCXNnX21hcmtfZW5kKHNnKTsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ ICsKPiArCQlzZyA9IF9fc2dfbmV4dChzZyk7Cj4gKwl9IHdoaWxlICgxKTsKPiArCW9iai0+cGFn ZXMgPSBzdDsKPiArCj4gKwlpZiAoaTkxNV9nZW1fZ3R0X3ByZXBhcmVfb2JqZWN0KG9iaikpIHsK PiArCQlvYmotPnBhZ2VzID0gTlVMTDsKPiArCQlnb3RvIGVycjsKPiArCX0KPiArCj4gKwkvKiBN YXJrIHRoZSBwYWdlcyBhcyBkb250bmVlZCB3aGlsc3QgdGhleSBhcmUgc3RpbGwgcGlubmVkLiBB cyBzb29uCj4gKwkgKiBhcyB0aGV5IGFyZSB1bnBpbm5lZCB0aGV5IGFyZSBhbGxvd2VkIHRvIGJl IHJlYXBlZCBieSB0aGUgc2hyaW5rZXIsCj4gKwkgKiBhbmQgdGhlIGNhbGxlciBpcyBleHBlY3Rl ZCB0byByZXBvcHVsYXRlIC0gdGhlIGNvbnRlbnRzIG9mIHRoaXMKPiArCSAqIG9iamVjdCBhcmUg b25seSB2YWxpZCB3aGlsc3QgYWN0aXZlIGFuZCBwaW5uZWQuCj4gKwkgKi8KPiArCW9iai0+bWFk diA9IEk5MTVfTUFEVl9ET05UTkVFRDsKPiArCXJldHVybiAwOwo+ICsKPiArZXJyOgo+ICsJc2df bWFya19lbmQoc2cpOwo+ICsJaW50ZXJuYWxfZnJlZV9wYWdlcyhzdCk7Cj4gKwlyZXR1cm4gLUVO T01FTTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlc19p bnRlcm5hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICt7Cj4gKwlpOTE1X2dl bV9ndHRfZmluaXNoX29iamVjdChvYmopOwo+ICsJaW50ZXJuYWxfZnJlZV9wYWdlcyhvYmotPnBh Z2VzKTsKPiArCj4gKwlvYmotPmRpcnR5ID0gMDsKPiArCW9iai0+bWFkdiA9IEk5MTVfTUFEVl9X SUxMTkVFRDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0X29wcyBpOTE1X2dlbV9vYmplY3RfaW50ZXJuYWxfb3BzID0gewo+ICsJLmZsYWdzID0gSTkx NV9HRU1fT0JKRUNUX0hBU19TVFJVQ1RfUEFHRSwKPiArCS5nZXRfcGFnZXMgPSBpOTE1X2dlbV9v YmplY3RfZ2V0X3BhZ2VzX2ludGVybmFsLAo+ICsJLnB1dF9wYWdlcyA9IGk5MTVfZ2VtX29iamVj dF9wdXRfcGFnZXNfaW50ZXJuYWwsCj4gK307Cj4gKwo+ICsvKioKPiArICogQ3JlYXRlcyBhIG5l dyBvYmplY3QgdGhhdCB3cmFwcyBzb21lIGludGVybmFsIG1lbW9yeSBmb3IgcHJpdmF0ZSB1c2Uu Cj4gKyAqIFRoaXMgb2JqZWN0IGlzIG5vdCBiYWNrZWQgYnkgc3dhcHBhYmxlIHN0b3JhZ2UsIGFu ZCBhcyBzdWNoIGl0cyBjb250ZW50cwo+ICsgKiBhcmUgdm9sYXRpbGUgYW5kIG9ubHkgdmFsaWQg d2hpbHN0IHBpbm5lZC4gSWYgdGhlIG9iamVjdCBpcyByZWFwZWQgYnkgdGhlCj4gKyAqIHNocmlu a2VyLCBpdHMgcGFnZXMgYW5kIGRhdGEgd2lsbCBiZSBkaXNjYXJkZWQuIEVxdWFsbHksIGl0IGlz IG5vdCBhIGZ1bGwKPiArICogR0VNIG9iamVjdCBhbmQgc28gbm90IHZhbGlkIGZvciBhY2Nlc3Mg ZnJvbSB1c2Vyc3BhY2UuIFRoaXMgbWFrZXMgaXQgdXNlZnVsCj4gKyAqIGZvciBoYXJkd2FyZSBp bnRlcmZhY2VzIGxpa2UgcmluZ2J1ZmZlcnMgKHdoaWNoIGFyZSBwaW5uZWQgZnJvbSB0aGUgdGlt ZQo+ICsgKiB0aGUgcmVxdWVzdCBpcyB3cml0dGVuIHRvIHRoZSB0aW1lIHRoZSBoYXJkd2FyZSBz dG9wcyBhY2Nlc3NpbmcgaXQpLCBidXQKPiArICogbm90IGZvciBjb250ZXh0cyAod2hpY2ggbmVl ZCB0byBiZSBwcmVzZXJ2ZWQgd2hlbiBub3QgYWN0aXZlIGZvciBsYXRlcgo+ICsgKiByZXVzZSku IE5vdGUgdGhhdCBpdCBpcyBub3QgY2xlYXJlZCB1cG9uIGFsbG9jYXRpb24uCj4gKyAqLwo+ICtz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqCj4gK2k5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50 ZXJuYWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gKwkJCQl1bnNpZ25lZCBpbnQg c2l6ZSkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiArCj4gKwlv YmogPSBpOTE1X2dlbV9vYmplY3RfYWxsb2MoJmk5MTUtPmRybSk7Cj4gKwlpZiAoIW9iaikKPiAr CQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiArCj4gKwlkcm1fZ2VtX3ByaXZhdGVfb2JqZWN0 X2luaXQoJmk5MTUtPmRybSwgJm9iai0+YmFzZSwgc2l6ZSk7Cj4gKwlpOTE1X2dlbV9vYmplY3Rf aW5pdChvYmosICZpOTE1X2dlbV9vYmplY3RfaW50ZXJuYWxfb3BzKTsKPiArCj4gKwlvYmotPmJh c2Uud3JpdGVfZG9tYWluID0gSTkxNV9HRU1fRE9NQUlOX0NQVTsKPiArCW9iai0+YmFzZS5yZWFk X2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fQ1BVOwo+ICsJb2JqLT5jYWNoZV9sZXZlbCA9IEhB U19MTEMoaTkxNSkgPyBJOTE1X0NBQ0hFX0xMQyA6IEk5MTVfQ0FDSEVfTk9ORTsKPiArCj4gKwly ZXR1cm4gb2JqOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX3JlbmRlcl9zdGF0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVy X3N0YXRlLmMKPiBpbmRleCBlN2MzZGJjYzZjODEuLjIxN2UwYjU4YjkzMCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJfc3RhdGUuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5jCj4gQEAgLTE4Nyw3ICsx ODcsNyBAQCBpbnQgaTkxNV9nZW1fcmVuZGVyX3N0YXRlX2luaXQoc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEpCj4gICAJaWYgKHNvLnJvZGF0YS0+YmF0Y2hfaXRlbXMgKiA0ID4gNDA5 NikKPiAgIAkJcmV0dXJuIC1FSU5WQUw7Cj4gICAKPiAtCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9j cmVhdGUoJnJlcS0+aTkxNS0+ZHJtLCA0MDk2KTsKPiArCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9j cmVhdGVfaW50ZXJuYWwocmVxLT5pOTE1LCA0MDk2KTsKPiAgIAlpZiAoSVNfRVJSKG9iaikpCj4g ICAJCXJldHVybiBQVFJfRVJSKG9iaik7Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9l bmdpbmVfY3MuYwo+IGluZGV4IDJkYzk0ODEyYmVhNS4uYzdhYzdlMjZmMmRjIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPiBAQCAtMjY0LDcgKzI2NCw3IEBAIGlu dCBpbnRlbF9lbmdpbmVfY3JlYXRlX3NjcmF0Y2goc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLCBpbnQgc2l6ZSkKPiAgIAo+ICAgCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3Rv bGVuKCZlbmdpbmUtPmk5MTUtPmRybSwgc2l6ZSk7Cj4gICAJaWYgKCFvYmopCj4gLQkJb2JqID0g aTkxNV9nZW1fb2JqZWN0X2NyZWF0ZSgmZW5naW5lLT5pOTE1LT5kcm0sIHNpemUpOwo+ICsJCW9i aiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwoZW5naW5lLT5pOTE1LCBzaXplKTsK PiAgIAlpZiAoSVNfRVJSKG9iaikpIHsKPiAgIAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gYWxsb2Nh dGUgc2NyYXRjaCBwYWdlXG4iKTsKPiAgIAkJcmV0dXJuIFBUUl9FUlIob2JqKTsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gaW5kZXggZTI5ZTg0ODEzMjM0Li4yY2Uy OGQ0MWY0MDUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4g QEAgLTE3ODQsOSArMTc4NCwxMCBAQCBzdGF0aWMgaW50IGluaXRfc3RhdHVzX3BhZ2Uoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmo7Cj4gICAJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gICAJdW5zaWduZWQgaW50IGZsYWdz Owo+ICsJdm9pZCAqdmFkZHI7Cj4gICAJaW50IHJldDsKPiAgIAo+IC0Jb2JqID0gaTkxNV9nZW1f b2JqZWN0X2NyZWF0ZSgmZW5naW5lLT5pOTE1LT5kcm0sIDQwOTYpOwo+ICsJb2JqID0gaTkxNV9n ZW1fb2JqZWN0X2NyZWF0ZV9pbnRlcm5hbChlbmdpbmUtPmk5MTUsIDQwOTYpOwo+ICAgCWlmIChJ U19FUlIob2JqKSkgewo+ICAgCQlEUk1fRVJST1IoIkZhaWxlZCB0byBhbGxvY2F0ZSBzdGF0dXMg cGFnZVxuIik7Cj4gICAJCXJldHVybiBQVFJfRVJSKG9iaik7Cj4gQEAgLTE4MTksMTUgKzE4MjAs MjIgQEAgc3RhdGljIGludCBpbml0X3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKPiAgIAlpZiAocmV0KQo+ICAgCQlnb3RvIGVycjsKPiAgIAo+ICsJdmFkZHIgPSBp OTE1X2dlbV9vYmplY3RfcGluX21hcChvYmosIEk5MTVfTUFQX1dCKTsKPiArCWlmIChJU19FUlIo dmFkZHIpKSB7Cj4gKwkJcmV0ID0gUFRSX0VSUih2YWRkcik7Cj4gKwkJZ290byBlcnJfdW5waW47 Cj4gKwl9Cj4gKwo+ICAgCWVuZ2luZS0+c3RhdHVzX3BhZ2Uudm1hID0gdm1hOwo+ICAgCWVuZ2lu ZS0+c3RhdHVzX3BhZ2UuZ2d0dF9vZmZzZXQgPSBpOTE1X2dndHRfb2Zmc2V0KHZtYSk7Cj4gLQll bmdpbmUtPnN0YXR1c19wYWdlLnBhZ2VfYWRkciA9Cj4gLQkJaTkxNV9nZW1fb2JqZWN0X3Bpbl9t YXAob2JqLCBJOTE1X01BUF9XQik7Cj4gKwllbmdpbmUtPnN0YXR1c19wYWdlLnBhZ2VfYWRkciA9 IG1lbXNldCh2YWRkciwgMCwgNDA5Nik7Cj4gICAKPiAgIAlEUk1fREVCVUdfRFJJVkVSKCIlcyBo d3Mgb2Zmc2V0OiAweCUwOHhcbiIsCj4gICAJCQkgZW5naW5lLT5uYW1lLCBpOTE1X2dndHRfb2Zm c2V0KHZtYSkpOwo+ICAgCXJldHVybiAwOwo+ICAgCj4gK2Vycl91bnBpbjoKPiArCWk5MTVfdm1h X3VucGluKHZtYSk7Cj4gICBlcnI6Cj4gICAJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwo+ICAg CXJldHVybiByZXQ7CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK