From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 04/13] drm/i915: Create/destroy VM (ppGTT) for use with contexts Date: Fri, 8 Mar 2019 15:03:15 +0000 Message-ID: <91cf8eb4-f9bd-1fe9-4a91-89db896b7101@linux.intel.com> References: <20190308141244.16837-1-chris@chris-wilson.co.uk> <20190308141244.16837-5-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 mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 633766E3AD for ; Fri, 8 Mar 2019 15:03:18 +0000 (UTC) In-Reply-To: <20190308141244.16837-5-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 Ck9uIDA4LzAzLzIwMTkgMTQ6MTIsIENocmlzIFdpbHNvbiB3cm90ZToKPiBJbiBwcmVwYXJhdGlv biB0byBtYWtpbmcgdGhlIHBwR1RUIGJpbmRpbmcgZm9yIGEgY29udGV4dCBleHBsaWNpdCAodG8K PiBmYWNpbGl0YXRlIHJldXNpbmcgdGhlIHNhbWUgcHBHVFQgYmV0d2VlbiBkaWZmZXJlbnQgY29u dGV4dHMpLCBhbGxvdyB0aGUKPiB1c2VyIHRvIGNyZWF0ZSBhbmQgZGVzdHJveSBuYW1lZCBwcEdU VC4KPiAKPiB2MjogUmVwbGFjZSBnbG9iYWwgYmFycmllciBmb3Igc3dhcHBpbmcgb3ZlciB0aGUg cHBndHQgYW5kIHRsYnMgd2l0aCBhCj4gbG9jYWwgY29udGV4dCBiYXJyaWVyIChUdnJ0a28pCj4g djM6IHNlcmlhbGlzZSB3aXRoIHN0cnVjdF9tdXRleDsgaXQncyBsYXp5IGJ1dCByZXF1aXJlZCBk YW1taXQKPiB2NDogUmV3cml0ZSBpZ3RfY3R4X3NoYXJlZF9leGVjIHRvIGJlIG1vcmUgZGlmZmVy ZW50IChhaW1lZCB0byBiZSBtb3JlCj4gc2ltaWxhcmx5LCB0dXJuZWQgb3V0IGRpZmZlcmVudCEp Cj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28u dWs+Cj4gQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4gLS0t Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAgICAgICAgfCAgIDIg Kwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgICAz ICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyAgICAgICB8IDI1 NCArKysrKysrKysrKysrKysrKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Nv bnRleHQuaCAgICAgICB8ICAgNSArCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuYyAgICAgICAgICAgfCAgMTcgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2d0dC5oICAgICAgICAgICB8ICAxNiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2h1Z2VfcGFnZXMuYyAgIHwgICAxIC0KPiAgIC4uLi9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2k5MTVfZ2VtX2NvbnRleHQuYyB8IDIxNSArKysrKysrKysrKystLS0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYyB8ICAgMSAtCj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMgfCAgIDggKy0KPiAgIGluY2x1ZGUv dWFwaS9kcm0vaTkxNV9kcm0uaCAgICAgICAgICAgICAgICAgICB8ICAzNiArKysKPiAgIDExIGZp bGVzIGNoYW5nZWQsIDQ5NyBpbnNlcnRpb25zKCspLCA2MSBkZWxldGlvbnMoLSkKPiAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmMKPiBpbmRleCAwZDc0MzkwN2U3YmMuLjVkNTNlZmM0YzVkOSAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IEBAIC0zMTIxLDYgKzMxMjEsOCBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGRybV9pb2N0bF9kZXNjIGk5MTVfaW9jdGxzW10gPSB7Cj4gICAJRFJNX0lP Q1RMX0RFRl9EUlYoSTkxNV9QRVJGX0FERF9DT05GSUcsIGk5MTVfcGVyZl9hZGRfY29uZmlnX2lv Y3RsLCBEUk1fVU5MT0NLRUR8RFJNX1JFTkRFUl9BTExPVyksCj4gICAJRFJNX0lPQ1RMX0RFRl9E UlYoSTkxNV9QRVJGX1JFTU9WRV9DT05GSUcsIGk5MTVfcGVyZl9yZW1vdmVfY29uZmlnX2lvY3Rs LCBEUk1fVU5MT0NLRUR8RFJNX1JFTkRFUl9BTExPVyksCj4gICAJRFJNX0lPQ1RMX0RFRl9EUlYo STkxNV9RVUVSWSwgaTkxNV9xdWVyeV9pb2N0bCwgRFJNX1VOTE9DS0VEfERSTV9SRU5ERVJfQUxM T1cpLAo+ICsJRFJNX0lPQ1RMX0RFRl9EUlYoSTkxNV9HRU1fVk1fQ1JFQVRFLCBpOTE1X2dlbV92 bV9jcmVhdGVfaW9jdGwsIERSTV9SRU5ERVJfQUxMT1cpLAo+ICsJRFJNX0lPQ1RMX0RFRl9EUlYo STkxNV9HRU1fVk1fREVTVFJPWSwgaTkxNV9nZW1fdm1fZGVzdHJveV9pb2N0bCwgRFJNX1JFTkRF Ul9BTExPVyksCj4gICB9Owo+ICAgCj4gICBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgZHJpdmVy ID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IGM0ZmZlMTllYzY5OC4uOGM0ZWIz MDJjYzBiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTIxOCw2ICsyMTgsOSBA QCBzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlIHsKPiAgIAl9IG1tOwo+ICAgCXN0cnVjdCBp ZHIgY29udGV4dF9pZHI7Cj4gICAKPiArCXN0cnVjdCBtdXRleCB2bV9sb2NrOwo+ICsJc3RydWN0 IGlkciB2bV9pZHI7Cj4gKwo+ICAgCXVuc2lnbmVkIGludCBic2RfZW5naW5lOwo+ICAgCj4gICAv Kgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiBpbmRleCBiNjM3MDIy NWRjYjUuLmZiMmFiYTA2ZjY5MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9jb250ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0LmMKPiBAQCAtMTI2LDYgKzEyNiw4IEBAIHN0YXRpYyB2b2lkIGx1dF9jbG9zZShzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ICAgCQlzdHJ1Y3QgaTkxNV92bWEgKnZtYSA9IHJj dV9kZXJlZmVyZW5jZV9yYXcoKnNsb3QpOwo+ICAgCj4gICAJCXJhZGl4X3RyZWVfaXRlcl9kZWxl dGUoJmN0eC0+aGFuZGxlc192bWEsICZpdGVyLCBzbG90KTsKPiArCj4gKwkJdm1hLT5vcGVuX2Nv dW50LS07CgpPa2F5IGZpZ3VyZWQgaXQgb3V0IGluIE4tdGggYXR0ZW1wdC4uIEkgdGhpbmsuLiBs dXQgZ2V0cyB1bmxpbmtlZCBmcm9tIAp0aGUgb2JqIGx1dCBsaXN0IGJlZm9yZSB0aGlzIGRlY3Jl bWVudCBzbyB0aGVyZSBjYW4gbm90IGJlIGEgZG91YmxlIApkZWNyZW1lbnQuCgo+ICAgCQlfX2k5 MTVfZ2VtX29iamVjdF9yZWxlYXNlX3VubGVzc19hY3RpdmUodm1hLT5vYmopOwo+ICAgCX0KPiAg IAlyY3VfcmVhZF91bmxvY2soKTsKPiBAQCAtMzA2LDcgKzMwOCw3IEBAIHN0YXRpYyB2b2lkIGNv bnRleHRfY2xvc2Uoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiAgIAkgKi8KPiAgIAls dXRfY2xvc2UoY3R4KTsKPiAgIAlpZiAoY3R4LT5wcGd0dCkKPiAtCQlpOTE1X3BwZ3R0X2Nsb3Nl KCZjdHgtPnBwZ3R0LT52bSk7Cj4gKwkJaTkxNV9wcGd0dF9jbG9zZShjdHgtPnBwZ3R0KTsKPiAg IAo+ICAgCWN0eC0+ZmlsZV9wcml2ID0gRVJSX1BUUigtRUJBREYpOwo+ICAgCWk5MTVfZ2VtX2Nv bnRleHRfcHV0KGN0eCk7Cj4gQEAgLTQxNyw2ICs0MTksMzIgQEAgc3RhdGljIHZvaWQgX19kZXN0 cm95X2h3X2NvbnRleHQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAgIAljb250ZXh0 X2Nsb3NlKGN0eCk7Cj4gICB9Cj4gICAKPiArc3RhdGljIHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICoK PiArX19zZXRfcHBndHQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwgc3RydWN0IGk5MTVf aHdfcHBndHQgKnBwZ3R0KQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqb2xkID0gY3R4 LT5wcGd0dDsKPiArCj4gKwlpOTE1X3BwZ3R0X29wZW4ocHBndHQpOwo+ICsJY3R4LT5wcGd0dCA9 IGk5MTVfcHBndHRfZ2V0KHBwZ3R0KTsKPiArCj4gKwljdHgtPmRlc2NfdGVtcGxhdGUgPSBkZWZh dWx0X2Rlc2NfdGVtcGxhdGUoY3R4LT5pOTE1LCBwcGd0dCk7Cj4gKwo+ICsJcmV0dXJuIG9sZDsK PiArfQo+ICsKPiArc3RhdGljIHZvaWQgX19hc3NpZ25fcHBndHQoc3RydWN0IGk5MTVfZ2VtX2Nv bnRleHQgKmN0eCwKPiArCQkJICAgc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+ICt7Cj4g KwlpZiAocHBndHQgPT0gY3R4LT5wcGd0dCkKPiArCQlyZXR1cm47Cj4gKwo+ICsJcHBndHQgPSBf X3NldF9wcGd0dChjdHgsIHBwZ3R0KTsKPiArCWlmIChwcGd0dCkgewo+ICsJCWk5MTVfcHBndHRf Y2xvc2UocHBndHQpOwo+ICsJCWk5MTVfcHBndHRfcHV0KHBwZ3R0KTsKPiArCX0KPiArfQo+ICsK PiAgIHN0YXRpYyBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqCj4gICBpOTE1X2dlbV9jcmVhdGVf Y29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJCQlzdHJ1Y3Qg ZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXYpCj4gQEAgLTQ0Myw4ICs0NzEsOCBAQCBp OTE1X2dlbV9jcmVhdGVfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gICAJCQlyZXR1cm4gRVJSX0NBU1QocHBndHQpOwo+ICAgCQl9Cj4gICAKPiAtCQljdHgtPnBw Z3R0ID0gcHBndHQ7Cj4gLQkJY3R4LT5kZXNjX3RlbXBsYXRlID0gZGVmYXVsdF9kZXNjX3RlbXBs YXRlKGRldl9wcml2LCBwcGd0dCk7Cj4gKwkJX19hc3NpZ25fcHBndHQoY3R4LCBwcGd0dCk7Cj4g KwkJaTkxNV9wcGd0dF9wdXQocHBndHQpOwo+ICAgCX0KPiAgIAo+ICAgCXRyYWNlX2k5MTVfY29u dGV4dF9jcmVhdGUoY3R4KTsKPiBAQCAtNjI1LDE5ICs2NTMsMjkgQEAgc3RhdGljIGludCBjb250 ZXh0X2lkcl9jbGVhbnVwKGludCBpZCwgdm9pZCAqcCwgdm9pZCAqZGF0YSkKPiAgIAlyZXR1cm4g MDsKPiAgIH0KPiAgIAo+ICtzdGF0aWMgaW50IHZtX2lkcl9jbGVhbnVwKGludCBpZCwgdm9pZCAq cCwgdm9pZCAqZGF0YSkKPiArewo+ICsJaTkxNV9wcGd0dF9wdXQocCk7Cj4gKwlyZXR1cm4gMDsK PiArfQo+ICsKPiAgIGludCBpOTE1X2dlbV9jb250ZXh0X29wZW4oc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsCj4gICAJCQkgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKPiAgIHsKPiAgIAlz dHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXYgPSBmaWxlLT5kcml2ZXJfcHJp djsKPiAgIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owo+ICAgCj4gKwltdXRleF9pbml0 KCZmaWxlX3ByaXYtPnZtX2xvY2spOwo+ICsKPiAgIAlpZHJfaW5pdCgmZmlsZV9wcml2LT5jb250 ZXh0X2lkcik7Cj4gKwlpZHJfaW5pdF9iYXNlKCZmaWxlX3ByaXYtPnZtX2lkciwgMSk7Cj4gICAK PiAgIAltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAljdHggPSBpOTE1 X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBmaWxlX3ByaXYpOwo+ICAgCW11dGV4X3VubG9jaygm aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJaWYgKElTX0VSUihjdHgpKSB7Cj4gICAJCWlk cl9kZXN0cm95KCZmaWxlX3ByaXYtPmNvbnRleHRfaWRyKTsKPiArCQlpZHJfZGVzdHJveSgmZmls ZV9wcml2LT52bV9pZHIpOwo+ICAgCQlyZXR1cm4gUFRSX0VSUihjdHgpOwo+ICAgCX0KPiAgIAo+ IEBAIC02NTQsNiArNjkyLDg5IEBAIHZvaWQgaTkxNV9nZW1fY29udGV4dF9jbG9zZShzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbGUpCj4gICAKPiAgIAlpZHJfZm9yX2VhY2goJmZpbGVfcHJpdi0+Y29udGV4 dF9pZHIsIGNvbnRleHRfaWRyX2NsZWFudXAsIE5VTEwpOwo+ICAgCWlkcl9kZXN0cm95KCZmaWxl X3ByaXYtPmNvbnRleHRfaWRyKTsKPiArCj4gKwlpZHJfZm9yX2VhY2goJmZpbGVfcHJpdi0+dm1f aWRyLCB2bV9pZHJfY2xlYW51cCwgTlVMTCk7Cj4gKwlpZHJfZGVzdHJveSgmZmlsZV9wcml2LT52 bV9pZHIpOwo+ICsKPiArCW11dGV4X2Rlc3Ryb3koJmZpbGVfcHJpdi0+dm1fbG9jayk7Cj4gK30K PiArCj4gK2ludCBpOTE1X2dlbV92bV9jcmVhdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwKPiArCQkJICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gK3sKPiAr CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShkZXYpOwo+ICsJc3RydWN0 IGRybV9pOTE1X2dlbV92bV9jb250cm9sICphcmdzID0gZGF0YTsKPiArCXN0cnVjdCBkcm1faTkx NV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdiA9IGZpbGUtPmRyaXZlcl9wcml2Owo+ICsJc3RydWN0 IGk5MTVfaHdfcHBndHQgKnBwZ3R0Owo+ICsJaW50IGVycjsKPiArCj4gKwlpZiAoIUhBU19GVUxM X1BQR1RUKGk5MTUpKQo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsKPiArCWlmIChhcmdzLT5mbGFn cykKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlpZiAoYXJncy0+ZXh0ZW5zaW9ucykKPiAr CQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlwcGd0dCA9IGk5MTVfcHBndHRfY3JlYXRlKGk5MTUs IGZpbGVfcHJpdik7Cj4gKwlpZiAoSVNfRVJSKHBwZ3R0KSkKPiArCQlyZXR1cm4gUFRSX0VSUihw cGd0dCk7Cj4gKwo+ICsJZXJyID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZmaWxlX3ByaXYt PnZtX2xvY2spOwo+ICsJaWYgKGVycikKPiArCQlnb3RvIGVycl9wdXQ7Cj4gKwo+ICsJZXJyID0g aWRyX2FsbG9jKCZmaWxlX3ByaXYtPnZtX2lkciwgcHBndHQsIDAsIDAsIEdGUF9LRVJORUwpOwo+ ICsJbXV0ZXhfdW5sb2NrKCZmaWxlX3ByaXYtPnZtX2xvY2spOwo+ICsJaWYgKGVyciA8IDApCj4g KwkJZ290byBlcnJfcHV0Owo+ICsKPiArCUdFTV9CVUdfT04oZXJyID09IDApOyAvKiByZXNlcnZl ZCBmb3IgZGVmYXVsdC91bmFzc2lnbmVkIHBwZ3R0ICovCj4gKwlwcGd0dC0+dXNlcl9oYW5kbGUg PSBlcnI7Cj4gKwlhcmdzLT5pZCA9IGVycjsKPiArCXJldHVybiAwOwo+ICsKPiArZXJyX3B1dDoK PiArCWk5MTVfcHBndHRfcHV0KHBwZ3R0KTsKPiArCXJldHVybiBlcnI7Cj4gK30KPiArCj4gK2lu dCBpOTE1X2dlbV92bV9kZXN0cm95X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsCj4gKwkJCSAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKPiArewo+ICsJc3RydWN0 IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2ID0gZmlsZS0+ZHJpdmVyX3ByaXY7Cj4g KwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3ZtX2NvbnRyb2wgKmFyZ3MgPSBkYXRhOwo+ICsJc3RydWN0 IGk5MTVfaHdfcHBndHQgKnBwZ3R0Owo+ICsJaW50IGVycjsKPiArCXUzMiBpZDsKPiArCj4gKwlp ZiAoYXJncy0+ZmxhZ3MpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJaWYgKGFyZ3MtPmV4 dGVuc2lvbnMpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJaWQgPSBhcmdzLT5pZDsKPiAr CWlmICghaWQpCj4gKwkJcmV0dXJuIC1FTk9FTlQ7Cj4gKwo+ICsJZXJyID0gbXV0ZXhfbG9ja19p bnRlcnJ1cHRpYmxlKCZmaWxlX3ByaXYtPnZtX2xvY2spOwo+ICsJaWYgKGVycikKPiArCQlyZXR1 cm4gZXJyOwo+ICsKPiArCXBwZ3R0ID0gaWRyX3JlbW92ZSgmZmlsZV9wcml2LT52bV9pZHIsIGlk KTsKPiArCWlmIChwcGd0dCkgewo+ICsJCUdFTV9CVUdfT04oIXBwZ3R0LT51c2VyX2hhbmRsZSk7 Cj4gKwkJcHBndHQtPnVzZXJfaGFuZGxlID0gMDsKPiArCX0KPiArCj4gKwltdXRleF91bmxvY2so JmZpbGVfcHJpdi0+dm1fbG9jayk7Cj4gKwlpZiAoIXBwZ3R0KQo+ICsJCXJldHVybiAtRU5PRU5U Owo+ICsKPiArCWk5MTVfcHBndHRfcHV0KHBwZ3R0KTsKPiArCXJldHVybiAwOwo+ICAgfQo+ICAg Cj4gICBzdGF0aWMgc3RydWN0IGk5MTVfcmVxdWVzdCAqCj4gQEAgLTc5OSw2ICs5MjAsMTIwIEBA IGludCBpOTE1X2dlbV9zd2l0Y2hfdG9fa2VybmVsX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsCj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4gICAKPiArc3RhdGljIGludCBnZXRf cHBndHQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiArCQkgICAgIHN0cnVjdCBkcm1f aTkxNV9nZW1fY29udGV4dF9wYXJhbSAqYXJncykKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X2Zp bGVfcHJpdmF0ZSAqZmlsZV9wcml2ID0gY3R4LT5maWxlX3ByaXY7Cj4gKwlzdHJ1Y3QgaTkxNV9o d19wcGd0dCAqcHBndHQ7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlmICghY3R4LT5wcGd0dCkKPiAr CQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gKwkvKiBYWFggcmN1IGFjcXVpcmU/ICovCj4gKwlyZXQg PSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmN0eC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7 Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJcHBndHQgPSBpOTE1X3BwZ3R0 X2dldChjdHgtPnBwZ3R0KTsKPiArCW11dGV4X3VubG9jaygmY3R4LT5pOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKPiArCj4gKwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmZpbGVfcHJp di0+dm1fbG9jayk7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gZXJyX3B1dDsKPiArCj4gKwlpZiAo IXBwZ3R0LT51c2VyX2hhbmRsZSkgewo+ICsJCXJldCA9IGlkcl9hbGxvYygmZmlsZV9wcml2LT52 bV9pZHIsIHBwZ3R0LCAwLCAwLCBHRlBfS0VSTkVMKTsKPiArCQlHRU1fQlVHX09OKCFyZXQpOwo+ ICsJCWlmIChyZXQgPCAwKQo+ICsJCQlnb3RvIGVycl91bmxvY2s7Cj4gKwo+ICsJCXBwZ3R0LT51 c2VyX2hhbmRsZSA9IHJldDsKPiArCQlpOTE1X3BwZ3R0X2dldChwcGd0dCk7Cj4gKwl9Cj4gKwo+ ICsJYXJncy0+c2l6ZSA9IDA7Cj4gKwlhcmdzLT52YWx1ZSA9IHBwZ3R0LT51c2VyX2hhbmRsZTsK PiArCj4gKwlyZXQgPSAwOwo+ICtlcnJfdW5sb2NrOgo+ICsJbXV0ZXhfdW5sb2NrKCZmaWxlX3By aXYtPnZtX2xvY2spOwo+ICtlcnJfcHV0Ogo+ICsJaTkxNV9wcGd0dF9wdXQocHBndHQpOwo+ICsJ cmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgc2V0X3BwZ3R0X2JhcnJpZXIodm9p ZCAqZGF0YSkKPiArewo+ICsJc3RydWN0IGk5MTVfaHdfcHBndHQgKm9sZCA9IGRhdGE7Cj4gKwo+ ICsJaTkxNV9wcGd0dF9jbG9zZShvbGQpOwo+ICsJaTkxNV9wcGd0dF9wdXQob2xkKTsKPiArfQo+ ICsKPiArc3RhdGljIGludCBzZXRfcHBndHQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwK PiArCQkgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSAqYXJncykKPiArewo+ ICsJc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2ID0gY3R4LT5maWxlX3By aXY7Cj4gKwlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsICpvbGQ7Cj4gKwlpbnQgZXJyOwo+ ICsKPiArCWlmIChhcmdzLT5zaXplKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWlmICh1 cHBlcl8zMl9iaXRzKGFyZ3MtPnZhbHVlKSkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlp ZiAoIWN0eC0+cHBndHQpCj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwo+ICsJZXJyID0gbXV0ZXhf bG9ja19pbnRlcnJ1cHRpYmxlKCZmaWxlX3ByaXYtPnZtX2xvY2spOwo+ICsJaWYgKGVycikKPiAr CQlyZXR1cm4gZXJyOwo+ICsKPiArCXBwZ3R0ID0gaWRyX2ZpbmQoJmZpbGVfcHJpdi0+dm1faWRy LCBhcmdzLT52YWx1ZSk7Cj4gKwlpZiAocHBndHQpIHsKPiArCQlHRU1fQlVHX09OKHBwZ3R0LT51 c2VyX2hhbmRsZSAhPSBhcmdzLT52YWx1ZSk7Cj4gKwkJaTkxNV9wcGd0dF9nZXQocHBndHQpOwo+ ICsJfQo+ICsJbXV0ZXhfdW5sb2NrKCZmaWxlX3ByaXYtPnZtX2xvY2spOwo+ICsJaWYgKCFwcGd0 dCkKPiArCQlyZXR1cm4gLUVOT0VOVDsKPiArCj4gKwllcnIgPSBtdXRleF9sb2NrX2ludGVycnVw dGlibGUoJmN0eC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwlpZiAoZXJyKQo+ICsJCWdv dG8gb3V0Owo+ICsKPiArCWlmIChwcGd0dCA9PSBjdHgtPnBwZ3R0KQo+ICsJCWdvdG8gdW5sb2Nr Owo+ICsKPiArCS8qIFRlYXJkb3duIHRoZSBleGlzdGluZyBvYmo6dm1hIGNhY2hlLCBpdCB3aWxs IGhhdmUgdG8gYmUgcmVidWlsdC4gKi8KPiArCWx1dF9jbG9zZShjdHgpOwo+ICsKPiArCW9sZCA9 IF9fc2V0X3BwZ3R0KGN0eCwgcHBndHQpOwo+ICsKPiArCS8qCj4gKwkgKiBXZSBuZWVkIHRvIGZs dXNoIGFueSByZXF1ZXN0cyB1c2luZyB0aGUgY3VycmVudCBwcGd0dCBiZWZvcmUKPiArCSAqIHdl IHJlbGVhc2UgaXQgYXMgdGhlIHJlcXVlc3RzIGRvIG5vdCBob2xkIGEgcmVmZXJlbmNlIHRoZW1z ZWx2ZXMsCj4gKwkgKiBvbmx5IGluZGlyZWN0bHkgdGhyb3VnaCB0aGUgY29udGV4dC4KPiArCSAq Lwo+ICsJZXJyID0gY29udGV4dF9iYXJyaWVyX3Rhc2soY3R4LCBBTExfRU5HSU5FUywgc2V0X3Bw Z3R0X2JhcnJpZXIsIG9sZCk7Cj4gKwlpZiAoZXJyKSB7Cj4gKwkJY3R4LT5wcGd0dCA9IG9sZDsK PiArCQljdHgtPmRlc2NfdGVtcGxhdGUgPSBkZWZhdWx0X2Rlc2NfdGVtcGxhdGUoY3R4LT5pOTE1 LCBvbGQpOwo+ICsKPiArCQlpOTE1X3BwZ3R0X2Nsb3NlKHBwZ3R0KTsKPiArCQlpOTE1X3BwZ3R0 X3B1dChwcGd0dCk7Cj4gKwl9Cj4gKwo+ICt1bmxvY2s6Cj4gKwltdXRleF91bmxvY2soJmN0eC0+ aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwo+ICtvdXQ6Cj4gKwlpOTE1X3BwZ3R0X3B1dChw cGd0dCk7Cj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICAgc3RhdGljIGJvb2wgY2xpZW50X2lz X2Jhbm5lZChzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXYpCj4gICB7Cj4g ICAJcmV0dXJuIGF0b21pY19yZWFkKCZmaWxlX3ByaXYtPmJhbl9zY29yZSkgPj0gSTkxNV9DTElF TlRfU0NPUkVfQkFOTkVEOwo+IEBAIC05NzMsNiArMTIwOCw5IEBAIGludCBpOTE1X2dlbV9jb250 ZXh0X2dldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4g ICAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVToKPiAgIAkJcmV0ID0gZ2V0X3NzZXUoY3R4 LCBhcmdzKTsKPiAgIAkJYnJlYWs7Cj4gKwljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9WTToKPiAr CQlyZXQgPSBnZXRfcHBndHQoY3R4LCBhcmdzKTsKPiArCQlicmVhazsKPiAgIAlkZWZhdWx0Ogo+ ICAgCQlyZXQgPSAtRUlOVkFMOwo+ICAgCQlicmVhazsKPiBAQCAtMTI3NCw5ICsxNTEyLDYgQEAg aW50IGk5MTVfZ2VtX2NvbnRleHRfc2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwKPiAgIAkJcmV0dXJuIC1FTk9FTlQ7Cj4gICAKPiAgIAlzd2l0Y2ggKGFy Z3MtPnBhcmFtKSB7Cj4gLQljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9CQU5fUEVSSU9EOgo+IC0J CXJldCA9IC1FSU5WQUw7Cj4gLQkJYnJlYWs7Cj4gICAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1f Tk9fWkVST01BUDoKPiAgIAkJaWYgKGFyZ3MtPnNpemUpCj4gICAJCQlyZXQgPSAtRUlOVkFMOwo+ IEBAIC0xMzMyLDkgKzE1NjcsMTYgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfc2V0cGFyYW1faW9j dGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgIAkJCQkJSTkxNV9VU0VS X1BSSU9SSVRZKHByaW9yaXR5KTsKPiAgIAkJfQo+ICAgCQlicmVhazsKPiArCj4gICAJY2FzZSBJ OTE1X0NPTlRFWFRfUEFSQU1fU1NFVToKPiAgIAkJcmV0ID0gc2V0X3NzZXUoY3R4LCBhcmdzKTsK PiAgIAkJYnJlYWs7Cj4gKwo+ICsJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fVk06Cj4gKwkJcmV0 ID0gc2V0X3BwZ3R0KGN0eCwgYXJncyk7Cj4gKwkJYnJlYWs7Cj4gKwo+ICsJY2FzZSBJOTE1X0NP TlRFWFRfUEFSQU1fQkFOX1BFUklPRDoKPiAgIAlkZWZhdWx0Ogo+ICAgCQlyZXQgPSAtRUlOVkFM Owo+ICAgCQlicmVhazsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fY29udGV4dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCj4g aW5kZXggNWEzMmM0YjQ4MTZmLi4xZTY3MDM3Mjg5MmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fY29udGV4dC5oCj4gQEAgLTE1Myw2ICsxNTMsMTEgQEAgdm9pZCBpOTE1X2dl bV9jb250ZXh0X3JlbGVhc2Uoc3RydWN0IGtyZWYgKmN0eF9yZWYpOwo+ICAgc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKgo+ICAgaTkxNV9nZW1fY29udGV4dF9jcmVhdGVfZ3Z0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpOwo+ICAgCj4gK2ludCBpOTE1X2dlbV92bV9jcmVhdGVfaW9jdGwoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiArCQkJICAgICBzdHJ1Y3QgZHJtX2ZpbGUg KmZpbGUpOwo+ICtpbnQgaTkxNV9nZW1fdm1fZGVzdHJveV9pb2N0bChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB2b2lkICpkYXRhLAo+ICsJCQkgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpOwo+ ICsKPiAgIGludCBpOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9pb2N0bChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAgCQkJCSAgc3RydWN0IGRybV9maWxlICpmaWxlKTsKPiAg IGludCBpOTE1X2dlbV9jb250ZXh0X2Rlc3Ryb3lfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+IGluZGV4IGRh YzA4ZDljM2ZhYi4uZDcxNzk1MmNjNDMwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2d0dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmMKPiBAQCAtMjA5OSwxMCArMjA5OSwyMSBAQCBpOTE1X3BwZ3R0X2NyZWF0ZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIAlyZXR1cm4gcHBndHQ7Cj4gICB9Cj4gICAKPiAt dm9pZCBpOTE1X3BwZ3R0X2Nsb3NlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQo+ICt2 b2lkIGk5MTVfcHBndHRfb3BlbihzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4gICB7Cj4g LQlHRU1fQlVHX09OKHZtLT5jbG9zZWQpOwo+IC0Jdm0tPmNsb3NlZCA9IHRydWU7Cj4gKwlHRU1f QlVHX09OKHBwZ3R0LT52bS5jbG9zZWQpOwo+ICsKPiArCXBwZ3R0LT5vcGVuX2NvdW50Kys7Cj4g K30KPiArCj4gK3ZvaWQgaTkxNV9wcGd0dF9jbG9zZShzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBn dHQpCj4gK3sKPiArCUdFTV9CVUdfT04oIXBwZ3R0LT5vcGVuX2NvdW50KTsKPiArCWlmICgtLXBw Z3R0LT5vcGVuX2NvdW50KQo+ICsJCXJldHVybjsKPiArCj4gKwlHRU1fQlVHX09OKHBwZ3R0LT52 bS5jbG9zZWQpOwo+ICsJcHBndHQtPnZtLmNsb3NlZCA9IHRydWU7Cj4gICB9Cj4gICAKPiAgIHN0 YXRpYyB2b2lkIHBwZ3R0X2Rlc3Ryb3lfdm1hKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZt KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gaW5kZXggYTQ3ZTExZTZmYzFiLi4y NWQ1Zjc2ODJiZGEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+IEBAIC0z OTEsMTEgKzM5MSwxNSBAQCBzdHJ1Y3QgaTkxNV9od19wcGd0dCB7Cj4gICAJc3RydWN0IGtyZWYg cmVmOwo+ICAgCj4gICAJdW5zaWduZWQgbG9uZyBwZF9kaXJ0eV9lbmdpbmVzOwo+ICsJdW5zaWdu ZWQgaW50IG9wZW5fY291bnQ7Cj4gKwo+ICAgCXVuaW9uIHsKPiAgIAkJc3RydWN0IGk5MTVfcG1s NCBwbWw0OwkJLyogR0VOOCsgJiA0OGIgUFBHVFQgKi8KPiAgIAkJc3RydWN0IGk5MTVfcGFnZV9k aXJlY3RvcnlfcG9pbnRlciBwZHA7CS8qIEdFTjgrICovCj4gICAJCXN0cnVjdCBpOTE1X3BhZ2Vf ZGlyZWN0b3J5IHBkOwkJLyogR0VONi03ICovCj4gICAJfTsKPiArCj4gKwl1MzIgdXNlcl9oYW5k bGU7Cj4gICB9Owo+ICAgCj4gICBzdHJ1Y3QgZ2VuNl9od19wcGd0dCB7Cj4gQEAgLTYwNiwxMiAr NjEwLDE2IEBAIGludCBpOTE1X3BwZ3R0X2luaXRfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KTsKPiAgIHZvaWQgaTkxNV9wcGd0dF9yZWxlYXNlKHN0cnVjdCBrcmVmICprcmVm KTsKPiAgIHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICppOTE1X3BwZ3R0X2NyZWF0ZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJCQkJCXN0cnVjdCBkcm1faTkxNV9maWxlX3By aXZhdGUgKmZwcml2KTsKPiAtdm9pZCBpOTE1X3BwZ3R0X2Nsb3NlKHN0cnVjdCBpOTE1X2FkZHJl c3Nfc3BhY2UgKnZtKTsKPiAtc3RhdGljIGlubGluZSB2b2lkIGk5MTVfcHBndHRfZ2V0KHN0cnVj dCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKPiArCj4gK3ZvaWQgaTkxNV9wcGd0dF9vcGVuKHN0cnVj dCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCk7Cj4gK3ZvaWQgaTkxNV9wcGd0dF9jbG9zZShzdHJ1Y3Qg aTkxNV9od19wcGd0dCAqcHBndHQpOwo+ICsKPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgaTkxNV9o d19wcGd0dCAqaTkxNV9wcGd0dF9nZXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+ICAg ewo+IC0JaWYgKHBwZ3R0KQo+IC0JCWtyZWZfZ2V0KCZwcGd0dC0+cmVmKTsKPiArCWtyZWZfZ2V0 KCZwcGd0dC0+cmVmKTsKPiArCXJldHVybiBwcGd0dDsKPiAgIH0KPiArCj4gICBzdGF0aWMgaW5s aW5lIHZvaWQgaTkxNV9wcGd0dF9wdXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+ICAg ewo+ICAgCWlmIChwcGd0dCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL2h1Z2VfcGFnZXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9odWdl X3BhZ2VzLmMKPiBpbmRleCAxZTY2Y2ZmOTg1ZjguLjBiNzc0MGRjMThjYiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYwo+IEBAIC0xNzM0LDcgKzE3 MzQsNiBAQCBpbnQgaTkxNV9nZW1faHVnZV9wYWdlX21vY2tfc2VsZnRlc3RzKHZvaWQpCj4gICAJ ZXJyID0gaTkxNV9zdWJ0ZXN0cyh0ZXN0cywgcHBndHQpOwo+ICAgCj4gICBvdXRfY2xvc2U6Cj4g LQlpOTE1X3BwZ3R0X2Nsb3NlKCZwcGd0dC0+dm0pOwo+ICAgCWk5MTVfcHBndHRfcHV0KHBwZ3R0 KTsKPiAgIAo+ICAgb3V0X3VubG9jazoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKPiBpbmRleCA2NjRhZTE0MjhlY2MuLmM0YTVjZjI2 OTkyZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9n ZW1fY29udGV4dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVf Z2VtX2NvbnRleHQuYwo+IEBAIC0zNzIsNyArMzcyLDggQEAgc3RhdGljIGludCBjcHVfZmlsbChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCB1MzIgdmFsdWUpCj4gICAJcmV0dXJuIDA7 Cj4gICB9Cj4gICAKPiAtc3RhdGljIGludCBjcHVfY2hlY2soc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiwgdW5zaWduZWQgaW50IG1heCkKPiArc3RhdGljIG5vaW5saW5lIGludCBjcHVf Y2hlY2soc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiArCQkJICAgICAgdW5zaWdu ZWQgaW50IGlkeCwgdW5zaWduZWQgaW50IG1heCkKPiAgIHsKPiAgIAl1bnNpZ25lZCBpbnQgbiwg bSwgbmVlZHNfZmx1c2g7Cj4gICAJaW50IGVycjsKPiBAQCAtMzkwLDggKzM5MSwxMCBAQCBzdGF0 aWMgaW50IGNwdV9jaGVjayhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCB1bnNpZ25l ZCBpbnQgbWF4KQo+ICAgCj4gICAJCWZvciAobSA9IDA7IG0gPCBtYXg7IG0rKykgewo+ICAgCQkJ aWYgKG1hcFttXSAhPSBtKSB7Cj4gLQkJCQlwcl9lcnIoIkludmFsaWQgdmFsdWUgYXQgcGFnZSAl ZCwgb2Zmc2V0ICVkOiBmb3VuZCAleCBleHBlY3RlZCAleFxuIiwKPiAtCQkJCSAgICAgICBuLCBt LCBtYXBbbV0sIG0pOwo+ICsJCQkJcHJfZXJyKCIlcFM6IEludmFsaWQgdmFsdWUgYXQgb2JqZWN0 ICVkIHBhZ2UgJWQvJWxkLCBvZmZzZXQgJWQvJWQ6IGZvdW5kICV4IGV4cGVjdGVkICV4XG4iLAo+ ICsJCQkJICAgICAgIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSwgaWR4LAo+ICsJCQkJICAg ICAgIG4sIHJlYWxfcGFnZV9jb3VudChvYmopLCBtLCBtYXgsCj4gKwkJCQkgICAgICAgbWFwW21d LCBtKTsKPiAgIAkJCQllcnIgPSAtRUlOVkFMOwo+ICAgCQkJCWdvdG8gb3V0X3VubWFwOwo+ICAg CQkJfQo+IEBAIC0zOTksOCArNDAyLDkgQEAgc3RhdGljIGludCBjcHVfY2hlY2soc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgdW5zaWduZWQgaW50IG1heCkKPiAgIAo+ICAgCQlmb3Ig KDsgbSA8IERXX1BFUl9QQUdFOyBtKyspIHsKPiAgIAkJCWlmIChtYXBbbV0gIT0gU1RBQ0tfTUFH SUMpIHsKPiAtCQkJCXByX2VycigiSW52YWxpZCB2YWx1ZSBhdCBwYWdlICVkLCBvZmZzZXQgJWQ6 IGZvdW5kICV4IGV4cGVjdGVkICV4XG4iLAo+IC0JCQkJICAgICAgIG4sIG0sIG1hcFttXSwgU1RB Q0tfTUFHSUMpOwo+ICsJCQkJcHJfZXJyKCIlcFM6IEludmFsaWQgdmFsdWUgYXQgb2JqZWN0ICVk IHBhZ2UgJWQsIG9mZnNldCAlZDogZm91bmQgJXggZXhwZWN0ZWQgJXggKHVuaW5pdGlhbGlzZWQp XG4iLAo+ICsJCQkJICAgICAgIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSwgaWR4LCBuLCBt LAo+ICsJCQkJICAgICAgIG1hcFttXSwgU1RBQ0tfTUFHSUMpOwo+ICAgCQkJCWVyciA9IC1FSU5W QUw7Cj4gICAJCQkJZ290byBvdXRfdW5tYXA7Cj4gICAJCQl9Cj4gQEAgLTQ3OCwxMiArNDgyLDgg QEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbWF4X2R3b3JkcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqKQo+ICAgc3RhdGljIGludCBpZ3RfY3R4X2V4ZWModm9pZCAqYXJnKQo+ICAgewo+ ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gYXJnOwo+IC0Jc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaiA9IE5VTEw7Cj4gLQl1bnNpZ25lZCBsb25nIG5jb250ZXh0cywg bmR3b3JkcywgZHc7Cj4gLQlzdHJ1Y3QgaWd0X2xpdmVfdGVzdCB0Owo+IC0Jc3RydWN0IGRybV9m aWxlICpmaWxlOwo+IC0JSUdUX1RJTUVPVVQoZW5kX3RpbWUpOwo+IC0JTElTVF9IRUFEKG9iamVj dHMpOwo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICsJZW51bSBpbnRlbF9l bmdpbmVfaWQgaWQ7Cj4gICAJaW50IGVyciA9IC1FTk9ERVY7Cj4gICAKPiAgIAkvKgo+IEBAIC00 OTUsNDEgKzQ5NSwxNjYgQEAgc3RhdGljIGludCBpZ3RfY3R4X2V4ZWModm9pZCAqYXJnKQo+ICAg CWlmICghRFJJVkVSX0NBUFMoaTkxNSktPmhhc19sb2dpY2FsX2NvbnRleHRzKQo+ICAgCQlyZXR1 cm4gMDsKPiAgIAo+ICsJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKPiArCQlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gTlVMTDsKPiArCQl1bnNpZ25lZCBsb25n IG5jb250ZXh0cywgbmR3b3JkcywgZHc7Cj4gKwkJc3RydWN0IGlndF9saXZlX3Rlc3QgdDsKPiAr CQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGU7Cj4gKwkJSUdUX1RJTUVPVVQoZW5kX3RpbWUpOwo+ICsJ CUxJU1RfSEVBRChvYmplY3RzKTsKPiArCj4gKwkJaWYgKCFpbnRlbF9lbmdpbmVfY2FuX3N0b3Jl X2R3b3JkKGVuZ2luZSkpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlpZiAoIWVuZ2luZS0+Y29u dGV4dF9zaXplKQo+ICsJCQljb250aW51ZTsgLyogTm8gbG9naWNhbCBjb250ZXh0IHN1cHBvcnQg aW4gSFcgKi8KPiArCj4gKwkJZmlsZSA9IG1vY2tfZmlsZShpOTE1KTsKPiArCQlpZiAoSVNfRVJS KGZpbGUpKQo+ICsJCQlyZXR1cm4gUFRSX0VSUihmaWxlKTsKPiArCj4gKwkJbXV0ZXhfbG9jaygm aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwo+ICsJCWVyciA9IGlndF9saXZlX3Rlc3RfYmVn aW4oJnQsIGk5MTUsIF9fZnVuY19fLCBlbmdpbmUtPm5hbWUpOwo+ICsJCWlmIChlcnIpCj4gKwkJ CWdvdG8gb3V0X3VubG9jazsKPiArCj4gKwkJbmNvbnRleHRzID0gMDsKPiArCQluZHdvcmRzID0g MDsKPiArCQlkdyA9IDA7Cj4gKwkJd2hpbGUgKCF0aW1lX2FmdGVyKGppZmZpZXMsIGVuZF90aW1l KSkgewo+ICsJCQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owo+ICsJCQlpbnRlbF93YWtl cmVmX3Qgd2FrZXJlZjsKPiArCj4gKwkJCWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5 MTUsIGZpbGUtPmRyaXZlcl9wcml2KTsKPiArCQkJaWYgKElTX0VSUihjdHgpKSB7Cj4gKwkJCQll cnIgPSBQVFJfRVJSKGN0eCk7Cj4gKwkJCQlnb3RvIG91dF91bmxvY2s7Cj4gKwkJCX0KPiArCj4g KwkJCWlmICghb2JqKSB7Cj4gKwkJCQlvYmogPSBjcmVhdGVfdGVzdF9vYmplY3QoY3R4LCBmaWxl LCAmb2JqZWN0cyk7Cj4gKwkJCQlpZiAoSVNfRVJSKG9iaikpIHsKPiArCQkJCQllcnIgPSBQVFJf RVJSKG9iaik7Cj4gKwkJCQkJZ290byBvdXRfdW5sb2NrOwo+ICsJCQkJfQo+ICsJCQl9Cj4gKwo+ ICsJCQl3aXRoX2ludGVsX3J1bnRpbWVfcG0oaTkxNSwgd2FrZXJlZikKPiArCQkJCWVyciA9IGdw dV9maWxsKG9iaiwgY3R4LCBlbmdpbmUsIGR3KTsKPiArCQkJaWYgKGVycikgewo+ICsJCQkJcHJf ZXJyKCJGYWlsZWQgdG8gZmlsbCBkd29yZCAlbHUgWyVsdS8lbHVdIHdpdGggZ3B1ICglcykgaW4g Y3R4ICV1IFtmdWxsLXBwZ3R0PyAlc10sIGVycj0lZFxuIiwKPiArCQkJCSAgICAgICBuZHdvcmRz LCBkdywgbWF4X2R3b3JkcyhvYmopLAo+ICsJCQkJICAgICAgIGVuZ2luZS0+bmFtZSwgY3R4LT5o d19pZCwKPiArCQkJCSAgICAgICB5ZXNubyghIWN0eC0+cHBndHQpLCBlcnIpOwo+ICsJCQkJZ290 byBvdXRfdW5sb2NrOwo+ICsJCQl9Cj4gKwo+ICsJCQlpZiAoKytkdyA9PSBtYXhfZHdvcmRzKG9i aikpIHsKPiArCQkJCW9iaiA9IE5VTEw7Cj4gKwkJCQlkdyA9IDA7Cj4gKwkJCX0KPiArCj4gKwkJ CW5kd29yZHMrKzsKPiArCQkJbmNvbnRleHRzKys7Cj4gKwkJfQo+ICsKPiArCQlwcl9pbmZvKCJT dWJtaXR0ZWQgJWx1IGNvbnRleHRzIHRvICVzLCBmaWxsaW5nICVsdSBkd29yZHNcbiIsCj4gKwkJ CW5jb250ZXh0cywgZW5naW5lLT5uYW1lLCBuZHdvcmRzKTsKPiArCj4gKwkJbmNvbnRleHRzID0g ZHcgPSAwOwo+ICsJCWxpc3RfZm9yX2VhY2hfZW50cnkob2JqLCAmb2JqZWN0cywgc3RfbGluaykg ewo+ICsJCQl1bnNpZ25lZCBpbnQgcmVtID0KPiArCQkJCW1pbl90KHVuc2lnbmVkIGludCwgbmR3 b3JkcyAtIGR3LCBtYXhfZHdvcmRzKG9iaikpOwo+ICsKPiArCQkJZXJyID0gY3B1X2NoZWNrKG9i aiwgbmNvbnRleHRzKyssIHJlbSk7Cj4gKwkJCWlmIChlcnIpCj4gKwkJCQlicmVhazsKPiArCj4g KwkJCWR3ICs9IHJlbTsKPiArCQl9Cj4gKwo+ICtvdXRfdW5sb2NrOgo+ICsJCWlmIChpZ3RfbGl2 ZV90ZXN0X2VuZCgmdCkpCj4gKwkJCWVyciA9IC1FSU87Cj4gKwkJbXV0ZXhfdW5sb2NrKCZpOTE1 LT5kcm0uc3RydWN0X211dGV4KTsKPiArCj4gKwkJbW9ja19maWxlX2ZyZWUoaTkxNSwgZmlsZSk7 Cj4gKwkJaWYgKGVycikKPiArCQkJcmV0dXJuIGVycjsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsK PiArfQo+ICsKPiArc3RhdGljIGludCBpZ3Rfc2hhcmVkX2N0eF9leGVjKHZvaWQgKmFyZykKPiAr ewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBhcmc7Cj4gKwlzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dCAqcGFyZW50Owo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l Owo+ICsJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gKwlzdHJ1Y3QgaWd0X2xpdmVfdGVzdCB0 Owo+ICsJc3RydWN0IGRybV9maWxlICpmaWxlOwo+ICsJaW50IGVyciA9IDA7Cj4gKwo+ICsJLyoK PiArCSAqIENyZWF0ZSBhIGZldyBkaWZmZXJlbnQgY29udGV4dHMgd2l0aCB0aGUgc2FtZSBtbSBh bmQgd3JpdGUKPiArCSAqIHRocm91Z2ggZWFjaCBjdHggdXNpbmcgdGhlIEdQVSBtYWtpbmcgc3Vy ZSB0aG9zZSB3cml0ZXMgZW5kCj4gKwkgKiB1cCBpbiB0aGUgZXhwZWN0ZWQgcGFnZXMgb2Ygb3Vy IG9iai4KPiArCSAqLwo+ICsJaWYgKCFEUklWRVJfQ0FQUyhpOTE1KS0+aGFzX2xvZ2ljYWxfY29u dGV4dHMpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICAgCWZpbGUgPSBtb2NrX2ZpbGUoaTkxNSk7Cj4g ICAJaWYgKElTX0VSUihmaWxlKSkKPiAgIAkJcmV0dXJuIFBUUl9FUlIoZmlsZSk7Cj4gICAKPiAg IAltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAo+ICsJcGFyZW50ID0g aTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZS0+ZHJpdmVyX3ByaXYpOwo+ICsJaWYg KElTX0VSUihwYXJlbnQpKSB7Cj4gKwkJZXJyID0gUFRSX0VSUihwYXJlbnQpOwo+ICsJCWdvdG8g b3V0X3VubG9jazsKPiArCX0KPiArCj4gKwlpZiAoIXBhcmVudC0+cHBndHQpIHsKPiArCQllcnIg PSAtRU5PREVWOwo+ICsJCWdvdG8gb3V0X3VubG9jazsKPiArCX0KPiArCj4gICAJZXJyID0gaWd0 X2xpdmVfdGVzdF9iZWdpbigmdCwgaTkxNSwgX19mdW5jX18sICIiKTsKPiAgIAlpZiAoZXJyKQo+ ICAgCQlnb3RvIG91dF91bmxvY2s7Cj4gICAKPiAtCW5jb250ZXh0cyA9IDA7Cj4gLQluZHdvcmRz ID0gMDsKPiAtCWR3ID0gMDsKPiAtCXdoaWxlICghdGltZV9hZnRlcihqaWZmaWVzLCBlbmRfdGlt ZSkpIHsKPiAtCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gLQkJc3RydWN0IGk5 MTVfZ2VtX2NvbnRleHQgKmN0eDsKPiAtCQl1bnNpZ25lZCBpbnQgaWQ7Cj4gKwlmb3JfZWFjaF9l bmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgewo+ICsJCXVuc2lnbmVkIGxvbmcgbmNvbnRleHRzLCBu ZHdvcmRzLCBkdzsKPiArCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gTlVMTDsK PiArCQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4ID0gTlVMTDsKPiArCQlJR1RfVElNRU9V VChlbmRfdGltZSk7Cj4gKwkJTElTVF9IRUFEKG9iamVjdHMpOwo+ICAgCj4gLQkJY3R4ID0gaTkx NV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZS0+ZHJpdmVyX3ByaXYpOwo+IC0JCWlmIChJ U19FUlIoY3R4KSkgewo+IC0JCQllcnIgPSBQVFJfRVJSKGN0eCk7Cj4gLQkJCWdvdG8gb3V0X3Vu bG9jazsKPiAtCQl9Cj4gKwkJaWYgKCFpbnRlbF9lbmdpbmVfY2FuX3N0b3JlX2R3b3JkKGVuZ2lu ZSkpCj4gKwkJCWNvbnRpbnVlOwo+ICAgCj4gLQkJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkx NSwgaWQpIHsKPiArCQlkdyA9IDA7Cj4gKwkJbmR3b3JkcyA9IDA7Cj4gKwkJbmNvbnRleHRzID0g MDsKPiArCQl3aGlsZSAoIXRpbWVfYWZ0ZXIoamlmZmllcywgZW5kX3RpbWUpKSB7Cj4gICAJCQlp bnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgIAo+IC0JCQlpZiAoIWVuZ2luZS0+Y29udGV4dF9z aXplKQo+IC0JCQkJY29udGludWU7IC8qIE5vIGxvZ2ljYWwgY29udGV4dCBzdXBwb3J0IGluIEhX ICovCj4gKwkJCWlmIChjdHgpCj4gKwkJCQlfX2Rlc3Ryb3lfaHdfY29udGV4dChjdHgsIGZpbGUt PmRyaXZlcl9wcml2KTsKPiAgIAo+IC0JCQlpZiAoIWludGVsX2VuZ2luZV9jYW5fc3RvcmVfZHdv cmQoZW5naW5lKSkKPiAtCQkJCWNvbnRpbnVlOwo+ICsJCQljdHggPSBpOTE1X2dlbV9jcmVhdGVf Y29udGV4dChpOTE1LCBmaWxlLT5kcml2ZXJfcHJpdik7Cj4gKwkJCWlmIChJU19FUlIoY3R4KSkg ewo+ICsJCQkJZXJyID0gUFRSX0VSUihjdHgpOwo+ICsJCQkJZ290byBvdXRfdW5sb2NrOwo+ICsJ CQl9Cj4gKwo+ICsJCQlfX2Fzc2lnbl9wcGd0dChjdHgsIHBhcmVudC0+cHBndHQpOwo+ICAgCj4g ICAJCQlpZiAoIW9iaikgewo+IC0JCQkJb2JqID0gY3JlYXRlX3Rlc3Rfb2JqZWN0KGN0eCwgZmls ZSwgJm9iamVjdHMpOwo+ICsJCQkJb2JqID0gY3JlYXRlX3Rlc3Rfb2JqZWN0KHBhcmVudCwgZmls ZSwgJm9iamVjdHMpOwo+ICAgCQkJCWlmIChJU19FUlIob2JqKSkgewo+ICAgCQkJCQllcnIgPSBQ VFJfRVJSKG9iaik7Cj4gICAJCQkJCWdvdG8gb3V0X3VubG9jazsKPiBAQCAtNTUxLDI1ICs2NzYs MjUgQEAgc3RhdGljIGludCBpZ3RfY3R4X2V4ZWModm9pZCAqYXJnKQo+ICAgCQkJCW9iaiA9IE5V TEw7Cj4gICAJCQkJZHcgPSAwOwo+ICAgCQkJfQo+ICsKPiAgIAkJCW5kd29yZHMrKzsKPiArCQkJ bmNvbnRleHRzKys7Cj4gICAJCX0KPiAtCQluY29udGV4dHMrKzsKPiAtCX0KPiAtCXByX2luZm8o IlN1Ym1pdHRlZCAlbHUgY29udGV4dHMgKGFjcm9zcyAldSBlbmdpbmVzKSwgZmlsbGluZyAlbHUg ZHdvcmRzXG4iLAo+IC0JCW5jb250ZXh0cywgUlVOVElNRV9JTkZPKGk5MTUpLT5udW1fZW5naW5l cywgbmR3b3Jkcyk7Cj4gKwkJcHJfaW5mbygiU3VibWl0dGVkICVsdSBjb250ZXh0cyB0byAlcywg ZmlsbGluZyAlbHUgZHdvcmRzXG4iLAo+ICsJCQluY29udGV4dHMsIGVuZ2luZS0+bmFtZSwgbmR3 b3Jkcyk7Cj4gICAKPiAtCWR3ID0gMDsKPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkob2JqLCAmb2Jq ZWN0cywgc3RfbGluaykgewo+IC0JCXVuc2lnbmVkIGludCByZW0gPQo+IC0JCQltaW5fdCh1bnNp Z25lZCBpbnQsIG5kd29yZHMgLSBkdywgbWF4X2R3b3JkcyhvYmopKTsKPiArCQluY29udGV4dHMg PSBkdyA9IDA7Cj4gKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShvYmosICZvYmplY3RzLCBzdF9saW5r KSB7Cj4gKwkJCXVuc2lnbmVkIGludCByZW0gPQo+ICsJCQkJbWluX3QodW5zaWduZWQgaW50LCBu ZHdvcmRzIC0gZHcsIG1heF9kd29yZHMob2JqKSk7Cj4gICAKPiAtCQllcnIgPSBjcHVfY2hlY2so b2JqLCByZW0pOwo+IC0JCWlmIChlcnIpCj4gLQkJCWJyZWFrOwo+ICsJCQllcnIgPSBjcHVfY2hl Y2sob2JqLCBuY29udGV4dHMrKywgcmVtKTsKPiArCQkJaWYgKGVycikKPiArCQkJCWdvdG8gb3V0 X3VubG9jazsKPiAgIAo+IC0JCWR3ICs9IHJlbTsKPiArCQkJZHcgKz0gcmVtOwo+ICsJCX0KPiAg IAl9Cj4gLQo+ICAgb3V0X3VubG9jazoKPiAgIAlpZiAoaWd0X2xpdmVfdGVzdF9lbmQoJnQpKQo+ ICAgCQllcnIgPSAtRUlPOwo+IEBAIC0xMDQ4LDcgKzExNzMsNyBAQCBzdGF0aWMgaW50IGlndF9j dHhfcmVhZG9ubHkodm9pZCAqYXJnKQo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmogPSBOVUxMOwo+ICAgCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4gICAJc3RydWN0 IGk5MTVfaHdfcHBndHQgKnBwZ3R0Owo+IC0JdW5zaWduZWQgbG9uZyBuZHdvcmRzLCBkdzsKPiAr CXVuc2lnbmVkIGxvbmcgaWR4LCBuZHdvcmRzLCBkdzsKPiAgIAlzdHJ1Y3QgaWd0X2xpdmVfdGVz dCB0Owo+ICAgCXN0cnVjdCBkcm1fZmlsZSAqZmlsZTsKPiAgIAlJOTE1X1JORF9TVEFURShwcm5n KTsKPiBAQCAtMTEyOSw2ICsxMjU0LDcgQEAgc3RhdGljIGludCBpZ3RfY3R4X3JlYWRvbmx5KHZv aWQgKmFyZykKPiAgIAkJbmR3b3JkcywgUlVOVElNRV9JTkZPKGk5MTUpLT5udW1fZW5naW5lcyk7 Cj4gICAKPiAgIAlkdyA9IDA7Cj4gKwlpZHggPSAwOwo+ICAgCWxpc3RfZm9yX2VhY2hfZW50cnko b2JqLCAmb2JqZWN0cywgc3RfbGluaykgewo+ICAgCQl1bnNpZ25lZCBpbnQgcmVtID0KPiAgIAkJ CW1pbl90KHVuc2lnbmVkIGludCwgbmR3b3JkcyAtIGR3LCBtYXhfZHdvcmRzKG9iaikpOwo+IEBA IC0xMTM4LDcgKzEyNjQsNyBAQCBzdGF0aWMgaW50IGlndF9jdHhfcmVhZG9ubHkodm9pZCAqYXJn KQo+ICAgCQlpZiAoaTkxNV9nZW1fb2JqZWN0X2lzX3JlYWRvbmx5KG9iaikpCj4gICAJCQludW1f d3JpdGVzID0gMDsKPiAgIAo+IC0JCWVyciA9IGNwdV9jaGVjayhvYmosIG51bV93cml0ZXMpOwo+ ICsJCWVyciA9IGNwdV9jaGVjayhvYmosIGlkeCsrLCBudW1fd3JpdGVzKTsKPiAgIAkJaWYgKGVy cikKPiAgIAkJCWJyZWFrOwo+ICAgCj4gQEAgLTE3MjMsNiArMTg0OSw3IEBAIGludCBpOTE1X2dl bV9jb250ZXh0X2xpdmVfc2VsZnRlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgIAkJU1VCVEVTVChpZ3RfY3R4X2V4ZWMpLAo+ICAgCQlTVUJURVNUKGlndF9jdHhfcmVh ZG9ubHkpLAo+ICAgCQlTVUJURVNUKGlndF9jdHhfc3NldSksCj4gKwkJU1VCVEVTVChpZ3Rfc2hh cmVkX2N0eF9leGVjKSwKPiAgIAkJU1VCVEVTVChpZ3Rfdm1faXNvbGF0aW9uKSwKPiAgIAl9Owo+ ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dl bV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYwo+ IGluZGV4IDgyNmZkNTFjMzMxZS4uNTdiM2Q5ODY3MDcwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYwo+IEBAIC0xMDIwLDcgKzEwMjAsNiBA QCBzdGF0aWMgaW50IGV4ZXJjaXNlX3BwZ3R0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiAgIAo+ICAgCWVyciA9IGZ1bmMoZGV2X3ByaXYsICZwcGd0dC0+dm0sIDAsIHBwZ3R0 LT52bS50b3RhbCwgZW5kX3RpbWUpOwo+ICAgCj4gLQlpOTE1X3BwZ3R0X2Nsb3NlKCZwcGd0dC0+ dm0pOwo+ICAgCWk5MTVfcHBndHRfcHV0KHBwZ3R0KTsKPiAgIG91dF91bmxvY2s6Cj4gICAJbXV0 ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYwo+IGluZGV4IDhlZmE2ODkyYzZjZC4u ZjkwMzI4YjIxNzYzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9tb2NrX2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9t b2NrX2NvbnRleHQuYwo+IEBAIC01NCwxMyArNTQsMTcgQEAgbW9ja19jb250ZXh0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgCQlnb3RvIGVycl9oYW5kbGVzOwo+ICAgCj4gICAJ aWYgKG5hbWUpIHsKPiArCQlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQ7Cj4gKwo+ICAgCQlj dHgtPm5hbWUgPSBrc3RyZHVwKG5hbWUsIEdGUF9LRVJORUwpOwo+ICAgCQlpZiAoIWN0eC0+bmFt ZSkKPiAgIAkJCWdvdG8gZXJyX3B1dDsKPiAgIAo+IC0JCWN0eC0+cHBndHQgPSBtb2NrX3BwZ3R0 KGk5MTUsIG5hbWUpOwo+IC0JCWlmICghY3R4LT5wcGd0dCkKPiArCQlwcGd0dCA9IG1vY2tfcHBn dHQoaTkxNSwgbmFtZSk7Cj4gKwkJaWYgKCFwcGd0dCkKPiAgIAkJCWdvdG8gZXJyX3B1dDsKPiAr Cj4gKwkJX19zZXRfcHBndHQoY3R4LCBwcGd0dCk7Cj4gICAJfQo+ICAgCj4gICAJcmV0dXJuIGN0 eDsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS91 YXBpL2RybS9pOTE1X2RybS5oCj4gaW5kZXggMzk4MzU3OTM3MjJiLi42NTc1NDcwNzU1ZDAgMTAw NjQ0Cj4gLS0tIGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4gKysrIGIvaW5jbHVkZS91 YXBpL2RybS9pOTE1X2RybS5oCj4gQEAgLTM0MSw2ICszNDEsOCBAQCB0eXBlZGVmIHN0cnVjdCBf ZHJtX2k5MTVfc2FyZWEgewo+ICAgI2RlZmluZSBEUk1fSTkxNV9QRVJGX0FERF9DT05GSUcJMHgz Nwo+ICAgI2RlZmluZSBEUk1fSTkxNV9QRVJGX1JFTU9WRV9DT05GSUcJMHgzOAo+ICAgI2RlZmlu ZSBEUk1fSTkxNV9RVUVSWQkJCTB4MzkKPiArI2RlZmluZSBEUk1fSTkxNV9HRU1fVk1fQ1JFQVRF CQkweDNhCj4gKyNkZWZpbmUgRFJNX0k5MTVfR0VNX1ZNX0RFU1RST1kJCTB4M2IKPiAgIC8qIE11 c3QgYmUga2VwdCBjb21wYWN0IC0tIG5vIGhvbGVzICovCj4gICAKPiAgICNkZWZpbmUgRFJNX0lP Q1RMX0k5MTVfSU5JVAkJRFJNX0lPVyggRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0lOSVQs IGRybV9pOTE1X2luaXRfdCkKPiBAQCAtNDAwLDYgKzQwMiw4IEBAIHR5cGVkZWYgc3RydWN0IF9k cm1faTkxNV9zYXJlYSB7Cj4gICAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X1BFUkZfQUREX0NPTkZJ RwlEUk1fSU9XKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9QRVJGX0FERF9DT05GSUcsIHN0 cnVjdCBkcm1faTkxNV9wZXJmX29hX2NvbmZpZykKPiAgICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVf UEVSRl9SRU1PVkVfQ09ORklHCURSTV9JT1coRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X1BF UkZfUkVNT1ZFX0NPTkZJRywgX191NjQpCj4gICAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X1FVRVJZ CQkJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X1FVRVJZLCBzdHJ1Y3QgZHJt X2k5MTVfcXVlcnkpCj4gKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX1ZNX0NSRUFURQlEUk1f SU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX1ZNX0NSRUFURSwgc3RydWN0IGRy bV9pOTE1X2dlbV92bV9jb250cm9sKQo+ICsjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9WTV9E RVNUUk9ZCURSTV9JT1cgKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fVk1fREVTVFJP WSwgc3RydWN0IGRybV9pOTE1X2dlbV92bV9jb250cm9sKQo+ICAgCj4gICAvKiBBbGxvdyBkcml2 ZXJzIHRvIHN1Ym1pdCBiYXRjaGJ1ZmZlcnMgZGlyZWN0bHkgdG8gaGFyZHdhcmUsIHJlbHlpbmcK PiAgICAqIG9uIHRoZSBzZWN1cml0eSBtZWNoYW5pc21zIHByb3ZpZGVkIGJ5IGhhcmR3YXJlLgo+ IEBAIC0xNDUxLDYgKzE0NTUsMjYgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2Rlc3Ry b3kgewo+ICAgCV9fdTMyIHBhZDsKPiAgIH07Cj4gICAKPiArLyoKPiArICogRFJNX0k5MTVfR0VN X1ZNX0NSRUFURSAtCj4gKyAqCj4gKyAqIENyZWF0ZSBhIG5ldyB2aXJ0dWFsIG1lbW9yeSBhZGRy ZXNzIHNwYWNlIChwcEdUVCkgZm9yIHVzZSB3aXRoaW4gYSBjb250ZXh0Cj4gKyAqIG9uIHRoZSBz YW1lIGZpbGUuIEV4dGVuc2lvbnMgY2FuIGJlIHByb3ZpZGVkIHRvIGNvbmZpZ3VyZSBleGFjdGx5 IGhvdyB0aGUKPiArICogYWRkcmVzcyBzcGFjZSBpcyBzZXR1cCB1cG9uIGNyZWF0aW9uLgo+ICsg Kgo+ICsgKiBUaGUgaWQgb2YgbmV3IFZNIChib3VuZCB0byB0aGUgZmQpIGZvciB1c2Ugd2l0aCBJ OTE1X0NPTlRFWFRfUEFSQU1fVk0gaXMKPiArICogcmV0dXJuZWQuCgpyZXR1cm5lZCBhbmQgc3Rv cmUgaW4gaWQgLSBkbyB3ZSBuZWVkIGJvdGg/IE1heWJlIHJldHVybiB6ZXJvIG9yIGVycm9yIAp0 byBtYWtlIGl0IHNpbXBsZXI/Cgo+ICsgKgo+ICsgKiBEUk1fSTkxNV9HRU1fVk1fREVTVFJPWSAt Cj4gKyAqCj4gKyAqIERlc3Ryb3lzIGEgcHJldmlvdXNseSBjcmVhdGVkIFZNIGlkLgo+ICsgKi8K PiArc3RydWN0IGRybV9pOTE1X2dlbV92bV9jb250cm9sIHsKPiArCV9fdTY0IGV4dGVuc2lvbnM7 Cj4gKwlfX3UzMiBmbGFnczsKPiArCV9fdTMyIGlkOwo+ICt9Owo+ICsKPiAgIHN0cnVjdCBkcm1f aTkxNV9yZWdfcmVhZCB7Cj4gICAJLyoKPiAgIAkgKiBSZWdpc3RlciBvZmZzZXQuCj4gQEAgLTE1 NDAsNyArMTU2NCwxOSBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gewo+ICAg ICogT24gY3JlYXRpb24sIGFsbCBuZXcgY29udGV4dHMgYXJlIG1hcmtlZCBhcyByZWNvdmVyYWJs ZS4KPiAgICAqLwo+ICAgI2RlZmluZSBJOTE1X0NPTlRFWFRfUEFSQU1fUkVDT1ZFUkFCTEUJMHg4 Cj4gKwo+ICsJLyoKPiArCSAqIFRoZSBpZCBvZiB0aGUgYXNzb2NpYXRlZCB2aXJ0dWFsIG1lbW9y eSBhZGRyZXNzIHNwYWNlIChwcEdUVCkgb2YKPiArCSAqIHRoaXMgY29udGV4dC4gQ2FuIGJlIHJl dHJpZXZlZCBhbmQgcGFzc2VkIHRvIGFub3RoZXIgY29udGV4dAo+ICsJICogKG9uIHRoZSBzYW1l IGZkKSBmb3IgYm90aCB0byB1c2UgdGhlIHNhbWUgcHBHVFQgYW5kIHNvIHNoYXJlCj4gKwkgKiBh ZGRyZXNzIGxheW91dHMsIGFuZCBhdm9pZCByZWxvYWRpbmcgdGhlIHBhZ2UgdGFibGVzIG9uIGNv bnRleHQKPiArCSAqIHN3aXRjaGVzIGJldHdlZW4gdGhlbXNlbHZlcy4KPiArCSAqCj4gKwkgKiBT ZWUgRFJNX0k5MTVfR0VNX1ZNX0NSRUFURSBhbmQgRFJNX0k5MTVfR0VNX1ZNX0RFU1RST1kuCj4g KwkgKi8KPiArI2RlZmluZSBJOTE1X0NPTlRFWFRfUEFSQU1fVk0JCTB4OQo+ICAgLyogTXVzdCBi ZSBrZXB0IGNvbXBhY3QgLS0gbm8gaG9sZXMgYW5kIHdlbGwgZG9jdW1lbnRlZCAqLwo+ICsKPiAg IAlfX3U2NCB2YWx1ZTsKPiAgIH07Cj4gICAKPiAKCkxvb2tzIHJlYWR5IHRvIG1lLgoKUmVnYXJk cywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=