From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 01/28] drm/i915: Move fence register tracking from i915->mm to ggtt Date: Mon, 10 Jun 2019 12:46:43 +0300 Message-ID: <87k1dtai2k.fsf@gaia.fi.intel.com> References: <20190610072126.6355-1-chris@chris-wilson.co.uk> <20190610072126.6355-2-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id B3B1388BF3 for ; Mon, 10 Jun 2019 09:46:50 +0000 (UTC) In-Reply-To: <20190610072126.6355-2-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 , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gQXMgdGhl IGZlbmNlIHJlZ2lzdGVycyBvbmx5IGFwcGx5IHRvIHJlZ2lvbnMgaW5zaWRlIHRoZSBHR1RUIGlz IG1ha2VzCj4gbW9yZSBzZW5zZSB0aGF0IHdlIHRyYWNrIHRoZXNlIGFzIHBhcnQgb2YgdGhlIGk5 MTVfZ2d0dCBhbmQgbm90IHRoZQo+IGdlbmVyYWwgbW0uIEluIHRoZSBuZXh0IHBhdGNoLCB3ZSB3 aWxsIHRoZW4gcHVsbCB0aGUgcmVnaXN0ZXIgbG9ja2luZwo+IHVuZGVybmVhdGggdGhlIGk5MTVf Z2d0dC5tdXRleC4KPgo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMt d2lsc29uLmNvLnVrPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1f bW1hbi5jICB8ICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9wbS5j ICAgIHwgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYyAgICAg fCAgNiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvYXBlcnR1cmVfZ20uYyAgICB8ICA3 ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaCAgICAgICAgICAgIHwgIDQgKy0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAgfCA0MiArKysrKy0t LS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAgICB8ICAzICst Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgIHwgMjggLS0tLS0t LS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgfCA1MiArKyst LS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZV9yZWcuYyB8 IDg1ICsrKysrKysrKysrKysrKysrLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2ZlbmNlX3JlZy5oIHwgMTkgKysrKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZ3R0LmMgICAgICAgfCAgMiArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5oICAgICAgIHwgMTQgKysrLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJv ci5jICAgICB8ICA2ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmggICAgICAg ICAgIHwgIDIgKy0KPiAgMTUgZmlsZXMgY2hhbmdlZCwgMTQ0IGluc2VydGlvbnMoKyksIDEzMiBk ZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fbW1hbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYwo+ IGluZGV4IGM3YjliMzRkZTAxYi4uYThiOGI5YzI4MWYxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFuLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jCj4gQEAgLTMxMCw5ICszMTAsOSBAQCB2bV9mYXVsdF90 IGk5MTVfZ2VtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKQo+ICAJLyogTWFyayBhcyBiZWlu ZyBtbWFwcGVkIGludG8gdXNlcnNwYWNlIGZvciBsYXRlciByZXZvY2F0aW9uICovCj4gIAlhc3Nl cnRfcnBtX3dha2Vsb2NrX2hlbGQoaTkxNSk7Cj4gIAlpZiAoIWk5MTVfdm1hX3NldF91c2VyZmF1 bHQodm1hKSAmJiAhb2JqLT51c2VyZmF1bHRfY291bnQrKykKPiAtCQlsaXN0X2FkZCgmb2JqLT51 c2VyZmF1bHRfbGluaywgJmk5MTUtPm1tLnVzZXJmYXVsdF9saXN0KTsKPiArCQlsaXN0X2FkZCgm b2JqLT51c2VyZmF1bHRfbGluaywgJmk5MTUtPmdndHQudXNlcmZhdWx0X2xpc3QpOwo+ICAJaWYg KENPTkZJR19EUk1fSTkxNV9VU0VSRkFVTFRfQVVUT1NVU1BFTkQpCj4gLQkJaW50ZWxfd2FrZXJl Zl9hdXRvKCZpOTE1LT5tbS51c2VyZmF1bHRfd2FrZXJlZiwKPiArCQlpbnRlbF93YWtlcmVmX2F1 dG8oJmk5MTUtPmdndHQudXNlcmZhdWx0X3dha2VyZWYsCj4gIAkJCQkgICBtc2Vjc190b19qaWZm aWVzX3RpbWVvdXQoQ09ORklHX0RSTV9JOTE1X1VTRVJGQVVMVF9BVVRPU1VTUEVORCkpOwo+ICAJ R0VNX0JVR19PTighb2JqLT51c2VyZmF1bHRfY291bnQpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9nZW0vaTkxNV9nZW1fcG0uYwo+IGluZGV4IGY0MGYxM2MwYjhiNy4uNmQ2MDY0ZmIyYmY1IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9wbS5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3BtLmMKPiBAQCAtMTI2LDcgKzEy Niw3IEBAIHZvaWQgaTkxNV9nZW1fc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKPiAgewo+ICAJR0VNX1RSQUNFKCJcbiIpOwo+ICAKPiAtCWludGVsX3dha2VyZWZfYXV0bygm aTkxNS0+bW0udXNlcmZhdWx0X3dha2VyZWYsIDApOwo+ICsJaW50ZWxfd2FrZXJlZl9hdXRvKCZp OTE1LT5nZ3R0LnVzZXJmYXVsdF93YWtlcmVmLCAwKTsKPiAgCWZsdXNoX3dvcmtxdWV1ZShpOTE1 LT53cSk7Cj4gIAo+ICAJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jCj4gaW5kZXggYTZlY2ZkYzczNWM0Li4xZTkz Y2Y2ZWVkZTQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVz ZXQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMKPiBAQCAt Njk1LDE5ICs2OTUsMTkgQEAgc3RhdGljIHZvaWQgcmV2b2tlX21tYXBzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1KQo+ICB7Cj4gIAlpbnQgaTsKPiAgCj4gLQlmb3IgKGkgPSAwOyBpIDwg aTkxNS0+bnVtX2ZlbmNlX3JlZ3M7IGkrKykgewo+ICsJZm9yIChpID0gMDsgaSA8IGk5MTUtPmdn dHQubnVtX2ZlbmNlczsgaSsrKSB7Cj4gIAkJc3RydWN0IGRybV92bWFfb2Zmc2V0X25vZGUgKm5v ZGU7Cj4gIAkJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gIAkJdTY0IHZtYV9vZmZzZXQ7Cj4gIAo+ IC0JCXZtYSA9IFJFQURfT05DRShpOTE1LT5mZW5jZV9yZWdzW2ldLnZtYSk7Cj4gKwkJdm1hID0g UkVBRF9PTkNFKGk5MTUtPmdndHQuZmVuY2VfcmVnc1tpXS52bWEpOwo+ICAJCWlmICghdm1hKQo+ ICAJCQljb250aW51ZTsKPiAgCj4gIAkJaWYgKCFpOTE1X3ZtYV9oYXNfdXNlcmZhdWx0KHZtYSkp Cj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAtCQlHRU1fQlVHX09OKHZtYS0+ZmVuY2UgIT0gJmk5MTUt PmZlbmNlX3JlZ3NbaV0pOwo+ICsJCUdFTV9CVUdfT04odm1hLT5mZW5jZSAhPSAmaTkxNS0+Z2d0 dC5mZW5jZV9yZWdzW2ldKTsKPiAgCQlub2RlID0gJnZtYS0+b2JqLT5iYXNlLnZtYV9ub2RlOwo+ ICAJCXZtYV9vZmZzZXQgPSB2bWEtPmdndHRfdmlldy5wYXJ0aWFsLm9mZnNldCA8PCBQQUdFX1NI SUZUOwo+ICAJCXVubWFwX21hcHBpbmdfcmFuZ2UoaTkxNS0+ZHJtLmFub25faW5vZGUtPmlfbWFw cGluZywKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2FwZXJ0dXJlX2dt LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvYXBlcnR1cmVfZ20uYwo+IGluZGV4IDFmYTJm NjVjM2NkMS4uNDA5ODkwMmJmYWViIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9hcGVydHVyZV9nbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2FwZXJ0 dXJlX2dtLmMKPiBAQCAtMzUsNiArMzUsNyBAQAo+ICAgKi8KPiAgCj4gICNpbmNsdWRlICJpOTE1 X2Rydi5oIgo+ICsjaW5jbHVkZSAiaTkxNV9nZW1fZmVuY2VfcmVnLmgiCj4gICNpbmNsdWRlICJn dnQuaCIKPiAgCj4gIHN0YXRpYyBpbnQgYWxsb2NfZ20oc3RydWN0IGludGVsX3ZncHUgKnZncHUs IGJvb2wgaGlnaF9nbSkKPiBAQCAtMTI4LDcgKzEyOSw3IEBAIHZvaWQgaW50ZWxfdmdwdV93cml0 ZV9mZW5jZShzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSwKPiAgewo+ICAJc3RydWN0IGludGVsX2d2 dCAqZ3Z0ID0gdmdwdS0+Z3Z0Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZ3Z0LT5kZXZfcHJpdjsKPiAtCXN0cnVjdCBkcm1faTkxNV9mZW5jZV9yZWcgKnJlZzsKPiAr CXN0cnVjdCBpOTE1X2ZlbmNlX3JlZyAqcmVnOwo+ICAJaTkxNV9yZWdfdCBmZW5jZV9yZWdfbG8s IGZlbmNlX3JlZ19oaTsKPiAgCj4gIAlhc3NlcnRfcnBtX3dha2Vsb2NrX2hlbGQoZGV2X3ByaXYp Owo+IEBAIC0xNjMsNyArMTY0LDcgQEAgc3RhdGljIHZvaWQgZnJlZV92Z3B1X2ZlbmNlKHN0cnVj dCBpbnRlbF92Z3B1ICp2Z3B1KQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfZ3Z0ICpndnQgPSB2Z3B1 LT5ndnQ7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBndnQtPmRldl9w cml2Owo+IC0Jc3RydWN0IGRybV9pOTE1X2ZlbmNlX3JlZyAqcmVnOwo+ICsJc3RydWN0IGk5MTVf ZmVuY2VfcmVnICpyZWc7Cj4gIAl1MzIgaTsKPiAgCj4gIAlpZiAoV0FSTl9PTighdmdwdV9mZW5j ZV9zeih2Z3B1KSkpCj4gQEAgLTE4Nyw3ICsxODgsNyBAQCBzdGF0aWMgaW50IGFsbG9jX3ZncHVf ZmVuY2Uoc3RydWN0IGludGVsX3ZncHUgKnZncHUpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9ndnQg Kmd2dCA9IHZncHUtPmd2dDsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGd2dC0+ZGV2X3ByaXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfZmVuY2VfcmVnICpyZWc7Cj4gKwlz dHJ1Y3QgaTkxNV9mZW5jZV9yZWcgKnJlZzsKPiAgCWludCBpOwo+ICAKPiAgCWludGVsX3J1bnRp bWVfcG1fZ2V0KGRldl9wcml2KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Z0L2d2dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oCj4gaW5kZXggYjU0ZjJi ZGMxM2E0Li5kZmQxMGNmODJiNjUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Z0L2d2dC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oCj4gQEAgLTg3 LDcgKzg3LDcgQEAgc3RydWN0IGludGVsX3ZncHVfZ20gewo+ICAKPiAgLyogRmVuY2VzIG93bmVk IGJ5IGEgdkdQVSAqLwo+ICBzdHJ1Y3QgaW50ZWxfdmdwdV9mZW5jZSB7Cj4gLQlzdHJ1Y3QgZHJt X2k5MTVfZmVuY2VfcmVnICpyZWdzW0lOVEVMX0dWVF9NQVhfTlVNX0ZFTkNFU107Cj4gKwlzdHJ1 Y3QgaTkxNV9mZW5jZV9yZWcgKnJlZ3NbSU5URUxfR1ZUX01BWF9OVU1fRkVOQ0VTXTsKPiAgCXUz MiBiYXNlOwo+ICAJdTMyIHNpemU7Cj4gIH07Cj4gQEAgLTM5MCw3ICszOTAsNyBAQCBpbnQgaW50 ZWxfZ3Z0X2xvYWRfZmlybXdhcmUoc3RydWN0IGludGVsX2d2dCAqZ3Z0KTsKPiAgI2RlZmluZSBn dnRfaGlkZGVuX2dtYWRyX2VuZChndnQpIChndnRfaGlkZGVuX2dtYWRyX2Jhc2UoZ3Z0KSBcCj4g IAkJCQkgICArIGd2dF9oaWRkZW5fc3ooZ3Z0KSAtIDEpCj4gIAo+IC0jZGVmaW5lIGd2dF9mZW5j ZV9zeihndnQpIChndnQtPmRldl9wcml2LT5udW1fZmVuY2VfcmVncykKPiArI2RlZmluZSBndnRf ZmVuY2Vfc3ooZ3Z0KSAoKGd2dCktPmRldl9wcml2LT5nZ3R0Lm51bV9mZW5jZXMpCj4gIAo+ICAv KiBBcGVydHVyZS9HTSBzcGFjZSBkZWZpbml0aW9ucyBmb3IgdkdQVSAqLwo+ICAjZGVmaW5lIHZn cHVfYXBlcnR1cmVfb2Zmc2V0KHZncHUpCSgodmdwdSktPmdtLmxvd19nbV9ub2RlLnN0YXJ0KQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gaW5kZXggZjIxMjI0MWEyNzU4Li4zMzFi MmY0NzhjNDggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC0xNTYs OCArMTU2LDYgQEAgZGVzY3JpYmVfb2JqKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaikKPiAgCXVuc2lnbmVkIGludCBmcm9udGJ1ZmZlcl9iaXRzOwo+ ICAJaW50IHBpbl9jb3VudCA9IDA7Cj4gIAo+IC0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmb2JqLT5i YXNlLmRldi0+c3RydWN0X211dGV4KTsKPiAtCj4gIAlzZXFfcHJpbnRmKG0sICIlcEs6ICVjJWMl YyVjJWMgJTh6ZEtpQiAlMDJ4ICUwMnggJXMlcyVzIiwKPiAgCQkgICAmb2JqLT5iYXNlLAo+ICAJ CSAgIGdldF9hY3RpdmVfZmxhZyhvYmopLAo+IEBAIC0xNzMsMTcgKzE3MSwxNyBAQCBkZXNjcmli ZV9vYmooc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KQo+ICAJCSAgIG9iai0+bW0ubWFkdiA9PSBJOTE1X01BRFZfRE9OVE5FRUQgPyAiIHB1cmdlYWJs ZSIgOiAiIik7Cj4gIAlpZiAob2JqLT5iYXNlLm5hbWUpCj4gIAkJc2VxX3ByaW50ZihtLCAiIChu YW1lOiAlZCkiLCBvYmotPmJhc2UubmFtZSk7Cj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwg Jm9iai0+dm1hLmxpc3QsIG9ial9saW5rKSB7Cj4gLQkJaWYgKGk5MTVfdm1hX2lzX3Bpbm5lZCh2 bWEpKQo+IC0JCQlwaW5fY291bnQrKzsKPiAtCX0KPiAtCXNlcV9wcmludGYobSwgIiAocGlubmVk IHggJWQpIiwgcGluX2NvdW50KTsKPiAtCWlmIChvYmotPnBpbl9nbG9iYWwpCj4gLQkJc2VxX3By aW50ZihtLCAiIChnbG9iYWwpIik7Cj4gKwo+ICsJc3Bpbl9sb2NrKCZvYmotPnZtYS5sb2NrKTsK PiAgCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmb2JqLT52bWEubGlzdCwgb2JqX2xpbmspIHsK PiAgCQlpZiAoIWRybV9tbV9ub2RlX2FsbG9jYXRlZCgmdm1hLT5ub2RlKSkKPiAgCQkJY29udGlu dWU7Cj4gIAo+ICsJCXNwaW5fdW5sb2NrKCZvYmotPnZtYS5sb2NrKTsKPiArCj4gKwkJaWYgKGk5 MTVfdm1hX2lzX3Bpbm5lZCh2bWEpKQo+ICsJCQlwaW5fY291bnQrKzsKPiArCj4gIAkJc2VxX3By aW50ZihtLCAiICglc2d0dCBvZmZzZXQ6ICUwOGxseCwgc2l6ZTogJTA4bGx4LCBwYWdlczogJXMi LAo+ICAJCQkgICBpOTE1X3ZtYV9pc19nZ3R0KHZtYSkgPyAiZyIgOiAicHAiLAo+ICAJCQkgICB2 bWEtPm5vZGUuc3RhcnQsIHZtYS0+bm9kZS5zaXplLAo+IEBAIC0yMzQsOSArMjMyLDE2IEBAIGRl c2NyaWJlX29iaihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmopCj4gIAkJCQkgICB2bWEtPmZlbmNlLT5pZCwKPiAgCQkJCSAgIGk5MTVfYWN0aXZlX3Jl cXVlc3RfaXNzZXQoJnZtYS0+bGFzdF9mZW5jZSkgPyAiKiIgOiAiIik7Cj4gIAkJc2VxX3B1dHMo bSwgIikiKTsKPiArCj4gKwkJc3Bpbl9sb2NrKCZvYmotPnZtYS5sb2NrKTsKPiAgCX0KPiArCXNw aW5fdW5sb2NrKCZvYmotPnZtYS5sb2NrKTsKPiArCj4gKwlzZXFfcHJpbnRmKG0sICIgKHBpbm5l ZCB4ICVkKSIsIHBpbl9jb3VudCk7Cj4gIAlpZiAob2JqLT5zdG9sZW4pCj4gIAkJc2VxX3ByaW50 ZihtLCAiIChzdG9sZW46ICUwOGxseCkiLCBvYmotPnN0b2xlbi0+c3RhcnQpOwo+ICsJaWYgKG9i ai0+cGluX2dsb2JhbCkKPiArCQlzZXFfcHJpbnRmKG0sICIgKGdsb2JhbCkiKTsKPiAgCj4gIAll bmdpbmUgPSBpOTE1X2dlbV9vYmplY3RfbGFzdF93cml0ZV9lbmdpbmUob2JqKTsKPiAgCWlmIChl bmdpbmUpCj4gQEAgLTg3MCwyOCArODc1LDI1IEBAIHN0YXRpYyBpbnQgaTkxNV9pbnRlcnJ1cHRf aW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gIAo+ICBzdGF0aWMgaW50IGk5 MTVfZ2VtX2ZlbmNlX3JlZ3NfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4g IHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNSht LT5wcml2YXRlKTsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSAmZGV2X3ByaXYtPmRybTsK PiAtCWludCBpLCByZXQ7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IG5vZGVf dG9faTkxNShtLT5wcml2YXRlKTsKPiArCXVuc2lnbmVkIGludCBpOwo+ICAKPiAtCXJldCA9IG11 dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JaWYgKHJldCkK PiAtCQlyZXR1cm4gcmV0Owo+ICsJc2VxX3ByaW50ZihtLCAiVG90YWwgZmVuY2VzID0gJWRcbiIs IGk5MTUtPmdndHQubnVtX2ZlbmNlcyk7Cj4gIAo+IC0Jc2VxX3ByaW50ZihtLCAiVG90YWwgZmVu Y2VzID0gJWRcbiIsIGRldl9wcml2LT5udW1fZmVuY2VfcmVncyk7Cj4gLQlmb3IgKGkgPSAwOyBp IDwgZGV2X3ByaXYtPm51bV9mZW5jZV9yZWdzOyBpKyspIHsKPiAtCQlzdHJ1Y3QgaTkxNV92bWEg KnZtYSA9IGRldl9wcml2LT5mZW5jZV9yZWdzW2ldLnZtYTsKPiArCXJjdV9yZWFkX2xvY2soKTsK ClRoaXMgZG9lcyBub3Qgc2VlbSB0byBiZSBmb3IgcmVzZXQuIFNvIGl0IG11c3QgYmUgZm9yIGtl ZXBpbmcKdGhlIG9iamVjdCBhbGl2ZS4KCldoYXQgZ3VhcmFudGVlcyB0aGF0IHRoZSBvYmogaXMg a2VwdCBhbGl2ZSBvdmVyIHRoaXMgcmN1CmxvY2s/CgotTWlrYQoKPiArCWZvciAoaSA9IDA7IGkg PCBpOTE1LT5nZ3R0Lm51bV9mZW5jZXM7IGkrKykgewo+ICsJCXN0cnVjdCBpOTE1X3ZtYSAqdm1h ID0gaTkxNS0+Z2d0dC5mZW5jZV9yZWdzW2ldLnZtYTsKPiAgCj4gIAkJc2VxX3ByaW50ZihtLCAi RmVuY2UgJWQsIHBpbiBjb3VudCA9ICVkLCBvYmplY3QgPSAiLAo+IC0JCQkgICBpLCBkZXZfcHJp di0+ZmVuY2VfcmVnc1tpXS5waW5fY291bnQpOwo+ICsJCQkgICBpLCBpOTE1LT5nZ3R0LmZlbmNl X3JlZ3NbaV0ucGluX2NvdW50KTsKPiAgCQlpZiAoIXZtYSkKPiAgCQkJc2VxX3B1dHMobSwgInVu dXNlZCIpOwo+ICAJCWVsc2UKPiAgCQkJZGVzY3JpYmVfb2JqKG0sIHZtYS0+b2JqKTsKPiAgCQlz ZXFfcHV0YyhtLCAnXG4nKTsKPiAgCX0KPiArCXJjdV9yZWFkX3VubG9jaygpOwo+ICAKPiAtCW11 dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gaW5kZXggMWFmNjc1MWUxYjM2Li4wNmE3NmQ0OWVjZDAg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBAQCAtMzUwLDcgKzM1MCw3IEBAIHN0YXRp YyBpbnQgaTkxNV9nZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpk YXRhLAo+ICAJCXZhbHVlID0gcGRldi0+cmV2aXNpb247Cj4gIAkJYnJlYWs7Cj4gIAljYXNlIEk5 MTVfUEFSQU1fTlVNX0ZFTkNFU19BVkFJTDoKPiAtCQl2YWx1ZSA9IGRldl9wcml2LT5udW1fZmVu Y2VfcmVnczsKPiArCQl2YWx1ZSA9IGRldl9wcml2LT5nZ3R0Lm51bV9mZW5jZXM7Cj4gIAkJYnJl YWs7Cj4gIAljYXNlIEk5MTVfUEFSQU1fSEFTX09WRVJMQVk6Cj4gIAkJdmFsdWUgPSBkZXZfcHJp di0+b3ZlcmxheSA/IDEgOiAwOwo+IEBAIC0xNjI1LDcgKzE2MjUsNiBAQCBzdGF0aWMgaW50IGk5 MTVfZHJpdmVyX2luaXRfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJ aW50ZWxfdW5jb3JlX3Nhbml0aXplKGRldl9wcml2KTsKPiAgCj4gIAlpbnRlbF9ndF9pbml0X3dv cmthcm91bmRzKGRldl9wcml2KTsKPiAtCWk5MTVfZ2VtX2xvYWRfaW5pdF9mZW5jZXMoZGV2X3By aXYpOwo+ICAKPiAgCS8qIE9uIHRoZSA5NDVHL0dNLCB0aGUgY2hpcHNldCByZXBvcnRzIHRoZSBN U0kgY2FwYWJpbGl0eSBvbiB0aGUKPiAgCSAqIGludGVncmF0ZWQgZ3JhcGhpY3MgZXZlbiB0aG91 Z2ggdGhlIHN1cHBvcnQgaXNuJ3QgYWN0dWFsbHkgdGhlcmUKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKPiBpbmRleCA4MmU1NWM2NTI4OWEuLjllNmVjZWQ0NzdlNyAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAo+IEBAIC03NjEsMTQgKzc2MSw2IEBAIHN0cnVjdCBpOTE1X2dlbV9tbSB7Cj4g IAkgKi8KPiAgCXN0cnVjdCBsaXN0X2hlYWQgcHVyZ2VfbGlzdDsKPiAgCj4gLQkvKiogTGlzdCBv ZiBhbGwgb2JqZWN0cyBpbiBndHRfc3BhY2UsIGN1cnJlbnRseSBtbWFwZWQgYnkgdXNlcnNwYWNl Lgo+IC0JICogQWxsIG9iamVjdHMgd2l0aGluIHRoaXMgbGlzdCBtdXN0IGFsc28gYmUgb24gYm91 bmRfbGlzdC4KPiAtCSAqLwo+IC0Jc3RydWN0IGxpc3RfaGVhZCB1c2VyZmF1bHRfbGlzdDsKPiAt Cj4gLQkvKiBNYW51YWwgcnVudGltZSBwbSBhdXRvc3VzcGVuZCBkZWxheSBmb3IgdXNlciBHR1RU IG1tYXBzICovCj4gLQlzdHJ1Y3QgaW50ZWxfd2FrZXJlZl9hdXRvIHVzZXJmYXVsdF93YWtlcmVm Owo+IC0KPiAgCS8qKgo+ICAJICogTGlzdCBvZiBvYmplY3RzIHdoaWNoIGFyZSBwZW5kaW5nIGRl c3RydWN0aW9uLgo+ICAJICovCj4gQEAgLTc5OCw5ICs3OTAsNiBAQCBzdHJ1Y3QgaTkxNV9nZW1f bW0gewo+ICAJc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHZtYXBfbm90aWZpZXI7Cj4gIAlzdHJ1Y3Qg c2hyaW5rZXIgc2hyaW5rZXI7Cj4gIAo+IC0JLyoqIExSVSBsaXN0IG9mIG9iamVjdHMgd2l0aCBm ZW5jZSByZWdzIG9uIHRoZW0uICovCj4gLQlzdHJ1Y3QgbGlzdF9oZWFkIGZlbmNlX2xpc3Q7Cj4g LQo+ICAJLyoqCj4gIAkgKiBXb3JrcXVldWUgdG8gZmF1bHQgaW4gdXNlcnB0ciBwYWdlcywgZmx1 c2hlZCBieSB0aGUgZXhlY2J1Zgo+ICAJICogd2hlbiByZXF1aXJlZCBidXQgb3RoZXJ3aXNlIGxl ZnQgdG8gdXNlcnNwYWNlIHRvIHRyeSBhZ2Fpbgo+IEBAIC0xNDg5LDkgKzE0NzgsNiBAQCBzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gIAkvKiBwcm90ZWN0cyBwYW5lbCBwb3dlciBzZXF1ZW5j ZXIgc3RhdGUgKi8KPiAgCXN0cnVjdCBtdXRleCBwcHNfbXV0ZXg7Cj4gIAo+IC0Jc3RydWN0IGRy bV9pOTE1X2ZlbmNlX3JlZyBmZW5jZV9yZWdzW0k5MTVfTUFYX05VTV9GRU5DRVNdOyAvKiBhc3N1 bWUgOTY1ICovCj4gLQlpbnQgbnVtX2ZlbmNlX3JlZ3M7IC8qIDggb24gcHJlLTk2NSwgMTYgb3Ro ZXJ3aXNlICovCj4gLQo+ICAJdW5zaWduZWQgaW50IGZzYl9mcmVxLCBtZW1fZnJlcSwgaXNfZGRy MzsKPiAgCXVuc2lnbmVkIGludCBza2xfcHJlZmVycmVkX3Zjb19mcmVxOwo+ICAJdW5zaWduZWQg aW50IG1heF9jZGNsa19mcmVxOwo+IEBAIC0yNTQyLDcgKzI1MjgsNiBAQCB2b2lkIGk5MTVfZ2Vt X2NsZWFudXBfdXNlcnB0cihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICB2 b2lkIGk5MTVfZ2VtX3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiAg aW50IGk5MTVfZ2VtX2luaXRfZWFybHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KTsKPiAgdm9pZCBpOTE1X2dlbV9jbGVhbnVwX2Vhcmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdik7Cj4gLXZvaWQgaTkxNV9nZW1fbG9hZF9pbml0X2ZlbmNlcyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICBpbnQgaTkxNV9nZW1fZnJlZXplKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIGludCBpOTE1X2dlbV9mcmVlemVfbGF0ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAKPiBAQCAtMjY2OCwxOSArMjY1 Myw2IEBAIGk5MTVfdm1fdG9fcHBndHQoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4g IAlyZXR1cm4gY29udGFpbmVyX29mKHZtLCBzdHJ1Y3QgaTkxNV9od19wcGd0dCwgdm0pOwo+ICB9 Cj4gIAo+IC0vKiBpOTE1X2dlbV9mZW5jZV9yZWcuYyAqLwo+IC1zdHJ1Y3QgZHJtX2k5MTVfZmVu Y2VfcmVnICoKPiAtaTkxNV9yZXNlcnZlX2ZlbmNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdik7Cj4gLXZvaWQgaTkxNV91bnJlc2VydmVfZmVuY2Uoc3RydWN0IGRybV9pOTE1X2Zl bmNlX3JlZyAqZmVuY2UpOwo+IC0KPiAtdm9pZCBpOTE1X2dlbV9yZXN0b3JlX2ZlbmNlcyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+IC0KPiAtdm9pZCBpOTE1X2dlbV9kZXRl Y3RfYml0XzZfc3dpenpsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+IC12 b2lkIGk5MTVfZ2VtX29iamVjdF9kb19iaXRfMTdfc3dpenpsZShzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqLAo+IC0JCQkJICAgICAgIHN0cnVjdCBzZ190YWJsZSAqcGFnZXMpOwo+IC12 b2lkIGk5MTVfZ2VtX29iamVjdF9zYXZlX2JpdF8xN19zd2l6emxlKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmosCj4gLQkJCQkJIHN0cnVjdCBzZ190YWJsZSAqcGFnZXMpOwo+IC0KPiAg c3RhdGljIGlubGluZSBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqCj4gIF9faTkxNV9nZW1fY29u dGV4dF9sb29rdXBfcmN1KHN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdiwg dTMyIGlkKQo+ICB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggOWYyZTIxM2M2MDQ2 Li45OTQyN2Q4YjkyNjYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBAQCAtODgzLDcg Kzg4Myw3IEBAIGk5MTVfZ2VtX3N3X2ZpbmlzaF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB2b2lkICpkYXRhLAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXZvaWQgaTkxNV9nZW1fcnVu dGltZV9zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArdm9pZCBp OTE1X2dlbV9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4g IHsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosICpvbjsKPiAgCWludCBpOwo+ IEBAIC04OTYsMTcgKzg5NiwxOSBAQCB2b2lkIGk5MTVfZ2VtX3J1bnRpbWVfc3VzcGVuZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkgKi8KPiAgCj4gIAlsaXN0X2Zvcl9l YWNoX2VudHJ5X3NhZmUob2JqLCBvbiwKPiAtCQkJCSAmZGV2X3ByaXYtPm1tLnVzZXJmYXVsdF9s aXN0LCB1c2VyZmF1bHRfbGluaykKPiArCQkJCSAmaTkxNS0+Z2d0dC51c2VyZmF1bHRfbGlzdCwg dXNlcmZhdWx0X2xpbmspCj4gIAkJX19pOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9tbWFwKG9iaik7 Cj4gIAo+IC0JLyogVGhlIGZlbmNlIHdpbGwgYmUgbG9zdCB3aGVuIHRoZSBkZXZpY2UgcG93ZXJz IGRvd24uIElmIGFueSB3ZXJlCj4gKwkvKgo+ICsJICogVGhlIGZlbmNlIHdpbGwgYmUgbG9zdCB3 aGVuIHRoZSBkZXZpY2UgcG93ZXJzIGRvd24uIElmIGFueSB3ZXJlCj4gIAkgKiBpbiB1c2UgYnkg aGFyZHdhcmUgKGkuZS4gdGhleSBhcmUgcGlubmVkKSwgd2Ugc2hvdWxkIG5vdCBiZSBwb3dlcmlu Zwo+ICAJICogZG93biEgQWxsIG90aGVyIGZlbmNlcyB3aWxsIGJlIHJlYWNxdWlyZWQgYnkgdGhl IHVzZXIgdXBvbiB3YWtpbmcuCj4gIAkgKi8KPiAtCWZvciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+ bnVtX2ZlbmNlX3JlZ3M7IGkrKykgewo+IC0JCXN0cnVjdCBkcm1faTkxNV9mZW5jZV9yZWcgKnJl ZyA9ICZkZXZfcHJpdi0+ZmVuY2VfcmVnc1tpXTsKPiArCWZvciAoaSA9IDA7IGkgPCBpOTE1LT5n Z3R0Lm51bV9mZW5jZXM7IGkrKykgewo+ICsJCXN0cnVjdCBpOTE1X2ZlbmNlX3JlZyAqcmVnID0g Jmk5MTUtPmdndHQuZmVuY2VfcmVnc1tpXTsKPiAgCj4gLQkJLyogSWRlYWxseSB3ZSB3YW50IHRv IGFzc2VydCB0aGF0IHRoZSBmZW5jZSByZWdpc3RlciBpcyBub3QKPiArCQkvKgo+ICsJCSAqIElk ZWFsbHkgd2Ugd2FudCB0byBhc3NlcnQgdGhhdCB0aGUgZmVuY2UgcmVnaXN0ZXIgaXMgbm90Cj4g IAkJICogbGl2ZSBhdCB0aGlzIHBvaW50IChpLmUuIHRoYXQgbm8gcGllY2Ugb2YgY29kZSB3aWxs IGJlCj4gIAkJICogdHJ5aW5nIHRvIHdyaXRlIHRocm91Z2ggZmVuY2UgKyBHVFQsIGFzIHRoYXQg Ym90aCB2aW9sYXRlcwo+ICAJCSAqIG91ciB0cmFja2luZyBvZiBhY3Rpdml0eSBhbmQgYXNzb2Np YXRlZCBsb2NraW5nL2JhcnJpZXJzLAo+IEBAIC0xNjg0LDcgKzE2ODYsNyBAQCB2b2lkIGk5MTVf Z2VtX2ZpbmlfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gIAlH RU1fQlVHX09OKGRldl9wcml2LT5ndC5hd2FrZSk7Cj4gIAo+IC0JaW50ZWxfd2FrZXJlZl9hdXRv X2ZpbmkoJmRldl9wcml2LT5tbS51c2VyZmF1bHRfd2FrZXJlZik7Cj4gKwlpbnRlbF93YWtlcmVm X2F1dG9fZmluaSgmZGV2X3ByaXYtPmdndHQudXNlcmZhdWx0X3dha2VyZWYpOwo+ICAKPiAgCWk5 MTVfZ2VtX3N1c3BlbmRfbGF0ZShkZXZfcHJpdik7Cj4gIAlpbnRlbF9kaXNhYmxlX2d0X3Bvd2Vy c2F2ZShkZXZfcHJpdik7Cj4gQEAgLTE3MjYsMzggKzE3MjgsNiBAQCB2b2lkIGk5MTVfZ2VtX2lu aXRfbW1pbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCWk5MTVfZ2VtX3Nhbml0 aXplKGk5MTUpOwo+ICB9Cj4gIAo+IC12b2lkCj4gLWk5MTVfZ2VtX2xvYWRfaW5pdF9mZW5jZXMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IC17Cj4gLQlpbnQgaTsKPiAtCj4g LQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA3ICYmICFJU19WQUxMRVlWSUVXKGRldl9wcml2 KSAmJgo+IC0JICAgICFJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiAtCQlkZXZfcHJpdi0+bnVt X2ZlbmNlX3JlZ3MgPSAzMjsKPiAtCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCB8 fAo+IC0JCSBJU19JOTQ1RyhkZXZfcHJpdikgfHwgSVNfSTk0NUdNKGRldl9wcml2KSB8fAo+IC0J CSBJU19HMzMoZGV2X3ByaXYpIHx8IElTX1BJTkVWSUVXKGRldl9wcml2KSkKPiAtCQlkZXZfcHJp di0+bnVtX2ZlbmNlX3JlZ3MgPSAxNjsKPiAtCWVsc2UKPiAtCQlkZXZfcHJpdi0+bnVtX2ZlbmNl X3JlZ3MgPSA4Owo+IC0KPiAtCWlmIChpbnRlbF92Z3B1X2FjdGl2ZShkZXZfcHJpdikpCj4gLQkJ ZGV2X3ByaXYtPm51bV9mZW5jZV9yZWdzID0KPiAtCQkJCUk5MTVfUkVBRCh2Z3RpZl9yZWcoYXZh aWxfcnMuZmVuY2VfbnVtKSk7Cj4gLQo+IC0JLyogSW5pdGlhbGl6ZSBmZW5jZSByZWdpc3RlcnMg dG8gemVybyAqLwo+IC0JZm9yIChpID0gMDsgaSA8IGRldl9wcml2LT5udW1fZmVuY2VfcmVnczsg aSsrKSB7Cj4gLQkJc3RydWN0IGRybV9pOTE1X2ZlbmNlX3JlZyAqZmVuY2UgPSAmZGV2X3ByaXYt PmZlbmNlX3JlZ3NbaV07Cj4gLQo+IC0JCWZlbmNlLT5pOTE1ID0gZGV2X3ByaXY7Cj4gLQkJZmVu Y2UtPmlkID0gaTsKPiAtCQlsaXN0X2FkZF90YWlsKCZmZW5jZS0+bGluaywgJmRldl9wcml2LT5t bS5mZW5jZV9saXN0KTsKPiAtCX0KPiAtCWk5MTVfZ2VtX3Jlc3RvcmVfZmVuY2VzKGRldl9wcml2 KTsKPiAtCj4gLQlpOTE1X2dlbV9kZXRlY3RfYml0XzZfc3dpenpsZShkZXZfcHJpdik7Cj4gLX0K PiAtCj4gIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX2luaXRfX21tKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KQo+ICB7Cj4gIAlzcGluX2xvY2tfaW5pdCgmaTkxNS0+bW0ub2JqX2xvY2spOwo+ IEBAIC0xNzY4LDEwICsxNzM4LDYgQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1faW5pdF9fbW0oc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIAlJTklUX0xJU1RfSEVBRCgmaTkxNS0+bW0u cHVyZ2VfbGlzdCk7Cj4gIAlJTklUX0xJU1RfSEVBRCgmaTkxNS0+bW0udW5ib3VuZF9saXN0KTsK PiAgCUlOSVRfTElTVF9IRUFEKCZpOTE1LT5tbS5ib3VuZF9saXN0KTsKPiAtCUlOSVRfTElTVF9I RUFEKCZpOTE1LT5tbS5mZW5jZV9saXN0KTsKPiAtCj4gLQlJTklUX0xJU1RfSEVBRCgmaTkxNS0+ bW0udXNlcmZhdWx0X2xpc3QpOwo+IC0JaW50ZWxfd2FrZXJlZl9hdXRvX2luaXQoJmk5MTUtPm1t LnVzZXJmYXVsdF93YWtlcmVmLCBpOTE1KTsKPiAgCj4gIAlpOTE1X2dlbV9pbml0X19vYmplY3Rz KGk5MTUpOwo+ICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2ZlbmNlX3JlZy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2VfcmVnLmMK PiBpbmRleCAxMGFhNmUzNTBiZmEuLjRiYTM3MjY1NTZhNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZV9yZWcuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2ZlbmNlX3JlZy5jCj4gQEAgLTI1LDYgKzI1LDcgQEAKPiAgCj4gICNp bmNsdWRlICJpOTE1X2Rydi5oIgo+ICAjaW5jbHVkZSAiaTkxNV9zY2F0dGVybGlzdC5oIgo+ICsj aW5jbHVkZSAiaTkxNV92Z3B1LmgiCj4gIAo+ICAvKioKPiAgICogRE9DOiBmZW5jZSByZWdpc3Rl ciBoYW5kbGluZwo+IEBAIC01OCw3ICs1OSw3IEBACj4gIAo+ICAjZGVmaW5lIHBpcGVsaW5lZCAw Cj4gIAo+IC1zdGF0aWMgdm9pZCBpOTY1X3dyaXRlX2ZlbmNlX3JlZyhzdHJ1Y3QgZHJtX2k5MTVf ZmVuY2VfcmVnICpmZW5jZSwKPiArc3RhdGljIHZvaWQgaTk2NV93cml0ZV9mZW5jZV9yZWcoc3Ry dWN0IGk5MTVfZmVuY2VfcmVnICpmZW5jZSwKPiAgCQkJCSBzdHJ1Y3QgaTkxNV92bWEgKnZtYSkK PiAgewo+ICAJaTkxNV9yZWdfdCBmZW5jZV9yZWdfbG8sIGZlbmNlX3JlZ19oaTsKPiBAQCAtMTE1 LDcgKzExNiw3IEBAIHN0YXRpYyB2b2lkIGk5NjVfd3JpdGVfZmVuY2VfcmVnKHN0cnVjdCBkcm1f aTkxNV9mZW5jZV9yZWcgKmZlbmNlLAo+ICAJfQo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBpOTE1 X3dyaXRlX2ZlbmNlX3JlZyhzdHJ1Y3QgZHJtX2k5MTVfZmVuY2VfcmVnICpmZW5jZSwKPiArc3Rh dGljIHZvaWQgaTkxNV93cml0ZV9mZW5jZV9yZWcoc3RydWN0IGk5MTVfZmVuY2VfcmVnICpmZW5j ZSwKPiAgCQkJCSBzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAgewo+ICAJdTMyIHZhbDsKPiBAQCAt MTU1LDcgKzE1Niw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfd3JpdGVfZmVuY2VfcmVnKHN0cnVjdCBk cm1faTkxNV9mZW5jZV9yZWcgKmZlbmNlLAo+ICAJfQo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBp ODMwX3dyaXRlX2ZlbmNlX3JlZyhzdHJ1Y3QgZHJtX2k5MTVfZmVuY2VfcmVnICpmZW5jZSwKPiAr c3RhdGljIHZvaWQgaTgzMF93cml0ZV9mZW5jZV9yZWcoc3RydWN0IGk5MTVfZmVuY2VfcmVnICpm ZW5jZSwKPiAgCQkJCSBzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAgewo+ICAJdTMyIHZhbDsKPiBA QCAtMTg3LDcgKzE4OCw3IEBAIHN0YXRpYyB2b2lkIGk4MzBfd3JpdGVfZmVuY2VfcmVnKHN0cnVj dCBkcm1faTkxNV9mZW5jZV9yZWcgKmZlbmNlLAo+ICAJfQo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9p ZCBmZW5jZV93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfZmVuY2VfcmVnICpmZW5jZSwKPiArc3RhdGlj IHZvaWQgZmVuY2Vfd3JpdGUoc3RydWN0IGk5MTVfZmVuY2VfcmVnICpmZW5jZSwKPiAgCQkJc3Ry dWN0IGk5MTVfdm1hICp2bWEpCj4gIHsKPiAgCS8qCj4gQEAgLTIxMSw3ICsyMTIsNyBAQCBzdGF0 aWMgdm9pZCBmZW5jZV93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfZmVuY2VfcmVnICpmZW5jZSwKPiAg CWZlbmNlLT5kaXJ0eSA9IGZhbHNlOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50IGZlbmNlX3VwZGF0 ZShzdHJ1Y3QgZHJtX2k5MTVfZmVuY2VfcmVnICpmZW5jZSwKPiArc3RhdGljIGludCBmZW5jZV91 cGRhdGUoc3RydWN0IGk5MTVfZmVuY2VfcmVnICpmZW5jZSwKPiAgCQkJc3RydWN0IGk5MTVfdm1h ICp2bWEpCj4gIHsKPiAgCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+IEBAIC0yNTYsNyArMjU3 LDcgQEAgc3RhdGljIGludCBmZW5jZV91cGRhdGUoc3RydWN0IGRybV9pOTE1X2ZlbmNlX3JlZyAq ZmVuY2UsCj4gIAkJCW9sZC0+ZmVuY2UgPSBOVUxMOwo+ICAJCX0KPiAgCj4gLQkJbGlzdF9tb3Zl KCZmZW5jZS0+bGluaywgJmZlbmNlLT5pOTE1LT5tbS5mZW5jZV9saXN0KTsKPiArCQlsaXN0X21v dmUoJmZlbmNlLT5saW5rLCAmZmVuY2UtPmk5MTUtPmdndHQuZmVuY2VfbGlzdCk7Cj4gIAl9Cj4g IAo+ICAJLyoKPiBAQCAtMjgwLDcgKzI4MSw3IEBAIHN0YXRpYyBpbnQgZmVuY2VfdXBkYXRlKHN0 cnVjdCBkcm1faTkxNV9mZW5jZV9yZWcgKmZlbmNlLAo+ICAKPiAgCWlmICh2bWEpIHsKPiAgCQl2 bWEtPmZlbmNlID0gZmVuY2U7Cj4gLQkJbGlzdF9tb3ZlX3RhaWwoJmZlbmNlLT5saW5rLCAmZmVu Y2UtPmk5MTUtPm1tLmZlbmNlX2xpc3QpOwo+ICsJCWxpc3RfbW92ZV90YWlsKCZmZW5jZS0+bGlu aywgJmZlbmNlLT5pOTE1LT5nZ3R0LmZlbmNlX2xpc3QpOwo+ICAJfQo+ICAKPiAgCWludGVsX3J1 bnRpbWVfcG1fcHV0KGZlbmNlLT5pOTE1LCB3YWtlcmVmKTsKPiBAQCAtMzAwLDcgKzMwMSw3IEBA IHN0YXRpYyBpbnQgZmVuY2VfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9mZW5jZV9yZWcgKmZlbmNl LAo+ICAgKi8KPiAgaW50IGk5MTVfdm1hX3B1dF9mZW5jZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSkK PiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X2ZlbmNlX3JlZyAqZmVuY2UgPSB2bWEtPmZlbmNlOwo+ ICsJc3RydWN0IGk5MTVfZmVuY2VfcmVnICpmZW5jZSA9IHZtYS0+ZmVuY2U7Cj4gIAo+ICAJaWYg KCFmZW5jZSkKPiAgCQlyZXR1cm4gMDsKPiBAQCAtMzExLDExICszMTIsMTEgQEAgaW50IGk5MTVf dm1hX3B1dF9mZW5jZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAgCXJldHVybiBmZW5jZV91cGRh dGUoZmVuY2UsIE5VTEwpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGRybV9pOTE1X2ZlbmNl X3JlZyAqZmVuY2VfZmluZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArc3RhdGlj IHN0cnVjdCBpOTE1X2ZlbmNlX3JlZyAqZmVuY2VfZmluZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSkKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X2ZlbmNlX3JlZyAqZmVuY2U7Cj4gKwlz dHJ1Y3QgaTkxNV9mZW5jZV9yZWcgKmZlbmNlOwo+ICAKPiAtCWxpc3RfZm9yX2VhY2hfZW50cnko ZmVuY2UsICZpOTE1LT5tbS5mZW5jZV9saXN0LCBsaW5rKSB7Cj4gKwlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KGZlbmNlLCAmaTkxNS0+Z2d0dC5mZW5jZV9saXN0LCBsaW5rKSB7Cj4gIAkJR0VNX0JVR19P TihmZW5jZS0+dm1hICYmIGZlbmNlLT52bWEtPmZlbmNlICE9IGZlbmNlKTsKPiAgCj4gIAkJaWYg KGZlbmNlLT5waW5fY291bnQpCj4gQEAgLTM1Miw3ICszNTMsNyBAQCBzdGF0aWMgc3RydWN0IGRy bV9pOTE1X2ZlbmNlX3JlZyAqZmVuY2VfZmluZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKPiAgaW50Cj4gIGk5MTVfdm1hX3Bpbl9mZW5jZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAg ewo+IC0Jc3RydWN0IGRybV9pOTE1X2ZlbmNlX3JlZyAqZmVuY2U7Cj4gKwlzdHJ1Y3QgaTkxNV9m ZW5jZV9yZWcgKmZlbmNlOwo+ICAJc3RydWN0IGk5MTVfdm1hICpzZXQgPSBpOTE1X2dlbV9vYmpl Y3RfaXNfdGlsZWQodm1hLT5vYmopID8gdm1hIDogTlVMTDsKPiAgCWludCBlcnI7Cj4gIAo+IEBA IC0zNjksNyArMzcwLDcgQEAgaTkxNV92bWFfcGluX2ZlbmNlKHN0cnVjdCBpOTE1X3ZtYSAqdm1h KQo+ICAJCWZlbmNlLT5waW5fY291bnQrKzsKPiAgCQlpZiAoIWZlbmNlLT5kaXJ0eSkgewo+ICAJ CQlsaXN0X21vdmVfdGFpbCgmZmVuY2UtPmxpbmssCj4gLQkJCQkgICAgICAgJmZlbmNlLT5pOTE1 LT5tbS5mZW5jZV9saXN0KTsKPiArCQkJCSAgICAgICAmZmVuY2UtPmk5MTUtPmdndHQuZmVuY2Vf bGlzdCk7Cj4gIAkJCXJldHVybiAwOwo+ICAJCX0KPiAgCX0gZWxzZSBpZiAoc2V0KSB7Cj4gQEAg LTQwNCwxMCArNDA1LDEwIEBAIGk5MTVfdm1hX3Bpbl9mZW5jZShzdHJ1Y3QgaTkxNV92bWEgKnZt YSkKPiAgICogVGhpcyBmdW5jdGlvbiB3YWxrcyB0aGUgZmVuY2UgcmVncyBsb29raW5nIGZvciBh IGZyZWUgb25lIGFuZCByZW1vdmUKPiAgICogaXQgZnJvbSB0aGUgZmVuY2VfbGlzdC4gSXQgaXMg dXNlZCB0byByZXNlcnZlIGZlbmNlIGZvciB2R1BVIHRvIHVzZS4KPiAgICovCj4gLXN0cnVjdCBk cm1faTkxNV9mZW5jZV9yZWcgKgo+ICtzdHJ1Y3QgaTkxNV9mZW5jZV9yZWcgKgo+ICBpOTE1X3Jl c2VydmVfZmVuY2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIHsKPiAtCXN0cnVj dCBkcm1faTkxNV9mZW5jZV9yZWcgKmZlbmNlOwo+ICsJc3RydWN0IGk5MTVfZmVuY2VfcmVnICpm ZW5jZTsKPiAgCWludCBjb3VudDsKPiAgCWludCByZXQ7Cj4gIAo+IEBAIC00MTUsNyArNDE2LDcg QEAgaTkxNV9yZXNlcnZlX2ZlbmNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAK PiAgCS8qIEtlZXAgYXQgbGVhc3Qgb25lIGZlbmNlIGF2YWlsYWJsZSBmb3IgdGhlIGRpc3BsYXkg ZW5naW5lLiAqLwo+ICAJY291bnQgPSAwOwo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShmZW5jZSwg Jmk5MTUtPm1tLmZlbmNlX2xpc3QsIGxpbmspCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGZlbmNl LCAmaTkxNS0+Z2d0dC5mZW5jZV9saXN0LCBsaW5rKQo+ICAJCWNvdW50ICs9ICFmZW5jZS0+cGlu X2NvdW50Owo+ICAJaWYgKGNvdW50IDw9IDEpCj4gIAkJcmV0dXJuIEVSUl9QVFIoLUVOT1NQQyk7 Cj4gQEAgLTQ0MSwxMSArNDQyLDExIEBAIGk5MTVfcmVzZXJ2ZV9mZW5jZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSkKPiAgICoKPiAgICogVGhpcyBmdW5jdGlvbiBhZGQgYSByZXNlcnZl ZCBmZW5jZSByZWdpc3RlciBmcm9tIHZHUFUgdG8gdGhlIGZlbmNlX2xpc3QuCj4gICAqLwo+IC12 b2lkIGk5MTVfdW5yZXNlcnZlX2ZlbmNlKHN0cnVjdCBkcm1faTkxNV9mZW5jZV9yZWcgKmZlbmNl KQo+ICt2b2lkIGk5MTVfdW5yZXNlcnZlX2ZlbmNlKHN0cnVjdCBpOTE1X2ZlbmNlX3JlZyAqZmVu Y2UpCj4gIHsKPiAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmZlbmNlLT5pOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKPiAgCj4gLQlsaXN0X2FkZCgmZmVuY2UtPmxpbmssICZmZW5jZS0+aTkxNS0+bW0u ZmVuY2VfbGlzdCk7Cj4gKwlsaXN0X2FkZCgmZmVuY2UtPmxpbmssICZmZW5jZS0+aTkxNS0+Z2d0 dC5mZW5jZV9saXN0KTsKPiAgfQo+ICAKPiAgLyoqCj4gQEAgLTQ2MSw4ICs0NjIsOCBAQCB2b2lk IGk5MTVfZ2VtX3Jlc3RvcmVfZmVuY2VzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ ICAJaW50IGk7Cj4gIAo+ICAJcmN1X3JlYWRfbG9jaygpOyAvKiBrZWVwIG9iaiBhbGl2ZSBhcyB3 ZSBkZXJlZmVyZW5jZSAqLwo+IC0JZm9yIChpID0gMDsgaSA8IGk5MTUtPm51bV9mZW5jZV9yZWdz OyBpKyspIHsKPiAtCQlzdHJ1Y3QgZHJtX2k5MTVfZmVuY2VfcmVnICpyZWcgPSAmaTkxNS0+ZmVu Y2VfcmVnc1tpXTsKPiArCWZvciAoaSA9IDA7IGkgPCBpOTE1LT5nZ3R0Lm51bV9mZW5jZXM7IGkr Kykgewo+ICsJCXN0cnVjdCBpOTE1X2ZlbmNlX3JlZyAqcmVnID0gJmk5MTUtPmdndHQuZmVuY2Vf cmVnc1tpXTsKPiAgCQlzdHJ1Y3QgaTkxNV92bWEgKnZtYSA9IFJFQURfT05DRShyZWctPnZtYSk7 Cj4gIAo+ICAJCUdFTV9CVUdfT04odm1hICYmIHZtYS0+ZmVuY2UgIT0gcmVnKTsKPiBAQCAtNTM0 LDggKzUzNSw4IEBAIHZvaWQgaTkxNV9nZW1fcmVzdG9yZV9mZW5jZXMoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUpCj4gICAqIERldGVjdHMgYml0IDYgc3dpenpsaW5nIG9mIGFkZHJlc3Mg bG9va3VwIGJldHdlZW4gSUdEIGFjY2VzcyBhbmQgQ1BVCj4gICAqIGFjY2VzcyB0aHJvdWdoIG1h aW4gbWVtb3J5Lgo+ICAgKi8KPiAtdm9pZAo+IC1pOTE1X2dlbV9kZXRlY3RfYml0XzZfc3dpenps ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArc3RhdGljIHZvaWQKPiArZGV0ZWN0 X2JpdF82X3N3aXp6bGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIHsKPiAgCXN0 cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9ICZpOTE1LT51bmNvcmU7Cj4gIAl1MzIgc3dpenps ZV94ID0gSTkxNV9CSVRfNl9TV0laWkxFX1VOS05PV047Cj4gQEAgLTc5OCwzICs3OTksNDMgQEAg aTkxNV9nZW1fb2JqZWN0X3NhdmVfYml0XzE3X3N3aXp6bGUoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiwKPiAgCQlpKys7Cj4gIAl9Cj4gIH0KPiArCj4gK3ZvaWQKPiAraTkxNV9nZ3R0 X2luaXRfZmVuY2VzKHN0cnVjdCBpOTE1X2dndHQgKmdndHQpCj4gK3sKPiArCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1ID0gZ2d0dC0+dm0uaTkxNTsKPiArCWludCBudW1fZmVuY2VzOwo+ ICsJaW50IGk7Cj4gKwo+ICsJSU5JVF9MSVNUX0hFQUQoJmdndHQtPmZlbmNlX2xpc3QpOwo+ICsJ SU5JVF9MSVNUX0hFQUQoJmdndHQtPnVzZXJmYXVsdF9saXN0KTsKPiArCWludGVsX3dha2VyZWZf YXV0b19pbml0KCZnZ3R0LT51c2VyZmF1bHRfd2FrZXJlZiwgaTkxNSk7Cj4gKwo+ICsJZGV0ZWN0 X2JpdF82X3N3aXp6bGUoaTkxNSk7Cj4gKwo+ICsJaWYgKElOVEVMX0dFTihpOTE1KSA+PSA3ICYm Cj4gKwkgICAgIShJU19WQUxMRVlWSUVXKGk5MTUpIHx8IElTX0NIRVJSWVZJRVcoaTkxNSkpKQo+ ICsJCW51bV9mZW5jZXMgPSAzMjsKPiArCWVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSA0IHx8 Cj4gKwkJIElTX0k5NDVHKGk5MTUpIHx8IElTX0k5NDVHTShpOTE1KSB8fAo+ICsJCSBJU19HMzMo aTkxNSkgfHwgSVNfUElORVZJRVcoaTkxNSkpCj4gKwkJbnVtX2ZlbmNlcyA9IDE2Owo+ICsJZWxz ZQo+ICsJCW51bV9mZW5jZXMgPSA4Owo+ICsKPiArCWlmIChpbnRlbF92Z3B1X2FjdGl2ZShpOTE1 KSkKPiArCQludW1fZmVuY2VzID0gaW50ZWxfdW5jb3JlX3JlYWQoJmk5MTUtPnVuY29yZSwKPiAr CQkJCQkgICAgICAgdmd0aWZfcmVnKGF2YWlsX3JzLmZlbmNlX251bSkpOwo+ICsKPiArCS8qIElu aXRpYWxpemUgZmVuY2UgcmVnaXN0ZXJzIHRvIHplcm8gKi8KPiArCWZvciAoaSA9IDA7IGkgPCBu dW1fZmVuY2VzOyBpKyspIHsKPiArCQlzdHJ1Y3QgaTkxNV9mZW5jZV9yZWcgKmZlbmNlID0gJmdn dHQtPmZlbmNlX3JlZ3NbaV07Cj4gKwo+ICsJCWZlbmNlLT5pOTE1ID0gaTkxNTsKPiArCQlmZW5j ZS0+aWQgPSBpOwo+ICsJCWxpc3RfYWRkX3RhaWwoJmZlbmNlLT5saW5rLCAmZ2d0dC0+ZmVuY2Vf bGlzdCk7Cj4gKwl9Cj4gKwlnZ3R0LT5udW1fZmVuY2VzID0gbnVtX2ZlbmNlczsKPiArCj4gKwlp OTE1X2dlbV9yZXN0b3JlX2ZlbmNlcyhpOTE1KTsKPiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2ZlbmNlX3JlZy5oCj4gaW5kZXggMDlkY2FmMTQxMjFiLi5kMmRhOTg4MjgxNzkg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2VfcmVnLmgK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZV9yZWcuaAo+IEBAIC0y NiwxMyArMjYsMTcgQEAKPiAgI2RlZmluZSBfX0k5MTVfRkVOQ0VfUkVHX0hfXwo+ICAKPiAgI2lu Y2x1ZGUgPGxpbnV4L2xpc3QuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4gIAo+ICtz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdDsKPiAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGU7Cj4g K3N0cnVjdCBpOTE1X2dndHQ7Cj4gIHN0cnVjdCBpOTE1X3ZtYTsKPiArc3RydWN0IHNnX3RhYmxl Owo+ICAKPiAgI2RlZmluZSBJOTY1X0ZFTkNFX1BBR0UgNDA5NlVMCj4gIAo+IC1zdHJ1Y3QgZHJt X2k5MTVfZmVuY2VfcmVnIHsKPiArc3RydWN0IGk5MTVfZmVuY2VfcmVnIHsKPiAgCXN0cnVjdCBs aXN0X2hlYWQgbGluazsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1Owo+ICAJc3Ry dWN0IGk5MTVfdm1hICp2bWE7Cj4gQEAgLTQ5LDQgKzUzLDE3IEBAIHN0cnVjdCBkcm1faTkxNV9m ZW5jZV9yZWcgewo+ICAJYm9vbCBkaXJ0eTsKPiAgfTsKPiAgCj4gKy8qIGk5MTVfZ2VtX2ZlbmNl X3JlZy5jICovCj4gK3N0cnVjdCBpOTE1X2ZlbmNlX3JlZyAqaTkxNV9yZXNlcnZlX2ZlbmNlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiArdm9pZCBpOTE1X3VucmVzZXJ2ZV9mZW5j ZShzdHJ1Y3QgaTkxNV9mZW5jZV9yZWcgKmZlbmNlKTsKPiArCj4gK3ZvaWQgaTkxNV9nZW1fcmVz dG9yZV9mZW5jZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICsKPiArdm9pZCBp OTE1X2dlbV9vYmplY3RfZG9fYml0XzE3X3N3aXp6bGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaiwKPiArCQkJCSAgICAgICBzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzKTsKPiArdm9pZCBp OTE1X2dlbV9vYmplY3Rfc2F2ZV9iaXRfMTdfc3dpenpsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqLAo+ICsJCQkJCSBzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzKTsKPiArCj4gK3ZvaWQg aTkxNV9nZ3R0X2luaXRfZmVuY2VzKHN0cnVjdCBpOTE1X2dndHQgKmdndHQpOwo+ICsKPiAgI2Vu ZGlmCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBpbmRleCA4N2JlOWMxYjYwMjEu LmFjYzNjYjdjYjIxOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gQEAg LTM2MDAsNiArMzYwMCw4IEBAIGludCBpOTE1X2dndHRfaW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICAJZ2d0dC0+bXRyciA9IGFyY2hfcGh5c193Y19hZGQo Z2d0dC0+Z21hZHIuc3RhcnQsIGdndHQtPm1hcHBhYmxlX2VuZCk7Cj4gIAo+ICsJaTkxNV9nZ3R0 X2luaXRfZmVuY2VzKGdndHQpOwo+ICsKPiAgCS8qCj4gIAkgKiBJbml0aWFsaXNlIHN0b2xlbiBl YXJseSBzbyB0aGF0IHdlIG1heSByZXNlcnZlIHByZWFsbG9jYXRlZAo+ICAJICogb2JqZWN0cyBm b3IgdGhlIEJJT1MgdG8gS01TIHRyYW5zaXRpb24uCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmgKPiBpbmRleCAxMjg1NmY5ZGQxZDEuLmVlMzk2OTM4ZGUxMCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gQEAgLTM5LDYgKzM5LDcgQEAKPiAgI2luY2x1ZGUgPGxp bnV4L3BhZ2V2ZWMuaD4KPiAgCj4gICNpbmNsdWRlICJndC9pbnRlbF9yZXNldC5oIgo+ICsjaW5j bHVkZSAiaTkxNV9nZW1fZmVuY2VfcmVnLmgiCj4gICNpbmNsdWRlICJpOTE1X3JlcXVlc3QuaCIK PiAgI2luY2x1ZGUgImk5MTVfc2NhdHRlcmxpc3QuaCIKPiAgI2luY2x1ZGUgImk5MTVfc2VsZnRl c3QuaCIKPiBAQCAtNjEsNyArNjIsNiBAQAo+ICAjZGVmaW5lIEk5MTVfTUFYX05VTV9GRU5DRV9C SVRTIDYKPiAgCj4gIHN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGU7Cj4gLXN0cnVjdCBkcm1f aTkxNV9mZW5jZV9yZWc7Cj4gIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0Owo+ICBzdHJ1Y3Qg aTkxNV92bWE7Cj4gIAo+IEBAIC00MDYsNiArNDA2LDE4IEBAIHN0cnVjdCBpOTE1X2dndHQgewo+ ICAKPiAgCXUzMiBwaW5fYmlhczsKPiAgCj4gKwl1bnNpZ25lZCBpbnQgbnVtX2ZlbmNlczsKPiAr CXN0cnVjdCBpOTE1X2ZlbmNlX3JlZyBmZW5jZV9yZWdzW0k5MTVfTUFYX05VTV9GRU5DRVNdOwo+ ICsJc3RydWN0IGxpc3RfaGVhZCBmZW5jZV9saXN0Owo+ICsKPiArCS8qKiBMaXN0IG9mIGFsbCBv YmplY3RzIGluIGd0dF9zcGFjZSwgY3VycmVudGx5IG1tYXBlZCBieSB1c2Vyc3BhY2UuCj4gKwkg KiBBbGwgb2JqZWN0cyB3aXRoaW4gdGhpcyBsaXN0IG11c3QgYWxzbyBiZSBvbiBib3VuZF9saXN0 Lgo+ICsJICovCj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIHVzZXJmYXVsdF9saXN0Owo+ICsKPiArCS8q IE1hbnVhbCBydW50aW1lIHBtIGF1dG9zdXNwZW5kIGRlbGF5IGZvciB1c2VyIEdHVFQgbW1hcHMg Ki8KPiArCXN0cnVjdCBpbnRlbF93YWtlcmVmX2F1dG8gdXNlcmZhdWx0X3dha2VyZWY7Cj4gKwo+ ICAJc3RydWN0IGRybV9tbV9ub2RlIGVycm9yX2NhcHR1cmU7Cj4gIAlzdHJ1Y3QgZHJtX21tX25v ZGUgdWNfZnc7Cj4gIH07Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z3B1X2Vycm9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gaW5k ZXggMTkzYTkzODU3ZDk5Li44ZGM3MjdjYmZlNjggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ3B1X2Vycm9yLmMKPiBAQCAtMTEyNiwxMyArMTEyNiwxMyBAQCBzdGF0aWMgdm9pZCBnZW1f cmVjb3JkX2ZlbmNlcyhzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9yKQo+ICAJaW50IGk7Cj4g IAo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikgewo+IC0JCWZvciAoaSA9IDA7IGkg PCBkZXZfcHJpdi0+bnVtX2ZlbmNlX3JlZ3M7IGkrKykKPiArCQlmb3IgKGkgPSAwOyBpIDwgZGV2 X3ByaXYtPmdndHQubnVtX2ZlbmNlczsgaSsrKQo+ICAJCQllcnJvci0+ZmVuY2VbaV0gPSBJOTE1 X1JFQUQ2NChGRU5DRV9SRUdfR0VONl9MTyhpKSk7Cj4gIAl9IGVsc2UgaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gNCkgewo+IC0JCWZvciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+bnVtX2ZlbmNl X3JlZ3M7IGkrKykKPiArCQlmb3IgKGkgPSAwOyBpIDwgZGV2X3ByaXYtPmdndHQubnVtX2ZlbmNl czsgaSsrKQo+ICAJCQllcnJvci0+ZmVuY2VbaV0gPSBJOTE1X1JFQUQ2NChGRU5DRV9SRUdfOTY1 X0xPKGkpKTsKPiAgCX0gZWxzZSB7Cj4gLQkJZm9yIChpID0gMDsgaSA8IGRldl9wcml2LT5udW1f ZmVuY2VfcmVnczsgaSsrKQo+ICsJCWZvciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+Z2d0dC5udW1f ZmVuY2VzOyBpKyspCj4gIAkJCWVycm9yLT5mZW5jZVtpXSA9IEk5MTVfUkVBRChGRU5DRV9SRUco aSkpOwo+ICAJfQo+ICAJZXJyb3ItPm5mZW5jZSA9IGk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfdm1hLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5o Cj4gaW5kZXggMGM1N2FiNGZlZDVkLi40Yjc2OWRiNjQ5YmYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfdm1hLmgKPiBAQCAtNTQsNyArNTQsNyBAQCBzdHJ1Y3QgaTkxNV92bWEgewo+ICAJc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiAgCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2Ug KnZtOwo+ICAJY29uc3Qgc3RydWN0IGk5MTVfdm1hX29wcyAqb3BzOwo+IC0Jc3RydWN0IGRybV9p OTE1X2ZlbmNlX3JlZyAqZmVuY2U7Cj4gKwlzdHJ1Y3QgaTkxNV9mZW5jZV9yZWcgKmZlbmNlOwo+ ICAJc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVzdjsgLyoqIEFsaWFzIG9mIG9iai0+cmVz diAqLwo+ICAJc3RydWN0IHNnX3RhYmxlICpwYWdlczsKPiAgCXZvaWQgX19pb21lbSAqaW9tYXA7 Cj4gLS0gCj4gMi4yMC4xCj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4