From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 07/12] drm/i915: Revoke mmaps and prevent access to fence registers across reset Date: Mon, 04 Feb 2019 15:33:21 +0200 Message-ID: <8736p34r1a.fsf@gaia.fi.intel.com> References: <20190204084116.3013-1-chris@chris-wilson.co.uk> <20190204084116.3013-7-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2CD036E4F6 for ; Mon, 4 Feb 2019 13:33:29 +0000 (UTC) In-Reply-To: <20190204084116.3013-7-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+IHdyaXRlczoKCj4gUHJldmlv dXNseSwgd2Ugd2VyZSBhYmxlIHRvIHJlbHkgb24gdGhlIHJlY3Vyc2l2ZSBwcm9wZXJ0aWVzIG9m Cj4gc3RydWN0X211dGV4IHRvIGFsbG93IHVzIHRvIHNlcmlhbGlzZSByZXZva2luZyBtbWFwcyBh bmQgcmVhY3F1aXJpbmcgdGhlCj4gRkVOQ0UgcmVnaXN0ZXJzIHdpdGggdGhlbSBiZWluZyBjbG9i YmVyZWQgb3ZlciBhIGdsb2JhbCBkZXZpY2UgcmVzZXQuCj4gSSB0aGVuIHByb2NlZWRlZCB0byB0 aHJvdyBvdXQgdGhlIGJhYnkgd2l0aCB0aGUgYmF0aCB3YXRlciBpbiBvcmRlciB0bwo+IHB1cnN1 ZSBhIHN0cnVjdF9tdXRleC1sZXNzIHJlc2V0Lgo+Cj4gUGVydXNpbmcgTFdOIGZvciBhbHRlcm5h dGl2ZSBzdHJhdGVnaWVzLCB0aGUgZGlsZW1tYSBvbiBob3cgdG8gc2VyaWFsaXNlCj4gYWNjZXNz IHRvIGEgZ2xvYmFsIHJlc291cmNlIG9uIG9uZSBzaWRlIHdhcyBhbnN3ZXJlZCBieQo+IGh0dHBz Oi8vbHduLm5ldC9BcnRpY2xlcy8yMDI4NDcvIC0tIFNsZWVwYWJsZSBSQ1U6Cj4KPiAgICAgMSAg aW50IHJlYWRzaWRlKHZvaWQpIHsKPiAgICAgMiAgICAgIGludCBpZHg7Cj4gICAgIDMgICAgICBy Y3VfcmVhZF9sb2NrKCk7Cj4gICAgIDQJICAgaWYgKG5vbW9yZXNyY3UpIHsKPiAgICAgNSAgICAg ICAgICByY3VfcmVhZF91bmxvY2soKTsKPiAgICAgNgkgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4g ICAgIDcgICAgICB9Cj4gICAgIDgJICAgaWR4ID0gc3JjdV9yZWFkX2xvY2soJnNzKTsKPiAgICAg OQkgICByY3VfcmVhZF91bmxvY2soKTsKPiAgICAgMTAJICAgLyogU1JDVSByZWFkLXNpZGUgY3Jp dGljYWwgc2VjdGlvbi4gKi8KPiAgICAgMTEJICAgc3JjdV9yZWFkX3VubG9jaygmc3MsIGlkeCk7 Cj4gICAgIDEyCSAgIHJldHVybiAwOwo+ICAgICAxMyB9Cj4gICAgIDE0Cj4gICAgIDE1IHZvaWQg Y2xlYW51cCh2b2lkKQo+ICAgICAxNiB7Cj4gICAgIDE3ICAgICBub21vcmVzcmN1ID0gMTsKPiAg ICAgMTggICAgIHN5bmNocm9uaXplX3JjdSgpOwo+ICAgICAxOSAgICAgc3luY2hyb25pemVfc3Jj dSgmc3MpOwo+ICAgICAyMCAgICAgY2xlYW51cF9zcmN1X3N0cnVjdCgmc3MpOwo+ICAgICAyMSB9 Cj4KPiBObyBtb3JlIHdvcnJ5aW5nIGFib3V0IHN0b3BfbWFjaGluZSwganVzdCBhbiB1YmVyLWNv bXBsZXggbXV0ZXgsCj4gb3B0aW1pc2VkIGZvciByZWFkcywgd2l0aCB0aGUgb3ZlcmhlYWQgcHVz aGVkIHRvIHRoZSByYXJlIHJlc2V0IHBhdGguCj4KPiBIb3dldmVyLCB3ZSBkbyBydW4gdGhlIHJp c2sgb2YgYSBkZWFkbG9jayBhcyB3ZSBhbGxvY2F0ZSB1bmRlcm5lYXRoIHRoZQo+IFNSQ1UgcmVh ZCBsb2NrLCBhbmQgdGhlIGFsbG9jYXRpb24gbWF5IHJlcXVpcmUgYSBHUFUgcmVzZXQsIGNhdXNp bmcgYQo+IGRlcGVuZGVuY3kgY3ljbGUgdmlhIHRoZSBpbi1mbGlnaHQgcmVxdWVzdHMuIFdlIHJl c29sdmUgdGhhdCBieSBkZWNsYXJpbmcKPiB0aGUgZHJpdmVyIHdlZGdlZCBhbmQgY2FuY2VsbGlu ZyBhbGwgaW4tZmxpZ2h0IHJlbmRlcmluZy4KPgo+IHYyOiBVc2UgZXhwZWRpdGVkIHJjdSBiYXJy aWVycyB0byBtYXRjaCBvdXIgZWFybGllciB0aW1pbmcKPiBjaGFyYWN0ZXJpc3RpY3MuCj4gdjM6 IFRyeSB0byBhbm5vdGF0ZSBsb2NraW5nIGNvbnRleHRzIGZvciBzcGFyc2UKPiB2NDogUmVkdWNl IHNlbGZ0ZXN0IGxvY2sgZHVyYXRpb24gdG8gYXZvaWQgYSByZXNldCBkZWFkbG9jayB3aXRoIGZl bmNlcwo+Cj4gVGVzdGNhc2U6IGlndC9nZW1fbW1hcF9ndHQvaGFuZwo+IEZpeGVzOiBlYjhkMGY1 YWY0ZWMgKCJkcm0vaTkxNTogUmVtb3ZlIEdQVSByZXNldCBkZXBlbmRlbmNlIG9uIHN0cnVjdF9t dXRleCIpCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24u Y28udWs+Cj4gQ2M6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFAaW50ZWwuY29tPgo+IC0t LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAgICAgfCAgMTIg Ky0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgIDE4 ICstLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgICAgfCAg NTYgKysrLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlX3JlZy5j ICAgICB8ICAzMSArLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5o ICAgICAgICAgfCAgMTIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXNldC5jICAg ICAgICAgICAgIHwgMTA3ICsrKysrKysrKysrLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3Jlc2V0LmggICAgICAgICAgICAgfCAgIDQgKwo+ICAuLi4vZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pbnRlbF9oYW5nY2hlY2suYyAgfCAgIDUgKy0KPiAgLi4uL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMgIHwgICAxICsKPiAgOSBmaWxlcyBjaGFuZ2VkLCAx MDkgaW5zZXJ0aW9ucygrKSwgMTM3IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kZWJ1Z2ZzLmMKPiBpbmRleCBmYTJjMjI2ZmM3NzkuLjJjZWEyNjNiNGQ3OSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTEyODEsMTQgKzEyODEsMTEgQEAgc3Rh dGljIGludCBpOTE1X2hhbmdjaGVja19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51 c2VkKQo+ICAJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gIAllbnVtIGludGVsX2VuZ2luZV9p ZCBpZDsKPiAgCj4gKwlzZXFfcHJpbnRmKG0sICJSZXNldCBmbGFnczogJWx4XG4iLCBkZXZfcHJp di0+Z3B1X2Vycm9yLmZsYWdzKTsKPiAgCWlmICh0ZXN0X2JpdChJOTE1X1dFREdFRCwgJmRldl9w cml2LT5ncHVfZXJyb3IuZmxhZ3MpKQo+IC0JCXNlcV9wdXRzKG0sICJXZWRnZWRcbiIpOwo+ICsJ CXNlcV9wdXRzKG0sICJcdFdlZGdlZFxuIik7Cj4gIAlpZiAodGVzdF9iaXQoSTkxNV9SRVNFVF9C QUNLT0ZGLCAmZGV2X3ByaXYtPmdwdV9lcnJvci5mbGFncykpCj4gLQkJc2VxX3B1dHMobSwgIlJl c2V0IGluIHByb2dyZXNzOiBzdHJ1Y3RfbXV0ZXggYmFja29mZlxuIik7Cj4gLQlpZiAod2FpdHF1 ZXVlX2FjdGl2ZSgmZGV2X3ByaXYtPmdwdV9lcnJvci53YWl0X3F1ZXVlKSkKPiAtCQlzZXFfcHV0 cyhtLCAiV2FpdGVyIGhvbGRpbmcgc3RydWN0IG11dGV4XG4iKTsKPiAtCWlmICh3YWl0cXVldWVf YWN0aXZlKCZkZXZfcHJpdi0+Z3B1X2Vycm9yLnJlc2V0X3F1ZXVlKSkKPiAtCQlzZXFfcHV0cyht LCAic3RydWN0X211dGV4IGJsb2NrZWQgZm9yIHJlc2V0XG4iKTsKPiArCQlzZXFfcHV0cyhtLCAi XHREZXZpY2UgKGdsb2JhbCkgcmVzZXQgaW4gcHJvZ3Jlc3NcbiIpOwo+ICAKPiAgCWlmICghaTkx NV9tb2RwYXJhbXMuZW5hYmxlX2hhbmdjaGVjaykgewo+ICAJCXNlcV9wdXRzKG0sICJIYW5nY2hl Y2sgZGlzYWJsZWRcbiIpOwo+IEBAIC0zODg1LDkgKzM4ODIsNiBAQCBpOTE1X3dlZGdlZF9zZXQo dm9pZCAqZGF0YSwgdTY0IHZhbCkKPiAgCSAqIHdoaWxlIGl0IGlzIHdyaXRpbmcgdG8gJ2k5MTVf d2VkZ2VkJwo+ICAJICovCj4gIAo+IC0JaWYgKGk5MTVfcmVzZXRfYmFja29mZigmaTkxNS0+Z3B1 X2Vycm9yKSkKPiAtCQlyZXR1cm4gLUVBR0FJTjsKPiAtCgpPbiBjaGVja2luZyB0aGUgc2V0IHNp ZGUsIEkgbm90aWNlZCB0aGVyZSBpcyBhIHN0YWxlCmNvbW1lbnQgYWJvdXQgZnVsbCByZXNldCBu ZWVkaW5nIHRoZSBtdXRleCBpbiB0aGUgaTkxNV9oYW5kbGVfZXJyb3IoKQoKPiAgCWk5MTVfaGFu ZGxlX2Vycm9yKGk5MTUsIHZhbCwgSTkxNV9FUlJPUl9DQVBUVVJFLAo+ICAJCQkgICJNYW51YWxs eSBzZXQgd2VkZ2VkIGVuZ2luZSBtYXNrID0gJWxseCIsIHZhbCk7Cj4gIAlyZXR1cm4gMDsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCA1MzRlNTJlM2E4ZGEuLjNlNDUzOGNlNTI3NiAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0yOTg5LDcgKzI5ODksMTIgQEAgaTkx NV9nZW1fb2JqX2ZpbmlzaF9zaG1lbV9hY2Nlc3Moc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaikKPiAgCWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOwo+ICB9Cj4gIAo+IC1p bnQgX19tdXN0X2NoZWNrIGk5MTVfbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpOwo+ICtzdGF0aWMgaW5saW5lIGludCBfX211c3RfY2hlY2sKPiAraTkxNV9t dXRleF9sb2NrX2ludGVycnVwdGlibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArewo+ICsJ cmV0dXJuIG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICt9 Cj4gKwo+ICBpbnQgaTkxNV9nZW1fZHVtYl9jcmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxlX3By aXYsCj4gIAkJCSBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQkgc3RydWN0IGRybV9tb2Rl X2NyZWF0ZV9kdW1iICphcmdzKTsKPiBAQCAtMzAwNiwyMSArMzAxMSwxMSBAQCBpbnQgX19tdXN0 X2NoZWNrIGk5MTVfZ2VtX3NldF9nbG9iYWxfc2Vxbm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dTMyIHNlcW5vKTsKPiAgc3RydWN0IGk5MTVfcmVxdWVzdCAqCj4gIGk5MTVfZ2VtX2ZpbmRfYWN0 aXZlX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiAgCj4gLXN0YXRp YyBpbmxpbmUgYm9vbCBpOTE1X3Jlc2V0X2JhY2tvZmYoc3RydWN0IGk5MTVfZ3B1X2Vycm9yICpl cnJvcikKPiAtewo+IC0JcmV0dXJuIHVubGlrZWx5KHRlc3RfYml0KEk5MTVfUkVTRVRfQkFDS09G RiwgJmVycm9yLT5mbGFncykpOwo+IC19Cj4gLQo+ICBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV90 ZXJtaW5hbGx5X3dlZGdlZChzdHJ1Y3QgaTkxNV9ncHVfZXJyb3IgKmVycm9yKQo+ICB7Cj4gIAly ZXR1cm4gdW5saWtlbHkodGVzdF9iaXQoSTkxNV9XRURHRUQsICZlcnJvci0+ZmxhZ3MpKTsKPiAg fQo+ICAKPiAtc3RhdGljIGlubGluZSBib29sIGk5MTVfcmVzZXRfYmFja29mZl9vcl93ZWRnZWQo c3RydWN0IGk5MTVfZ3B1X2Vycm9yICplcnJvcikKPiAtewo+IC0JcmV0dXJuIGk5MTVfcmVzZXRf YmFja29mZihlcnJvcikgfCBpOTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKGVycm9yKTsKPiAtfQo+IC0K PiAgc3RhdGljIGlubGluZSB1MzIgaTkxNV9yZXNldF9jb3VudChzdHJ1Y3QgaTkxNV9ncHVfZXJy b3IgKmVycm9yKQo+ICB7Cj4gIAlyZXR1cm4gUkVBRF9PTkNFKGVycm9yLT5yZXNldF9jb3VudCk7 Cj4gQEAgLTMwOTMsNyArMzA4OCw2IEBAIHN0cnVjdCBkcm1faTkxNV9mZW5jZV9yZWcgKgo+ICBp OTE1X3Jlc2VydmVfZmVuY2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAg dm9pZCBpOTE1X3VucmVzZXJ2ZV9mZW5jZShzdHJ1Y3QgZHJtX2k5MTVfZmVuY2VfcmVnICpmZW5j ZSk7Cj4gIAo+IC12b2lkIGk5MTVfZ2VtX3Jldm9rZV9mZW5jZXMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KTsKPiAgdm9pZCBpOTE1X2dlbV9yZXN0b3JlX2ZlbmNlcyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAKPiAgdm9pZCBpOTE1X2dlbV9kZXRlY3Rf Yml0XzZfc3dpenpsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYwo+IGluZGV4IGJjN2QxMzM4YjY5YS4uMmM2MTYxYzg5Y2M3IDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gQEAgLTEwMCw0NyArMTAwLDYgQEAgc3RhdGljIHZv aWQgaTkxNV9nZW1faW5mb19yZW1vdmVfb2JqKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiAgCXNwaW5fdW5sb2NrKCZkZXZfcHJpdi0+bW0ub2JqZWN0X3N0YXRfbG9jayk7Cj4g IH0KPiAgCj4gLXN0YXRpYyBpbnQKPiAtaTkxNV9nZW1fd2FpdF9mb3JfZXJyb3Ioc3RydWN0IGk5 MTVfZ3B1X2Vycm9yICplcnJvcikKPiAtewo+IC0JaW50IHJldDsKPiAtCj4gLQltaWdodF9zbGVl cCgpOwo+IC0KPiAtCS8qCj4gLQkgKiBPbmx5IHdhaXQgMTAgc2Vjb25kcyBmb3IgdGhlIGdwdSBy ZXNldCB0byBjb21wbGV0ZSB0byBhdm9pZCBoYW5naW5nCj4gLQkgKiB1c2Vyc3BhY2UuIElmIGl0 IHRha2VzIHRoYXQgbG9uZyBzb21ldGhpbmcgcmVhbGx5IGJhZCBpcyBnb2luZyBvbiBhbmQKPiAt CSAqIHdlIHNob3VsZCBzaW1wbHkgdHJ5IHRvIGJhaWwgb3V0IGFuZCBmYWlsIGFzIGdyYWNlZnVs bHkgYXMgcG9zc2libGUuCj4gLQkgKi8KPiAtCXJldCA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJs ZV90aW1lb3V0KGVycm9yLT5yZXNldF9xdWV1ZSwKPiAtCQkJCQkgICAgICAgIWk5MTVfcmVzZXRf YmFja29mZihlcnJvciksCj4gLQkJCQkJICAgICAgIEk5MTVfUkVTRVRfVElNRU9VVCk7Cj4gLQlp ZiAocmV0ID09IDApIHsKPiAtCQlEUk1fRVJST1IoIlRpbWVkIG91dCB3YWl0aW5nIGZvciB0aGUg Z3B1IHJlc2V0IHRvIGNvbXBsZXRlXG4iKTsKPiAtCQlyZXR1cm4gLUVJTzsKPiAtCX0gZWxzZSBp ZiAocmV0IDwgMCkgewo+IC0JCXJldHVybiByZXQ7Cj4gLQl9IGVsc2Ugewo+IC0JCXJldHVybiAw Owo+IC0JfQo+IC19Cj4gLQo+IC1pbnQgaTkxNV9tdXRleF9sb2NrX2ludGVycnVwdGlibGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPiAtewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShkZXYpOwo+IC0JaW50IHJldDsKPiAtCj4gLQlyZXQgPSBpOTE1X2dl bV93YWl0X2Zvcl9lcnJvcigmZGV2X3ByaXYtPmdwdV9lcnJvcik7Cj4gLQlpZiAocmV0KQo+IC0J CXJldHVybiByZXQ7Cj4gLQo+IC0JcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZkZXYt PnN0cnVjdF9tdXRleCk7Cj4gLQlpZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4gLQo+IC0JcmV0 dXJuIDA7Cj4gLX0KPiAtCj4gIHN0YXRpYyB1MzIgX19pOTE1X2dlbV9wYXJrKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1KQo+ICB7Cj4gIAlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiBA QCAtMTg2OSw2ICsxODI4LDcgQEAgdm1fZmF1bHRfdCBpOTE1X2dlbV9mYXVsdChzdHJ1Y3Qgdm1f ZmF1bHQgKnZtZikKPiAgCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAJc3RydWN0IGk5MTVf dm1hICp2bWE7Cj4gIAlwZ29mZl90IHBhZ2Vfb2Zmc2V0Owo+ICsJaW50IHNyY3U7Cj4gIAlpbnQg cmV0Owo+ICAKPiAgCS8qIFNhbml0eSBjaGVjayB0aGF0IHdlIGFsbG93IHdyaXRpbmcgaW50byB0 aGlzIG9iamVjdCAqLwo+IEBAIC0xOTA4LDcgKzE4NjgsNiBAQCB2bV9mYXVsdF90IGk5MTVfZ2Vt X2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKQo+ICAJCWdvdG8gZXJyX3VubG9jazsKPiAgCX0K PiAgCj4gLQo+ICAJLyogTm93IHBpbiBpdCBpbnRvIHRoZSBHVFQgYXMgbmVlZGVkICovCj4gIAl2 bWEgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4ob2JqLCBOVUxMLCAwLCAwLAo+ICAJCQkJICAg ICAgIFBJTl9NQVBQQUJMRSB8Cj4gQEAgLTE5NDYsOSArMTkwNSwxNSBAQCB2bV9mYXVsdF90IGk5 MTVfZ2VtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKQo+ICAJaWYgKHJldCkKPiAgCQlnb3Rv IGVycl91bnBpbjsKPiAgCj4gKwlzcmN1ID0gaTkxNV9yZXNldF90cnlsb2NrKGRldl9wcml2KTsK PiArCWlmIChzcmN1IDwgMCkgewo+ICsJCXJldCA9IHNyY3U7Cj4gKwkJZ290byBlcnJfdW5waW47 Cj4gKwl9Cj4gKwo+ICAJcmV0ID0gaTkxNV92bWFfcGluX2ZlbmNlKHZtYSk7Cj4gIAlpZiAocmV0 KQo+IC0JCWdvdG8gZXJyX3VucGluOwo+ICsJCWdvdG8gZXJyX3Jlc2V0Owo+ICAKPiAgCS8qIEZp bmFsbHksIHJlbWFwIGl0IHVzaW5nIHRoZSBuZXcgR1RUIG9mZnNldCAqLwo+ICAJcmV0ID0gcmVt YXBfaW9fbWFwcGluZyhhcmVhLAo+IEBAIC0xOTY5LDYgKzE5MzQsOCBAQCB2bV9mYXVsdF90IGk5 MTVfZ2VtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKQo+ICAKPiAgZXJyX2ZlbmNlOgo+ICAJ aTkxNV92bWFfdW5waW5fZmVuY2Uodm1hKTsKPiArZXJyX3Jlc2V0Ogo+ICsJaTkxNV9yZXNldF91 bmxvY2soZGV2X3ByaXYsIHNyY3UpOwo+ICBlcnJfdW5waW46Cj4gIAlfX2k5MTVfdm1hX3VucGlu KHZtYSk7Cj4gIGVycl91bmxvY2s6Cj4gQEAgLTUzMjYsNiArNTI5Myw3IEBAIGludCBpOTE1X2dl bV9pbml0X2Vhcmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCWluaXRf d2FpdHF1ZXVlX2hlYWQoJmRldl9wcml2LT5ncHVfZXJyb3Iud2FpdF9xdWV1ZSk7Cj4gIAlpbml0 X3dhaXRxdWV1ZV9oZWFkKCZkZXZfcHJpdi0+Z3B1X2Vycm9yLnJlc2V0X3F1ZXVlKTsKPiAgCW11 dGV4X2luaXQoJmRldl9wcml2LT5ncHVfZXJyb3Iud2VkZ2VfbXV0ZXgpOwo+ICsJaW5pdF9zcmN1 X3N0cnVjdCgmZGV2X3ByaXYtPmdwdV9lcnJvci5zcmN1KTsKPiAgCj4gIAlhdG9taWNfc2V0KCZk ZXZfcHJpdi0+bW0uYnNkX2VuZ2luZV9kaXNwYXRjaF9pbmRleCwgMCk7Cj4gIAo+IEBAIC01MzU4 LDYgKzUzMjYsOCBAQCB2b2lkIGk5MTVfZ2VtX2NsZWFudXBfZWFybHkoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJR0VNX0JVR19PTihhdG9taWNfcmVhZCgmZGV2X3ByaXYt Pm1tLmZyZWVfY291bnQpKTsKPiAgCVdBUk5fT04oZGV2X3ByaXYtPm1tLm9iamVjdF9jb3VudCk7 Cj4gIAo+ICsJY2xlYW51cF9zcmN1X3N0cnVjdCgmZGV2X3ByaXYtPmdwdV9lcnJvci5zcmN1KTsK PiArCj4gIAlrbWVtX2NhY2hlX2Rlc3Ryb3koZGV2X3ByaXYtPnByaW9yaXRpZXMpOwo+ICAJa21l bV9jYWNoZV9kZXN0cm95KGRldl9wcml2LT5kZXBlbmRlbmNpZXMpOwo+ICAJa21lbV9jYWNoZV9k ZXN0cm95KGRldl9wcml2LT5yZXF1ZXN0cyk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2ZlbmNlX3JlZy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZmVuY2VfcmVnLmMKPiBpbmRleCA0NmUyNTk2NjEyOTQuLmJkMGQ1YjhkNmM5NiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZV9yZWcuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlX3JlZy5jCj4gQEAgLTI0MCw2ICsy NDAsMTAgQEAgc3RhdGljIGludCBmZW5jZV91cGRhdGUoc3RydWN0IGRybV9pOTE1X2ZlbmNlX3Jl ZyAqZmVuY2UsCj4gIAkJaTkxNV92bWFfZmx1c2hfd3JpdGVzKG9sZCk7Cj4gIAl9Cj4gIAo+ICsJ cmV0ID0gaTkxNV9yZXNldF90cnlsb2NrKGZlbmNlLT5pOTE1KTsKPiArCWlmIChyZXQgPCAwKQo+ ICsJCXJldHVybiByZXQ7Cj4gKwo+ICAJaWYgKGZlbmNlLT52bWEgJiYgZmVuY2UtPnZtYSAhPSB2 bWEpIHsKPiAgCQkvKiBFbnN1cmUgdGhhdCBhbGwgdXNlcnNwYWNlIENQVSBhY2Nlc3MgaXMgY29t cGxldGVkIGJlZm9yZQo+ICAJCSAqIHN0ZWFsaW5nIHRoZSBmZW5jZS4KPiBAQCAtMjcyLDYgKzI3 Niw3IEBAIHN0YXRpYyBpbnQgZmVuY2VfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9mZW5jZV9yZWcg KmZlbmNlLAo+ICAJCWxpc3RfbW92ZV90YWlsKCZmZW5jZS0+bGluaywgJmZlbmNlLT5pOTE1LT5t bS5mZW5jZV9saXN0KTsKPiAgCX0KPiAgCj4gKwlpOTE1X3Jlc2V0X3VubG9jayhmZW5jZS0+aTkx NSwgcmV0KTsKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IEBAIC00MzUsMzIgKzQ0MCw2IEBAIHZv aWQgaTkxNV91bnJlc2VydmVfZmVuY2Uoc3RydWN0IGRybV9pOTE1X2ZlbmNlX3JlZyAqZmVuY2Up Cj4gIAlsaXN0X2FkZCgmZmVuY2UtPmxpbmssICZmZW5jZS0+aTkxNS0+bW0uZmVuY2VfbGlzdCk7 Cj4gIH0KPiAgCj4gLS8qKgo+IC0gKiBpOTE1X2dlbV9yZXZva2VfZmVuY2VzIC0gcmV2b2tlIGZl bmNlIHN0YXRlCj4gLSAqIEBkZXZfcHJpdjogaTkxNSBkZXZpY2UgcHJpdmF0ZQo+IC0gKgo+IC0g KiBSZW1vdmVzIGFsbCBHVFQgbW1hcHBpbmdzIHZpYSB0aGUgZmVuY2UgcmVnaXN0ZXJzLiBUaGlz IGZvcmNlcyBhbnkgdXNlcgo+IC0gKiBvZiB0aGUgZmVuY2UgdG8gcmVhY3F1aXJlIHRoYXQgZmVu Y2UgYmVmb3JlIGNvbnRpbnVpbmcgd2l0aCB0aGVpciBhY2Nlc3MuCj4gLSAqIE9uZSB1c2UgaXMg ZHVyaW5nIEdQVSByZXNldCB3aGVyZSB0aGUgZmVuY2UgcmVnaXN0ZXIgaXMgbG9zdCBhbmQgd2Ug bmVlZCB0bwo+IC0gKiByZXZva2UgY29uY3VycmVudCB1c2Vyc3BhY2UgYWNjZXNzIHZpYSBHVFQg bW1hcHMgdW50aWwgdGhlIGhhcmR3YXJlIGhhcyBiZWVuCj4gLSAqIHJlc2V0IGFuZCB0aGUgZmVu Y2UgcmVnaXN0ZXJzIGhhdmUgYmVlbiByZXN0b3JlZC4KPiAtICovCj4gLXZvaWQgaTkxNV9nZW1f cmV2b2tlX2ZlbmNlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gLXsKPiAt CWludCBpOwo+IC0KPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5kcm0uc3RydWN0 X211dGV4KTsKPiAtCj4gLQlmb3IgKGkgPSAwOyBpIDwgZGV2X3ByaXYtPm51bV9mZW5jZV9yZWdz OyBpKyspIHsKPiAtCQlzdHJ1Y3QgZHJtX2k5MTVfZmVuY2VfcmVnICpmZW5jZSA9ICZkZXZfcHJp di0+ZmVuY2VfcmVnc1tpXTsKPiAtCj4gLQkJR0VNX0JVR19PTihmZW5jZS0+dm1hICYmIGZlbmNl LT52bWEtPmZlbmNlICE9IGZlbmNlKTsKPiAtCj4gLQkJaWYgKGZlbmNlLT52bWEpCj4gLQkJCWk5 MTVfdm1hX3Jldm9rZV9tbWFwKGZlbmNlLT52bWEpOwo+IC0JfQo+IC19Cj4gLQo+ICAvKioKPiAg ICogaTkxNV9nZW1fcmVzdG9yZV9mZW5jZXMgLSByZXN0b3JlIGZlbmNlIHN0YXRlCj4gICAqIEBk ZXZfcHJpdjogaTkxNSBkZXZpY2UgcHJpdmF0ZQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dwdV9lcnJvci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVf ZXJyb3IuaAo+IGluZGV4IDUzYjFmMjJkZDM2NS4uNGU3OTdjNTUyYjk2IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmgKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5oCj4gQEAgLTIzMSwxMiArMjMxLDEwIEBAIHN0cnVj dCBpOTE1X2dwdV9lcnJvciB7Cj4gIAkvKioKPiAgCSAqIGZsYWdzOiBDb250cm9sIHZhcmlvdXMg c3RhZ2VzIG9mIHRoZSBHUFUgcmVzZXQKPiAgCSAqCj4gLQkgKiAjSTkxNV9SRVNFVF9CQUNLT0ZG IC0gV2hlbiB3ZSBzdGFydCBhIHJlc2V0LCB3ZSB3YW50IHRvIHN0b3AgYW55Cj4gLQkgKiBvdGhl ciB1c2VycyBhY3F1aXJpbmcgdGhlIHN0cnVjdF9tdXRleC4gVG8gZG8gdGhpcyB3ZSBzZXQgdGhl Cj4gLQkgKiAjSTkxNV9SRVNFVF9CQUNLT0ZGIGJpdCBpbiB0aGUgZXJyb3IgZmxhZ3Mgd2hlbiB3 ZSBkZXRlY3QgYSByZXNldAo+IC0JICogYW5kIHRoZW4gY2hlY2sgZm9yIHRoYXQgYml0IGJlZm9y ZSBhY3F1aXJpbmcgdGhlIHN0cnVjdF9tdXRleCAoaW4KPiAtCSAqIGk5MTVfbXV0ZXhfbG9ja19p bnRlcnJ1cHRpYmxlKCk/KS4gSTkxNV9SRVNFVF9CQUNLT0ZGIHNlcnZlcyBhCj4gLQkgKiBzZWNv bmRhcnkgcm9sZSBpbiBwcmV2ZW50aW5nIHR3byBjb25jdXJyZW50IGdsb2JhbCByZXNldCBhdHRl bXB0cy4KPiArCSAqICNJOTE1X1JFU0VUX0JBQ0tPRkYgLSBXaGVuIHdlIHN0YXJ0IGEgZ2xvYmFs IHJlc2V0LCB3ZSBuZWVkIHRvCj4gKwkgKiBzZXJpYWxpc2Ugd2l0aCBhbnkgb3RoZXIgdXNlcnMg YXR0ZW1wdGluZyB0byBkbyB0aGUgc2FtZSwgYW5kCj4gKwkgKiBhbnkgZ2xvYmFsIHJlc291cmNl cyB0aGF0IG1heSBiZSBjbG9iYmVyIGJ5IHRoZSByZXNldCAoc3VjaCBhcwo+ICsJICogRkVOQ0Ug cmVnaXN0ZXJzKS4KPiAgCSAqCj4gIAkgKiAjSTkxNV9SRVNFVF9FTkdJTkVbbnVtX2VuZ2luZXNd IC0gU2luY2UgdGhlIGRyaXZlciBkb2Vzbid0IG5lZWQgdG8KPiAgCSAqIGFjcXVpcmUgdGhlIHN0 cnVjdF9tdXRleCB0byByZXNldCBhbiBlbmdpbmUsIHdlIG5lZWQgYW4gZXhwbGljaXQKPiBAQCAt MjcyLDYgKzI3MCw4IEBAIHN0cnVjdCBpOTE1X2dwdV9lcnJvciB7Cj4gIAkgKi8KPiAgCXdhaXRf cXVldWVfaGVhZF90IHJlc2V0X3F1ZXVlOwo+ICAKPiArCXN0cnVjdCBzcmN1X3N0cnVjdCBzcmN1 Owo+ICsKCkl0IGlzIHRoZSBvbmx5IG9uZSBpbiBoZXJlIHNvIG5vdCBjYXVzaW5nIGNvbmZ1c2lv bgpidXQgY291bGQgaGF2ZSBiZWVuIHJlc2V0X2JhY2tvZmZfc3JjdTsKCj4gIAlzdHJ1Y3QgaTkx NV9ncHVfcmVzdGFydCAqcmVzdGFydDsKPiAgfTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVzZXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVz ZXQuYwo+IGluZGV4IDQ0NjIwMDdhNjgxYy4uZjU4ZmFlNDU3ZWM2IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVzZXQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVzZXQuYwo+IEBAIC02MzksNiArNjM5LDMxIEBAIHN0YXRpYyB2b2lkIHJlc2V0 X3ByZXBhcmVfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCWVuZ2lu ZS0+cmVzZXQucHJlcGFyZShlbmdpbmUpOwo+ICB9Cj4gIAo+ICtzdGF0aWMgdm9pZCByZXZva2Vf bW1hcHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gK3sKPiArCWludCBpOwo+ICsK PiArCWZvciAoaSA9IDA7IGkgPCBpOTE1LT5udW1fZmVuY2VfcmVnczsgaSsrKSB7Cj4gKwkJc3Ry dWN0IGk5MTVfdm1hICp2bWEgPSBpOTE1LT5mZW5jZV9yZWdzW2ldLnZtYTsKPiArCQlzdHJ1Y3Qg ZHJtX3ZtYV9vZmZzZXRfbm9kZSAqbm9kZTsKPiArCQl1NjQgdm1hX29mZnNldDsKPiArCj4gKwkJ aWYgKCF2bWEpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlHRU1fQlVHX09OKHZtYS0+ZmVuY2Ug IT0gJmk5MTUtPmZlbmNlX3JlZ3NbaV0pOwo+ICsJCWlmICghaTkxNV92bWFfaGFzX3VzZXJmYXVs dCh2bWEpKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJbm9kZSA9ICZ2bWEtPm9iai0+YmFzZS52 bWFfbm9kZTsKPiArCQl2bWFfb2Zmc2V0ID0gdm1hLT5nZ3R0X3ZpZXcucGFydGlhbC5vZmZzZXQg PDwgUEFHRV9TSElGVDsKPiArCQl1bm1hcF9tYXBwaW5nX3JhbmdlKGk5MTUtPmRybS5hbm9uX2lu b2RlLT5pX21hcHBpbmcsCj4gKwkJCQkgICAgZHJtX3ZtYV9ub2RlX29mZnNldF9hZGRyKG5vZGUp ICsgdm1hX29mZnNldCwKPiArCQkJCSAgICB2bWEtPnNpemUsCj4gKwkJCQkgICAgMSk7Cj4gKwl9 Cj4gK30KPiArCj4gIHN0YXRpYyB2b2lkIHJlc2V0X3ByZXBhcmUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiBA QCAtNjQ4LDYgKzY3Myw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0X3ByZXBhcmUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpCj4gIAkJcmVzZXRfcHJlcGFyZV9lbmdpbmUoZW5naW5lKTsKPiAg Cj4gIAlpbnRlbF91Y19zYW5pdGl6ZShpOTE1KTsKPiArCXJldm9rZV9tbWFwcyhpOTE1KTsKPiAg fQo+ICAKPiAgc3RhdGljIGludCBndF9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwgdW5zaWduZWQgaW50IHN0YWxsZWRfbWFzaykKPiBAQCAtOTExLDUwICs5MzcsMjIgQEAgYm9v bCBpOTE1X2dlbV91bnNldF93ZWRnZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4g IAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+IC1zdHJ1Y3QgX19pOTE1X3Jlc2V0IHsKPiAtCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1Owo+IC0JdW5zaWduZWQgaW50IHN0YWxsZWRfbWFzazsK PiAtfTsKPiAtCj4gLXN0YXRpYyBpbnQgX19pOTE1X3Jlc2V0X19CS0wodm9pZCAqZGF0YSkKPiAt ewo+IC0Jc3RydWN0IF9faTkxNV9yZXNldCAqYXJnID0gZGF0YTsKPiAtCWludCBlcnI7Cj4gLQo+ IC0JZXJyID0gaW50ZWxfZ3B1X3Jlc2V0KGFyZy0+aTkxNSwgQUxMX0VOR0lORVMpOwo+IC0JaWYg KGVycikKPiAtCQlyZXR1cm4gZXJyOwo+IC0KPiAtCXJldHVybiBndF9yZXNldChhcmctPmk5MTUs IGFyZy0+c3RhbGxlZF9tYXNrKTsKPiAtfQo+IC0KPiAtI2lmIFJFU0VUX1VOREVSX1NUT1BfTUFD SElORQo+IC0vKgo+IC0gKiBYWFggQW4gYWx0ZXJuYXRpdmUgdG8gdXNpbmcgc3RvcF9tYWNoaW5l IHdvdWxkIGJlIHRvIHBhcmsgb25seSB0aGUKPiAtICogcHJvY2Vzc2VzIHRoYXQgaGF2ZSBhIEdH VFQgbW1hcC4gQnkgcmVtb3RlIHBhcmtpbmcgdGhlIHRocmVhZHMgKFNJR1NUT1ApCj4gLSAqIHdl IHNob3VsZCBiZSBhYmxlIHRvIHByZXZlbnQgdGhlaXIgbWVtbW9yeSBhY2Nlc3NlcyB2aWEgdGhl IGxvc3QgZmVuY2UKPiAtICogcmVnaXN0ZXJzIG92ZXIgdGhlIGNvdXJzZSBvZiB0aGUgcmVzZXQg d2l0aG91dCB0aGUgcG90ZW50aWFsIHJlY3Vyc2l2ZQo+IC0gKiBvZiBtdXRleGVzIGJldHdlZW4g dGhlIHBhZ2VmYXVsdCBoYW5kbGVyIGFuZCByZXNldC4KPiAtICoKPiAtICogU2VlIGlndC9nZW1f bW1hcF9ndHQvaGFuZwo+IC0gKi8KPiAtI2RlZmluZSBfX2RvX3Jlc2V0KGZuLCBhcmcpIHN0b3Bf bWFjaGluZShmbiwgYXJnLCBOVUxMKQo+IC0jZWxzZQo+IC0jZGVmaW5lIF9fZG9fcmVzZXQoZm4s IGFyZykgZm4oYXJnKQo+IC0jZW5kaWYKPiAtCj4gIHN0YXRpYyBpbnQgZG9fcmVzZXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHVuc2lnbmVkIGludCBzdGFsbGVkX21hc2spCj4gIHsK PiAtCXN0cnVjdCBfX2k5MTVfcmVzZXQgYXJnID0geyBpOTE1LCBzdGFsbGVkX21hc2sgfTsKPiAg CWludCBlcnIsIGk7Cj4gIAo+IC0JZXJyID0gX19kb19yZXNldChfX2k5MTVfcmVzZXRfX0JLTCwg JmFyZyk7Cj4gKwkvKiBGbHVzaCBldmVyeW9uZSBjdXJyZW50bHkgdXNpbmcgYSByZXNvdXJjZSBh Ym91dCB0byBiZSBjbG9iYmVyZWQgKi8KPiArCXN5bmNocm9uaXplX3NyY3UoJmk5MTUtPmdwdV9l cnJvci5zcmN1KTsKPiArCj4gKwllcnIgPSBpbnRlbF9ncHVfcmVzZXQoaTkxNSwgQUxMX0VOR0lO RVMpOwo+ICAJZm9yIChpID0gMDsgZXJyICYmIGkgPCBSRVNFVF9NQVhfUkVUUklFUzsgaSsrKSB7 Cj4gLQkJbXNsZWVwKDEwMCk7Cj4gLQkJZXJyID0gX19kb19yZXNldChfX2k5MTVfcmVzZXRfX0JL TCwgJmFyZyk7Cj4gKwkJbXNsZWVwKDEwICogKGkgKyAxKSk7Cj4gKwkJZXJyID0gaW50ZWxfZ3B1 X3Jlc2V0KGk5MTUsIEFMTF9FTkdJTkVTKTsKPiAgCX0KPiArCWlmIChlcnIpCj4gKwkJcmV0dXJu IGVycjsKPiAgCj4gLQlyZXR1cm4gZXJyOwo+ICsJcmV0dXJuIGd0X3Jlc2V0KGk5MTUsIHN0YWxs ZWRfbWFzayk7Cj4gIH0KPiAgCj4gIC8qKgo+IEBAIC0xMjc0LDkgKzEyNzIsMTIgQEAgdm9pZCBp OTE1X2hhbmRsZV9lcnJvcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgCQl3YWl0 X2V2ZW50KGk5MTUtPmdwdV9lcnJvci5yZXNldF9xdWV1ZSwKPiAgCQkJICAgIXRlc3RfYml0KEk5 MTVfUkVTRVRfQkFDS09GRiwKPiAgCQkJCSAgICAgJmk5MTUtPmdwdV9lcnJvci5mbGFncykpOwo+ IC0JCWdvdG8gb3V0Owo+ICsJCWdvdG8gb3V0OyAvKiBwaWdneS1iYWNrIG9uIHRoZSBvdGhlciBy ZXNldCAqLwo+ICAJfQo+ICAKPiArCS8qIE1ha2Ugc3VyZSBpOTE1X3Jlc2V0X3RyeWxvY2soKSBz ZWVzIHRoZSBJOTE1X1JFU0VUX0JBQ0tPRkYgKi8KPiArCXN5bmNocm9uaXplX3JjdV9leHBlZGl0 ZWQoKTsKCklzIHRoZSBleHBlZGl0ZSBoZXJlIHRvIG1pbmltaXplIHRoZSB0aW1lIHRoZSBmYXVs dGVkCmNsaWVudCBjYW4gdHJ5IHRvIHJlYXF1aXJlPwoKPiArCj4gIAkvKiBQcmV2ZW50IGFueSBv dGhlciByZXNldC1lbmdpbmUgYXR0ZW1wdC4gKi8KPiAgCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUs IGk5MTUsIHRtcCkgewo+ICAJCXdoaWxlICh0ZXN0X2FuZF9zZXRfYml0KEk5MTVfUkVTRVRfRU5H SU5FICsgZW5naW5lLT5pZCwKPiBAQCAtMTMwMCw2ICsxMzAxLDM2IEBAIHZvaWQgaTkxNV9oYW5k bGVfZXJyb3Ioc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gIAlpbnRlbF9ydW50aW1l X3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKPiAgfQo+ICAKPiAraW50IGk5MTVfcmVzZXRfdHJ5bG9j ayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArewo+ICsJc3RydWN0IGk5MTVfZ3B1 X2Vycm9yICplcnJvciA9ICZpOTE1LT5ncHVfZXJyb3I7Cj4gKwlpbnQgc3JjdTsKPiArCj4gKwly Y3VfcmVhZF9sb2NrKCk7Cj4gKwl3aGlsZSAodGVzdF9iaXQoSTkxNV9SRVNFVF9CQUNLT0ZGLCAm ZXJyb3ItPmZsYWdzKSkgewo+ICsJCXJjdV9yZWFkX3VubG9jaygpOwo+ICsKPiArCQlpZiAod2Fp dF9ldmVudF9pbnRlcnJ1cHRpYmxlKGVycm9yLT5yZXNldF9xdWV1ZSwKPiArCQkJCQkgICAgICF0 ZXN0X2JpdChJOTE1X1JFU0VUX0JBQ0tPRkYsCj4gKwkJCQkJCSAgICAgICAmZXJyb3ItPmZsYWdz KSkpCj4gKwkJCXJldHVybiAtRUlOVFI7Cj4gKwo+ICsJCXJjdV9yZWFkX2xvY2soKTsKPiArCX0K PiArCXNyY3UgPSBzcmN1X3JlYWRfbG9jaygmZXJyb3ItPnNyY3UpOwoKSW4gaGVyZSBhcmUgd2Ug cGlnZ3liYWNraW5nIHRoZSBncmF6ZSBwZXJpb2QgZnJvbSBzcmN1CmludG8gdGhlIHJjdSBkb21h aW4gYnkgbmVzdGluZz8KClRoZSBzcmN1IGlzIG91cnMsIGJ1dCB0aGUgcmN1IGlzIGV2ZXJ5b25l LiBTbyB0aGlzCmJvdGhlcnMgbWUuCgotTWlrYQoKPiArCXJjdV9yZWFkX3VubG9jaygpOwo+ICsK PiArCXJldHVybiBzcmN1Owo+ICt9Cj4gKwo+ICt2b2lkIGk5MTVfcmVzZXRfdW5sb2NrKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBpbnQgdGFnKQo+ICtfX3JlbGVhc2VzKCZpOTE1LT5n cHVfZXJyb3Iuc3JjdSkKPiArewo+ICsJc3RydWN0IGk5MTVfZ3B1X2Vycm9yICplcnJvciA9ICZp OTE1LT5ncHVfZXJyb3I7Cj4gKwo+ICsJc3JjdV9yZWFkX3VubG9jaygmZXJyb3ItPnNyY3UsIHRh Zyk7Cj4gK30KPiArCj4gIGJvb2wgaTkxNV9yZXNldF9mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSkKPiAgewo+ICAJaW50IGVycjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZXNldC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXNldC5o Cj4gaW5kZXggZjJkMzQ3ZjMxOWRmLi44OTNjNWQxYzJlYjggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZXNldC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZXNldC5oCj4gQEAgLTksNiArOSw3IEBACj4gIAo+ICAjaW5jbHVkZSA8bGludXgvY29t cGlsZXIuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9z cmN1Lmg+Cj4gIAo+ICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZTsKPiAgc3RydWN0IGludGVsX2Vu Z2luZV9jczsKPiBAQCAtMzIsNiArMzMsOSBAQCBpbnQgaTkxNV9yZXNldF9lbmdpbmUoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICB2b2lkIGk5MTVfcmVzZXRfcmVxdWVzdChzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpycSwgYm9vbCBndWlsdHkpOwo+ICBib29sIGk5MTVfcmVzZXRfZmx1 c2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICAKPiAraW50IF9fbXVzdF9jaGVj ayBpOTE1X3Jlc2V0X3RyeWxvY2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICt2 b2lkIGk5MTVfcmVzZXRfdW5sb2NrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBpbnQg dGFnKTsKPiArCj4gIGJvb2wgaW50ZWxfaGFzX2dwdV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSk7Cj4gIGJvb2wgaW50ZWxfaGFzX3Jlc2V0X2VuZ2luZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxm dGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMKPiBpbmRleCA3YjZmM2JlYTllZjguLjQ4ODZmYWMxMjYy OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFu Z2NoZWNrLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFu Z2NoZWNrLmMKPiBAQCAtMTAzOSw4ICsxMDM5LDYgQEAgc3RhdGljIGludCBfX2lndF9yZXNldF9l dmljdF92bWEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gIAo+ICAJLyogQ2hlY2sg dGhhdCB3ZSBjYW4gcmVjb3ZlciBhbiB1bmJpbmQgc3R1Y2sgb24gYSBoYW5naW5nIHJlcXVlc3Qg Ki8KPiAgCj4gLQlpZ3RfZ2xvYmFsX3Jlc2V0X2xvY2soaTkxNSk7Cj4gLQo+ICAJbXV0ZXhfbG9j aygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gIAllcnIgPSBoYW5nX2luaXQoJmgsIGk5MTUp Owo+ICAJaWYgKGVycikKPiBAQCAtMTEzOCw3ICsxMTM2LDkgQEAgc3RhdGljIGludCBfX2lndF9y ZXNldF9ldmljdF92bWEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gIAl9Cj4gIAo+ ICBvdXRfcmVzZXQ6Cj4gKwlpZ3RfZ2xvYmFsX3Jlc2V0X2xvY2soaTkxNSk7Cj4gIAlmYWtlX2hh bmdjaGVjayhycS0+aTkxNSwgaW50ZWxfZW5naW5lX2ZsYWcocnEtPmVuZ2luZSkpOwo+ICsJaWd0 X2dsb2JhbF9yZXNldF91bmxvY2soaTkxNSk7Cj4gIAo+ICAJaWYgKHRzaykgewo+ICAJCXN0cnVj dCBpZ3Rfd2VkZ2VfbWUgdzsKPiBAQCAtMTE1OSw3ICsxMTU5LDYgQEAgc3RhdGljIGludCBfX2ln dF9yZXNldF9ldmljdF92bWEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gIAloYW5n X2ZpbmkoJmgpOwo+ICB1bmxvY2s6Cj4gIAltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3Rf bXV0ZXgpOwo+IC0JaWd0X2dsb2JhbF9yZXNldF91bmxvY2soaTkxNSk7Cj4gIAo+ICAJaWYgKGk5 MTVfdGVybWluYWxseV93ZWRnZWQoJmk5MTUtPmdwdV9lcnJvcikpCj4gIAkJcmV0dXJuIC1FSU87 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2dlbV9k ZXZpY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2dlbV9kZXZpY2Uu Ywo+IGluZGV4IDE0YWU0NmZkYTQ5Zi4uMDc0YTBkOWNiZjI2IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2dlbV9kZXZpY2UuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2dlbV9kZXZpY2UuYwo+IEBAIC0xODksNiAr MTg5LDcgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKm1vY2tfZ2VtX2RldmljZSh2b2lkKQo+ ICAKPiAgCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmk5MTUtPmdwdV9lcnJvci53YWl0X3F1ZXVlKTsK PiAgCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmk5MTUtPmdwdV9lcnJvci5yZXNldF9xdWV1ZSk7Cj4g Kwlpbml0X3NyY3Vfc3RydWN0KCZpOTE1LT5ncHVfZXJyb3Iuc3JjdSk7Cj4gIAltdXRleF9pbml0 KCZpOTE1LT5ncHVfZXJyb3Iud2VkZ2VfbXV0ZXgpOwo+ICAKPiAgCWk5MTUtPndxID0gYWxsb2Nf b3JkZXJlZF93b3JrcXVldWUoIm1vY2siLCAwKTsKPiAtLSAKPiAyLjIwLjEKPgo+IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeApfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK