From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 02/46] drm/i915: Revoke mmaps and prevent access to fence registers across reset Date: Wed, 06 Feb 2019 17:56:28 +0200 Message-ID: <87womc3o7n.fsf@gaia.fi.intel.com> References: <20190206130356.18771-1-chris@chris-wilson.co.uk> <20190206130356.18771-3-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 4B33C6E99D for ; Wed, 6 Feb 2019 15:56:38 +0000 (UTC) In-Reply-To: <20190206130356.18771-3-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+IHY1OiBzL3NyY3UvcmVzZXRfYmFja29mZl9zcmN1Lwo+Cj4gVGVzdGNhc2U6IGlndC9n ZW1fbW1hcF9ndHQvaGFuZwo+IEZpeGVzOiBlYjhkMGY1YWY0ZWMgKCJkcm0vaTkxNTogUmVtb3Zl IEdQVSByZXNldCBkZXBlbmRlbmNlIG9uIHN0cnVjdF9tdXRleCIpCj4gU2lnbmVkLW9mZi1ieTog Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IE1pa2EgS3VvcHBh bGEgPG1pa2Eua3VvcHBhbGFAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RlYnVnZnMuYyAgICAgICAgICAgfCAgMTIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgIDE4ICstLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgICAgfCAgNTYgKysrLS0tLS0tCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlX3JlZy5jICAgICB8ICAzMSArLS0tLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5oICAgICAgICAgfCAgMTIgKy0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXNldC5jICAgICAgICAgICAgIHwgMTA5ICsrKysrKysr KysrLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jlc2V0LmggICAgICAgICAg ICAgfCAgIDQgKwo+ICAuLi4vZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9oYW5nY2hlY2su YyAgfCAgIDUgKy0KPiAgLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNl LmMgIHwgICAxICsKPiAgOSBmaWxlcyBjaGFuZ2VkLCAxMDkgaW5zZXJ0aW9ucygrKSwgMTM5IGRl bGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCAwYmQ4 OTBjMDRmZTQuLmE2ZmQxNTdiMTYzNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jCj4gQEAgLTEyODEsMTQgKzEyODEsMTEgQEAgc3RhdGljIGludCBpOTE1X2hhbmdjaGVja19p bmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAJaW50ZWxfd2FrZXJlZl90 IHdha2VyZWY7Cj4gIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiAgCj4gKwlzZXFfcHJpbnRm KG0sICJSZXNldCBmbGFnczogJWx4XG4iLCBkZXZfcHJpdi0+Z3B1X2Vycm9yLmZsYWdzKTsKPiAg CWlmICh0ZXN0X2JpdChJOTE1X1dFREdFRCwgJmRldl9wcml2LT5ncHVfZXJyb3IuZmxhZ3MpKQo+ IC0JCXNlcV9wdXRzKG0sICJXZWRnZWRcbiIpOwo+ICsJCXNlcV9wdXRzKG0sICJcdFdlZGdlZFxu Iik7Cj4gIAlpZiAodGVzdF9iaXQoSTkxNV9SRVNFVF9CQUNLT0ZGLCAmZGV2X3ByaXYtPmdwdV9l cnJvci5mbGFncykpCj4gLQkJc2VxX3B1dHMobSwgIlJlc2V0IGluIHByb2dyZXNzOiBzdHJ1Y3Rf bXV0ZXggYmFja29mZlxuIik7Cj4gLQlpZiAod2FpdHF1ZXVlX2FjdGl2ZSgmZGV2X3ByaXYtPmdw dV9lcnJvci53YWl0X3F1ZXVlKSkKPiAtCQlzZXFfcHV0cyhtLCAiV2FpdGVyIGhvbGRpbmcgc3Ry dWN0IG11dGV4XG4iKTsKPiAtCWlmICh3YWl0cXVldWVfYWN0aXZlKCZkZXZfcHJpdi0+Z3B1X2Vy cm9yLnJlc2V0X3F1ZXVlKSkKPiAtCQlzZXFfcHV0cyhtLCAic3RydWN0X211dGV4IGJsb2NrZWQg Zm9yIHJlc2V0XG4iKTsKPiArCQlzZXFfcHV0cyhtLCAiXHREZXZpY2UgKGdsb2JhbCkgcmVzZXQg aW4gcHJvZ3Jlc3NcbiIpOwo+ICAKPiAgCWlmICghaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2hhbmdj aGVjaykgewo+ICAJCXNlcV9wdXRzKG0sICJIYW5nY2hlY2sgZGlzYWJsZWRcbiIpOwo+IEBAIC0z ODg1LDkgKzM4ODIsNiBAQCBpOTE1X3dlZGdlZF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkKPiAg CSAqIHdoaWxlIGl0IGlzIHdyaXRpbmcgdG8gJ2k5MTVfd2VkZ2VkJwo+ICAJICovCj4gIAo+IC0J aWYgKGk5MTVfcmVzZXRfYmFja29mZigmaTkxNS0+Z3B1X2Vycm9yKSkKPiAtCQlyZXR1cm4gLUVB R0FJTjsKPiAtCj4gIAlpOTE1X2hhbmRsZV9lcnJvcihpOTE1LCB2YWwsIEk5MTVfRVJST1JfQ0FQ VFVSRSwKPiAgCQkJICAiTWFudWFsbHkgc2V0IHdlZGdlZCBlbmdpbmUgbWFzayA9ICVsbHgiLCB2 YWwpOwo+ICAJcmV0dXJuIDA7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggYTIyOTMx NTJjYjZhLi4zNzIzMGFlN2ZiZTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAt Mjk4OSw3ICsyOTg5LDEyIEBAIGk5MTVfZ2VtX29ial9maW5pc2hfc2htZW1fYWNjZXNzKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gIAlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFn ZXMob2JqKTsKPiAgfQo+ICAKPiAtaW50IF9fbXVzdF9jaGVjayBpOTE1X211dGV4X2xvY2tfaW50 ZXJydXB0aWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiArc3RhdGljIGlubGluZSBpbnQg X19tdXN0X2NoZWNrCj4gK2k5MTVfbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCj4gK3sKPiArCXJldHVybiBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRl di0+c3RydWN0X211dGV4KTsKPiArfQo+ICsKPiAgaW50IGk5MTVfZ2VtX2R1bWJfY3JlYXRlKHN0 cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAo+ICAJCQkgc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiAgCQkJIHN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfZHVtYiAqYXJncyk7Cj4gQEAgLTMwMDYsMjEg KzMwMTEsMTEgQEAgaW50IF9fbXVzdF9jaGVjayBpOTE1X2dlbV9zZXRfZ2xvYmFsX3NlcW5vKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBzZXFubyk7Cj4gIHN0cnVjdCBpOTE1X3JlcXVlc3Qg Kgo+ICBpOTE1X2dlbV9maW5kX2FjdGl2ZV9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSk7Cj4gIAo+IC1zdGF0aWMgaW5saW5lIGJvb2wgaTkxNV9yZXNldF9iYWNrb2ZmKHN0 cnVjdCBpOTE1X2dwdV9lcnJvciAqZXJyb3IpCj4gLXsKPiAtCXJldHVybiB1bmxpa2VseSh0ZXN0 X2JpdChJOTE1X1JFU0VUX0JBQ0tPRkYsICZlcnJvci0+ZmxhZ3MpKTsKPiAtfQo+IC0KPiAgc3Rh dGljIGlubGluZSBib29sIGk5MTVfdGVybWluYWxseV93ZWRnZWQoc3RydWN0IGk5MTVfZ3B1X2Vy cm9yICplcnJvcikKPiAgewo+ICAJcmV0dXJuIHVubGlrZWx5KHRlc3RfYml0KEk5MTVfV0VER0VE LCAmZXJyb3ItPmZsYWdzKSk7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X3Jl c2V0X2JhY2tvZmZfb3Jfd2VkZ2VkKHN0cnVjdCBpOTE1X2dwdV9lcnJvciAqZXJyb3IpCj4gLXsK PiAtCXJldHVybiBpOTE1X3Jlc2V0X2JhY2tvZmYoZXJyb3IpIHwgaTkxNV90ZXJtaW5hbGx5X3dl ZGdlZChlcnJvcik7Cj4gLX0KPiAtCj4gIHN0YXRpYyBpbmxpbmUgdTMyIGk5MTVfcmVzZXRfY291 bnQoc3RydWN0IGk5MTVfZ3B1X2Vycm9yICplcnJvcikKPiAgewo+ICAJcmV0dXJuIFJFQURfT05D RShlcnJvci0+cmVzZXRfY291bnQpOwo+IEBAIC0zMDkzLDcgKzMwODgsNiBAQCBzdHJ1Y3QgZHJt X2k5MTVfZmVuY2VfcmVnICoKPiAgaTkxNV9yZXNlcnZlX2ZlbmNlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7Cj4gIHZvaWQgaTkxNV91bnJlc2VydmVfZmVuY2Uoc3RydWN0IGRy bV9pOTE1X2ZlbmNlX3JlZyAqZmVuY2UpOwo+ICAKPiAtdm9pZCBpOTE1X2dlbV9yZXZva2VfZmVu Y2VzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIHZvaWQgaTkxNV9nZW1f cmVzdG9yZV9mZW5jZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgCj4g IHZvaWQgaTkxNV9nZW1fZGV0ZWN0X2JpdF82X3N3aXp6bGUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRleCAwNWNlOTE3NmFj NGUuLjFlYjNhNWY4NjU0YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC0xMDAs NDcgKzEwMCw2IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX2luZm9fcmVtb3ZlX29iaihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlzcGluX3VubG9jaygmZGV2X3ByaXYtPm1t Lm9iamVjdF9zdGF0X2xvY2spOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50Cj4gLWk5MTVfZ2VtX3dh aXRfZm9yX2Vycm9yKHN0cnVjdCBpOTE1X2dwdV9lcnJvciAqZXJyb3IpCj4gLXsKPiAtCWludCBy ZXQ7Cj4gLQo+IC0JbWlnaHRfc2xlZXAoKTsKPiAtCj4gLQkvKgo+IC0JICogT25seSB3YWl0IDEw IHNlY29uZHMgZm9yIHRoZSBncHUgcmVzZXQgdG8gY29tcGxldGUgdG8gYXZvaWQgaGFuZ2luZwo+ IC0JICogdXNlcnNwYWNlLiBJZiBpdCB0YWtlcyB0aGF0IGxvbmcgc29tZXRoaW5nIHJlYWxseSBi YWQgaXMgZ29pbmcgb24gYW5kCj4gLQkgKiB3ZSBzaG91bGQgc2ltcGx5IHRyeSB0byBiYWlsIG91 dCBhbmQgZmFpbCBhcyBncmFjZWZ1bGx5IGFzIHBvc3NpYmxlLgo+IC0JICovCj4gLQlyZXQgPSB3 YWl0X2V2ZW50X2ludGVycnVwdGlibGVfdGltZW91dChlcnJvci0+cmVzZXRfcXVldWUsCj4gLQkJ CQkJICAgICAgICFpOTE1X3Jlc2V0X2JhY2tvZmYoZXJyb3IpLAo+IC0JCQkJCSAgICAgICBJOTE1 X1JFU0VUX1RJTUVPVVQpOwo+IC0JaWYgKHJldCA9PSAwKSB7Cj4gLQkJRFJNX0VSUk9SKCJUaW1l ZCBvdXQgd2FpdGluZyBmb3IgdGhlIGdwdSByZXNldCB0byBjb21wbGV0ZVxuIik7Cj4gLQkJcmV0 dXJuIC1FSU87Cj4gLQl9IGVsc2UgaWYgKHJldCA8IDApIHsKPiAtCQlyZXR1cm4gcmV0Owo+IC0J fSBlbHNlIHsKPiAtCQlyZXR1cm4gMDsKPiAtCX0KPiAtfQo+IC0KPiAtaW50IGk5MTVfbXV0ZXhf bG9ja19pbnRlcnJ1cHRpYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gLXsKPiAtCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAtCWludCByZXQ7 Cj4gLQo+IC0JcmV0ID0gaTkxNV9nZW1fd2FpdF9mb3JfZXJyb3IoJmRldl9wcml2LT5ncHVfZXJy b3IpOwo+IC0JaWYgKHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+IC0KPiAtCXJldCA9IG11dGV4X2xv Y2tfaW50ZXJydXB0aWJsZSgmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JaWYgKHJldCkKPiAtCQly ZXR1cm4gcmV0Owo+IC0KPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+ICBzdGF0aWMgdTMyIF9faTkx NV9nZW1fcGFyayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgewo+ICAJaW50ZWxf d2FrZXJlZl90IHdha2VyZWY7Cj4gQEAgLTE4NjksNiArMTgyOCw3IEBAIHZtX2ZhdWx0X3QgaTkx NV9nZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCj4gIAlpbnRlbF93YWtlcmVmX3Qgd2Fr ZXJlZjsKPiAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICAJcGdvZmZfdCBwYWdlX29mZnNldDsK PiArCWludCBzcmN1Owo+ICAJaW50IHJldDsKPiAgCj4gIAkvKiBTYW5pdHkgY2hlY2sgdGhhdCB3 ZSBhbGxvdyB3cml0aW5nIGludG8gdGhpcyBvYmplY3QgKi8KPiBAQCAtMTkwOCw3ICsxODY4LDYg QEAgdm1fZmF1bHRfdCBpOTE1X2dlbV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKPiAgCQln b3RvIGVycl91bmxvY2s7Cj4gIAl9Cj4gIAo+IC0KPiAgCS8qIE5vdyBwaW4gaXQgaW50byB0aGUg R1RUIGFzIG5lZWRlZCAqLwo+ICAJdm1hID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKG9iaiwg TlVMTCwgMCwgMCwKPiAgCQkJCSAgICAgICBQSU5fTUFQUEFCTEUgfAo+IEBAIC0xOTQ2LDkgKzE5 MDUsMTUgQEAgdm1fZmF1bHRfdCBpOTE1X2dlbV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikK PiAgCWlmIChyZXQpCj4gIAkJZ290byBlcnJfdW5waW47Cj4gIAo+ICsJc3JjdSA9IGk5MTVfcmVz ZXRfdHJ5bG9jayhkZXZfcHJpdik7Cj4gKwlpZiAoc3JjdSA8IDApIHsKPiArCQlyZXQgPSBzcmN1 Owo+ICsJCWdvdG8gZXJyX3VucGluOwo+ICsJfQo+ICsKPiAgCXJldCA9IGk5MTVfdm1hX3Bpbl9m ZW5jZSh2bWEpOwo+ICAJaWYgKHJldCkKPiAtCQlnb3RvIGVycl91bnBpbjsKPiArCQlnb3RvIGVy cl9yZXNldDsKPiAgCj4gIAkvKiBGaW5hbGx5LCByZW1hcCBpdCB1c2luZyB0aGUgbmV3IEdUVCBv ZmZzZXQgKi8KPiAgCXJldCA9IHJlbWFwX2lvX21hcHBpbmcoYXJlYSwKPiBAQCAtMTk2OSw2ICsx OTM0LDggQEAgdm1fZmF1bHRfdCBpOTE1X2dlbV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikK PiAgCj4gIGVycl9mZW5jZToKPiAgCWk5MTVfdm1hX3VucGluX2ZlbmNlKHZtYSk7Cj4gK2Vycl9y ZXNldDoKPiArCWk5MTVfcmVzZXRfdW5sb2NrKGRldl9wcml2LCBzcmN1KTsKPiAgZXJyX3VucGlu Ogo+ICAJX19pOTE1X3ZtYV91bnBpbih2bWEpOwo+ICBlcnJfdW5sb2NrOgo+IEBAIC01MzI2LDYg KzUyOTMsNyBAQCBpbnQgaTkxNV9nZW1faW5pdF9lYXJseShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZkZXZfcHJpdi0+Z3B1X2Vycm9y LndhaXRfcXVldWUpOwo+ICAJaW5pdF93YWl0cXVldWVfaGVhZCgmZGV2X3ByaXYtPmdwdV9lcnJv ci5yZXNldF9xdWV1ZSk7Cj4gIAltdXRleF9pbml0KCZkZXZfcHJpdi0+Z3B1X2Vycm9yLndlZGdl X211dGV4KTsKPiArCWluaXRfc3JjdV9zdHJ1Y3QoJmRldl9wcml2LT5ncHVfZXJyb3IucmVzZXRf YmFja29mZl9zcmN1KTsKPiAgCj4gIAlhdG9taWNfc2V0KCZkZXZfcHJpdi0+bW0uYnNkX2VuZ2lu ZV9kaXNwYXRjaF9pbmRleCwgMCk7Cj4gIAo+IEBAIC01MzU4LDYgKzUzMjYsOCBAQCB2b2lkIGk5 MTVfZ2VtX2NsZWFudXBfZWFybHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ICAJR0VNX0JVR19PTihhdG9taWNfcmVhZCgmZGV2X3ByaXYtPm1tLmZyZWVfY291bnQpKTsKPiAg CVdBUk5fT04oZGV2X3ByaXYtPm1tLm9iamVjdF9jb3VudCk7Cj4KCnN5bmNocm9uaXplX3JjdSBh bmQgc3JjdSBhbmQgR0VNX0JVR19PTiBmb3IgcmVzZXQgYmFja29mZj8KCj4gKwljbGVhbnVwX3Ny Y3Vfc3RydWN0KCZkZXZfcHJpdi0+Z3B1X2Vycm9yLnJlc2V0X2JhY2tvZmZfc3JjdSk7Cj4gKwo+ ICAJa21lbV9jYWNoZV9kZXN0cm95KGRldl9wcml2LT5wcmlvcml0aWVzKTsKPiAgCWttZW1fY2Fj aGVfZGVzdHJveShkZXZfcHJpdi0+ZGVwZW5kZW5jaWVzKTsKPiAgCWttZW1fY2FjaGVfZGVzdHJv eShkZXZfcHJpdi0+cmVxdWVzdHMpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9mZW5jZV9yZWcuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Zl bmNlX3JlZy5jCj4gaW5kZXggZTAzN2U5NDc5MmYzLi4zNmQ1NDhmYTNhYTIgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2VfcmVnLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZV9yZWcuYwo+IEBAIC0yNDAsNiArMjQwLDEw IEBAIHN0YXRpYyBpbnQgZmVuY2VfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9mZW5jZV9yZWcgKmZl bmNlLAo+ICAJCWk5MTVfdm1hX2ZsdXNoX3dyaXRlcyhvbGQpOwo+ICAJfQo+ICAKPiArCXJldCA9 IGk5MTVfcmVzZXRfdHJ5bG9jayhmZW5jZS0+aTkxNSk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQly ZXR1cm4gcmV0Owo+ICsKPiAgCWlmIChmZW5jZS0+dm1hICYmIGZlbmNlLT52bWEgIT0gdm1hKSB7 Cj4gIAkJLyogRW5zdXJlIHRoYXQgYWxsIHVzZXJzcGFjZSBDUFUgYWNjZXNzIGlzIGNvbXBsZXRl ZCBiZWZvcmUKPiAgCQkgKiBzdGVhbGluZyB0aGUgZmVuY2UuCj4gQEAgLTI3Miw2ICsyNzYsNyBA QCBzdGF0aWMgaW50IGZlbmNlX3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZmVuY2VfcmVnICpmZW5j ZSwKPiAgCQlsaXN0X21vdmVfdGFpbCgmZmVuY2UtPmxpbmssICZmZW5jZS0+aTkxNS0+bW0uZmVu Y2VfbGlzdCk7Cj4gIAl9Cj4gIAo+ICsJaTkxNV9yZXNldF91bmxvY2soZmVuY2UtPmk5MTUsIHJl dCk7Cj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiBAQCAtNDM1LDMyICs0NDAsNiBAQCB2b2lkIGk5 MTVfdW5yZXNlcnZlX2ZlbmNlKHN0cnVjdCBkcm1faTkxNV9mZW5jZV9yZWcgKmZlbmNlKQo+ICAJ bGlzdF9hZGQoJmZlbmNlLT5saW5rLCAmZmVuY2UtPmk5MTUtPm1tLmZlbmNlX2xpc3QpOwo+ICB9 Cj4gIAo+IC0vKioKPiAtICogaTkxNV9nZW1fcmV2b2tlX2ZlbmNlcyAtIHJldm9rZSBmZW5jZSBz dGF0ZQo+IC0gKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNlIHByaXZhdGUKPiAtICoKPiAtICogUmVt b3ZlcyBhbGwgR1RUIG1tYXBwaW5ncyB2aWEgdGhlIGZlbmNlIHJlZ2lzdGVycy4gVGhpcyBmb3Jj ZXMgYW55IHVzZXIKPiAtICogb2YgdGhlIGZlbmNlIHRvIHJlYWNxdWlyZSB0aGF0IGZlbmNlIGJl Zm9yZSBjb250aW51aW5nIHdpdGggdGhlaXIgYWNjZXNzLgo+IC0gKiBPbmUgdXNlIGlzIGR1cmlu ZyBHUFUgcmVzZXQgd2hlcmUgdGhlIGZlbmNlIHJlZ2lzdGVyIGlzIGxvc3QgYW5kIHdlIG5lZWQg dG8KPiAtICogcmV2b2tlIGNvbmN1cnJlbnQgdXNlcnNwYWNlIGFjY2VzcyB2aWEgR1RUIG1tYXBz IHVudGlsIHRoZSBoYXJkd2FyZSBoYXMgYmVlbgo+IC0gKiByZXNldCBhbmQgdGhlIGZlbmNlIHJl Z2lzdGVycyBoYXZlIGJlZW4gcmVzdG9yZWQuCj4gLSAqLwo+IC12b2lkIGk5MTVfZ2VtX3Jldm9r ZV9mZW5jZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IC17Cj4gLQlpbnQg aTsKPiAtCj4gLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRl eCk7Cj4gLQo+IC0JZm9yIChpID0gMDsgaSA8IGRldl9wcml2LT5udW1fZmVuY2VfcmVnczsgaSsr KSB7Cj4gLQkJc3RydWN0IGRybV9pOTE1X2ZlbmNlX3JlZyAqZmVuY2UgPSAmZGV2X3ByaXYtPmZl bmNlX3JlZ3NbaV07Cj4gLQo+IC0JCUdFTV9CVUdfT04oZmVuY2UtPnZtYSAmJiBmZW5jZS0+dm1h LT5mZW5jZSAhPSBmZW5jZSk7Cj4gLQo+IC0JCWlmIChmZW5jZS0+dm1hKQo+IC0JCQlpOTE1X3Zt YV9yZXZva2VfbW1hcChmZW5jZS0+dm1hKTsKPiAtCX0KPiAtfQo+IC0KPiAgLyoqCj4gICAqIGk5 MTVfZ2VtX3Jlc3RvcmVfZmVuY2VzIC0gcmVzdG9yZSBmZW5jZSBzdGF0ZQo+ICAgKiBAZGV2X3By aXY6IGk5MTUgZGV2aWNlIHByaXZhdGUKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9ncHVfZXJyb3IuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9y LmgKPiBpbmRleCA1M2IxZjIyZGQzNjUuLmQ1YzU4ZTgyNTA4YiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9ncHVfZXJyb3IuaAo+IEBAIC0yMzEsMTIgKzIzMSwxMCBAQCBzdHJ1Y3QgaTkx NV9ncHVfZXJyb3Igewo+ICAJLyoqCj4gIAkgKiBmbGFnczogQ29udHJvbCB2YXJpb3VzIHN0YWdl cyBvZiB0aGUgR1BVIHJlc2V0Cj4gIAkgKgo+IC0JICogI0k5MTVfUkVTRVRfQkFDS09GRiAtIFdo ZW4gd2Ugc3RhcnQgYSByZXNldCwgd2Ugd2FudCB0byBzdG9wIGFueQo+IC0JICogb3RoZXIgdXNl cnMgYWNxdWlyaW5nIHRoZSBzdHJ1Y3RfbXV0ZXguIFRvIGRvIHRoaXMgd2Ugc2V0IHRoZQo+IC0J ICogI0k5MTVfUkVTRVRfQkFDS09GRiBiaXQgaW4gdGhlIGVycm9yIGZsYWdzIHdoZW4gd2UgZGV0 ZWN0IGEgcmVzZXQKPiAtCSAqIGFuZCB0aGVuIGNoZWNrIGZvciB0aGF0IGJpdCBiZWZvcmUgYWNx dWlyaW5nIHRoZSBzdHJ1Y3RfbXV0ZXggKGluCj4gLQkgKiBpOTE1X211dGV4X2xvY2tfaW50ZXJy dXB0aWJsZSgpPykuIEk5MTVfUkVTRVRfQkFDS09GRiBzZXJ2ZXMgYQo+IC0JICogc2Vjb25kYXJ5 IHJvbGUgaW4gcHJldmVudGluZyB0d28gY29uY3VycmVudCBnbG9iYWwgcmVzZXQgYXR0ZW1wdHMu Cj4gKwkgKiAjSTkxNV9SRVNFVF9CQUNLT0ZGIC0gV2hlbiB3ZSBzdGFydCBhIGdsb2JhbCByZXNl dCwgd2UgbmVlZCB0bwo+ICsJICogc2VyaWFsaXNlIHdpdGggYW55IG90aGVyIHVzZXJzIGF0dGVt cHRpbmcgdG8gZG8gdGhlIHNhbWUsIGFuZAo+ICsJICogYW55IGdsb2JhbCByZXNvdXJjZXMgdGhh dCBtYXkgYmUgY2xvYmJlciBieSB0aGUgcmVzZXQgKHN1Y2ggYXMKPiArCSAqIEZFTkNFIHJlZ2lz dGVycykuCj4gIAkgKgo+ICAJICogI0k5MTVfUkVTRVRfRU5HSU5FW251bV9lbmdpbmVzXSAtIFNp bmNlIHRoZSBkcml2ZXIgZG9lc24ndCBuZWVkIHRvCj4gIAkgKiBhY3F1aXJlIHRoZSBzdHJ1Y3Rf bXV0ZXggdG8gcmVzZXQgYW4gZW5naW5lLCB3ZSBuZWVkIGFuIGV4cGxpY2l0Cj4gQEAgLTI3Miw2 ICsyNzAsOCBAQCBzdHJ1Y3QgaTkxNV9ncHVfZXJyb3Igewo+ICAJICovCj4gIAl3YWl0X3F1ZXVl X2hlYWRfdCByZXNldF9xdWV1ZTsKPiAgCj4gKwlzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgcmVzZXRfYmFj a29mZl9zcmN1Owo+ICsKPiAgCXN0cnVjdCBpOTE1X2dwdV9yZXN0YXJ0ICpyZXN0YXJ0Owo+ICB9 Owo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXNldC5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXNldC5jCj4gaW5kZXggMGUwZGRmMmU2ODE1Li4y NzJkMDBkNGI4YTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXNl dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXNldC5jCj4gQEAgLTYzOSw2 ICs2MzksMzEgQEAgc3RhdGljIHZvaWQgcmVzZXRfcHJlcGFyZV9lbmdpbmUoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJZW5naW5lLT5yZXNldC5wcmVwYXJlKGVuZ2luZSk7Cj4g IH0KPiAgCj4gK3N0YXRpYyB2b2lkIHJldm9rZV9tbWFwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSkKPiArewo+ICsJaW50IGk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IGk5MTUtPm51 bV9mZW5jZV9yZWdzOyBpKyspIHsKPiArCQlzdHJ1Y3QgaTkxNV92bWEgKnZtYSA9IGk5MTUtPmZl bmNlX3JlZ3NbaV0udm1hOwo+ICsJCXN0cnVjdCBkcm1fdm1hX29mZnNldF9ub2RlICpub2RlOwo+ ICsJCXU2NCB2bWFfb2Zmc2V0Owo+ICsKPiArCQlpZiAoIXZtYSkKPiArCQkJY29udGludWU7Cj4g Kwo+ICsJCUdFTV9CVUdfT04odm1hLT5mZW5jZSAhPSAmaTkxNS0+ZmVuY2VfcmVnc1tpXSk7Cj4g KwkJaWYgKCFpOTE1X3ZtYV9oYXNfdXNlcmZhdWx0KHZtYSkpCj4gKwkJCWNvbnRpbnVlOwo+ICsK PiArCQlub2RlID0gJnZtYS0+b2JqLT5iYXNlLnZtYV9ub2RlOwo+ICsJCXZtYV9vZmZzZXQgPSB2 bWEtPmdndHRfdmlldy5wYXJ0aWFsLm9mZnNldCA8PCBQQUdFX1NISUZUOwo+ICsJCXVubWFwX21h cHBpbmdfcmFuZ2UoaTkxNS0+ZHJtLmFub25faW5vZGUtPmlfbWFwcGluZywKPiArCQkJCSAgICBk cm1fdm1hX25vZGVfb2Zmc2V0X2FkZHIobm9kZSkgKyB2bWFfb2Zmc2V0LAo+ICsJCQkJICAgIHZt YS0+c2l6ZSwKPiArCQkJCSAgICAxKTsKPiArCX0KPiArfQo+ICsKPiAgc3RhdGljIHZvaWQgcmVz ZXRfcHJlcGFyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgewo+ICAJc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+IEBAIC02NDgsNiArNjczLDcgQEAgc3RhdGljIHZv aWQgcmVzZXRfcHJlcGFyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCQlyZXNl dF9wcmVwYXJlX2VuZ2luZShlbmdpbmUpOwo+ICAKPiAgCWludGVsX3VjX3Nhbml0aXplKGk5MTUp Owo+ICsJcmV2b2tlX21tYXBzKGk5MTUpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IGd0X3Jlc2V0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1bnNpZ25lZCBpbnQgc3RhbGxlZF9tYXNr KQo+IEBAIC05MTEsNTAgKzkzNywyMiBAQCBib29sIGk5MTVfZ2VtX3Vuc2V0X3dlZGdlZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gLXN0 cnVjdCBfX2k5MTVfcmVzZXQgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTU7Cj4g LQl1bnNpZ25lZCBpbnQgc3RhbGxlZF9tYXNrOwo+IC19Owo+IC0KPiAtc3RhdGljIGludCBfX2k5 MTVfcmVzZXRfX0JLTCh2b2lkICpkYXRhKQo+IC17Cj4gLQlzdHJ1Y3QgX19pOTE1X3Jlc2V0ICph cmcgPSBkYXRhOwo+IC0JaW50IGVycjsKPiAtCj4gLQllcnIgPSBpbnRlbF9ncHVfcmVzZXQoYXJn LT5pOTE1LCBBTExfRU5HSU5FUyk7Cj4gLQlpZiAoZXJyKQo+IC0JCXJldHVybiBlcnI7Cj4gLQo+ IC0JcmV0dXJuIGd0X3Jlc2V0KGFyZy0+aTkxNSwgYXJnLT5zdGFsbGVkX21hc2spOwo+IC19Cj4g LQo+IC0jaWYgUkVTRVRfVU5ERVJfU1RPUF9NQUNISU5FCj4gLS8qCj4gLSAqIFhYWCBBbiBhbHRl cm5hdGl2ZSB0byB1c2luZyBzdG9wX21hY2hpbmUgd291bGQgYmUgdG8gcGFyayBvbmx5IHRoZQo+ IC0gKiBwcm9jZXNzZXMgdGhhdCBoYXZlIGEgR0dUVCBtbWFwLiBCeSByZW1vdGUgcGFya2luZyB0 aGUgdGhyZWFkcyAoU0lHU1RPUCkKPiAtICogd2Ugc2hvdWxkIGJlIGFibGUgdG8gcHJldmVudCB0 aGVpciBtZW1tb3J5IGFjY2Vzc2VzIHZpYSB0aGUgbG9zdCBmZW5jZQo+IC0gKiByZWdpc3RlcnMg b3ZlciB0aGUgY291cnNlIG9mIHRoZSByZXNldCB3aXRob3V0IHRoZSBwb3RlbnRpYWwgcmVjdXJz aXZlCj4gLSAqIG9mIG11dGV4ZXMgYmV0d2VlbiB0aGUgcGFnZWZhdWx0IGhhbmRsZXIgYW5kIHJl c2V0Lgo+IC0gKgo+IC0gKiBTZWUgaWd0L2dlbV9tbWFwX2d0dC9oYW5nCj4gLSAqLwo+IC0jZGVm aW5lIF9fZG9fcmVzZXQoZm4sIGFyZykgc3RvcF9tYWNoaW5lKGZuLCBhcmcsIE5VTEwpCj4gLSNl bHNlCj4gLSNkZWZpbmUgX19kb19yZXNldChmbiwgYXJnKSBmbihhcmcpCj4gLSNlbmRpZgo+IC0K PiAgc3RhdGljIGludCBkb19yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdW5z aWduZWQgaW50IHN0YWxsZWRfbWFzaykKPiAgewo+IC0Jc3RydWN0IF9faTkxNV9yZXNldCBhcmcg PSB7IGk5MTUsIHN0YWxsZWRfbWFzayB9Owo+ICAJaW50IGVyciwgaTsKPiAgCj4gLQllcnIgPSBf X2RvX3Jlc2V0KF9faTkxNV9yZXNldF9fQktMLCAmYXJnKTsKPiArCS8qIEZsdXNoIGV2ZXJ5b25l IGN1cnJlbnRseSB1c2luZyBhIHJlc291cmNlIGFib3V0IHRvIGJlIGNsb2JiZXJlZCAqLwo+ICsJ c3luY2hyb25pemVfc3JjdSgmaTkxNS0+Z3B1X2Vycm9yLnJlc2V0X2JhY2tvZmZfc3JjdSk7Cj4g Kwo+ICsJZXJyID0gaW50ZWxfZ3B1X3Jlc2V0KGk5MTUsIEFMTF9FTkdJTkVTKTsKPiAgCWZvciAo aSA9IDA7IGVyciAmJiBpIDwgUkVTRVRfTUFYX1JFVFJJRVM7IGkrKykgewo+IC0JCW1zbGVlcCgx MDApOwo+IC0JCWVyciA9IF9fZG9fcmVzZXQoX19pOTE1X3Jlc2V0X19CS0wsICZhcmcpOwo+ICsJ CW1zbGVlcCgxMCAqIChpICsgMSkpOwo+ICsJCWVyciA9IGludGVsX2dwdV9yZXNldChpOTE1LCBB TExfRU5HSU5FUyk7Cj4gIAl9Cj4gKwlpZiAoZXJyKQo+ICsJCXJldHVybiBlcnI7Cj4gIAo+IC0J cmV0dXJuIGVycjsKPiArCXJldHVybiBndF9yZXNldChpOTE1LCBzdGFsbGVkX21hc2spOwo+ICB9 Cj4gIAo+ICAvKioKPiBAQCAtOTY2LDggKzk2NCw2IEBAIHN0YXRpYyBpbnQgZG9fcmVzZXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHVuc2lnbmVkIGludCBzdGFsbGVkX21hc2spCj4g ICAqIFJlc2V0IHRoZSBjaGlwLiAgVXNlZnVsIGlmIGEgaGFuZyBpcyBkZXRlY3RlZC4gTWFya3Mg dGhlIGRldmljZSBhcyB3ZWRnZWQKPiAgICogb24gZmFpbHVyZS4KPiAgICoKPiAtICogQ2FsbGVy IG11c3QgaG9sZCB0aGUgc3RydWN0X211dGV4Lgo+IC0gKgo+ICAgKiBQcm9jZWR1cmUgaXMgZmFp cmx5IHNpbXBsZToKPiAgICogICAtIHJlc2V0IHRoZSBjaGlwIHVzaW5nIHRoZSByZXNldCByZWcK PiAgICogICAtIHJlLWluaXQgY29udGV4dCBzdGF0ZQo+IEBAIC0xMjc0LDkgKzEyNzAsMTIgQEAg dm9pZCBpOTE1X2hhbmRsZV9lcnJvcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAg CQl3YWl0X2V2ZW50KGk5MTUtPmdwdV9lcnJvci5yZXNldF9xdWV1ZSwKPiAgCQkJICAgIXRlc3Rf Yml0KEk5MTVfUkVTRVRfQkFDS09GRiwKPiAgCQkJCSAgICAgJmk5MTUtPmdwdV9lcnJvci5mbGFn cykpOwo+IC0JCWdvdG8gb3V0Owo+ICsJCWdvdG8gb3V0OyAvKiBwaWdneS1iYWNrIG9uIHRoZSBv dGhlciByZXNldCAqLwo+ICAJfQo+CgpJIHNob3VsZCBoYXZlIGJlZW4gbW9yZSBzcGVjaWZpYyBp biBsYXN0IHJ1biwgc29ycnkuIFN0aWxsIGVycm9ybmVvdXMKY29tbWVudCBhYm92ZSB0ZXN0X2Fu ZF9zZXRfYml0KEk5MTVfUkVTRVRfQkFDS09GRikuCgpBbHNvIGFzIEkgdW5kZXJzdG9vZCBmcm9t IFJDVS9jaGVja2xpc3QudHh0IHRoZSByY3UgcHJvdmlkZXMKbm8gaGVscCBmb3IgcmVhZCBvcmRl cmluZyBoZXJlLiBUaGUgdGVzdF9hbmRfc2V0X2JpdCBwcm92aWRlcwp0aGUgbWIgb24gdGhpcyBz aWRlLiBCdXQgYWRkIHNtcF9tYl9fYmVmb3JlX2F0b21pYyBiZWZvcmUKc2FtcGxpbmcgdGhlIHRo ZSBiaXQgaW4gdHJ5bG9jaz8KCi1NaWthCgoKPiArCS8qIE1ha2Ugc3VyZSBpOTE1X3Jlc2V0X3Ry eWxvY2soKSBzZWVzIHRoZSBJOTE1X1JFU0VUX0JBQ0tPRkYgKi8KPiArCXN5bmNocm9uaXplX3Jj dV9leHBlZGl0ZWQoKTsKPiArCj4gIAkvKiBQcmV2ZW50IGFueSBvdGhlciByZXNldC1lbmdpbmUg YXR0ZW1wdC4gKi8KPiAgCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIHRtcCkgewo+ICAJ CXdoaWxlICh0ZXN0X2FuZF9zZXRfYml0KEk5MTVfUkVTRVRfRU5HSU5FICsgZW5naW5lLT5pZCwK PiBAQCAtMTMwMCw2ICsxMjk5LDM2IEBAIHZvaWQgaTkxNV9oYW5kbGVfZXJyb3Ioc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gIAlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtl cmVmKTsKPiAgfQo+ICAKPiAraW50IGk5MTVfcmVzZXRfdHJ5bG9jayhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSkKPiArewo+ICsJc3RydWN0IGk5MTVfZ3B1X2Vycm9yICplcnJvciA9ICZp OTE1LT5ncHVfZXJyb3I7Cj4gKwlpbnQgc3JjdTsKPiArCj4gKwlyY3VfcmVhZF9sb2NrKCk7Cj4g Kwl3aGlsZSAodGVzdF9iaXQoSTkxNV9SRVNFVF9CQUNLT0ZGLCAmZXJyb3ItPmZsYWdzKSkgewo+ ICsJCXJjdV9yZWFkX3VubG9jaygpOwo+ICsKPiArCQlpZiAod2FpdF9ldmVudF9pbnRlcnJ1cHRp YmxlKGVycm9yLT5yZXNldF9xdWV1ZSwKPiArCQkJCQkgICAgICF0ZXN0X2JpdChJOTE1X1JFU0VU X0JBQ0tPRkYsCj4gKwkJCQkJCSAgICAgICAmZXJyb3ItPmZsYWdzKSkpCj4gKwkJCXJldHVybiAt RUlOVFI7Cj4gKwo+ICsJCXJjdV9yZWFkX2xvY2soKTsKPiArCX0KPiArCXNyY3UgPSBzcmN1X3Jl YWRfbG9jaygmZXJyb3ItPnJlc2V0X2JhY2tvZmZfc3JjdSk7Cj4gKwlyY3VfcmVhZF91bmxvY2so KTsKPiArCj4gKwlyZXR1cm4gc3JjdTsKPiArfQo+ICsKPiArdm9pZCBpOTE1X3Jlc2V0X3VubG9j ayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgaW50IHRhZykKPiArX19yZWxlYXNlcygm aTkxNS0+Z3B1X2Vycm9yLnJlc2V0X2JhY2tvZmZfc3JjdSkKPiArewo+ICsJc3RydWN0IGk5MTVf Z3B1X2Vycm9yICplcnJvciA9ICZpOTE1LT5ncHVfZXJyb3I7Cj4gKwo+ICsJc3JjdV9yZWFkX3Vu bG9jaygmZXJyb3ItPnJlc2V0X2JhY2tvZmZfc3JjdSwgdGFnKTsKPiArfQo+ICsKPiAgYm9vbCBp OTE1X3Jlc2V0X2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICB7Cj4gIAlp bnQgZXJyOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jlc2V0Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jlc2V0LmgKPiBpbmRleCBmMmQzNDdmMzE5ZGYu Ljg5M2M1ZDFjMmViOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl c2V0LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jlc2V0LmgKPiBAQCAtOSw2 ICs5LDcgQEAKPiAgCj4gICNpbmNsdWRlIDxsaW51eC9jb21waWxlci5oPgo+ICAjaW5jbHVkZSA8 bGludXgvdHlwZXMuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3NyY3UuaD4KPiAgCj4gIHN0cnVjdCBk cm1faTkxNV9wcml2YXRlOwo+ICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzOwo+IEBAIC0zMiw2ICsz Myw5IEBAIGludCBpOTE1X3Jlc2V0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUsCj4gIHZvaWQgaTkxNV9yZXNldF9yZXF1ZXN0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBi b29sIGd1aWx0eSk7Cj4gIGJvb2wgaTkxNV9yZXNldF9mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSk7Cj4gIAo+ICtpbnQgX19tdXN0X2NoZWNrIGk5MTVfcmVzZXRfdHJ5bG9jayhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gK3ZvaWQgaTkxNV9yZXNldF91bmxvY2so c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGludCB0YWcpOwo+ICsKPiAgYm9vbCBpbnRl bF9oYXNfZ3B1X3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiAgYm9vbCBp bnRlbF9oYXNfcmVzZXRfZW5naW5lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiAg Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9oYW5n Y2hlY2suYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9oYW5nY2hlY2su Ywo+IGluZGV4IDdiNmYzYmVhOWVmOC4uNDg4NmZhYzEyNjI4IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9oYW5nY2hlY2suYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9oYW5nY2hlY2suYwo+IEBAIC0xMDM5LDgg KzEwMzksNiBAQCBzdGF0aWMgaW50IF9faWd0X3Jlc2V0X2V2aWN0X3ZtYShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwKPiAgCj4gIAkvKiBDaGVjayB0aGF0IHdlIGNhbiByZWNvdmVyIGFu IHVuYmluZCBzdHVjayBvbiBhIGhhbmdpbmcgcmVxdWVzdCAqLwo+ICAKPiAtCWlndF9nbG9iYWxf cmVzZXRfbG9jayhpOTE1KTsKPiAtCj4gIAltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKPiAgCWVyciA9IGhhbmdfaW5pdCgmaCwgaTkxNSk7Cj4gIAlpZiAoZXJyKQo+IEBAIC0x MTM4LDcgKzExMzYsOSBAQCBzdGF0aWMgaW50IF9faWd0X3Jlc2V0X2V2aWN0X3ZtYShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgCX0KPiAgCj4gIG91dF9yZXNldDoKPiArCWlndF9n bG9iYWxfcmVzZXRfbG9jayhpOTE1KTsKPiAgCWZha2VfaGFuZ2NoZWNrKHJxLT5pOTE1LCBpbnRl bF9lbmdpbmVfZmxhZyhycS0+ZW5naW5lKSk7Cj4gKwlpZ3RfZ2xvYmFsX3Jlc2V0X3VubG9jayhp OTE1KTsKPiAgCj4gIAlpZiAodHNrKSB7Cj4gIAkJc3RydWN0IGlndF93ZWRnZV9tZSB3Owo+IEBA IC0xMTU5LDcgKzExNTksNiBAQCBzdGF0aWMgaW50IF9faWd0X3Jlc2V0X2V2aWN0X3ZtYShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgCWhhbmdfZmluaSgmaCk7Cj4gIHVubG9jazoK PiAgCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQlpZ3RfZ2xvYmFs X3Jlc2V0X3VubG9jayhpOTE1KTsKPiAgCj4gIAlpZiAoaTkxNV90ZXJtaW5hbGx5X3dlZGdlZCgm aTkxNS0+Z3B1X2Vycm9yKSkKPiAgCQlyZXR1cm4gLUVJTzsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5jCj4gaW5kZXggMTRhZTQ2ZmRhNDlm Li5mYzUxNmEyOTcwZjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL21vY2tfZ2VtX2RldmljZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL21vY2tfZ2VtX2RldmljZS5jCj4gQEAgLTE4OSw2ICsxODksNyBAQCBzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqbW9ja19nZW1fZGV2aWNlKHZvaWQpCj4gIAo+ICAJaW5pdF93YWl0cXVldWVf aGVhZCgmaTkxNS0+Z3B1X2Vycm9yLndhaXRfcXVldWUpOwo+ICAJaW5pdF93YWl0cXVldWVfaGVh ZCgmaTkxNS0+Z3B1X2Vycm9yLnJlc2V0X3F1ZXVlKTsKPiArCWluaXRfc3JjdV9zdHJ1Y3QoJmk5 MTUtPmdwdV9lcnJvci5yZXNldF9iYWNrb2ZmX3NyY3UpOwo+ICAJbXV0ZXhfaW5pdCgmaTkxNS0+ Z3B1X2Vycm9yLndlZGdlX211dGV4KTsKPiAgCj4gIAlpOTE1LT53cSA9IGFsbG9jX29yZGVyZWRf d29ya3F1ZXVlKCJtb2NrIiwgMCk7Cj4gLS0gCj4gMi4yMC4xCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=