From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: Re: [PATCH 08/39] drm/i915: Create/destroy VM (ppGTT) for use with contexts Date: Wed, 13 Mar 2019 13:11:21 -0700 Message-ID: <20190313201121.GK24277@intel.com> References: <20190313144401.17735-1-chris@chris-wilson.co.uk> <20190313144401.17735-8-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 ACF456E0F8 for ; Wed, 13 Mar 2019 20:11:13 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190313144401.17735-8-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBNYXIgMTMsIDIwMTkgYXQgMDI6NDM6MzBQTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IEluIHByZXBhcmF0aW9uIHRvIG1ha2luZyB0aGUgcHBHVFQgYmluZGluZyBmb3IgYSBj b250ZXh0IGV4cGxpY2l0ICh0bwo+IGZhY2lsaXRhdGUgcmV1c2luZyB0aGUgc2FtZSBwcEdUVCBi ZXR3ZWVuIGRpZmZlcmVudCBjb250ZXh0cyksIGFsbG93IHRoZQo+IHVzZXIgdG8gY3JlYXRlIGFu ZCBkZXN0cm95IG5hbWVkIHBwR1RULgo+IAo+IHYyOiBSZXBsYWNlIGdsb2JhbCBiYXJyaWVyIGZv ciBzd2FwcGluZyBvdmVyIHRoZSBwcGd0dCBhbmQgdGxicyB3aXRoIGEKPiBsb2NhbCBjb250ZXh0 IGJhcnJpZXIgKFR2cnRrbykKPiB2Mzogc2VyaWFsaXNlIHdpdGggc3RydWN0X211dGV4OyBpdCdz IGxhenkgYnV0IHJlcXVpcmVkIGRhbW1pdAo+IHY0OiBSZXdyaXRlIGlndF9jdHhfc2hhcmVkX2V4 ZWMgdG8gYmUgbW9yZSBkaWZmZXJlbnQgKGFpbWVkIHRvIGJlIG1vcmUKPiBzaW1pbGFybHksIHR1 cm5lZCBvdXQgZGlmZmVyZW50ISkKPiAKPiB2MjogRml4IHVwIHRlc3QgdW53aW5kIGZvciBhbGlh c2luZy1wcGd0dCAoc25iKQo+IHYzOiBUaWdodGVuIGxhbmd1YWdlIGZvciB1YXBpIHN0cnVjdCBk cm1faTkxNV9nZW1fdm1fY29udHJvbC4KPiB2NDogUGF0Y2ggdGhlIGNvbnRleHQgaW1hZ2UgZm9y IHJ1bnRpbWUgcHBndHQgc3dpdGNoaW5nIQo+IAo+IFRlc3RjYXNlOiBpZ3QvZ2VtX2N0eF9wYXJh bS92bQo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNv LnVrPgo+IENjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+IC0t LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAgICAgICAgfCAgIDIg Kwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgICAgfCAgIDMg Kwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgICAgICAgfCAzMjIg KysrKysrKysrKysrKysrKystCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRl eHQuaCAgICAgICB8ICAgNSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5j ICAgICAgICAgICB8ICAzMCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQu aCAgICAgICAgICAgfCAgMTcgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2h1 Z2VfcGFnZXMuYyAgIHwgICAxIC0KPiAgLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9n ZW1fY29udGV4dC5jIHwgMjM3ICsrKysrKysrKystLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2k5MTVfZ2VtX2d0dC5jIHwgICAxIC0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL21vY2tfY29udGV4dC5jIHwgICA4ICstCj4gIGluY2x1ZGUvdWFwaS9kcm0vaTkx NV9kcm0uaCAgICAgICAgICAgICAgICAgICB8ICA0MyArKysKPiAgMTEgZmlsZXMgY2hhbmdlZCwg NTk0IGluc2VydGlvbnMoKyksIDc1IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuYwo+IGluZGV4IDBkNzQzOTA3ZTdiYy4uNWQ1M2VmYzRjNWQ5IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jCj4gQEAgLTMxMjEsNiArMzEyMSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg ZHJtX2lvY3RsX2Rlc2MgaTkxNV9pb2N0bHNbXSA9IHsKPiAgCURSTV9JT0NUTF9ERUZfRFJWKEk5 MTVfUEVSRl9BRERfQ09ORklHLCBpOTE1X3BlcmZfYWRkX2NvbmZpZ19pb2N0bCwgRFJNX1VOTE9D S0VEfERSTV9SRU5ERVJfQUxMT1cpLAo+ICAJRFJNX0lPQ1RMX0RFRl9EUlYoSTkxNV9QRVJGX1JF TU9WRV9DT05GSUcsIGk5MTVfcGVyZl9yZW1vdmVfY29uZmlnX2lvY3RsLCBEUk1fVU5MT0NLRUR8 RFJNX1JFTkRFUl9BTExPVyksCj4gIAlEUk1fSU9DVExfREVGX0RSVihJOTE1X1FVRVJZLCBpOTE1 X3F1ZXJ5X2lvY3RsLCBEUk1fVU5MT0NLRUR8RFJNX1JFTkRFUl9BTExPVyksCj4gKwlEUk1fSU9D VExfREVGX0RSVihJOTE1X0dFTV9WTV9DUkVBVEUsIGk5MTVfZ2VtX3ZtX2NyZWF0ZV9pb2N0bCwg RFJNX1JFTkRFUl9BTExPVyksCj4gKwlEUk1fSU9DVExfREVGX0RSVihJOTE1X0dFTV9WTV9ERVNU Uk9ZLCBpOTE1X2dlbV92bV9kZXN0cm95X2lvY3RsLCBEUk1fUkVOREVSX0FMTE9XKSwKPiAgfTsK PiAgCj4gIHN0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciBkcml2ZXIgPSB7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4gaW5kZXggZGM2MzMwMzIyNWZjLi40Njc1MzU1OTE2ZmYgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMjE4LDYgKzIxOCw5IEBAIHN0cnVjdCBkcm1faTkxNV9m aWxlX3ByaXZhdGUgewo+ICAJfSBtbTsKPiAgCXN0cnVjdCBpZHIgY29udGV4dF9pZHI7Cj4gIAo+ ICsJc3RydWN0IG11dGV4IHZtX2xvY2s7Cj4gKwlzdHJ1Y3QgaWRyIHZtX2lkcjsKPiArCj4gIAl1 bnNpZ25lZCBpbnQgYnNkX2VuZ2luZTsKPiAgCj4gIC8qCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2NvbnRleHQuYwo+IGluZGV4IDRhZjUxYjY4OWNiZC4uNzE0NjRhZTkxZDYxIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+IEBAIC0xMjAsMTIgKzEy MCwxNSBAQCBzdGF0aWMgdm9pZCBsdXRfY2xvc2Uoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0 eCkKPiAgCQlsaXN0X2RlbCgmbHV0LT5vYmpfbGluayk7Cj4gIAkJaTkxNV9sdXRfaGFuZGxlX2Zy ZWUobHV0KTsKPiAgCX0KPiArCUlOSVRfTElTVF9IRUFEKCZjdHgtPmhhbmRsZXNfbGlzdCk7Cj4g IAo+ICAJcmN1X3JlYWRfbG9jaygpOwo+ICAJcmFkaXhfdHJlZV9mb3JfZWFjaF9zbG90KHNsb3Qs ICZjdHgtPmhhbmRsZXNfdm1hLCAmaXRlciwgMCkgewo+ICAJCXN0cnVjdCBpOTE1X3ZtYSAqdm1h ID0gcmN1X2RlcmVmZXJlbmNlX3Jhdygqc2xvdCk7Cj4gIAo+ICAJCXJhZGl4X3RyZWVfaXRlcl9k ZWxldGUoJmN0eC0+aGFuZGxlc192bWEsICZpdGVyLCBzbG90KTsKPiArCj4gKwkJdm1hLT5vcGVu X2NvdW50LS07Cj4gIAkJX19pOTE1X2dlbV9vYmplY3RfcmVsZWFzZV91bmxlc3NfYWN0aXZlKHZt YS0+b2JqKTsKPiAgCX0KPiAgCXJjdV9yZWFkX3VubG9jaygpOwo+IEBAIC0zMDYsNyArMzA5LDcg QEAgc3RhdGljIHZvaWQgY29udGV4dF9jbG9zZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4 KQo+ICAJICovCj4gIAlsdXRfY2xvc2UoY3R4KTsKPiAgCWlmIChjdHgtPnBwZ3R0KQo+IC0JCWk5 MTVfcHBndHRfY2xvc2UoJmN0eC0+cHBndHQtPnZtKTsKPiArCQlpOTE1X3BwZ3R0X2Nsb3NlKGN0 eC0+cHBndHQpOwo+ICAKPiAgCWN0eC0+ZmlsZV9wcml2ID0gRVJSX1BUUigtRUJBREYpOwo+ICAJ aTkxNV9nZW1fY29udGV4dF9wdXQoY3R4KTsKPiBAQCAtNDE3LDYgKzQyMCwzMiBAQCBzdGF0aWMg dm9pZCBfX2Rlc3Ryb3lfaHdfY29udGV4dChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ ICAJY29udGV4dF9jbG9zZShjdHgpOwo+ICB9Cj4gIAo+ICtzdGF0aWMgc3RydWN0IGk5MTVfaHdf cHBndHQgKgo+ICtfX3NldF9wcGd0dChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LCBzdHJ1 Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4gK3sKPiArCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpv bGQgPSBjdHgtPnBwZ3R0Owo+ICsKPiArCWk5MTVfcHBndHRfb3BlbihwcGd0dCk7Cj4gKwljdHgt PnBwZ3R0ID0gaTkxNV9wcGd0dF9nZXQocHBndHQpOwo+ICsKPiArCWN0eC0+ZGVzY190ZW1wbGF0 ZSA9IGRlZmF1bHRfZGVzY190ZW1wbGF0ZShjdHgtPmk5MTUsIHBwZ3R0KTsKPiArCj4gKwlyZXR1 cm4gb2xkOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBfX2Fzc2lnbl9wcGd0dChzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dCAqY3R4LAo+ICsJCQkgICBzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQp Cj4gK3sKPiArCWlmIChwcGd0dCA9PSBjdHgtPnBwZ3R0KQo+ICsJCXJldHVybjsKPiArCj4gKwlw cGd0dCA9IF9fc2V0X3BwZ3R0KGN0eCwgcHBndHQpOwo+ICsJaWYgKHBwZ3R0KSB7Cj4gKwkJaTkx NV9wcGd0dF9jbG9zZShwcGd0dCk7Cj4gKwkJaTkxNV9wcGd0dF9wdXQocHBndHQpOwo+ICsJfQo+ ICt9Cj4gKwo+ICBzdGF0aWMgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKgo+ICBpOTE1X2dlbV9j cmVhdGVfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCXN0 cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdikKPiBAQCAtNDQzLDggKzQ3Miw4 IEBAIGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiAgCQkJcmV0dXJuIEVSUl9DQVNUKHBwZ3R0KTsKPiAgCQl9Cj4gIAo+IC0JCWN0eC0+ cHBndHQgPSBwcGd0dDsKPiAtCQljdHgtPmRlc2NfdGVtcGxhdGUgPSBkZWZhdWx0X2Rlc2NfdGVt cGxhdGUoZGV2X3ByaXYsIHBwZ3R0KTsKPiArCQlfX2Fzc2lnbl9wcGd0dChjdHgsIHBwZ3R0KTsK PiArCQlpOTE1X3BwZ3R0X3B1dChwcGd0dCk7Cj4gIAl9Cj4gIAo+ICAJdHJhY2VfaTkxNV9jb250 ZXh0X2NyZWF0ZShjdHgpOwo+IEBAIC02MjUsMTkgKzY1NCwyOSBAQCBzdGF0aWMgaW50IGNvbnRl eHRfaWRyX2NsZWFudXAoaW50IGlkLCB2b2lkICpwLCB2b2lkICpkYXRhKQo+ICAJcmV0dXJuIDA7 Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbnQgdm1faWRyX2NsZWFudXAoaW50IGlkLCB2b2lkICpwLCB2 b2lkICpkYXRhKQo+ICt7Cj4gKwlpOTE1X3BwZ3R0X3B1dChwKTsKPiArCXJldHVybiAwOwo+ICt9 Cj4gKwo+ICBpbnQgaTkxNV9nZW1fY29udGV4dF9vcGVuKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1LAo+ICAJCQkgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKPiAgewo+ICAJc3RydWN0IGRy bV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2ID0gZmlsZS0+ZHJpdmVyX3ByaXY7Cj4gIAlz dHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owo+ICAKPiArCW11dGV4X2luaXQoJmZpbGVfcHJp di0+dm1fbG9jayk7Cj4gKwo+ICAJaWRyX2luaXQoJmZpbGVfcHJpdi0+Y29udGV4dF9pZHIpOwo+ ICsJaWRyX2luaXRfYmFzZSgmZmlsZV9wcml2LT52bV9pZHIsIDEpOwo+ICAKPiAgCW11dGV4X2xv Y2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAJY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2Nv bnRleHQoaTkxNSwgZmlsZV9wcml2KTsKPiAgCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVj dF9tdXRleCk7Cj4gIAlpZiAoSVNfRVJSKGN0eCkpIHsKPiAgCQlpZHJfZGVzdHJveSgmZmlsZV9w cml2LT5jb250ZXh0X2lkcik7Cj4gKwkJaWRyX2Rlc3Ryb3koJmZpbGVfcHJpdi0+dm1faWRyKTsK PiAgCQlyZXR1cm4gUFRSX0VSUihjdHgpOwo+ICAJfQo+ICAKPiBAQCAtNjU0LDYgKzY5Myw4OSBA QCB2b2lkIGk5MTVfZ2VtX2NvbnRleHRfY2xvc2Uoc3RydWN0IGRybV9maWxlICpmaWxlKQo+ICAK PiAgCWlkcl9mb3JfZWFjaCgmZmlsZV9wcml2LT5jb250ZXh0X2lkciwgY29udGV4dF9pZHJfY2xl YW51cCwgTlVMTCk7Cj4gIAlpZHJfZGVzdHJveSgmZmlsZV9wcml2LT5jb250ZXh0X2lkcik7Cj4g Kwo+ICsJaWRyX2Zvcl9lYWNoKCZmaWxlX3ByaXYtPnZtX2lkciwgdm1faWRyX2NsZWFudXAsIE5V TEwpOwo+ICsJaWRyX2Rlc3Ryb3koJmZpbGVfcHJpdi0+dm1faWRyKTsKPiArCj4gKwltdXRleF9k ZXN0cm95KCZmaWxlX3ByaXYtPnZtX2xvY2spOwo+ICt9Cj4gKwo+ICtpbnQgaTkxNV9nZW1fdm1f Y3JlYXRlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gKwkJCSAg ICAgc3RydWN0IGRybV9maWxlICpmaWxlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSA9IHRvX2k5MTUoZGV2KTsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fdm1fY29udHJv bCAqYXJncyA9IGRhdGE7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3By aXYgPSBmaWxlLT5kcml2ZXJfcHJpdjsKPiArCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dDsK PiArCWludCBlcnI7Cj4gKwo+ICsJaWYgKCFIQVNfRlVMTF9QUEdUVChpOTE1KSkKPiArCQlyZXR1 cm4gLUVOT0RFVjsKPiArCj4gKwlpZiAoYXJncy0+ZmxhZ3MpCj4gKwkJcmV0dXJuIC1FSU5WQUw7 Cj4gKwo+ICsJaWYgKGFyZ3MtPmV4dGVuc2lvbnMpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ ICsJcHBndHQgPSBpOTE1X3BwZ3R0X2NyZWF0ZShpOTE1LCBmaWxlX3ByaXYpOwo+ICsJaWYgKElT X0VSUihwcGd0dCkpCj4gKwkJcmV0dXJuIFBUUl9FUlIocHBndHQpOwo+ICsKPiArCWVyciA9IG11 dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmZmlsZV9wcml2LT52bV9sb2NrKTsKPiArCWlmIChlcnIp Cj4gKwkJZ290byBlcnJfcHV0Owo+ICsKPiArCWVyciA9IGlkcl9hbGxvYygmZmlsZV9wcml2LT52 bV9pZHIsIHBwZ3R0LCAwLCAwLCBHRlBfS0VSTkVMKTsKPiArCW11dGV4X3VubG9jaygmZmlsZV9w cml2LT52bV9sb2NrKTsKPiArCWlmIChlcnIgPCAwKQo+ICsJCWdvdG8gZXJyX3B1dDsKPiArCj4g KwlHRU1fQlVHX09OKGVyciA9PSAwKTsgLyogcmVzZXJ2ZWQgZm9yIGRlZmF1bHQvdW5hc3NpZ25l ZCBwcGd0dCAqLwo+ICsJcHBndHQtPnVzZXJfaGFuZGxlID0gZXJyOwo+ICsJYXJncy0+aWQgPSBl cnI7Cj4gKwlyZXR1cm4gMDsKPiArCj4gK2Vycl9wdXQ6Cj4gKwlpOTE1X3BwZ3R0X3B1dChwcGd0 dCk7Cj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICtpbnQgaTkxNV9nZW1fdm1fZGVzdHJveV9p b2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICsJCQkgICAgICBzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUg KmZpbGVfcHJpdiA9IGZpbGUtPmRyaXZlcl9wcml2Owo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV92 bV9jb250cm9sICphcmdzID0gZGF0YTsKPiArCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dDsK PiArCWludCBlcnI7Cj4gKwl1MzIgaWQ7Cj4gKwo+ICsJaWYgKGFyZ3MtPmZsYWdzKQo+ICsJCXJl dHVybiAtRUlOVkFMOwo+ICsKPiArCWlmIChhcmdzLT5leHRlbnNpb25zKQo+ICsJCXJldHVybiAt RUlOVkFMOwo+ICsKPiArCWlkID0gYXJncy0+aWQ7Cj4gKwlpZiAoIWlkKQo+ICsJCXJldHVybiAt RU5PRU5UOwo+ICsKPiArCWVyciA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmZmlsZV9wcml2 LT52bV9sb2NrKTsKPiArCWlmIChlcnIpCj4gKwkJcmV0dXJuIGVycjsKPiArCj4gKwlwcGd0dCA9 IGlkcl9yZW1vdmUoJmZpbGVfcHJpdi0+dm1faWRyLCBpZCk7Cj4gKwlpZiAocHBndHQpIHsKPiAr CQlHRU1fQlVHX09OKCFwcGd0dC0+dXNlcl9oYW5kbGUpOwo+ICsJCXBwZ3R0LT51c2VyX2hhbmRs ZSA9IDA7Cj4gKwl9Cj4gKwo+ICsJbXV0ZXhfdW5sb2NrKCZmaWxlX3ByaXYtPnZtX2xvY2spOwo+ ICsJaWYgKCFwcGd0dCkKPiArCQlyZXR1cm4gLUVOT0VOVDsKPiArCj4gKwlpOTE1X3BwZ3R0X3B1 dChwcGd0dCk7Cj4gKwlyZXR1cm4gMDsKPiAgfQo+ICAKPiAgc3RhdGljIHN0cnVjdCBpOTE1X3Jl cXVlc3QgKgo+IEBAIC02OTcsMTIgKzgxOSwxMyBAQCBzdGF0aWMgdm9pZCBjYl9yZXRpcmUoc3Ry dWN0IGk5MTVfYWN0aXZlICpiYXNlKQo+ICBJOTE1X1NFTEZURVNUX0RFQ0xBUkUoc3RhdGljIHVu c2lnbmVkIGxvbmcgY29udGV4dF9iYXJyaWVyX2luamVjdF9mYXVsdCk7Cj4gIHN0YXRpYyBpbnQg Y29udGV4dF9iYXJyaWVyX3Rhc2soc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAgCQkJ CXVuc2lnbmVkIGxvbmcgZW5naW5lcywKPiArCQkJCWludCAoKmVtaXQpKHN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJxLCB2b2lkICpkYXRhKSwKPiAgCQkJCXZvaWQgKCp0YXNrKSh2b2lkICpkYXRhKSwK PiAgCQkJCXZvaWQgKmRhdGEpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 ID0gY3R4LT5pOTE1Owo+ICAJc3RydWN0IGNvbnRleHRfYmFycmllcl90YXNrICpjYjsKPiAtCXN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKPiArCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwgKm5l eHQ7Cj4gIAlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgCWludCBlcnIgPSAwOwo+ICAKPiBA QCAtNzE3LDExICs4NDAsMTEgQEAgc3RhdGljIGludCBjb250ZXh0X2JhcnJpZXJfdGFzayhzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAJaTkxNV9hY3RpdmVfYWNxdWlyZSgmY2ItPmJh c2UpOwo+ICAKPiAgCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiAtCWxp c3RfZm9yX2VhY2hfZW50cnkoY2UsICZjdHgtPmFjdGl2ZV9lbmdpbmVzLCBhY3RpdmVfbGluaykg ewo+ICsJcmJ0cmVlX3Bvc3RvcmRlcl9mb3JfZWFjaF9lbnRyeV9zYWZlKGNlLCBuZXh0LCAmY3R4 LT5od19jb250ZXh0cywgbm9kZSkgewo+ICAJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSA9IGNlLT5lbmdpbmU7Cj4gIAkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4gIAo+IC0JCWlm ICghKGNlLT5lbmdpbmUtPm1hc2sgJiBlbmdpbmVzKSkKPiArCQlpZiAoIShlbmdpbmUtPm1hc2sg JiBlbmdpbmVzKSkKPiAgCQkJY29udGludWU7Cj4gIAo+ICAJCWlmIChJOTE1X1NFTEZURVNUX09O TFkoY29udGV4dF9iYXJyaWVyX2luamVjdF9mYXVsdCAmCj4gQEAgLTczNiw3ICs4NTksMTIgQEAg c3RhdGljIGludCBjb250ZXh0X2JhcnJpZXJfdGFzayhzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAq Y3R4LAo+ICAJCQlicmVhazsKPiAgCQl9Cj4gIAo+IC0JCWVyciA9IGk5MTVfYWN0aXZlX3JlZigm Y2ItPmJhc2UsIHJxLT5mZW5jZS5jb250ZXh0LCBycSk7Cj4gKwkJZXJyID0gMDsKPiArCQlpZiAo ZW1pdCkKPiArCQkJZXJyID0gZW1pdChycSwgZGF0YSk7Cj4gKwkJaWYgKGVyciA9PSAwKQo+ICsJ CQllcnIgPSBpOTE1X2FjdGl2ZV9yZWYoJmNiLT5iYXNlLCBycS0+ZmVuY2UuY29udGV4dCwgcnEp Owo+ICsKPiAgCQlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKPiAgCQlpZiAoZXJyKQo+ICAJCQlicmVh azsKPiBAQCAtNzk5LDYgKzkyNywxNzMgQEAgaW50IGk5MTVfZ2VtX3N3aXRjaF90b19rZXJuZWxf Y29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgCXJldHVybiAwOwo+ICB9 Cj4gIAo+ICtzdGF0aWMgaW50IGdldF9wcGd0dChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4 LAo+ICsJCSAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtICphcmdzKQo+ICt7 Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXYgPSBjdHgtPmZpbGVf cHJpdjsKPiArCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dDsKPiArCWludCByZXQ7Cj4gKwo+ ICsJaWYgKCFjdHgtPnBwZ3R0KQo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsKPiArCS8qIFhYWCBy Y3UgYWNxdWlyZT8gKi8KPiArCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmY3R4LT5p OTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiAr Cj4gKwlwcGd0dCA9IGk5MTVfcHBndHRfZ2V0KGN0eC0+cHBndHQpOwo+ICsJbXV0ZXhfdW5sb2Nr KCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsKPiArCXJldCA9IG11dGV4X2xvY2tf aW50ZXJydXB0aWJsZSgmZmlsZV9wcml2LT52bV9sb2NrKTsKPiArCWlmIChyZXQpCj4gKwkJZ290 byBlcnJfcHV0Owo+ICsKPiArCWlmICghcHBndHQtPnVzZXJfaGFuZGxlKSB7Cj4gKwkJcmV0ID0g aWRyX2FsbG9jKCZmaWxlX3ByaXYtPnZtX2lkciwgcHBndHQsIDAsIDAsIEdGUF9LRVJORUwpOwo+ ICsJCUdFTV9CVUdfT04oIXJldCk7Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCWdvdG8gZXJyX3Vu bG9jazsKPiArCj4gKwkJcHBndHQtPnVzZXJfaGFuZGxlID0gcmV0Owo+ICsJCWk5MTVfcHBndHRf Z2V0KHBwZ3R0KTsKPiArCX0KPiArCj4gKwlhcmdzLT5zaXplID0gMDsKPiArCWFyZ3MtPnZhbHVl ID0gcHBndHQtPnVzZXJfaGFuZGxlOwo+ICsKPiArCXJldCA9IDA7Cj4gK2Vycl91bmxvY2s6Cj4g KwltdXRleF91bmxvY2soJmZpbGVfcHJpdi0+dm1fbG9jayk7Cj4gK2Vycl9wdXQ6Cj4gKwlpOTE1 X3BwZ3R0X3B1dChwcGd0dCk7Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9p ZCBzZXRfcHBndHRfYmFycmllcih2b2lkICpkYXRhKQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9od19w cGd0dCAqb2xkID0gZGF0YTsKPiArCj4gKwlpZiAoSU5URUxfR0VOKG9sZC0+dm0uaTkxNSkgPCA4 KQo+ICsJCWdlbjZfcHBndHRfdW5waW5fYWxsKG9sZCk7Cj4gKwo+ICsJaTkxNV9wcGd0dF9jbG9z ZShvbGQpOwo+ICsJaTkxNV9wcGd0dF9wdXQob2xkKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBl bWl0X3BwZ3R0X3VwZGF0ZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdm9pZCAqZGF0YSkKPiAr ewo+ICsJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0ID0gcnEtPmdlbV9jb250ZXh0LT5wcGd0 dDsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJxLT5lbmdpbmU7Cj4gKwl1 MzIgKmNzOwo+ICsJaW50IGk7Cj4gKwo+ICsJaWYgKGk5MTVfdm1faXNfNDhiaXQoJnBwZ3R0LT52 bSkpIHsKPiArCQljb25zdCBkbWFfYWRkcl90IHBkX2RhZGRyID0gcHhfZG1hKCZwcGd0dC0+cG1s NCk7Cj4gKwo+ICsJCWNzID0gaW50ZWxfcmluZ19iZWdpbihycSwgNik7Cj4gKwkJaWYgKElTX0VS UihjcykpCj4gKwkJCXJldHVybiBQVFJfRVJSKGNzKTsKPiArCj4gKwkJKmNzKysgPSBNSV9MT0FE X1JFR0lTVEVSX0lNTSgyKTsKPiArCj4gKwkJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldChH RU44X1JJTkdfUERQX1VEVyhlbmdpbmUsIDApKTsKPiArCQkqY3MrKyA9IHVwcGVyXzMyX2JpdHMo cGRfZGFkZHIpOwo+ICsJCSpjcysrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoR0VOOF9SSU5HX1BE UF9MRFcoZW5naW5lLCAwKSk7Cj4gKwkJKmNzKysgPSBsb3dlcl8zMl9iaXRzKHBkX2RhZGRyKTsK PiArCj4gKwkJKmNzKysgPSBNSV9OT09QOwo+ICsJCWludGVsX3JpbmdfYWR2YW5jZShycSwgY3Mp Owo+ICsJfSBlbHNlIGlmIChIQVNfTE9HSUNBTF9SSU5HX0NPTlRFWFRTKGVuZ2luZS0+aTkxNSkp IHsKPiArCQljcyA9IGludGVsX3JpbmdfYmVnaW4ocnEsIDQgKiBHRU44XzNMVkxfUERQRVMgKyAy KTsKPiArCQlpZiAoSVNfRVJSKGNzKSkKPiArCQkJcmV0dXJuIFBUUl9FUlIoY3MpOwo+ICsKPiAr CQkqY3MrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKDIgKiBHRU44XzNMVkxfUERQRVMpOwo+ICsJ CWZvciAoaSA9IEdFTjhfM0xWTF9QRFBFUzsgaS0tOyApIHsKPiArCQkJY29uc3QgZG1hX2FkZHJf dCBwZF9kYWRkciA9IGk5MTVfcGFnZV9kaXJfZG1hX2FkZHIocHBndHQsIGkpOwo+ICsKPiArCQkJ KmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldChHRU44X1JJTkdfUERQX1VEVyhlbmdpbmUsIGkp KTsKPiArCQkJKmNzKysgPSB1cHBlcl8zMl9iaXRzKHBkX2RhZGRyKTsKPiArCQkJKmNzKysgPSBp OTE1X21taW9fcmVnX29mZnNldChHRU44X1JJTkdfUERQX0xEVyhlbmdpbmUsIGkpKTsKPiArCQkJ KmNzKysgPSBsb3dlcl8zMl9iaXRzKHBkX2RhZGRyKTsKPiArCQl9Cj4gKwkJKmNzKysgPSBNSV9O T09QOwo+ICsJCWludGVsX3JpbmdfYWR2YW5jZShycSwgY3MpOwo+ICsJfSBlbHNlIHsKPiArCQkv KiBwcEdUVCBpcyBub3QgcGFydCBvZiB0aGUgbGVnYWN5IGNvbnRleHQgaW1hZ2UgKi8KPiArCQln ZW42X3BwZ3R0X3BpbihwcGd0dCk7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4g K3N0YXRpYyBpbnQgc2V0X3BwZ3R0KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gKwkJ ICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gKmFyZ3MpCj4gK3sKPiArCXN0 cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdiA9IGN0eC0+ZmlsZV9wcml2Owo+ ICsJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LCAqb2xkOwo+ICsJaW50IGVycjsKPiArCj4g KwlpZiAoYXJncy0+c2l6ZSkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlpZiAoIWN0eC0+ cHBndHQpCj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwo+ICsJaWYgKHVwcGVyXzMyX2JpdHMoYXJn cy0+dmFsdWUpKQo+ICsJCXJldHVybiAtRU5PRU5UOwo+ICsKPiArCWVyciA9IG11dGV4X2xvY2tf aW50ZXJydXB0aWJsZSgmZmlsZV9wcml2LT52bV9sb2NrKTsKPiArCWlmIChlcnIpCj4gKwkJcmV0 dXJuIGVycjsKPiArCj4gKwlwcGd0dCA9IGlkcl9maW5kKCZmaWxlX3ByaXYtPnZtX2lkciwgYXJn cy0+dmFsdWUpOwo+ICsJaWYgKHBwZ3R0KSB7Cj4gKwkJR0VNX0JVR19PTihwcGd0dC0+dXNlcl9o YW5kbGUgIT0gYXJncy0+dmFsdWUpOwo+ICsJCWk5MTVfcHBndHRfZ2V0KHBwZ3R0KTsKPiArCX0K PiArCW11dGV4X3VubG9jaygmZmlsZV9wcml2LT52bV9sb2NrKTsKPiArCWlmICghcHBndHQpCj4g KwkJcmV0dXJuIC1FTk9FTlQ7Cj4gKwo+ICsJZXJyID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxl KCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJaWYgKGVycikKPiArCQlnb3RvIG91 dDsKPiArCj4gKwlpZiAocHBndHQgPT0gY3R4LT5wcGd0dCkKPiArCQlnb3RvIHVubG9jazsKPiAr Cj4gKwkvKiBUZWFyZG93biB0aGUgZXhpc3Rpbmcgb2JqOnZtYSBjYWNoZSwgaXQgd2lsbCBoYXZl IHRvIGJlIHJlYnVpbHQuICovCj4gKwlsdXRfY2xvc2UoY3R4KTsKPiArCj4gKwlvbGQgPSBfX3Nl dF9wcGd0dChjdHgsIHBwZ3R0KTsKPiArCj4gKwkvKgo+ICsJICogV2UgbmVlZCB0byBmbHVzaCBh bnkgcmVxdWVzdHMgdXNpbmcgdGhlIGN1cnJlbnQgcHBndHQgYmVmb3JlCj4gKwkgKiB3ZSByZWxl YXNlIGl0IGFzIHRoZSByZXF1ZXN0cyBkbyBub3QgaG9sZCBhIHJlZmVyZW5jZSB0aGVtc2VsdmVz LAo+ICsJICogb25seSBpbmRpcmVjdGx5IHRocm91Z2ggdGhlIGNvbnRleHQuCj4gKwkgKi8KPiAr CWVyciA9IGNvbnRleHRfYmFycmllcl90YXNrKGN0eCwgQUxMX0VOR0lORVMsCgptYXliZSB3aGls ZSB3ZSBkb24ndCBhZGQgdGhpcyBoZXJlIHdlIGNvdWxkIG1vdmUgY29udGV4dF9iYXJyaWVyX3Rh c2sKdG8gYXZvaWQgYnJlYWtpbmcgY29tcGlsYXRpb25zIHdpdGhvdXQgc2VsZnRlc3Q/Cgpkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmM6Njk4OjEyOiB3YXJuaW5nOiDigJhj b250ZXh0X2JhcnJpZXJfdGFza+KAmSBkZWZpbmVkIGJ1dCBub3QgdXNlZCBbLVd1bnVzZWQtZnVu Y3Rpb25dCiBzdGF0aWMgaW50IGNvbnRleHRfYmFycmllcl90YXNrKHN0cnVjdCBpOTE1X2dlbV9j b250ZXh0ICpjdHgsCiAgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+fn5+fn5+Cgo+ICsJCQkJICAg ZW1pdF9wcGd0dF91cGRhdGUsCj4gKwkJCQkgICBzZXRfcHBndHRfYmFycmllciwKPiArCQkJCSAg IG9sZCk7Cj4gKwlpZiAoZXJyKSB7Cj4gKwkJY3R4LT5wcGd0dCA9IG9sZDsKPiArCQljdHgtPmRl c2NfdGVtcGxhdGUgPSBkZWZhdWx0X2Rlc2NfdGVtcGxhdGUoY3R4LT5pOTE1LCBvbGQpOwo+ICsK PiArCQlpOTE1X3BwZ3R0X2Nsb3NlKHBwZ3R0KTsKPiArCQlpOTE1X3BwZ3R0X3B1dChwcGd0dCk7 Cj4gKwl9Cj4gKwo+ICt1bmxvY2s6Cj4gKwltdXRleF91bmxvY2soJmN0eC0+aTkxNS0+ZHJtLnN0 cnVjdF9tdXRleCk7Cj4gKwo+ICtvdXQ6Cj4gKwlpOTE1X3BwZ3R0X3B1dChwcGd0dCk7Cj4gKwly ZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICBzdGF0aWMgYm9vbCBjbGllbnRfaXNfYmFubmVkKHN0cnVj dCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdikKPiAgewo+ICAJcmV0dXJuIGF0b21p Y19yZWFkKCZmaWxlX3ByaXYtPmJhbl9zY29yZSkgPj0gSTkxNV9DTElFTlRfU0NPUkVfQkFOTkVE Owo+IEBAIC05NzMsNiArMTI2OCw5IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFtX2lv Y3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gIAljYXNlIEk5MTVfQ09O VEVYVF9QQVJBTV9TU0VVOgo+ICAJCXJldCA9IGdldF9zc2V1KGN0eCwgYXJncyk7Cj4gIAkJYnJl YWs7Cj4gKwljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9WTToKPiArCQlyZXQgPSBnZXRfcHBndHQo Y3R4LCBhcmdzKTsKPiArCQlicmVhazsKPiAgCWRlZmF1bHQ6Cj4gIAkJcmV0ID0gLUVJTlZBTDsK PiAgCQlicmVhazsKPiBAQCAtMTI3NCw5ICsxNTcyLDYgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRf c2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgCQly ZXR1cm4gLUVOT0VOVDsKPiAgCj4gIAlzd2l0Y2ggKGFyZ3MtPnBhcmFtKSB7Cj4gLQljYXNlIEk5 MTVfQ09OVEVYVF9QQVJBTV9CQU5fUEVSSU9EOgo+IC0JCXJldCA9IC1FSU5WQUw7Cj4gLQkJYnJl YWs7Cj4gIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9OT19aRVJPTUFQOgo+ICAJCWlmIChhcmdz LT5zaXplKQo+ICAJCQlyZXQgPSAtRUlOVkFMOwo+IEBAIC0xMzMyLDkgKzE2MjcsMTYgQEAgaW50 IGk5MTVfZ2VtX2NvbnRleHRfc2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dm9pZCAqZGF0YSwKPiAgCQkJCQlJOTE1X1VTRVJfUFJJT1JJVFkocHJpb3JpdHkpOwo+ICAJCX0K PiAgCQlicmVhazsKPiArCj4gIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVOgo+ICAJCXJl dCA9IHNldF9zc2V1KGN0eCwgYXJncyk7Cj4gIAkJYnJlYWs7Cj4gKwo+ICsJY2FzZSBJOTE1X0NP TlRFWFRfUEFSQU1fVk06Cj4gKwkJcmV0ID0gc2V0X3BwZ3R0KGN0eCwgYXJncyk7Cj4gKwkJYnJl YWs7Cj4gKwo+ICsJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fQkFOX1BFUklPRDoKPiAgCWRlZmF1 bHQ6Cj4gIAkJcmV0ID0gLUVJTlZBTDsKPiAgCQlicmVhazsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fY29udGV4dC5oCj4gaW5kZXggNWEzMmM0YjQ4MTZmLi4xZTY3MDM3Mjg5MmMgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCj4gQEAgLTE1Myw2ICsx NTMsMTEgQEAgdm9pZCBpOTE1X2dlbV9jb250ZXh0X3JlbGVhc2Uoc3RydWN0IGtyZWYgKmN0eF9y ZWYpOwo+ICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqCj4gIGk5MTVfZ2VtX2NvbnRleHRfY3Jl YXRlX2d2dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgCj4gK2ludCBpOTE1X2dlbV92bV9j cmVhdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiArCQkJICAg ICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpOwo+ICtpbnQgaTkxNV9nZW1fdm1fZGVzdHJveV9pb2N0 bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICsJCQkgICAgICBzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbGUpOwo+ICsKPiAgaW50IGk5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2lvY3Rs KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gIAkJCQkgIHN0cnVjdCBkcm1f ZmlsZSAqZmlsZSk7Cj4gIGludCBpOTE1X2dlbV9jb250ZXh0X2Rlc3Ryb3lfaW9jdGwoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuYwo+IGluZGV4IGRhYzA4ZDljM2ZhYi4uYzA5NzJjZDk1MjgzIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBAQCAtMTkzOSw2ICsxOTM5LDggQEAgaW50IGdlbjZfcHBn dHRfcGluKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpiYXNlKQo+ICAJc3RydWN0IGdlbjZfaHdfcHBn dHQgKnBwZ3R0ID0gdG9fZ2VuNl9wcGd0dChiYXNlKTsKPiAgCWludCBlcnI7Cj4gIAo+ICsJR0VN X0JVR19PTihwcGd0dC0+YmFzZS52bS5jbG9zZWQpOwo+ICsKPiAgCS8qCj4gIAkgKiBXb3JrYXJv dW5kIHRoZSBsaW1pdGVkIG1heGltdW0gdm1hLT5waW5fY291bnQgYW5kIHRoZSBhbGlhc2luZ19w cGd0dAo+ICAJICogd2hpY2ggd2lsbCBiZSBwaW5uZWQgaW50byBldmVyeSBhY3RpdmUgY29udGV4 dC4KPiBAQCAtMTk3Nyw2ICsxOTc5LDE3IEBAIHZvaWQgZ2VuNl9wcGd0dF91bnBpbihzdHJ1Y3Qg aTkxNV9od19wcGd0dCAqYmFzZSkKPiAgCWk5MTVfdm1hX3VucGluKHBwZ3R0LT52bWEpOwo+ICB9 Cj4gIAo+ICt2b2lkIGdlbjZfcHBndHRfdW5waW5fYWxsKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpi YXNlKQo+ICt7Cj4gKwlzdHJ1Y3QgZ2VuNl9od19wcGd0dCAqcHBndHQgPSB0b19nZW42X3BwZ3R0 KGJhc2UpOwo+ICsKPiArCWlmICghcHBndHQtPnBpbl9jb3VudCkKPiArCQlyZXR1cm47Cj4gKwo+ ICsJcHBndHQtPnBpbl9jb3VudCA9IDA7Cj4gKwlpOTE1X3ZtYV91bnBpbihwcGd0dC0+dm1hKTsK PiArfQo+ICsKPiAgc3RhdGljIHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpnZW42X3BwZ3R0X2NyZWF0 ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgewo+ICAJc3RydWN0IGk5MTVfZ2d0 dCAqIGNvbnN0IGdndHQgPSAmaTkxNS0+Z2d0dDsKPiBAQCAtMjA5OSwxMCArMjExMiwyMSBAQCBp OTE1X3BwZ3R0X2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgCXJldHVy biBwcGd0dDsKPiAgfQo+ICAKPiAtdm9pZCBpOTE1X3BwZ3R0X2Nsb3NlKHN0cnVjdCBpOTE1X2Fk ZHJlc3Nfc3BhY2UgKnZtKQo+ICt2b2lkIGk5MTVfcHBndHRfb3BlbihzdHJ1Y3QgaTkxNV9od19w cGd0dCAqcHBndHQpCj4gIHsKPiAtCUdFTV9CVUdfT04odm0tPmNsb3NlZCk7Cj4gLQl2bS0+Y2xv c2VkID0gdHJ1ZTsKPiArCUdFTV9CVUdfT04ocHBndHQtPnZtLmNsb3NlZCk7Cj4gKwo+ICsJcHBn dHQtPm9wZW5fY291bnQrKzsKPiArfQo+ICsKPiArdm9pZCBpOTE1X3BwZ3R0X2Nsb3NlKHN0cnVj dCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKPiArewo+ICsJR0VNX0JVR19PTighcHBndHQtPm9wZW5f Y291bnQpOwo+ICsJaWYgKC0tcHBndHQtPm9wZW5fY291bnQpCj4gKwkJcmV0dXJuOwo+ICsKPiAr CUdFTV9CVUdfT04ocHBndHQtPnZtLmNsb3NlZCk7Cj4gKwlwcGd0dC0+dm0uY2xvc2VkID0gdHJ1 ZTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgcHBndHRfZGVzdHJveV92bWEoc3RydWN0IGk5MTVf YWRkcmVzc19zcGFjZSAqdm0pCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2d0dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKPiBpbmRl eCBhNDdlMTFlNmZjMWIuLjU5NzNkOTJlNDVmYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2d0dC5oCj4gQEAgLTM5MSwxMSArMzkxLDE1IEBAIHN0cnVjdCBpOTE1X2h3X3BwZ3R0IHsK PiAgCXN0cnVjdCBrcmVmIHJlZjsKPiAgCj4gIAl1bnNpZ25lZCBsb25nIHBkX2RpcnR5X2VuZ2lu ZXM7Cj4gKwl1bnNpZ25lZCBpbnQgb3Blbl9jb3VudDsKPiArCj4gIAl1bmlvbiB7Cj4gIAkJc3Ry dWN0IGk5MTVfcG1sNCBwbWw0OwkJLyogR0VOOCsgJiA0OGIgUFBHVFQgKi8KPiAgCQlzdHJ1Y3Qg aTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyIHBkcDsJLyogR0VOOCsgKi8KPiAgCQlzdHJ1Y3Qg aTkxNV9wYWdlX2RpcmVjdG9yeSBwZDsJCS8qIEdFTjYtNyAqLwo+ICAJfTsKPiArCj4gKwl1MzIg dXNlcl9oYW5kbGU7Cj4gIH07Cj4gIAo+ICBzdHJ1Y3QgZ2VuNl9od19wcGd0dCB7Cj4gQEAgLTYw NiwxMiArNjEwLDE2IEBAIGludCBpOTE1X3BwZ3R0X2luaXRfaHcoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KTsKPiAgdm9pZCBpOTE1X3BwZ3R0X3JlbGVhc2Uoc3RydWN0IGtyZWYg KmtyZWYpOwo+ICBzdHJ1Y3QgaTkxNV9od19wcGd0dCAqaTkxNV9wcGd0dF9jcmVhdGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJCXN0cnVjdCBkcm1faTkxNV9maWxl X3ByaXZhdGUgKmZwcml2KTsKPiAtdm9pZCBpOTE1X3BwZ3R0X2Nsb3NlKHN0cnVjdCBpOTE1X2Fk ZHJlc3Nfc3BhY2UgKnZtKTsKPiAtc3RhdGljIGlubGluZSB2b2lkIGk5MTVfcHBndHRfZ2V0KHN0 cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKPiArCj4gK3ZvaWQgaTkxNV9wcGd0dF9vcGVuKHN0 cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCk7Cj4gK3ZvaWQgaTkxNV9wcGd0dF9jbG9zZShzdHJ1 Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpOwo+ICsKPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgaTkx NV9od19wcGd0dCAqaTkxNV9wcGd0dF9nZXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+ ICB7Cj4gLQlpZiAocHBndHQpCj4gLQkJa3JlZl9nZXQoJnBwZ3R0LT5yZWYpOwo+ICsJa3JlZl9n ZXQoJnBwZ3R0LT5yZWYpOwo+ICsJcmV0dXJuIHBwZ3R0Owo+ICB9Cj4gKwo+ICBzdGF0aWMgaW5s aW5lIHZvaWQgaTkxNV9wcGd0dF9wdXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+ICB7 Cj4gIAlpZiAocHBndHQpCj4gQEAgLTYyMCw2ICs2MjgsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQg aTkxNV9wcGd0dF9wdXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+ICAKPiAgaW50IGdl bjZfcHBndHRfcGluKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpiYXNlKTsKPiAgdm9pZCBnZW42X3Bw Z3R0X3VucGluKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpiYXNlKTsKPiArdm9pZCBnZW42X3BwZ3R0 X3VucGluX2FsbChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqYmFzZSk7Cj4gIAo+ICB2b2lkIGk5MTVf Y2hlY2tfYW5kX2NsZWFyX2ZhdWx0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Owo+ICB2b2lkIGk5MTVfZ2VtX3N1c3BlbmRfZ3R0X21hcHBpbmdzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9odWdlX3BhZ2VzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaHVn ZV9wYWdlcy5jCj4gaW5kZXggMWU2NmNmZjk4NWY4Li4wYjc3NDBkYzE4Y2IgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9odWdlX3BhZ2VzLmMKPiBAQCAtMTczNCw3ICsx NzM0LDYgQEAgaW50IGk5MTVfZ2VtX2h1Z2VfcGFnZV9tb2NrX3NlbGZ0ZXN0cyh2b2lkKQo+ICAJ ZXJyID0gaTkxNV9zdWJ0ZXN0cyh0ZXN0cywgcHBndHQpOwo+ICAKPiAgb3V0X2Nsb3NlOgo+IC0J aTkxNV9wcGd0dF9jbG9zZSgmcHBndHQtPnZtKTsKPiAgCWk5MTVfcHBndHRfcHV0KHBwZ3R0KTsK PiAgCj4gIG91dF91bmxvY2s6Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvaTkxNV9nZW1fY29udGV4dC5jCj4gaW5kZXggNDM5OWVmOWViZjE1Li4xYmEzNTRhOTE2YzAg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2Nv bnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9j b250ZXh0LmMKPiBAQCAtMzcyLDcgKzM3Miw4IEBAIHN0YXRpYyBpbnQgY3B1X2ZpbGwoc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgdTMyIHZhbHVlKQo+ICAJcmV0dXJuIDA7Cj4gIH0K PiAgCj4gLXN0YXRpYyBpbnQgY3B1X2NoZWNrKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmosIHVuc2lnbmVkIGludCBtYXgpCj4gK3N0YXRpYyBub2lubGluZSBpbnQgY3B1X2NoZWNrKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gKwkJCSAgICAgIHVuc2lnbmVkIGludCBp ZHgsIHVuc2lnbmVkIGludCBtYXgpCj4gIHsKPiAgCXVuc2lnbmVkIGludCBuLCBtLCBuZWVkc19m bHVzaDsKPiAgCWludCBlcnI7Cj4gQEAgLTM5MCw4ICszOTEsMTAgQEAgc3RhdGljIGludCBjcHVf Y2hlY2soc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgdW5zaWduZWQgaW50IG1heCkK PiAgCj4gIAkJZm9yIChtID0gMDsgbSA8IG1heDsgbSsrKSB7Cj4gIAkJCWlmIChtYXBbbV0gIT0g bSkgewo+IC0JCQkJcHJfZXJyKCJJbnZhbGlkIHZhbHVlIGF0IHBhZ2UgJWQsIG9mZnNldCAlZDog Zm91bmQgJXggZXhwZWN0ZWQgJXhcbiIsCj4gLQkJCQkgICAgICAgbiwgbSwgbWFwW21dLCBtKTsK PiArCQkJCXByX2VycigiJXBTOiBJbnZhbGlkIHZhbHVlIGF0IG9iamVjdCAlZCBwYWdlICVkLyVs ZCwgb2Zmc2V0ICVkLyVkOiBmb3VuZCAleCBleHBlY3RlZCAleFxuIiwKPiArCQkJCSAgICAgICBf X2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCksIGlkeCwKPiArCQkJCSAgICAgICBuLCByZWFsX3Bh Z2VfY291bnQob2JqKSwgbSwgbWF4LAo+ICsJCQkJICAgICAgIG1hcFttXSwgbSk7Cj4gIAkJCQll cnIgPSAtRUlOVkFMOwo+ICAJCQkJZ290byBvdXRfdW5tYXA7Cj4gIAkJCX0KPiBAQCAtMzk5LDgg KzQwMiw5IEBAIHN0YXRpYyBpbnQgY3B1X2NoZWNrKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmosIHVuc2lnbmVkIGludCBtYXgpCj4gIAo+ICAJCWZvciAoOyBtIDwgRFdfUEVSX1BBR0U7 IG0rKykgewo+ICAJCQlpZiAobWFwW21dICE9IFNUQUNLX01BR0lDKSB7Cj4gLQkJCQlwcl9lcnIo IkludmFsaWQgdmFsdWUgYXQgcGFnZSAlZCwgb2Zmc2V0ICVkOiBmb3VuZCAleCBleHBlY3RlZCAl eFxuIiwKPiAtCQkJCSAgICAgICBuLCBtLCBtYXBbbV0sIFNUQUNLX01BR0lDKTsKPiArCQkJCXBy X2VycigiJXBTOiBJbnZhbGlkIHZhbHVlIGF0IG9iamVjdCAlZCBwYWdlICVkLCBvZmZzZXQgJWQ6 IGZvdW5kICV4IGV4cGVjdGVkICV4ICh1bmluaXRpYWxpc2VkKVxuIiwKPiArCQkJCSAgICAgICBf X2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCksIGlkeCwgbiwgbSwKPiArCQkJCSAgICAgICBtYXBb bV0sIFNUQUNLX01BR0lDKTsKPiAgCQkJCWVyciA9IC1FSU5WQUw7Cj4gIAkJCQlnb3RvIG91dF91 bm1hcDsKPiAgCQkJfQo+IEBAIC00NzgsMTIgKzQ4Miw4IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25n IG1heF9kd29yZHMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAgc3RhdGljIGlu dCBpZ3RfY3R4X2V4ZWModm9pZCAqYXJnKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSA9IGFyZzsKPiAtCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBOVUxM Owo+IC0JdW5zaWduZWQgbG9uZyBuY29udGV4dHMsIG5kd29yZHMsIGR3Owo+IC0Jc3RydWN0IGln dF9saXZlX3Rlc3QgdDsKPiAtCXN0cnVjdCBkcm1fZmlsZSAqZmlsZTsKPiAtCUlHVF9USU1FT1VU KGVuZF90aW1lKTsKPiAtCUxJU1RfSEVBRChvYmplY3RzKTsKPiArCXN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZTsKPiArCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+ICAJaW50IGVyciA9 IC1FTk9ERVY7Cj4gIAo+ICAJLyoKPiBAQCAtNDk1LDQ0ICs0OTUsMTY5IEBAIHN0YXRpYyBpbnQg aWd0X2N0eF9leGVjKHZvaWQgKmFyZykKPiAgCWlmICghRFJJVkVSX0NBUFMoaTkxNSktPmhhc19s b2dpY2FsX2NvbnRleHRzKQo+ICAJCXJldHVybiAwOwo+ICAKPiArCWZvcl9lYWNoX2VuZ2luZShl bmdpbmUsIGk5MTUsIGlkKSB7Cj4gKwkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9 IE5VTEw7Cj4gKwkJdW5zaWduZWQgbG9uZyBuY29udGV4dHMsIG5kd29yZHMsIGR3Owo+ICsJCXN0 cnVjdCBpZ3RfbGl2ZV90ZXN0IHQ7Cj4gKwkJc3RydWN0IGRybV9maWxlICpmaWxlOwo+ICsJCUlH VF9USU1FT1VUKGVuZF90aW1lKTsKPiArCQlMSVNUX0hFQUQob2JqZWN0cyk7Cj4gKwo+ICsJCWlm ICghaW50ZWxfZW5naW5lX2Nhbl9zdG9yZV9kd29yZChlbmdpbmUpKQo+ICsJCQljb250aW51ZTsK PiArCj4gKwkJaWYgKCFlbmdpbmUtPmNvbnRleHRfc2l6ZSkKPiArCQkJY29udGludWU7IC8qIE5v IGxvZ2ljYWwgY29udGV4dCBzdXBwb3J0IGluIEhXICovCj4gKwo+ICsJCWZpbGUgPSBtb2NrX2Zp bGUoaTkxNSk7Cj4gKwkJaWYgKElTX0VSUihmaWxlKSkKPiArCQkJcmV0dXJuIFBUUl9FUlIoZmls ZSk7Cj4gKwo+ICsJCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsKPiAr CQllcnIgPSBpZ3RfbGl2ZV90ZXN0X2JlZ2luKCZ0LCBpOTE1LCBfX2Z1bmNfXywgZW5naW5lLT5u YW1lKTsKPiArCQlpZiAoZXJyKQo+ICsJCQlnb3RvIG91dF91bmxvY2s7Cj4gKwo+ICsJCW5jb250 ZXh0cyA9IDA7Cj4gKwkJbmR3b3JkcyA9IDA7Cj4gKwkJZHcgPSAwOwo+ICsJCXdoaWxlICghdGlt ZV9hZnRlcihqaWZmaWVzLCBlbmRfdGltZSkpIHsKPiArCQkJc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKmN0eDsKPiArCQkJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gKwo+ICsJCQljdHggPSBp OTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBmaWxlLT5kcml2ZXJfcHJpdik7Cj4gKwkJCWlm IChJU19FUlIoY3R4KSkgewo+ICsJCQkJZXJyID0gUFRSX0VSUihjdHgpOwo+ICsJCQkJZ290byBv dXRfdW5sb2NrOwo+ICsJCQl9Cj4gKwo+ICsJCQlpZiAoIW9iaikgewo+ICsJCQkJb2JqID0gY3Jl YXRlX3Rlc3Rfb2JqZWN0KGN0eCwgZmlsZSwgJm9iamVjdHMpOwo+ICsJCQkJaWYgKElTX0VSUihv YmopKSB7Cj4gKwkJCQkJZXJyID0gUFRSX0VSUihvYmopOwo+ICsJCQkJCWdvdG8gb3V0X3VubG9j azsKPiArCQkJCX0KPiArCQkJfQo+ICsKPiArCQkJd2l0aF9pbnRlbF9ydW50aW1lX3BtKGk5MTUs IHdha2VyZWYpCj4gKwkJCQllcnIgPSBncHVfZmlsbChvYmosIGN0eCwgZW5naW5lLCBkdyk7Cj4g KwkJCWlmIChlcnIpIHsKPiArCQkJCXByX2VycigiRmFpbGVkIHRvIGZpbGwgZHdvcmQgJWx1IFsl bHUvJWx1XSB3aXRoIGdwdSAoJXMpIGluIGN0eCAldSBbZnVsbC1wcGd0dD8gJXNdLCBlcnI9JWRc biIsCj4gKwkJCQkgICAgICAgbmR3b3JkcywgZHcsIG1heF9kd29yZHMob2JqKSwKPiArCQkJCSAg ICAgICBlbmdpbmUtPm5hbWUsIGN0eC0+aHdfaWQsCj4gKwkJCQkgICAgICAgeWVzbm8oISFjdHgt PnBwZ3R0KSwgZXJyKTsKPiArCQkJCWdvdG8gb3V0X3VubG9jazsKPiArCQkJfQo+ICsKPiArCQkJ aWYgKCsrZHcgPT0gbWF4X2R3b3JkcyhvYmopKSB7Cj4gKwkJCQlvYmogPSBOVUxMOwo+ICsJCQkJ ZHcgPSAwOwo+ICsJCQl9Cj4gKwo+ICsJCQluZHdvcmRzKys7Cj4gKwkJCW5jb250ZXh0cysrOwo+ ICsJCX0KPiArCj4gKwkJcHJfaW5mbygiU3VibWl0dGVkICVsdSBjb250ZXh0cyB0byAlcywgZmls bGluZyAlbHUgZHdvcmRzXG4iLAo+ICsJCQluY29udGV4dHMsIGVuZ2luZS0+bmFtZSwgbmR3b3Jk cyk7Cj4gKwo+ICsJCW5jb250ZXh0cyA9IGR3ID0gMDsKPiArCQlsaXN0X2Zvcl9lYWNoX2VudHJ5 KG9iaiwgJm9iamVjdHMsIHN0X2xpbmspIHsKPiArCQkJdW5zaWduZWQgaW50IHJlbSA9Cj4gKwkJ CQltaW5fdCh1bnNpZ25lZCBpbnQsIG5kd29yZHMgLSBkdywgbWF4X2R3b3JkcyhvYmopKTsKPiAr Cj4gKwkJCWVyciA9IGNwdV9jaGVjayhvYmosIG5jb250ZXh0cysrLCByZW0pOwo+ICsJCQlpZiAo ZXJyKQo+ICsJCQkJYnJlYWs7Cj4gKwo+ICsJCQlkdyArPSByZW07Cj4gKwkJfQo+ICsKPiArb3V0 X3VubG9jazoKPiArCQlpZiAoaWd0X2xpdmVfdGVzdF9lbmQoJnQpKQo+ICsJCQllcnIgPSAtRUlP Owo+ICsJCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwo+ICsJCW1v Y2tfZmlsZV9mcmVlKGk5MTUsIGZpbGUpOwo+ICsJCWlmIChlcnIpCj4gKwkJCXJldHVybiBlcnI7 Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgaWd0X3NoYXJl ZF9jdHhfZXhlYyh2b2lkICphcmcpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1ID0gYXJnOwo+ICsJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKnBhcmVudDsKPiArCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiArCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+ ICsJc3RydWN0IGlndF9saXZlX3Rlc3QgdDsKPiArCXN0cnVjdCBkcm1fZmlsZSAqZmlsZTsKPiAr CWludCBlcnIgPSAwOwo+ICsKPiArCS8qCj4gKwkgKiBDcmVhdGUgYSBmZXcgZGlmZmVyZW50IGNv bnRleHRzIHdpdGggdGhlIHNhbWUgbW0gYW5kIHdyaXRlCj4gKwkgKiB0aHJvdWdoIGVhY2ggY3R4 IHVzaW5nIHRoZSBHUFUgbWFraW5nIHN1cmUgdGhvc2Ugd3JpdGVzIGVuZAo+ICsJICogdXAgaW4g dGhlIGV4cGVjdGVkIHBhZ2VzIG9mIG91ciBvYmouCj4gKwkgKi8KPiArCWlmICghRFJJVkVSX0NB UFMoaTkxNSktPmhhc19sb2dpY2FsX2NvbnRleHRzKQo+ICsJCXJldHVybiAwOwo+ICsKPiAgCWZp bGUgPSBtb2NrX2ZpbGUoaTkxNSk7Cj4gIAlpZiAoSVNfRVJSKGZpbGUpKQo+ICAJCXJldHVybiBQ VFJfRVJSKGZpbGUpOwo+ICAKPiAgCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp Owo+ICAKPiArCXBhcmVudCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsIGZpbGUtPmRy aXZlcl9wcml2KTsKPiArCWlmIChJU19FUlIocGFyZW50KSkgewo+ICsJCWVyciA9IFBUUl9FUlIo cGFyZW50KTsKPiArCQlnb3RvIG91dF91bmxvY2s7Cj4gKwl9Cj4gKwo+ICsJaWYgKCFwYXJlbnQt PnBwZ3R0KSB7IC8qIG5vdCBmdWxsLXBwZ3R0OyBub3RoaW5nIHRvIHNoYXJlICovCj4gKwkJZXJy ID0gLUVOT0RFVjsKPiArCQlnb3RvIG91dF91bmxvY2s7Cj4gKwl9Cj4gKwo+ICAJZXJyID0gaWd0 X2xpdmVfdGVzdF9iZWdpbigmdCwgaTkxNSwgX19mdW5jX18sICIiKTsKPiAgCWlmIChlcnIpCj4g IAkJZ290byBvdXRfdW5sb2NrOwo+ICAKPiAtCW5jb250ZXh0cyA9IDA7Cj4gLQluZHdvcmRzID0g MDsKPiAtCWR3ID0gMDsKPiAtCXdoaWxlICghdGltZV9hZnRlcihqaWZmaWVzLCBlbmRfdGltZSkp IHsKPiAtCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gLQkJc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKmN0eDsKPiAtCQl1bnNpZ25lZCBpbnQgaWQ7Cj4gKwlmb3JfZWFjaF9lbmdp bmUoZW5naW5lLCBpOTE1LCBpZCkgewo+ICsJCXVuc2lnbmVkIGxvbmcgbmNvbnRleHRzLCBuZHdv cmRzLCBkdzsKPiArCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gTlVMTDsKPiAr CQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4ID0gTlVMTDsKPiArCQlJR1RfVElNRU9VVChl bmRfdGltZSk7Cj4gKwkJTElTVF9IRUFEKG9iamVjdHMpOwo+ICAKPiAtCQljdHggPSBpOTE1X2dl bV9jcmVhdGVfY29udGV4dChpOTE1LCBmaWxlLT5kcml2ZXJfcHJpdik7Cj4gLQkJaWYgKElTX0VS UihjdHgpKSB7Cj4gLQkJCWVyciA9IFBUUl9FUlIoY3R4KTsKPiAtCQkJZ290byBvdXRfdW5sb2Nr Owo+IC0JCX0KPiArCQlpZiAoIWludGVsX2VuZ2luZV9jYW5fc3RvcmVfZHdvcmQoZW5naW5lKSkK PiArCQkJY29udGludWU7Cj4gIAo+IC0JCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlk KSB7Cj4gKwkJZHcgPSAwOwo+ICsJCW5kd29yZHMgPSAwOwo+ICsJCW5jb250ZXh0cyA9IDA7Cj4g KwkJd2hpbGUgKCF0aW1lX2FmdGVyKGppZmZpZXMsIGVuZF90aW1lKSkgewo+ICAJCQlpbnRlbF93 YWtlcmVmX3Qgd2FrZXJlZjsKPiAgCj4gLQkJCWlmICghZW5naW5lLT5jb250ZXh0X3NpemUpCj4g LQkJCQljb250aW51ZTsgLyogTm8gbG9naWNhbCBjb250ZXh0IHN1cHBvcnQgaW4gSFcgKi8KPiAr CQkJaWYgKGN0eCkKPiArCQkJCV9fZGVzdHJveV9od19jb250ZXh0KGN0eCwgZmlsZS0+ZHJpdmVy X3ByaXYpOwo+ICAKPiAtCQkJaWYgKCFpbnRlbF9lbmdpbmVfY2FuX3N0b3JlX2R3b3JkKGVuZ2lu ZSkpCj4gLQkJCQljb250aW51ZTsKPiArCQkJY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQo aTkxNSwgZmlsZS0+ZHJpdmVyX3ByaXYpOwo+ICsJCQlpZiAoSVNfRVJSKGN0eCkpIHsKPiArCQkJ CWVyciA9IFBUUl9FUlIoY3R4KTsKPiArCQkJCWdvdG8gb3V0X3Rlc3Q7Cj4gKwkJCX0KPiArCj4g KwkJCV9fYXNzaWduX3BwZ3R0KGN0eCwgcGFyZW50LT5wcGd0dCk7Cj4gIAo+ICAJCQlpZiAoIW9i aikgewo+IC0JCQkJb2JqID0gY3JlYXRlX3Rlc3Rfb2JqZWN0KGN0eCwgZmlsZSwgJm9iamVjdHMp Owo+ICsJCQkJb2JqID0gY3JlYXRlX3Rlc3Rfb2JqZWN0KHBhcmVudCwgZmlsZSwgJm9iamVjdHMp Owo+ICAJCQkJaWYgKElTX0VSUihvYmopKSB7Cj4gIAkJCQkJZXJyID0gUFRSX0VSUihvYmopOwo+ IC0JCQkJCWdvdG8gb3V0X3VubG9jazsKPiArCQkJCQlnb3RvIG91dF90ZXN0Owo+ICAJCQkJfQo+ ICAJCQl9Cj4gIAo+IEBAIC01NDQsMzUgKzY2OSwzNiBAQCBzdGF0aWMgaW50IGlndF9jdHhfZXhl Yyh2b2lkICphcmcpCj4gIAkJCQkgICAgICAgbmR3b3JkcywgZHcsIG1heF9kd29yZHMob2JqKSwK PiAgCQkJCSAgICAgICBlbmdpbmUtPm5hbWUsIGN0eC0+aHdfaWQsCj4gIAkJCQkgICAgICAgeWVz bm8oISFjdHgtPnBwZ3R0KSwgZXJyKTsKPiAtCQkJCWdvdG8gb3V0X3VubG9jazsKPiArCQkJCWdv dG8gb3V0X3Rlc3Q7Cj4gIAkJCX0KPiAgCj4gIAkJCWlmICgrK2R3ID09IG1heF9kd29yZHMob2Jq KSkgewo+ICAJCQkJb2JqID0gTlVMTDsKPiAgCQkJCWR3ID0gMDsKPiAgCQkJfQo+ICsKPiAgCQkJ bmR3b3JkcysrOwo+ICsJCQluY29udGV4dHMrKzsKPiAgCQl9Cj4gLQkJbmNvbnRleHRzKys7Cj4g LQl9Cj4gLQlwcl9pbmZvKCJTdWJtaXR0ZWQgJWx1IGNvbnRleHRzIChhY3Jvc3MgJXUgZW5naW5l cyksIGZpbGxpbmcgJWx1IGR3b3Jkc1xuIiwKPiAtCQluY29udGV4dHMsIFJVTlRJTUVfSU5GTyhp OTE1KS0+bnVtX2VuZ2luZXMsIG5kd29yZHMpOwo+ICsJCXByX2luZm8oIlN1Ym1pdHRlZCAlbHUg Y29udGV4dHMgdG8gJXMsIGZpbGxpbmcgJWx1IGR3b3Jkc1xuIiwKPiArCQkJbmNvbnRleHRzLCBl bmdpbmUtPm5hbWUsIG5kd29yZHMpOwo+ICAKPiAtCWR3ID0gMDsKPiAtCWxpc3RfZm9yX2VhY2hf ZW50cnkob2JqLCAmb2JqZWN0cywgc3RfbGluaykgewo+IC0JCXVuc2lnbmVkIGludCByZW0gPQo+ IC0JCQltaW5fdCh1bnNpZ25lZCBpbnQsIG5kd29yZHMgLSBkdywgbWF4X2R3b3JkcyhvYmopKTsK PiArCQluY29udGV4dHMgPSBkdyA9IDA7Cj4gKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShvYmosICZv YmplY3RzLCBzdF9saW5rKSB7Cj4gKwkJCXVuc2lnbmVkIGludCByZW0gPQo+ICsJCQkJbWluX3Qo dW5zaWduZWQgaW50LCBuZHdvcmRzIC0gZHcsIG1heF9kd29yZHMob2JqKSk7Cj4gIAo+IC0JCWVy ciA9IGNwdV9jaGVjayhvYmosIHJlbSk7Cj4gLQkJaWYgKGVycikKPiAtCQkJYnJlYWs7Cj4gKwkJ CWVyciA9IGNwdV9jaGVjayhvYmosIG5jb250ZXh0cysrLCByZW0pOwo+ICsJCQlpZiAoZXJyKQo+ ICsJCQkJZ290byBvdXRfdGVzdDsKPiAgCj4gLQkJZHcgKz0gcmVtOwo+ICsJCQlkdyArPSByZW07 Cj4gKwkJfQo+ICAJfQo+IC0KPiAtb3V0X3VubG9jazoKPiArb3V0X3Rlc3Q6Cj4gIAlpZiAoaWd0 X2xpdmVfdGVzdF9lbmQoJnQpKQo+ICAJCWVyciA9IC1FSU87Cj4gK291dF91bmxvY2s6Cj4gIAlt dXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAKPiAgCW1vY2tfZmlsZV9m cmVlKGk5MTUsIGZpbGUpOwo+IEBAIC0xMDQ4LDcgKzExNzQsNyBAQCBzdGF0aWMgaW50IGlndF9j dHhfcmVhZG9ubHkodm9pZCAqYXJnKQo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiA9IE5VTEw7Cj4gIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owo+ICAJc3RydWN0IGk5 MTVfaHdfcHBndHQgKnBwZ3R0Owo+IC0JdW5zaWduZWQgbG9uZyBuZHdvcmRzLCBkdzsKPiArCXVu c2lnbmVkIGxvbmcgaWR4LCBuZHdvcmRzLCBkdzsKPiAgCXN0cnVjdCBpZ3RfbGl2ZV90ZXN0IHQ7 Cj4gIAlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGU7Cj4gIAlJOTE1X1JORF9TVEFURShwcm5nKTsKPiBA QCAtMTEyOSw2ICsxMjU1LDcgQEAgc3RhdGljIGludCBpZ3RfY3R4X3JlYWRvbmx5KHZvaWQgKmFy ZykKPiAgCQluZHdvcmRzLCBSVU5USU1FX0lORk8oaTkxNSktPm51bV9lbmdpbmVzKTsKPiAgCj4g IAlkdyA9IDA7Cj4gKwlpZHggPSAwOwo+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeShvYmosICZvYmpl Y3RzLCBzdF9saW5rKSB7Cj4gIAkJdW5zaWduZWQgaW50IHJlbSA9Cj4gIAkJCW1pbl90KHVuc2ln bmVkIGludCwgbmR3b3JkcyAtIGR3LCBtYXhfZHdvcmRzKG9iaikpOwo+IEBAIC0xMTM4LDcgKzEy NjUsNyBAQCBzdGF0aWMgaW50IGlndF9jdHhfcmVhZG9ubHkodm9pZCAqYXJnKQo+ICAJCWlmIChp OTE1X2dlbV9vYmplY3RfaXNfcmVhZG9ubHkob2JqKSkKPiAgCQkJbnVtX3dyaXRlcyA9IDA7Cj4g IAo+IC0JCWVyciA9IGNwdV9jaGVjayhvYmosIG51bV93cml0ZXMpOwo+ICsJCWVyciA9IGNwdV9j aGVjayhvYmosIGlkeCsrLCBudW1fd3JpdGVzKTsKPiAgCQlpZiAoZXJyKQo+ICAJCQlicmVhazsK PiAgCj4gQEAgLTE2MjYsNyArMTc1Myw4IEBAIHN0YXRpYyBpbnQgbW9ja19jb250ZXh0X2JhcnJp ZXIodm9pZCAqYXJnKQo+ICAJfQo+ICAKPiAgCWNvdW50ZXIgPSAwOwo+IC0JZXJyID0gY29udGV4 dF9iYXJyaWVyX3Rhc2soY3R4LCAwLCBtb2NrX2JhcnJpZXJfdGFzaywgJmNvdW50ZXIpOwo+ICsJ ZXJyID0gY29udGV4dF9iYXJyaWVyX3Rhc2soY3R4LCAwLAo+ICsJCQkJICAgTlVMTCwgbW9ja19i YXJyaWVyX3Rhc2ssICZjb3VudGVyKTsKPiAgCWlmIChlcnIpIHsKPiAgCQlwcl9lcnIoIkZhaWxl ZCBhdCBsaW5lICVkLCBlcnI9JWRcbiIsIF9fTElORV9fLCBlcnIpOwo+ICAJCWdvdG8gb3V0Owo+ IEBAIC0xNjM4LDggKzE3NjYsOCBAQCBzdGF0aWMgaW50IG1vY2tfY29udGV4dF9iYXJyaWVyKHZv aWQgKmFyZykKPiAgCX0KPiAgCj4gIAljb3VudGVyID0gMDsKPiAtCWVyciA9IGNvbnRleHRfYmFy cmllcl90YXNrKGN0eCwKPiAtCQkJCSAgIEFMTF9FTkdJTkVTLCBtb2NrX2JhcnJpZXJfdGFzaywg JmNvdW50ZXIpOwo+ICsJZXJyID0gY29udGV4dF9iYXJyaWVyX3Rhc2soY3R4LCBBTExfRU5HSU5F UywKPiArCQkJCSAgIE5VTEwsIG1vY2tfYmFycmllcl90YXNrLCAmY291bnRlcik7Cj4gIAlpZiAo ZXJyKSB7Cj4gIAkJcHJfZXJyKCJGYWlsZWQgYXQgbGluZSAlZCwgZXJyPSVkXG4iLCBfX0xJTkVf XywgZXJyKTsKPiAgCQlnb3RvIG91dDsKPiBAQCAtMTY2Miw4ICsxNzkwLDggQEAgc3RhdGljIGlu dCBtb2NrX2NvbnRleHRfYmFycmllcih2b2lkICphcmcpCj4gIAo+ICAJY291bnRlciA9IDA7Cj4g IAljb250ZXh0X2JhcnJpZXJfaW5qZWN0X2ZhdWx0ID0gQklUKFJDUzApOwo+IC0JZXJyID0gY29u dGV4dF9iYXJyaWVyX3Rhc2soY3R4LAo+IC0JCQkJICAgQUxMX0VOR0lORVMsIG1vY2tfYmFycmll cl90YXNrLCAmY291bnRlcik7Cj4gKwllcnIgPSBjb250ZXh0X2JhcnJpZXJfdGFzayhjdHgsIEFM TF9FTkdJTkVTLAo+ICsJCQkJICAgTlVMTCwgbW9ja19iYXJyaWVyX3Rhc2ssICZjb3VudGVyKTsK PiAgCWNvbnRleHRfYmFycmllcl9pbmplY3RfZmF1bHQgPSAwOwo+ICAJaWYgKGVyciA9PSAtRU5Y SU8pCj4gIAkJZXJyID0gMDsKPiBAQCAtMTY3Nyw4ICsxODA1LDggQEAgc3RhdGljIGludCBtb2Nr X2NvbnRleHRfYmFycmllcih2b2lkICphcmcpCj4gIAkJZ290byBvdXQ7Cj4gIAo+ICAJY291bnRl ciA9IDA7Cj4gLQllcnIgPSBjb250ZXh0X2JhcnJpZXJfdGFzayhjdHgsCj4gLQkJCQkgICBBTExf RU5HSU5FUywgbW9ja19iYXJyaWVyX3Rhc2ssICZjb3VudGVyKTsKPiArCWVyciA9IGNvbnRleHRf YmFycmllcl90YXNrKGN0eCwgQUxMX0VOR0lORVMsCj4gKwkJCQkgICBOVUxMLCBtb2NrX2JhcnJp ZXJfdGFzaywgJmNvdW50ZXIpOwo+ICAJaWYgKGVycikgewo+ICAJCXByX2VycigiRmFpbGVkIGF0 IGxpbmUgJWQsIGVycj0lZFxuIiwgX19MSU5FX18sIGVycik7Cj4gIAkJZ290byBvdXQ7Cj4gQEAg LTE3MjYsNiArMTg1NCw3IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X2xpdmVfc2VsZnRlc3RzKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQlTVUJURVNUKGlndF9jdHhfZXhl YyksCj4gIAkJU1VCVEVTVChpZ3RfY3R4X3JlYWRvbmx5KSwKPiAgCQlTVUJURVNUKGlndF9jdHhf c3NldSksCj4gKwkJU1VCVEVTVChpZ3Rfc2hhcmVkX2N0eF9leGVjKSwKPiAgCQlTVUJURVNUKGln dF92bV9pc29sYXRpb24pLAo+ICAJfTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYwo+IGluZGV4IDgyNmZkNTFjMzMxZS4uNTdiM2Q5ODY3MDcw IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9n dHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQu Ywo+IEBAIC0xMDIwLDcgKzEwMjAsNiBAQCBzdGF0aWMgaW50IGV4ZXJjaXNlX3BwZ3R0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCj4gIAllcnIgPSBmdW5jKGRldl9wcml2 LCAmcHBndHQtPnZtLCAwLCBwcGd0dC0+dm0udG90YWwsIGVuZF90aW1lKTsKPiAgCj4gLQlpOTE1 X3BwZ3R0X2Nsb3NlKCZwcGd0dC0+dm0pOwo+ICAJaTkxNV9wcGd0dF9wdXQocHBndHQpOwo+ICBv dXRfdW5sb2NrOgo+ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2NvbnRl eHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYwo+IGlu ZGV4IDhlZmE2ODkyYzZjZC4uZjkwMzI4YjIxNzYzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYwo+IEBAIC01NCwxMyArNTQsMTcgQEAgbW9j a19jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAJCWdvdG8gZXJyX2hh bmRsZXM7Cj4gIAo+ICAJaWYgKG5hbWUpIHsKPiArCQlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBn dHQ7Cj4gKwo+ICAJCWN0eC0+bmFtZSA9IGtzdHJkdXAobmFtZSwgR0ZQX0tFUk5FTCk7Cj4gIAkJ aWYgKCFjdHgtPm5hbWUpCj4gIAkJCWdvdG8gZXJyX3B1dDsKPiAgCj4gLQkJY3R4LT5wcGd0dCA9 IG1vY2tfcHBndHQoaTkxNSwgbmFtZSk7Cj4gLQkJaWYgKCFjdHgtPnBwZ3R0KQo+ICsJCXBwZ3R0 ID0gbW9ja19wcGd0dChpOTE1LCBuYW1lKTsKPiArCQlpZiAoIXBwZ3R0KQo+ICAJCQlnb3RvIGVy cl9wdXQ7Cj4gKwo+ICsJCV9fc2V0X3BwZ3R0KGN0eCwgcHBndHQpOwo+ICAJfQo+ICAKPiAgCXJl dHVybiBjdHg7Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCBiL2lu Y2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+IGluZGV4IDFjNjllZDE2YTkyMy4uNTA3OWUyNTkw OWVmIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+ICsrKyBiL2lu Y2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+IEBAIC0zNDMsNiArMzQzLDggQEAgdHlwZWRlZiBz dHJ1Y3QgX2RybV9pOTE1X3NhcmVhIHsKPiAgI2RlZmluZSBEUk1fSTkxNV9QRVJGX0FERF9DT05G SUcJMHgzNwo+ICAjZGVmaW5lIERSTV9JOTE1X1BFUkZfUkVNT1ZFX0NPTkZJRwkweDM4Cj4gICNk ZWZpbmUgRFJNX0k5MTVfUVVFUlkJCQkweDM5Cj4gKyNkZWZpbmUgRFJNX0k5MTVfR0VNX1ZNX0NS RUFURQkJMHgzYQo+ICsjZGVmaW5lIERSTV9JOTE1X0dFTV9WTV9ERVNUUk9ZCQkweDNiCj4gIC8q IE11c3QgYmUga2VwdCBjb21wYWN0IC0tIG5vIGhvbGVzICovCj4gIAo+ICAjZGVmaW5lIERSTV9J T0NUTF9JOTE1X0lOSVQJCURSTV9JT1coIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9JTklU LCBkcm1faTkxNV9pbml0X3QpCj4gQEAgLTQwMiw2ICs0MDQsOCBAQCB0eXBlZGVmIHN0cnVjdCBf ZHJtX2k5MTVfc2FyZWEgewo+ICAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X1BFUkZfQUREX0NPTkZJ RwlEUk1fSU9XKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9QRVJGX0FERF9DT05GSUcsIHN0 cnVjdCBkcm1faTkxNV9wZXJmX29hX2NvbmZpZykKPiAgI2RlZmluZSBEUk1fSU9DVExfSTkxNV9Q RVJGX1JFTU9WRV9DT05GSUcJRFJNX0lPVyhEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfUEVS Rl9SRU1PVkVfQ09ORklHLCBfX3U2NCkKPiAgI2RlZmluZSBEUk1fSU9DVExfSTkxNV9RVUVSWQkJ CURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9RVUVSWSwgc3RydWN0IGRybV9p OTE1X3F1ZXJ5KQo+ICsjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9WTV9DUkVBVEUJRFJNX0lP V1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9WTV9DUkVBVEUsIHN0cnVjdCBkcm1f aTkxNV9nZW1fdm1fY29udHJvbCkKPiArI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fVk1fREVT VFJPWQlEUk1fSU9XIChEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX1ZNX0RFU1RST1ks IHN0cnVjdCBkcm1faTkxNV9nZW1fdm1fY29udHJvbCkKPiAgCj4gIC8qIEFsbG93IGRyaXZlcnMg dG8gc3VibWl0IGJhdGNoYnVmZmVycyBkaXJlY3RseSB0byBoYXJkd2FyZSwgcmVseWluZwo+ICAg KiBvbiB0aGUgc2VjdXJpdHkgbWVjaGFuaXNtcyBwcm92aWRlZCBieSBoYXJkd2FyZS4KPiBAQCAt MTQ1Myw2ICsxNDU3LDMzIEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9kZXN0cm95IHsK PiAgCV9fdTMyIHBhZDsKPiAgfTsKPiAgCj4gKy8qCj4gKyAqIERSTV9JOTE1X0dFTV9WTV9DUkVB VEUgLQo+ICsgKgo+ICsgKiBDcmVhdGUgYSBuZXcgdmlydHVhbCBtZW1vcnkgYWRkcmVzcyBzcGFj ZSAocHBHVFQpIGZvciB1c2Ugd2l0aGluIGEgY29udGV4dAo+ICsgKiBvbiB0aGUgc2FtZSBmaWxl LiBFeHRlbnNpb25zIGNhbiBiZSBwcm92aWRlZCB0byBjb25maWd1cmUgZXhhY3RseSBob3cgdGhl Cj4gKyAqIGFkZHJlc3Mgc3BhY2UgaXMgc2V0dXAgdXBvbiBjcmVhdGlvbi4KPiArICoKPiArICog VGhlIGlkIG9mIG5ldyBWTSAoYm91bmQgdG8gdGhlIGZkKSBmb3IgdXNlIHdpdGggSTkxNV9DT05U RVhUX1BBUkFNX1ZNIGlzCj4gKyAqIHJldHVybmVkIGluIHRoZSBvdXRwYXJhbSBAaWQuCj4gKyAq Cj4gKyAqIE5vIGZsYWdzIGFyZSBkZWZpbmVkLCB3aXRoIGFsbCBiaXRzIHJlc2VydmVkIGFuZCBt dXN0IGJlIHplcm8uCj4gKyAqCj4gKyAqIEFuIGV4dGVuc2lvbiBjaGFpbiBtYXliZSBwcm92aWRl ZCwgc3RhcnRpbmcgd2l0aCBAZXh0ZW5zaW9ucywgYW5kIHRlcm1pbmF0ZWQKPiArICogYnkgdGhl IEBuZXh0X2V4dGVuc2lvbiBiZWluZyAwLiBDdXJyZW50bHksIG5vIGV4dGVuc2lvbnMgYXJlIGRl ZmluZWQuCj4gKyAqCj4gKyAqIERSTV9JOTE1X0dFTV9WTV9ERVNUUk9ZIC0KPiArICoKPiArICog RGVzdHJveXMgYSBwcmV2aW91c2x5IGNyZWF0ZWQgVk0gaWQsIHNwZWNpZmllZCBpbiBAaWQuCj4g KyAqCj4gKyAqIE5vIGV4dGVuc2lvbnMgb3IgZmxhZ3MgYXJlIGFsbG93ZWQgY3VycmVudGx5LCBh bmQgc28gbXVzdCBiZSB6ZXJvLgo+ICsgKi8KPiArc3RydWN0IGRybV9pOTE1X2dlbV92bV9jb250 cm9sIHsKPiArCV9fdTY0IGV4dGVuc2lvbnM7Cj4gKwlfX3UzMiBmbGFnczsKPiArCV9fdTMyIGlk Owo+ICt9Owo+ICsKPiAgc3RydWN0IGRybV9pOTE1X3JlZ19yZWFkIHsKPiAgCS8qCj4gIAkgKiBS ZWdpc3RlciBvZmZzZXQuCj4gQEAgLTE1NDIsNyArMTU3MywxOSBAQCBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2NvbnRleHRfcGFyYW0gewo+ICAgKiBPbiBjcmVhdGlvbiwgYWxsIG5ldyBjb250ZXh0cyBh cmUgbWFya2VkIGFzIHJlY292ZXJhYmxlLgo+ICAgKi8KPiAgI2RlZmluZSBJOTE1X0NPTlRFWFRf UEFSQU1fUkVDT1ZFUkFCTEUJMHg4Cj4gKwo+ICsJLyoKPiArCSAqIFRoZSBpZCBvZiB0aGUgYXNz b2NpYXRlZCB2aXJ0dWFsIG1lbW9yeSBhZGRyZXNzIHNwYWNlIChwcEdUVCkgb2YKPiArCSAqIHRo aXMgY29udGV4dC4gQ2FuIGJlIHJldHJpZXZlZCBhbmQgcGFzc2VkIHRvIGFub3RoZXIgY29udGV4 dAo+ICsJICogKG9uIHRoZSBzYW1lIGZkKSBmb3IgYm90aCB0byB1c2UgdGhlIHNhbWUgcHBHVFQg YW5kIHNvIHNoYXJlCj4gKwkgKiBhZGRyZXNzIGxheW91dHMsIGFuZCBhdm9pZCByZWxvYWRpbmcg dGhlIHBhZ2UgdGFibGVzIG9uIGNvbnRleHQKPiArCSAqIHN3aXRjaGVzIGJldHdlZW4gdGhlbXNl bHZlcy4KPiArCSAqCj4gKwkgKiBTZWUgRFJNX0k5MTVfR0VNX1ZNX0NSRUFURSBhbmQgRFJNX0k5 MTVfR0VNX1ZNX0RFU1RST1kuCj4gKwkgKi8KPiArI2RlZmluZSBJOTE1X0NPTlRFWFRfUEFSQU1f Vk0JCTB4OQo+ICAvKiBNdXN0IGJlIGtlcHQgY29tcGFjdCAtLSBubyBob2xlcyBhbmQgd2VsbCBk b2N1bWVudGVkICovCj4gKwo+ICAJX191NjQgdmFsdWU7Cj4gIH07Cj4gIAo+IC0tIAo+IDIuMjAu MQo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4g SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=