From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 11/42] drm/i915: Introduce an internal allocator for disposable private objects Date: Fri, 7 Oct 2016 17:52:47 +0100 Message-ID: References: <20161007094635.28319-1-chris@chris-wilson.co.uk> <20161007094635.28319-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 mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id AB1636EBF7 for ; Fri, 7 Oct 2016 16:52:50 +0000 (UTC) In-Reply-To: <20161007094635.28319-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 Ck9uIDA3LzEwLzIwMTYgMTA6NDYsIENocmlzIFdpbHNvbiB3cm90ZToKPiBRdWl0ZSBhIGZldyBv ZiBvdXIgb2JqZWN0cyB1c2VkIGZvciBpbnRlcm5hbCBoYXJkd2FyZSBwcm9ncmFtbWluZyBkbyBu b3QKPiBiZW5lZml0IGZyb20gYmVpbmcgc3dhcHBhYmxlIG9yIGZyb20gYmVpbmcgemVybyBpbml0 aWFsaXNlZC4gQXMgc3VjaAo+IHRoZXkgZG8gbm90IGJlbmVmaXQgZnJvbSB1c2luZyBhIHNobWVt ZnMgYmFja2luZyBzdG9yYWdlIGFuZCBzaW5jZSB0aGV5Cj4gYXJlIGludGVybmFsIGFuZCBuZXZl ciBkaXJlY3RseSBleHBvc2VkIHRvIHRoZSB1c2VyLCB3ZSBkbyBub3QgbmVlZCB0bwo+IHdvcnJ5 IGFib3V0IHByb3ZpZGluZyBhIGZpbHAuIEZvciB0aGVzZSB3ZSBjYW4gdXNlIGFuCj4gZHJtX2k5 MTVfZ2VtX29iamVjdCB3cmFwcGVyIGFyb3VuZCBhIHNnX3RhYmxlIG9mIHBsYWluIHN0cnVjdCBw YWdlLiBUaGV5Cj4gYXJlIG5vdCBzd2FwIGJhY2tlZCBhbmQgbm90IGF1dG9tYXRpY2FsbHkgcGlu bmVkLiBJZiB0aGV5IGFyZSByZWFwZWQKPiBieSB0aGUgc2hyaW5rZXIsIHRoZSBwYWdlcyBhcmUg cmVsZWFzZWQgYW5kIHRoZSBjb250ZW50cyBkaXNjYXJkZWQuIEZvcgo+IHRoZSBpbnRlcm5hbCB1 c2UgY2FzZSwgdGhpcyBpcyBmaW5lIGFzIGZvciBleGFtcGxlLCByaW5nYnVmZmVycyBhcmUKPiBw aW5uZWQgZnJvbSBiZWluZyB3cml0dGVuIGJ5IGEgcmVxdWVzdCB0byBiZSByZWFkIGJ5IHRoZSBo YXJkd2FyZS4gT25jZQo+IHRoZXkgYXJlIGlkbGUsIHRoZXkgY2FuIGJlIGRpc2NhcmRlZCBlbnRp cmVseS4gQXMgc3VjaCB0aGV5IGFyZSBhIGdvb2QKPiBtYXRjaCBmb3IgZXhlY2xpc3QgcmluZ2J1 ZmZlcnMgYW5kIGEgc21hbGwgdmFyaWV0eSBvZiBvdGhlciBpbnRlcm5hbAo+IG9iamVjdHMuCj4K PiBJbiB0aGUgZmlyc3QgaXRlcmF0aW9uLCB0aGlzIGlzIGxpbWl0ZWQgdG8gdGhlIHNjcmF0Y2gg YmF0Y2ggYnVmZmVycyB3ZQo+IHVzZSAoZm9yIGNvbW1hbmQgcGFyc2luZyBhbmQgc3RhdGUgaW5p dGlhbGlzYXRpb24pLgo+Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJp cy13aWxzb24uY28udWs+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAg ICAgICAgICAgICAgICB8ICAgMSArCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o ICAgICAgICAgICAgICB8ICAgNSArCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9i YXRjaF9wb29sLmMgICB8ICAyOCArKy0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1faW50ZXJuYWwuYyAgICAgfCAxNjEgKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJfc3RhdGUuYyB8ICAgMiArLQo+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgICAgICAgfCAgIDIgKy0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyAgICAgIHwgIDE0ICsrLQo+ ICAgNyBmaWxlcyBjaGFuZ2VkLCAxODkgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCj4g ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1faW50ZXJu YWwuYwo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBpbmRleCBhOTk4YzJiY2U3MGEuLmI5NGE5MGYz NGQyZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gQEAgLTM1LDYgKzM1LDcgQEAgaTkxNS15 ICs9IGk5MTVfY21kX3BhcnNlci5vIFwKPiAgIAkgIGk5MTVfZ2VtX2V4ZWNidWZmZXIubyBcCj4g ICAJICBpOTE1X2dlbV9mZW5jZS5vIFwKPiAgIAkgIGk5MTVfZ2VtX2d0dC5vIFwKPiArCSAgaTkx NV9nZW1faW50ZXJuYWwubyBcCj4gICAJICBpOTE1X2dlbS5vIFwKPiAgIAkgIGk5MTVfZ2VtX3Jl bmRlcl9zdGF0ZS5vIFwKPiAgIAkgIGk5MTVfZ2VtX3JlcXVlc3QubyBcCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4gaW5kZXggZmVlNWNjOTJlMmYyLi5iYWQ5N2YxZTUyNjUgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMzUzOCw2ICszNTM4LDExIEBAIGk5MTVfZ2VtX29iamVj dF9jcmVhdGVfc3RvbGVuX2Zvcl9wcmVhbGxvY2F0ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiAgIAkJCQkJICAgICAgIHUzMiBndHRfb2Zmc2V0LAo+ICAgCQkJCQkgICAgICAgdTMyIHNpemUp Owo+ICAgCj4gKy8qIGk5MTVfZ2VtX2ludGVybmFsLmMgKi8KPiArc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKgo+ICtpOTE1X2dlbV9vYmplY3RfY3JlYXRlX2ludGVybmFsKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCj4gKwkJCQl1bnNpZ25lZCBpbnQgc2l6ZSk7Cj4gKwoKV2Fzbid0IHNpemVf dCBvdXIgY29udmVudGlvbiBmb3IgR0VNIG9iamVjdHM/Cgo+ICAgLyogaTkxNV9nZW1fc2hyaW5r ZXIuYyAqLwo+ICAgdW5zaWduZWQgbG9uZyBpOTE1X2dlbV9zaHJpbmsoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCQkJICAgICAgdW5zaWduZWQgbG9uZyB0YXJnZXQsCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYwo+IGluZGV4IGNiMjVj YWQzMzE4Yy4uMzkzNGM5MTAzY2YyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2JhdGNoX3Bvb2wuYwo+IEBAIC05Nyw5ICs5Nyw5IEBAIGk5MTVfZ2VtX2JhdGNoX3Bvb2xf Z2V0KHN0cnVjdCBpOTE1X2dlbV9iYXRjaF9wb29sICpwb29sLAo+ICAgCQkJc2l6ZV90IHNpemUp Cj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IE5VTEw7Cj4gLQlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqdG1wLCAqbmV4dDsKPiArCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICp0bXA7Cj4gICAJc3RydWN0IGxpc3RfaGVhZCAqbGlzdDsKPiAtCWludCBu Owo+ICsJaW50IG4sIHJldDsKPiAgIAo+ICAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnBvb2wtPmVu Z2luZS0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAKPiBAQCAtMTEyLDE5ICsxMTIsMTIg QEAgaTkxNV9nZW1fYmF0Y2hfcG9vbF9nZXQoc3RydWN0IGk5MTVfZ2VtX2JhdGNoX3Bvb2wgKnBv b2wsCj4gICAJCW4gPSBBUlJBWV9TSVpFKHBvb2wtPmNhY2hlX2xpc3QpIC0gMTsKPiAgIAlsaXN0 ID0gJnBvb2wtPmNhY2hlX2xpc3Rbbl07Cj4gICAKPiAtCWxpc3RfZm9yX2VhY2hfZW50cnlfc2Fm ZSh0bXAsIG5leHQsIGxpc3QsIGJhdGNoX3Bvb2xfbGluaykgewo+ICsJbGlzdF9mb3JfZWFjaF9l bnRyeSh0bXAsIGxpc3QsIGJhdGNoX3Bvb2xfbGluaykgewo+ICAgCQkvKiBUaGUgYmF0Y2hlcyBh cmUgc3RyaWN0bHkgTFJVIG9yZGVyZWQgKi8KPiAgIAkJaWYgKCFpOTE1X2dlbV9hY3RpdmVfaXNf aWRsZSgmdG1wLT5sYXN0X3JlYWRbcG9vbC0+ZW5naW5lLT5pZF0sCj4gICAJCQkJCSAgICAgJnRt cC0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCkpCj4gICAJCQlicmVhazsKPiAgIAo+IC0JCS8qIFdo aWxlIHdlJ3JlIGxvb3BpbmcsIGRvIHNvbWUgY2xlYW4gdXAgKi8KPiAtCQlpZiAodG1wLT5tYWR2 ID09IF9fSTkxNV9NQURWX1BVUkdFRCkgewo+IC0JCQlsaXN0X2RlbCgmdG1wLT5iYXRjaF9wb29s X2xpbmspOwo+IC0JCQlpOTE1X2dlbV9vYmplY3RfcHV0KHRtcCk7Cj4gLQkJCWNvbnRpbnVlOwo+ IC0JCX0KPiAtCj4gICAJCWlmICh0bXAtPmJhc2Uuc2l6ZSA+PSBzaXplKSB7Cj4gICAJCQlvYmog PSB0bXA7Cj4gICAJCQlicmVhazsKPiBAQCAtMTMyLDE5ICsxMjUsMTYgQEAgaTkxNV9nZW1fYmF0 Y2hfcG9vbF9nZXQoc3RydWN0IGk5MTVfZ2VtX2JhdGNoX3Bvb2wgKnBvb2wsCj4gICAJfQo+ICAg Cj4gICAJaWYgKG9iaiA9PSBOVUxMKSB7Cj4gLQkJaW50IHJldDsKPiAtCj4gLQkJb2JqID0gaTkx NV9nZW1fb2JqZWN0X2NyZWF0ZSgmcG9vbC0+ZW5naW5lLT5pOTE1LT5kcm0sIHNpemUpOwo+ICsJ CW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwoJnBvb2wtPmVuZ2luZS0+aTkx NS0+ZHJtLAo+ICsJCQkJCQkgICAgICBzaXplKTsKPiAgIAkJaWYgKElTX0VSUihvYmopKQo+ICAg CQkJcmV0dXJuIG9iajsKPiAtCj4gLQkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlcyhv YmopOwo+IC0JCWlmIChyZXQpCj4gLQkJCXJldHVybiBFUlJfUFRSKHJldCk7Cj4gLQo+IC0JCW9i ai0+bWFkdiA9IEk5MTVfTUFEVl9ET05UTkVFRDsKPiAgIAl9Cj4gICAKPiArCXJldCA9IGk5MTVf Z2VtX29iamVjdF9nZXRfcGFnZXMob2JqKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIEVSUl9Q VFIocmV0KTsKPiArCj4gICAJbGlzdF9tb3ZlX3RhaWwoJm9iai0+YmF0Y2hfcG9vbF9saW5rLCBs aXN0KTsKPiAgIAlpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7Cj4gICAJcmV0dXJuIG9i ajsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1faW50ZXJuYWwu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ludGVybmFsLmMKPiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uNTM0YTYxYzFhYmEyCj4gLS0tIC9kZXYv bnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ludGVybmFsLmMKPiBA QCAtMCwwICsxLDE2MSBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxNC0yMDE2IEludGVs IENvcnBvcmF0aW9uCj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZy ZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhp cyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3 YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24s IGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNv cHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gKyAq IGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29u cyB0byB3aG9tIHRoZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1Ympl Y3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29w eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBu ZXh0Cj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBz dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRI RSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL SU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQg VE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hB TEwKPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBB TlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFO IEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJP TSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBP UiBPVEhFUiBERUFMSU5HUwo+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAqLwo+ICsK PiArI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gKyNpbmNsdWRlIDxkcm0vaTkxNV9kcm0uaD4KPiAr I2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gKwo+ICtzdGF0aWMgdm9pZCBpbnRlcm5hbF9mcmVlX3Bh Z2VzKHN0cnVjdCBzZ190YWJsZSAqc3QpCj4gK3sKPiArCXN0cnVjdCBzZ19wYWdlX2l0ZXIgc2df aXRlcjsKPiArCj4gKwlmb3JfZWFjaF9zZ19wYWdlKHN0LT5zZ2wsICZzZ19pdGVyLCBzdC0+bmVu dHMsIDApCj4gKwkJcHV0X3BhZ2Uoc2dfcGFnZV9pdGVyX3BhZ2UoJnNnX2l0ZXIpKTsKPiArCj4g KwlzZ19mcmVlX3RhYmxlKHN0KTsKPiArCWtmcmVlKHN0KTsKPiArfQo+ICsKPiArc3RhdGljIGlu dCBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzX2ludGVybmFsKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmopCj4gK3sKPiArCWNvbnN0IHVuc2lnbmVkIGludCBucGFnZXMgPSBvYmotPmJh c2Uuc2l6ZSAvIFBBR0VfU0laRTsKPiArCXN0cnVjdCBzZ190YWJsZSAqc3Q7Cj4gKwlzdHJ1Y3Qg c2NhdHRlcmxpc3QgKnNnOwo+ICsJdW5zaWduZWQgbG9uZyBsYXN0X3BmbiA9IDA7CS8qIHN1cHBy ZXNzIGdjYyB3YXJuaW5nICovCj4gKwlnZnBfdCBnZnA7Cj4gKwlpbnQgaTsKPiArCj4gKwlzdCA9 IGttYWxsb2Moc2l6ZW9mKCpzdCksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFzdCkKPiArCQlyZXR1 cm4gLUVOT01FTTsKPiArCj4gKwlpZiAoc2dfYWxsb2NfdGFibGUoc3QsIG5wYWdlcywgR0ZQX0tF Uk5FTCkpIHsKPiArCQlrZnJlZShzdCk7Cj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwl9Cj4gKwo+ ICsJc2cgPSBzdC0+c2dsOwo+ICsJc3QtPm5lbnRzID0gMDsKPiArCj4gKwlnZnAgPSBHRlBfS0VS TkVMIHwgX19HRlBfSElHSE1FTSB8IF9fR0ZQX1JFQ0xBSU1BQkxFOwo+ICsJaWYgKElTX0NSRVNU TElORShvYmotPmJhc2UuZGV2KSB8fCBJU19CUk9BRFdBVEVSKG9iai0+YmFzZS5kZXYpKSB7Cgov T1wgTm9vb29vLi4uIGRldl9wcml2IHBsZWFzZSEgOikKCj4gKwkJLyogOTY1Z20gY2Fubm90IHJl bG9jYXRlIG9iamVjdHMgYWJvdmUgNEdpQi4gKi8KPiArCQlnZnAgJj0gfl9fR0ZQX0hJR0hNRU07 Cj4gKwkJZ2ZwIHw9IF9fR0ZQX0RNQTMyOwo+ICsJfQo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBu cGFnZXM7IGkrKykgewo+ICsJCXN0cnVjdCBwYWdlICpwYWdlOwo+ICsKPiArCQlwYWdlID0gYWxs b2NfcGFnZShnZnApOwo+ICsJCWlmICghcGFnZSkKPiArCQkJZ290byBlcnI7Cj4gKwo+ICsjaWZk ZWYgQ09ORklHX1NXSU9UTEIKPiArCQlpZiAoc3dpb3RsYl9ucl90YmwoKSkgewo+ICsJCQlzdC0+ bmVudHMrKzsKPiArCQkJc2dfc2V0X3BhZ2Uoc2csIHBhZ2UsIFBBR0VfU0laRSwgMCk7Cj4gKwkJ CXNnID0gc2dfbmV4dChzZyk7Cj4gKwkJCWNvbnRpbnVlOwo+ICsJCX0KPiArI2VuZGlmCj4gKwkJ aWYgKCFpIHx8IHBhZ2VfdG9fcGZuKHBhZ2UpICE9IGxhc3RfcGZuICsgMSkgewo+ICsJCQlpZiAo aSkKPiArCQkJCXNnID0gc2dfbmV4dChzZyk7Cj4gKwkJCXN0LT5uZW50cysrOwo+ICsJCQlzZ19z ZXRfcGFnZShzZywgcGFnZSwgUEFHRV9TSVpFLCAwKTsKPiArCQl9IGVsc2Ugewo+ICsJCQlzZy0+ bGVuZ3RoICs9IFBBR0VfU0laRTsKPiArCQl9Cj4gKwkJbGFzdF9wZm4gPSBwYWdlX3RvX3Bmbihw YWdlKTsKPiArCX0KPiArI2lmZGVmIENPTkZJR19TV0lPVExCCj4gKwlpZiAoIXN3aW90bGJfbnJf dGJsKCkpCj4gKyNlbmRpZgo+ICsJCXNnX21hcmtfZW5kKHNnKTsKCkxvb2tzIGxpa2UgdGhlIGxv b3AgYWJvdmUgY291bGQgYmUgbW92ZWQgaW50byBhIGhlbHBlciBhbmQgc2hhcmVkIHdpdGggCmk5 MTVfZ2VtX29iamVjdF9nZXRfcGFnZXNfZ3R0LiBNYXliZSBqdXN0IGEgcGFnZS1hbGxvYyBhbmQg CnBhZ2UtYWxsb2MtZXJyb3IgY2FsbGJhY2tzIHdvdWxkIGJlIHJlcXVpcmVkLgoKPiArCW9iai0+ cGFnZXMgPSBzdDsKPiArCj4gKwlpZiAoaTkxNV9nZW1fZ3R0X3ByZXBhcmVfb2JqZWN0KG9iaikp IHsKPiArCQlvYmotPnBhZ2VzID0gTlVMTDsKPiArCQlnb3RvIGVycjsKPiArCX0KPiArCj4gKwkv KiBNYXJrIHRoZSBwYWdlcyBhcyBkb250bmVlZCB3aGlsc3QgdGhleSBhcmUgc3RpbGwgcGlubmVk LiBBcyBzb29uCj4gKwkgKiBhcyB0aGV5IGFyZSB1bnBpbm5lZCB0aGV5IGFyZSBhbGxvd2VkIHRv IGJlIHJlYXBlZCBieSB0aGUgc2hyaW5rZXIsCj4gKwkgKiBhbmQgdGhlIGNhbGxlciBpcyBleHBl Y3RlZCB0byByZXBvcHVsYXRlIC0gdGhlIGNvbnRlbnRzIG9mIHRoaXMKPiArCSAqIG9iamVjdCBh cmUgb25seSB2YWxpZCB3aGlsc3QgYWN0aXZlIGFuZCBwaW5uZWQuCj4gKwkgKi8KPiArCW9iai0+ bWFkdiA9IEk5MTVfTUFEVl9ET05UTkVFRDsKPiArCXJldHVybiAwOwo+ICsKPiArZXJyOgo+ICsJ c2dfbWFya19lbmQoc2cpOwo+ICsJaW50ZXJuYWxfZnJlZV9wYWdlcyhzdCk7Cj4gKwlyZXR1cm4g LUVOT01FTTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdl c19pbnRlcm5hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICt7Cj4gKwlpbnRl cm5hbF9mcmVlX3BhZ2VzKG9iai0+cGFnZXMpOwo+ICsKPiArCW9iai0+ZGlydHkgPSAwOwo+ICsJ b2JqLT5tYWR2ID0gSTkxNV9NQURWX1dJTExORUVEOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Rfb3BzIGk5MTVfZ2VtX29iamVjdF9pbnRlcm5hbF9v cHMgPSB7Cj4gKwkuZmxhZ3MgPSBJOTE1X0dFTV9PQkpFQ1RfSEFTX1NUUlVDVF9QQUdFLAo+ICsJ LmdldF9wYWdlcyA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXNfaW50ZXJuYWwsCj4gKwkucHV0 X3BhZ2VzID0gaTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlc19pbnRlcm5hbCwKPiArfTsKPiArCj4g Ky8qKgo+ICsgKiBDcmVhdGVzIGEgbmV3IG9iamVjdCB0aGF0IHdyYXBzIHNvbWUgaW50ZXJuYWwg bWVtb3J5IGZvciBwcml2YXRlIHVzZS4KPiArICogVGhpcyBvYmplY3QgaXMgbm90IGJhY2tlZCBi eSBzd2FwcGFibGUgc3RvcmFnZSwgYW5kIGFzIHN1Y2ggaXRzIGNvbnRlbnRzCj4gKyAqIGFyZSB2 b2xhdGlsZSBhbmQgb25seSB2YWxpZCB3aGlsc3QgcGlubmVkLiBJZiB0aGUgb2JqZWN0IGlzIHJl YXBlZCBieSB0aGUKPiArICogc2hyaW5rZXIsIGl0cyBwYWdlcyBhbmQgZGF0YSB3aWxsIGJlIGRp c2NhcmRlZC4gRXF1YWxseSwgaXQgaXMgbm90IGEgZnVsbAo+ICsgKiBHRU0gb2JqZWN0IGFuZCBz byBub3QgdmFsaWQgZm9yIGFjY2VzcyBmcm9tIHVzZXJzcGFjZS4gVGhpcyBtYWtlcyBpdCB1c2Vm dWwKPiArICogZm9yIGhhcmR3YXJlIGludGVyZmFjZXMgbGlrZSByaW5nYnVmZmVycyAod2hpY2gg YXJlIHBpbm5lZCBmcm9tIHRoZSB0aW1lCj4gKyAqIHRoZSByZXF1ZXN0IGlzIHdyaXR0ZW4gdG8g dGhlIHRpbWUgdGhlIGhhcmR3YXJlIHN0b3BzIGFjY2Vzc2luZyBpdCksIGJ1dAo+ICsgKiBub3Qg Zm9yIGNvbnRleHRzICh3aGljaCBuZWVkIHRvIGJlIHByZXNlcnZlZCB3aGVuIG5vdCBhY3RpdmUg Zm9yIGxhdGVyCj4gKyAqIHJldXNlKS4gTm90ZSB0aGF0IGl0IGlzIG5vdCBjbGVhcmVkIHVwb24g YWxsb2NhdGlvbi4KPiArICovCj4gK3N0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoKPiAraTkx NV9nZW1fb2JqZWN0X2NyZWF0ZV9pbnRlcm5hbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICsJ CQkJdW5zaWduZWQgaW50IHNpemUpCgpzaXplX3QgYWdhaW4uCgo+ICt7Cj4gKwlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ICsKPiArCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9hbGxv YyhkZXYpOwo+ICsJaWYgKCFvYmopCj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gKwo+ ICsJZHJtX2dlbV9wcml2YXRlX29iamVjdF9pbml0KGRldiwgJm9iai0+YmFzZSwgc2l6ZSk7Cj4g KwlpOTE1X2dlbV9vYmplY3RfaW5pdChvYmosICZpOTE1X2dlbV9vYmplY3RfaW50ZXJuYWxfb3Bz KTsKPiArCj4gKwlvYmotPmJhc2Uud3JpdGVfZG9tYWluID0gSTkxNV9HRU1fRE9NQUlOX0NQVTsK PiArCW9iai0+YmFzZS5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fQ1BVOwo+ICsJb2Jq LT5jYWNoZV9sZXZlbCA9IEhBU19MTEMoZGV2KSA/IEk5MTVfQ0FDSEVfTExDIDogSTkxNV9DQUNI RV9OT05FOwoKQXQgbGVhc3QgdG9faTkxNSB3b3VsZCBiZSBoZWxwZnVsLgoKPiArCj4gKwlyZXR1 cm4gb2JqOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X3JlbmRlcl9zdGF0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0 YXRlLmMKPiBpbmRleCAwOWNmNDg3NGM0NWYuLmMwMDllZTFjMjdmZCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJfc3RhdGUuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5jCj4gQEAgLTE4Nyw3ICsxODcs NyBAQCBpbnQgaTkxNV9nZW1fcmVuZGVyX3N0YXRlX2luaXQoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXEpCj4gICAJaWYgKHNvLnJvZGF0YS0+YmF0Y2hfaXRlbXMgKiA0ID4gNDA5NikK PiAgIAkJcmV0dXJuIC1FSU5WQUw7Cj4gICAKPiAtCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVh dGUoJnJlcS0+aTkxNS0+ZHJtLCA0MDk2KTsKPiArCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVh dGVfaW50ZXJuYWwoJnJlcS0+aTkxNS0+ZHJtLCA0MDk2KTsKPiAgIAlpZiAoSVNfRVJSKG9iaikp Cj4gICAJCXJldHVybiBQVFJfRVJSKG9iaik7Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9lbmdpbmVfY3MuYwo+IGluZGV4IDQ4MDU4NGMwOTMwNi4uOTk3MzdiODQyZDczIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPiBAQCAtMjUxLDcgKzI1MSw3IEBA IGludCBpbnRlbF9lbmdpbmVfY3JlYXRlX3NjcmF0Y2goc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lLCBpbnQgc2l6ZSkKPiAgIAo+ICAgCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVf c3RvbGVuKCZlbmdpbmUtPmk5MTUtPmRybSwgc2l6ZSk7Cj4gICAJaWYgKCFvYmopCj4gLQkJb2Jq ID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZSgmZW5naW5lLT5pOTE1LT5kcm0sIHNpemUpOwo+ICsJ CW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwoJmVuZ2luZS0+aTkxNS0+ZHJt LCBzaXplKTsKPiAgIAlpZiAoSVNfRVJSKG9iaikpIHsKPiAgIAkJRFJNX0VSUk9SKCJGYWlsZWQg dG8gYWxsb2NhdGUgc2NyYXRjaCBwYWdlXG4iKTsKPiAgIAkJcmV0dXJuIFBUUl9FUlIob2JqKTsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gaW5kZXggZjNkZmI3Y2E2 MjVkLi5iNWQ5YzAzZjg0Y2UgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmluZ2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5jCj4gQEAgLTE3ODMsOSArMTc4MywxMCBAQCBzdGF0aWMgaW50IGluaXRfc3RhdHVzX3Bh Z2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCXN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmo7Cj4gICAJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gICAJdW5zaWduZWQg aW50IGZsYWdzOwo+ICsJdm9pZCAqdmFkZHI7Cj4gICAJaW50IHJldDsKPiAgIAo+IC0Jb2JqID0g aTkxNV9nZW1fb2JqZWN0X2NyZWF0ZSgmZW5naW5lLT5pOTE1LT5kcm0sIDQwOTYpOwo+ICsJb2Jq ID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9pbnRlcm5hbCgmZW5naW5lLT5pOTE1LT5kcm0sIDQw OTYpOwo+ICAgCWlmIChJU19FUlIob2JqKSkgewo+ICAgCQlEUk1fRVJST1IoIkZhaWxlZCB0byBh bGxvY2F0ZSBzdGF0dXMgcGFnZVxuIik7Cj4gICAJCXJldHVybiBQVFJfRVJSKG9iaik7Cj4gQEAg LTE4MTgsMTUgKzE4MTksMjIgQEAgc3RhdGljIGludCBpbml0X3N0YXR1c19wYWdlKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlpZiAocmV0KQo+ICAgCQlnb3RvIGVycjsKPiAg IAo+ICsJdmFkZHIgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcChvYmosIEk5MTVfTUFQX1dCKTsK PiArCWlmIChJU19FUlIodmFkZHIpKSB7Cj4gKwkJcmV0ID0gUFRSX0VSUih2YWRkcik7Cj4gKwkJ Z290byBlcnJfdW5waW47Cj4gKwl9Cj4gKwoKVW5yZWxhdGVkIGZpeCwgYmVzdCBpZiB5b3UgY291 bGQgYWZmb3JkIHRvIGV4dHJhY3QgaXQuCgo+ICAgCWVuZ2luZS0+c3RhdHVzX3BhZ2Uudm1hID0g dm1hOwo+ICAgCWVuZ2luZS0+c3RhdHVzX3BhZ2UuZ2d0dF9vZmZzZXQgPSBpOTE1X2dndHRfb2Zm c2V0KHZtYSk7Cj4gLQllbmdpbmUtPnN0YXR1c19wYWdlLnBhZ2VfYWRkciA9Cj4gLQkJaTkxNV9n ZW1fb2JqZWN0X3Bpbl9tYXAob2JqLCBJOTE1X01BUF9XQik7Cj4gKwllbmdpbmUtPnN0YXR1c19w YWdlLnBhZ2VfYWRkciA9IG1lbXNldCh2YWRkciwgMCwgNDA5Nik7Cj4gICAKClZlcnkgdW51c3Vh bCwgYXQgbGVhc3QgZm9yIG1lLiA6KQoKPiAgIAlEUk1fREVCVUdfRFJJVkVSKCIlcyBod3Mgb2Zm c2V0OiAweCUwOHhcbiIsCj4gICAJCQkgZW5naW5lLT5uYW1lLCBpOTE1X2dndHRfb2Zmc2V0KHZt YSkpOwo+ICAgCXJldHVybiAwOwo+ICAgCj4gK2Vycl91bnBpbjoKPiArCWk5MTVfdm1hX3VucGlu KHZtYSk7Cj4gICBlcnI6Cj4gICAJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwo+ICAgCXJldHVy biByZXQ7CgpSZWdhcmRzLAoKVHZydGtvCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK