From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Harrison Subject: Re: [PATCH 14/42] drm/i915: Use a radixtree for random access to the object's backing storage Date: Tue, 11 Oct 2016 11:15:45 +0100 Message-ID: <018cb0b8-da63-2bbc-c668-34f78397ca85@Intel.com> References: <20161007094635.28319-1-chris@chris-wilson.co.uk> <20161007094635.28319-15-chris@chris-wilson.co.uk> <27ae781e-e121-8262-b170-2cb83b8f8cb0@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id A9C5E6E2D6 for ; Tue, 11 Oct 2016 10:15:47 +0000 (UTC) In-Reply-To: <27ae781e-e121-8262-b170-2cb83b8f8cb0@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMTEvMTAvMjAxNiAxMDozMiwgVHZydGtvIFVyc3VsaW4gd3JvdGU6Cj4KPiBPbiAwNy8xMC8y MDE2IDEwOjQ2LCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4+IEEgd2hpbGUgYWdvIHdlIHN3aXRjaGVk IGZyb20gYSBjb250aWd1b3VzIGFycmF5IG9mIHBhZ2VzIGludG8gYW4gc2dsaXN0LAo+PiBmb3Ig dGhhdCB3YXMgYm90aCBtb3JlIGNvbnZlbmllbnQgZm9yIG1hcHBpbmcgdG8gaGFyZHdhcmUgYW5k IGF2b2lkZWQKPj4gdGhlIHJlcXVpcmVtZW50IGZvciBhIHZtYWxsb2MgYXJyYXkgb2YgcGFnZXMg b24gZXZlcnkgb2JqZWN0LiBIb3dldmVyLAo+PiBjZXJ0YWluIEdFTSBBUEkgY2FsbHMgKGxpa2Ug cHdyaXRlLCBwcmVhZCBhcyB3ZWxsIGFzIHBlcmZvcm1pbmcKPj4gcmVsb2NhdGlvbnMpIGRvIGRl c2lyZSBhY2Nlc3MgdG8gaW5kaXZpZHVhbCBzdHJ1Y3QgcGFnZXMuIEEgcXVpY2sgaGFjawo+PiB3 YXMgdG8gaW50cm9kdWNlIGEgY2FjaGUgb2YgdGhlIGxhc3QgYWNjZXNzIHN1Y2ggdGhhdCBmaW5k aW5nIHRoZQo+PiBmb2xsb3dpbmcgcGFnZSB3YXMgcXVpY2sgLSB0aGlzIHdvcmtzIHNvIGxvbmcg YXMgdGhlIGNhbGxlciBkZXNpcmVkCj4+IHNlcXVlbnRpYWwgYWNjZXNzLiBXYWxraW5nIGJhY2t3 YXJkcywgb3IgbXVsdGlwbGUgY2FsbGVycywgc3RpbGwgaGl0cyBhCj4+IHNsb3cgbGluZWFyIHNl YXJjaCBmb3IgZWFjaCBwYWdlLiBPbmUgc29sdXRpb24gaXMgdG8gc3RvcmUgZWFjaAo+PiBzdWNj ZXNzZnVsIGxvb2t1cCBpbiBhIHJhZGl4IHRyZWUuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IENocmlz IFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+PiAtLS0KPj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAgNTcgKysrKy0tLS0tLS0tCj4+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgIHwgMTQ5IAo+PiArKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X3N0b2xlbi5jICB8ICAgNCArLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Vz ZXJwdHIuYyB8ICAgNCArLQo+PiAgIDQgZmlsZXMgY2hhbmdlZCwgMTU0IGluc2VydGlvbnMoKyks IDYwIGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaCAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+IGluZGV4 IGJhZDk3ZjFlNTI2NS4uYTk2YjQ0NmQ4ZGI0IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKPj4gQEAgLTIyNzgsOSArMjI3OCwxMiBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7 Cj4+ICAgICAgICAgc3RydWN0IHNnX3RhYmxlICpwYWdlczsKPj4gICAgICAgaW50IHBhZ2VzX3Bp bl9jb3VudDsKPj4gLSAgICBzdHJ1Y3QgZ2V0X3BhZ2Ugewo+PiAtICAgICAgICBzdHJ1Y3Qgc2Nh dHRlcmxpc3QgKnNnOwo+PiAtICAgICAgICBpbnQgbGFzdDsKPj4gKyAgICBzdHJ1Y3QgaTkxNV9n ZW1fb2JqZWN0X3BhZ2VfaXRlciB7Cj4+ICsgICAgICAgIHN0cnVjdCBzY2F0dGVybGlzdCAqc2df cG9zOwo+PiArICAgICAgICB1bnNpZ25lZCBsb25nIHNnX2lkeDsKPj4gKwo+PiArICAgICAgICBz dHJ1Y3QgcmFkaXhfdHJlZV9yb290IHJhZGl4Owo+PiArICAgICAgICBzdHJ1Y3QgbXV0ZXggbG9j azsKPj4gICAgICAgfSBnZXRfcGFnZTsKPj4gICAgICAgdm9pZCAqbWFwcGluZzsKPj4gICBAQCAt MzE2OCw0NSArMzE3MSwyMSBAQCBzdGF0aWMgaW5saW5lIGludCBfX3NnX3BhZ2VfY291bnQoc3Ry dWN0IAo+PiBzY2F0dGVybGlzdCAqc2cpCj4+ICAgICAgIHJldHVybiBzZy0+bGVuZ3RoID4+IFBB R0VfU0hJRlQ7Cj4+ICAgfQo+PiAgIC1zdHJ1Y3QgcGFnZSAqCj4+IC1pOTE1X2dlbV9vYmplY3Rf Z2V0X2RpcnR5X3BhZ2Uoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgaW50IG4pOwo+ PiAtCj4+IC1zdGF0aWMgaW5saW5lIGRtYV9hZGRyX3QKPj4gLWk5MTVfZ2VtX29iamVjdF9nZXRf ZG1hX2FkZHJlc3Moc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgaW50IG4pCj4+IC17 Cj4+IC0gICAgaWYgKG4gPCBvYmotPmdldF9wYWdlLmxhc3QpIHsKPj4gLSAgICAgICAgb2JqLT5n ZXRfcGFnZS5zZyA9IG9iai0+cGFnZXMtPnNnbDsKPj4gLSAgICAgICAgb2JqLT5nZXRfcGFnZS5s YXN0ID0gMDsKPj4gLSAgICB9Cj4+IC0KPj4gLSAgICB3aGlsZSAob2JqLT5nZXRfcGFnZS5sYXN0 ICsgX19zZ19wYWdlX2NvdW50KG9iai0+Z2V0X3BhZ2Uuc2cpIDw9IAo+PiBuKSB7Cj4+IC0gICAg ICAgIG9iai0+Z2V0X3BhZ2UubGFzdCArPSBfX3NnX3BhZ2VfY291bnQob2JqLT5nZXRfcGFnZS5z ZysrKTsKPj4gLSAgICAgICAgaWYgKHVubGlrZWx5KHNnX2lzX2NoYWluKG9iai0+Z2V0X3BhZ2Uu c2cpKSkKPj4gLSAgICAgICAgICAgIG9iai0+Z2V0X3BhZ2Uuc2cgPSBzZ19jaGFpbl9wdHIob2Jq LT5nZXRfcGFnZS5zZyk7Cj4+IC0gICAgfQo+PiAtCj4+IC0gICAgcmV0dXJuIHNnX2RtYV9hZGRy ZXNzKG9iai0+Z2V0X3BhZ2Uuc2cpICsgKChuIC0gCj4+IG9iai0+Z2V0X3BhZ2UubGFzdCkgPDwg UEFHRV9TSElGVCk7Cj4+IC19Cj4+IC0KPj4gLXN0YXRpYyBpbmxpbmUgc3RydWN0IHBhZ2UgKgo+ PiAtaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmosIGludCBuKQo+PiAtewo+PiAtICAgIGlmIChXQVJOX09OKG4gPj0gb2JqLT5iYXNlLnNpemUg Pj4gUEFHRV9TSElGVCkpCj4+IC0gICAgICAgIHJldHVybiBOVUxMOwo+PiArc3RydWN0IHNjYXR0 ZXJsaXN0ICoKPj4gK2k5MTVfZ2VtX29iamVjdF9nZXRfc2coc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiwKPj4gKyAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbiwgdW5zaWduZWQg aW50ICpvZmZzZXQpOwo+PiAgIC0gICAgaWYgKG4gPCBvYmotPmdldF9wYWdlLmxhc3QpIHsKPj4g LSAgICAgICAgb2JqLT5nZXRfcGFnZS5zZyA9IG9iai0+cGFnZXMtPnNnbDsKPj4gLSAgICAgICAg b2JqLT5nZXRfcGFnZS5sYXN0ID0gMDsKPj4gLSAgICB9Cj4+ICtzdHJ1Y3QgcGFnZSAqCj4+ICtp OTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2Uoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwK Pj4gKyAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG4pOwo+PiAgIC0gICAgd2hpbGUgKG9iai0+ Z2V0X3BhZ2UubGFzdCArIF9fc2dfcGFnZV9jb3VudChvYmotPmdldF9wYWdlLnNnKSAKPj4gPD0g bikgewo+PiAtICAgICAgICBvYmotPmdldF9wYWdlLmxhc3QgKz0gX19zZ19wYWdlX2NvdW50KG9i ai0+Z2V0X3BhZ2Uuc2crKyk7Cj4+IC0gICAgICAgIGlmICh1bmxpa2VseShzZ19pc19jaGFpbihv YmotPmdldF9wYWdlLnNnKSkpCj4+IC0gICAgICAgICAgICBvYmotPmdldF9wYWdlLnNnID0gc2df Y2hhaW5fcHRyKG9iai0+Z2V0X3BhZ2Uuc2cpOwo+PiAtICAgIH0KPj4gK3N0cnVjdCBwYWdlICoK Pj4gK2k5MTVfZ2VtX29iamVjdF9nZXRfZGlydHlfcGFnZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqLAo+PiArICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbik7Cj4+ICAg LSAgICByZXR1cm4gbnRoX3BhZ2Uoc2dfcGFnZShvYmotPmdldF9wYWdlLnNnKSwgbiAtIAo+PiBv YmotPmdldF9wYWdlLmxhc3QpOwo+PiAtfQo+PiArZG1hX2FkZHJfdAo+PiAraTkxNV9nZW1fb2Jq ZWN0X2dldF9kbWFfYWRkcmVzcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+PiAr ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbik7Cj4+ICAgICBzdGF0aWMgaW5saW5lIHZv aWQgaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhzdHJ1Y3QgCj4+IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaikKPj4gICB7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPj4gaW5kZXggYWRh ODM3ZTM5M2E3Li5hZjdkNTFmMTY2NTggMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ PiBAQCAtMjI5Miw2ICsyMjkyLDE1IEBAIGk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXNfZ3R0KHN0 cnVjdCAKPj4gZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+PiAgICAgICBrZnJlZShvYmotPnBh Z2VzKTsKPj4gICB9Cj4+ICAgK3N0YXRpYyB2b2lkIF9faTkxNV9nZW1fb2JqZWN0X3Jlc2V0X3Bh Z2VfaXRlcihzdHJ1Y3QgCj4+IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPj4gK3sKPj4gKyAg ICBzdHJ1Y3QgcmFkaXhfdHJlZV9pdGVyIGl0ZXI7Cj4+ICsgICAgdm9pZCAqKnNsb3Q7Cj4+ICsK Pj4gKyAgICByYWRpeF90cmVlX2Zvcl9lYWNoX3Nsb3Qoc2xvdCwgJm9iai0+Z2V0X3BhZ2UucmFk aXgsICZpdGVyLCAwKQo+PiArICAgICAgICByYWRpeF90cmVlX2RlbGV0ZSgmb2JqLT5nZXRfcGFn ZS5yYWRpeCwgaXRlci5pbmRleCk7Cj4+ICt9Cj4+ICsKPj4gICBpbnQKPj4gICBpOTE1X2dlbV9v YmplY3RfcHV0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4+ICAgewo+ PiBAQCAtMjMyNCw2ICsyMzMzLDggQEAgaTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhzdHJ1Y3Qg Cj4+IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPj4gICAgICAgICAgIG9iai0+bWFwcGluZyA9 IE5VTEw7Cj4+ICAgICAgIH0KPj4gICArICAgIF9faTkxNV9nZW1fb2JqZWN0X3Jlc2V0X3BhZ2Vf aXRlcihvYmopOwo+PiArCj4+ICAgICAgIG9wcy0+cHV0X3BhZ2VzKG9iaik7Cj4+ICAgICAgIG9i ai0+cGFnZXMgPSBOVUxMOwo+PiAgIEBAIC0yNDg4LDggKzI0OTksOCBAQCBpOTE1X2dlbV9vYmpl Y3RfZ2V0X3BhZ2VzKHN0cnVjdCAKPj4gZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+PiAgICAg ICAgIGxpc3RfYWRkX3RhaWwoJm9iai0+Z2xvYmFsX2xpc3QsICZkZXZfcHJpdi0+bW0udW5ib3Vu ZF9saXN0KTsKPj4gICAtICAgIG9iai0+Z2V0X3BhZ2Uuc2cgPSBvYmotPnBhZ2VzLT5zZ2w7Cj4+ IC0gICAgb2JqLT5nZXRfcGFnZS5sYXN0ID0gMDsKPj4gKyAgICBvYmotPmdldF9wYWdlLnNnX3Bv cyA9IG9iai0+cGFnZXMtPnNnbDsKPj4gKyAgICBvYmotPmdldF9wYWdlLnNnX2lkeCA9IDA7Cj4+ ICAgICAgICAgcmV0dXJuIDA7Cj4+ICAgfQo+PiBAQCAtNDI0Miw2ICs0MjUzLDggQEAgdm9pZCBp OTE1X2dlbV9vYmplY3RfaW5pdChzdHJ1Y3QgCj4+IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwK Pj4gICAgICAgICBvYmotPmZyb250YnVmZmVyX2dndHRfb3JpZ2luID0gT1JJR0lOX0dUVDsKPj4g ICAgICAgb2JqLT5tYWR2ID0gSTkxNV9NQURWX1dJTExORUVEOwo+PiArICAgIElOSVRfUkFESVhf VFJFRSgmb2JqLT5nZXRfcGFnZS5yYWRpeCwgR0ZQX0tFUk5FTCk7Cj4+ICsgICAgbXV0ZXhfaW5p dCgmb2JqLT5nZXRfcGFnZS5sb2NrKTsKPj4gICAgICAgICBpOTE1X2dlbV9pbmZvX2FkZF9vYmoo dG9faTkxNShvYmotPmJhc2UuZGV2KSwgb2JqLT5iYXNlLnNpemUpOwo+PiAgIH0KPj4gQEAgLTQ5 MDQsMjEgKzQ5MTcsNiBAQCB2b2lkIGk5MTVfZ2VtX3RyYWNrX2ZiKHN0cnVjdCAKPj4gZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2xkLAo+PiAgICAgICB9Cj4+ICAgfQo+PiAgIC0vKiBMaWtlIGk5MTVf Z2VtX29iamVjdF9nZXRfcGFnZSgpLCBidXQgbWFyayB0aGUgcmV0dXJuZWQgcGFnZSAKPj4gZGly dHkgKi8KPj4gLXN0cnVjdCBwYWdlICoKPj4gLWk5MTVfZ2VtX29iamVjdF9nZXRfZGlydHlfcGFn ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBpbnQgbikKPj4gLXsKPj4gLSAgICBz dHJ1Y3QgcGFnZSAqcGFnZTsKPj4gLQo+PiAtICAgIC8qIE9ubHkgZGVmYXVsdCBvYmplY3RzIGhh dmUgcGVyLXBhZ2UgZGlydHkgdHJhY2tpbmcgKi8KPj4gLSAgICBpZiAoV0FSTl9PTighaTkxNV9n ZW1fb2JqZWN0X2hhc19zdHJ1Y3RfcGFnZShvYmopKSkKPj4gLSAgICAgICAgcmV0dXJuIE5VTEw7 Cj4+IC0KPj4gLSAgICBwYWdlID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlKG9iaiwgbik7Cj4+ IC0gICAgc2V0X3BhZ2VfZGlydHkocGFnZSk7Cj4+IC0gICAgcmV0dXJuIHBhZ2U7Cj4+IC19Cj4+ IC0KPj4gICAvKiBBbGxvY2F0ZSBhIG5ldyBHRU0gb2JqZWN0IGFuZCBmaWxsIGl0IHdpdGggdGhl IHN1cHBsaWVkIGRhdGEgKi8KPj4gICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqCj4+ICAg aTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9mcm9tX2RhdGEoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK Pj4gQEAgLTQ5NTksMyArNDk1NywxMjAgQEAgZmFpbDoKPj4gICAgICAgaTkxNV9nZW1fb2JqZWN0 X3B1dChvYmopOwo+PiAgICAgICByZXR1cm4gRVJSX1BUUihyZXQpOwo+PiAgIH0KPj4gKwo+PiAr c3RhdGljIHN0cnVjdCBzY2F0dGVybGlzdCAqCj4+ICtfX2k5MTVfZ2VtX29iamVjdF9nZXRfc2co c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPj4gKyAgICAgICAgICAgICB1bnNpZ25l ZCBsb25nIG4sIHVuc2lnbmVkIGludCAqb2Zmc2V0KQo+PiArewo+PiArICAgIHN0cnVjdCBzY2F0 dGVybGlzdCAqc2cgPSBvYmotPnBhZ2VzLT5zZ2w7Cj4+ICsgICAgaW50IGlkeCA9IDA7Cj4+ICsK Pj4gKyAgICB3aGlsZSAoaWR4ICsgX19zZ19wYWdlX2NvdW50KHNnKSA8PSBuKSB7Cj4+ICsgICAg ICAgIGlkeCArPSBfX3NnX3BhZ2VfY291bnQoc2crKyk7Cj4+ICsgICAgICAgIGlmICh1bmxpa2Vs eShzZ19pc19jaGFpbihzZykpKQo+PiArICAgICAgICAgICAgc2cgPSBzZ19jaGFpbl9wdHIoc2cp Owo+PiArICAgIH0KPj4gKwo+PiArICAgICpvZmZzZXQgPSBuIC0gaWR4Owo+PiArICAgIHJldHVy biBzZzsKPj4gK30KPj4gKwo+PiArc3RydWN0IHNjYXR0ZXJsaXN0ICoKPj4gK2k5MTVfZ2VtX29i amVjdF9nZXRfc2coc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPj4gKyAgICAgICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgbiwKPj4gKyAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAq b2Zmc2V0KQo+PiArewo+PiArICAgIHN0cnVjdCBpOTE1X2dlbV9vYmplY3RfcGFnZV9pdGVyICpp dGVyID0gJm9iai0+Z2V0X3BhZ2U7Cj4+ICsgICAgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsKPj4g Kwo+PiArICAgIEdFTV9CVUdfT04obiA+PSBvYmotPmJhc2Uuc2l6ZSA+PiBQQUdFX1NISUZUKTsK Pj4gKyAgICBHRU1fQlVHX09OKG9iai0+cGFnZXNfcGluX2NvdW50ID09IDApOwo+PiArCj4+ICsg ICAgaWYgKG4gPCBSRUFEX09OQ0UoaXRlci0+c2dfaWR4KSkKPj4gKyAgICAgICAgZ290byBsb29r dXA7Cj4+ICsKPgo+IE9rLCBzbyBvbiBsb29rdXAgb2YgIm4iIHlvdSBidWlsZCB0aGUgcmFkaXgg dHJlZSBmb3IgYWxsIHNnIGVudHJpZXMgCj4gZnJvbSB6ZXJvIHRvIG4uIFRoZXJlZm9yZSBmb3Ig YSBsb29rdXAgYmVsb3cgdGhlIGN1cnJlbnQgaW5kZXgsIHRoZXJlIAo+IG11c3QgYmUgYSByYWRp eCB0cmVlIGVudHJ5LCBjb3JyZWN0PwpUaGF0IGlzIG15IHVuZGVyc3RhbmRpbmcuCgo+Cj4+ICsg ICAgbXV0ZXhfbG9jaygmaXRlci0+bG9jayk7Cj4+ICsgICAgaWYgKG4gPj0gaXRlci0+c2dfaWR4 ICYmCj4+ICsgICAgICAgIG4gPCBpdGVyLT5zZ19pZHggKyBfX3NnX3BhZ2VfY291bnQoaXRlci0+ c2dfcG9zKSkgewo+PiArICAgICAgICBzZyA9IGl0ZXItPnNnX3BvczsKPj4gKyAgICAgICAgKm9m ZnNldCA9IG4gLSBpdGVyLT5zZ19pZHg7Cj4+ICsgICAgICAgIG11dGV4X3VubG9jaygmaXRlci0+ bG9jayk7Cj4+ICsgICAgICAgIHJldHVybiBzZzsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICB3aGls ZSAoaXRlci0+c2dfaWR4IDw9IG4pIHsKPj4gKyAgICAgICAgdW5zaWduZWQgbG9uZyBleGNlcHRp b247Cj4+ICsgICAgICAgIHVuc2lnbmVkIGludCBjb3VudCwgaTsKPj4gKwo+PiArICAgICAgICBy YWRpeF90cmVlX2luc2VydCgmaXRlci0+cmFkaXgsCj4+ICsgICAgICAgICAgICAgICAgICBpdGVy LT5zZ19pZHgsCj4+ICsgICAgICAgICAgICAgICAgICBpdGVyLT5zZ19wb3MpOwo+PiArCj4+ICsg ICAgICAgIGV4Y2VwdGlvbiA9Cj4+ICsgICAgICAgICAgICBSQURJWF9UUkVFX0VYQ0VQVElPTkFM X0VOVFJZIHwKPj4gKyAgICAgICAgICAgIGl0ZXItPnNnX2lkeCA8PCBSQURJWF9UUkVFX0VYQ0VQ VElPTkFMX1NISUZUOwo+PiArICAgICAgICBjb3VudCA9IF9fc2dfcGFnZV9jb3VudChpdGVyLT5z Z19wb3MpOwo+PiArICAgICAgICBmb3IgKGkgPSAxOyBpIDwgY291bnQ7IGkrKykKPj4gKyAgICAg ICAgICAgIHJhZGl4X3RyZWVfaW5zZXJ0KCZpdGVyLT5yYWRpeCwKPj4gKyAgICAgICAgICAgICAg ICAgICAgICBpdGVyLT5zZ19pZHggKyBpLAo+PiArICAgICAgICAgICAgICAgICAgICAgICh2b2lk ICopZXhjZXB0aW9uKTsKPj4gKwo+PiArICAgICAgICBpdGVyLT5zZ19pZHggKz0gY291bnQ7Cj4+ ICsgICAgICAgIGl0ZXItPnNnX3BvcyA9IF9fc2dfbmV4dChpdGVyLT5zZ19wb3MpOwo+PiArICAg IH0KPj4gKyAgICBtdXRleF91bmxvY2soJml0ZXItPmxvY2spOwo+Cj4gV2h5IG5vdCBhdm9pZCBm YWxsaW5nIHRocm91Z2ggdGhlIGxvb2t1cCBhbmQgcmV0dXJuIHRoZSBwcmV2aW91cyBzZyAKPiBm cm9tIGhlcmU/CkkgdGhvdWdodCBJIHdvcmtlZCB0aHJvdWdoIHRoaXMgYmVmb3JlIGFuZCBkZWNp ZGVkIHRoZXJlIHdhcyBhIGdvb2QgCnJlYXNvbi4gSG93ZXZlciwgbG9va2luZyBhZ2FpbiBhIGZl dyBkYXlzIGxhdGVyLCBJIGNhbid0IG9idmlvdXNseSBzZWUgCndoeS4gQXMgeW91IG5vdGUgYmVs b3csIHRoaXMgaXMgbm9uLXRyaXZpYWwgc3R1ZmYgYW5kIHdvdWxkIGRlZmluaXRlbHkgCmJlbmVm aXQgZnJvbSBzb21lIGV4cGxhbmF0b3J5IGNvbW1lbnRzLgoKPgo+PiArCj4+ICtsb29rdXA6Cj4+ ICsgICAgcmN1X3JlYWRfbG9jaygpOwo+PiArICAgIHNnID0gcmFkaXhfdHJlZV9sb29rdXAoJml0 ZXItPnJhZGl4LCBuKTsKPj4gKyAgICByY3VfcmVhZF91bmxvY2soKTsKPj4gKwo+PiArICAgIGlm ICh1bmxpa2VseSghc2cpKQo+PiArICAgICAgICByZXR1cm4gX19pOTE1X2dlbV9vYmplY3RfZ2V0 X3NnKG9iaiwgbiwgb2Zmc2V0KTsKPj4gKwo+Cj4gQ29uc2lkZXJpbmcgdGhlIGZpcnN0IG9ic2Vy dmF0aW9uIGZyb20gYWJvdmUsIHdoZW4gZG9lcyBpdCB0aGVuIGhhcHBlbiAKPiB0aGF0IHRoZXJl IGlzIG5vIHJhZGl4IHRyZWUgZW50cnkgYXQgdGhpcyBwb2ludD8KPgo+IE9yIGluIG90aGVyIHdv cmRzLCBtYXliZSBzb21lIGNvbW1lbnRzIHNob3VsZCBiZSBhZGRlZCB0byB0aGlzIHBhdGNoIC0g Cj4gdGhlcmUgYXJlIG5vbmUgYW5kIGl0IGlzIG5vdCB0aGF0IHRyaXZpYWwuCj4KPj4gKyAgICAq b2Zmc2V0ID0gMDsKPj4gKyAgICBpZiAodW5saWtlbHkocmFkaXhfdHJlZV9leGNlcHRpb24oc2cp KSkgewo+PiArICAgICAgICB1bnNpZ25lZCBsb25nIGJhc2UgPQo+PiArICAgICAgICAgICAgKHVu c2lnbmVkIGxvbmcpc2cgPj4gUkFESVhfVFJFRV9FWENFUFRJT05BTF9TSElGVDsKPj4gKyAgICAg ICAgc2cgPSByYWRpeF90cmVlX2xvb2t1cCgmaXRlci0+cmFkaXgsIGJhc2UpOwo+PiArICAgICAg ICAqb2Zmc2V0ID0gbiAtIGJhc2U7Cj4+ICsgICAgfQo+PiArICAgIHJldHVybiBzZzsKPj4gK30K Pj4gKwo+PiArc3RydWN0IHBhZ2UgKgo+PiAraTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIHVuc2lnbmVkIAo+PiBsb25nIG4pCj4+ICt7Cj4+ ICsgICAgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsKPj4gKyAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0 Owo+PiArCj4+ICsgICAgR0VNX0JVR19PTighaTkxNV9nZW1fb2JqZWN0X2hhc19zdHJ1Y3RfcGFn ZShvYmopKTsKPj4gKwo+PiArICAgIHNnID0gaTkxNV9nZW1fb2JqZWN0X2dldF9zZyhvYmosIG4s ICZvZmZzZXQpOwo+PiArICAgIHJldHVybiBudGhfcGFnZShzZ19wYWdlKHNnKSwgb2Zmc2V0KTsK Pj4gK30KPj4gKwo+PiArLyogTGlrZSBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2UoKSwgYnV0IG1h cmsgdGhlIHJldHVybmVkIHBhZ2UgZGlydHkgKi8KPj4gK3N0cnVjdCBwYWdlICoKPj4gK2k5MTVf Z2VtX29iamVjdF9nZXRfZGlydHlfcGFnZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq LAo+PiArICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbikKPj4gK3sKPj4gKyAgICBz dHJ1Y3QgcGFnZSAqcGFnZTsKPj4gKwo+PiArICAgIHBhZ2UgPSBpOTE1X2dlbV9vYmplY3RfZ2V0 X3BhZ2Uob2JqLCBuKTsKPj4gKyAgICBpZiAoIW9iai0+ZGlydHkpCj4+ICsgICAgICAgIHNldF9w YWdlX2RpcnR5KHBhZ2UpOwo+PiArCj4+ICsgICAgcmV0dXJuIHBhZ2U7Cj4+ICt9Cj4+ICsKPj4g K2RtYV9hZGRyX3QKPj4gK2k5MTVfZ2VtX29iamVjdF9nZXRfZG1hX2FkZHJlc3Moc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPj4gKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n IG4pCj4+ICt7Cj4+ICsgICAgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsKPj4gKyAgICB1bnNpZ25l ZCBpbnQgb2Zmc2V0Owo+PiArCj4+ICsgICAgc2cgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3NnKG9i aiwgbiwgJm9mZnNldCk7Cj4+ICsgICAgcmV0dXJuIHNnX2RtYV9hZGRyZXNzKHNnKSArIChvZmZz ZXQgPDwgUEFHRV9TSElGVCk7Cj4+ICt9Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9zdG9sZW4uYyAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9zdG9sZW4uYwo+PiBpbmRleCA1OTk4OWU4ZWU1ZGMuLjI0YmFkNGU2MGVmMCAxMDA2NDQKPj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKPj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKPj4gQEAgLTU5NCw4ICs1OTQsOCBA QCBfaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgCj4+ICpk ZXYsCj4+ICAgICAgIGlmIChvYmotPnBhZ2VzID09IE5VTEwpCj4+ICAgICAgICAgICBnb3RvIGNs ZWFudXA7Cj4+ICAgLSAgICBvYmotPmdldF9wYWdlLnNnID0gb2JqLT5wYWdlcy0+c2dsOwo+PiAt ICAgIG9iai0+Z2V0X3BhZ2UubGFzdCA9IDA7Cj4+ICsgICAgb2JqLT5nZXRfcGFnZS5zZ19wb3Mg PSBvYmotPnBhZ2VzLT5zZ2w7Cj4+ICsgICAgb2JqLT5nZXRfcGFnZS5zZ19pZHggPSAwOwo+PiAg ICAgICAgIGk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKPj4gICAgICAgb2JqLT5zdG9s ZW4gPSBzdG9sZW47Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV91c2VycHRyLmMgCj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdXNlcnB0ci5j Cj4+IGluZGV4IDFjODkxYjkyYWM4MC4uY2I5NTc4OWRhNzZlIDEwMDY0NAo+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMKPj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fdXNlcnB0ci5jCj4+IEBAIC01MjYsOCArNTI2LDggQEAgX19pOTE1 X2dlbV91c2VycHRyX2dldF9wYWdlc193b3JrZXIoc3RydWN0IAo+PiB3b3JrX3N0cnVjdCAqX3dv cmspCj4+ICAgICAgICAgICAgICAgaWYgKHJldCA9PSAwKSB7Cj4+ICAgICAgICAgICAgICAgICAg IGxpc3RfYWRkX3RhaWwoJm9iai0+Z2xvYmFsX2xpc3QsCj4+ICZ0b19pOTE1KGRldiktPm1tLnVu Ym91bmRfbGlzdCk7Cj4+IC0gICAgICAgICAgICAgICAgb2JqLT5nZXRfcGFnZS5zZyA9IG9iai0+ cGFnZXMtPnNnbDsKPj4gLSAgICAgICAgICAgICAgICBvYmotPmdldF9wYWdlLmxhc3QgPSAwOwo+ PiArICAgICAgICAgICAgICAgIG9iai0+Z2V0X3BhZ2Uuc2dfcG9zID0gb2JqLT5wYWdlcy0+c2ds Owo+PiArICAgICAgICAgICAgICAgIG9iai0+Z2V0X3BhZ2Uuc2dfaWR4ID0gMDsKPj4gICAgICAg ICAgICAgICAgICAgcGlubmVkID0gMDsKPj4gICAgICAgICAgICAgICB9Cj4+ICAgICAgICAgICB9 Cj4KPiBSZWdhcmRzLAo+Cj4gVHZydGtvCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK