From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michel Thierry Subject: Re: [PATCH 5/8] drm/i915/guc: Extract doorbell creation from client allocation Date: Wed, 13 Dec 2017 11:03:55 -0800 Message-ID: References: <20171213125046.1735-1-michal.winiarski@intel.com> <20171213125046.1735-5-michal.winiarski@intel.com> 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 AE3296E579 for ; Wed, 13 Dec 2017 19:03:59 +0000 (UTC) In-Reply-To: <20171213125046.1735-5-michal.winiarski@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Winiarski, Michal" , "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gMTMvMTIvMTcgMDQ6NTAsIFdpbmlhcnNraSwgTWljaGFsIHdyb3RlOgo+IEZ1bGwgR1BVIHJl c2V0IGNhdXNlcyBHdUMgdG8gYmUgcmVzZXQuIFRoaXMgbWVhbnMgdGhhdCBldmVyeSB0aW1lIHdl J3JlCj4gZG9pbmcgYSByZXNldCwgd2UgbmVlZCB0byB0YWxrIHRvIEd1QyBhbmQgdGVsbCBpdCBh Ym91dCBkb29yYmVsbHMuCj4gTGV0J3Mgc2VwYXJhdGUgdGhlIGNvbW11bmljYXRpb24gcGFydCAo Y3JlYXRlX2Rvb3JiZWxsKSBmcm9tIG91cgo+IGludGVybmFsIGJvb2trZWVwaW5nIChyZXNlcnZl X2Rvb3JiZWxsKSBzbyB0aGF0IHdlIGNhbiBjbGVhbmx5IHNlcGFyYXRlCj4gdGhlIGluaXRpYWxp emF0aW9uIGRvbmUgYXQgbW9kdWxlIGxvYWQgZnJvbSByZWluaXRpYWxpemF0aW9uIGRvbmUgYXQK PiByZXNldCBpbiB0aGUgZm9sbG93aW5nIHBhdGNoLgo+IFdoaWxlIEknbSBoZXJlLCBsZXQncyBh bHNvIGFkZCBhIHByb3BlciAoYWx0aG91Z2ggc2xpZ2h0bHkgYXN5bWV0cmljKQo+IGNsZWFudXAg dGhhdCBkb2Vzbid0IHRyeSB0byBjb21tdW5pY2F0ZSB3aXRoIEd1QyBhZnRlciBpdCdzIGFscmVh ZHkKPiBnb25lLCBnZXR0aW5nIHJpZCBvZiAiZXhwZWN0ZWQiIHdhcm5pbmdzIGNhdXNlZCBieSBH dUMgYWN0aW9uIGZhaWx1cmVzCj4gb24gbW9kdWxlIHVubG9hZC4KPiAKPiBOb3RlIHRoYXQgSSd2 ZSBhbHNvIHJlbW92ZWQgb25lIG9mIHRoZSB0ZXN0cyAoYml0bWFwIG91dCBvZiBzeW5jKSwgc2lu Y2UKPiBpdCBkb2Vzbid0IG1ha2UgbXVjaCBzZW5zZSBhbnltb3JlIC0gYml0bWFwcyBhcmUgbm93 IG5vdCBleHBlY3RlZCB0bwo+IGNoYW5nZSBkdXJpbmcgdGhlIGxpZmV0aW1lIG9mIGEgY2xpZW50 Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IE1pY2hhxYIgV2luaWFyc2tpIDxtaWNoYWwud2luaWFyc2tp QGludGVsLmNvbT4KPiBDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ Cj4gQ2M6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4K PiBDYzogTWljaGFsIFdhamRlY3prbyA8bWljaGFsLndhamRlY3prb0BpbnRlbC5jb20+Cj4gQ2M6 IE1pY2hlbCBUaGllcnJ5IDxtaWNoZWwudGhpZXJyeUBpbnRlbC5jb20+Cj4gLS0tCj4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc3VibWlzc2lvbi5jIHwgMTUxICsrKysrKysrLS0t LS0tLS0tLS0tLS0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRl bF9ndWMuYyAgfCAxMTAgKysrKysrKysrLS0tLS0tLS0tLS0KPiAgIDIgZmlsZXMgY2hhbmdlZCwg ODggaW5zZXJ0aW9ucygrKSwgMTczIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc3VibWlzc2lvbi5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwo+IGluZGV4IDhmNGIyNzRkNjZhNy4uYzc0ZTc4 YjZiYTQxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJt aXNzaW9uLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc3VibWlzc2lv bi5jCj4gQEAgLTg4LDcgKzg4LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzX2hpZ2hfcHJpb3Jp dHkoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCkKPiAgICAgICAgICAgICAgICAgIGNs aWVudC0+cHJpb3JpdHkgPT0gR1VDX0NMSUVOVF9QUklPUklUWV9ISUdIKTsKPiAgIH0KPiAKPiAt c3RhdGljIGludCBfX3Jlc2VydmVfZG9vcmJlbGwoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNs aWVudCkKPiArc3RhdGljIGludCByZXNlcnZlX2Rvb3JiZWxsKHN0cnVjdCBpbnRlbF9ndWNfY2xp ZW50ICpjbGllbnQpCj4gICB7Cj4gICAgICAgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQ7Cj4gICAg ICAgICAgdW5zaWduZWQgbG9uZyBlbmQ7Cj4gQEAgLTEyMCw3ICsxMjAsNyBAQCBzdGF0aWMgaW50 IF9fcmVzZXJ2ZV9kb29yYmVsbChzdHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50KQo+ICAg ICAgICAgIHJldHVybiAwOwo+ICAgfQo+IAo+IC1zdGF0aWMgdm9pZCBfX3VucmVzZXJ2ZV9kb29y YmVsbChzdHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgdm9pZCB1bnJl c2VydmVfZG9vcmJlbGwoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCkKPiAgIHsKPiAg ICAgICAgICBHRU1fQlVHX09OKGNsaWVudC0+ZG9vcmJlbGxfaWQgPT0gR1VDX0RPT1JCRUxMX0lO VkFMSUQpOwo+IAo+IEBAIC0xODgsMzIgKzE4OCwyMSBAQCBzdGF0aWMgYm9vbCBoYXNfZG9vcmJl bGwoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCkKPiAgICAgICAgICByZXR1cm4gdGVz dF9iaXQoY2xpZW50LT5kb29yYmVsbF9pZCwgY2xpZW50LT5ndWMtPmRvb3JiZWxsX2JpdG1hcCk7 Cj4gICB9Cj4gCj4gLXN0YXRpYyBpbnQgX19jcmVhdGVfZG9vcmJlbGwoc3RydWN0IGludGVsX2d1 Y19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgX19jcmVhdGVfZG9vcmJlbGwoc3RydWN0 IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCkKPiAgIHsKPiAgICAgICAgICBzdHJ1Y3QgZ3VjX2Rv b3JiZWxsX2luZm8gKmRvb3JiZWxsOwo+IC0gICAgICAgaW50IGVycjsKPiAKPiAgICAgICAgICBk b29yYmVsbCA9IF9fZ2V0X2Rvb3JiZWxsKGNsaWVudCk7Cj4gICAgICAgICAgZG9vcmJlbGwtPmRi X3N0YXR1cyA9IEdVQ19ET09SQkVMTF9FTkFCTEVEOwo+ICAgICAgICAgIGRvb3JiZWxsLT5jb29r aWUgPSAwOwo+IC0KPiAtICAgICAgIGVyciA9IF9fZ3VjX2FsbG9jYXRlX2Rvb3JiZWxsKGNsaWVu dC0+Z3VjLCBjbGllbnQtPnN0YWdlX2lkKTsKPiAtICAgICAgIGlmIChlcnIpIHsKPiAtICAgICAg ICAgICAgICAgZG9vcmJlbGwtPmRiX3N0YXR1cyA9IEdVQ19ET09SQkVMTF9ESVNBQkxFRDsKPiAt ICAgICAgICAgICAgICAgRFJNX0VSUk9SKCJDb3VsZG4ndCBjcmVhdGUgY2xpZW50ICV1IGRvb3Ji ZWxsOiAlZFxuIiwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudC0+c3RhZ2VfaWQs IGVycik7Cj4gLSAgICAgICB9Cj4gLQo+IC0gICAgICAgcmV0dXJuIGVycjsKPiAgIH0KCl9fY3Jl YXRlX2Rvb3JiZWxsIGlzbid0IGNyZWF0aW5nIGFueXRoaW5nLCBhbmQgbm93IGl0IGlzIGp1c3Qg Y2hhbmdpbmcgCnRoZSBkYiBzdGF0dXMsIGJ1dCB0aGF0IGhhcyBub3RoaW5nIHRvIGRvIHdpdGgg dGhpcyBwYXRjaC4KClJldmlld2VkLWJ5OiBNaWNoZWwgVGhpZXJyeSA8bWljaGVsLnRoaWVycnlA aW50ZWwuY29tPgoKPiAKPiAtc3RhdGljIGludCBfX2Rlc3Ryb3lfZG9vcmJlbGwoc3RydWN0IGlu dGVsX2d1Y19jbGllbnQgKmNsaWVudCkKPiArc3RhdGljIHZvaWQgX19kZXN0cm95X2Rvb3JiZWxs KHN0cnVjdCBpbnRlbF9ndWNfY2xpZW50ICpjbGllbnQpCj4gICB7Cj4gICAgICAgICAgc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZ3VjX3RvX2k5MTUoY2xpZW50LT5ndWMpOwo+ ICAgICAgICAgIHN0cnVjdCBndWNfZG9vcmJlbGxfaW5mbyAqZG9vcmJlbGw7Cj4gICAgICAgICAg dTE2IGRiX2lkID0gY2xpZW50LT5kb29yYmVsbF9pZDsKPiAKPiAtICAgICAgIEdFTV9CVUdfT04o ZGJfaWQgPj0gR1VDX0RPT1JCRUxMX0lOVkFMSUQpOwo+IAo+ICAgICAgICAgIGRvb3JiZWxsID0g X19nZXRfZG9vcmJlbGwoY2xpZW50KTsKPiAgICAgICAgICBkb29yYmVsbC0+ZGJfc3RhdHVzID0g R1VDX0RPT1JCRUxMX0RJU0FCTEVEOwo+IEBAIC0yMjUsNTAgKzIxNCw0MiBAQCBzdGF0aWMgaW50 IF9fZGVzdHJveV9kb29yYmVsbChzdHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50KQo+ICAg ICAgICAgICAqLwo+ICAgICAgICAgIGlmICh3YWl0X2Zvcl91cyghKEk5MTVfUkVBRChHRU44X0RS QlJFR0woZGJfaWQpKSAmIEdFTjhfRFJCX1ZBTElEKSwgMTApKQo+ICAgICAgICAgICAgICAgICAg V0FSTl9PTkNFKHRydWUsICJEb29yYmVsbCBuZXZlciBiZWNhbWUgaW52YWxpZCBhZnRlciBkaXNh YmxlXG4iKTsKPiAtCj4gLSAgICAgICByZXR1cm4gX19ndWNfZGVhbGxvY2F0ZV9kb29yYmVsbChj bGllbnQtPmd1YywgY2xpZW50LT5zdGFnZV9pZCk7Cj4gICB9Cj4gCj4gICBzdGF0aWMgaW50IGNy ZWF0ZV9kb29yYmVsbChzdHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50KQo+ICAgewo+ICAg ICAgICAgIGludCByZXQ7Cj4gCj4gLSAgICAgICByZXQgPSBfX3Jlc2VydmVfZG9vcmJlbGwoY2xp ZW50KTsKPiAtICAgICAgIGlmIChyZXQpCj4gLSAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4g LQo+ICAgICAgICAgIF9fdXBkYXRlX2Rvb3JiZWxsX2Rlc2MoY2xpZW50LCBjbGllbnQtPmRvb3Ji ZWxsX2lkKTsKPiArICAgICAgIF9fY3JlYXRlX2Rvb3JiZWxsKGNsaWVudCk7Cj4gCj4gLSAgICAg ICByZXQgPSBfX2NyZWF0ZV9kb29yYmVsbChjbGllbnQpOwo+IC0gICAgICAgaWYgKHJldCkKPiAt ICAgICAgICAgICAgICAgZ290byBlcnI7Cj4gKyAgICAgICByZXQgPSBfX2d1Y19hbGxvY2F0ZV9k b29yYmVsbChjbGllbnQtPmd1YywgY2xpZW50LT5zdGFnZV9pZCk7Cj4gKyAgICAgICBpZiAocmV0 KSB7Cj4gKyAgICAgICAgICAgICAgIF9fZGVzdHJveV9kb29yYmVsbChjbGllbnQpOwo+ICsgICAg ICAgICAgICAgICBfX3VwZGF0ZV9kb29yYmVsbF9kZXNjKGNsaWVudCwgR1VDX0RPT1JCRUxMX0lO VkFMSUQpOwo+ICsgICAgICAgICAgICAgICBEUk1fRVJST1IoIkNvdWxkbid0IGNyZWF0ZSBjbGll bnQgJXUgZG9vcmJlbGw6ICVkXG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50 LT5zdGFnZV9pZCwgcmV0KTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiArICAgICAg IH0KPiAKPiAgICAgICAgICByZXR1cm4gMDsKPiAtCj4gLWVycjoKPiAtICAgICAgIF9fdXBkYXRl X2Rvb3JiZWxsX2Rlc2MoY2xpZW50LCBHVUNfRE9PUkJFTExfSU5WQUxJRCk7Cj4gLSAgICAgICBf X3VucmVzZXJ2ZV9kb29yYmVsbChjbGllbnQpOwo+IC0gICAgICAgcmV0dXJuIHJldDsKPiAgIH0K PiAKPiAgIHN0YXRpYyBpbnQgZGVzdHJveV9kb29yYmVsbChzdHJ1Y3QgaW50ZWxfZ3VjX2NsaWVu dCAqY2xpZW50KQo+ICAgewo+IC0gICAgICAgaW50IGVycjsKPiArICAgICAgIGludCByZXQ7Cj4g Cj4gICAgICAgICAgR0VNX0JVR19PTighaGFzX2Rvb3JiZWxsKGNsaWVudCkpOwo+IAo+IC0gICAg ICAgLyogWFhYOiB3YWl0IGZvciBhbnkgaW50ZXJydXB0cyAqLwo+IC0gICAgICAgLyogWFhYOiB3 YWl0IGZvciB3b3JrcXVldWUgdG8gZHJhaW4gKi8KPiAtCj4gLSAgICAgICBlcnIgPSBfX2Rlc3Ry b3lfZG9vcmJlbGwoY2xpZW50KTsKPiAtICAgICAgIGlmIChlcnIpCj4gLSAgICAgICAgICAgICAg IHJldHVybiBlcnI7Cj4gKyAgICAgICBfX2Rlc3Ryb3lfZG9vcmJlbGwoY2xpZW50KTsKPiArICAg ICAgIHJldCA9IF9fZ3VjX2RlYWxsb2NhdGVfZG9vcmJlbGwoY2xpZW50LT5ndWMsIGNsaWVudC0+ c3RhZ2VfaWQpOwo+ICsgICAgICAgaWYgKHJldCkKPiArICAgICAgICAgICAgICAgRFJNX0VSUk9S KCJDb3VsZG4ndCBkZXN0cm95IGNsaWVudCAldSBkb29yYmVsbDogJWRcbiIsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICBjbGllbnQtPnN0YWdlX2lkLCByZXQpOwo+IAo+ICAgICAgICAgIF9f dXBkYXRlX2Rvb3JiZWxsX2Rlc2MoY2xpZW50LCBHVUNfRE9PUkJFTExfSU5WQUxJRCk7Cj4gCj4g LSAgICAgICBfX3VucmVzZXJ2ZV9kb29yYmVsbChjbGllbnQpOwo+IC0KPiAtICAgICAgIHJldHVy biAwOwo+ICsgICAgICAgcmV0dXJuIHJldDsKPiAgIH0KPiAKPiAgIHN0YXRpYyB1bnNpZ25lZCBs b25nIF9fc2VsZWN0X2NhY2hlbGluZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4gQEAgLTgzOSw3 MyArODIwLDE4IEBAIHN0YXRpYyBib29sIGRvb3JiZWxsX29rKHN0cnVjdCBpbnRlbF9ndWMgKmd1 YywgdTE2IGRiX2lkKQo+ICAgICAgICAgIHJldHVybiBmYWxzZTsKPiAgIH0KPiAKPiAtLyoKPiAt ICogSWYgdGhlIEd1QyB0aGlua3MgdGhhdCB0aGUgZG9vcmJlbGwgaXMgdW5hc3NpZ25lZCAoZS5n LiBiZWNhdXNlIHdlIHJlc2V0IGFuZAo+IC0gKiByZWxvYWRlZCB0aGUgR3VDIEZXKSB3ZSBjYW4g dXNlIHRoaXMgZnVuY3Rpb24gdG8gdGVsbCB0aGUgR3VDIHRvIHJlYXNzaWduIHRoZQo+IC0gKiBk b29yYmVsbCB0byB0aGUgcmlnaHRmdWwgb3duZXIuCj4gLSAqLwo+IC1zdGF0aWMgaW50IF9fcmVz ZXRfZG9vcmJlbGwoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCwgdTE2IGRiX2lkKQo+ IC17Cj4gLSAgICAgICBpbnQgZXJyOwo+IC0KPiAtICAgICAgIF9fdXBkYXRlX2Rvb3JiZWxsX2Rl c2MoY2xpZW50LCBkYl9pZCk7Cj4gLSAgICAgICBlcnIgPSBfX2NyZWF0ZV9kb29yYmVsbChjbGll bnQpOwo+IC0gICAgICAgaWYgKCFlcnIpCj4gLSAgICAgICAgICAgICAgIGVyciA9IF9fZGVzdHJv eV9kb29yYmVsbChjbGllbnQpOwo+IC0KPiAtICAgICAgIHJldHVybiBlcnI7Cj4gLX0KPiAtCj4g LS8qCj4gLSAqIFNldCB1cCAmIHRlYXIgZG93biBlYWNoIHVudXNlZCBkb29yYmVsbCBpbiB0dXJu LCB0byBlbnN1cmUgdGhhdCBhbGwgZG9vcmJlbGwKPiAtICogSFcgaXMgKHJlKWluaXRpYWxpc2Vk LiBGb3IgdGhhdCBlbmQsIHdlIG1pZ2h0IGhhdmUgdG8gYm9ycm93IHRoZSBmaXJzdAo+IC0gKiBj bGllbnQuIEFsc28sIHRlbGwgR3VDIGFib3V0IGFsbCB0aGUgZG9vcmJlbGxzIGluIHVzZSBieSBh bGwgY2xpZW50cy4KPiAtICogV2UgZG8gdGhpcyBiZWNhdXNlIHRoZSBLTUQsIHRoZSBHdUMgYW5k IHRoZSBkb29yYmVsbCBIVyBjYW4gZWFzaWx5IGdvIG91dCBvZgo+IC0gKiBzeW5jIChlLmcuIHdl IGNhbiByZXNldCB0aGUgR3VDLCBidXQgbm90IHRoZSBkb29yYmVsIEhXKS4KPiAtICovCj4gLXN0 YXRpYyBpbnQgZ3VjX2luaXRfZG9vcmJlbGxfaHcoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICtz dGF0aWMgaW50IGd1Y19jbGllbnRzX2Rvb3JiZWxsX2luaXQoc3RydWN0IGludGVsX2d1YyAqZ3Vj KQo+ICAgewo+IC0gICAgICAgc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCA9IGd1Yy0+ ZXhlY2J1Zl9jbGllbnQ7Cj4gLSAgICAgICBib29sIHJlY3JlYXRlX2ZpcnN0X2NsaWVudCA9IGZh bHNlOwo+ICAgICAgICAgIHUxNiBkYl9pZDsKPiAgICAgICAgICBpbnQgcmV0Owo+IAo+IC0gICAg ICAgLyogRm9yIHVudXNlZCBkb29yYmVsbHMsIG1ha2Ugc3VyZSB0aGV5IGFyZSBkaXNhYmxlZCAq Lwo+IC0gICAgICAgZm9yX2VhY2hfY2xlYXJfYml0KGRiX2lkLCBndWMtPmRvb3JiZWxsX2JpdG1h cCwgR1VDX05VTV9ET09SQkVMTFMpIHsKPiAtICAgICAgICAgICAgICAgaWYgKGRvb3JiZWxsX29r KGd1YywgZGJfaWQpKQo+IC0gICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+IC0KPiAt ICAgICAgICAgICAgICAgaWYgKGhhc19kb29yYmVsbChjbGllbnQpKSB7Cj4gLSAgICAgICAgICAg ICAgICAgICAgICAgLyogQm9ycm93IGV4ZWNidWZfY2xpZW50ICh3ZSB3aWxsIHJlY3JlYXRlIGl0 IGxhdGVyKSAqLwo+IC0gICAgICAgICAgICAgICAgICAgICAgIGRlc3Ryb3lfZG9vcmJlbGwoY2xp ZW50KTsKPiAtICAgICAgICAgICAgICAgICAgICAgICByZWNyZWF0ZV9maXJzdF9jbGllbnQgPSB0 cnVlOwo+IC0gICAgICAgICAgICAgICB9Cj4gLQo+IC0gICAgICAgICAgICAgICByZXQgPSBfX3Jl c2V0X2Rvb3JiZWxsKGNsaWVudCwgZGJfaWQpOwo+IC0gICAgICAgICAgICAgICBXQVJOKHJldCwg IkRvb3JiZWxsICV1IHJlc2V0IGZhaWxlZCwgZXJyICVkXG4iLCBkYl9pZCwgcmV0KTsKPiAtICAg ICAgIH0KPiAtCj4gLSAgICAgICBpZiAocmVjcmVhdGVfZmlyc3RfY2xpZW50KSB7Cj4gLSAgICAg ICAgICAgICAgIHJldCA9IF9fcmVzZXJ2ZV9kb29yYmVsbChjbGllbnQpOwo+IC0gICAgICAgICAg ICAgICBpZiAodW5saWtlbHkocmV0KSkgewo+IC0gICAgICAgICAgICAgICAgICAgICAgIERSTV9F UlJPUigiQ291bGRuJ3QgcmUtcmVzZXJ2ZSBmaXJzdCBjbGllbnQgZGI6ICVkXG4iLAo+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQpOwo+IC0gICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiByZXQ7Cj4gLSAgICAgICAgICAgICAgIH0KPiAtCj4gLSAgICAgICAgICAgICAg IF9fdXBkYXRlX2Rvb3JiZWxsX2Rlc2MoY2xpZW50LCBjbGllbnQtPmRvb3JiZWxsX2lkKTsKPiAt ICAgICAgIH0KPiAtCj4gLSAgICAgICAvKiBOb3cgZm9yIGV2ZXJ5IGNsaWVudCAoYW5kIG5vdCBv bmx5IGV4ZWNidWZfY2xpZW50KSBtYWtlIHN1cmUgdGhlaXIKPiAtICAgICAgICAqIGRvb3JiZWxs cyBhcmUga25vd24gYnkgdGhlIEd1Qwo+IC0gICAgICAgICovCj4gLSAgICAgICByZXQgPSBfX2Ny ZWF0ZV9kb29yYmVsbChndWMtPmV4ZWNidWZfY2xpZW50KTsKPiArICAgICAgIHJldCA9IGNyZWF0 ZV9kb29yYmVsbChndWMtPmV4ZWNidWZfY2xpZW50KTsKPiAgICAgICAgICBpZiAocmV0KQo+ICAg ICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiAKPiAtICAgICAgIHJldCA9IF9fY3JlYXRlX2Rv b3JiZWxsKGd1Yy0+cHJlZW1wdF9jbGllbnQpOwo+ICsgICAgICAgcmV0ID0gY3JlYXRlX2Rvb3Ji ZWxsKGd1Yy0+cHJlZW1wdF9jbGllbnQpOwo+ICAgICAgICAgIGlmIChyZXQpIHsKPiAtICAgICAg ICAgICAgICAgX19kZXN0cm95X2Rvb3JiZWxsKGd1Yy0+ZXhlY2J1Zl9jbGllbnQpOwo+ICsgICAg ICAgICAgICAgICBkZXN0cm95X2Rvb3JiZWxsKGd1Yy0+ZXhlY2J1Zl9jbGllbnQpOwo+ICAgICAg ICAgICAgICAgICAgcmV0dXJuIHJldDsKPiAgICAgICAgICB9Cj4gCj4gQEAgLTkxNiw2ICs4NDIs MTkgQEAgc3RhdGljIGludCBndWNfaW5pdF9kb29yYmVsbF9odyhzdHJ1Y3QgaW50ZWxfZ3VjICpn dWMpCj4gICAgICAgICAgcmV0dXJuIDA7Cj4gICB9Cj4gCj4gK3N0YXRpYyB2b2lkIGd1Y19jbGll bnRzX2Rvb3JiZWxsX2Zpbmkoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICt7Cj4gKyAgICAgICAv Kgo+ICsgICAgICAgICogQnkgdGhlIHRpbWUgd2UncmUgaGVyZSwgR3VDIGhhcyBhbHJlYWR5IGJl ZW4gcmVzZXQuCj4gKyAgICAgICAgKiBJbnN0ZWFkIG9mIHRyeWluZyAoaW4gdmFpbikgdG8gY29t bXVuaWNhdGUgd2l0aCBpdCwgbGV0J3MganVzdAo+ICsgICAgICAgICogY2xlYW51cCB0aGUgZG9v cmJlbGwgSFcgYW5kIG91ciBpbnRlcm5hbCBzdGF0ZS4KPiArICAgICAgICAqLwo+ICsgICAgICAg X19kZXN0cm95X2Rvb3JiZWxsKGd1Yy0+cHJlZW1wdF9jbGllbnQpOwo+ICsgICAgICAgX191cGRh dGVfZG9vcmJlbGxfZGVzYyhndWMtPnByZWVtcHRfY2xpZW50LCBHVUNfRE9PUkJFTExfSU5WQUxJ RCk7Cj4gKyAgICAgICBfX2Rlc3Ryb3lfZG9vcmJlbGwoZ3VjLT5leGVjYnVmX2NsaWVudCk7Cj4g KyAgICAgICBfX3VwZGF0ZV9kb29yYmVsbF9kZXNjKGd1Yy0+ZXhlY2J1Zl9jbGllbnQsIEdVQ19E T09SQkVMTF9JTlZBTElEKTsKPiArfQo+ICsKPiAgIC8qKgo+ICAgICogZ3VjX2NsaWVudF9hbGxv YygpIC0gQWxsb2NhdGUgYW4gaW50ZWxfZ3VjX2NsaWVudAo+ICAgICogQGRldl9wcml2OiAgZHJp dmVyIHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUKPiBAQCAtOTkxLDcgKzkzMCw3IEBAIGd1Y19jbGll bnRfYWxsb2Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgICAgICAgIGd1 Y19wcm9jX2Rlc2NfaW5pdChndWMsIGNsaWVudCk7Cj4gICAgICAgICAgZ3VjX3N0YWdlX2Rlc2Nf aW5pdChndWMsIGNsaWVudCk7Cj4gCj4gLSAgICAgICByZXQgPSBjcmVhdGVfZG9vcmJlbGwoY2xp ZW50KTsKPiArICAgICAgIHJldCA9IHJlc2VydmVfZG9vcmJlbGwoY2xpZW50KTsKPiAgICAgICAg ICBpZiAocmV0KQo+ICAgICAgICAgICAgICAgICAgZ290byBlcnJfdmFkZHI7Cj4gCj4gQEAgLTEw MTUsMTYgKzk1NCw3IEBAIGd1Y19jbGllbnRfYWxsb2Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+IAo+ICAgc3RhdGljIHZvaWQgZ3VjX2NsaWVudF9mcmVlKHN0cnVjdCBpbnRl bF9ndWNfY2xpZW50ICpjbGllbnQpCj4gICB7Cj4gLSAgICAgICAvKgo+IC0gICAgICAgICogWFhY OiB3YWl0IGZvciBhbnkgb3V0c3RhbmRpbmcgc3VibWlzc2lvbnMgYmVmb3JlIGZyZWVpbmcgbWVt b3J5Lgo+IC0gICAgICAgICogQmUgc3VyZSB0byBkcm9wIGFueSBsb2Nrcwo+IC0gICAgICAgICov Cj4gLQo+IC0gICAgICAgLyogRklYTUU6IGluIG1hbnkgY2FzZXMsIGJ5IHRoZSB0aW1lIHdlIGdl dCBoZXJlIHRoZSBHdUMgaGFzIGJlZW4KPiAtICAgICAgICAqIHJlc2V0LCBzbyB3ZSBjYW5ub3Qg ZGVzdHJveSB0aGUgZG9vcmJlbGwgcHJvcGVybHkuIElnbm9yZSB0aGUKPiAtICAgICAgICAqIGVy cm9yIG1lc3NhZ2UgZm9yIG5vdwo+IC0gICAgICAgICovCj4gLSAgICAgICBkZXN0cm95X2Rvb3Ji ZWxsKGNsaWVudCk7Cj4gKyAgICAgICB1bnJlc2VydmVfZG9vcmJlbGwoY2xpZW50KTsKPiAgICAg ICAgICBndWNfc3RhZ2VfZGVzY19maW5pKGNsaWVudC0+Z3VjLCBjbGllbnQpOwo+ICAgICAgICAg IGk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoY2xpZW50LT52bWEtPm9iaik7Cj4gICAgICAgICAg aTkxNV92bWFfdW5waW5fYW5kX3JlbGVhc2UoJmNsaWVudC0+dm1hKTsKPiBAQCAtMTM2Niw3ICsx Mjk2LDcgQEAgaW50IGludGVsX2d1Y19zdWJtaXNzaW9uX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMpCj4gICAgICAgICAgaWYgKGVycikKPiAgICAgICAgICAgICAgICAgIGdvdG8gZXJyX2Zy ZWVfY2xpZW50czsKPiAKPiAtICAgICAgIGVyciA9IGd1Y19pbml0X2Rvb3JiZWxsX2h3KGd1Yyk7 Cj4gKyAgICAgICBlcnIgPSBndWNfY2xpZW50c19kb29yYmVsbF9pbml0KGd1Yyk7Cj4gICAgICAg ICAgaWYgKGVycikKPiAgICAgICAgICAgICAgICAgIGdvdG8gZXJyX2ZyZWVfY2xpZW50czsKPiAK PiBAQCAtMTM5OCw2ICsxMzI4LDcgQEAgdm9pZCBpbnRlbF9ndWNfc3VibWlzc2lvbl9kaXNhYmxl KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgICAgICAgICBHRU1fQlVHX09OKGRldl9wcml2LT5n dC5hd2FrZSk7IC8qIEdUIHNob3VsZCBiZSBwYXJrZWQgZmlyc3QgKi8KPiAKPiAgICAgICAgICBn dWNfaW50ZXJydXB0c19yZWxlYXNlKGRldl9wcml2KTsKPiArICAgICAgIGd1Y19jbGllbnRzX2Rv b3JiZWxsX2ZpbmkoZ3VjKTsKPiAKPiAgICAgICAgICAvKiBSZXZlcnQgYmFjayB0byBtYW51YWwg RUxTUCBzdWJtaXNzaW9uICovCj4gICAgICAgICAgaW50ZWxfZW5naW5lc19yZXNldF9kZWZhdWx0 X3N1Ym1pc3Npb24oZGV2X3ByaXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaW50ZWxfZ3VjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv aW50ZWxfZ3VjLmMKPiBpbmRleCA2OGQ2YTY5YzczOGYuLjNmOTAxNjQ2NmRlYSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfZ3VjLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfZ3VjLmMKPiBAQCAtODUsMjEgKzg1 LDI2IEBAIHN0YXRpYyBpbnQgdmFsaWRhdGVfY2xpZW50KHN0cnVjdCBpbnRlbF9ndWNfY2xpZW50 ICpjbGllbnQsCj4gICAgICAgICAgICAgICAgICByZXR1cm4gMDsKPiAgIH0KPiAKPiArc3RhdGlj IGJvb2wgY2xpZW50X2Rvb3JiZWxsX2luX3N5bmMoc3RydWN0IGludGVsX2d1Y19jbGllbnQgKmNs aWVudCkKPiArewo+ICsgICAgICAgcmV0dXJuIGRvb3JiZWxsX29rKGNsaWVudC0+Z3VjLCBjbGll bnQtPmRvb3JiZWxsX2lkKTsKPiArfQo+ICsKPiAgIC8qCj4gLSAqIENoZWNrIHRoYXQgZ3VjX2lu aXRfZG9vcmJlbGxfaHcgaXMgZG9pbmcgd2hhdCBpdCBzaG91bGQuCj4gKyAqIENoZWNrIHRoYXQg d2UncmUgYWJsZSB0byBzeW5jaHJvbml6ZSBndWNfY2xpZW50cyB3aXRoIHRoZWlyIGRvb3JiZWxs cwo+ICAgICoKPiAtICogRHVyaW5nIEd1QyBzdWJtaXNzaW9uIGVuYWJsZSwgd2UgY3JlYXRlIEd1 QyBjbGllbnRzIGFuZCB0aGVpciBkb29yYmVsbHMsCj4gLSAqIGJ1dCBhZnRlciByZXNldHRpbmcg dGhlIG1pY3JvY29udHJvbGxlciAocmVzdW1lICYgZ3B1IHJlc2V0KSwgdGhlc2UKPiAtICogR3VD IGNsaWVudHMgYXJlIHN0aWxsIGFyb3VuZCwgYnV0IHRoZSBzdGF0dXMgb2YgdGhlaXIgZG9vcmJl bGxzIG1heSBiZQo+IC0gKiBpbmNvcnJlY3QuIFRoaXMgaXMgdGhlIHJlYXNvbiBiZWhpbmQgdmFs aWRhdGluZyB0aGF0IHRoZSBkb29yYmVsbHMgc3RhdHVzCj4gLSAqIGV4cGVjdGVkIGJ5IHRoZSBk cml2ZXIgbWF0Y2hlcyB3aGF0IHRoZSBHdUMvSFcgaGF2ZS4KPiArICogV2UncmUgY3JlYXRpbmcg Y2xpZW50cyBhbmQgcmVzZXJ2aW5nIGRvb3JiZWxscyBvbmNlLCBhdCBtb2R1bGUgbG9hZC4gRHVy aW5nCj4gKyAqIG1vZHVsZSBsaWZldGltZSwgR3VDLCBkb29yYmVsbCBIVywgYW5kIGk5MTUgc3Rh dGUgbWF5IGdvIG91dCBvZiBzeW5jIGR1ZSB0bwo+ICsgKiBHdUMgYmVpbmcgcmVzZXQuIEluIG90 aGVyIHdvcmRzIC0gR3VDIGNsaWVudHMgYXJlIHN0aWxsIGFyb3VuZCwgYnV0IHRoZQo+ICsgKiBz dGF0dXMgb2YgdGhlaXIgZG9vcmJlbGxzIG1heSBiZSBpbmNvcnJlY3QuIFRoaXMgaXMgdGhlIHJl YXNvbiBiZWhpbmQKPiArICogdmFsaWRhdGluZyB0aGF0IHRoZSBkb29yYmVsbHMgc3RhdHVzIGV4 cGVjdGVkIGJ5IHRoZSBkcml2ZXIgbWF0Y2hlcyB3aGF0IHRoZQo+ICsgKiBHdUMvSFcgaGF2ZS4K PiAgICAqLwo+IC1zdGF0aWMgaW50IGlndF9ndWNfaW5pdF9kb29yYmVsbF9odyh2b2lkICphcmdz KQo+ICtzdGF0aWMgaW50IGlndF9ndWNfY2xpZW50cyh2b2lkICphcmdzKQo+ICAgewo+ICAgICAg ICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGFyZ3M7Cj4gICAgICAgICAg c3RydWN0IGludGVsX2d1YyAqZ3VjOwo+IC0gICAgICAgREVDTEFSRV9CSVRNQVAoZGJfYml0bWFw X2JrLCBHVUNfTlVNX0RPT1JCRUxMUyk7Cj4gLSAgICAgICBpbnQgaSwgZXJyID0gMDsKPiArICAg ICAgIGludCBlcnIgPSAwOwo+IAo+ICAgICAgICAgIEdFTV9CVUdfT04oIUhBU19HVUMoZGV2X3By aXYpKTsKPiAgICAgICAgICBtdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7 Cj4gQEAgLTE0OCwxMCArMTUzLDIxIEBAIHN0YXRpYyBpbnQgaWd0X2d1Y19pbml0X2Rvb3JiZWxs X2h3KHZvaWQgKmFyZ3MpCj4gICAgICAgICAgICAgICAgICBnb3RvIG91dDsKPiAgICAgICAgICB9 Cj4gCj4gLSAgICAgICAvKiBlYWNoIGNsaWVudCBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGRvb3Ji ZWxsIGR1cmluZyBhbGxvYyAqLwo+ICsgICAgICAgLyogZWFjaCBjbGllbnQgc2hvdWxkIG5vdyBo YXZlIHJlc2VydmVkIGEgZG9vcmJlbGwgKi8KPiAgICAgICAgICBpZiAoIWhhc19kb29yYmVsbChn dWMtPmV4ZWNidWZfY2xpZW50KSB8fAo+ICAgICAgICAgICAgICAhaGFzX2Rvb3JiZWxsKGd1Yy0+ cHJlZW1wdF9jbGllbnQpKSB7Cj4gLSAgICAgICAgICAgICAgIHByX2VycigiZ3VjX2NsaWVudHNf Y3JlYXRlIGRpZG4ndCBjcmVhdGUgZG9vcmJlbGxzXG4iKTsKPiArICAgICAgICAgICAgICAgcHJf ZXJyKCJndWNfY2xpZW50c19jcmVhdGUgZGlkbid0IHJlc2VydmUgZG9vcmJlbGxzXG4iKTsKPiAr ICAgICAgICAgICAgICAgZXJyID0gLUVJTlZBTDsKPiArICAgICAgICAgICAgICAgZ290byBvdXQ7 Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgLyogTm93IGNyZWF0ZSB0aGUgZG9vcmJlbGxzICov Cj4gKyAgICAgICBndWNfY2xpZW50c19kb29yYmVsbF9pbml0KGd1Yyk7Cj4gKwo+ICsgICAgICAg LyogZWFjaCBjbGllbnQgc2hvdWxkIG5vdyBoYXZlIHJlY2VpdmVkIGEgZG9vcmJlbGwgKi8KPiAr ICAgICAgIGlmICghY2xpZW50X2Rvb3JiZWxsX2luX3N5bmMoZ3VjLT5leGVjYnVmX2NsaWVudCkg fHwKPiArICAgICAgICAgICAhY2xpZW50X2Rvb3JiZWxsX2luX3N5bmMoZ3VjLT5wcmVlbXB0X2Ns aWVudCkpIHsKPiArICAgICAgICAgICAgICAgcHJfZXJyKCJmYWlsZWQgdG8gaW5pdGlhbGl6ZSB0 aGUgZG9vcmJlbGxzXG4iKTsKPiAgICAgICAgICAgICAgICAgIGVyciA9IC1FSU5WQUw7Cj4gICAg ICAgICAgICAgICAgICBnb3RvIG91dDsKPiAgICAgICAgICB9Cj4gQEAgLTE2MCwyNSArMTc2LDI2 IEBAIHN0YXRpYyBpbnQgaWd0X2d1Y19pbml0X2Rvb3JiZWxsX2h3KHZvaWQgKmFyZ3MpCj4gICAg ICAgICAgICogQmFzaWMgdGVzdCAtIGFuIGF0dGVtcHQgdG8gcmVhbGxvY2F0ZSBhIHZhbGlkIGRv b3JiZWxsIHRvIHRoZQo+ICAgICAgICAgICAqIGNsaWVudCBpdCBpcyBjdXJyZW50bHkgYXNzaWdu ZWQgc2hvdWxkIG5vdCBjYXVzZSBhIGZhaWx1cmUuCj4gICAgICAgICAgICovCj4gLSAgICAgICBl cnIgPSBndWNfaW5pdF9kb29yYmVsbF9odyhndWMpOwo+ICsgICAgICAgZXJyID0gZ3VjX2NsaWVu dHNfZG9vcmJlbGxfaW5pdChndWMpOwo+ICAgICAgICAgIGlmIChlcnIpCj4gICAgICAgICAgICAg ICAgICBnb3RvIG91dDsKPiAKPiAgICAgICAgICAvKgo+ICAgICAgICAgICAqIE5lZ2F0aXZlIHRl c3QgLSBhIGNsaWVudCB3aXRoIG5vIGRvb3JiZWxsIChpbnZhbGlkIGRiIGlkKS4KPiAtICAgICAg ICAqIEVhY2ggY2xpZW50IGdldHMgYSBkb29yYmVsbCB3aGVuIGl0IGlzIGNyZWF0ZWQsIGFmdGVy IGRlc3Ryb3lpbmcKPiAtICAgICAgICAqIHRoZSBkb29yYmVsbCwgdGhlIGRiIGlkIGlzIGNoYW5n ZWQgdG8gR1VDX0RPT1JCRUxMX0lOVkFMSUQgYW5kIHRoZQo+IC0gICAgICAgICogZmlybXdhcmUg d2lsbCByZWplY3QgYW55IGF0dGVtcHQgdG8gYWxsb2NhdGUgYSBkb29yYmVsbCB3aXRoIGFuCj4g LSAgICAgICAgKiBpbnZhbGlkIGlkIChkYiBoYXMgdG8gYmUgcmVzZXJ2ZWQgYmVmb3JlIGFsbG9j YXRpb24pLgo+ICsgICAgICAgICogQWZ0ZXIgZGVzdHJveWluZyB0aGUgZG9vcmJlbGwsIHRoZSBk YiBpZCBpcyBjaGFuZ2VkIHRvCj4gKyAgICAgICAgKiBHVUNfRE9PUkJFTExfSU5WQUxJRCBhbmQg dGhlIGZpcm13YXJlIHdpbGwgcmVqZWN0IGFueSBhdHRlbXB0IHRvCj4gKyAgICAgICAgKiBhbGxv Y2F0ZSBhIGRvb3JiZWxsIHdpdGggYW4gaW52YWxpZCBpZCAoZGIgaGFzIHRvIGJlIHJlc2VydmVk IGJlZm9yZQo+ICsgICAgICAgICogYWxsb2NhdGlvbikuCj4gICAgICAgICAgICovCj4gICAgICAg ICAgZGVzdHJveV9kb29yYmVsbChndWMtPmV4ZWNidWZfY2xpZW50KTsKPiAtICAgICAgIGlmICho YXNfZG9vcmJlbGwoZ3VjLT5leGVjYnVmX2NsaWVudCkpIHsKPiArICAgICAgIGlmIChjbGllbnRf ZG9vcmJlbGxfaW5fc3luYyhndWMtPmV4ZWNidWZfY2xpZW50KSkgewo+ICAgICAgICAgICAgICAg ICAgcHJfZXJyKCJkZXN0cm95IGRiIGRpZCBub3Qgd29ya1xuIik7Cj4gICAgICAgICAgICAgICAg ICBlcnIgPSAtRUlOVkFMOwo+ICAgICAgICAgICAgICAgICAgZ290byBvdXQ7Cj4gICAgICAgICAg fQo+IAo+IC0gICAgICAgZXJyID0gZ3VjX2luaXRfZG9vcmJlbGxfaHcoZ3VjKTsKPiArICAgICAg IHVucmVzZXJ2ZV9kb29yYmVsbChndWMtPmV4ZWNidWZfY2xpZW50KTsKPiArICAgICAgIGVyciA9 IGd1Y19jbGllbnRzX2Rvb3JiZWxsX2luaXQoZ3VjKTsKPiAgICAgICAgICBpZiAoZXJyICE9IC1F SU8pIHsKPiAgICAgICAgICAgICAgICAgIHByX2VycigidW5leHBlY3RlZCAoZXJyID0gJWQpIiwg ZXJyKTsKPiAgICAgICAgICAgICAgICAgIGdvdG8gb3V0Owo+IEBAIC0xOTEsMzMgKzIwOCwxMyBA QCBzdGF0aWMgaW50IGlndF9ndWNfaW5pdF9kb29yYmVsbF9odyh2b2lkICphcmdzKQo+ICAgICAg ICAgIH0KPiAKPiAgICAgICAgICAvKiBjbGVhbiBhZnRlciB0ZXN0ICovCj4gLSAgICAgICBlcnIg PSBjcmVhdGVfZG9vcmJlbGwoZ3VjLT5leGVjYnVmX2NsaWVudCk7Cj4gLSAgICAgICBpZiAoZXJy KSB7Cj4gLSAgICAgICAgICAgICAgIHByX2VycigicmVjcmVhdGUgZG9vcmJlbGwgZmFpbGVkXG4i KTsKPiAtICAgICAgICAgICAgICAgZ290byBvdXQ7Cj4gLSAgICAgICB9Cj4gLQo+IC0gICAgICAg LyoKPiAtICAgICAgICAqIE5lZ2F0aXZlIHRlc3QgLSBkb29yYmVsbF9iaXRtYXAgb3V0IG9mIHN5 bmMsIHdpbGwgdHJpZ2dlciBhIGZldyBvZgo+IC0gICAgICAgICogV0FSTl9PTighZG9vcmJlbGxf b2soZ3VjLCBkYl9pZCkpIGJ1dCB0aGF0J3Mgb2sgYXMgbG9uZyBhcyB0aGUKPiAtICAgICAgICAq IGRvb3JiZWxscyBmcm9tIG91ciBjbGllbnRzIGRvbid0IGZhaWwuCj4gLSAgICAgICAgKi8KPiAt ICAgICAgIGJpdG1hcF9jb3B5KGRiX2JpdG1hcF9iaywgZ3VjLT5kb29yYmVsbF9iaXRtYXAsIEdV Q19OVU1fRE9PUkJFTExTKTsKPiAtICAgICAgIGZvciAoaSA9IDA7IGkgPCBHVUNfTlVNX0RPT1JC RUxMUzsgaSsrKQo+IC0gICAgICAgICAgICAgICBpZiAoaSAlIDIpCj4gLSAgICAgICAgICAgICAg ICAgICAgICAgdGVzdF9hbmRfY2hhbmdlX2JpdChpLCBndWMtPmRvb3JiZWxsX2JpdG1hcCk7Cj4g LQo+IC0gICAgICAgZXJyID0gZ3VjX2luaXRfZG9vcmJlbGxfaHcoZ3VjKTsKPiArICAgICAgIGVy ciA9IHJlc2VydmVfZG9vcmJlbGwoZ3VjLT5leGVjYnVmX2NsaWVudCk7Cj4gICAgICAgICAgaWYg KGVycikgewo+IC0gICAgICAgICAgICAgICBwcl9lcnIoIm91dCBvZiBzeW5jIGRvb3JiZWxsIGNh dXNlZCBhbiBlcnJvclxuIik7Cj4gLSAgICAgICAgICAgICAgIGdvdG8gb3V0Owo+ICsgICAgICAg ICAgICAgICBwcl9lcnIoImZhaWxlZCB0byByZXNlcnZlIGJhY2sgdGhlIGRvb3JiZWxsIGJhY2tc biIpOwo+ICAgICAgICAgIH0KPiAtCj4gLSAgICAgICAvKiByZXN0b3JlICdjb3JyZWN0JyBkYiBi aXRtYXAgKi8KPiAtICAgICAgIGJpdG1hcF9jb3B5KGd1Yy0+ZG9vcmJlbGxfYml0bWFwLCBkYl9i aXRtYXBfYmssIEdVQ19OVU1fRE9PUkJFTExTKTsKPiAtICAgICAgIGVyciA9IGd1Y19pbml0X2Rv b3JiZWxsX2h3KGd1Yyk7Cj4gKyAgICAgICBlcnIgPSBjcmVhdGVfZG9vcmJlbGwoZ3VjLT5leGVj YnVmX2NsaWVudCk7Cj4gICAgICAgICAgaWYgKGVycikgewo+IC0gICAgICAgICAgICAgICBwcl9l cnIoInJlc3RvcmVkIGRvb3JiZWxsIGNhdXNlZCBhbiBlcnJvclxuIik7Cj4gKyAgICAgICAgICAg ICAgIHByX2VycigicmVjcmVhdGUgZG9vcmJlbGwgZmFpbGVkXG4iKTsKPiAgICAgICAgICAgICAg ICAgIGdvdG8gb3V0Owo+ICAgICAgICAgIH0KPiAKPiBAQCAtMjI2LDggKzIyMywxMSBAQCBzdGF0 aWMgaW50IGlndF9ndWNfaW5pdF9kb29yYmVsbF9odyh2b2lkICphcmdzKQo+ICAgICAgICAgICAq IExlYXZlIGNsZWFuIHN0YXRlIGZvciBvdGhlciB0ZXN0LCBwbHVzIHRoZSBkcml2ZXIgYWx3YXlz IGRlc3Ryb3kgdGhlCj4gICAgICAgICAgICogY2xpZW50cyBkdXJpbmcgdW5sb2FkLgo+ICAgICAg ICAgICAqLwo+ICsgICAgICAgZGVzdHJveV9kb29yYmVsbChndWMtPmV4ZWNidWZfY2xpZW50KTsK PiArICAgICAgIGRlc3Ryb3lfZG9vcmJlbGwoZ3VjLT5wcmVlbXB0X2NsaWVudCk7Cj4gICAgICAg ICAgZ3VjX2NsaWVudHNfZGVzdHJveShndWMpOwo+ICAgICAgICAgIGd1Y19jbGllbnRzX2NyZWF0 ZShndWMpOwo+ICsgICAgICAgZ3VjX2NsaWVudHNfZG9vcmJlbGxfaW5pdChndWMpOwo+ICAgdW5s b2NrOgo+ICAgICAgICAgIG11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgp Owo+ICAgICAgICAgIHJldHVybiBlcnI7Cj4gQEAgLTMwOSwyNSArMzA5LDcgQEAgc3RhdGljIGlu dCBpZ3RfZ3VjX2Rvb3JiZWxscyh2b2lkICphcmcpCj4gCj4gICAgICAgICAgICAgICAgICBkYl9p ZCA9IGNsaWVudHNbaV0tPmRvb3JiZWxsX2lkOwo+IAo+IC0gICAgICAgICAgICAgICAvKgo+IC0g ICAgICAgICAgICAgICAgKiBDbGllbnQgYWxsb2MgZ2l2ZXMgdXMgYSBkb29yYmVsbCwgYnV0IHdl IHdhbnQgdG8gZXhlcmNpc2UKPiAtICAgICAgICAgICAgICAgICogdGhpcyBvdXJzZWx2ZXMgKHRo aXMgcmVzZW1ibGVzIGd1Y19pbml0X2Rvb3JiZWxsX2h3KQo+IC0gICAgICAgICAgICAgICAgKi8K PiAtICAgICAgICAgICAgICAgZGVzdHJveV9kb29yYmVsbChjbGllbnRzW2ldKTsKPiAtICAgICAg ICAgICAgICAgaWYgKGNsaWVudHNbaV0tPmRvb3JiZWxsX2lkICE9IEdVQ19ET09SQkVMTF9JTlZB TElEKSB7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgcHJfZXJyKCJbJWRdIGRlc3Ryb3kgZGIg ZGlkIG5vdCB3b3JrIVxuIiwgaSk7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gLUVJ TlZBTDsKPiAtICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKPiAtICAgICAgICAgICAg ICAgfQo+IC0KPiAtICAgICAgICAgICAgICAgZXJyID0gX19yZXNlcnZlX2Rvb3JiZWxsKGNsaWVu dHNbaV0pOwo+IC0gICAgICAgICAgICAgICBpZiAoZXJyKSB7Cj4gLSAgICAgICAgICAgICAgICAg ICAgICAgcHJfZXJyKCJbJWRdIEZhaWxlZCB0byByZXNlcnZlIGEgZG9vcmJlbGxcbiIsIGkpOwo+ IC0gICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0Owo+IC0gICAgICAgICAgICAgICB9Cj4g LQo+IC0gICAgICAgICAgICAgICBfX3VwZGF0ZV9kb29yYmVsbF9kZXNjKGNsaWVudHNbaV0sIGNs aWVudHNbaV0tPmRvb3JiZWxsX2lkKTsKPiAtICAgICAgICAgICAgICAgZXJyID0gX19jcmVhdGVf ZG9vcmJlbGwoY2xpZW50c1tpXSk7Cj4gKyAgICAgICAgICAgICAgIGVyciA9IGNyZWF0ZV9kb29y YmVsbChjbGllbnRzW2ldKTsKPiAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHsKPiAgICAgICAg ICAgICAgICAgICAgICAgICAgcHJfZXJyKCJbJWRdIEZhaWxlZCB0byBjcmVhdGUgYSBkb29yYmVs bFxuIiwgaSk7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0Owo+IEBAIC0zNDgs OCArMzMwLDEwIEBAIHN0YXRpYyBpbnQgaWd0X2d1Y19kb29yYmVsbHModm9pZCAqYXJnKQo+IAo+ ICAgb3V0Ogo+ICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBBVFRFTVBUUzsgaSsrKQo+IC0gICAg ICAgICAgICAgICBpZiAoIUlTX0VSUl9PUl9OVUxMKGNsaWVudHNbaV0pKQo+ICsgICAgICAgICAg ICAgICBpZiAoIUlTX0VSUl9PUl9OVUxMKGNsaWVudHNbaV0pKSB7Cj4gKyAgICAgICAgICAgICAg ICAgICAgICAgZGVzdHJveV9kb29yYmVsbChjbGllbnRzW2ldKTsKPiAgICAgICAgICAgICAgICAg ICAgICAgICAgZ3VjX2NsaWVudF9mcmVlKGNsaWVudHNbaV0pOwo+ICsgICAgICAgICAgICAgICB9 Cj4gICB1bmxvY2s6Cj4gICAgICAgICAgbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVj dF9tdXRleCk7Cj4gICAgICAgICAgcmV0dXJuIGVycjsKPiBAQCAtMzU4LDcgKzM0Miw3IEBAIHN0 YXRpYyBpbnQgaWd0X2d1Y19kb29yYmVsbHModm9pZCAqYXJnKQo+ICAgaW50IGludGVsX2d1Y19s aXZlX3NlbGZ0ZXN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIHsKPiAg ICAgICAgICBzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfc3VidGVzdCB0ZXN0c1tdID0gewo+IC0g ICAgICAgICAgICAgICBTVUJURVNUKGlndF9ndWNfaW5pdF9kb29yYmVsbF9odyksCj4gKyAgICAg ICAgICAgICAgIFNVQlRFU1QoaWd0X2d1Y19jbGllbnRzKSwKPiAgICAgICAgICAgICAgICAgIFNV QlRFU1QoaWd0X2d1Y19kb29yYmVsbHMpLAo+ICAgICAgICAgIH07Cj4gCj4gLS0KPiAyLjE0LjMK PiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==