From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 17/50] drm/i915: Switch back to an array of logical per-engine HW contexts Date: Fri, 12 Apr 2019 14:31:31 +0100 Message-ID: References: <20190412085410.10392-1-chris@chris-wilson.co.uk> <20190412085410.10392-18-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 mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8637C8999C for ; Fri, 12 Apr 2019 13:31:35 +0000 (UTC) In-Reply-To: <20190412085410.10392-18-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 Ck9uIDEyLzA0LzIwMTkgMDk6NTMsIENocmlzIFdpbHNvbiB3cm90ZToKPiBXZSBzd2l0Y2hlZCB0 byBhIHRyZWUgb2YgcGVyLWVuZ2luZSBIVyBjb250ZXh0IHRvIGFjY29tbW9kYXRlIHRoZQo+IGlu dHJvZHVjdGlvbiBvZiB2aXJ0dWFsIGVuZ2luZXMuIEhvd2V2ZXIsIHdlIHBsYW4gdG8gYWxzbyBz dXBwb3J0Cj4gbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGVuZ2luZSB3aXRoaW4gdGhl IEdFTSBjb250ZXh0LCBkZWZlYXRpbmcKPiBvdXIgdXNlIG9mIHRoZSBlbmdpbmUgYXMgYSBrZXkg dG8gbG9va2luZyB1cCB0aGUgSFcgY29udGV4dC4gSnVzdAo+IGFsbG9jYXRlIGEgbG9naWNhbCBw ZXItZW5naW5lIGluc3RhbmNlIGFuZCBhbHdheXMgdXNlIGFuIGluZGV4IGludG8gdGhlCj4gY3R4 LT5lbmdpbmVzW10uIExhdGVyIG9uLCB0aGlzIGN0eC0+ZW5naW5lc1tdIG1heSBiZSByZXBsYWNl ZCBieSBhIHVzZXIKPiBzcGVjaWZpZWQgbWFwLgo+IAo+IHYyOiBBZGQgZm9yX2VhY2hfZ2VtX2Vu Z2luZSgpIGhlbHBlciB0byBpdGVyYXRvciB3aXRoaW4gdGhlIGVuZ2luZXMgbG9jawo+IHYzOiBp bnRlbF9jb250ZXh0X2NyZWF0ZV9yZXF1ZXN0KCkgaGVscGVyCj4gdjQ6IHMvdW5zaWduZWQgbG9u Zy91bnNpZ25lZCBpbnQvIDQgYmlsbGlvbiBlbmdpbmVzIGlzIHF1aXRlIGVub3VnaC4KPiAKPiBT aWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiAt LS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuYyAgICAgICB8IDEx MiArKystLS0tLS0tLS0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250 ZXh0LmggICAgICAgfCAgMjcgKy0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf Y29udGV4dF90eXBlcy5oIHwgICAyIC0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2VuZ2luZV9jcy5jICAgICB8ICAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvbW9j a19lbmdpbmUuYyAgICAgICAgIHwgICAzICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQv c2NoZWR1bGVyLmMgICAgICAgICAgfCAgIDIgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMgICAgICAgICAgICAgICB8ICAyNCArKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9jb250ZXh0LmMgICAgICAgfCAxMjQgKysrKysrKysrKysrKysrKy0tCj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmggICAgICAgfCAgNTEgKysrKysr Kwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dF90eXBlcy5oIHwgIDMz ICsrKystCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgICAg fCAgNzAgKysrKystLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgICAg ICAgICAgICAgIHwgIDc2ICsrKysrKy0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlcXVlc3QuYyAgICAgICAgICAgfCAgMTUgKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9ndWNfc3VibWlzc2lvbi5jICAgfCAgMjMgKystLQo+ICAgLi4uL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jIHwgICAyICstCj4gICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMgfCAgMTQgKy0KPiAgIDE2IGZpbGVzIGNoYW5n ZWQsIDMzOCBpbnNlcnRpb25zKCspLCAyNDIgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2NvbnRleHQuYwo+IGluZGV4IDE1YWM5OWM1ZGQ0YS4uNWU1MDZlNjQ4 NDU0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuYwo+IEBAIC0x Nyw3ICsxNyw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9nbG9iYWxfY29udGV4dCB7Cj4gICAJc3Ry dWN0IGttZW1fY2FjaGUgKnNsYWJfY2U7Cj4gICB9IGdsb2JhbDsKPiAgIAo+IC1zdHJ1Y3QgaW50 ZWxfY29udGV4dCAqaW50ZWxfY29udGV4dF9hbGxvYyh2b2lkKQo+ICtzdGF0aWMgc3RydWN0IGlu dGVsX2NvbnRleHQgKmludGVsX2NvbnRleHRfYWxsb2Modm9pZCkKPiAgIHsKPiAgIAlyZXR1cm4g a21lbV9jYWNoZV96YWxsb2MoZ2xvYmFsLnNsYWJfY2UsIEdGUF9LRVJORUwpOwo+ICAgfQo+IEBA IC0yOCwxMDQgKzI4LDE3IEBAIHZvaWQgaW50ZWxfY29udGV4dF9mcmVlKHN0cnVjdCBpbnRlbF9j b250ZXh0ICpjZSkKPiAgIH0KPiAgIAo+ICAgc3RydWN0IGludGVsX2NvbnRleHQgKgo+IC1pbnRl bF9jb250ZXh0X2xvb2t1cChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICtpbnRlbF9j b250ZXh0X2NyZWF0ZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAgCQkgICAgIHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAtCXN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZSA9IE5VTEw7Cj4gLQlzdHJ1Y3QgcmJfbm9kZSAqcDsKPiAtCj4gLQlzcGluX2xvY2so JmN0eC0+aHdfY29udGV4dHNfbG9jayk7Cj4gLQlwID0gY3R4LT5od19jb250ZXh0cy5yYl9ub2Rl Owo+IC0Jd2hpbGUgKHApIHsKPiAtCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqdGhpcyA9Cj4gLQkJ CXJiX2VudHJ5KHAsIHN0cnVjdCBpbnRlbF9jb250ZXh0LCBub2RlKTsKPiAtCj4gLQkJaWYgKHRo aXMtPmVuZ2luZSA9PSBlbmdpbmUpIHsKPiAtCQkJR0VNX0JVR19PTih0aGlzLT5nZW1fY29udGV4 dCAhPSBjdHgpOwo+IC0JCQljZSA9IHRoaXM7Cj4gLQkJCWJyZWFrOwo+IC0JCX0KPiAtCj4gLQkJ aWYgKHRoaXMtPmVuZ2luZSA8IGVuZ2luZSkKPiAtCQkJcCA9IHAtPnJiX3JpZ2h0Owo+IC0JCWVs c2UKPiAtCQkJcCA9IHAtPnJiX2xlZnQ7Cj4gLQl9Cj4gLQlzcGluX3VubG9jaygmY3R4LT5od19j b250ZXh0c19sb2NrKTsKPiAtCj4gLQlyZXR1cm4gY2U7Cj4gLX0KPiAtCj4gLXN0cnVjdCBpbnRl bF9jb250ZXh0ICoKPiAtX19pbnRlbF9jb250ZXh0X2luc2VydChzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCAqY3R4LAo+IC0JCSAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4g LQkJICAgICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKPiAtewo+IC0Jc3RydWN0IHJiX25v ZGUgKipwLCAqcGFyZW50Owo+IC0JaW50IGVyciA9IDA7Cj4gLQo+IC0Jc3Bpbl9sb2NrKCZjdHgt Pmh3X2NvbnRleHRzX2xvY2spOwo+IC0KPiAtCXBhcmVudCA9IE5VTEw7Cj4gLQlwID0gJmN0eC0+ aHdfY29udGV4dHMucmJfbm9kZTsKPiAtCXdoaWxlICgqcCkgewo+IC0JCXN0cnVjdCBpbnRlbF9j b250ZXh0ICp0aGlzOwo+IC0KPiAtCQlwYXJlbnQgPSAqcDsKPiAtCQl0aGlzID0gcmJfZW50cnko cGFyZW50LCBzdHJ1Y3QgaW50ZWxfY29udGV4dCwgbm9kZSk7Cj4gLQo+IC0JCWlmICh0aGlzLT5l bmdpbmUgPT0gZW5naW5lKSB7Cj4gLQkJCWVyciA9IC1FRVhJU1Q7Cj4gLQkJCWNlID0gdGhpczsK PiAtCQkJYnJlYWs7Cj4gLQkJfQo+IC0KPiAtCQlpZiAodGhpcy0+ZW5naW5lIDwgZW5naW5lKQo+ IC0JCQlwID0gJnBhcmVudC0+cmJfcmlnaHQ7Cj4gLQkJZWxzZQo+IC0JCQlwID0gJnBhcmVudC0+ cmJfbGVmdDsKPiAtCX0KPiAtCWlmICghZXJyKSB7Cj4gLQkJcmJfbGlua19ub2RlKCZjZS0+bm9k ZSwgcGFyZW50LCBwKTsKPiAtCQlyYl9pbnNlcnRfY29sb3IoJmNlLT5ub2RlLCAmY3R4LT5od19j b250ZXh0cyk7Cj4gLQl9Cj4gLQo+IC0Jc3Bpbl91bmxvY2soJmN0eC0+aHdfY29udGV4dHNfbG9j ayk7Cj4gLQo+IC0JcmV0dXJuIGNlOwo+IC19Cj4gLQo+IC12b2lkIF9faW50ZWxfY29udGV4dF9y ZW1vdmUoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQo+IC17Cj4gLQlzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCAqY3R4ID0gY2UtPmdlbV9jb250ZXh0Owo+IC0KPiAtCXNwaW5fbG9jaygmY3R4LT5o d19jb250ZXh0c19sb2NrKTsKPiAtCXJiX2VyYXNlKCZjZS0+bm9kZSwgJmN0eC0+aHdfY29udGV4 dHMpOwo+IC0Jc3Bpbl91bmxvY2soJmN0eC0+aHdfY29udGV4dHNfbG9jayk7Cj4gLX0KPiAtCj4g LXN0cnVjdCBpbnRlbF9jb250ZXh0ICoKPiAtaW50ZWxfY29udGV4dF9pbnN0YW5jZShzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4LAo+IC0JCSAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCj4gLXsKPiAtCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwgKnBvczsKPiAtCj4g LQljZSA9IGludGVsX2NvbnRleHRfbG9va3VwKGN0eCwgZW5naW5lKTsKPiAtCWlmIChsaWtlbHko Y2UpKQo+IC0JCXJldHVybiBpbnRlbF9jb250ZXh0X2dldChjZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxf Y29udGV4dCAqY2U7Cj4gICAKPiAgIAljZSA9IGludGVsX2NvbnRleHRfYWxsb2MoKTsKPiAgIAlp ZiAoIWNlKQo+ICAgCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAgIAo+ICAgCWludGVsX2Nv bnRleHRfaW5pdChjZSwgY3R4LCBlbmdpbmUpOwo+IC0KPiAtCXBvcyA9IF9faW50ZWxfY29udGV4 dF9pbnNlcnQoY3R4LCBlbmdpbmUsIGNlKTsKPiAtCWlmICh1bmxpa2VseShwb3MgIT0gY2UpKSAv KiBCZWF0ZW4hIFVzZSB0aGVpciBIVyBjb250ZXh0IGluc3RlYWQgKi8KPiAtCQlpbnRlbF9jb250 ZXh0X2ZyZWUoY2UpOwo+IC0KPiAtCUdFTV9CVUdfT04oaW50ZWxfY29udGV4dF9sb29rdXAoY3R4 LCBlbmdpbmUpICE9IHBvcyk7Cj4gLQlyZXR1cm4gaW50ZWxfY29udGV4dF9nZXQocG9zKTsKPiAr CXJldHVybiBjZTsKPiAgIH0KPiAgIAo+ICAgaW50IF9faW50ZWxfY29udGV4dF9kb19waW4oc3Ry dWN0IGludGVsX2NvbnRleHQgKmNlKQo+IEBAIC0yMDQsNiArMTE3LDggQEAgaW50ZWxfY29udGV4 dF9pbml0KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKPiAgIAkJICAgc3RydWN0IGk5MTVfZ2Vt X2NvbnRleHQgKmN0eCwKPiAgIAkJICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ ICAgewo+ICsJR0VNX0JVR19PTighZW5naW5lLT5jb3BzKTsKPiArCj4gICAJa3JlZl9pbml0KCZj ZS0+cmVmKTsKPiAgIAo+ICAgCWNlLT5nZW1fY29udGV4dCA9IGN0eDsKPiBAQCAtMjU0LDMgKzE2 OSwxOCBAQCB2b2lkIGludGVsX2NvbnRleHRfZXhpdF9lbmdpbmUoc3RydWN0IGludGVsX2NvbnRl eHQgKmNlKQo+ICAgewo+ICAgCWludGVsX2VuZ2luZV9wbV9wdXQoY2UtPmVuZ2luZSk7Cj4gICB9 Cj4gKwo+ICtzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICppbnRlbF9jb250ZXh0X2NyZWF0ZV9yZXF1ZXN0 KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKPiArewo+ICsJc3RydWN0IGk5MTVfcmVxdWVzdCAq cnE7Cj4gKwlpbnQgZXJyOwo+ICsKPiArCWVyciA9IGludGVsX2NvbnRleHRfcGluKGNlKTsKPiAr CWlmICh1bmxpa2VseShlcnIpKQo+ICsJCXJldHVybiBFUlJfUFRSKGVycik7Cj4gKwo+ICsJcnEg PSBpOTE1X3JlcXVlc3RfY3JlYXRlKGNlKTsKPiArCWludGVsX2NvbnRleHRfdW5waW4oY2UpOwo+ ICsKPiArCXJldHVybiBycTsKPiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9jb250ZXh0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250 ZXh0LmgKPiBpbmRleCBiNzQ2YWRkNmI3MWQuLjYzMzkyYzg4Y2Q5OCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmgKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmgKPiBAQCAtMTIsMjQgKzEyLDE2IEBACj4gICAj aW5jbHVkZSAiaW50ZWxfY29udGV4dF90eXBlcy5oIgo+ICAgI2luY2x1ZGUgImludGVsX2VuZ2lu ZV90eXBlcy5oIgo+ICAgCj4gLXN0cnVjdCBpbnRlbF9jb250ZXh0ICppbnRlbF9jb250ZXh0X2Fs bG9jKHZvaWQpOwo+IC12b2lkIGludGVsX2NvbnRleHRfZnJlZShzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqY2UpOwo+IC0KPiAgIHZvaWQgaW50ZWxfY29udGV4dF9pbml0KHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZSwKPiAgIAkJCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gICAJCQlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+ICAgCj4gLS8qKgo+IC0gKiBpbnRlbF9jb250 ZXh0X2xvb2t1cCAtIEZpbmQgdGhlIG1hdGNoaW5nIEhXIGNvbnRleHQgZm9yIHRoaXMgKGN0eCwg ZW5naW5lKQo+IC0gKiBAY3R4IC0gdGhlIHBhcmVudCBHRU0gY29udGV4dAo+IC0gKiBAZW5naW5l IC0gdGhlIHRhcmdldCBIVyBlbmdpbmUKPiAtICoKPiAtICogTWF5IHJldHVybiBOVUxMIGlmIHRo ZSBIVyBjb250ZXh0IGhhc24ndCBiZWVuIGluc3RhbnRpYXRlZCAoaS5lLiB1bnVzZWQpLgo+IC0g Ki8KPiAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICoKPiAtaW50ZWxfY29udGV4dF9sb29rdXAoc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAraW50ZWxfY29udGV4dF9jcmVhdGUoc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAgIAkJICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpOwo+ICAgCj4gK3ZvaWQgaW50ZWxfY29udGV4dF9mcmVlKHN0cnVjdCBpbnRlbF9j b250ZXh0ICpjZSk7Cj4gKwo+ICAgLyoqCj4gICAgKiBpbnRlbF9jb250ZXh0X2xvY2tfcGlubmVk IC0gU3RhYmxpc2VzIHRoZSAncGlubmVkJyBzdGF0dXMgb2YgdGhlIEhXIGNvbnRleHQKPiAgICAq IEBjZSAtIHRoZSBjb250ZXh0Cj4gQEAgLTcxLDE3ICs2Myw2IEBAIHN0YXRpYyBpbmxpbmUgdm9p ZCBpbnRlbF9jb250ZXh0X3VubG9ja19waW5uZWQoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQo+ ICAgCW11dGV4X3VubG9jaygmY2UtPnBpbl9tdXRleCk7Cj4gICB9Cj4gICAKPiAtc3RydWN0IGlu dGVsX2NvbnRleHQgKgo+IC1fX2ludGVsX2NvbnRleHRfaW5zZXJ0KHN0cnVjdCBpOTE1X2dlbV9j b250ZXh0ICpjdHgsCj4gLQkJICAgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwK PiAtCQkgICAgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmNlKTsKPiAtdm9pZAo+IC1fX2ludGVs X2NvbnRleHRfcmVtb3ZlKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSk7Cj4gLQo+IC1zdHJ1Y3Qg aW50ZWxfY29udGV4dCAqCj4gLWludGVsX2NvbnRleHRfaW5zdGFuY2Uoc3RydWN0IGk5MTVfZ2Vt X2NvbnRleHQgKmN0eCwKPiAtCQkgICAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KTsKPiAtCj4gICBpbnQgX19pbnRlbF9jb250ZXh0X2RvX3BpbihzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqY2UpOwo+ICAgCj4gICBzdGF0aWMgaW5saW5lIGludCBpbnRlbF9jb250ZXh0X3BpbihzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqY2UpCj4gQEAgLTE0NCw0ICsxMjUsNiBAQCBzdGF0aWMgaW5saW5l IHZvaWQgaW50ZWxfY29udGV4dF90aW1lbGluZV91bmxvY2soc3RydWN0IGludGVsX2NvbnRleHQg KmNlKQo+ICAgCW11dGV4X3VubG9jaygmY2UtPnJpbmctPnRpbWVsaW5lLT5tdXRleCk7Cj4gICB9 Cj4gICAKPiArc3RydWN0IGk5MTVfcmVxdWVzdCAqaW50ZWxfY29udGV4dF9jcmVhdGVfcmVxdWVz dChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpOwo+ICsKPiAgICNlbmRpZiAvKiBfX0lOVEVMX0NP TlRFWFRfSF9fICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2NvbnRleHRfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHRf dHlwZXMuaAo+IGluZGV4IGYwMmQyNzczNGUzYi4uMzU3OWMyNzA4MzIxIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHRfdHlwZXMuaAo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHRfdHlwZXMuaAo+IEBAIC0xMCw3ICsx MCw2IEBACj4gICAjaW5jbHVkZSA8bGludXgva3JlZi5oPgo+ICAgI2luY2x1ZGUgPGxpbnV4L2xp c3QuaD4KPiAgICNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgo+IC0jaW5jbHVkZSA8bGludXgvcmJ0 cmVlLmg+Cj4gICAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KPiAgIAo+ICAgI2luY2x1ZGUgImk5 MTVfYWN0aXZlX3R5cGVzLmgiCj4gQEAgLTYxLDcgKzYwLDYgQEAgc3RydWN0IGludGVsX2NvbnRl eHQgewo+ICAgCXN0cnVjdCBpOTE1X2FjdGl2ZV9yZXF1ZXN0IGFjdGl2ZV90cmFja2VyOwo+ICAg Cj4gICAJY29uc3Qgc3RydWN0IGludGVsX2NvbnRleHRfb3BzICpvcHM7Cj4gLQlzdHJ1Y3QgcmJf bm9kZSBub2RlOwo+ICAgCj4gICAJLyoqIHNzZXU6IENvbnRyb2wgZXUvc2xpY2UgcGFydGl0aW9u aW5nICovCj4gICAJc3RydWN0IGludGVsX3NzZXUgc3NldTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9lbmdpbmVfY3MuYwo+IGluZGV4IDZjYjkwMTM3YjJmYS4uMmExYzQzOGJmMGFk IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKPiBAQCAt NzE2LDcgKzcxNiw3IEBAIHN0YXRpYyBpbnQgcGluX2NvbnRleHQoc3RydWN0IGk5MTVfZ2VtX2Nv bnRleHQgKmN0eCwKPiAgIAlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7Cj4gICAJaW50IGVycjsK PiAgIAo+IC0JY2UgPSBpbnRlbF9jb250ZXh0X2luc3RhbmNlKGN0eCwgZW5naW5lKTsKPiArCWNl ID0gaTkxNV9nZW1fY29udGV4dF9nZXRfZW5naW5lKGN0eCwgZW5naW5lLT5pZCk7Cj4gICAJaWYg KElTX0VSUihjZSkpCj4gICAJCXJldHVybiBQVFJfRVJSKGNlKTsKPiAgIAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvbW9ja19lbmdpbmUuYwo+IGluZGV4IDg1Y2RiZmUxZDk4OS4uMjk0MTkxNmIzN2Jm IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L21vY2tfZW5naW5lLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jCj4gQEAgLTIzLDYgKzIz LDcgQEAKPiAgICAqLwo+ICAgCj4gICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiArI2luY2x1ZGUg Imk5MTVfZ2VtX2NvbnRleHQuaCIKPiAgICNpbmNsdWRlICJpbnRlbF9jb250ZXh0LmgiCj4gICAj aW5jbHVkZSAiaW50ZWxfZW5naW5lX3BtLmgiCj4gICAKPiBAQCAtMjg2LDcgKzI4Nyw3IEBAIGlu dCBtb2NrX2VuZ2luZV9pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlp OTE1X3RpbWVsaW5lX3NldF9zdWJjbGFzcygmZW5naW5lLT50aW1lbGluZSwgVElNRUxJTkVfRU5H SU5FKTsKPiAgIAo+ICAgCWVuZ2luZS0+a2VybmVsX2NvbnRleHQgPQo+IC0JCWludGVsX2NvbnRl eHRfaW5zdGFuY2UoaTkxNS0+a2VybmVsX2NvbnRleHQsIGVuZ2luZSk7Cj4gKwkJaTkxNV9nZW1f Y29udGV4dF9nZXRfZW5naW5lKGk5MTUtPmtlcm5lbF9jb250ZXh0LCBlbmdpbmUtPmlkKTsKPiAg IAlpZiAoSVNfRVJSKGVuZ2luZS0+a2VybmVsX2NvbnRleHQpKQo+ICAgCQlnb3RvIGVycl90aW1l bGluZTsKPiAgIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1 bGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVyLmMKPiBpbmRleCA2MDZm YzI3MTMyNDAuLjhiNjU3NGUxYjQ5NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvc2NoZWR1bGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1 bGVyLmMKPiBAQCAtMTE4OCw3ICsxMTg4LDcgQEAgaW50IGludGVsX3ZncHVfc2V0dXBfc3VibWlz c2lvbihzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSkKPiAgIAkJSU5JVF9MSVNUX0hFQUQoJnMtPndv cmtsb2FkX3FfaGVhZFtpXSk7Cj4gICAJCXMtPnNoYWRvd1tpXSA9IEVSUl9QVFIoLUVJTlZBTCk7 Cj4gICAKPiAtCQljZSA9IGludGVsX2NvbnRleHRfaW5zdGFuY2UoY3R4LCBlbmdpbmUpOwo+ICsJ CWNlID0gaTkxNV9nZW1fY29udGV4dF9nZXRfZW5naW5lKGN0eCwgaSk7Cj4gICAJCWlmIChJU19F UlIoY2UpKSB7Cj4gICAJCQlyZXQgPSBQVFJfRVJSKGNlKTsKPiAgIAkJCWdvdG8gb3V0X3NoYWRv d19jdHg7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggNTAyNjZlODdjMjI1Li44YTAy Nzg2MTgyNzkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBAQCAtNDMxMiw4ICs0MzEy LDkgQEAgaW50IGk5MTVfZ2VtX2luaXRfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICAgCj4gICBzdGF0aWMgaW50IF9faW50ZWxfZW5naW5lc19yZWNvcmRfZGVmYXVsdHMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICB7Cj4gLQlzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCAqY3R4Owo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiArCXN0 cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4gKwlzdHJ1Y3QgaTkxNV9nZW1fZW5naW5lcyAq ZTsKPiAgIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiAgIAlpbnQgZXJyID0gMDsKPiAgIAo+ IEBAIC00MzMwLDE4ICs0MzMxLDIxIEBAIHN0YXRpYyBpbnQgX19pbnRlbF9lbmdpbmVzX3JlY29y ZF9kZWZhdWx0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIAlpZiAoSVNfRVJS KGN0eCkpCj4gICAJCXJldHVybiBQVFJfRVJSKGN0eCk7Cj4gICAKPiArCWUgPSBpOTE1X2dlbV9j b250ZXh0X2VuZ2luZV9saXN0X2xvY2soY3R4KTsKPiArCj4gICAJZm9yX2VhY2hfZW5naW5lKGVu Z2luZSwgaTkxNSwgaWQpIHsKPiArCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBlLT5lbmdp bmVzW2lkXTsKPiAgIAkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4gICAKPiAtCQlycSA9IGk5 MTVfcmVxdWVzdF9hbGxvYyhlbmdpbmUsIGN0eCk7Cj4gKwkJcnEgPSBpbnRlbF9jb250ZXh0X2Ny ZWF0ZV9yZXF1ZXN0KGNlKTsKPiAgIAkJaWYgKElTX0VSUihycSkpIHsKPiAgIAkJCWVyciA9IFBU Ul9FUlIocnEpOwo+IC0JCQlnb3RvIG91dF9jdHg7Cj4gKwkJCWdvdG8gZXJyX2FjdGl2ZTsKCkFy Z2ggb25pb24gd2l0aCBqdW1wcyEKCj4gICAJCX0KPiAgIAo+ICAgCQllcnIgPSAwOwo+IC0JCWlm IChlbmdpbmUtPmluaXRfY29udGV4dCkKPiAtCQkJZXJyID0gZW5naW5lLT5pbml0X2NvbnRleHQo cnEpOwo+ICsJCWlmIChycS0+ZW5naW5lLT5pbml0X2NvbnRleHQpCj4gKwkJCWVyciA9IHJxLT5l bmdpbmUtPmluaXRfY29udGV4dChycSk7Cj4gICAKPiAgIAkJaTkxNV9yZXF1ZXN0X2FkZChycSk7 Cj4gICAJCWlmIChlcnIpCj4gQEAgLTQzNTUsMTUgKzQzNTksMTAgQEAgc3RhdGljIGludCBfX2lu dGVsX2VuZ2luZXNfcmVjb3JkX2RlZmF1bHRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KQo+ICAgCX0KPiAgIAo+ICAgCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7Cj4g LQkJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOwo+IC0JCXN0cnVjdCBpOTE1X3ZtYSAqc3RhdGU7 Cj4gKwkJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gZS0+ZW5naW5lc1tpZF07Cj4gKwkJc3Ry dWN0IGk5MTVfdm1hICpzdGF0ZSA9IGNlLT5zdGF0ZTsKPiAgIAkJdm9pZCAqdmFkZHI7Cj4gICAK PiAtCQljZSA9IGludGVsX2NvbnRleHRfbG9va3VwKGN0eCwgZW5naW5lKTsKPiAtCQlpZiAoIWNl KQo+IC0JCQljb250aW51ZTsKPiAtCj4gLQkJc3RhdGUgPSBjZS0+c3RhdGU7Cj4gICAJCWlmICgh c3RhdGUpCj4gICAJCQljb250aW51ZTsKPiAgIAo+IEBAIC00NDE5LDYgKzQ0MTgsNyBAQCBzdGF0 aWMgaW50IF9faW50ZWxfZW5naW5lc19yZWNvcmRfZGVmYXVsdHMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpCj4gICAJfQo+ICAgCj4gICBvdXRfY3R4Ogo+ICsJaTkxNV9nZW1fY29udGV4 dF9lbmdpbmVfbGlzdF91bmxvY2soY3R4KTsKPiAgIAlpOTE1X2dlbV9jb250ZXh0X3NldF9jbG9z ZWQoY3R4KTsKPiAgIAlpOTE1X2dlbV9jb250ZXh0X3B1dChjdHgpOwo+ICAgCXJldHVybiBlcnI7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+IGluZGV4IDFlMTc3MDA0 N2NjMi4uOTljODlkYzc1MzNlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Nv bnRleHQuYwo+IEBAIC0xNTAsNyArMTUwLDcgQEAgbG9va3VwX3VzZXJfZW5naW5lKHN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpjdHgsIHUxNiBjbGFzcywgdTE2IGluc3RhbmNlKQo+ICAgCWlmICgh ZW5naW5lKQo+ICAgCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKPiAgIAo+IC0JcmV0dXJuIGlu dGVsX2NvbnRleHRfaW5zdGFuY2UoY3R4LCBlbmdpbmUpOwo+ICsJcmV0dXJuIGk5MTVfZ2VtX2Nv bnRleHRfZ2V0X2VuZ2luZShjdHgsIGVuZ2luZS0+aWQpOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMg aW5saW5lIGludCBuZXdfaHdfaWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGdmcF90 IGdmcCkKPiBAQCAtMjQyLDEwICsyNDIsNTEgQEAgc3RhdGljIHZvaWQgcmVsZWFzZV9od19pZChz dHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ICAgCW11dGV4X3VubG9jaygmaTkxNS0+Y29u dGV4dHMubXV0ZXgpOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyB2b2lkIGk5MTVfZ2VtX2NvbnRleHRf ZnJlZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ICtzdGF0aWMgdm9pZCBfX2ZyZWVf ZW5naW5lcyhzdHJ1Y3QgaTkxNV9nZW1fZW5naW5lcyAqZSwgdW5zaWduZWQgaW50IGNvdW50KQo+ ICt7Cj4gKwl3aGlsZSAoY291bnQtLSkgewo+ICsJCWlmICghZS0+ZW5naW5lc1tjb3VudF0pCj4g KwkJCWNvbnRpbnVlOwo+ICsKPiArCQlpbnRlbF9jb250ZXh0X3B1dChlLT5lbmdpbmVzW2NvdW50 XSk7Cj4gKwl9Cj4gKwlrZnJlZShlKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZnJlZV9lbmdp bmVzKHN0cnVjdCBpOTE1X2dlbV9lbmdpbmVzICplKQo+ICt7Cj4gKwlfX2ZyZWVfZW5naW5lcyhl LCBlLT5udW1fZW5naW5lcyk7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgaTkxNV9nZW1fZW5n aW5lcyAqZGVmYXVsdF9lbmdpbmVzKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gICB7 Cj4gLQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqaXQsICpuOwo+ICsJc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lOwo+ICsJc3RydWN0IGk5MTVfZ2VtX2VuZ2luZXMgKmU7Cj4gKwllbnVtIGlu dGVsX2VuZ2luZV9pZCBpZDsKPiAgIAo+ICsJZSA9IGt6YWxsb2Moc3RydWN0X3NpemUoZSwgZW5n aW5lcywgSTkxNV9OVU1fRU5HSU5FUyksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFlKQo+ICsJCXJl dHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ICsKPiArCWUtPmk5MTUgPSBjdHgtPmk5MTU7Cj4gKwlm b3JfZWFjaF9lbmdpbmUoZW5naW5lLCBjdHgtPmk5MTUsIGlkKSB7Cj4gKwkJc3RydWN0IGludGVs X2NvbnRleHQgKmNlOwo+ICsKPiArCQljZSA9IGludGVsX2NvbnRleHRfY3JlYXRlKGN0eCwgZW5n aW5lKTsKPiArCQlpZiAoSVNfRVJSKGNlKSkgewo+ICsJCQlfX2ZyZWVfZW5naW5lcyhlLCBpZCk7 Cj4gKwkJCXJldHVybiBFUlJfQ0FTVChjZSk7Cj4gKwkJfQo+ICsKPiArCQllLT5lbmdpbmVzW2lk XSA9IGNlOwo+ICsJfQo+ICsJZS0+bnVtX2VuZ2luZXMgPSBpZDsKPiArCj4gKwlyZXR1cm4gZTsK PiArfQo+ICsKPiArc3RhdGljIHZvaWQgaTkxNV9nZW1fY29udGV4dF9mcmVlKHN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0ICpjdHgpCj4gK3sKPiAgIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZjdHgtPmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCUdFTV9CVUdfT04oIWk5MTVfZ2VtX2NvbnRleHRf aXNfY2xvc2VkKGN0eCkpOwo+ICAgCUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJmN0eC0+YWN0aXZl X2VuZ2luZXMpKTsKPiBAQCAtMjUzLDggKzI5NCw4IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX2Nv bnRleHRfZnJlZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ICAgCXJlbGVhc2VfaHdf aWQoY3R4KTsKPiAgIAlpOTE1X3BwZ3R0X3B1dChjdHgtPnBwZ3R0KTsKPiAgIAo+IC0JcmJ0cmVl X3Bvc3RvcmRlcl9mb3JfZWFjaF9lbnRyeV9zYWZlKGl0LCBuLCAmY3R4LT5od19jb250ZXh0cywg bm9kZSkKPiAtCQlpbnRlbF9jb250ZXh0X3B1dChpdCk7Cj4gKwlmcmVlX2VuZ2luZXMocmN1X2Fj Y2Vzc19wb2ludGVyKGN0eC0+ZW5naW5lcykpOwo+ICsJbXV0ZXhfZGVzdHJveSgmY3R4LT5lbmdp bmVzX211dGV4KTsKPiAgIAo+ICAgCWlmIChjdHgtPnRpbWVsaW5lKQo+ICAgCQlpOTE1X3RpbWVs aW5lX3B1dChjdHgtPnRpbWVsaW5lKTsKPiBAQCAtMzYzLDYgKzQwNCw4IEBAIHN0YXRpYyBzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqCj4gICBfX2NyZWF0ZV9jb250ZXh0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgIHsKPiAgIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAq Y3R4Owo+ICsJc3RydWN0IGk5MTVfZ2VtX2VuZ2luZXMgKmU7Cj4gKwlpbnQgZXJyOwo+ICAgCWlu dCBpOwo+ICAgCj4gICAJY3R4ID0ga3phbGxvYyhzaXplb2YoKmN0eCksIEdGUF9LRVJORUwpOwo+ IEBAIC0zNzYsOCArNDE5LDEzIEBAIF9fY3JlYXRlX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+ICAgCUlOSVRfTElTVF9IRUFEKCZjdHgtPmFjdGl2ZV9lbmdpbmVz KTsKPiAgIAltdXRleF9pbml0KCZjdHgtPm11dGV4KTsKPiAgIAo+IC0JY3R4LT5od19jb250ZXh0 cyA9IFJCX1JPT1Q7Cj4gLQlzcGluX2xvY2tfaW5pdCgmY3R4LT5od19jb250ZXh0c19sb2NrKTsK PiArCW11dGV4X2luaXQoJmN0eC0+ZW5naW5lc19tdXRleCk7Cj4gKwllID0gZGVmYXVsdF9lbmdp bmVzKGN0eCk7Cj4gKwlpZiAoSVNfRVJSKGUpKSB7Cj4gKwkJZXJyID0gUFRSX0VSUihlKTsKPiAr CQlnb3RvIGVycl9mcmVlOwo+ICsJfQo+ICsJUkNVX0lOSVRfUE9JTlRFUihjdHgtPmVuZ2luZXMs IGUpOwo+ICAgCj4gICAJSU5JVF9SQURJWF9UUkVFKCZjdHgtPmhhbmRsZXNfdm1hLCBHRlBfS0VS TkVMKTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmY3R4LT5oYW5kbGVzX2xpc3QpOwo+IEBAIC0zOTks NiArNDQ3LDEwIEBAIF9fY3JlYXRlX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+ICAgCQljdHgtPmhhbmdfdGltZXN0YW1wW2ldID0gamlmZmllcyAtIENPTlRFWFRf RkFTVF9IQU5HX0pJRkZJRVM7Cj4gICAKPiAgIAlyZXR1cm4gY3R4Owo+ICsKPiArZXJyX2ZyZWU6 Cj4gKwlrZnJlZShjdHgpOwo+ICsJcmV0dXJuIEVSUl9QVFIoZXJyKTsKPiAgIH0KPiAgIAo+ICAg c3RhdGljIHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICoKPiBAQCAtODYyLDcgKzkxNCw3IEBAIHN0YXRp YyBpbnQgY29udGV4dF9iYXJyaWVyX3Rhc2soc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwK PiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGN0eC0+aTkxNTsKPiAg IAlzdHJ1Y3QgY29udGV4dF9iYXJyaWVyX3Rhc2sgKmNiOwo+IC0Jc3RydWN0IGludGVsX2NvbnRl eHQgKmNlLCAqbmV4dDsKPiArCXN0cnVjdCBpOTE1X2dlbV9lbmdpbmVzX2l0ZXIgaXQ7Cj4gICAJ aW50IGVyciA9IDA7Cj4gICAKPiAgIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5kcm0uc3Ry dWN0X211dGV4KTsKPiBAQCAtODc1LDIyICs5MjcsMjcgQEAgc3RhdGljIGludCBjb250ZXh0X2Jh cnJpZXJfdGFzayhzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAgCWk5MTVfYWN0aXZl X2luaXQoaTkxNSwgJmNiLT5iYXNlLCBjYl9yZXRpcmUpOwo+ICAgCWk5MTVfYWN0aXZlX2FjcXVp cmUoJmNiLT5iYXNlKTsKPiAgIAo+IC0JcmJ0cmVlX3Bvc3RvcmRlcl9mb3JfZWFjaF9lbnRyeV9z YWZlKGNlLCBuZXh0LCAmY3R4LT5od19jb250ZXh0cywgbm9kZSkgewo+IC0JCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSA9IGNlLT5lbmdpbmU7Cj4gKwlmb3JfZWFjaF9nZW1fZW5naW5l KGl0LCBjdHgpIHsKPiArCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBpdC5jb250ZXh0Owo+ ICAgCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiAgIAo+IC0JCWlmICghKGVuZ2luZS0+bWFz ayAmIGVuZ2luZXMpKQo+ICsJCWlmICghKGNlLT5lbmdpbmUtPm1hc2sgJiBlbmdpbmVzKSkKPiAr CQkJY29udGludWU7Cj4gKwo+ICsJCWlmICghaW50ZWxfY29udGV4dF9pc19waW5uZWQoY2UpKQo+ ICAgCQkJY29udGludWU7Cj4gICAKPiAgIAkJaWYgKEk5MTVfU0VMRlRFU1RfT05MWShjb250ZXh0 X2JhcnJpZXJfaW5qZWN0X2ZhdWx0ICYKPiAtCQkJCSAgICAgICBlbmdpbmUtPm1hc2spKSB7Cj4g KwkJCQkgICAgICAgY2UtPmVuZ2luZS0+bWFzaykpIHsKPiAgIAkJCWVyciA9IC1FTlhJTzsKPiAr CQkJaTkxNV9nZW1fZW5naW5lc19pdGVyX2ZpbmkoJml0KTsKClRoaXMgd291bGQgYmUgb3VyIG9u bHkgaXRlcmF0b3Igd2hpY2ggbmVlZHMgbWFudWFsIGNsZWFudXAuIEJ1dCBvbmx5IG9uIAphYm9y dCwgbm90IG5vcm1hbCB0ZXJtaW5hdGlvbi4KCldvdWxkIGl0IGJlIGNsZWFuZXIgaWYgZm9yX2Vh Y2hfZ2VtX2VuZ2luZSB0b29rIGVuZ2luZXMgd2hpY2ggdGhlIGNhbGxlciAKd291bGQgcHJldmlv dXNseSBoYXZlIHRvIG9idGFpbiB2aWEgaTkxNV9nZW1fY29udGV4dF9lbmdpbmVfbGlzdF9sb2Nr PyAKQW5kIHRoZSBjYWxsZXIgd291bGQgYWxzbyBiZSBvYnZpb3VzbHkgcmVzcG9uc2libGUgZm9y IHVubG9ja2luZy4KCgo+ICAgCQkJYnJlYWs7Cj4gICAJCX0KPiAgIAo+IC0JCXJxID0gaTkxNV9y ZXF1ZXN0X2FsbG9jKGVuZ2luZSwgY3R4KTsKPiArCQlycSA9IGludGVsX2NvbnRleHRfY3JlYXRl X3JlcXVlc3QoY2UpOwo+ICAgCQlpZiAoSVNfRVJSKHJxKSkgewo+ICAgCQkJZXJyID0gUFRSX0VS UihycSk7Cj4gKwkJCWk5MTVfZ2VtX2VuZ2luZXNfaXRlcl9maW5pKCZpdCk7Cj4gICAJCQlicmVh azsKPiAgIAkJfQo+ICAgCj4gQEAgLTkwMSw4ICs5NTgsMTAgQEAgc3RhdGljIGludCBjb250ZXh0 X2JhcnJpZXJfdGFzayhzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAgCQkJZXJyID0g aTkxNV9hY3RpdmVfcmVmKCZjYi0+YmFzZSwgcnEtPmZlbmNlLmNvbnRleHQsIHJxKTsKPiAgIAo+ ICAgCQlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKPiAtCQlpZiAoZXJyKQo+ICsJCWlmIChlcnIpIHsK PiArCQkJaTkxNV9nZW1fZW5naW5lc19pdGVyX2ZpbmkoJml0KTsKPiAgIAkJCWJyZWFrOwo+ICsJ CX0KPiAgIAl9Cj4gICAKPiAgIAljYi0+dGFzayA9IGVyciA/IE5VTEwgOiB0YXNrOyAvKiBjYWxs ZXIgbmVlZHMgdG8gdW53aW5kIGluc3RlYWQgKi8KPiBAQCAtMTczOSw2ICsxNzk4LDQzIEBAIGlu dCBfX2k5MTVfZ2VtX2NvbnRleHRfcGluX2h3X2lkKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHgpCj4gICAJcmV0dXJuIGVycjsKPiAgIH0KPiAgIAo+ICsvKiBHRU0gY29udGV4dC1lbmdpbmVz IGl0ZXJhdG9yOiBmb3JfZWFjaF9nZW1fZW5naW5lKCkgKi8KPiArYm9vbCBpOTE1X2dlbV9lbmdp bmVzX2l0ZXJfbmV4dChzdHJ1Y3QgaTkxNV9nZW1fZW5naW5lc19pdGVyICppdCkKPiArewo+ICsJ aWYgKCFpdC0+ZW5naW5lcykKPiArCQlnb3RvIGVuZDsKCldoZW4gY2FuIGVuZ2luZXMgYmUgbnVs bD8gU2hvdWxkIGl0IGJlIEdFTV9CVUdfT04gaWYgb255bCB3aGVuIHVzZWQgCm91dHNpZGUgdGhl IGZvcl9lYWNoX2dlbV9lbmdpbmU/Cgo+ICsKPiArCWRvIHsKPiArCQlpZiAoaXQtPmlkeCA+PSBp dC0+ZW5naW5lcy0+bnVtX2VuZ2luZXMpCj4gKwkJCWdvdG8gZW5kOwo+ICsKPiArCQlpdC0+Y29u dGV4dCA9IGl0LT5lbmdpbmVzLT5lbmdpbmVzW2l0LT5pZHgrK107Cj4gKwl9IHdoaWxlICghaXQt PmNvbnRleHQpOwo+ICsKPiArCXJldHVybiB0cnVlOwo+ICsKPiArZW5kOgo+ICsJaTkxNV9nZW1f ZW5naW5lc19pdGVyX2ZpbmkoaXQpOwo+ICsJcmV0dXJuIGZhbHNlOwo+ICt9Cj4gKwo+ICt2b2lk IGk5MTVfZ2VtX2VuZ2luZXNfaXRlcl9pbml0KHN0cnVjdCBpOTE1X2dlbV9lbmdpbmVzX2l0ZXIg Kml0LAo+ICsJCQkJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiArewo+ICsJaXQtPmdl bV9jb250ZXh0ID0gY3R4Owo+ICsJaXQtPmVuZ2luZXMgPSBpOTE1X2dlbV9jb250ZXh0X2VuZ2lu ZV9saXN0X2xvY2soY3R4KTsKPiArCWl0LT5pZHggPSAwOwoKQ2xlYXIgaXQtPmNvbnRleHQganVz dCBpbiBjYXNlPwoKPiArfQo+ICsKPiArdm9pZCBpOTE1X2dlbV9lbmdpbmVzX2l0ZXJfZmluaShz dHJ1Y3QgaTkxNV9nZW1fZW5naW5lc19pdGVyICppdCkKPiArewo+ICsJc3RydWN0IGk5MTVfZ2Vt X2NvbnRleHQgKmN0eDsKPiArCj4gKwljdHggPSBmZXRjaF9hbmRfemVybygmaXQtPmdlbV9jb250 ZXh0KTsKClRoaXMgaXMgaXRlcl9maW5pIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXM/IFdo ZW4gZG9lcyB0aGF0IGNvbWUgdG8gCnBsYXk/IE9oLi4uIHdoZW4gaTkxNV9nZW1fZW5naW5lc19p dGVyX25leHQgd2VudCBwYXN0IHRoZSBhcnJheSBhbmQgdGhlIApsb29wIGRlY2lkZXMgdG8gYmFp bCBvdXQuCgpJZiBpdGVyYXRvciB0b29rIGVuZ2luZXMgYXMgcGFyYW1ldGVyIHRoaXMgY291bGQg YWxzbyBnby4KClJlZ2FyZHMsCgpUdnJ0a28KCgo+ICsJaWYgKGN0eCkKPiArCQlpOTE1X2dlbV9j b250ZXh0X2VuZ2luZV9saXN0X3VubG9jayhjdHgpOwo+ICt9Cj4gKwo+ICAgI2lmIElTX0VOQUJM RUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKQo+ICAgI2luY2x1ZGUgInNlbGZ0ZXN0cy9tb2Nr X2NvbnRleHQuYyIKPiAgICNpbmNsdWRlICJzZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jIgo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmgKPiBpbmRleCA1YThlMDgwNDk5 ZmIuLjI1MjM4Zjc1MDI4NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9jb250ZXh0LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250 ZXh0LmgKPiBAQCAtMTc2LDYgKzE3Niw1NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9nZW1f Y29udGV4dF9wdXQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiAgIAlrcmVmX3B1dCgm Y3R4LT5yZWYsIGk5MTVfZ2VtX2NvbnRleHRfcmVsZWFzZSk7Cj4gICB9Cj4gICAKPiArc3RhdGlj IGlubGluZSBzdHJ1Y3QgaTkxNV9nZW1fZW5naW5lcyAqCj4gK2k5MTVfZ2VtX2NvbnRleHRfZW5n aW5lX2xpc3Qoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiArewo+ICsJcmV0dXJuIHJj dV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoY3R4LT5lbmdpbmVzLAo+ICsJCQkJCSBsb2NrZGVwX2lz X2hlbGQoJmN0eC0+ZW5naW5lc19tdXRleCkpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHN0 cnVjdCBpOTE1X2dlbV9lbmdpbmVzICoKPiAraTkxNV9nZW1fY29udGV4dF9lbmdpbmVfbGlzdF9s b2NrKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gKwlfX2FjcXVpcmVzKCZjdHgtPmVu Z2luZXNfbXV0ZXgpCj4gK3sKPiArCW11dGV4X2xvY2soJmN0eC0+ZW5naW5lc19tdXRleCk7Cj4g KwlyZXR1cm4gaTkxNV9nZW1fY29udGV4dF9lbmdpbmVfbGlzdChjdHgpOwo+ICt9Cj4gKwo+ICtz dGF0aWMgaW5saW5lIHZvaWQKPiAraTkxNV9nZW1fY29udGV4dF9lbmdpbmVfbGlzdF91bmxvY2so c3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiArCV9fcmVsZWFzZXMoJmN0eC0+ZW5naW5l c19tdXRleCkKPiArewo+ICsJbXV0ZXhfdW5sb2NrKCZjdHgtPmVuZ2luZXNfbXV0ZXgpOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBpbnRlbF9jb250ZXh0ICoKPiAraTkxNV9nZW1f Y29udGV4dF9sb29rdXBfZW5naW5lKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsIHVuc2ln bmVkIGludCBpZHgpCj4gK3sKPiArCXJldHVybiBpOTE1X2dlbV9jb250ZXh0X2VuZ2luZV9saXN0 KGN0eCktPmVuZ2luZXNbaWR4XTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgaW50 ZWxfY29udGV4dCAqCj4gK2k5MTVfZ2VtX2NvbnRleHRfZ2V0X2VuZ2luZShzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCAqY3R4LCB1bnNpZ25lZCBpbnQgaWR4KQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxf Y29udGV4dCAqY2UgPSBFUlJfUFRSKC1FSU5WQUwpOwo+ICsKPiArCXJjdV9yZWFkX2xvY2soKTsg ewo+ICsJCXN0cnVjdCBpOTE1X2dlbV9lbmdpbmVzICplID0gcmN1X2RlcmVmZXJlbmNlKGN0eC0+ ZW5naW5lcyk7Cj4gKwkJaWYgKGxpa2VseShpZHggPCBlLT5udW1fZW5naW5lcyAmJiBlLT5lbmdp bmVzW2lkeF0pKQo+ICsJCQljZSA9IGludGVsX2NvbnRleHRfZ2V0KGUtPmVuZ2luZXNbaWR4XSk7 Cj4gKwl9IHJjdV9yZWFkX3VubG9jaygpOwo+ICsKPiArCXJldHVybiBjZTsKPiArfQo+ICsKPiAr I2RlZmluZSBmb3JfZWFjaF9nZW1fZW5naW5lKGl0LCBjdHgpIFwKPiArCWZvciAoaTkxNV9nZW1f ZW5naW5lc19pdGVyX2luaXQoJihpdCksIChjdHgpKTsgXAo+ICsJICAgICBpOTE1X2dlbV9lbmdp bmVzX2l0ZXJfbmV4dCgmKGl0KSk7KQo+ICsKPiArdm9pZCBpOTE1X2dlbV9lbmdpbmVzX2l0ZXJf aW5pdChzdHJ1Y3QgaTkxNV9nZW1fZW5naW5lc19pdGVyICppdCwKPiArCQkJCXN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0ICpjdHgpOwo+ICtib29sIGk5MTVfZ2VtX2VuZ2luZXNfaXRlcl9uZXh0KHN0 cnVjdCBpOTE1X2dlbV9lbmdpbmVzX2l0ZXIgKml0KTsKPiArdm9pZCBpOTE1X2dlbV9lbmdpbmVz X2l0ZXJfZmluaShzdHJ1Y3QgaTkxNV9nZW1fZW5naW5lc19pdGVyICppdCk7Cj4gKwo+ICAgc3Ry dWN0IGk5MTVfbHV0X2hhbmRsZSAqaTkxNV9sdXRfaGFuZGxlX2FsbG9jKHZvaWQpOwo+ICAgdm9p ZCBpOTE1X2x1dF9oYW5kbGVfZnJlZShzdHJ1Y3QgaTkxNV9sdXRfaGFuZGxlICpsdXQpOwo+ICAg Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHRfdHlw ZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHRfdHlwZXMuaAo+IGlu ZGV4IGQyODJhNmFiM2I5Zi4uNWQxNDZiN2I4NGVjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHRfdHlwZXMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2NvbnRleHRfdHlwZXMuaAo+IEBAIC0yOSw2ICsyOSwyMCBAQCBzdHJ1 Y3QgaTkxNV9od19wcGd0dDsKPiAgIHN0cnVjdCBpOTE1X3RpbWVsaW5lOwo+ICAgc3RydWN0IGlu dGVsX3Jpbmc7Cj4gICAKPiArc3RydWN0IGk5MTVfZ2VtX2VuZ2luZXMgewo+ICsJc3RydWN0IHJj dV93b3JrIHJjdTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1Owo+ICsJdW5zaWdu ZWQgaW50IG51bV9lbmdpbmVzOwo+ICsJc3RydWN0IGludGVsX2NvbnRleHQgKmVuZ2luZXNbXTsK PiArfTsKPiArCj4gK3N0cnVjdCBpOTE1X2dlbV9lbmdpbmVzX2l0ZXIgewo+ICsJc3RydWN0IGlu dGVsX2NvbnRleHQgKmNvbnRleHQ7Cj4gKwlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqZ2VtX2Nv bnRleHQ7Cj4gKwlzdHJ1Y3QgaTkxNV9nZW1fZW5naW5lcyAqZW5naW5lczsKPiArCXVuc2lnbmVk IGludCBpZHg7Cj4gK307Cj4gKwo+ICAgLyoqCj4gICAgKiBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4 dCAtIGNsaWVudCBzdGF0ZQo+ICAgICoKPiBAQCAtNDIsNiArNTYsMjEgQEAgc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgewo+ICAgCS8qKiBmaWxlX3ByaXY6IG93bmluZyBmaWxlIGRlc2NyaXB0b3Ig Ki8KPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXY7Cj4gICAKPiAr CS8qKgo+ICsJICogQGVuZ2luZXM6IFVzZXIgZGVmaW5lZCBlbmdpbmVzIGZvciB0aGlzIGNvbnRl eHQKPiArCSAqCj4gKwkgKiBOVUxMIG1lYW5zIHRvIHVzZSBsZWdhY3kgZGVmaW5pdGlvbnMgKGlu Y2x1ZGluZyByYW5kb20gbWVhbmluZyBvZgo+ICsJICogSTkxNV9FWEVDX0JTRCB3aXRoIEk5MTVf RVhFQ19CU0RfU0VMRUNUT1Igb3ZlcnJpZGVzKS4KPiArCSAqCj4gKwkgKiBJZiBkZWZpbmVkLCBl eGVjYnVmIHVzZXMgdGhlIEk5MTVfRVhFQ19NQVNLIGFzIGFuIGluZGV4IGludG8KPiArCSAqIGFy cmF5LCBhbmQgdmFyaW91cyB1QVBJIG90aGVyIHRoZSBhYmlsaXR5IHRvIGxvb2t1cCB1cCBhbgo+ ICsJICogaW5kZXggZnJvbSB0aGlzIGFycmF5IHRvIHNlbGVjdCBhbiBlbmdpbmUgb3BlcmF0ZSBv bi4KPiArCSAqCj4gKwkgKiBVc2VyIGRlZmluZWQgYnkgSTkxNV9DT05URVhUX1BBUkFNX0VOR0lO RS4KPiArCSAqLwo+ICsJc3RydWN0IGk5MTVfZ2VtX2VuZ2luZXMgX19yY3UgKmVuZ2luZXM7Cj4g KwlzdHJ1Y3QgbXV0ZXggZW5naW5lc19tdXRleDsgLyogZ3VhcmRzIHdyaXRlcyB0byBlbmdpbmVz ICovCj4gKwo+ICAgCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZTsKPiAgIAo+ICAgCS8q Kgo+IEBAIC0xMzQsMTAgKzE2Myw2IEBAIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0IHsKPiAgIAo+ ICAgCXN0cnVjdCBpOTE1X3NjaGVkX2F0dHIgc2NoZWQ7Cj4gICAKPiAtCS8qKiBod19jb250ZXh0 czogcGVyLWVuZ2luZSBsb2dpY2FsIEhXIHN0YXRlICovCj4gLQlzdHJ1Y3QgcmJfcm9vdCBod19j b250ZXh0czsKPiAtCXNwaW5sb2NrX3QgaHdfY29udGV4dHNfbG9jazsKPiAtCj4gICAJLyoqIHJp bmdfc2l6ZTogc2l6ZSBmb3IgYWxsb2NhdGluZyB0aGUgcGVyLWVuZ2luZSByaW5nIGJ1ZmZlciAq Lwo+ICAgCXUzMiByaW5nX3NpemU7Cj4gICAJLyoqIGRlc2NfdGVtcGxhdGU6IGludmFyaWFudCBm aWVsZHMgZm9yIHRoZSBIVyBjb250ZXh0IGRlc2NyaXB0b3IgKi8KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gaW5kZXggMTY2YTMzYzBkM2VkLi42NzlmN2Mx NTYxYmEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1 ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5j Cj4gQEAgLTIwNzYsOSArMjA3Niw3IEBAIGdlbjhfZGlzcGF0Y2hfYnNkX2VuZ2luZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJcmV0dXJuIGZpbGVfcHJpdi0+YnNkX2Vu Z2luZTsKPiAgIH0KPiAgIAo+IC0jZGVmaW5lIEk5MTVfVVNFUl9SSU5HUyAoNCkKPiAtCj4gLXN0 YXRpYyBjb25zdCBlbnVtIGludGVsX2VuZ2luZV9pZCB1c2VyX3JpbmdfbWFwW0k5MTVfVVNFUl9S SU5HUyArIDFdID0gewo+ICtzdGF0aWMgY29uc3QgZW51bSBpbnRlbF9lbmdpbmVfaWQgdXNlcl9y aW5nX21hcFtdID0gewo+ICAgCVtJOTE1X0VYRUNfREVGQVVMVF0JPSBSQ1MwLAo+ICAgCVtJOTE1 X0VYRUNfUkVOREVSXQk9IFJDUzAsCj4gICAJW0k5MTVfRVhFQ19CTFRdCQk9IEJDUzAsCj4gQEAg LTIwODYsMTAgKzIwODQsOCBAQCBzdGF0aWMgY29uc3QgZW51bSBpbnRlbF9lbmdpbmVfaWQgdXNl cl9yaW5nX21hcFtJOTE1X1VTRVJfUklOR1MgKyAxXSA9IHsKPiAgIAlbSTkxNV9FWEVDX1ZFQk9Y XQk9IFZFQ1MwCj4gICB9Owo+ICAgCj4gLXN0YXRpYyBpbnQgZWJfcGluX2NvbnRleHQoc3RydWN0 IGk5MTVfZXhlY2J1ZmZlciAqZWIsCj4gLQkJCSAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQo+ICtzdGF0aWMgaW50IGViX3Bpbl9jb250ZXh0KHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIg KmViLCBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCj4gICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfY29u dGV4dCAqY2U7Cj4gICAJaW50IGVycjsKPiAgIAo+ICAgCS8qCj4gQEAgLTIxMDAsMjEgKzIwOTYs MTYgQEAgc3RhdGljIGludCBlYl9waW5fY29udGV4dChzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICpl YiwKPiAgIAlpZiAoZXJyKQo+ICAgCQlyZXR1cm4gZXJyOwo+ICAgCj4gLQljZSA9IGludGVsX2Nv bnRleHRfaW5zdGFuY2UoZWItPmdlbV9jb250ZXh0LCBlbmdpbmUpOwo+IC0JaWYgKElTX0VSUihj ZSkpCj4gLQkJcmV0dXJuIFBUUl9FUlIoY2UpOwo+IC0KPiAgIAkvKgo+ICAgCSAqIFBpbm5pbmcg dGhlIGNvbnRleHRzIG1heSBnZW5lcmF0ZSByZXF1ZXN0cyBpbiBvcmRlciB0byBhY3F1aXJlCj4g ICAJICogR0dUVCBzcGFjZSwgc28gZG8gdGhpcyBmaXJzdCBiZWZvcmUgd2UgcmVzZXJ2ZSBhIHNl cW5vIGZvcgo+ICAgCSAqIG91cnNlbHZlcy4KPiAgIAkgKi8KPiAgIAllcnIgPSBpbnRlbF9jb250 ZXh0X3BpbihjZSk7Cj4gLQlpbnRlbF9jb250ZXh0X3B1dChjZSk7Cj4gICAJaWYgKGVycikKPiAg IAkJcmV0dXJuIGVycjsKPiAgIAo+IC0JZWItPmVuZ2luZSA9IGVuZ2luZTsKPiArCWViLT5lbmdp bmUgPSBjZS0+ZW5naW5lOwo+ICAgCWViLT5jb250ZXh0ID0gY2U7Cj4gICAJcmV0dXJuIDA7Cj4g ICB9Cj4gQEAgLTIxMjQsMjUgKzIxMTUsMTkgQEAgc3RhdGljIHZvaWQgZWJfdW5waW5fY29udGV4 dChzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYikKPiAgIAlpbnRlbF9jb250ZXh0X3VucGluKGVi LT5jb250ZXh0KTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgaW50Cj4gLWViX3NlbGVjdF9lbmdpbmUo c3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCj4gLQkJIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwK PiAtCQkgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiAqYXJncykKPiArc3RhdGljIHVu c2lnbmVkIGludAo+ICtlYl9zZWxlY3RfbGVnYWN5X3Jpbmcoc3RydWN0IGk5MTVfZXhlY2J1ZmZl ciAqZWIsCj4gKwkJICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlLAo+ICsJCSAgICAgIHN0cnVj dCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgKmFyZ3MpCj4gICB7Cj4gICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUgPSBlYi0+aTkxNTsKPiAgIAl1bnNpZ25lZCBpbnQgdXNlcl9yaW5n X2lkID0gYXJncy0+ZmxhZ3MgJiBJOTE1X0VYRUNfUklOR19NQVNLOwo+IC0Jc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lOwo+IC0KPiAtCWlmICh1c2VyX3JpbmdfaWQgPiBJOTE1X1VTRVJf UklOR1MpIHsKPiAtCQlEUk1fREVCVUcoImV4ZWNidWYgd2l0aCB1bmtub3duIHJpbmc6ICV1XG4i LCB1c2VyX3JpbmdfaWQpOwo+IC0JCXJldHVybiAtRUlOVkFMOwo+IC0JfQo+ICAgCj4gLQlpZiAo KHVzZXJfcmluZ19pZCAhPSBJOTE1X0VYRUNfQlNEKSAmJgo+IC0JICAgICgoYXJncy0+ZmxhZ3Mg JiBJOTE1X0VYRUNfQlNEX01BU0spICE9IDApKSB7Cj4gKwlpZiAodXNlcl9yaW5nX2lkICE9IEk5 MTVfRVhFQ19CU0QgJiYKPiArCSAgICAoYXJncy0+ZmxhZ3MgJiBJOTE1X0VYRUNfQlNEX01BU0sp KSB7Cj4gICAJCURSTV9ERUJVRygiZXhlY2J1ZiB3aXRoIG5vbiBic2QgcmluZyBidXQgd2l0aCBp bnZhbGlkICIKPiAgIAkJCSAgImJzZCBkaXNwYXRjaCBmbGFnczogJWRcbiIsIChpbnQpKGFyZ3Mt PmZsYWdzKSk7Cj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwkJcmV0dXJuIC0xOwo+ICAgCX0KPiAg IAo+ICAgCWlmICh1c2VyX3JpbmdfaWQgPT0gSTkxNV9FWEVDX0JTRCAmJiBIQVNfRU5HSU5FKGk5 MTUsIFZDUzEpKSB7Cj4gQEAgLTIxNTcsMjAgKzIxNDIsMzkgQEAgZWJfc2VsZWN0X2VuZ2luZShz dHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwKPiAgIAkJfSBlbHNlIHsKPiAgIAkJCURSTV9ERUJV RygiZXhlY2J1ZiB3aXRoIHVua25vd24gYnNkIHJpbmc6ICV1XG4iLAo+ICAgCQkJCSAgYnNkX2lk eCk7Cj4gLQkJCXJldHVybiAtRUlOVkFMOwo+ICsJCQlyZXR1cm4gLTE7Cj4gICAJCX0KPiAgIAo+ IC0JCWVuZ2luZSA9IGk5MTUtPmVuZ2luZVtfVkNTKGJzZF9pZHgpXTsKPiAtCX0gZWxzZSB7Cj4g LQkJZW5naW5lID0gaTkxNS0+ZW5naW5lW3VzZXJfcmluZ19tYXBbdXNlcl9yaW5nX2lkXV07Cj4g KwkJcmV0dXJuIF9WQ1MoYnNkX2lkeCk7Cj4gICAJfQo+ICAgCj4gLQlpZiAoIWVuZ2luZSkgewo+ IC0JCURSTV9ERUJVRygiZXhlY2J1ZiB3aXRoIGludmFsaWQgcmluZzogJXVcbiIsIHVzZXJfcmlu Z19pZCk7Cj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwlpZiAodXNlcl9yaW5nX2lkID49IEFSUkFZ X1NJWkUodXNlcl9yaW5nX21hcCkpIHsKPiArCQlEUk1fREVCVUcoImV4ZWNidWYgd2l0aCB1bmtu b3duIHJpbmc6ICV1XG4iLCB1c2VyX3JpbmdfaWQpOwo+ICsJCXJldHVybiAtMTsKPiAgIAl9Cj4g ICAKPiAtCXJldHVybiBlYl9waW5fY29udGV4dChlYiwgZW5naW5lKTsKPiArCXJldHVybiB1c2Vy X3JpbmdfbWFwW3VzZXJfcmluZ19pZF07Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQKPiArZWJfc2Vs ZWN0X2VuZ2luZShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwKPiArCQkgc3RydWN0IGRybV9m aWxlICpmaWxlLAo+ICsJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyICphcmdzKQo+ ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7Cj4gKwl1bnNpZ25lZCBpbnQgaWR4Owo+ ICsJaW50IGVycjsKPiArCj4gKwlpZHggPSBlYl9zZWxlY3RfbGVnYWN5X3JpbmcoZWIsIGZpbGUs IGFyZ3MpOwo+ICsKPiArCWNlID0gaTkxNV9nZW1fY29udGV4dF9nZXRfZW5naW5lKGViLT5nZW1f Y29udGV4dCwgaWR4KTsKPiArCWlmIChJU19FUlIoY2UpKQo+ICsJCXJldHVybiBQVFJfRVJSKGNl KTsKPiArCj4gKwllcnIgPSBlYl9waW5fY29udGV4dChlYiwgY2UpOwo+ICsJaW50ZWxfY29udGV4 dF9wdXQoY2UpOwo+ICsKPiArCXJldHVybiBlcnI7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyB2b2lk Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKPiBpbmRleCBhZmFlYWJlNWU1MzEuLjZjZWMyNGYx YWRlNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCj4gQEAgLTEyMDMsMzUgKzEyMDMs MzYgQEAgc3RhdGljIGludCBpOTE1X29hX3JlYWQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0 cmVhbSwKPiAgIHN0YXRpYyBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqb2FfcGluX2NvbnRleHQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAJCQkJCSAgICBzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCAqY3R4KQo+ICAgewo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0g aTkxNS0+ZW5naW5lW1JDUzBdOwo+IC0Jc3RydWN0IGludGVsX2NvbnRleHQgKmNlOwo+ICsJc3Ry dWN0IGk5MTVfZ2VtX2VuZ2luZXNfaXRlciBpdDsKPiAgIAlpbnQgZXJyOwo+ICAgCj4gLQljZSA9 IGludGVsX2NvbnRleHRfaW5zdGFuY2UoY3R4LCBlbmdpbmUpOwo+IC0JaWYgKElTX0VSUihjZSkp Cj4gLQkJcmV0dXJuIGNlOwo+IC0KPiAgIAllcnIgPSBpOTE1X211dGV4X2xvY2tfaW50ZXJydXB0 aWJsZSgmaTkxNS0+ZHJtKTsKPiAtCWlmIChlcnIpIHsKPiAtCQlpbnRlbF9jb250ZXh0X3B1dChj ZSk7Cj4gKwlpZiAoZXJyKQo+ICAgCQlyZXR1cm4gRVJSX1BUUihlcnIpOwo+ICsKPiArCWZvcl9l YWNoX2dlbV9lbmdpbmUoaXQsIGN0eCkgewo+ICsJCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9 IGl0LmNvbnRleHQ7Cj4gKwo+ICsJCWlmIChjZS0+ZW5naW5lLT5jbGFzcyAhPSBSRU5ERVJfQ0xB U1MpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQkvKgo+ICsJCSAqIEFzIHRoZSBJRCBpcyB0aGUg Z3R0IG9mZnNldCBvZiB0aGUgY29udGV4dCdzIHZtYSB3ZQo+ICsJCSAqIHBpbiB0aGUgdm1hIHRv IGVuc3VyZSB0aGUgSUQgcmVtYWlucyBmaXhlZC4KPiArCQkgKi8KPiArCQllcnIgPSBpbnRlbF9j b250ZXh0X3BpbihjZSk7Cj4gKwkJaWYgKGVyciA9PSAwKSB7Cj4gKwkJCWk5MTUtPnBlcmYub2Eu cGlubmVkX2N0eCA9IGNlOwo+ICsJCQlpOTE1X2dlbV9lbmdpbmVzX2l0ZXJfZmluaSgmaXQpOwo+ ICsJCQlicmVhazsKPiArCQl9Cj4gICAJfQo+ICAgCj4gLQkvKgo+IC0JICogQXMgdGhlIElEIGlz IHRoZSBndHQgb2Zmc2V0IG9mIHRoZSBjb250ZXh0J3Mgdm1hIHdlCj4gLQkgKiBwaW4gdGhlIHZt YSB0byBlbnN1cmUgdGhlIElEIHJlbWFpbnMgZml4ZWQuCj4gLQkgKgo+IC0JICogTkI6IGltcGxp ZWQgUkNTIGVuZ2luZS4uLgo+IC0JICovCj4gLQllcnIgPSBpbnRlbF9jb250ZXh0X3BpbihjZSk7 Cj4gICAJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCWludGVsX2Nv bnRleHRfcHV0KGNlKTsKPiAgIAlpZiAoZXJyKQo+ICAgCQlyZXR1cm4gRVJSX1BUUihlcnIpOwo+ ICAgCj4gLQlpOTE1LT5wZXJmLm9hLnBpbm5lZF9jdHggPSBjZTsKPiAtCj4gLQlyZXR1cm4gY2U7 Cj4gKwlyZXR1cm4gaTkxNS0+cGVyZi5vYS5waW5uZWRfY3R4Owo+ICAgfQo+ICAgCj4gICAvKioK PiBAQCAtMTcxNyw3ICsxNzE4LDYgQEAgZ2VuOF91cGRhdGVfcmVnX3N0YXRlX3VubG9ja2VkKHN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKPiAgIHN0YXRpYyBpbnQgZ2VuOF9jb25maWd1cmVfYWxs X2NvbnRleHRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAkJCQkgICAg ICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfY29uZmlnICpvYV9jb25maWcpCj4gICB7Cj4gLQlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBkZXZfcHJpdi0+ZW5naW5lW1JDUzBdOwo+ICAg CXVuc2lnbmVkIGludCBtYXBfdHlwZSA9IGk5MTVfY29oZXJlbnRfbWFwX3R5cGUoZGV2X3ByaXYp Owo+ICAgCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4gICAJc3RydWN0IGk5MTVfcmVx dWVzdCAqcnE7Cj4gQEAgLTE3NDYsMzAgKzE3NDYsNDAgQEAgc3RhdGljIGludCBnZW44X2NvbmZp Z3VyZV9hbGxfY29udGV4dHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAg Cj4gICAJLyogVXBkYXRlIGFsbCBjb250ZXh0cyBub3cgdGhhdCB3ZSd2ZSBzdGFsbGVkIHRoZSBz dWJtaXNzaW9uLiAqLwo+ICAgCWxpc3RfZm9yX2VhY2hfZW50cnkoY3R4LCAmZGV2X3ByaXYtPmNv bnRleHRzLmxpc3QsIGxpbmspIHsKPiAtCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBpbnRl bF9jb250ZXh0X2xvb2t1cChjdHgsIGVuZ2luZSk7Cj4gLQkJdTMyICpyZWdzOwo+ICsJCXN0cnVj dCBpOTE1X2dlbV9lbmdpbmVzX2l0ZXIgaXQ7Cj4gICAKPiAtCQkvKiBPQSBzZXR0aW5ncyB3aWxs IGJlIHNldCB1cG9uIGZpcnN0IHVzZSAqLwo+IC0JCWlmICghY2UgfHwgIWNlLT5zdGF0ZSkKPiAt CQkJY29udGludWU7Cj4gKwkJZm9yX2VhY2hfZ2VtX2VuZ2luZShpdCwgY3R4KSB7Cj4gKwkJCXN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IGl0LmNvbnRleHQ7Cj4gKwkJCXUzMiAqcmVnczsKPiAr Cj4gKwkJCWlmIChjZS0+ZW5naW5lLT5jbGFzcyAhPSBSRU5ERVJfQ0xBU1MpCj4gKwkJCQljb250 aW51ZTsKPiAgIAo+IC0JCXJlZ3MgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcChjZS0+c3RhdGUt Pm9iaiwgbWFwX3R5cGUpOwo+IC0JCWlmIChJU19FUlIocmVncykpCj4gLQkJCXJldHVybiBQVFJf RVJSKHJlZ3MpOwo+ICsJCQkvKiBPQSBzZXR0aW5ncyB3aWxsIGJlIHNldCB1cG9uIGZpcnN0IHVz ZSAqLwo+ICsJCQlpZiAoIWNlLT5zdGF0ZSkKPiArCQkJCWNvbnRpbnVlOwo+ICAgCj4gLQkJY2Ut PnN0YXRlLT5vYmotPm1tLmRpcnR5ID0gdHJ1ZTsKPiAtCQlyZWdzICs9IExSQ19TVEFURV9QTiAq IFBBR0VfU0laRSAvIHNpemVvZigqcmVncyk7Cj4gKwkJCXJlZ3MgPSBpOTE1X2dlbV9vYmplY3Rf cGluX21hcChjZS0+c3RhdGUtPm9iaiwKPiArCQkJCQkJICAgICAgIG1hcF90eXBlKTsKPiArCQkJ aWYgKElTX0VSUihyZWdzKSkgewo+ICsJCQkJaTkxNV9nZW1fZW5naW5lc19pdGVyX2ZpbmkoJml0 KTsKPiArCQkJCXJldHVybiBQVFJfRVJSKHJlZ3MpOwo+ICsJCQl9Cj4gICAKPiAtCQlnZW44X3Vw ZGF0ZV9yZWdfc3RhdGVfdW5sb2NrZWQoY2UsIHJlZ3MsIG9hX2NvbmZpZyk7Cj4gKwkJCWNlLT5z dGF0ZS0+b2JqLT5tbS5kaXJ0eSA9IHRydWU7Cj4gKwkJCXJlZ3MgKz0gTFJDX1NUQVRFX1BOICog UEFHRV9TSVpFIC8gc2l6ZW9mKCpyZWdzKTsKPiAgIAo+IC0JCWk5MTVfZ2VtX29iamVjdF91bnBp bl9tYXAoY2UtPnN0YXRlLT5vYmopOwo+ICsJCQlnZW44X3VwZGF0ZV9yZWdfc3RhdGVfdW5sb2Nr ZWQoY2UsIHJlZ3MsIG9hX2NvbmZpZyk7Cj4gKwo+ICsJCQlpOTE1X2dlbV9vYmplY3RfdW5waW5f bWFwKGNlLT5zdGF0ZS0+b2JqKTsKPiArCQl9Cj4gICAJfQo+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 bi5jCj4gaW5kZXggMWI2ZDY0MDNlZTkyLi45ZGJiMDM2ZmQ3ZjEgMTAwNjQ0Cj4gLS0tIGEvZHJp 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 X2dlbV9lbmdpbmUoaXQsIGN0eCkgewo+ICsJCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IGl0 LmNvbnRleHQ7Cj4gKwkJc3RydWN0IGd1Y19leGVjbGlzdF9jb250ZXh0ICpscmM7Cj4gKwo+ICsJ CWlmICghKGNlLT5lbmdpbmUtPm1hc2sgJiBjbGllbnQtPmVuZ2luZXMpKQo+ICsJCQljb250aW51 ZTsKPiAgIAo+ICAgCQkvKiBUT0RPOiBXZSBoYXZlIGEgZGVzaWduIGlzc3VlIHRvIGJlIHNvbHZl ZCBoZXJlLiBPbmx5IHdoZW4gd2UKPiAgIAkJICogcmVjZWl2ZSB0aGUgZmlyc3QgYmF0Y2gsIHdl IGtub3cgd2hpY2ggZW5naW5lIGlzIHVzZWQgYnkgdGhlCj4gQEAgLTM5NCw4ICszOTQsOCBAQCBz dGF0aWMgdm9pZCBndWNfc3RhZ2VfZGVzY19pbml0KHN0cnVjdCBpbnRlbF9ndWNfY2xpZW50ICpj bGllbnQpCj4gICAJCSAqIGZvciBub3cgd2hvIG93bnMgYSBHdUMgY2xpZW50LiBCdXQgZm9yIGZ1 dHVyZSBvd25lciBvZiBHdUMKPiAgIAkJICogY2xpZW50LCBuZWVkIHRvIG1ha2Ugc3VyZSBscmMg aXMgcGlubmVkIHByaW9yIHRvIGVudGVyIGhlcmUuCj4gICAJCSAqLwo+IC0JCWlmICghY2UgfHwg IWNlLT5zdGF0ZSkKPiAtCQkJYnJlYWs7CS8qIFhYWDogY29udGludWU/ICovCj4gKwkJaWYgKCFj ZS0+c3RhdGUpCj4gKwkJCWNvbnRpbnVlOwo+ICAgCj4gICAJCS8qCj4gICAJCSAqIFhYWDogV2hl biB0aGlzIGlzIGEgR1VDX1NUQUdFX0RFU0NfQVRUUl9LRVJORUwgY2xpZW50IChwcm94eQo+IEBA IC00MDQsNiArNDA0LDcgQEAgc3RhdGljIHZvaWQgZ3VjX3N0YWdlX2Rlc2NfaW5pdChzdHJ1Y3Qg aW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50KQo+ICAgCQkgKiBJbnN0ZWFkLCB0aGUgR3VDIHVzZXMg dGhlIExSQ0Egb2YgdGhlIHVzZXIgbW9kZSBjb250ZXh0IChzZWUKPiAgIAkJICogZ3VjX2FkZF9y ZXF1ZXN0IGJlbG93KS4KPiAgIAkJICovCj4gKwkJbHJjID0gJmRlc2MtPmxyY1tjZS0+ZW5naW5l LT5ndWNfaWRdOwo+ICAgCQlscmMtPmNvbnRleHRfZGVzYyA9IGxvd2VyXzMyX2JpdHMoY2UtPmxy Y19kZXNjKTsKPiAgIAo+ICAgCQkvKiBUaGUgc3RhdGUgcGFnZSBpcyBhZnRlciBQUEhXU1AgKi8K PiBAQCAtNDE0LDE0ICs0MTUsMTQgQEAgc3RhdGljIHZvaWQgZ3VjX3N0YWdlX2Rlc2NfaW5pdChz dHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50KQo+ICAgCQkgKiBoZXJlLiBJbiBwcm94eSBz dWJtaXNzaW9uLCBpdCB3YW50cyB0aGUgc3RhZ2UgaWQKPiAgIAkJICovCj4gICAJCWxyYy0+Y29u dGV4dF9pZCA9IChjbGllbnQtPnN0YWdlX2lkIDw8IEdVQ19FTENfQ1RYSURfT0ZGU0VUKSB8Cj4g LQkJCQkoZ3VjX2VuZ2luZV9pZCA8PCBHVUNfRUxDX0VOR0lORV9PRkZTRVQpOwo+ICsJCQkJKGNl LT5lbmdpbmUtPmd1Y19pZCA8PCBHVUNfRUxDX0VOR0lORV9PRkZTRVQpOwo+ICAgCj4gICAJCWxy Yy0+cmluZ19iZWdpbiA9IGludGVsX2d1Y19nZ3R0X29mZnNldChndWMsIGNlLT5yaW5nLT52bWEp Owo+ICAgCQlscmMtPnJpbmdfZW5kID0gbHJjLT5yaW5nX2JlZ2luICsgY2UtPnJpbmctPnNpemUg LSAxOwo+ICAgCQlscmMtPnJpbmdfbmV4dF9mcmVlX2xvY2F0aW9uID0gbHJjLT5yaW5nX2JlZ2lu Owo+ICAgCQlscmMtPnJpbmdfY3VycmVudF90YWlsX3BvaW50ZXJfdmFsdWUgPSAwOwo+ICAgCj4g LQkJZGVzYy0+ZW5naW5lc191c2VkIHw9ICgxIDw8IGd1Y19lbmdpbmVfaWQpOwo+ICsJCWRlc2Mt PmVuZ2luZXNfdXNlZCB8PSBCSVQoY2UtPmVuZ2luZS0+Z3VjX2lkKTsKPiAgIAl9Cj4gICAKPiAg IAlEUk1fREVCVUdfRFJJVkVSKCJIb3N0IGVuZ2luZXMgMHgleCA9PiBHdUMgZW5naW5lcyB1c2Vk IDB4JXhcbiIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9p OTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9n ZW1fY29udGV4dC5jCj4gaW5kZXggMjE0ZDFmZDJmNGRjLi43ZmQyMjRhNGNhNGMgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMK PiBAQCAtMTA5NCw3ICsxMDk0LDcgQEAgX19pZ3RfY3R4X3NzZXUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsCj4gICAKPiAgIAl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoaTkx NSk7Cj4gICAKPiAtCWNlID0gaW50ZWxfY29udGV4dF9pbnN0YW5jZShjdHgsIGk5MTUtPmVuZ2lu ZVtSQ1MwXSk7Cj4gKwljZSA9IGk5MTVfZ2VtX2NvbnRleHRfZ2V0X2VuZ2luZShjdHgsIFJDUzAp Owo+ICAgCWlmIChJU19FUlIoY2UpKSB7Cj4gICAJCXJldCA9IFBUUl9FUlIoY2UpOwo+ICAgCQln b3RvIG91dF9ycG07Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9tb2NrX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2Nv bnRleHQuYwo+IGluZGV4IDA0MjYwOTNiZjFkOS4uNzFjNzUwNjkzNTg1IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYwo+IEBAIC0zMCw2ICsz MCw3IEBAIG1vY2tfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIAkg ICAgIGNvbnN0IGNoYXIgKm5hbWUpCj4gICB7Cj4gICAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg KmN0eDsKPiArCXN0cnVjdCBpOTE1X2dlbV9lbmdpbmVzICplOwo+ICAgCWludCByZXQ7Cj4gICAK PiAgIAljdHggPSBremFsbG9jKHNpemVvZigqY3R4KSwgR0ZQX0tFUk5FTCk7Cj4gQEAgLTQwLDgg KzQxLDExIEBAIG1vY2tfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAg IAlJTklUX0xJU1RfSEVBRCgmY3R4LT5saW5rKTsKPiAgIAljdHgtPmk5MTUgPSBpOTE1Owo+ICAg Cj4gLQljdHgtPmh3X2NvbnRleHRzID0gUkJfUk9PVDsKPiAtCXNwaW5fbG9ja19pbml0KCZjdHgt Pmh3X2NvbnRleHRzX2xvY2spOwo+ICsJbXV0ZXhfaW5pdCgmY3R4LT5lbmdpbmVzX211dGV4KTsK PiArCWUgPSBkZWZhdWx0X2VuZ2luZXMoY3R4KTsKPiArCWlmIChJU19FUlIoZSkpCj4gKwkJZ290 byBlcnJfZnJlZTsKPiArCVJDVV9JTklUX1BPSU5URVIoY3R4LT5lbmdpbmVzLCBlKTsKPiAgIAo+ ICAgCUlOSVRfUkFESVhfVFJFRSgmY3R4LT5oYW5kbGVzX3ZtYSwgR0ZQX0tFUk5FTCk7Cj4gICAJ SU5JVF9MSVNUX0hFQUQoJmN0eC0+aGFuZGxlc19saXN0KTsKPiBAQCAtNTEsNyArNTUsNyBAQCBt b2NrX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAKPiAgIAlyZXQg PSBpOTE1X2dlbV9jb250ZXh0X3Bpbl9od19pZChjdHgpOwo+ICAgCWlmIChyZXQgPCAwKQo+IC0J CWdvdG8gZXJyX2hhbmRsZXM7Cj4gKwkJZ290byBlcnJfZW5naW5lczsKPiAgIAo+ICAgCWlmIChu YW1lKSB7Cj4gICAJCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dDsKPiBAQCAtNjksNyArNzMs OSBAQCBtb2NrX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAKPiAg IAlyZXR1cm4gY3R4Owo+ICAgCj4gLWVycl9oYW5kbGVzOgo+ICtlcnJfZW5naW5lczoKPiArCWZy ZWVfZW5naW5lcyhyY3VfYWNjZXNzX3BvaW50ZXIoY3R4LT5lbmdpbmVzKSk7Cj4gK2Vycl9mcmVl Ogo+ICAgCWtmcmVlKGN0eCk7Cj4gICAJcmV0dXJuIE5VTEw7Cj4gICAKPiAKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4