From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v2] drm/i915: Introduce an internal allocator for disposable private objects Date: Mon, 10 Oct 2016 09:11:49 +0100 Message-ID: <0516b5f3-afa7-892d-39d3-fa7905640b34@linux.intel.com> References: <5c234e90-abfd-301b-5743-2116b15d67c9@linux.intel.com> <20161008083440.25083-1-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 mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 496976E201 for ; Mon, 10 Oct 2016 08:11:52 +0000 (UTC) In-Reply-To: <20161008083440.25083-1-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 T24gMDgvMTAvMjAxNiAwOTozNCwgQ2hyaXMgV2lsc29uIHdyb3RlOgo+IFF1aXRlIGEgZmV3IG9m IG91ciBvYmplY3RzIHVzZWQgZm9yIGludGVybmFsIGhhcmR3YXJlIHByb2dyYW1taW5nIGRvIG5v dAo+IGJlbmVmaXQgZnJvbSBiZWluZyBzd2FwcGFibGUgb3IgZnJvbSBiZWluZyB6ZXJvIGluaXRp YWxpc2VkLiBBcyBzdWNoCj4gdGhleSBkbyBub3QgYmVuZWZpdCBmcm9tIHVzaW5nIGEgc2htZW1m cyBiYWNraW5nIHN0b3JhZ2UgYW5kIHNpbmNlIHRoZXkKPiBhcmUgaW50ZXJuYWwgYW5kIG5ldmVy IGRpcmVjdGx5IGV4cG9zZWQgdG8gdGhlIHVzZXIsIHdlIGRvIG5vdCBuZWVkIHRvCj4gd29ycnkg YWJvdXQgcHJvdmlkaW5nIGEgZmlscC4gRm9yIHRoZXNlIHdlIGNhbiB1c2UgYW4KPiBkcm1faTkx NV9nZW1fb2JqZWN0IHdyYXBwZXIgYXJvdW5kIGEgc2dfdGFibGUgb2YgcGxhaW4gc3RydWN0IHBh Z2UuIFRoZXkKPiBhcmUgbm90IHN3YXAgYmFja2VkIGFuZCBub3QgYXV0b21hdGljYWxseSBwaW5u ZWQuIElmIHRoZXkgYXJlIHJlYXBlZAo+IGJ5IHRoZSBzaHJpbmtlciwgdGhlIHBhZ2VzIGFyZSBy ZWxlYXNlZCBhbmQgdGhlIGNvbnRlbnRzIGRpc2NhcmRlZC4gRm9yCj4gdGhlIGludGVybmFsIHVz ZSBjYXNlLCB0aGlzIGlzIGZpbmUgYXMgZm9yIGV4YW1wbGUsIHJpbmdidWZmZXJzIGFyZQo+IHBp bm5lZCBmcm9tIGJlaW5nIHdyaXR0ZW4gYnkgYSByZXF1ZXN0IHRvIGJlIHJlYWQgYnkgdGhlIGhh cmR3YXJlLiBPbmNlCj4gdGhleSBhcmUgaWRsZSwgdGhleSBjYW4gYmUgZGlzY2FyZGVkIGVudGly ZWx5LiBBcyBzdWNoIHRoZXkgYXJlIGEgZ29vZAo+IG1hdGNoIGZvciBleGVjbGlzdCByaW5nYnVm ZmVycyBhbmQgYSBzbWFsbCB2YXJpZXR5IG9mIG90aGVyIGludGVybmFsCj4gb2JqZWN0cy4KPgo+ IEluIHRoZSBmaXJzdCBpdGVyYXRpb24sIHRoaXMgaXMgbGltaXRlZCB0byB0aGUgc2NyYXRjaCBi YXRjaCBidWZmZXJzIHdlCj4gdXNlIChmb3IgY29tbWFuZCBwYXJzaW5nIGFuZCBzdGF0ZSBpbml0 aWFsaXNhdGlvbikuCj4KPiB2MjogQWxsb2NhdGUgcGh5c2ljYWxseSBjb250aWd1b3VzIHBhZ2Vz LCB3aGVyZSBwb3NzaWJsZS4KClNpbmNlIHRoZSBhbGxvY2F0b3Igd2lsbCBiZSB1c2VkIGNvbnN0 YW50bHkgYXQgcnVudGltZSwgbXkgcmVjb2xsZWN0aW9uIAppcyB0aGF0IGhpZ2hlciBvcmRlciBh bGxvY2F0aW9ucyBjYW4gZWFzaWx5IGJlY29tZSBuZXh0IHRvIGltcG9zc2libGUsIApzbyBJIGFt IHdvbmRlcmluZyB3aHk/IEFsc28sIG9uIHlvdXIgbGFzdCByZXBseSB5b3UgZGlkIG5vdCB3cml0 ZSB3aHkgCnlvdSB0aGluayB0aGlzIGlzIGludGVyZXN0aW5nIHRvIHRyeT8KCj4gU2lnbmVkLW9m Zi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IFR2cnRr byBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgICAgICB8ICAgMSArCj4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgICB8ICAgNSArCj4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9iYXRjaF9wb29sLmMgICB8ICAyOCArKy0tLQo+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1faW50ZXJuYWwuYyAgICAgfCAxNjIgKysrKysr KysrKysrKysrKysrKysrKysrKysrCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9y ZW5kZXJfc3RhdGUuYyB8ICAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5n aW5lX2NzLmMgICAgICAgfCAgIDIgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuYyAgICAgIHwgIDE0ICsrLQo+ICAgNyBmaWxlcyBjaGFuZ2VkLCAxOTAgaW5zZXJ0 aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1faW50ZXJuYWwuYwo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBp bmRleCBhOTk4YzJiY2U3MGEuLmI5NGE5MGYzNGQyZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxl Cj4gQEAgLTM1LDYgKzM1LDcgQEAgaTkxNS15ICs9IGk5MTVfY21kX3BhcnNlci5vIFwKPiAgIAkg IGk5MTVfZ2VtX2V4ZWNidWZmZXIubyBcCj4gICAJICBpOTE1X2dlbV9mZW5jZS5vIFwKPiAgIAkg IGk5MTVfZ2VtX2d0dC5vIFwKPiArCSAgaTkxNV9nZW1faW50ZXJuYWwubyBcCj4gICAJICBpOTE1 X2dlbS5vIFwKPiAgIAkgIGk5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5vIFwKPiAgIAkgIGk5MTVfZ2Vt X3JlcXVlc3QubyBcCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggZmVlNWNjOTJlMmYy Li5iYWQ5N2YxZTUyNjUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMzUzOCw2 ICszNTM4LDExIEBAIGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuX2Zvcl9wcmVhbGxvY2F0 ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAkJCQkJICAgICAgIHUzMiBndHRfb2Zmc2V0 LAo+ICAgCQkJCQkgICAgICAgdTMyIHNpemUpOwo+ICAgCj4gKy8qIGk5MTVfZ2VtX2ludGVybmFs LmMgKi8KPiArc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgo+ICtpOTE1X2dlbV9vYmplY3Rf Y3JlYXRlX2ludGVybmFsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gKwkJCQl1bnNpZ25lZCBp bnQgc2l6ZSk7Cj4gKwo+ICAgLyogaTkxNV9nZW1fc2hyaW5rZXIuYyAqLwo+ICAgdW5zaWduZWQg bG9uZyBpOTE1X2dlbV9zaHJpbmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ICAgCQkJICAgICAgdW5zaWduZWQgbG9uZyB0YXJnZXQsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYwo+IGluZGV4IGNiMjVjYWQzMzE4Yy4uMzkzNGM5MTAzY2Yy IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2JhdGNoX3Bvb2wu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYwo+IEBA IC05Nyw5ICs5Nyw5IEBAIGk5MTVfZ2VtX2JhdGNoX3Bvb2xfZ2V0KHN0cnVjdCBpOTE1X2dlbV9i YXRjaF9wb29sICpwb29sLAo+ICAgCQkJc2l6ZV90IHNpemUpCj4gICB7Cj4gICAJc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IE5VTEw7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqdG1wLCAqbmV4dDsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICp0bXA7Cj4g ICAJc3RydWN0IGxpc3RfaGVhZCAqbGlzdDsKPiAtCWludCBuOwo+ICsJaW50IG4sIHJldDsKPiAg IAo+ICAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnBvb2wtPmVuZ2luZS0+aTkxNS0+ZHJtLnN0cnVj dF9tdXRleCk7Cj4gICAKPiBAQCAtMTEyLDE5ICsxMTIsMTIgQEAgaTkxNV9nZW1fYmF0Y2hfcG9v bF9nZXQoc3RydWN0IGk5MTVfZ2VtX2JhdGNoX3Bvb2wgKnBvb2wsCj4gICAJCW4gPSBBUlJBWV9T SVpFKHBvb2wtPmNhY2hlX2xpc3QpIC0gMTsKPiAgIAlsaXN0ID0gJnBvb2wtPmNhY2hlX2xpc3Rb bl07Cj4gICAKPiAtCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh0bXAsIG5leHQsIGxpc3QsIGJh dGNoX3Bvb2xfbGluaykgewo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeSh0bXAsIGxpc3QsIGJhdGNo X3Bvb2xfbGluaykgewo+ICAgCQkvKiBUaGUgYmF0Y2hlcyBhcmUgc3RyaWN0bHkgTFJVIG9yZGVy ZWQgKi8KPiAgIAkJaWYgKCFpOTE1X2dlbV9hY3RpdmVfaXNfaWRsZSgmdG1wLT5sYXN0X3JlYWRb cG9vbC0+ZW5naW5lLT5pZF0sCj4gICAJCQkJCSAgICAgJnRtcC0+YmFzZS5kZXYtPnN0cnVjdF9t dXRleCkpCj4gICAJCQlicmVhazsKPiAgIAo+IC0JCS8qIFdoaWxlIHdlJ3JlIGxvb3BpbmcsIGRv IHNvbWUgY2xlYW4gdXAgKi8KPiAtCQlpZiAodG1wLT5tYWR2ID09IF9fSTkxNV9NQURWX1BVUkdF RCkgewo+IC0JCQlsaXN0X2RlbCgmdG1wLT5iYXRjaF9wb29sX2xpbmspOwo+IC0JCQlpOTE1X2dl bV9vYmplY3RfcHV0KHRtcCk7Cj4gLQkJCWNvbnRpbnVlOwo+IC0JCX0KPiAtCj4gICAJCWlmICh0 bXAtPmJhc2Uuc2l6ZSA+PSBzaXplKSB7Cj4gICAJCQlvYmogPSB0bXA7Cj4gICAJCQlicmVhazsK PiBAQCAtMTMyLDE5ICsxMjUsMTYgQEAgaTkxNV9nZW1fYmF0Y2hfcG9vbF9nZXQoc3RydWN0IGk5 MTVfZ2VtX2JhdGNoX3Bvb2wgKnBvb2wsCj4gICAJfQo+ICAgCj4gICAJaWYgKG9iaiA9PSBOVUxM KSB7Cj4gLQkJaW50IHJldDsKPiAtCj4gLQkJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZSgm cG9vbC0+ZW5naW5lLT5pOTE1LT5kcm0sIHNpemUpOwo+ICsJCW9iaiA9IGk5MTVfZ2VtX29iamVj dF9jcmVhdGVfaW50ZXJuYWwoJnBvb2wtPmVuZ2luZS0+aTkxNS0+ZHJtLAo+ICsJCQkJCQkgICAg ICBzaXplKTsKPiAgIAkJaWYgKElTX0VSUihvYmopKQo+ICAgCQkJcmV0dXJuIG9iajsKPiAtCj4g LQkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlcyhvYmopOwo+IC0JCWlmIChyZXQpCj4g LQkJCXJldHVybiBFUlJfUFRSKHJldCk7Cj4gLQo+IC0JCW9iai0+bWFkdiA9IEk5MTVfTUFEVl9E T05UTkVFRDsKPiAgIAl9Cj4gICAKPiArCXJldCA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXMo b2JqKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiArCj4gICAJbGlz dF9tb3ZlX3RhaWwoJm9iai0+YmF0Y2hfcG9vbF9saW5rLCBsaXN0KTsKPiAgIAlpOTE1X2dlbV9v YmplY3RfcGluX3BhZ2VzKG9iaik7Cj4gICAJcmV0dXJuIG9iajsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1faW50ZXJuYWwuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2ludGVybmFsLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAw MDAwMDAwMDAwMC4uMjU1YjkyMzJiOGVmCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ludGVybmFsLmMKPiBAQCAtMCwwICsxLDE2MiBAQAo+ICsv Kgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxNC0yMDE2IEludGVsIENvcnBvcmF0aW9uCj4gKyAqCj4g KyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg cGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwg aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp bWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1 Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBv ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ICsgKiBT b2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBj b25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhp cyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBhcmFncmFwaCkg c2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBv ZiB0aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURF RCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAq IElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Yg TUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB TkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhPUlMg T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1Ig T1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwg VE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5F Q1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwo+ICsg KiBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGRybS9kcm1Q Lmg+Cj4gKyNpbmNsdWRlIDxkcm0vaTkxNV9kcm0uaD4KPiArI2luY2x1ZGUgImk5MTVfZHJ2Lmgi Cj4gKwo+ICsjZGVmaW5lIFFVSUVUIChfX0dGUF9OT1JFVFJZIHwgX19HRlBfTk9XQVJOKQo+ICsK PiArc3RhdGljIHZvaWQgaW50ZXJuYWxfZnJlZV9wYWdlcyhzdHJ1Y3Qgc2dfdGFibGUgKnN0KQo+ ICt7Cj4gKwlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnOwo+ICsKPiArCWZvciAoc2cgPSBzdC0+c2ds OyBzZzsgc2cgPSBfX3NnX25leHQoc2cpKQo+ICsJCV9fZnJlZV9wYWdlcyhzZ19wYWdlKHNnKSwg Z2V0X29yZGVyKHNnLT5sZW5ndGgpKTsKCkZyYWdpbGUgc2luY2Ugd29udCB3b3JrIHRvZ2V0aGVy IHdpdGggY29hbGVzY2luZywgd2hpY2ggSSBhbSBzYWQgdG8gc2VlIApub3QgaW1wbGVtZW50ZWQu IEZvciBzb21lIHJlYXNvbiBpdCBtYWtlcyBtZSBmZWVsIHJlYWwgZ29vZCB3aGVuIGl0IGlzIAp0 aGVyZS4KCj4gKwo+ICsJc2dfZnJlZV90YWJsZShzdCk7Cj4gKwlrZnJlZShzdCk7Cj4gK30KPiAr Cj4gK3N0YXRpYyBpbnQgaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19pbnRlcm5hbChzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICt7Cj4gKwl1bnNpZ25lZCBpbnQgbnBhZ2VzID0g b2JqLT5iYXNlLnNpemUgLyBQQUdFX1NJWkU7Cj4gKwlzdHJ1Y3Qgc2dfdGFibGUgKnN0Owo+ICsJ c3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsKPiArCWludCBtYXhfb3JkZXI7Cj4gKwlnZnBfdCBnZnA7 Cj4gKwo+ICsJc3QgPSBrbWFsbG9jKHNpemVvZigqc3QpLCBHRlBfS0VSTkVMKTsKPiArCWlmICgh c3QpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJaWYgKHNnX2FsbG9jX3RhYmxlKHN0LCBu cGFnZXMsIEdGUF9LRVJORUwpKSB7Cj4gKwkJa2ZyZWUoc3QpOwo+ICsJCXJldHVybiAtRU5PTUVN Owo+ICsJfQo+ICsKPiArCXNnID0gc3QtPnNnbDsKPiArCXN0LT5uZW50cyA9IDA7Cj4gKwo+ICsJ bWF4X29yZGVyID0gTUFYX09SREVSOwo+ICsjaWZkZWYgQ09ORklHX1NXSU9UTEIKPiArCWlmIChz d2lvdGxiX25yX3RibCgpKQo+ICsJCW1heF9vcmRlciA9IG1pbihtYXhfb3JkZXIsIGlsb2cyKElP X1RMQl9TRUdTSVpFKSk7Cj4gKyNlbmRpZgo+ICsKPiArCWdmcCA9IEdGUF9LRVJORUwgfCBfX0dG UF9ISUdITUVNIHwgX19HRlBfUkVDTEFJTUFCTEU7Cj4gKwlpZiAoSVNfQ1JFU1RMSU5FKG9iai0+ YmFzZS5kZXYpIHx8IElTX0JST0FEV0FURVIob2JqLT5iYXNlLmRldikpIHsKCllvdSBkb24ndCB3 YW50IHRvIGF2b2lkIG1vcmUgdXNhZ2VzIG9mIGRldj8KCj4gKwkJLyogOTY1Z20gY2Fubm90IHJl bG9jYXRlIG9iamVjdHMgYWJvdmUgNEdpQi4gKi8KPiArCQlnZnAgJj0gfl9fR0ZQX0hJR0hNRU07 Cj4gKwkJZ2ZwIHw9IF9fR0ZQX0RNQTMyOwo+ICsJfQo+ICsKPiArCWRvIHsKPiArCQlpbnQgb3Jk ZXIgPSBtaW4oZmxzKG5wYWdlcykgLSAxLCBtYXhfb3JkZXIpOwo+ICsJCXN0cnVjdCBwYWdlICpw YWdlOwo+ICsKPiArCQlkbyB7Cj4gKwkJCXBhZ2UgPSBhbGxvY19wYWdlcyhnZnAgfCAob3JkZXIg PyBRVUlFVCA6IDApLCBvcmRlcik7Cj4gKwkJCWlmIChwYWdlKQo+ICsJCQkJYnJlYWs7Cj4gKwkJ CWlmICghb3JkZXItLSkKPiArCQkJCWdvdG8gZXJyOwo+ICsJCX0gd2hpbGUgKDEpOwoKRmVlbHMg bGlrZSBpdCBjb3VsZCBoYW1tZXIgaGFyZCBvbiBhIGZyYWdtZW50ZWQgc3lzdGVtLCBJIGhhdmUg YmlnIApjb25jZXJucyBhYm91dCB0aGlzLgoKPiArCj4gKwkJc2dfc2V0X3BhZ2Uoc2csIHBhZ2Us IFBBR0VfU0laRSA8PCBvcmRlciwgMCk7Cj4gKwkJc3QtPm5lbnRzKys7Cj4gKwo+ICsJCW5wYWdl cyAtPSAxIDw8IG9yZGVyOwo+ICsJCWlmICghbnBhZ2VzKSB7Cj4gKwkJCXNnX21hcmtfZW5kKHNn KTsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsKPiArCQlzZyA9IF9fc2dfbmV4dChzZyk7Cj4gKwl9 IHdoaWxlICgxKTsKPiArCW9iai0+cGFnZXMgPSBzdDsKPiArCj4gKwlpZiAoaTkxNV9nZW1fZ3R0 X3ByZXBhcmVfb2JqZWN0KG9iaikpIHsKPiArCQlvYmotPnBhZ2VzID0gTlVMTDsKPiArCQlnb3Rv IGVycjsKPiArCX0KPiArCj4gKwkvKiBNYXJrIHRoZSBwYWdlcyBhcyBkb250bmVlZCB3aGlsc3Qg dGhleSBhcmUgc3RpbGwgcGlubmVkLiBBcyBzb29uCj4gKwkgKiBhcyB0aGV5IGFyZSB1bnBpbm5l ZCB0aGV5IGFyZSBhbGxvd2VkIHRvIGJlIHJlYXBlZCBieSB0aGUgc2hyaW5rZXIsCj4gKwkgKiBh bmQgdGhlIGNhbGxlciBpcyBleHBlY3RlZCB0byByZXBvcHVsYXRlIC0gdGhlIGNvbnRlbnRzIG9m IHRoaXMKPiArCSAqIG9iamVjdCBhcmUgb25seSB2YWxpZCB3aGlsc3QgYWN0aXZlIGFuZCBwaW5u ZWQuCj4gKwkgKi8KPiArCW9iai0+bWFkdiA9IEk5MTVfTUFEVl9ET05UTkVFRDsKPiArCXJldHVy biAwOwo+ICsKPiArZXJyOgo+ICsJc2dfbWFya19lbmQoc2cpOwo+ICsJaW50ZXJuYWxfZnJlZV9w YWdlcyhzdCk7Cj4gKwlyZXR1cm4gLUVOT01FTTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaTkx NV9nZW1fb2JqZWN0X3B1dF9wYWdlc19pbnRlcm5hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqKQo+ICt7Cj4gKwlpbnRlcm5hbF9mcmVlX3BhZ2VzKG9iai0+cGFnZXMpOwo+ICsKPiAr CW9iai0+ZGlydHkgPSAwOwo+ICsJb2JqLT5tYWR2ID0gSTkxNV9NQURWX1dJTExORUVEOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Rfb3BzIGk5MTVf Z2VtX29iamVjdF9pbnRlcm5hbF9vcHMgPSB7Cj4gKwkuZmxhZ3MgPSBJOTE1X0dFTV9PQkpFQ1Rf SEFTX1NUUlVDVF9QQUdFLAo+ICsJLmdldF9wYWdlcyA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFn ZXNfaW50ZXJuYWwsCj4gKwkucHV0X3BhZ2VzID0gaTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlc19p bnRlcm5hbCwKPiArfTsKPiArCj4gKy8qKgo+ICsgKiBDcmVhdGVzIGEgbmV3IG9iamVjdCB0aGF0 IHdyYXBzIHNvbWUgaW50ZXJuYWwgbWVtb3J5IGZvciBwcml2YXRlIHVzZS4KPiArICogVGhpcyBv YmplY3QgaXMgbm90IGJhY2tlZCBieSBzd2FwcGFibGUgc3RvcmFnZSwgYW5kIGFzIHN1Y2ggaXRz IGNvbnRlbnRzCj4gKyAqIGFyZSB2b2xhdGlsZSBhbmQgb25seSB2YWxpZCB3aGlsc3QgcGlubmVk LiBJZiB0aGUgb2JqZWN0IGlzIHJlYXBlZCBieSB0aGUKPiArICogc2hyaW5rZXIsIGl0cyBwYWdl cyBhbmQgZGF0YSB3aWxsIGJlIGRpc2NhcmRlZC4gRXF1YWxseSwgaXQgaXMgbm90IGEgZnVsbAo+ ICsgKiBHRU0gb2JqZWN0IGFuZCBzbyBub3QgdmFsaWQgZm9yIGFjY2VzcyBmcm9tIHVzZXJzcGFj ZS4gVGhpcyBtYWtlcyBpdCB1c2VmdWwKPiArICogZm9yIGhhcmR3YXJlIGludGVyZmFjZXMgbGlr ZSByaW5nYnVmZmVycyAod2hpY2ggYXJlIHBpbm5lZCBmcm9tIHRoZSB0aW1lCj4gKyAqIHRoZSBy ZXF1ZXN0IGlzIHdyaXR0ZW4gdG8gdGhlIHRpbWUgdGhlIGhhcmR3YXJlIHN0b3BzIGFjY2Vzc2lu ZyBpdCksIGJ1dAo+ICsgKiBub3QgZm9yIGNvbnRleHRzICh3aGljaCBuZWVkIHRvIGJlIHByZXNl cnZlZCB3aGVuIG5vdCBhY3RpdmUgZm9yIGxhdGVyCj4gKyAqIHJldXNlKS4gTm90ZSB0aGF0IGl0 IGlzIG5vdCBjbGVhcmVkIHVwb24gYWxsb2NhdGlvbi4KPiArICovCj4gK3N0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICoKPiAraTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9pbnRlcm5hbChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAo+ICsJCQkJdW5zaWduZWQgaW50IHNpemUpCj4gK3sKPiArCXN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gKwo+ICsJb2JqID0gaTkxNV9nZW1fb2JqZWN0 X2FsbG9jKGRldik7Cj4gKwlpZiAoIW9iaikKPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsK PiArCj4gKwlkcm1fZ2VtX3ByaXZhdGVfb2JqZWN0X2luaXQoZGV2LCAmb2JqLT5iYXNlLCBzaXpl KTsKPiArCWk5MTVfZ2VtX29iamVjdF9pbml0KG9iaiwgJmk5MTVfZ2VtX29iamVjdF9pbnRlcm5h bF9vcHMpOwo+ICsKPiArCW9iai0+YmFzZS53cml0ZV9kb21haW4gPSBJOTE1X0dFTV9ET01BSU5f Q1BVOwo+ICsJb2JqLT5iYXNlLnJlYWRfZG9tYWlucyA9IEk5MTVfR0VNX0RPTUFJTl9DUFU7Cj4g KwlvYmotPmNhY2hlX2xldmVsID0gSEFTX0xMQyhkZXYpID8gSTkxNV9DQUNIRV9MTEMgOiBJOTE1 X0NBQ0hFX05PTkU7Cj4gKwo+ICsJcmV0dXJuIG9iajsKPiArfQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJfc3RhdGUuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5jCj4gaW5kZXggMDljZjQ4NzRjNDVmLi5jMDA5 ZWUxYzI3ZmQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVu ZGVyX3N0YXRlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZW5kZXJf c3RhdGUuYwo+IEBAIC0xODcsNyArMTg3LDcgQEAgaW50IGk5MTVfZ2VtX3JlbmRlcl9zdGF0ZV9p bml0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAgCWlmIChzby5yb2RhdGEt PmJhdGNoX2l0ZW1zICogNCA+IDQwOTYpCj4gICAJCXJldHVybiAtRUlOVkFMOwo+ICAgCj4gLQlv YmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlKCZyZXEtPmk5MTUtPmRybSwgNDA5Nik7Cj4gKwlv YmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX2ludGVybmFsKCZyZXEtPmk5MTUtPmRybSwgNDA5 Nik7Cj4gICAJaWYgKElTX0VSUihvYmopKQo+ICAgCQlyZXR1cm4gUFRSX0VSUihvYmopOwo+ICAg Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPiBpbmRleCA0ODA1ODRjMDkz MDYuLjk5NzM3Yjg0MmQ3MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9lbmdpbmVfY3MuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9j cy5jCj4gQEAgLTI1MSw3ICsyNTEsNyBAQCBpbnQgaW50ZWxfZW5naW5lX2NyZWF0ZV9zY3JhdGNo KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgaW50IHNpemUpCj4gICAKPiAgIAlvYmog PSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbigmZW5naW5lLT5pOTE1LT5kcm0sIHNpemUp Owo+ICAgCWlmICghb2JqKQo+IC0JCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGUoJmVuZ2lu ZS0+aTkxNS0+ZHJtLCBzaXplKTsKPiArCQlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX2lu dGVybmFsKCZlbmdpbmUtPmk5MTUtPmRybSwgc2l6ZSk7Cj4gICAJaWYgKElTX0VSUihvYmopKSB7 Cj4gICAJCURSTV9FUlJPUigiRmFpbGVkIHRvIGFsbG9jYXRlIHNjcmF0Y2ggcGFnZVxuIik7Cj4g ICAJCXJldHVybiBQVFJfRVJSKG9iaik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jpbmdi dWZmZXIuYwo+IGluZGV4IGYzZGZiN2NhNjI1ZC4uYjVkOWMwM2Y4NGNlIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IEBAIC0xNzgzLDkgKzE3ODMsMTAgQEAg c3RhdGljIGludCBpbml0X3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ICAgCXN0cnVjdCBpOTE1 X3ZtYSAqdm1hOwo+ICAgCXVuc2lnbmVkIGludCBmbGFnczsKPiArCXZvaWQgKnZhZGRyOwo+ICAg CWludCByZXQ7Cj4gICAKPiAtCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGUoJmVuZ2luZS0+ aTkxNS0+ZHJtLCA0MDk2KTsKPiArCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJu YWwoJmVuZ2luZS0+aTkxNS0+ZHJtLCA0MDk2KTsKPiAgIAlpZiAoSVNfRVJSKG9iaikpIHsKPiAg IAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gYWxsb2NhdGUgc3RhdHVzIHBhZ2VcbiIpOwo+ICAgCQly ZXR1cm4gUFRSX0VSUihvYmopOwo+IEBAIC0xODE4LDE1ICsxODE5LDIyIEBAIHN0YXRpYyBpbnQg aW5pdF9zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJaWYg KHJldCkKPiAgIAkJZ290byBlcnI7Cj4gICAKPiArCXZhZGRyID0gaTkxNV9nZW1fb2JqZWN0X3Bp bl9tYXAob2JqLCBJOTE1X01BUF9XQik7Cj4gKwlpZiAoSVNfRVJSKHZhZGRyKSkgewo+ICsJCXJl dCA9IFBUUl9FUlIodmFkZHIpOwo+ICsJCWdvdG8gZXJyX3VucGluOwo+ICsJfQoKQW5kIHlvdSBk b24ndCB3YW50IHRvIHNwbGl0IHRoZSBidWdmaXggb3V0PwoKPiArCj4gICAJZW5naW5lLT5zdGF0 dXNfcGFnZS52bWEgPSB2bWE7Cj4gICAJZW5naW5lLT5zdGF0dXNfcGFnZS5nZ3R0X29mZnNldCA9 IGk5MTVfZ2d0dF9vZmZzZXQodm1hKTsKPiAtCWVuZ2luZS0+c3RhdHVzX3BhZ2UucGFnZV9hZGRy ID0KPiAtCQlpOTE1X2dlbV9vYmplY3RfcGluX21hcChvYmosIEk5MTVfTUFQX1dCKTsKPiArCWVu Z2luZS0+c3RhdHVzX3BhZ2UucGFnZV9hZGRyID0gbWVtc2V0KHZhZGRyLCAwLCA0MDk2KTsKPiAg IAo+ICAgCURSTV9ERUJVR19EUklWRVIoIiVzIGh3cyBvZmZzZXQ6IDB4JTA4eFxuIiwKPiAgIAkJ CSBlbmdpbmUtPm5hbWUsIGk5MTVfZ2d0dF9vZmZzZXQodm1hKSk7Cj4gICAJcmV0dXJuIDA7Cj4g ICAKPiArZXJyX3VucGluOgo+ICsJaTkxNV92bWFfdW5waW4odm1hKTsKPiAgIGVycjoKPiAgIAlp OTE1X2dlbV9vYmplY3RfcHV0KG9iaik7Cj4gICAJcmV0dXJuIHJldDsKClJlZ2FyZHMsCgpUdnJ0 a28KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=