From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v5] drm/i915: Switch back to an array of logical per-engine HW contexts Date: Mon, 15 Apr 2019 12:00:03 +0100 Message-ID: <22960a6a-e8e6-6dd3-bf40-a5029f121f03@linux.intel.com> References: <20190412085410.10392-18-chris@chris-wilson.co.uk> <20190412145842.12208-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 mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1938889471 for ; Mon, 15 Apr 2019 11:00:10 +0000 (UTC) In-Reply-To: <20190412145842.12208-1-chris@chris-wilson.co.uk> 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: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDEyLzA0LzIwMTkgMTU6NTgsIENocmlzIFdpbHNvbiB3cm90ZToKPiBXZSBzd2l0Y2hlZCB0 byBhIHRyZWUgb2YgcGVyLWVuZ2luZSBIVyBjb250ZXh0IHRvIGFjY29tbW9kYXRlIHRoZQo+IGlu dHJvZHVjdGlvbiBvZiB2aXJ0dWFsIGVuZ2luZXMuIEhvd2V2ZXIsIHdlIHBsYW4gdG8gYWxzbyBz dXBwb3J0Cj4gbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGVuZ2luZSB3aXRoaW4gdGhl IEdFTSBjb250ZXh0LCBkZWZlYXRpbmcKPiBvdXIgdXNlIG9mIHRoZSBlbmdpbmUgYXMgYSBrZXkg dG8gbG9va2luZyB1cCB0aGUgSFcgY29udGV4dC4gSnVzdAo+IGFsbG9jYXRlIGEgbG9naWNhbCBw ZXItZW5naW5lIGluc3RhbmNlIGFuZCBhbHdheXMgdXNlIGFuIGluZGV4IGludG8gdGhlCj4gY3R4 LT5lbmdpbmVzW10uIExhdGVyIG9uLCB0aGlzIGN0eC0+ZW5naW5lc1tdIG1heSBiZSByZXBsYWNl ZCBieSBhIHVzZXIKPiBzcGVjaWZpZWQgbWFwLgo+IAo+IHYyOiBBZGQgZm9yX2VhY2hfZ2VtX2Vu Z2luZSgpIGhlbHBlciB0byBpdGVyYXRvciB3aXRoaW4gdGhlIGVuZ2luZXMgbG9jawo+IHYzOiBp bnRlbF9jb250ZXh0X2NyZWF0ZV9yZXF1ZXN0KCkgaGVscGVyCj4gdjQ6IHMvdW5zaWduZWQgbG9u Zy91bnNpZ25lZCBpbnQvIDQgYmlsbGlvbiBlbmdpbmVzIGlzIHF1aXRlIGVub3VnaC4KPiB2NTog UHVzaCBpdGVyYXRvciBsb2NraW5nIHRvIGNhbGxlcgo+IAo+IFNpZ25lZC1vZmYtYnk6IENocmlz IFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBUdnJ0a28gVXJzdWxpbiA8 dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfY29udGV4dC5jICAgICAgIHwgMTEyICsrKystLS0tLS0tLS0tLS0tLQo+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5oICAgICAgIHwgIDI3ICstLS0tCj4g ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3R5cGVzLmggfCAgIDIgLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMgICAgIHwgICAyICst Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jICAgICAgICAgfCAgIDMg Ky0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9zY2hlZHVsZXIuYyAgICAgICAgICB8ICAg MiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgICAgIHwg IDI0ICsrLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyAgICAg ICB8ICA5NyArKysrKysrKysrKysrLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2NvbnRleHQuaCAgICAgICB8ICA1OCArKysrKysrKysKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2NvbnRleHRfdHlwZXMuaCB8ICAzMiArKysrLQo+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jICAgIHwgIDcwICsrKysrLS0tLS0tCj4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYyAgICAgICAgICAgICAgfCAgNzcgKysrKysrLS0t LS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyAgICAgICAgICAgfCAg MTUgKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc3VibWlzc2lvbi5jICAg fCAgMjIgKystLQo+ICAgLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4 dC5jIHwgICAyICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19jb250 ZXh0LmMgfCAgMTQgKystCj4gICAxNiBmaWxlcyBjaGFuZ2VkLCAzMTkgaW5zZXJ0aW9ucygrKSwg MjQwIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0 LmMKPiBpbmRleCAxNWFjOTljNWRkNGEuLjVlNTA2ZTY0ODQ1NCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmMKPiBAQCAtMTcsNyArMTcsNyBAQCBzdGF0aWMgc3Ry dWN0IGk5MTVfZ2xvYmFsX2NvbnRleHQgewo+ICAgCXN0cnVjdCBrbWVtX2NhY2hlICpzbGFiX2Nl Owo+ICAgfSBnbG9iYWw7Cj4gICAKPiAtc3RydWN0IGludGVsX2NvbnRleHQgKmludGVsX2NvbnRl eHRfYWxsb2Modm9pZCkKPiArc3RhdGljIHN0cnVjdCBpbnRlbF9jb250ZXh0ICppbnRlbF9jb250 ZXh0X2FsbG9jKHZvaWQpCj4gICB7Cj4gICAJcmV0dXJuIGttZW1fY2FjaGVfemFsbG9jKGdsb2Jh bC5zbGFiX2NlLCBHRlBfS0VSTkVMKTsKPiAgIH0KPiBAQCAtMjgsMTA0ICsyOCwxNyBAQCB2b2lk IGludGVsX2NvbnRleHRfZnJlZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCj4gICB9Cj4gICAK PiAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICoKPiAtaW50ZWxfY29udGV4dF9sb29rdXAoc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAraW50ZWxfY29udGV4dF9jcmVhdGUoc3RydWN0IGk5 MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAgIAkJICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4gICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBOVUxMOwo+IC0Jc3Ry dWN0IHJiX25vZGUgKnA7Cj4gLQo+IC0Jc3Bpbl9sb2NrKCZjdHgtPmh3X2NvbnRleHRzX2xvY2sp Owo+IC0JcCA9IGN0eC0+aHdfY29udGV4dHMucmJfbm9kZTsKPiAtCXdoaWxlIChwKSB7Cj4gLQkJ c3RydWN0IGludGVsX2NvbnRleHQgKnRoaXMgPQo+IC0JCQlyYl9lbnRyeShwLCBzdHJ1Y3QgaW50 ZWxfY29udGV4dCwgbm9kZSk7Cj4gLQo+IC0JCWlmICh0aGlzLT5lbmdpbmUgPT0gZW5naW5lKSB7 Cj4gLQkJCUdFTV9CVUdfT04odGhpcy0+Z2VtX2NvbnRleHQgIT0gY3R4KTsKPiAtCQkJY2UgPSB0 aGlzOwo+IC0JCQlicmVhazsKPiAtCQl9Cj4gLQo+IC0JCWlmICh0aGlzLT5lbmdpbmUgPCBlbmdp bmUpCj4gLQkJCXAgPSBwLT5yYl9yaWdodDsKPiAtCQllbHNlCj4gLQkJCXAgPSBwLT5yYl9sZWZ0 Owo+IC0JfQo+IC0Jc3Bpbl91bmxvY2soJmN0eC0+aHdfY29udGV4dHNfbG9jayk7Cj4gLQo+IC0J cmV0dXJuIGNlOwo+IC19Cj4gLQo+IC1zdHJ1Y3QgaW50ZWxfY29udGV4dCAqCj4gLV9faW50ZWxf Y29udGV4dF9pbnNlcnQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAtCQkgICAgICAg c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+IC0JCSAgICAgICBzdHJ1Y3QgaW50ZWxf Y29udGV4dCAqY2UpCj4gLXsKPiAtCXN0cnVjdCByYl9ub2RlICoqcCwgKnBhcmVudDsKPiAtCWlu dCBlcnIgPSAwOwo+IC0KPiAtCXNwaW5fbG9jaygmY3R4LT5od19jb250ZXh0c19sb2NrKTsKPiAt Cj4gLQlwYXJlbnQgPSBOVUxMOwo+IC0JcCA9ICZjdHgtPmh3X2NvbnRleHRzLnJiX25vZGU7Cj4g LQl3aGlsZSAoKnApIHsKPiAtCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqdGhpczsKPiAtCj4gLQkJ cGFyZW50ID0gKnA7Cj4gLQkJdGhpcyA9IHJiX2VudHJ5KHBhcmVudCwgc3RydWN0IGludGVsX2Nv bnRleHQsIG5vZGUpOwo+IC0KPiAtCQlpZiAodGhpcy0+ZW5naW5lID09IGVuZ2luZSkgewo+IC0J CQllcnIgPSAtRUVYSVNUOwo+IC0JCQljZSA9IHRoaXM7Cj4gLQkJCWJyZWFrOwo+IC0JCX0KPiAt Cj4gLQkJaWYgKHRoaXMtPmVuZ2luZSA8IGVuZ2luZSkKPiAtCQkJcCA9ICZwYXJlbnQtPnJiX3Jp Z2h0Owo+IC0JCWVsc2UKPiAtCQkJcCA9ICZwYXJlbnQtPnJiX2xlZnQ7Cj4gLQl9Cj4gLQlpZiAo IWVycikgewo+IC0JCXJiX2xpbmtfbm9kZSgmY2UtPm5vZGUsIHBhcmVudCwgcCk7Cj4gLQkJcmJf aW5zZXJ0X2NvbG9yKCZjZS0+bm9kZSwgJmN0eC0+aHdfY29udGV4dHMpOwo+IC0JfQo+IC0KPiAt CXNwaW5fdW5sb2NrKCZjdHgtPmh3X2NvbnRleHRzX2xvY2spOwo+IC0KPiAtCXJldHVybiBjZTsK PiAtfQo+IC0KPiAtdm9pZCBfX2ludGVsX2NvbnRleHRfcmVtb3ZlKHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZSkKPiAtewo+IC0Jc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCA9IGNlLT5nZW1f Y29udGV4dDsKPiAtCj4gLQlzcGluX2xvY2soJmN0eC0+aHdfY29udGV4dHNfbG9jayk7Cj4gLQly Yl9lcmFzZSgmY2UtPm5vZGUsICZjdHgtPmh3X2NvbnRleHRzKTsKPiAtCXNwaW5fdW5sb2NrKCZj dHgtPmh3X2NvbnRleHRzX2xvY2spOwo+IC19Cj4gLQo+IC1zdHJ1Y3QgaW50ZWxfY29udGV4dCAq Cj4gLWludGVsX2NvbnRleHRfaW5zdGFuY2Uoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwK PiAtCQkgICAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+IC17Cj4gLQlzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqY2UsICpwb3M7Cj4gLQo+IC0JY2UgPSBpbnRlbF9jb250ZXh0X2xv b2t1cChjdHgsIGVuZ2luZSk7Cj4gLQlpZiAobGlrZWx5KGNlKSkKPiAtCQlyZXR1cm4gaW50ZWxf Y29udGV4dF9nZXQoY2UpOwo+ICsJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOwo+ICAgCj4gICAJ Y2UgPSBpbnRlbF9jb250ZXh0X2FsbG9jKCk7Cj4gICAJaWYgKCFjZSkKPiAgIAkJcmV0dXJuIEVS Ul9QVFIoLUVOT01FTSk7Cj4gICAKPiAgIAlpbnRlbF9jb250ZXh0X2luaXQoY2UsIGN0eCwgZW5n aW5lKTsKPiAtCj4gLQlwb3MgPSBfX2ludGVsX2NvbnRleHRfaW5zZXJ0KGN0eCwgZW5naW5lLCBj ZSk7Cj4gLQlpZiAodW5saWtlbHkocG9zICE9IGNlKSkgLyogQmVhdGVuISBVc2UgdGhlaXIgSFcg Y29udGV4dCBpbnN0ZWFkICovCj4gLQkJaW50ZWxfY29udGV4dF9mcmVlKGNlKTsKPiAtCj4gLQlH RU1fQlVHX09OKGludGVsX2NvbnRleHRfbG9va3VwKGN0eCwgZW5naW5lKSAhPSBwb3MpOwo+IC0J cmV0dXJuIGludGVsX2NvbnRleHRfZ2V0KHBvcyk7Cj4gKwlyZXR1cm4gY2U7Cj4gICB9Cj4gICAK PiAgIGludCBfX2ludGVsX2NvbnRleHRfZG9fcGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkK PiBAQCAtMjA0LDYgKzExNyw4IEBAIGludGVsX2NvbnRleHRfaW5pdChzdHJ1Y3QgaW50ZWxfY29u dGV4dCAqY2UsCj4gICAJCSAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gICAJCSAg IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiArCUdFTV9CVUdfT04oIWVu Z2luZS0+Y29wcyk7Cj4gKwo+ICAgCWtyZWZfaW5pdCgmY2UtPnJlZik7Cj4gICAKPiAgIAljZS0+ Z2VtX2NvbnRleHQgPSBjdHg7Cj4gQEAgLTI1NCwzICsxNjksMTggQEAgdm9pZCBpbnRlbF9jb250 ZXh0X2V4aXRfZW5naW5lKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKPiAgIHsKPiAgIAlpbnRl bF9lbmdpbmVfcG1fcHV0KGNlLT5lbmdpbmUpOwo+ICAgfQo+ICsKPiArc3RydWN0IGk5MTVfcmVx dWVzdCAqaW50ZWxfY29udGV4dF9jcmVhdGVfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y2UpCj4gK3sKPiArCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwo+ICsJaW50IGVycjsKPiArCj4g KwllcnIgPSBpbnRlbF9jb250ZXh0X3BpbihjZSk7Cj4gKwlpZiAodW5saWtlbHkoZXJyKSkKPiAr CQlyZXR1cm4gRVJSX1BUUihlcnIpOwo+ICsKPiArCXJxID0gaTkxNV9yZXF1ZXN0X2NyZWF0ZShj ZSk7Cj4gKwlpbnRlbF9jb250ZXh0X3VucGluKGNlKTsKPiArCj4gKwlyZXR1cm4gcnE7Cj4gK30K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5oCj4gaW5kZXggYjc0NmFkZDZi NzFkLi42MzM5MmM4OGNkOTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfY29udGV4dC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29u dGV4dC5oCj4gQEAgLTEyLDI0ICsxMiwxNiBAQAo+ICAgI2luY2x1ZGUgImludGVsX2NvbnRleHRf dHlwZXMuaCIKPiAgICNpbmNsdWRlICJpbnRlbF9lbmdpbmVfdHlwZXMuaCIKPiAgIAo+IC1zdHJ1 Y3QgaW50ZWxfY29udGV4dCAqaW50ZWxfY29udGV4dF9hbGxvYyh2b2lkKTsKPiAtdm9pZCBpbnRl bF9jb250ZXh0X2ZyZWUoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKTsKPiAtCj4gICB2b2lkIGlu dGVsX2NvbnRleHRfaW5pdChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCj4gICAJCQlzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAgCQkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKTsKPiAgIAo+IC0vKioKPiAtICogaW50ZWxfY29udGV4dF9sb29rdXAgLSBGaW5kIHRoZSBt YXRjaGluZyBIVyBjb250ZXh0IGZvciB0aGlzIChjdHgsIGVuZ2luZSkKPiAtICogQGN0eCAtIHRo ZSBwYXJlbnQgR0VNIGNvbnRleHQKPiAtICogQGVuZ2luZSAtIHRoZSB0YXJnZXQgSFcgZW5naW5l Cj4gLSAqCj4gLSAqIE1heSByZXR1cm4gTlVMTCBpZiB0aGUgSFcgY29udGV4dCBoYXNuJ3QgYmVl biBpbnN0YW50aWF0ZWQgKGkuZS4gdW51c2VkKS4KPiAtICovCj4gICBzdHJ1Y3QgaW50ZWxfY29u dGV4dCAqCj4gLWludGVsX2NvbnRleHRfbG9va3VwKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHgsCj4gK2ludGVsX2NvbnRleHRfY3JlYXRlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgs Cj4gICAJCSAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiAgIAo+ICt2b2lk IGludGVsX2NvbnRleHRfZnJlZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpOwo+ICsKPiAgIC8q Kgo+ICAgICogaW50ZWxfY29udGV4dF9sb2NrX3Bpbm5lZCAtIFN0YWJsaXNlcyB0aGUgJ3Bpbm5l ZCcgc3RhdHVzIG9mIHRoZSBIVyBjb250ZXh0Cj4gICAgKiBAY2UgLSB0aGUgY29udGV4dAo+IEBA IC03MSwxNyArNjMsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfY29udGV4dF91bmxvY2tf cGlubmVkKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKPiAgIAltdXRleF91bmxvY2soJmNlLT5w aW5fbXV0ZXgpOwo+ICAgfQo+ICAgCj4gLXN0cnVjdCBpbnRlbF9jb250ZXh0ICoKPiAtX19pbnRl bF9jb250ZXh0X2luc2VydChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+IC0JCSAgICAg ICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gLQkJICAgICAgIHN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSk7Cj4gLXZvaWQKPiAtX19pbnRlbF9jb250ZXh0X3JlbW92ZShzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqY2UpOwo+IC0KPiAtc3RydWN0IGludGVsX2NvbnRleHQgKgo+IC1pbnRl bF9jb250ZXh0X2luc3RhbmNlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gLQkJICAg ICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gLQo+ICAgaW50IF9faW50ZWxf Y29udGV4dF9kb19waW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlKTsKPiAgIAo+ICAgc3RhdGlj IGlubGluZSBpbnQgaW50ZWxfY29udGV4dF9waW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQo+ IEBAIC0xNDQsNCArMTI1LDYgQEAgc3RhdGljIGlubGluZSB2b2lkIGludGVsX2NvbnRleHRfdGlt ZWxpbmVfdW5sb2NrKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKPiAgIAltdXRleF91bmxvY2so JmNlLT5yaW5nLT50aW1lbGluZS0+bXV0ZXgpOwo+ICAgfQo+ICAgCj4gK3N0cnVjdCBpOTE1X3Jl cXVlc3QgKmludGVsX2NvbnRleHRfY3JlYXRlX3JlcXVlc3Qoc3RydWN0IGludGVsX2NvbnRleHQg KmNlKTsKPiArCj4gICAjZW5kaWYgLyogX19JTlRFTF9DT05URVhUX0hfXyAqLwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3R5cGVzLmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3R5cGVzLmgKPiBpbmRleCBmMDJkMjc3 MzRlM2IuLjM1NzljMjcwODMyMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9jb250ZXh0X3R5cGVzLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9jb250ZXh0X3R5cGVzLmgKPiBAQCAtMTAsNyArMTAsNiBAQAo+ICAgI2luY2x1ZGUgPGxp bnV4L2tyZWYuaD4KPiAgICNpbmNsdWRlIDxsaW51eC9saXN0Lmg+Cj4gICAjaW5jbHVkZSA8bGlu dXgvbXV0ZXguaD4KPiAtI2luY2x1ZGUgPGxpbnV4L3JidHJlZS5oPgo+ICAgI2luY2x1ZGUgPGxp bnV4L3R5cGVzLmg+Cj4gICAKPiAgICNpbmNsdWRlICJpOTE1X2FjdGl2ZV90eXBlcy5oIgo+IEBA IC02MSw3ICs2MCw2IEBAIHN0cnVjdCBpbnRlbF9jb250ZXh0IHsKPiAgIAlzdHJ1Y3QgaTkxNV9h Y3RpdmVfcmVxdWVzdCBhY3RpdmVfdHJhY2tlcjsKPiAgIAo+ICAgCWNvbnN0IHN0cnVjdCBpbnRl bF9jb250ZXh0X29wcyAqb3BzOwo+IC0Jc3RydWN0IHJiX25vZGUgbm9kZTsKPiAgIAo+ICAgCS8q KiBzc2V1OiBDb250cm9sIGV1L3NsaWNlIHBhcnRpdGlvbmluZyAqLwo+ICAgCXN0cnVjdCBpbnRl bF9zc2V1IHNzZXU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMK PiBpbmRleCA2Y2I5MDEzN2IyZmEuLjJhMWM0MzhiZjBhZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jCj4gQEAgLTcxNiw3ICs3MTYsNyBAQCBzdGF0aWMg aW50IHBpbl9jb250ZXh0KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gICAJc3RydWN0 IGludGVsX2NvbnRleHQgKmNlOwo+ICAgCWludCBlcnI7Cj4gICAKPiAtCWNlID0gaW50ZWxfY29u dGV4dF9pbnN0YW5jZShjdHgsIGVuZ2luZSk7Cj4gKwljZSA9IGk5MTVfZ2VtX2NvbnRleHRfZ2V0 X2VuZ2luZShjdHgsIGVuZ2luZS0+aWQpOwo+ICAgCWlmIChJU19FUlIoY2UpKQo+ICAgCQlyZXR1 cm4gUFRSX0VSUihjZSk7Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvbW9ja19lbmdpbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L21vY2tfZW5naW5lLmMK PiBpbmRleCA4NWNkYmZlMWQ5ODkuLjI5NDE5MTZiMzdiZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvbW9ja19lbmdpbmUuYwo+IEBAIC0yMyw2ICsyMyw3IEBACj4gICAgKi8KPiAgIAo+ICAg I2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gKyNpbmNsdWRlICJpOTE1X2dlbV9jb250ZXh0LmgiCj4g ICAjaW5jbHVkZSAiaW50ZWxfY29udGV4dC5oIgo+ICAgI2luY2x1ZGUgImludGVsX2VuZ2luZV9w bS5oIgo+ICAgCj4gQEAgLTI4Niw3ICsyODcsNyBAQCBpbnQgbW9ja19lbmdpbmVfaW5pdChzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJaTkxNV90aW1lbGluZV9zZXRfc3ViY2xh c3MoJmVuZ2luZS0+dGltZWxpbmUsIFRJTUVMSU5FX0VOR0lORSk7Cj4gICAKPiAgIAllbmdpbmUt Pmtlcm5lbF9jb250ZXh0ID0KPiAtCQlpbnRlbF9jb250ZXh0X2luc3RhbmNlKGk5MTUtPmtlcm5l bF9jb250ZXh0LCBlbmdpbmUpOwo+ICsJCWk5MTVfZ2VtX2NvbnRleHRfZ2V0X2VuZ2luZShpOTE1 LT5rZXJuZWxfY29udGV4dCwgZW5naW5lLT5pZCk7Cj4gICAJaWYgKElTX0VSUihlbmdpbmUtPmtl cm5lbF9jb250ZXh0KSkKPiAgIAkJZ290byBlcnJfdGltZWxpbmU7Cj4gICAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L3NjaGVkdWxlci5jCj4gaW5kZXggNjA2ZmMyNzEzMjQwLi44YjY1NzRlMWI0OTUg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jCj4gQEAgLTExODgsNyArMTE4 OCw3IEBAIGludCBpbnRlbF92Z3B1X3NldHVwX3N1Ym1pc3Npb24oc3RydWN0IGludGVsX3ZncHUg KnZncHUpCj4gICAJCUlOSVRfTElTVF9IRUFEKCZzLT53b3JrbG9hZF9xX2hlYWRbaV0pOwo+ICAg CQlzLT5zaGFkb3dbaV0gPSBFUlJfUFRSKC1FSU5WQUwpOwo+ICAgCj4gLQkJY2UgPSBpbnRlbF9j b250ZXh0X2luc3RhbmNlKGN0eCwgZW5naW5lKTsKPiArCQljZSA9IGk5MTVfZ2VtX2NvbnRleHRf Z2V0X2VuZ2luZShjdHgsIGkpOwo+ICAgCQlpZiAoSVNfRVJSKGNlKSkgewo+ICAgCQkJcmV0ID0g UFRSX0VSUihjZSk7Cj4gICAJCQlnb3RvIG91dF9zaGFkb3dfY3R4Owo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYwo+IGluZGV4IDUwMjY2ZTg3YzIyNS4uZTJkODljNjRhYjUyIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jCj4gQEAgLTQzMTIsOCArNDMxMiw5IEBAIGludCBpOTE1X2dlbV9pbml0 X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAo+ICAgc3RhdGljIGlu dCBfX2ludGVsX2VuZ2luZXNfcmVjb3JkX2RlZmF1bHRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1KQo+ICAgewo+IC0Jc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKPiAgIAlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gKwlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAq Y3R4Owo+ICsJc3RydWN0IGk5MTVfZ2VtX2VuZ2luZXMgKmU7Cj4gICAJZW51bSBpbnRlbF9lbmdp bmVfaWQgaWQ7Cj4gICAJaW50IGVyciA9IDA7Cj4gICAKPiBAQCAtNDMzMCwxOCArNDMzMSwyMSBA QCBzdGF0aWMgaW50IF9faW50ZWxfZW5naW5lc19yZWNvcmRfZGVmYXVsdHMoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpCj4gICAJaWYgKElTX0VSUihjdHgpKQo+ICAgCQlyZXR1cm4gUFRS X0VSUihjdHgpOwo+ICAgCj4gKwllID0gaTkxNV9nZW1fY29udGV4dF9sb2NrX2VuZ2luZXMoY3R4 KTsKPiArCj4gICAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKPiArCQlzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBlLT5lbmdpbmVzW2lkXTsKPiAgIAkJc3RydWN0IGk5MTVf cmVxdWVzdCAqcnE7Cj4gICAKPiAtCQlycSA9IGk5MTVfcmVxdWVzdF9hbGxvYyhlbmdpbmUsIGN0 eCk7Cj4gKwkJcnEgPSBpbnRlbF9jb250ZXh0X2NyZWF0ZV9yZXF1ZXN0KGNlKTsKPiAgIAkJaWYg KElTX0VSUihycSkpIHsKPiAgIAkJCWVyciA9IFBUUl9FUlIocnEpOwo+IC0JCQlnb3RvIG91dF9j dHg7Cj4gKwkJCWdvdG8gZXJyX2FjdGl2ZTsKPiAgIAkJfQo+ICAgCj4gICAJCWVyciA9IDA7Cj4g LQkJaWYgKGVuZ2luZS0+aW5pdF9jb250ZXh0KQo+IC0JCQllcnIgPSBlbmdpbmUtPmluaXRfY29u dGV4dChycSk7Cj4gKwkJaWYgKHJxLT5lbmdpbmUtPmluaXRfY29udGV4dCkKPiArCQkJZXJyID0g cnEtPmVuZ2luZS0+aW5pdF9jb250ZXh0KHJxKTsKPiAgIAo+ICAgCQlpOTE1X3JlcXVlc3RfYWRk KHJxKTsKPiAgIAkJaWYgKGVycikKPiBAQCAtNDM1NSwxNSArNDM1OSwxMCBAQCBzdGF0aWMgaW50 IF9faW50ZWxfZW5naW5lc19yZWNvcmRfZGVmYXVsdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUpCj4gICAJfQo+ICAgCj4gICAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQp IHsKPiAtCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7Cj4gLQkJc3RydWN0IGk5MTVfdm1hICpz dGF0ZTsKPiArCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBlLT5lbmdpbmVzW2lkXTsKPiAr CQlzdHJ1Y3QgaTkxNV92bWEgKnN0YXRlID0gY2UtPnN0YXRlOwo+ICAgCQl2b2lkICp2YWRkcjsK PiAgIAo+IC0JCWNlID0gaW50ZWxfY29udGV4dF9sb29rdXAoY3R4LCBlbmdpbmUpOwo+IC0JCWlm ICghY2UpCj4gLQkJCWNvbnRpbnVlOwo+IC0KPiAtCQlzdGF0ZSA9IGNlLT5zdGF0ZTsKPiAgIAkJ aWYgKCFzdGF0ZSkKPiAgIAkJCWNvbnRpbnVlOwo+ICAgCj4gQEAgLTQ0MTksNiArNDQxOCw3IEBA IHN0YXRpYyBpbnQgX19pbnRlbF9lbmdpbmVzX3JlY29yZF9kZWZhdWx0cyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIAl9Cj4gICAKPiAgIG91dF9jdHg6Cj4gKwlpOTE1X2dlbV9j b250ZXh0X3VubG9ja19lbmdpbmVzKGN0eCk7Cj4gICAJaTkxNV9nZW1fY29udGV4dF9zZXRfY2xv c2VkKGN0eCk7Cj4gICAJaTkxNV9nZW1fY29udGV4dF9wdXQoY3R4KTsKPiAgIAlyZXR1cm4gZXJy Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiBpbmRleCAxZTE3NzAw NDdjYzIuLjFhMTM3M2YwOGZhOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9jb250ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0LmMKPiBAQCAtMTUwLDcgKzE1MCw3IEBAIGxvb2t1cF91c2VyX2VuZ2luZShzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4LCB1MTYgY2xhc3MsIHUxNiBpbnN0YW5jZSkKPiAgIAlpZiAo IWVuZ2luZSkKPiAgIAkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Cj4gICAKPiAtCXJldHVybiBp bnRlbF9jb250ZXh0X2luc3RhbmNlKGN0eCwgZW5naW5lKTsKPiArCXJldHVybiBpOTE1X2dlbV9j b250ZXh0X2dldF9lbmdpbmUoY3R4LCBlbmdpbmUtPmlkKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGlj IGlubGluZSBpbnQgbmV3X2h3X2lkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBnZnBf dCBnZnApCj4gQEAgLTI0MiwxMCArMjQyLDUxIEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VfaHdfaWQo c3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiAgIAltdXRleF91bmxvY2soJmk5MTUtPmNv bnRleHRzLm11dGV4KTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgdm9pZCBpOTE1X2dlbV9jb250ZXh0 X2ZyZWUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiArc3RhdGljIHZvaWQgX19mcmVl X2VuZ2luZXMoc3RydWN0IGk5MTVfZ2VtX2VuZ2luZXMgKmUsIHVuc2lnbmVkIGludCBjb3VudCkK PiAgIHsKPiAtCXN0cnVjdCBpbnRlbF9jb250ZXh0ICppdCwgKm47Cj4gKwl3aGlsZSAoY291bnQt LSkgewo+ICsJCWlmICghZS0+ZW5naW5lc1tjb3VudF0pCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiAr CQlpbnRlbF9jb250ZXh0X3B1dChlLT5lbmdpbmVzW2NvdW50XSk7Cj4gKwl9Cj4gKwlrZnJlZShl KTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZnJlZV9lbmdpbmVzKHN0cnVjdCBpOTE1X2dlbV9l bmdpbmVzICplKQo+ICt7Cj4gKwlfX2ZyZWVfZW5naW5lcyhlLCBlLT5udW1fZW5naW5lcyk7Cj4g K30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgaTkxNV9nZW1fZW5naW5lcyAqZGVmYXVsdF9lbmdpbmVz KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZTsKPiArCXN0cnVjdCBpOTE1X2dlbV9lbmdpbmVzICplOwo+ICsJZW51bSBp bnRlbF9lbmdpbmVfaWQgaWQ7Cj4gKwo+ICsJZSA9IGt6YWxsb2Moc3RydWN0X3NpemUoZSwgZW5n aW5lcywgSTkxNV9OVU1fRU5HSU5FUyksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFlKQo+ICsJCXJl dHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ICsKPiArCWUtPmk5MTUgPSBjdHgtPmk5MTU7Cj4gKwlm b3JfZWFjaF9lbmdpbmUoZW5naW5lLCBjdHgtPmk5MTUsIGlkKSB7Cj4gKwkJc3RydWN0IGludGVs X2NvbnRleHQgKmNlOwo+ICsKPiArCQljZSA9IGludGVsX2NvbnRleHRfY3JlYXRlKGN0eCwgZW5n aW5lKTsKPiArCQlpZiAoSVNfRVJSKGNlKSkgewo+ICsJCQlfX2ZyZWVfZW5naW5lcyhlLCBpZCk7 Cj4gKwkJCXJldHVybiBFUlJfQ0FTVChjZSk7Cj4gKwkJfQo+ICAgCj4gKwkJZS0+ZW5naW5lc1tp ZF0gPSBjZTsKPiArCX0KPiArCWUtPm51bV9lbmdpbmVzID0gaWQ7Cj4gKwo+ICsJcmV0dXJuIGU7 Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGk5MTVfZ2VtX2NvbnRleHRfZnJlZShzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dCAqY3R4KQo+ICt7Cj4gICAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmY3R4LT5p OTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAlHRU1fQlVHX09OKCFpOTE1X2dlbV9jb250ZXh0 X2lzX2Nsb3NlZChjdHgpKTsKPiAgIAlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZjdHgtPmFjdGl2 ZV9lbmdpbmVzKSk7Cj4gQEAgLTI1Myw4ICsyOTQsOCBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9j b250ZXh0X2ZyZWUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiAgIAlyZWxlYXNlX2h3 X2lkKGN0eCk7Cj4gICAJaTkxNV9wcGd0dF9wdXQoY3R4LT5wcGd0dCk7Cj4gICAKPiAtCXJidHJl ZV9wb3N0b3JkZXJfZm9yX2VhY2hfZW50cnlfc2FmZShpdCwgbiwgJmN0eC0+aHdfY29udGV4dHMs IG5vZGUpCj4gLQkJaW50ZWxfY29udGV4dF9wdXQoaXQpOwo+ICsJZnJlZV9lbmdpbmVzKHJjdV9h Y2Nlc3NfcG9pbnRlcihjdHgtPmVuZ2luZXMpKTsKPiArCW11dGV4X2Rlc3Ryb3koJmN0eC0+ZW5n aW5lc19tdXRleCk7Cj4gICAKPiAgIAlpZiAoY3R4LT50aW1lbGluZSkKPiAgIAkJaTkxNV90aW1l bGluZV9wdXQoY3R4LT50aW1lbGluZSk7Cj4gQEAgLTM2Myw2ICs0MDQsOCBAQCBzdGF0aWMgc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKgo+ICAgX19jcmVhdGVfY29udGV4dChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICB7Cj4gICAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg KmN0eDsKPiArCXN0cnVjdCBpOTE1X2dlbV9lbmdpbmVzICplOwo+ICsJaW50IGVycjsKPiAgIAlp bnQgaTsKPiAgIAo+ICAgCWN0eCA9IGt6YWxsb2Moc2l6ZW9mKCpjdHgpLCBHRlBfS0VSTkVMKTsK PiBAQCAtMzc2LDggKzQxOSwxMyBAQCBfX2NyZWF0ZV9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiAgIAlJTklUX0xJU1RfSEVBRCgmY3R4LT5hY3RpdmVfZW5naW5l cyk7Cj4gICAJbXV0ZXhfaW5pdCgmY3R4LT5tdXRleCk7Cj4gICAKPiAtCWN0eC0+aHdfY29udGV4 dHMgPSBSQl9ST09UOwo+IC0Jc3Bpbl9sb2NrX2luaXQoJmN0eC0+aHdfY29udGV4dHNfbG9jayk7 Cj4gKwltdXRleF9pbml0KCZjdHgtPmVuZ2luZXNfbXV0ZXgpOwo+ICsJZSA9IGRlZmF1bHRfZW5n aW5lcyhjdHgpOwo+ICsJaWYgKElTX0VSUihlKSkgewo+ICsJCWVyciA9IFBUUl9FUlIoZSk7Cj4g KwkJZ290byBlcnJfZnJlZTsKPiArCX0KPiArCVJDVV9JTklUX1BPSU5URVIoY3R4LT5lbmdpbmVz LCBlKTsKPiAgIAo+ICAgCUlOSVRfUkFESVhfVFJFRSgmY3R4LT5oYW5kbGVzX3ZtYSwgR0ZQX0tF Uk5FTCk7Cj4gICAJSU5JVF9MSVNUX0hFQUQoJmN0eC0+aGFuZGxlc19saXN0KTsKPiBAQCAtMzk5 LDYgKzQ0NywxMCBAQCBfX2NyZWF0ZV9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiAgIAkJY3R4LT5oYW5nX3RpbWVzdGFtcFtpXSA9IGppZmZpZXMgLSBDT05URVhU X0ZBU1RfSEFOR19KSUZGSUVTOwo+ICAgCj4gICAJcmV0dXJuIGN0eDsKPiArCj4gK2Vycl9mcmVl Ogo+ICsJa2ZyZWUoY3R4KTsKPiArCXJldHVybiBFUlJfUFRSKGVycik7Cj4gICB9Cj4gICAKPiAg IHN0YXRpYyBzdHJ1Y3QgaTkxNV9od19wcGd0dCAqCj4gQEAgLTg2Miw3ICs5MTQsNyBAQCBzdGF0 aWMgaW50IGNvbnRleHRfYmFycmllcl90YXNrKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgs Cj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBjdHgtPmk5MTU7Cj4g ICAJc3RydWN0IGNvbnRleHRfYmFycmllcl90YXNrICpjYjsKPiAtCXN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZSwgKm5leHQ7Cj4gKwlzdHJ1Y3QgaTkxNV9nZW1fZW5naW5lc19pdGVyIGl0Owo+ICAg CWludCBlcnIgPSAwOwo+ICAgCj4gICAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+ZHJtLnN0 cnVjdF9tdXRleCk7Cj4gQEAgLTg3NSwyMCArOTI3LDIzIEBAIHN0YXRpYyBpbnQgY29udGV4dF9i YXJyaWVyX3Rhc2soc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAgIAlpOTE1X2FjdGl2 ZV9pbml0KGk5MTUsICZjYi0+YmFzZSwgY2JfcmV0aXJlKTsKPiAgIAlpOTE1X2FjdGl2ZV9hY3F1 aXJlKCZjYi0+YmFzZSk7Cj4gICAKPiAtCXJidHJlZV9wb3N0b3JkZXJfZm9yX2VhY2hfZW50cnlf c2FmZShjZSwgbmV4dCwgJmN0eC0+aHdfY29udGV4dHMsIG5vZGUpIHsKPiAtCQlzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUgPSBjZS0+ZW5naW5lOwo+ICsJZm9yX2VhY2hfZ2VtX2VuZ2lu ZShpdCwgaTkxNV9nZW1fY29udGV4dF9sb2NrX2VuZ2luZXMoY3R4KSkgewo+ICsJCXN0cnVjdCBp bnRlbF9jb250ZXh0ICpjZSA9IGl0LmNvbnRleHQ7Cj4gICAJCXN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxOwo+ICAgCj4gLQkJaWYgKCEoZW5naW5lLT5tYXNrICYgZW5naW5lcykpCj4gKwkJaWYgKCEo Y2UtPmVuZ2luZS0+bWFzayAmIGVuZ2luZXMpKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJaWYg KCFpbnRlbF9jb250ZXh0X2lzX3Bpbm5lZChjZSkpCj4gICAJCQljb250aW51ZTsKPiAgIAo+ICAg CQlpZiAoSTkxNV9TRUxGVEVTVF9PTkxZKGNvbnRleHRfYmFycmllcl9pbmplY3RfZmF1bHQgJgo+ IC0JCQkJICAgICAgIGVuZ2luZS0+bWFzaykpIHsKPiArCQkJCSAgICAgICBjZS0+ZW5naW5lLT5t YXNrKSkgewo+ICAgCQkJZXJyID0gLUVOWElPOwo+ICAgCQkJYnJlYWs7Cj4gICAJCX0KPiAgIAo+ IC0JCXJxID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgY3R4KTsKPiArCQlycSA9IGludGVs X2NvbnRleHRfY3JlYXRlX3JlcXVlc3QoY2UpOwo+ICAgCQlpZiAoSVNfRVJSKHJxKSkgewo+ICAg CQkJZXJyID0gUFRSX0VSUihycSk7Cj4gICAJCQlicmVhazsKPiBAQCAtOTA0LDYgKzk1OSw3IEBA IHN0YXRpYyBpbnQgY29udGV4dF9iYXJyaWVyX3Rhc2soc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg KmN0eCwKPiAgIAkJaWYgKGVycikKPiAgIAkJCWJyZWFrOwo+ICAgCX0KPiArCWk5MTVfZ2VtX2Nv bnRleHRfdW5sb2NrX2VuZ2luZXMoY3R4KTsKPiAgIAo+ICAgCWNiLT50YXNrID0gZXJyID8gTlVM TCA6IHRhc2s7IC8qIGNhbGxlciBuZWVkcyB0byB1bndpbmQgaW5zdGVhZCAqLwo+ICAgCWNiLT5k YXRhID0gZGF0YTsKPiBAQCAtMTczOSw2ICsxNzk1LDIxIEBAIGludCBfX2k5MTVfZ2VtX2NvbnRl eHRfcGluX2h3X2lkKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gICAJcmV0dXJuIGVy cjsKPiAgIH0KPiAgIAo+ICsvKiBHRU0gY29udGV4dC1lbmdpbmVzIGl0ZXJhdG9yOiBmb3JfZWFj aF9nZW1fZW5naW5lKCkgKi8KPiArYm9vbCBpOTE1X2dlbV9lbmdpbmVzX2l0ZXJfbmV4dChzdHJ1 Y3QgaTkxNV9nZW1fZW5naW5lc19pdGVyICppdCkKPiArewo+ICsJR0VNX0JVR19PTighaXQtPmVu Z2luZXMpOwo+ICsKPiArCWRvIHsKPiArCQlpZiAoaXQtPmlkeCA+PSBpdC0+ZW5naW5lcy0+bnVt X2VuZ2luZXMpCj4gKwkJCXJldHVybiBmYWxzZTsKPiArCj4gKwkJaXQtPmNvbnRleHQgPSBpdC0+ ZW5naW5lcy0+ZW5naW5lc1tpdC0+aWR4KytdOwo+ICsJfSB3aGlsZSAoIWl0LT5jb250ZXh0KTsK PiArCj4gKwlyZXR1cm4gdHJ1ZTsKPiArfQo+ICsKPiAgICNpZiBJU19FTkFCTEVEKENPTkZJR19E Uk1fSTkxNV9TRUxGVEVTVCkKPiAgICNpbmNsdWRlICJzZWxmdGVzdHMvbW9ja19jb250ZXh0LmMi Cj4gICAjaW5jbHVkZSAic2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYyIKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCj4gaW5kZXggNWE4ZTA4MDQ5OWZiLi4yNjU3YTJj ZTgyZGEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4 dC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCj4gQEAg LTE3Niw2ICsxNzYsNjQgQEAgc3RhdGljIGlubGluZSB2b2lkIGk5MTVfZ2VtX2NvbnRleHRfcHV0 KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gICAJa3JlZl9wdXQoJmN0eC0+cmVmLCBp OTE1X2dlbV9jb250ZXh0X3JlbGVhc2UpOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyBpbmxpbmUgc3Ry dWN0IGk5MTVfZ2VtX2VuZ2luZXMgKgo+ICtpOTE1X2dlbV9jb250ZXh0X2VuZ2luZXMoc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiArewo+ICsJcmV0dXJuIHJjdV9kZXJlZmVyZW5jZV9w cm90ZWN0ZWQoY3R4LT5lbmdpbmVzLAo+ICsJCQkJCSBsb2NrZGVwX2lzX2hlbGQoJmN0eC0+ZW5n aW5lc19tdXRleCkpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBpOTE1X2dlbV9l bmdpbmVzICoKPiAraTkxNV9nZW1fY29udGV4dF9sb2NrX2VuZ2luZXMoc3RydWN0IGk5MTVfZ2Vt X2NvbnRleHQgKmN0eCkKPiArCV9fYWNxdWlyZXMoJmN0eC0+ZW5naW5lc19tdXRleCkKPiArewo+ ICsJbXV0ZXhfbG9jaygmY3R4LT5lbmdpbmVzX211dGV4KTsKPiArCXJldHVybiBpOTE1X2dlbV9j b250ZXh0X2VuZ2luZXMoY3R4KTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkCj4gK2k5 MTVfZ2VtX2NvbnRleHRfdW5sb2NrX2VuZ2luZXMoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0 eCkKPiArCV9fcmVsZWFzZXMoJmN0eC0+ZW5naW5lc19tdXRleCkKPiArewo+ICsJbXV0ZXhfdW5s b2NrKCZjdHgtPmVuZ2luZXNfbXV0ZXgpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHN0cnVj dCBpbnRlbF9jb250ZXh0ICoKPiAraTkxNV9nZW1fY29udGV4dF9sb29rdXBfZW5naW5lKHN0cnVj dCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsIHVuc2lnbmVkIGludCBpZHgpCj4gK3sKPiArCXJldHVy biBpOTE1X2dlbV9jb250ZXh0X2VuZ2luZXMoY3R4KS0+ZW5naW5lc1tpZHhdOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBpbnRlbF9jb250ZXh0ICoKPiAraTkxNV9nZW1fY29udGV4 dF9nZXRfZW5naW5lKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsIHVuc2lnbmVkIGludCBp ZHgpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IEVSUl9QVFIoLUVJTlZBTCk7 Cj4gKwo+ICsJcmN1X3JlYWRfbG9jaygpOyB7Cj4gKwkJc3RydWN0IGk5MTVfZ2VtX2VuZ2luZXMg KmUgPSByY3VfZGVyZWZlcmVuY2UoY3R4LT5lbmdpbmVzKTsKPiArCQlpZiAobGlrZWx5KGlkeCA8 IGUtPm51bV9lbmdpbmVzICYmIGUtPmVuZ2luZXNbaWR4XSkpCj4gKwkJCWNlID0gaW50ZWxfY29u dGV4dF9nZXQoZS0+ZW5naW5lc1tpZHhdKTsKPiArCX0gcmN1X3JlYWRfdW5sb2NrKCk7Cj4gKwo+ ICsJcmV0dXJuIGNlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9nZW1fZW5n aW5lc19pdGVyX2luaXQoc3RydWN0IGk5MTVfZ2VtX2VuZ2luZXNfaXRlciAqaXQsCj4gKwkJCQkJ ICAgICAgc3RydWN0IGk5MTVfZ2VtX2VuZ2luZXMgKmVuZ2luZXMpCj4gK3sKPiArCUdFTV9CVUdf T04oIWVuZ2luZXMpOwo+ICsKPiArCWl0LT5pZHggPSAwOwo+ICsJaXQtPmNvbnRleHQgPSBOVUxM Owo+ICsJaXQtPmVuZ2luZXMgPSBlbmdpbmVzOwo+ICt9Cj4gKwo+ICtib29sIGk5MTVfZ2VtX2Vu Z2luZXNfaXRlcl9uZXh0KHN0cnVjdCBpOTE1X2dlbV9lbmdpbmVzX2l0ZXIgKml0KTsKPiArCj4g KyNkZWZpbmUgZm9yX2VhY2hfZ2VtX2VuZ2luZShpdCwgZW5naW5lcykgXAo+ICsJZm9yIChpOTE1 X2dlbV9lbmdpbmVzX2l0ZXJfaW5pdCgmKGl0KSwgKGVuZ2luZXMpKTsgXAo+ICsJICAgICBpOTE1 X2dlbV9lbmdpbmVzX2l0ZXJfbmV4dCgmKGl0KSk7KQo+ICsKPiAgIHN0cnVjdCBpOTE1X2x1dF9o YW5kbGUgKmk5MTVfbHV0X2hhbmRsZV9hbGxvYyh2b2lkKTsKPiAgIHZvaWQgaTkxNV9sdXRfaGFu ZGxlX2ZyZWUoc3RydWN0IGk5MTVfbHV0X2hhbmRsZSAqbHV0KTsKPiAgIAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0X3R5cGVzLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0X3R5cGVzLmgKPiBpbmRleCBkMjgyYTZhYjNi OWYuLmM3NGYwNTQ1Mzc1ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9jb250ZXh0X3R5cGVzLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9jb250ZXh0X3R5cGVzLmgKPiBAQCAtMjksNiArMjksMTkgQEAgc3RydWN0IGk5MTVfaHdfcHBn dHQ7Cj4gICBzdHJ1Y3QgaTkxNV90aW1lbGluZTsKPiAgIHN0cnVjdCBpbnRlbF9yaW5nOwo+ICAg Cj4gK3N0cnVjdCBpOTE1X2dlbV9lbmdpbmVzIHsKPiArCXN0cnVjdCByY3Vfd29yayByY3U7Cj4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNTsKPiArCXVuc2lnbmVkIGludCBudW1fZW5n aW5lczsKPiArCXN0cnVjdCBpbnRlbF9jb250ZXh0ICplbmdpbmVzW107Cj4gK307Cj4gKwo+ICtz dHJ1Y3QgaTkxNV9nZW1fZW5naW5lc19pdGVyIHsKPiArCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpj b250ZXh0Owo+ICsJc3RydWN0IGk5MTVfZ2VtX2VuZ2luZXMgKmVuZ2luZXM7Cj4gKwl1bnNpZ25l ZCBpbnQgaWR4Owo+ICt9Owo+ICsKPiAgIC8qKgo+ICAgICogc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgLSBjbGllbnQgc3RhdGUKPiAgICAqCj4gQEAgLTQyLDYgKzU1LDIxIEBAIHN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0IHsKPiAgIAkvKiogZmlsZV9wcml2OiBvd25pbmcgZmlsZSBkZXNjcmlwdG9y ICovCj4gICAJc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2Owo+ICAgCj4g KwkvKioKPiArCSAqIEBlbmdpbmVzOiBVc2VyIGRlZmluZWQgZW5naW5lcyBmb3IgdGhpcyBjb250 ZXh0Cj4gKwkgKgo+ICsJICogTlVMTCBtZWFucyB0byB1c2UgbGVnYWN5IGRlZmluaXRpb25zIChp bmNsdWRpbmcgcmFuZG9tIG1lYW5pbmcgb2YKPiArCSAqIEk5MTVfRVhFQ19CU0Qgd2l0aCBJOTE1 X0VYRUNfQlNEX1NFTEVDVE9SIG92ZXJyaWRlcykuCj4gKwkgKgo+ICsJICogSWYgZGVmaW5lZCwg ZXhlY2J1ZiB1c2VzIHRoZSBJOTE1X0VYRUNfTUFTSyBhcyBhbiBpbmRleCBpbnRvCj4gKwkgKiBh cnJheSwgYW5kIHZhcmlvdXMgdUFQSSBvdGhlciB0aGUgYWJpbGl0eSB0byBsb29rdXAgdXAgYW4K PiArCSAqIGluZGV4IGZyb20gdGhpcyBhcnJheSB0byBzZWxlY3QgYW4gZW5naW5lIG9wZXJhdGUg b24uCj4gKwkgKgo+ICsJICogVXNlciBkZWZpbmVkIGJ5IEk5MTVfQ09OVEVYVF9QQVJBTV9FTkdJ TkUuCj4gKwkgKi8KPiArCXN0cnVjdCBpOTE1X2dlbV9lbmdpbmVzIF9fcmN1ICplbmdpbmVzOwo+ ICsJc3RydWN0IG11dGV4IGVuZ2luZXNfbXV0ZXg7IC8qIGd1YXJkcyB3cml0ZXMgdG8gZW5naW5l cyAqLwo+ICsKPiAgIAlzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmU7Cj4gICAKPiAgIAkv KioKPiBAQCAtMTM0LDEwICsxNjIsNiBAQCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCB7Cj4gICAK PiAgIAlzdHJ1Y3QgaTkxNV9zY2hlZF9hdHRyIHNjaGVkOwo+ICAgCj4gLQkvKiogaHdfY29udGV4 dHM6IHBlci1lbmdpbmUgbG9naWNhbCBIVyBzdGF0ZSAqLwo+IC0Jc3RydWN0IHJiX3Jvb3QgaHdf Y29udGV4dHM7Cj4gLQlzcGlubG9ja190IGh3X2NvbnRleHRzX2xvY2s7Cj4gLQo+ICAgCS8qKiBy aW5nX3NpemU6IHNpemUgZm9yIGFsbG9jYXRpbmcgdGhlIHBlci1lbmdpbmUgcmluZyBidWZmZXIg Ki8KPiAgIAl1MzIgcmluZ19zaXplOwo+ICAgCS8qKiBkZXNjX3RlbXBsYXRlOiBpbnZhcmlhbnQg ZmllbGRzIGZvciB0aGUgSFcgY29udGV4dCBkZXNjcmlwdG9yICovCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IGluZGV4IDE2NmEzM2MwZDNlZC4uNjc5Zjdj MTU2MWJhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNi dWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIu Ywo+IEBAIC0yMDc2LDkgKzIwNzYsNyBAQCBnZW44X2Rpc3BhdGNoX2JzZF9lbmdpbmUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCXJldHVybiBmaWxlX3ByaXYtPmJzZF9l bmdpbmU7Cj4gICB9Cj4gICAKPiAtI2RlZmluZSBJOTE1X1VTRVJfUklOR1MgKDQpCj4gLQo+IC1z dGF0aWMgY29uc3QgZW51bSBpbnRlbF9lbmdpbmVfaWQgdXNlcl9yaW5nX21hcFtJOTE1X1VTRVJf UklOR1MgKyAxXSA9IHsKPiArc3RhdGljIGNvbnN0IGVudW0gaW50ZWxfZW5naW5lX2lkIHVzZXJf cmluZ19tYXBbXSA9IHsKPiAgIAlbSTkxNV9FWEVDX0RFRkFVTFRdCT0gUkNTMCwKPiAgIAlbSTkx NV9FWEVDX1JFTkRFUl0JPSBSQ1MwLAo+ICAgCVtJOTE1X0VYRUNfQkxUXQkJPSBCQ1MwLAo+IEBA IC0yMDg2LDEwICsyMDg0LDggQEAgc3RhdGljIGNvbnN0IGVudW0gaW50ZWxfZW5naW5lX2lkIHVz ZXJfcmluZ19tYXBbSTkxNV9VU0VSX1JJTkdTICsgMV0gPSB7Cj4gICAJW0k5MTVfRVhFQ19WRUJP WF0JPSBWRUNTMAo+ICAgfTsKPiAgIAo+IC1zdGF0aWMgaW50IGViX3Bpbl9jb250ZXh0KHN0cnVj dCBpOTE1X2V4ZWNidWZmZXIgKmViLAo+IC0JCQkgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPiArc3RhdGljIGludCBlYl9waW5fY29udGV4dChzdHJ1Y3QgaTkxNV9leGVjYnVmZmVy ICplYiwgc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQo+ICAgewo+IC0Jc3RydWN0IGludGVsX2Nv bnRleHQgKmNlOwo+ICAgCWludCBlcnI7Cj4gICAKPiAgIAkvKgo+IEBAIC0yMTAwLDIxICsyMDk2 LDE2IEBAIHN0YXRpYyBpbnQgZWJfcGluX2NvbnRleHQoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAq ZWIsCj4gICAJaWYgKGVycikKPiAgIAkJcmV0dXJuIGVycjsKPiAgIAo+IC0JY2UgPSBpbnRlbF9j b250ZXh0X2luc3RhbmNlKGViLT5nZW1fY29udGV4dCwgZW5naW5lKTsKPiAtCWlmIChJU19FUlIo Y2UpKQo+IC0JCXJldHVybiBQVFJfRVJSKGNlKTsKPiAtCj4gICAJLyoKPiAgIAkgKiBQaW5uaW5n IHRoZSBjb250ZXh0cyBtYXkgZ2VuZXJhdGUgcmVxdWVzdHMgaW4gb3JkZXIgdG8gYWNxdWlyZQo+ ICAgCSAqIEdHVFQgc3BhY2UsIHNvIGRvIHRoaXMgZmlyc3QgYmVmb3JlIHdlIHJlc2VydmUgYSBz ZXFubyBmb3IKPiAgIAkgKiBvdXJzZWx2ZXMuCj4gICAJICovCj4gICAJZXJyID0gaW50ZWxfY29u dGV4dF9waW4oY2UpOwo+IC0JaW50ZWxfY29udGV4dF9wdXQoY2UpOwo+ICAgCWlmIChlcnIpCj4g ICAJCXJldHVybiBlcnI7Cj4gICAKPiAtCWViLT5lbmdpbmUgPSBlbmdpbmU7Cj4gKwllYi0+ZW5n aW5lID0gY2UtPmVuZ2luZTsKPiAgIAllYi0+Y29udGV4dCA9IGNlOwo+ICAgCXJldHVybiAwOwo+ ICAgfQo+IEBAIC0yMTI0LDI1ICsyMTE1LDE5IEBAIHN0YXRpYyB2b2lkIGViX3VucGluX2NvbnRl eHQoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIpCj4gICAJaW50ZWxfY29udGV4dF91bnBpbihl Yi0+Y29udGV4dCk7Cj4gICB9Cj4gICAKPiAtc3RhdGljIGludAo+IC1lYl9zZWxlY3RfZW5naW5l KHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViLAo+IC0JCSBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUs Cj4gLQkJIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgKmFyZ3MpCj4gK3N0YXRpYyB1 bnNpZ25lZCBpbnQKPiArZWJfc2VsZWN0X2xlZ2FjeV9yaW5nKHN0cnVjdCBpOTE1X2V4ZWNidWZm ZXIgKmViLAo+ICsJCSAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwKPiArCQkgICAgICBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyICphcmdzKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1ID0gZWItPmk5MTU7Cj4gICAJdW5zaWduZWQgaW50IHVzZXJfcmlu Z19pZCA9IGFyZ3MtPmZsYWdzICYgSTkxNV9FWEVDX1JJTkdfTUFTSzsKPiAtCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAtCj4gLQlpZiAodXNlcl9yaW5nX2lkID4gSTkxNV9VU0VS X1JJTkdTKSB7Cj4gLQkJRFJNX0RFQlVHKCJleGVjYnVmIHdpdGggdW5rbm93biByaW5nOiAldVxu IiwgdXNlcl9yaW5nX2lkKTsKPiAtCQlyZXR1cm4gLUVJTlZBTDsKPiAtCX0KPiAgIAo+IC0JaWYg KCh1c2VyX3JpbmdfaWQgIT0gSTkxNV9FWEVDX0JTRCkgJiYKPiAtCSAgICAoKGFyZ3MtPmZsYWdz ICYgSTkxNV9FWEVDX0JTRF9NQVNLKSAhPSAwKSkgewo+ICsJaWYgKHVzZXJfcmluZ19pZCAhPSBJ OTE1X0VYRUNfQlNEICYmCj4gKwkgICAgKGFyZ3MtPmZsYWdzICYgSTkxNV9FWEVDX0JTRF9NQVNL KSkgewo+ICAgCQlEUk1fREVCVUcoImV4ZWNidWYgd2l0aCBub24gYnNkIHJpbmcgYnV0IHdpdGgg aW52YWxpZCAiCj4gICAJCQkgICJic2QgZGlzcGF0Y2ggZmxhZ3M6ICVkXG4iLCAoaW50KShhcmdz LT5mbGFncykpOwo+IC0JCXJldHVybiAtRUlOVkFMOwo+ICsJCXJldHVybiAtMTsKPiAgIAl9Cj4g ICAKPiAgIAlpZiAodXNlcl9yaW5nX2lkID09IEk5MTVfRVhFQ19CU0QgJiYgSEFTX0VOR0lORShp OTE1LCBWQ1MxKSkgewo+IEBAIC0yMTU3LDIwICsyMTQyLDM5IEBAIGViX3NlbGVjdF9lbmdpbmUo c3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCj4gICAJCX0gZWxzZSB7Cj4gICAJCQlEUk1fREVC VUcoImV4ZWNidWYgd2l0aCB1bmtub3duIGJzZCByaW5nOiAldVxuIiwKPiAgIAkJCQkgIGJzZF9p ZHgpOwo+IC0JCQlyZXR1cm4gLUVJTlZBTDsKPiArCQkJcmV0dXJuIC0xOwo+ICAgCQl9Cj4gICAK PiAtCQllbmdpbmUgPSBpOTE1LT5lbmdpbmVbX1ZDUyhic2RfaWR4KV07Cj4gLQl9IGVsc2Ugewo+ IC0JCWVuZ2luZSA9IGk5MTUtPmVuZ2luZVt1c2VyX3JpbmdfbWFwW3VzZXJfcmluZ19pZF1dOwo+ ICsJCXJldHVybiBfVkNTKGJzZF9pZHgpOwo+ICAgCX0KPiAgIAo+IC0JaWYgKCFlbmdpbmUpIHsK PiAtCQlEUk1fREVCVUcoImV4ZWNidWYgd2l0aCBpbnZhbGlkIHJpbmc6ICV1XG4iLCB1c2VyX3Jp bmdfaWQpOwo+IC0JCXJldHVybiAtRUlOVkFMOwo+ICsJaWYgKHVzZXJfcmluZ19pZCA+PSBBUlJB WV9TSVpFKHVzZXJfcmluZ19tYXApKSB7Cj4gKwkJRFJNX0RFQlVHKCJleGVjYnVmIHdpdGggdW5r bm93biByaW5nOiAldVxuIiwgdXNlcl9yaW5nX2lkKTsKPiArCQlyZXR1cm4gLTE7Cj4gICAJfQo+ ICAgCj4gLQlyZXR1cm4gZWJfcGluX2NvbnRleHQoZWIsIGVuZ2luZSk7Cj4gKwlyZXR1cm4gdXNl cl9yaW5nX21hcFt1c2VyX3JpbmdfaWRdOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50Cj4gK2ViX3Nl bGVjdF9lbmdpbmUoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCj4gKwkJIHN0cnVjdCBkcm1f ZmlsZSAqZmlsZSwKPiArCQkgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiAqYXJncykK PiArewo+ICsJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOwo+ICsJdW5zaWduZWQgaW50IGlkeDsK PiArCWludCBlcnI7Cj4gKwo+ICsJaWR4ID0gZWJfc2VsZWN0X2xlZ2FjeV9yaW5nKGViLCBmaWxl LCBhcmdzKTsKPiArCj4gKwljZSA9IGk5MTVfZ2VtX2NvbnRleHRfZ2V0X2VuZ2luZShlYi0+Z2Vt X2NvbnRleHQsIGlkeCk7Cj4gKwlpZiAoSVNfRVJSKGNlKSkKPiArCQlyZXR1cm4gUFRSX0VSUihj ZSk7Cj4gKwo+ICsJZXJyID0gZWJfcGluX2NvbnRleHQoZWIsIGNlKTsKPiArCWludGVsX2NvbnRl eHRfcHV0KGNlKTsKPiArCj4gKwlyZXR1cm4gZXJyOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9p ZAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCj4gaW5kZXggYWZhZWFiZTVlNTMxLi5kYWZkZmY1 Y2FhMzMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwo+IEBAIC0xMjAzLDM1ICsxMjAz LDM2IEBAIHN0YXRpYyBpbnQgaTkxNV9vYV9yZWFkKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpz dHJlYW0sCj4gICBzdGF0aWMgc3RydWN0IGludGVsX2NvbnRleHQgKm9hX3Bpbl9jb250ZXh0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgCQkJCQkgICAgc3RydWN0IGk5MTVfZ2Vt X2NvbnRleHQgKmN0eCkKPiAgIHsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9 IGk5MTUtPmVuZ2luZVtSQ1MwXTsKPiAtCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKPiArCXN0 cnVjdCBpOTE1X2dlbV9lbmdpbmVzX2l0ZXIgaXQ7Cj4gICAJaW50IGVycjsKPiAgIAo+IC0JY2Ug PSBpbnRlbF9jb250ZXh0X2luc3RhbmNlKGN0eCwgZW5naW5lKTsKPiAtCWlmIChJU19FUlIoY2Up KQo+IC0JCXJldHVybiBjZTsKPiAtCj4gICAJZXJyID0gaTkxNV9tdXRleF9sb2NrX2ludGVycnVw dGlibGUoJmk5MTUtPmRybSk7Cj4gLQlpZiAoZXJyKSB7Cj4gLQkJaW50ZWxfY29udGV4dF9wdXQo Y2UpOwo+ICsJaWYgKGVycikKPiAgIAkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKPiArCj4gKwlmb3Jf ZWFjaF9nZW1fZW5naW5lKGl0LCBpOTE1X2dlbV9jb250ZXh0X2xvY2tfZW5naW5lcyhjdHgpKSB7 Cj4gKwkJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gaXQuY29udGV4dDsKPiArCj4gKwkJaWYg KGNlLT5lbmdpbmUtPmNsYXNzICE9IFJFTkRFUl9DTEFTUykKPiArCQkJY29udGludWU7Cj4gKwo+ ICsJCS8qCj4gKwkJICogQXMgdGhlIElEIGlzIHRoZSBndHQgb2Zmc2V0IG9mIHRoZSBjb250ZXh0 J3Mgdm1hIHdlCj4gKwkJICogcGluIHRoZSB2bWEgdG8gZW5zdXJlIHRoZSBJRCByZW1haW5zIGZp eGVkLgo+ICsJCSAqLwo+ICsJCWVyciA9IGludGVsX2NvbnRleHRfcGluKGNlKTsKPiArCQlpZiAo ZXJyID09IDApIHsKPiArCQkJaTkxNS0+cGVyZi5vYS5waW5uZWRfY3R4ID0gY2U7Cj4gKwkJCWJy ZWFrOwo+ICsJCX0KPiAgIAl9Cj4gKwlpOTE1X2dlbV9jb250ZXh0X3VubG9ja19lbmdpbmVzKGN0 eCk7Cj4gICAKPiAtCS8qCj4gLQkgKiBBcyB0aGUgSUQgaXMgdGhlIGd0dCBvZmZzZXQgb2YgdGhl IGNvbnRleHQncyB2bWEgd2UKPiAtCSAqIHBpbiB0aGUgdm1hIHRvIGVuc3VyZSB0aGUgSUQgcmVt YWlucyBmaXhlZC4KPiAtCSAqCj4gLQkgKiBOQjogaW1wbGllZCBSQ1MgZW5naW5lLi4uCj4gLQkg Ki8KPiAtCWVyciA9IGludGVsX2NvbnRleHRfcGluKGNlKTsKPiAgIAltdXRleF91bmxvY2soJmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JaW50ZWxfY29udGV4dF9wdXQoY2UpOwo+ICAgCWlm IChlcnIpCj4gICAJCXJldHVybiBFUlJfUFRSKGVycik7Cj4gICAKPiAtCWk5MTUtPnBlcmYub2Eu cGlubmVkX2N0eCA9IGNlOwo+IC0KPiAtCXJldHVybiBjZTsKPiArCXJldHVybiBpOTE1LT5wZXJm Lm9hLnBpbm5lZF9jdHg7Cj4gICB9Cj4gICAKPiAgIC8qKgo+IEBAIC0xNzE3LDcgKzE3MTgsNiBA QCBnZW44X3VwZGF0ZV9yZWdfc3RhdGVfdW5sb2NrZWQoc3RydWN0IGludGVsX2NvbnRleHQgKmNl LAo+ICAgc3RhdGljIGludCBnZW44X2NvbmZpZ3VyZV9hbGxfY29udGV4dHMoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9v YV9jb25maWcgKm9hX2NvbmZpZykKPiAgIHsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSA9IGRldl9wcml2LT5lbmdpbmVbUkNTMF07Cj4gICAJdW5zaWduZWQgaW50IG1hcF90eXBl ID0gaTkxNV9jb2hlcmVudF9tYXBfdHlwZShkZXZfcHJpdik7Cj4gICAJc3RydWN0IGk5MTVfZ2Vt X2NvbnRleHQgKmN0eDsKPiAgIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiBAQCAtMTc0Niwz MCArMTc0Niw0MSBAQCBzdGF0aWMgaW50IGdlbjhfY29uZmlndXJlX2FsbF9jb250ZXh0cyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAKPiAgIAkvKiBVcGRhdGUgYWxsIGNv bnRleHRzIG5vdyB0aGF0IHdlJ3ZlIHN0YWxsZWQgdGhlIHN1Ym1pc3Npb24uICovCj4gICAJbGlz dF9mb3JfZWFjaF9lbnRyeShjdHgsICZkZXZfcHJpdi0+Y29udGV4dHMubGlzdCwgbGluaykgewo+ IC0JCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IGludGVsX2NvbnRleHRfbG9va3VwKGN0eCwg ZW5naW5lKTsKPiAtCQl1MzIgKnJlZ3M7Cj4gKwkJc3RydWN0IGk5MTVfZ2VtX2VuZ2luZXNfaXRl ciBpdDsKPiAgIAo+IC0JCS8qIE9BIHNldHRpbmdzIHdpbGwgYmUgc2V0IHVwb24gZmlyc3QgdXNl ICovCj4gLQkJaWYgKCFjZSB8fCAhY2UtPnN0YXRlKQo+IC0JCQljb250aW51ZTsKPiArCQlmb3Jf ZWFjaF9nZW1fZW5naW5lKGl0LCBpOTE1X2dlbV9jb250ZXh0X2xvY2tfZW5naW5lcyhjdHgpKSB7 Cj4gKwkJCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IGl0LmNvbnRleHQ7Cj4gKwkJCXUzMiAq cmVnczsKPiArCj4gKwkJCWlmIChjZS0+ZW5naW5lLT5jbGFzcyAhPSBSRU5ERVJfQ0xBU1MpCj4g KwkJCQljb250aW51ZTsKPiAgIAo+IC0JCXJlZ3MgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcChj ZS0+c3RhdGUtPm9iaiwgbWFwX3R5cGUpOwo+IC0JCWlmIChJU19FUlIocmVncykpCj4gLQkJCXJl dHVybiBQVFJfRVJSKHJlZ3MpOwo+ICsJCQkvKiBPQSBzZXR0aW5ncyB3aWxsIGJlIHNldCB1cG9u IGZpcnN0IHVzZSAqLwo+ICsJCQlpZiAoIWNlLT5zdGF0ZSkKPiArCQkJCWNvbnRpbnVlOwo+ICAg Cj4gLQkJY2UtPnN0YXRlLT5vYmotPm1tLmRpcnR5ID0gdHJ1ZTsKPiAtCQlyZWdzICs9IExSQ19T VEFURV9QTiAqIFBBR0VfU0laRSAvIHNpemVvZigqcmVncyk7Cj4gKwkJCXJlZ3MgPSBpOTE1X2dl bV9vYmplY3RfcGluX21hcChjZS0+c3RhdGUtPm9iaiwKPiArCQkJCQkJICAgICAgIG1hcF90eXBl KTsKPiArCQkJaWYgKElTX0VSUihyZWdzKSkgewo+ICsJCQkJaTkxNV9nZW1fY29udGV4dF91bmxv Y2tfZW5naW5lcyhjdHgpOwo+ICsJCQkJcmV0dXJuIFBUUl9FUlIocmVncyk7Cj4gKwkJCX0KPiAg IAo+IC0JCWdlbjhfdXBkYXRlX3JlZ19zdGF0ZV91bmxvY2tlZChjZSwgcmVncywgb2FfY29uZmln KTsKPiArCQkJY2UtPnN0YXRlLT5vYmotPm1tLmRpcnR5ID0gdHJ1ZTsKPiArCQkJcmVncyArPSBM UkNfU1RBVEVfUE4gKiBQQUdFX1NJWkUgLyBzaXplb2YoKnJlZ3MpOwo+ICAgCj4gLQkJaTkxNV9n ZW1fb2JqZWN0X3VucGluX21hcChjZS0+c3RhdGUtPm9iaik7Cj4gKwkJCWdlbjhfdXBkYXRlX3Jl Z19zdGF0ZV91bmxvY2tlZChjZSwgcmVncywgb2FfY29uZmlnKTsKPiArCj4gKwkJCWk5MTVfZ2Vt X29iamVjdF91bnBpbl9tYXAoY2UtPnN0YXRlLT5vYmopOwo+ICsJCX0KPiArCQlpOTE1X2dlbV9j b250ZXh0X3VubG9ja19lbmdpbmVzKGN0eCk7Cj4gICAJfQo+ICAgCj4gICAJLyoKPiAgIAkgKiBB cHBseSB0aGUgY29uZmlndXJhdGlvbiBieSBkb2luZyBvbmUgY29udGV4dCByZXN0b3JlIG9mIHRo ZSBlZGl0ZWQKPiAgIAkgKiBjb250ZXh0IGltYWdlLgo+ICAgCSAqLwo+IC0JcnEgPSBpOTE1X3Jl cXVlc3RfY3JlYXRlKGVuZ2luZS0+a2VybmVsX2NvbnRleHQpOwo+ICsJcnEgPSBpOTE1X3JlcXVl c3RfY3JlYXRlKGRldl9wcml2LT5lbmdpbmVbUkNTMF0tPmtlcm5lbF9jb250ZXh0KTsKPiAgIAlp ZiAoSVNfRVJSKHJxKSkKPiAgIAkJcmV0dXJuIFBUUl9FUlIocnEpOwo+ICAgCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZXF1ZXN0LmMKPiBpbmRleCBlYWY4ODUxZGQzYmMuLjY1YTk0OWIzNjU5YSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4gQEAgLTc4NSw3ICs3ODUsNiBA QCBpOTE1X3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1ID0gZW5naW5lLT5pOTE1Owo+ICAgCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKPiAgIAlz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiAtCWludCBlcnI7Cj4gICAKPiAgIAkvKgo+ICAgCSAq IFByZWVtcHQgY29udGV4dHMgYXJlIHJlc2VydmVkIGZvciBleGNsdXNpdmUgdXNlIHRvIGluamVj dCBhCj4gQEAgLTc5OSwyMSArNzk4LDEzIEBAIGk5MTVfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gICAJ ICogR0dUVCBzcGFjZSwgc28gZG8gdGhpcyBmaXJzdCBiZWZvcmUgd2UgcmVzZXJ2ZSBhIHNlcW5v IGZvcgo+ICAgCSAqIG91cnNlbHZlcy4KPiAgIAkgKi8KPiAtCWNlID0gaW50ZWxfY29udGV4dF9p bnN0YW5jZShjdHgsIGVuZ2luZSk7Cj4gKwljZSA9IGk5MTVfZ2VtX2NvbnRleHRfZ2V0X2VuZ2lu ZShjdHgsIGVuZ2luZS0+aWQpOwo+ICAgCWlmIChJU19FUlIoY2UpKQo+ICAgCQlyZXR1cm4gRVJS X0NBU1QoY2UpOwo+ICAgCj4gLQllcnIgPSBpbnRlbF9jb250ZXh0X3BpbihjZSk7Cj4gLQlpZiAo ZXJyKSB7Cj4gLQkJcnEgPSBFUlJfUFRSKGVycik7Cj4gLQkJZ290byBlcnJfcHV0Owo+IC0JfQo+ IC0KPiAtCXJxID0gaTkxNV9yZXF1ZXN0X2NyZWF0ZShjZSk7Cj4gLQlpbnRlbF9jb250ZXh0X3Vu cGluKGNlKTsKPiAtCj4gLWVycl9wdXQ6Cj4gKwlycSA9IGludGVsX2NvbnRleHRfY3JlYXRlX3Jl cXVlc3QoY2UpOwo+ICAgCWludGVsX2NvbnRleHRfcHV0KGNlKTsKPiArCj4gICAJcmV0dXJuIHJx Owo+ICAgfQo+ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1 Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc3VibWlzc2lv bi5jCj4gaW5kZXggMWI2ZDY0MDNlZTkyLi4yYjdjNzNhYmE1MDMgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKPiBAQCAtMzY0LDExICszNjQsOSBA QCBzdGF0aWMgdm9pZCBndWNfc3RhZ2VfZGVzY19wb29sX2Rlc3Ryb3koc3RydWN0IGludGVsX2d1 YyAqZ3VjKQo+ICAgc3RhdGljIHZvaWQgZ3VjX3N0YWdlX2Rlc2NfaW5pdChzdHJ1Y3QgaW50ZWxf Z3VjX2NsaWVudCAqY2xpZW50KQo+ICAgewo+ICAgCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9IGNs aWVudC0+Z3VjOwo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZ3VjX3Rv X2k5MTUoZ3VjKTsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAgIAlzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4ID0gY2xpZW50LT5vd25lcjsKPiArCXN0cnVjdCBpOTE1 X2dlbV9lbmdpbmVzX2l0ZXIgaXQ7Cj4gICAJc3RydWN0IGd1Y19zdGFnZV9kZXNjICpkZXNjOwo+ IC0JdW5zaWduZWQgaW50IHRtcDsKPiAgIAl1MzIgZ2Z4X2FkZHI7Cj4gICAKPiAgIAlkZXNjID0g X19nZXRfc3RhZ2VfZGVzYyhjbGllbnQpOwo+IEBAIC0zODIsMTAgKzM4MCwxMiBAQCBzdGF0aWMg dm9pZCBndWNfc3RhZ2VfZGVzY19pbml0KHN0cnVjdCBpbnRlbF9ndWNfY2xpZW50ICpjbGllbnQp Cj4gICAJZGVzYy0+cHJpb3JpdHkgPSBjbGllbnQtPnByaW9yaXR5Owo+ICAgCWRlc2MtPmRiX2lk ID0gY2xpZW50LT5kb29yYmVsbF9pZDsKPiAgIAo+IC0JZm9yX2VhY2hfZW5naW5lX21hc2tlZChl bmdpbmUsIGRldl9wcml2LCBjbGllbnQtPmVuZ2luZXMsIHRtcCkgewo+IC0JCXN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSA9IGludGVsX2NvbnRleHRfbG9va3VwKGN0eCwgZW5naW5lKTsKPiAtCQl1 MzIgZ3VjX2VuZ2luZV9pZCA9IGVuZ2luZS0+Z3VjX2lkOwo+IC0JCXN0cnVjdCBndWNfZXhlY2xp c3RfY29udGV4dCAqbHJjID0gJmRlc2MtPmxyY1tndWNfZW5naW5lX2lkXTsKPiArCWZvcl9lYWNo X2dlbV9lbmdpbmUoaXQsIGk5MTVfZ2VtX2NvbnRleHRfbG9ja19lbmdpbmVzKGN0eCkpIHsKPiAr CQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBpdC5jb250ZXh0Owo+ICsJCXN0cnVjdCBndWNf ZXhlY2xpc3RfY29udGV4dCAqbHJjOwo+ICsKPiArCQlpZiAoIShjZS0+ZW5naW5lLT5tYXNrICYg Y2xpZW50LT5lbmdpbmVzKSkKPiArCQkJY29udGludWU7Cj4gICAKPiAgIAkJLyogVE9ETzogV2Ug aGF2ZSBhIGRlc2lnbiBpc3N1ZSB0byBiZSBzb2x2ZWQgaGVyZS4gT25seSB3aGVuIHdlCj4gICAJ CSAqIHJlY2VpdmUgdGhlIGZpcnN0IGJhdGNoLCB3ZSBrbm93IHdoaWNoIGVuZ2luZSBpcyB1c2Vk IGJ5IHRoZQo+IEBAIC0zOTQsNyArMzk0LDcgQEAgc3RhdGljIHZvaWQgZ3VjX3N0YWdlX2Rlc2Nf aW5pdChzdHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50KQo+ICAgCQkgKiBmb3Igbm93IHdo byBvd25zIGEgR3VDIGNsaWVudC4gQnV0IGZvciBmdXR1cmUgb3duZXIgb2YgR3VDCj4gICAJCSAq IGNsaWVudCwgbmVlZCB0byBtYWtlIHN1cmUgbHJjIGlzIHBpbm5lZCBwcmlvciB0byBlbnRlciBo ZXJlLgo+ICAgCQkgKi8KPiAtCQlpZiAoIWNlIHx8ICFjZS0+c3RhdGUpCj4gKwkJaWYgKCFjZS0+ c3RhdGUpCj4gICAJCQlicmVhazsJLyogWFhYOiBjb250aW51ZT8gKi8KPiAgIAo+ICAgCQkvKgo+ IEBAIC00MDQsNiArNDA0LDcgQEAgc3RhdGljIHZvaWQgZ3VjX3N0YWdlX2Rlc2NfaW5pdChzdHJ1 Y3QgaW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50KQo+ICAgCQkgKiBJbnN0ZWFkLCB0aGUgR3VDIHVz ZXMgdGhlIExSQ0Egb2YgdGhlIHVzZXIgbW9kZSBjb250ZXh0IChzZWUKPiAgIAkJICogZ3VjX2Fk ZF9yZXF1ZXN0IGJlbG93KS4KPiAgIAkJICovCj4gKwkJbHJjID0gJmRlc2MtPmxyY1tjZS0+ZW5n aW5lLT5ndWNfaWRdOwo+ICAgCQlscmMtPmNvbnRleHRfZGVzYyA9IGxvd2VyXzMyX2JpdHMoY2Ut PmxyY19kZXNjKTsKPiAgIAo+ICAgCQkvKiBUaGUgc3RhdGUgcGFnZSBpcyBhZnRlciBQUEhXU1Ag Ki8KPiBAQCAtNDE0LDE1ICs0MTUsMTYgQEAgc3RhdGljIHZvaWQgZ3VjX3N0YWdlX2Rlc2NfaW5p dChzdHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50KQo+ICAgCQkgKiBoZXJlLiBJbiBwcm94 eSBzdWJtaXNzaW9uLCBpdCB3YW50cyB0aGUgc3RhZ2UgaWQKPiAgIAkJICovCj4gICAJCWxyYy0+ Y29udGV4dF9pZCA9IChjbGllbnQtPnN0YWdlX2lkIDw8IEdVQ19FTENfQ1RYSURfT0ZGU0VUKSB8 Cj4gLQkJCQkoZ3VjX2VuZ2luZV9pZCA8PCBHVUNfRUxDX0VOR0lORV9PRkZTRVQpOwo+ICsJCQkJ KGNlLT5lbmdpbmUtPmd1Y19pZCA8PCBHVUNfRUxDX0VOR0lORV9PRkZTRVQpOwo+ICAgCj4gICAJ CWxyYy0+cmluZ19iZWdpbiA9IGludGVsX2d1Y19nZ3R0X29mZnNldChndWMsIGNlLT5yaW5nLT52 bWEpOwo+ICAgCQlscmMtPnJpbmdfZW5kID0gbHJjLT5yaW5nX2JlZ2luICsgY2UtPnJpbmctPnNp emUgLSAxOwo+ICAgCQlscmMtPnJpbmdfbmV4dF9mcmVlX2xvY2F0aW9uID0gbHJjLT5yaW5nX2Jl Z2luOwo+ICAgCQlscmMtPnJpbmdfY3VycmVudF90YWlsX3BvaW50ZXJfdmFsdWUgPSAwOwo+ICAg Cj4gLQkJZGVzYy0+ZW5naW5lc191c2VkIHw9ICgxIDw8IGd1Y19lbmdpbmVfaWQpOwo+ICsJCWRl c2MtPmVuZ2luZXNfdXNlZCB8PSBCSVQoY2UtPmVuZ2luZS0+Z3VjX2lkKTsKPiAgIAl9Cj4gKwlp OTE1X2dlbV9jb250ZXh0X3VubG9ja19lbmdpbmVzKGN0eCk7Cj4gICAKPiAgIAlEUk1fREVCVUdf RFJJVkVSKCJIb3N0IGVuZ2luZXMgMHgleCA9PiBHdUMgZW5naW5lcyB1c2VkIDB4JXhcbiIsCj4g ICAJCQkgY2xpZW50LT5lbmdpbmVzLCBkZXNjLT5lbmdpbmVzX3VzZWQpOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYwo+IGluZGV4IDIx NGQxZmQyZjRkYy4uN2ZkMjI0YTRjYTRjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCj4gQEAgLTEwOTQsNyArMTA5NCw3IEBA IF9faWd0X2N0eF9zc2V1KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgCj4gICAJ d2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICAgCj4gLQljZSA9IGludGVs X2NvbnRleHRfaW5zdGFuY2UoY3R4LCBpOTE1LT5lbmdpbmVbUkNTMF0pOwo+ICsJY2UgPSBpOTE1 X2dlbV9jb250ZXh0X2dldF9lbmdpbmUoY3R4LCBSQ1MwKTsKPiAgIAlpZiAoSVNfRVJSKGNlKSkg ewo+ICAgCQlyZXQgPSBQVFJfRVJSKGNlKTsKPiAgIAkJZ290byBvdXRfcnBtOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMKPiBpbmRleCAwNDI2MDkz YmYxZDkuLjcxYzc1MDY5MzU4NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvbW9ja19jb250ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxm dGVzdHMvbW9ja19jb250ZXh0LmMKPiBAQCAtMzAsNiArMzAsNyBAQCBtb2NrX2NvbnRleHQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAJICAgICBjb25zdCBjaGFyICpuYW1lKQo+ ICAgewo+ICAgCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4gKwlzdHJ1Y3QgaTkxNV9n ZW1fZW5naW5lcyAqZTsKPiAgIAlpbnQgcmV0Owo+ICAgCj4gICAJY3R4ID0ga3phbGxvYyhzaXpl b2YoKmN0eCksIEdGUF9LRVJORUwpOwo+IEBAIC00MCw4ICs0MSwxMSBAQCBtb2NrX2NvbnRleHQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAJSU5JVF9MSVNUX0hFQUQoJmN0eC0+ bGluayk7Cj4gICAJY3R4LT5pOTE1ID0gaTkxNTsKPiAgIAo+IC0JY3R4LT5od19jb250ZXh0cyA9 IFJCX1JPT1Q7Cj4gLQlzcGluX2xvY2tfaW5pdCgmY3R4LT5od19jb250ZXh0c19sb2NrKTsKPiAr CW11dGV4X2luaXQoJmN0eC0+ZW5naW5lc19tdXRleCk7Cj4gKwllID0gZGVmYXVsdF9lbmdpbmVz KGN0eCk7Cj4gKwlpZiAoSVNfRVJSKGUpKQo+ICsJCWdvdG8gZXJyX2ZyZWU7Cj4gKwlSQ1VfSU5J VF9QT0lOVEVSKGN0eC0+ZW5naW5lcywgZSk7Cj4gICAKPiAgIAlJTklUX1JBRElYX1RSRUUoJmN0 eC0+aGFuZGxlc192bWEsIEdGUF9LRVJORUwpOwo+ICAgCUlOSVRfTElTVF9IRUFEKCZjdHgtPmhh bmRsZXNfbGlzdCk7Cj4gQEAgLTUxLDcgKzU1LDcgQEAgbW9ja19jb250ZXh0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LAo+ICAgCj4gICAJcmV0ID0gaTkxNV9nZW1fY29udGV4dF9waW5f aHdfaWQoY3R4KTsKPiAgIAlpZiAocmV0IDwgMCkKPiAtCQlnb3RvIGVycl9oYW5kbGVzOwo+ICsJ CWdvdG8gZXJyX2VuZ2luZXM7Cj4gICAKPiAgIAlpZiAobmFtZSkgewo+ICAgCQlzdHJ1Y3QgaTkx NV9od19wcGd0dCAqcHBndHQ7Cj4gQEAgLTY5LDcgKzczLDkgQEAgbW9ja19jb250ZXh0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgCj4gICAJcmV0dXJuIGN0eDsKPiAgIAo+IC1l cnJfaGFuZGxlczoKPiArZXJyX2VuZ2luZXM6Cj4gKwlmcmVlX2VuZ2luZXMocmN1X2FjY2Vzc19w b2ludGVyKGN0eC0+ZW5naW5lcykpOwo+ICtlcnJfZnJlZToKPiAgIAlrZnJlZShjdHgpOwo+ICAg CXJldHVybiBOVUxMOwo+ICAgCj4gCgpSZXZpZXdlZC1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRr by51cnN1bGluQGludGVsLmNvbT4KClJlZ2FyZHMsCgpUdnJ0a28KX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4