From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 12/41] drm/i915: Introduce an internal allocator for disposable private objects Date: Thu, 20 Oct 2016 17:22:23 +0100 Message-ID: <2eb24431-3ee5-5c87-8748-f3842b153316@linux.intel.com> References: <20161020150423.4560-1-chris@chris-wilson.co.uk> <20161020150423.4560-13-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 mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id E6AFA6EBD8 for ; Thu, 20 Oct 2016 16:22:25 +0000 (UTC) In-Reply-To: <20161020150423.4560-13-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 Ck9uIDIwLzEwLzIwMTYgMTY6MDMsIENocmlzIFdpbHNvbiB3cm90ZToKPiBRdWl0ZSBhIGZldyBv ZiBvdXIgb2JqZWN0cyB1c2VkIGZvciBpbnRlcm5hbCBoYXJkd2FyZSBwcm9ncmFtbWluZyBkbyBu b3QKPiBiZW5lZml0IGZyb20gYmVpbmcgc3dhcHBhYmxlIG9yIGZyb20gYmVpbmcgemVybyBpbml0 aWFsaXNlZC4gQXMgc3VjaAo+IHRoZXkgZG8gbm90IGJlbmVmaXQgZnJvbSB1c2luZyBhIHNobWVt ZnMgYmFja2luZyBzdG9yYWdlIGFuZCBzaW5jZSB0aGV5Cj4gYXJlIGludGVybmFsIGFuZCBuZXZl ciBkaXJlY3RseSBleHBvc2VkIHRvIHRoZSB1c2VyLCB3ZSBkbyBub3QgbmVlZCB0bwo+IHdvcnJ5 IGFib3V0IHByb3ZpZGluZyBhIGZpbHAuIEZvciB0aGVzZSB3ZSBjYW4gdXNlIGFuCj4gZHJtX2k5 MTVfZ2VtX29iamVjdCB3cmFwcGVyIGFyb3VuZCBhIHNnX3RhYmxlIG9mIHBsYWluIHN0cnVjdCBw YWdlLiBUaGV5Cj4gYXJlIG5vdCBzd2FwIGJhY2tlZCBhbmQgbm90IGF1dG9tYXRpY2FsbHkgcGlu bmVkLiBJZiB0aGV5IGFyZSByZWFwZWQKPiBieSB0aGUgc2hyaW5rZXIsIHRoZSBwYWdlcyBhcmUg cmVsZWFzZWQgYW5kIHRoZSBjb250ZW50cyBkaXNjYXJkZWQuIEZvcgo+IHRoZSBpbnRlcm5hbCB1 c2UgY2FzZSwgdGhpcyBpcyBmaW5lIGFzIGZvciBleGFtcGxlLCByaW5nYnVmZmVycyBhcmUKPiBw aW5uZWQgZnJvbSBiZWluZyB3cml0dGVuIGJ5IGEgcmVxdWVzdCB0byBiZSByZWFkIGJ5IHRoZSBo YXJkd2FyZS4gT25jZQo+IHRoZXkgYXJlIGlkbGUsIHRoZXkgY2FuIGJlIGRpc2NhcmRlZCBlbnRp cmVseS4gQXMgc3VjaCB0aGV5IGFyZSBhIGdvb2QKPiBtYXRjaCBmb3IgZXhlY2xpc3QgcmluZ2J1 ZmZlcnMgYW5kIGEgc21hbGwgdmFyaWV0eSBvZiBvdGhlciBpbnRlcm5hbAo+IG9iamVjdHMuCj4K PiBJbiB0aGUgZmlyc3QgaXRlcmF0aW9uLCB0aGlzIGlzIGxpbWl0ZWQgdG8gdGhlIHNjcmF0Y2gg YmF0Y2ggYnVmZmVycyB3ZQo+IHVzZSAoZm9yIGNvbW1hbmQgcGFyc2luZyBhbmQgc3RhdGUgaW5p dGlhbGlzYXRpb24pLgoKQW5kIHRoZSBzdGF0dXMgcGFnZS4KCj4KPiB2MjogQWxsb2NhdGUgcGh5 c2ljYWxseSBjb250aWd1b3VzIHBhZ2VzLCB3aGVyZSBwb3NzaWJsZS4KPiB2MzogUmVkdWNlIG1h eGltdW0gb3JkZXIgb24gc3Vic2VxdWVudCByZXF1ZXN0cyBmb2xsb3dpbmcgYW4gYWxsb2NhdGlv bgo+IGZhaWx1cmUuCj4KPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlz LXdpbHNvbi5jby51az4KPiBDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGxpbnV4 LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAg ICAgICAgICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAg ICAgICAgICB8ICAgNSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2JhdGNoX3Bv b2wuYyAgIHwgIDI3ICsrLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ludGVy bmFsLmMgICAgIHwgMTY3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJfc3RhdGUuYyB8ICAgMiArLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyAgICAgICB8ICAgMiArLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgICAgICB8ICAxNCArKy0KPiAgNyBmaWxlcyBj aGFuZ2VkLCAxOTQgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9pbnRlcm5hbC5jCj4KPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9NYWtlZmlsZQo+IGluZGV4IDYxMjM0MDA5N2Y0Yi4uN2ZhYTA0YzkxZTFhIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvTWFrZWZpbGUKPiBAQCAtMzUsNiArMzUsNyBAQCBpOTE1LXkgKz0gaTkxNV9jbWRf cGFyc2VyLm8gXAo+ICAJICBpOTE1X2dlbV9leGVjYnVmZmVyLm8gXAo+ICAJICBpOTE1X2dlbV9m ZW5jZS5vIFwKPiAgCSAgaTkxNV9nZW1fZ3R0Lm8gXAo+ICsJICBpOTE1X2dlbV9pbnRlcm5hbC5v IFwKPiAgCSAgaTkxNV9nZW0ubyBcCj4gIAkgIGk5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5vIFwKPiAg CSAgaTkxNV9nZW1fcmVxdWVzdC5vIFwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCA0 ZTkzYzM3OTdkOTAuLmUyNjdlMjBiZGNkYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ IEBAIC0zNTQzLDYgKzM1NDMsMTEgQEAgaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW5fZm9y X3ByZWFsbG9jYXRlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQkJCSAgICAgICB1MzIg Z3R0X29mZnNldCwKPiAgCQkJCQkgICAgICAgdTMyIHNpemUpOwo+Cj4gKy8qIGk5MTVfZ2VtX2lu dGVybmFsLmMgKi8KPiArc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgo+ICtpOTE1X2dlbV9v YmplY3RfY3JlYXRlX2ludGVybmFsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiArCQkJCXVuc2lnbmVkIGludCBzaXplKTsKPiArCj4gIC8qIGk5MTVfZ2VtX3Nocmlua2VyLmMg Ki8KPiAgdW5zaWduZWQgbG9uZyBpOTE1X2dlbV9zaHJpbmsoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ICAJCQkgICAgICB1bnNpZ25lZCBsb25nIHRhcmdldCwKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fYmF0Y2hfcG9vbC5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fYmF0Y2hfcG9vbC5jCj4gaW5kZXggY2IyNWNhZDMzMThj Li5hYTRlMWUwNDNiNGUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fYmF0Y2hfcG9vbC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fYmF0 Y2hfcG9vbC5jCj4gQEAgLTk3LDkgKzk3LDkgQEAgaTkxNV9nZW1fYmF0Y2hfcG9vbF9nZXQoc3Ry dWN0IGk5MTVfZ2VtX2JhdGNoX3Bvb2wgKnBvb2wsCj4gIAkJCXNpemVfdCBzaXplKQo+ICB7Cj4g IAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gTlVMTDsKPiAtCXN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICp0bXAsICpuZXh0Owo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKnRtcDsKPiAgCXN0cnVjdCBsaXN0X2hlYWQgKmxpc3Q7Cj4gLQlpbnQgbjsKPiArCWludCBu LCByZXQ7Cj4KPiAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnBvb2wtPmVuZ2luZS0+aTkxNS0+ZHJt LnN0cnVjdF9tdXRleCk7Cj4KPiBAQCAtMTEyLDE5ICsxMTIsMTIgQEAgaTkxNV9nZW1fYmF0Y2hf cG9vbF9nZXQoc3RydWN0IGk5MTVfZ2VtX2JhdGNoX3Bvb2wgKnBvb2wsCj4gIAkJbiA9IEFSUkFZ X1NJWkUocG9vbC0+Y2FjaGVfbGlzdCkgLSAxOwo+ICAJbGlzdCA9ICZwb29sLT5jYWNoZV9saXN0 W25dOwo+Cj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodG1wLCBuZXh0LCBsaXN0LCBiYXRj aF9wb29sX2xpbmspIHsKPiArCWxpc3RfZm9yX2VhY2hfZW50cnkodG1wLCBsaXN0LCBiYXRjaF9w b29sX2xpbmspIHsKPiAgCQkvKiBUaGUgYmF0Y2hlcyBhcmUgc3RyaWN0bHkgTFJVIG9yZGVyZWQg Ki8KPiAgCQlpZiAoIWk5MTVfZ2VtX2FjdGl2ZV9pc19pZGxlKCZ0bXAtPmxhc3RfcmVhZFtwb29s LT5lbmdpbmUtPmlkXSwKPiAgCQkJCQkgICAgICZ0bXAtPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgp KQo+ICAJCQlicmVhazsKPgo+IC0JCS8qIFdoaWxlIHdlJ3JlIGxvb3BpbmcsIGRvIHNvbWUgY2xl YW4gdXAgKi8KPiAtCQlpZiAodG1wLT5tYWR2ID09IF9fSTkxNV9NQURWX1BVUkdFRCkgewo+IC0J CQlsaXN0X2RlbCgmdG1wLT5iYXRjaF9wb29sX2xpbmspOwo+IC0JCQlpOTE1X2dlbV9vYmplY3Rf cHV0KHRtcCk7Cj4gLQkJCWNvbnRpbnVlOwo+IC0JCX0KPiAtCj4gIAkJaWYgKHRtcC0+YmFzZS5z aXplID49IHNpemUpIHsKPiAgCQkJb2JqID0gdG1wOwo+ICAJCQlicmVhazsKPiBAQCAtMTMyLDE5 ICsxMjUsMTUgQEAgaTkxNV9nZW1fYmF0Y2hfcG9vbF9nZXQoc3RydWN0IGk5MTVfZ2VtX2JhdGNo X3Bvb2wgKnBvb2wsCj4gIAl9Cj4KPiAgCWlmIChvYmogPT0gTlVMTCkgewo+IC0JCWludCByZXQ7 Cj4gLQo+IC0JCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGUoJnBvb2wtPmVuZ2luZS0+aTkx NS0+ZHJtLCBzaXplKTsKPiArCQlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX2ludGVybmFs KHBvb2wtPmVuZ2luZS0+aTkxNSwgc2l6ZSk7Cj4gIAkJaWYgKElTX0VSUihvYmopKQo+ICAJCQly ZXR1cm4gb2JqOwo+IC0KPiAtCQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKG9iaik7 Cj4gLQkJaWYgKHJldCkKPiAtCQkJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiAtCj4gLQkJb2JqLT5t YWR2ID0gSTkxNV9NQURWX0RPTlRORUVEOwo+ICAJfQo+Cj4gKwlyZXQgPSBpOTE1X2dlbV9vYmpl Y3RfZ2V0X3BhZ2VzKG9iaik7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiBFUlJfUFRSKHJldCk7 Cj4gKwo+ICAJbGlzdF9tb3ZlX3RhaWwoJm9iai0+YmF0Y2hfcG9vbF9saW5rLCBsaXN0KTsKPiAg CWk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKPiAgCXJldHVybiBvYmo7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ludGVybmFsLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9pbnRlcm5hbC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK PiBpbmRleCAwMDAwMDAwMDAwMDAuLmU4NzFiZTQxOWZiZAo+IC0tLSAvZGV2L251bGwKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9pbnRlcm5hbC5jCj4gQEAgLTAsMCArMSwx NjcgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTQtMjAxNiBJbnRlbCBDb3Jwb3JhdGlv bgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn ZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUg YW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ICsg KiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcg d2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnks IG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ICsgKiBhbmQvb3Igc2Vs bCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0 aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBm b2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+ICsgKiBw YXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwg cG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUg SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVT UyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJS QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRI RSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBE QU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBP UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVB TElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ICsgKgo+ICsgKi8KPiArCj4gKyNpbmNsdWRl IDxkcm0vZHJtUC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+Cj4gKyNpbmNsdWRlICJp OTE1X2Rydi5oIgo+ICsKPiArI2RlZmluZSBRVUlFVCAoX19HRlBfTk9SRVRSWSB8IF9fR0ZQX05P V0FSTikKPiArCj4gK3N0YXRpYyB2b2lkIGludGVybmFsX2ZyZWVfcGFnZXMoc3RydWN0IHNnX3Rh YmxlICpzdCkKPiArewo+ICsJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsKPiArCj4gKwlmb3IgKHNn ID0gc3QtPnNnbDsgc2c7IHNnID0gX19zZ19uZXh0KHNnKSkKPiArCQlfX2ZyZWVfcGFnZXMoc2df cGFnZShzZyksIGdldF9vcmRlcihzZy0+bGVuZ3RoKSk7Cj4gKwo+ICsJc2dfZnJlZV90YWJsZShz dCk7Cj4gKwlrZnJlZShzdCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgaTkxNV9nZW1fb2JqZWN0 X2dldF9wYWdlc19pbnRlcm5hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICt7 Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUob2JqLT5iYXNlLmRl dik7Cj4gKwl1bnNpZ25lZCBpbnQgbnBhZ2VzID0gb2JqLT5iYXNlLnNpemUgLyBQQUdFX1NJWkU7 Cj4gKwlzdHJ1Y3Qgc2dfdGFibGUgKnN0Owo+ICsJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsKPiAr CWludCBtYXhfb3JkZXI7Cj4gKwlnZnBfdCBnZnA7Cj4gKwo+ICsJc3QgPSBrbWFsbG9jKHNpemVv Zigqc3QpLCBHRlBfS0VSTkVMKTsKPiArCWlmICghc3QpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4g Kwo+ICsJaWYgKHNnX2FsbG9jX3RhYmxlKHN0LCBucGFnZXMsIEdGUF9LRVJORUwpKSB7Cj4gKwkJ a2ZyZWUoc3QpOwo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsJfQo+ICsKPiArCXNnID0gc3QtPnNn bDsKPiArCXN0LT5uZW50cyA9IDA7Cj4gKwo+ICsJbWF4X29yZGVyID0gTUFYX09SREVSOwo+ICsj aWZkZWYgQ09ORklHX1NXSU9UTEIKPiArCWlmIChzd2lvdGxiX25yX3RibCgpKQo+ICsJCW1heF9v cmRlciA9IG1pbihtYXhfb3JkZXIsIGlsb2cyKElPX1RMQl9TRUdTSVpFKSk7Cj4gKyNlbmRpZgoK SSBjb3VsZG4ndCBmaWd1cmUgb3V0IHdoYXQgSU9fVExCX1NFR1NJWkUgYWN0dWFsbHkgaXMgaW4g c29tZSBtaW51dGVzIG9mIApjcm9zcy1yZWZlcmVuY2luZy4gRGlkIG5vdCBzZWVtIHRvIGJlIGlu IHVuaXRzIG9mIGJ5dGVzIGFjY29yZGluZyB0byAKc3dpb3RsYi5oLgoKSW4gZWl0aGVyIGNhc2Ug bXkgcXVlc3Rpb24gaXMgLSB3aHkgdXNlIGRpZmZlcmVudCBwYXJhbWV0ZXJzIHRoYW4gCnN3aW90 bGJfbWF4X3NpemUgeW91IHJlY2VudGx5IGFkZGVkIHRvIGk5MTVfZ2VtLmM/Cgo+ICsKPiArCWdm cCA9IEdGUF9LRVJORUwgfCBfX0dGUF9ISUdITUVNIHwgX19HRlBfUkVDTEFJTUFCTEU7Cj4gKwlp ZiAoSVNfQ1JFU1RMSU5FKGk5MTUpIHx8IElTX0JST0FEV0FURVIoaTkxNSkpIHsKPiArCQkvKiA5 NjVnbSBjYW5ub3QgcmVsb2NhdGUgb2JqZWN0cyBhYm92ZSA0R2lCLiAqLwo+ICsJCWdmcCAmPSB+ X19HRlBfSElHSE1FTTsKPiArCQlnZnAgfD0gX19HRlBfRE1BMzI7Cj4gKwl9Cj4gKwo+ICsJZG8g ewo+ICsJCWludCBvcmRlciA9IG1pbihmbHMobnBhZ2VzKSAtIDEsIG1heF9vcmRlcik7Cj4gKwkJ c3RydWN0IHBhZ2UgKnBhZ2U7Cj4gKwo+ICsJCWRvIHsKPiArCQkJcGFnZSA9IGFsbG9jX3BhZ2Vz KGdmcCB8IChvcmRlciA/IFFVSUVUIDogMCksIG9yZGVyKTsKPiArCQkJaWYgKHBhZ2UpCj4gKwkJ CQlicmVhazsKPiArCQkJaWYgKCFvcmRlci0tKQo+ICsJCQkJZ290byBlcnI7Cj4gKwo+ICsJCQkv KiBMaW1pdCBzdWJzZXF1ZW50IGFsbG9jYXRpb25zIGFzIHdlbGwgKi8KPiArCQkJbWF4X29yZGVy ID0gb3JkZXI7Cj4gKwkJfSB3aGlsZSAoMSk7Cj4gKwo+ICsJCXNnX3NldF9wYWdlKHNnLCBwYWdl LCBQQUdFX1NJWkUgPDwgb3JkZXIsIDApOwo+ICsJCXN0LT5uZW50cysrOwo+ICsKPiArCQlucGFn ZXMgLT0gMSA8PCBvcmRlcjsKPiArCQlpZiAoIW5wYWdlcykgewo+ICsJCQlzZ19tYXJrX2VuZChz Zyk7Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiArCj4gKwkJc2cgPSBfX3NnX25leHQoc2cpOwo+ICsJ fSB3aGlsZSAoMSk7Cj4gKwlvYmotPnBhZ2VzID0gc3Q7Cj4gKwo+ICsJaWYgKGk5MTVfZ2VtX2d0 dF9wcmVwYXJlX29iamVjdChvYmopKSB7Cj4gKwkJb2JqLT5wYWdlcyA9IE5VTEw7Cj4gKwkJZ290 byBlcnI7Cj4gKwl9Cj4gKwo+ICsJLyogTWFyayB0aGUgcGFnZXMgYXMgZG9udG5lZWQgd2hpbHN0 IHRoZXkgYXJlIHN0aWxsIHBpbm5lZC4gQXMgc29vbgo+ICsJICogYXMgdGhleSBhcmUgdW5waW5u ZWQgdGhleSBhcmUgYWxsb3dlZCB0byBiZSByZWFwZWQgYnkgdGhlIHNocmlua2VyLAo+ICsJICog YW5kIHRoZSBjYWxsZXIgaXMgZXhwZWN0ZWQgdG8gcmVwb3B1bGF0ZSAtIHRoZSBjb250ZW50cyBv ZiB0aGlzCj4gKwkgKiBvYmplY3QgYXJlIG9ubHkgdmFsaWQgd2hpbHN0IGFjdGl2ZSBhbmQgcGlu bmVkLgo+ICsJICovCj4gKwlvYmotPm1hZHYgPSBJOTE1X01BRFZfRE9OVE5FRUQ7Cj4gKwlyZXR1 cm4gMDsKPiArCj4gK2VycjoKPiArCXNnX21hcmtfZW5kKHNnKTsKPiArCWludGVybmFsX2ZyZWVf cGFnZXMoc3QpOwo+ICsJcmV0dXJuIC1FTk9NRU07Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGk5 MTVfZ2VtX29iamVjdF9wdXRfcGFnZXNfaW50ZXJuYWwoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaikKPiArewo+ICsJaTkxNV9nZW1fZ3R0X2ZpbmlzaF9vYmplY3Qob2JqKTsKPiArCWlu dGVybmFsX2ZyZWVfcGFnZXMob2JqLT5wYWdlcyk7Cj4gKwo+ICsJb2JqLT5kaXJ0eSA9IDA7Cj4g KwlvYmotPm1hZHYgPSBJOTE1X01BRFZfV0lMTE5FRUQ7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdF9vcHMgaTkxNV9nZW1fb2JqZWN0X2ludGVybmFs X29wcyA9IHsKPiArCS5mbGFncyA9IEk5MTVfR0VNX09CSkVDVF9IQVNfU1RSVUNUX1BBR0UsCj4g KwkuZ2V0X3BhZ2VzID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19pbnRlcm5hbCwKPiArCS5w dXRfcGFnZXMgPSBpOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzX2ludGVybmFsLAo+ICt9Owo+ICsK PiArLyoqCj4gKyAqIENyZWF0ZXMgYSBuZXcgb2JqZWN0IHRoYXQgd3JhcHMgc29tZSBpbnRlcm5h bCBtZW1vcnkgZm9yIHByaXZhdGUgdXNlLgo+ICsgKiBUaGlzIG9iamVjdCBpcyBub3QgYmFja2Vk IGJ5IHN3YXBwYWJsZSBzdG9yYWdlLCBhbmQgYXMgc3VjaCBpdHMgY29udGVudHMKPiArICogYXJl IHZvbGF0aWxlIGFuZCBvbmx5IHZhbGlkIHdoaWxzdCBwaW5uZWQuIElmIHRoZSBvYmplY3QgaXMg cmVhcGVkIGJ5IHRoZQo+ICsgKiBzaHJpbmtlciwgaXRzIHBhZ2VzIGFuZCBkYXRhIHdpbGwgYmUg ZGlzY2FyZGVkLiBFcXVhbGx5LCBpdCBpcyBub3QgYSBmdWxsCj4gKyAqIEdFTSBvYmplY3QgYW5k IHNvIG5vdCB2YWxpZCBmb3IgYWNjZXNzIGZyb20gdXNlcnNwYWNlLiBUaGlzIG1ha2VzIGl0IHVz ZWZ1bAo+ICsgKiBmb3IgaGFyZHdhcmUgaW50ZXJmYWNlcyBsaWtlIHJpbmdidWZmZXJzICh3aGlj aCBhcmUgcGlubmVkIGZyb20gdGhlIHRpbWUKPiArICogdGhlIHJlcXVlc3QgaXMgd3JpdHRlbiB0 byB0aGUgdGltZSB0aGUgaGFyZHdhcmUgc3RvcHMgYWNjZXNzaW5nIGl0KSwgYnV0Cj4gKyAqIG5v dCBmb3IgY29udGV4dHMgKHdoaWNoIG5lZWQgdG8gYmUgcHJlc2VydmVkIHdoZW4gbm90IGFjdGl2 ZSBmb3IgbGF0ZXIKPiArICogcmV1c2UpLiBOb3RlIHRoYXQgaXQgaXMgbm90IGNsZWFyZWQgdXBv biBhbGxvY2F0aW9uLgo+ICsgKi8KPiArc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgo+ICtp OTE1X2dlbV9vYmplY3RfY3JlYXRlX2ludGVybmFsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LAo+ICsJCQkJdW5zaWduZWQgaW50IHNpemUpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmo7Cj4gKwo+ICsJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2FsbG9jKCZpOTE1 LT5kcm0pOwo+ICsJaWYgKCFvYmopCj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gKwo+ ICsJZHJtX2dlbV9wcml2YXRlX29iamVjdF9pbml0KCZpOTE1LT5kcm0sICZvYmotPmJhc2UsIHNp emUpOwo+ICsJaTkxNV9nZW1fb2JqZWN0X2luaXQob2JqLCAmaTkxNV9nZW1fb2JqZWN0X2ludGVy bmFsX29wcyk7Cj4gKwo+ICsJb2JqLT5iYXNlLndyaXRlX2RvbWFpbiA9IEk5MTVfR0VNX0RPTUFJ Tl9DUFU7Cj4gKwlvYmotPmJhc2UucmVhZF9kb21haW5zID0gSTkxNV9HRU1fRE9NQUlOX0NQVTsK PiArCW9iai0+Y2FjaGVfbGV2ZWwgPSBIQVNfTExDKGk5MTUpID8gSTkxNV9DQUNIRV9MTEMgOiBJ OTE1X0NBQ0hFX05PTkU7Cj4gKwo+ICsJcmV0dXJuIG9iajsKPiArfQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJfc3RhdGUuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5jCj4gaW5kZXggZTdjM2RiY2M2YzgxLi4y MTdlMGI1OGI5MzAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f cmVuZGVyX3N0YXRlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5k ZXJfc3RhdGUuYwo+IEBAIC0xODcsNyArMTg3LDcgQEAgaW50IGk5MTVfZ2VtX3JlbmRlcl9zdGF0 ZV9pbml0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAJaWYgKHNvLnJvZGF0 YS0+YmF0Y2hfaXRlbXMgKiA0ID4gNDA5NikKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPgo+IC0Jb2Jq ID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZSgmcmVxLT5pOTE1LT5kcm0sIDQwOTYpOwo+ICsJb2Jq ID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9pbnRlcm5hbChyZXEtPmk5MTUsIDQwOTYpOwo+ICAJ aWYgKElTX0VSUihvYmopKQo+ICAJCXJldHVybiBQVFJfRVJSKG9iaik7Cj4KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+IGluZGV4IDJkYzk0ODEyYmVhNS4uYzdhYzdlMjZm MmRjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPiBAQCAtMjY0 LDcgKzI2NCw3IEBAIGludCBpbnRlbF9lbmdpbmVfY3JlYXRlX3NjcmF0Y2goc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lLCBpbnQgc2l6ZSkKPgo+ICAJb2JqID0gaTkxNV9nZW1fb2JqZWN0 X2NyZWF0ZV9zdG9sZW4oJmVuZ2luZS0+aTkxNS0+ZHJtLCBzaXplKTsKPiAgCWlmICghb2JqKQo+ IC0JCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGUoJmVuZ2luZS0+aTkxNS0+ZHJtLCBzaXpl KTsKPiArCQlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX2ludGVybmFsKGVuZ2luZS0+aTkx NSwgc2l6ZSk7Cj4gIAlpZiAoSVNfRVJSKG9iaikpIHsKPiAgCQlEUk1fRVJST1IoIkZhaWxlZCB0 byBhbGxvY2F0ZSBzY3JhdGNoIHBhZ2VcbiIpOwo+ICAJCXJldHVybiBQVFJfRVJSKG9iaik7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IGluZGV4IGUyOWU4NDgxMzIz NC4uMmNlMjhkNDFmNDA1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZm ZXIuYwo+IEBAIC0xNzg0LDkgKzE3ODQsMTAgQEAgc3RhdGljIGludCBpbml0X3N0YXR1c19wYWdl KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmo7Cj4gIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAgCXVuc2lnbmVkIGludCBm bGFnczsKPiArCXZvaWQgKnZhZGRyOwo+ICAJaW50IHJldDsKPgo+IC0Jb2JqID0gaTkxNV9nZW1f b2JqZWN0X2NyZWF0ZSgmZW5naW5lLT5pOTE1LT5kcm0sIDQwOTYpOwo+ICsJb2JqID0gaTkxNV9n ZW1fb2JqZWN0X2NyZWF0ZV9pbnRlcm5hbChlbmdpbmUtPmk5MTUsIDQwOTYpOwo+ICAJaWYgKElT X0VSUihvYmopKSB7Cj4gIAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gYWxsb2NhdGUgc3RhdHVzIHBh Z2VcbiIpOwo+ICAJCXJldHVybiBQVFJfRVJSKG9iaik7Cj4gQEAgLTE4MTksMTUgKzE4MjAsMjIg QEAgc3RhdGljIGludCBpbml0X3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPiAgCWlmIChyZXQpCj4gIAkJZ290byBlcnI7Cj4KPiArCXZhZGRyID0gaTkxNV9nZW1f b2JqZWN0X3Bpbl9tYXAob2JqLCBJOTE1X01BUF9XQik7Cj4gKwlpZiAoSVNfRVJSKHZhZGRyKSkg ewo+ICsJCXJldCA9IFBUUl9FUlIodmFkZHIpOwo+ICsJCWdvdG8gZXJyX3VucGluOwo+ICsJfQo+ ICsKPiAgCWVuZ2luZS0+c3RhdHVzX3BhZ2Uudm1hID0gdm1hOwo+ICAJZW5naW5lLT5zdGF0dXNf cGFnZS5nZ3R0X29mZnNldCA9IGk5MTVfZ2d0dF9vZmZzZXQodm1hKTsKPiAtCWVuZ2luZS0+c3Rh dHVzX3BhZ2UucGFnZV9hZGRyID0KPiAtCQlpOTE1X2dlbV9vYmplY3RfcGluX21hcChvYmosIEk5 MTVfTUFQX1dCKTsKPiArCWVuZ2luZS0+c3RhdHVzX3BhZ2UucGFnZV9hZGRyID0gbWVtc2V0KHZh ZGRyLCAwLCA0MDk2KTsKPgo+ICAJRFJNX0RFQlVHX0RSSVZFUigiJXMgaHdzIG9mZnNldDogMHgl MDh4XG4iLAo+ICAJCQkgZW5naW5lLT5uYW1lLCBpOTE1X2dndHRfb2Zmc2V0KHZtYSkpOwo+ICAJ cmV0dXJuIDA7Cj4KPiArZXJyX3VucGluOgo+ICsJaTkxNV92bWFfdW5waW4odm1hKTsKPiAgZXJy Ogo+ICAJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwo+ICAJcmV0dXJuIHJldDsKPgoKUmVnYXJk cywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK