From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 2/2] drm/i915/guc: Simplify code by keeping vmap of guc_client object Date: Thu, 18 Feb 2016 11:12:19 +0000 Message-ID: <56C5A713.5010500@linux.intel.com> References: <1455751108-17673-1-git-send-email-yu.dai@intel.com> <1455751108-17673-3-git-send-email-yu.dai@intel.com> 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 ESMTP id 067486EB36 for ; Thu, 18 Feb 2016 11:12:20 +0000 (UTC) In-Reply-To: <1455751108-17673-3-git-send-email-yu.dai@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: yu.dai@intel.com, intel-gfx@lists.freedesktop.org Cc: daniel.vetter@ffwll.ch List-Id: intel-gfx@lists.freedesktop.org CkhpLAoKT24gMTcvMDIvMTYgMjM6MTgsIHl1LmRhaUBpbnRlbC5jb20gd3JvdGU6Cj4gRnJvbTog QWxleCBEYWkgPHl1LmRhaUBpbnRlbC5jb20+Cj4KPiBHdUMgY2xpZW50IG9iamVjdCBpcyBhbHdh eXMgcGlubmVkIGR1cmluZyBpdHMgbGlmZSBjeWNsZS4gV2UgY2FjaGUKPiB0aGUgdm1hcCBvZiBj bGllbnQgb2JqZWN0LCB3aGljaCBpbmNsdWRlcyBndWNfcHJvY2Vzc19kZXNjLCBkb29yYmVsbAo+ IGFuZCB3b3JrIHF1ZXVlLiBCeSBkb2luZyBzbywgd2UgY2FuIHNpbXBsaWZ5IHRoZSBjb2RlIHdo ZXJlIGRyaXZlcgo+IGNvbW11bmljYXRlIHdpdGggR3VDLgo+Cj4gQXMgYSByZXN1bHQsIHRoaXMg cGF0Y2ggcmVtb3ZlcyB0aGUga21hcF9hdG9taWMgaW4gd3FfY2hlY2tfc3BhY2UsCj4gd2hlcmUg dXNsZWVwX3JhbmdlIGNvdWxkIGJlIGNhbGxlZCB3aGlsZSBrbWFwX2F0b21pYyBpcyBoZWxkLiBU aGlzCj4gZml4ZXMgaXNzdWUgYmVsb3cuCj4KPiBbICAgMzQuMDk4Nzk4XSBCVUc6IHNjaGVkdWxp bmcgd2hpbGUgYXRvbWljOiBnZW1fY2xvc2VfcmFjZS8xOTQxLzB4MDAwMDAwMDIKPiBbICAgMzQu MDk4ODIyXSBNb2R1bGVzIGxpbmtlZCBpbjogaGlkX2dlbmVyaWMgdXNiaGlkIGk5MTUgYXNpeCB1 c2JuZXQgbGlicGh5IG1paSBpMmNfYWxnb19iaXQgZHJtX2ttc19oZWxwZXIgY2ZiZmlsbHJlY3Qg c3lzY29weWFyZWEgY2ZiaW1nYmx0IHN5c2ZpbGxyZWN0IHN5c2ltZ2JsdCBmYl9zeXNfZm9wcyBj ZmJjb3B5YXJlYSBkcm0gY29yZXRlbXAgaTJjX2hpZCBoaWQgdmlkZW8gcGluY3RybF9zdW5yaXNl cG9pbnQgcGluY3RybF9pbnRlbCBhY3BpX3BhZCBubHNfaXNvODg1OV8xIGUxMDAwZSBwdHAgcHNt b3VzZSBwcHNfY29yZSBhaGNpIGxpYmFoY2kKPiBbICAgMzQuMDk4ODI0XSBDUFU6IDAgUElEOiAx OTQxIENvbW06IGdlbV9jbG9zZV9yYWNlIFRhaW50ZWQ6IEcgICAgIFUgICAgICAgICAgNC40LjAt MTYwMTIxKyAjMTIzCj4gWyAgIDM0LjA5ODgyNF0gSGFyZHdhcmUgbmFtZTogSW50ZWwgQ29ycG9y YXRpb24gU2t5bGFrZSBDbGllbnQgcGxhdGZvcm0vU2t5bGFrZSBBSU8gRERSM0wgUlZQMTAsIEJJ T1MgU0tMU0UyUjEuUjAwLlgxMDAuQjAxLjE1MDkyMjA1NTEgMDkvMjIvMjAxNQo+IFsgICAzNC4w OTg4MjVdICAwMDAwMDAwMDAwMDEzZTQwIGZmZmY4ODAxNjZjMjdhNzggZmZmZmZmZmY4MTI4MGQw MiBmZmZmODgwMTcyYzEzZTQwCj4gWyAgIDM0LjA5ODgyNl0gIGZmZmY4ODAxNjZjMjdhODggZmZm ZmZmZmY4MTBjMjAzYSBmZmZmODgwMTY2YzI3YWM4IGZmZmZmZmZmODE0ZWM4MDgKPiBbICAgMzQu MDk4ODI3XSAgZmZmZjg4MDE2YjdjNjAwMCBmZmZmODgwMTY2YzI4MDAwIDAwMDAwMDAwMDAwZjQy NDAgMDAwMDAwMDAwMDAwMDAwMQo+IFsgICAzNC4wOTg4MjddIENhbGwgVHJhY2U6Cj4gWyAgIDM0 LjA5ODgzMV0gIFs8ZmZmZmZmZmY4MTI4MGQwMj5dIGR1bXBfc3RhY2srMHg0Yi8weDc5Cj4gWyAg IDM0LjA5ODgzM10gIFs8ZmZmZmZmZmY4MTBjMjAzYT5dIF9fc2NoZWR1bGVfYnVnKzB4NDEvMHg0 Zgo+IFsgICAzNC4wOTg4MzRdICBbPGZmZmZmZmZmODE0ZWM4MDg+XSBfX3NjaGVkdWxlKzB4NWE4 LzB4NjkwCj4gWyAgIDM0LjA5ODgzNV0gIFs8ZmZmZmZmZmY4MTRlYzkyNz5dIHNjaGVkdWxlKzB4 MzcvMHg4MAo+IFsgICAzNC4wOTg4MzZdICBbPGZmZmZmZmZmODE0ZWYzZmQ+XSBzY2hlZHVsZV9o cnRpbWVvdXRfcmFuZ2VfY2xvY2srMHhhZC8weDEzMAo+IFsgICAzNC4wOTg4MzddICBbPGZmZmZm ZmZmODEwOTBiZTA+XSA/IGhydGltZXJfaW5pdCsweDEwLzB4MTAKPiBbICAgMzQuMDk4ODM4XSAg WzxmZmZmZmZmZjgxNGVmM2YxPl0gPyBzY2hlZHVsZV9ocnRpbWVvdXRfcmFuZ2VfY2xvY2srMHhh MS8weDEzMAo+IFsgICAzNC4wOTg4MzldICBbPGZmZmZmZmZmODE0ZWY0OGU+XSBzY2hlZHVsZV9o cnRpbWVvdXRfcmFuZ2UrMHhlLzB4MTAKPiBbICAgMzQuMDk4ODQwXSAgWzxmZmZmZmZmZjgxNGVl ZjliPl0gdXNsZWVwX3JhbmdlKzB4M2IvMHg0MAo+IFsgICAzNC4wOTg4NTNdICBbPGZmZmZmZmZm YTAxZWMxMDk+XSBpOTE1X2d1Y193cV9jaGVja19zcGFjZSsweDExOS8weDIxMCBbaTkxNV0KPiBb ICAgMzQuMDk4ODYxXSAgWzxmZmZmZmZmZmEwMWRhNDdjPl0gaW50ZWxfbG9naWNhbF9yaW5nX2Fs bG9jX3JlcXVlc3RfZXh0cmFzKzB4NWMvMHg3MCBbaTkxNV0KPiBbICAgMzQuMDk4ODY5XSAgWzxm ZmZmZmZmZmEwMWNkYmYxPl0gaTkxNV9nZW1fcmVxdWVzdF9hbGxvYysweDkxLzB4MTcwIFtpOTE1 XQo+IFsgICAzNC4wOTg4NzVdICBbPGZmZmZmZmZmYTAxYzFjMDc+XSBpOTE1X2dlbV9kb19leGVj YnVmZmVyLmlzcmEuMjUrMHhiYzcvMHgxMmEwIFtpOTE1XQo+IFsgICAzNC4wOTg4ODJdICBbPGZm ZmZmZmZmYTAxY2I3ODU+XSA/IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXNfZ3R0KzB4MjI1LzB4 M2MwIFtpOTE1XQo+IFsgICAzNC4wOTg4ODldICBbPGZmZmZmZmZmYTAxZDFmYjY+XSA/IGk5MTVf Z2VtX3B3cml0ZV9pb2N0bCsweGQ2LzB4OWYwIFtpOTE1XQo+IFsgICAzNC4wOTg4OTVdICBbPGZm ZmZmZmZmYTAxYzJlNjg+XSBpOTE1X2dlbV9leGVjYnVmZmVyMisweGE4LzB4MjUwIFtpOTE1XQo+ IFsgICAzNC4wOTg5MDBdICBbPGZmZmZmZmZmYTAwZjY1ZDg+XSBkcm1faW9jdGwrMHgyNTgvMHg0 ZjAgW2RybV0KPiBbICAgMzQuMDk4OTA2XSAgWzxmZmZmZmZmZmEwMWMyZGMwPl0gPyBpOTE1X2dl bV9leGVjYnVmZmVyKzB4MzQwLzB4MzQwIFtpOTE1XQo+IFsgICAzNC4wOTg5MDhdICBbPGZmZmZm ZmZmODExMTU5MGQ+XSBkb192ZnNfaW9jdGwrMHgyY2QvMHg0YTAKPiBbICAgMzQuMDk4OTA5XSAg WzxmZmZmZmZmZjgxMTFlYWMyPl0gPyBfX2ZnZXQrMHg3Mi8weGIwCj4gWyAgIDM0LjA5ODkxMF0g IFs8ZmZmZmZmZmY4MTExNWIxYz5dIFN5U19pb2N0bCsweDNjLzB4NzAKPiBbICAgMzQuMDk4OTEx XSAgWzxmZmZmZmZmZjgxNGVmZmQ3Pl0gZW50cnlfU1lTQ0FMTF82NF9mYXN0cGF0aCsweDEyLzB4 NmEKPiBbICAgMzQuMTAwMjA4XSAtLS0tLS0tLS0tLS1bIGN1dCBoZXJlIF0tLS0tLS0tLS0tLS0K Pgo+IEJ1Z3ppbGxhOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9p ZD05Mzg0Nwo+IENjOiBEYXZlIEdvcmRvbiA8ZGF2aWQucy5nb3Jkb25AaW50ZWwuY29tPgo+IENj OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+IENjOiBUdnJ0a28gVXJz dWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IEFsZXggRGFp IDx5dS5kYWlAaW50ZWwuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n dWNfc3VibWlzc2lvbi5jIHwgNTMgKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaCAgICAgICAgICAgfCAgMyArLQo+ICAgMiBm aWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAzOCBkZWxldGlvbnMoLSkKPgo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKPiBpbmRleCBkNzU0M2VmLi4z ZDZhMWY3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1p c3Npb24uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24u Ywo+IEBAIC0xOTUsMTEgKzE5NSw5IEBAIHN0YXRpYyBpbnQgZ3VjX3JpbmdfZG9vcmJlbGwoc3Ry dWN0IGk5MTVfZ3VjX2NsaWVudCAqZ2MpCj4gICAJc3RydWN0IGd1Y19wcm9jZXNzX2Rlc2MgKmRl c2M7Cj4gICAJdW5pb24gZ3VjX2Rvb3JiZWxsX3F3IGRiX2NtcCwgZGJfZXhjLCBkYl9yZXQ7Cj4g ICAJdW5pb24gZ3VjX2Rvb3JiZWxsX3F3ICpkYjsKPiAtCXZvaWQgKmJhc2U7Cj4gICAJaW50IGF0 dGVtcHQgPSAyLCByZXQgPSAtRUFHQUlOOwo+Cj4gLQliYXNlID0ga21hcF9hdG9taWMoaTkxNV9n ZW1fb2JqZWN0X2dldF9wYWdlKGdjLT5jbGllbnRfb2JqLCAwKSk7Cj4gLQlkZXNjID0gYmFzZSAr IGdjLT5wcm9jX2Rlc2Nfb2Zmc2V0Owo+ICsJZGVzYyA9IGdjLT5jbGllbnRfYmFzZSArIGdjLT5w cm9jX2Rlc2Nfb2Zmc2V0Owo+Cj4gICAJLyogVXBkYXRlIHRoZSB0YWlsIHNvIGl0IGlzIHZpc2li bGUgdG8gR3VDICovCj4gICAJZGVzYy0+dGFpbCA9IGdjLT53cV90YWlsOwo+IEBAIC0yMTUsNyAr MjEzLDcgQEAgc3RhdGljIGludCBndWNfcmluZ19kb29yYmVsbChzdHJ1Y3QgaTkxNV9ndWNfY2xp ZW50ICpnYykKPiAgIAkJZGJfZXhjLmNvb2tpZSA9IDE7Cj4KPiAgIAkvKiBwb2ludGVyIG9mIGN1 cnJlbnQgZG9vcmJlbGwgY2FjaGVsaW5lICovCj4gLQlkYiA9IGJhc2UgKyBnYy0+ZG9vcmJlbGxf b2Zmc2V0Owo+ICsJZGIgPSBnYy0+Y2xpZW50X2Jhc2UgKyBnYy0+ZG9vcmJlbGxfb2Zmc2V0Owo+ Cj4gICAJd2hpbGUgKGF0dGVtcHQtLSkgewo+ICAgCQkvKiBsZXRzIHJpbmcgdGhlIGRvb3JiZWxs ICovCj4gQEAgLTI0NCwxMCArMjQyLDYgQEAgc3RhdGljIGludCBndWNfcmluZ19kb29yYmVsbChz dHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpnYykKPiAgIAkJCWRiX2V4Yy5jb29raWUgPSAxOwo+ICAg CX0KPgo+IC0JLyogRmluYWxseSwgdXBkYXRlIHRoZSBjYWNoZWQgY29weSBvZiB0aGUgR3VDJ3Mg V1EgaGVhZCAqLwo+IC0JZ2MtPndxX2hlYWQgPSBkZXNjLT5oZWFkOwo+IC0KPiAtCWt1bm1hcF9h dG9taWMoYmFzZSk7Cj4gICAJcmV0dXJuIHJldDsKPiAgIH0KPgo+IEBAIC0zNDEsMTAgKzMzNSw4 IEBAIHN0YXRpYyB2b2lkIGd1Y19pbml0X3Byb2NfZGVzYyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMs Cj4gICAJCQkgICAgICAgc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50KQo+ICAgewo+ICAg CXN0cnVjdCBndWNfcHJvY2Vzc19kZXNjICpkZXNjOwo+IC0Jdm9pZCAqYmFzZTsKPgo+IC0JYmFz ZSA9IGttYXBfYXRvbWljKGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZShjbGllbnQtPmNsaWVudF9v YmosIDApKTsKPiAtCWRlc2MgPSBiYXNlICsgY2xpZW50LT5wcm9jX2Rlc2Nfb2Zmc2V0Owo+ICsJ ZGVzYyA9IGNsaWVudC0+Y2xpZW50X2Jhc2UgKyBjbGllbnQtPnByb2NfZGVzY19vZmZzZXQ7Cj4K PiAgIAltZW1zZXQoZGVzYywgMCwgc2l6ZW9mKCpkZXNjKSk7Cj4KPiBAQCAtMzYxLDggKzM1Myw2 IEBAIHN0YXRpYyB2b2lkIGd1Y19pbml0X3Byb2NfZGVzYyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMs Cj4gICAJZGVzYy0+d3Ffc2l6ZV9ieXRlcyA9IGNsaWVudC0+d3Ffc2l6ZTsKPiAgIAlkZXNjLT53 cV9zdGF0dXMgPSBXUV9TVEFUVVNfQUNUSVZFOwo+ICAgCWRlc2MtPnByaW9yaXR5ID0gY2xpZW50 LT5wcmlvcml0eTsKPiAtCj4gLQlrdW5tYXBfYXRvbWljKGJhc2UpOwo+ICAgfQo+Cj4gICAvKgo+ IEBAIC00NzQsMjUgKzQ2NCwxNiBAQCBzdGF0aWMgdm9pZCBndWNfZmluaV9jdHhfZGVzYyhzdHJ1 Y3QgaW50ZWxfZ3VjICpndWMsCj4gICBpbnQgaTkxNV9ndWNfd3FfY2hlY2tfc3BhY2Uoc3RydWN0 IGk5MTVfZ3VjX2NsaWVudCAqZ2MpCj4gICB7Cj4gICAJc3RydWN0IGd1Y19wcm9jZXNzX2Rlc2Mg KmRlc2M7Cj4gLQl2b2lkICpiYXNlOwo+ICAgCXUzMiBzaXplID0gc2l6ZW9mKHN0cnVjdCBndWNf d3FfaXRlbSk7Cj4gICAJaW50IHJldCA9IC1FVElNRURPVVQsIHRpbWVvdXRfY291bnRlciA9IDIw MDsKPgo+ICAgCWlmICghZ2MpCj4gICAJCXJldHVybiAwOwo+Cj4gLQkvKiBRdWlja2x5IHJldHVy biBpZiB3cSBzcGFjZSBpcyBhdmFpbGFibGUgc2luY2UgbGFzdCB0aW1lIHdlIGNhY2hlIHRoZQo+ IC0JICogaGVhZCBwb3NpdGlvbi4gKi8KPiAtCWlmIChDSVJDX1NQQUNFKGdjLT53cV90YWlsLCBn Yy0+d3FfaGVhZCwgZ2MtPndxX3NpemUpID49IHNpemUpCj4gLQkJcmV0dXJuIDA7Cj4gLQo+IC0J YmFzZSA9IGttYXBfYXRvbWljKGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZShnYy0+Y2xpZW50X29i aiwgMCkpOwo+IC0JZGVzYyA9IGJhc2UgKyBnYy0+cHJvY19kZXNjX29mZnNldDsKPiArCWRlc2Mg PSBnYy0+Y2xpZW50X2Jhc2UgKyBnYy0+cHJvY19kZXNjX29mZnNldDsKPgo+ICAgCXdoaWxlICh0 aW1lb3V0X2NvdW50ZXItLSA+IDApIHsKPiAtCQlnYy0+d3FfaGVhZCA9IGRlc2MtPmhlYWQ7Cj4g LQo+IC0JCWlmIChDSVJDX1NQQUNFKGdjLT53cV90YWlsLCBnYy0+d3FfaGVhZCwgZ2MtPndxX3Np emUpID49IHNpemUpIHsKPiArCQlpZiAoQ0lSQ19TUEFDRShnYy0+d3FfdGFpbCwgZGVzYy0+aGVh ZCwgZ2MtPndxX3NpemUpID49IHNpemUpIHsKPiAgIAkJCXJldCA9IDA7Cj4gICAJCQlicmVhazsK PiAgIAkJfQo+IEBAIC01MDEsMjQgKzQ4MiwyMyBAQCBpbnQgaTkxNV9ndWNfd3FfY2hlY2tfc3Bh Y2Uoc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqZ2MpCj4gICAJCQl1c2xlZXBfcmFuZ2UoMTAwMCwg MjAwMCk7Cj4gICAJfTsKPgo+IC0Ja3VubWFwX2F0b21pYyhiYXNlKTsKPiAtCj4gICAJcmV0dXJu IHJldDsKPiAgIH0KPgo+ICAgc3RhdGljIGludCBndWNfYWRkX3dvcmtxdWV1ZV9pdGVtKHN0cnVj dCBpOTE1X2d1Y19jbGllbnQgKmdjLAo+ICAgCQkJCSAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpycSkKPiAgIHsKPiArCXN0cnVjdCBndWNfcHJvY2Vzc19kZXNjICpkZXNjOwo+ICAgCXN0 cnVjdCBndWNfd3FfaXRlbSAqd3FpOwo+IC0Jdm9pZCAqYmFzZTsKPiAtCXUzMiB0YWlsLCB3cV9s ZW4sIHdxX29mZiwgc3BhY2U7Cj4gKwl1MzIgdGFpbCwgd3FfbGVuLCB3cWlfb2ZmLCBzcGFjZTsK Pgo+IC0Jc3BhY2UgPSBDSVJDX1NQQUNFKGdjLT53cV90YWlsLCBnYy0+d3FfaGVhZCwgZ2MtPndx X3NpemUpOwo+ICsJZGVzYyA9IGdjLT5jbGllbnRfYmFzZSArIGdjLT5wcm9jX2Rlc2Nfb2Zmc2V0 Owo+ICsJc3BhY2UgPSBDSVJDX1NQQUNFKGdjLT53cV90YWlsLCBkZXNjLT5oZWFkLCBnYy0+d3Ff c2l6ZSk7Cj4gICAJaWYgKFdBUk5fT04oc3BhY2UgPCBzaXplb2Yoc3RydWN0IGd1Y193cV9pdGVt KSkpCj4gICAJCXJldHVybiAtRU5PU1BDOyAvKiBzaG91bGRuJ3QgaGFwcGVuICovCj4KPiAgIAkv KiBwb3N0aW5jcmVtZW50IFdRIHRhaWwgZm9yIG5leHQgdGltZSAqLwo+IC0Jd3Ffb2ZmID0gZ2Mt PndxX3RhaWw7Cj4gKwl3cWlfb2ZmID0gZ2MtPndxX3RhaWw7Cj4gICAJZ2MtPndxX3RhaWwgKz0g c2l6ZW9mKHN0cnVjdCBndWNfd3FfaXRlbSk7Cj4gICAJZ2MtPndxX3RhaWwgJj0gZ2MtPndxX3Np emUgLSAxOwo+Cj4gQEAgLTUzMCwxMyArNTEwLDEwIEBAIHN0YXRpYyBpbnQgZ3VjX2FkZF93b3Jr cXVldWVfaXRlbShzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpnYywKPiAgIAkgKiB3b3JrcXVldWUg YnVmZmVyIGR3IGJ5IGR3Lgo+ICAgCSAqLwo+ICAgCVdBUk5fT04oc2l6ZW9mKHN0cnVjdCBndWNf d3FfaXRlbSkgIT0gMTYpOwo+IC0JV0FSTl9PTih3cV9vZmYgJiAzKTsKPiArCVdBUk5fT04od3Fp X29mZiAmIDMpOwo+Cj4gICAJLyogd3Egc3RhcnRzIGZyb20gdGhlIHBhZ2UgYWZ0ZXIgZG9vcmJl bGwgLyBwcm9jZXNzX2Rlc2MgKi8KPiAtCWJhc2UgPSBrbWFwX2F0b21pYyhpOTE1X2dlbV9vYmpl Y3RfZ2V0X3BhZ2UoZ2MtPmNsaWVudF9vYmosCj4gLQkJCSh3cV9vZmYgKyBHVUNfREJfU0laRSkg Pj4gUEFHRV9TSElGVCkpOwo+IC0Jd3Ffb2ZmICY9IFBBR0VfU0laRSAtIDE7Cj4gLQl3cWkgPSAo c3RydWN0IGd1Y193cV9pdGVtICopKChjaGFyICopYmFzZSArIHdxX29mZik7Cj4gKwl3cWkgPSBn Yy0+Y2xpZW50X2Jhc2UgKyBnYy0+d3Ffb2Zmc2V0ICsgd3FpX29mZjsKPgo+ICAgCS8qIGxlbiBk b2VzIG5vdCBpbmNsdWRlIHRoZSBoZWFkZXIgKi8KPiAgIAl3cV9sZW4gPSBzaXplb2Yoc3RydWN0 IGd1Y193cV9pdGVtKSAvIHNpemVvZih1MzIpIC0gMTsKPiBAQCAtNTUzLDggKzUzMCw2IEBAIHN0 YXRpYyBpbnQgZ3VjX2FkZF93b3JrcXVldWVfaXRlbShzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpn YywKPiAgIAl3cWktPnJpbmdfdGFpbCA9IHRhaWwgPDwgV1FfUklOR19UQUlMX1NISUZUOwo+ICAg CXdxaS0+ZmVuY2VfaWQgPSAwOyAvKlhYWDogd2hhdCBmZW5jZSB0byBiZSBoZXJlICovCj4KPiAt CWt1bm1hcF9hdG9taWMoYmFzZSk7Cj4gLQo+ICAgCXJldHVybiAwOwo+ICAgfQo+Cj4gQEAgLTY3 NSw2ICs2NTAsOCBAQCBzdGF0aWMgdm9pZCBndWNfY2xpZW50X2ZyZWUoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPiAgIAkgKiBCZSBzdXJlIHRvIGRyb3AgYW55IGxvY2tzCj4gICAJICovCj4KPiAr CXZ1bm1hcChjbGllbnQtPmNsaWVudF9iYXNlKTsKPiArCj4gICAJZ2VtX3JlbGVhc2VfZ3VjX29i aihjbGllbnQtPmNsaWVudF9vYmopOwo+Cj4gICAJaWYgKGNsaWVudC0+Y3R4X2luZGV4ICE9IEdV Q19JTlZBTElEX0NUWF9JRCkgewo+IEBAIC03MjcsNiArNzA0LDggQEAgc3RhdGljIHN0cnVjdCBp OTE1X2d1Y19jbGllbnQgKmd1Y19jbGllbnRfYWxsb2Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiAgIAlpZiAoIW9iaikKPiAgIAkJZ290byBlcnI7Cj4KPiArCWNsaWVudC0+Y2xpZW50X2Jhc2Ug PSBpOTE1X2dlbV9vYmplY3Rfdm1hcChvYmosIDAsIG9iai0+cGFnZXMtPm5lbnRzKTsKCkFzIHBl ciBjb21tZW50cyBpbiB0aGUgcHJldmlvdXMgcGF0Y2gsIG9iai0+cGFnZXMtPm5lbnRzIG5lZWQg dG8gYmUgCm9iai0+YmFzZS5zaXplID4+IFBBR0VfU0hJRlQuCgpBbmQgYWxzbyBlcnJvciBjaGVj a2luZz8KCj4gKwo+ICAgCWNsaWVudC0+Y2xpZW50X29iaiA9IG9iajsKPiAgIAljbGllbnQtPndx X29mZnNldCA9IEdVQ19EQl9TSVpFOwo+ICAgCWNsaWVudC0+d3Ffc2l6ZSA9IEdVQ19XUV9TSVpF Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCj4gaW5kZXggNzMwMDJlOS4uOWYwOGJkNyAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaAo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCj4gQEAgLTM0LDYgKzM0LDggQEAgc3RydWN0IGk5 MTVfZ3VjX2NsaWVudCB7Cj4gICAJdWludDMyX3QgcHJpb3JpdHk7Cj4gICAJdWludDMyX3QgY3R4 X2luZGV4Owo+Cj4gKwl2b2lkICpjbGllbnRfYmFzZTsKPiArCj4gICAJdWludDMyX3QgcHJvY19k ZXNjX29mZnNldDsKPiAgIAl1aW50MzJfdCBkb29yYmVsbF9vZmZzZXQ7Cj4gICAJdWludDMyX3Qg Y29va2llOwo+IEBAIC00Myw3ICs0NSw2IEBAIHN0cnVjdCBpOTE1X2d1Y19jbGllbnQgewo+ICAg CXVpbnQzMl90IHdxX29mZnNldDsKPiAgIAl1aW50MzJfdCB3cV9zaXplOwo+ICAgCXVpbnQzMl90 IHdxX3RhaWw7Cj4gLQl1aW50MzJfdCB3cV9oZWFkOwo+Cj4gICAJLyogR3VDIHN1Ym1pc3Npb24g c3RhdGlzdGljcyAmIHN0YXR1cyAqLwo+ICAgCXVpbnQ2NF90IHN1Ym1pc3Npb25zW0dVQ19NQVhf RU5HSU5FU19OVU1dOwo+CgpSZWdhcmRzLAoKVHZydGtvCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=