From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 2/3] drm/i915: Use RPM as the barrier for controlling user mmap access Date: Thu, 13 Oct 2016 16:44:23 +0200 Message-ID: <20161013144423.GC20761@phenom.ffwll.local> References: <20161011132524.GC20761@phenom.ffwll.local> <20161011143759.28052-1-chris@chris-wilson.co.uk> <20161011143759.28052-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 mail-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 97AB36EABC for ; Thu, 13 Oct 2016 14:44:28 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id b80so8182wme.1 for ; Thu, 13 Oct 2016 07:44:28 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20161011143759.28052-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 Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBPY3QgMTEsIDIwMTYgYXQgMDM6Mzc6NThQTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFdlIGNhbiByZW1vdmUgdGhlIGZhbHNlIGNvdXBsaW5nIGJldHdlZW4gUlBNIGFuZCBz dHJ1Y3QgbXV0ZXggYnkgdGhlCj4gb2JzZXJ2YXRpb24gdGhhdCB3ZSBjYW4gdXNlIHRoZSBSUE0g d2FrZXJlZiBhcyB0aGUgYmFycmllciBhcm91bmQgdXNlcgo+IG1tYXAgYWNjZXNzLiBUaGF0IGlz IGFzIHdlIHRlYXIgZG93biB0aGUgdXNlcidzIFBURSBhdG9taWNhbGx5IGZyb20KPiB3aXRoaW4g cnBtIHN1c3BlbmQgYW5kIHRoZW4gdG8gZmF1bHQgaW4gbmV3IFBURSByZXF1aXJlcyB0aGUgcnBt Cj4gd2FrZXJlZiwgbWVhbnMgdGhhdCBubyB1c2VyIGFjY2VzcyBpcyBwb3NzaWJsZSB0aHJvdWdo IHRob3NlIFBURSB3aXRob3V0Cj4gUlBNIGJlaW5nIGF3YWtlLiBIYXZpbmcgbWFkZSB0aGF0IG9i c2VydmF0aW9uLCB3ZSBjYW4gdGhlbiByZW1vdmUgdGhlCj4gcHJlc3VtcHRpb24gb2YgaGF2aW5n IHRvIHRha2UgcnBtIG91dHNpZGUgb2Ygc3RydWN0X211dGV4IGFuZCBzbyBhbGxvdwo+IGZpbmUg Z3JhaW5lZCBhY3F1aXNpdGlvbiBvZiBhIHdha2VyZWYgYXJvdW5kIGh3IGFjY2VzcyByYXRoZXIg dGhhbgo+IGhhdmluZyB0byByZW1lbWJlciB0byBhY3F1aXJlIHRoZSB3YWtlcmVmIGVhcmx5IG9u Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNv LnVrPgo+IENjOiBJbXJlIERlYWsgPGltcmUuZGVha0BpbnRlbC5jb20+Cj4gQ2M6IERhbmllbCBW ZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4KPiBDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMgICAgfCAyMiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgIHwgMTkgLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICB8IDE0ICsrKysrLS0tLS0tLS0tCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgIHwgMTcgKysrKysrKysrKysr Ky0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMgfCAgNCAtLS0t Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jICAgIHwgIDYgKysrLS0tCj4g IDYgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgNjEgZGVsZXRpb25zKC0pCj4gCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCBkNGVjYzUyODNjMmEuLmQ0Nzc5 YWJkODllMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTE0MDAs MTQgKzE0MDAsOSBAQCBzdGF0aWMgaW50IGk5MTVfaGFuZ2NoZWNrX2luZm8oc3RydWN0IHNlcV9m aWxlICptLCB2b2lkICp1bnVzZWQpCj4gIHN0YXRpYyBpbnQgaXJvbmxha2VfZHJwY19pbmZvKHN0 cnVjdCBzZXFfZmlsZSAqbSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOwo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRl diA9ICZkZXZfcHJpdi0+ZHJtOwo+ICAJdTMyIHJndm1vZGVjdGwsIHJzdGRieWN0bDsKPiAgCXUx NiBjcnN0YW5kdmlkOwo+IC0JaW50IHJldDsKPiAgCj4gLQlyZXQgPSBtdXRleF9sb2NrX2ludGVy cnVwdGlibGUoJmRldi0+c3RydWN0X211dGV4KTsKPiAtCWlmIChyZXQpCj4gLQkJcmV0dXJuIHJl dDsKPiAgCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiAgCj4gIAlyZ3Ztb2RlY3Rs ID0gSTkxNV9SRUFEKE1FTU1PREVDVEwpOwo+IEBAIC0xNDE1LDcgKzE0MTAsNiBAQCBzdGF0aWMg aW50IGlyb25sYWtlX2RycGNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCj4gIAljcnN0YW5kdmlk ID0gSTkxNV9SRUFEMTYoQ1JTVEFORFZJRCk7Cj4gIAo+ICAJaW50ZWxfcnVudGltZV9wbV9wdXQo ZGV2X3ByaXYpOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gIAo+ICAJ c2VxX3ByaW50ZihtLCAiSEQgYm9vc3Q6ICVzXG4iLCB5ZXNubyhyZ3Ztb2RlY3RsICYgTUVNTU9E RV9CT09TVF9FTikpOwo+ICAJc2VxX3ByaW50ZihtLCAiQm9vc3QgZnJlcTogJWRcbiIsCj4gQEAg LTIwOTMsMTIgKzIwODcsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqc3dpenpsZV9zdHJpbmcodW5z aWduZWQgc3dpenpsZSkKPiAgc3RhdGljIGludCBpOTE1X3N3aXp6bGVfaW5mbyhzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsKPiAtCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSAmZGV2X3ByaXYtPmRybTsKPiAtCWludCByZXQ7Cj4gIAo+IC0JcmV0ID0gbXV0ZXhf bG9ja19pbnRlcnJ1cHRpYmxlKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gLQlpZiAocmV0KQo+IC0J CXJldHVybiByZXQ7Cj4gIAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gIAo+ICAJ c2VxX3ByaW50ZihtLCAiYml0NiBzd2l6emxlIGZvciBYLXRpbGluZyA9ICVzXG4iLAo+IEBAIC0y MTM4LDcgKzIxMjcsNiBAQCBzdGF0aWMgaW50IGk5MTVfc3dpenpsZV9pbmZvKHN0cnVjdCBzZXFf ZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgCQlzZXFfcHV0cyhtLCAiTC1zaGFwZWQgbWVtb3J5IGRl dGVjdGVkXG4iKTsKPiAgCj4gIAlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7Cj4gLQlt dXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+ IEBAIC00Nzk3LDEzICs0Nzg1LDkgQEAgaTkxNV93ZWRnZWRfc2V0KHZvaWQgKmRhdGEsIHU2NCB2 YWwpCj4gIAlpZiAoaTkxNV9yZXNldF9pbl9wcm9ncmVzcygmZGV2X3ByaXYtPmdwdV9lcnJvcikp Cj4gIAkJcmV0dXJuIC1FQUdBSU47Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3By aXYpOwo+IC0KPiAgCWk5MTVfaGFuZGxlX2Vycm9yKGRldl9wcml2LCB2YWwsCj4gIAkJCSAgIk1h bnVhbGx5IHNldHRpbmcgd2VkZ2VkIHRvICVsbHUiLCB2YWwpOwo+ICAKPiAtCWludGVsX3J1bnRp bWVfcG1fcHV0KGRldl9wcml2KTsKPiAtCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiBAQCAtNTAz OCwyMiArNTAyMiwxNiBAQCBzdGF0aWMgaW50Cj4gIGk5MTVfY2FjaGVfc2hhcmluZ19nZXQodm9p ZCAqZGF0YSwgdTY0ICp2YWwpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGRhdGE7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gJmRldl9wcml2LT5kcm07 Cj4gIAl1MzIgc25wY3I7Cj4gLQlpbnQgcmV0Owo+ICAKPiAgCWlmICghKElTX0dFTjYoZGV2X3By aXYpIHx8IElTX0dFTjcoZGV2X3ByaXYpKSkKPiAgCQlyZXR1cm4gLUVOT0RFVjsKPiAgCj4gLQly ZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRldi0+c3RydWN0X211dGV4KTsKPiAtCWlm IChyZXQpCj4gLQkJcmV0dXJuIHJldDsKPiAgCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2 KTsKPiAgCj4gIAlzbnBjciA9IEk5MTVfUkVBRChHRU42X01CQ1VOSVRfU05QQ1IpOwo+ICAKPiAg CWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiAtCW11dGV4X3VubG9jaygmZGV2LT5z dHJ1Y3RfbXV0ZXgpOwo+ICAKPiAgCSp2YWwgPSAoc25wY3IgJiBHRU42X01CQ19TTlBDUl9NQVNL KSA+PiBHRU42X01CQ19TTlBDUl9TSElGVDsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4g aW5kZXggODlkMzIyMjE1Yzg0Li4zMWVlZTMyZmNmNmQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmMKPiBAQCAtMjMxMywyNCArMjMxMyw2IEBAIHN0YXRpYyBpbnQgaW50ZWxfcnVudGltZV9z dXNwZW5kKHN0cnVjdCBkZXZpY2UgKmtkZXYpCj4gIAo+ICAJRFJNX0RFQlVHX0tNUygiU3VzcGVu ZGluZyBkZXZpY2VcbiIpOwo+ICAKPiAtCS8qCj4gLQkgKiBXZSBjb3VsZCBkZWFkbG9jayBoZXJl IGluIGNhc2UgYW5vdGhlciB0aHJlYWQgaG9sZGluZyBzdHJ1Y3RfbXV0ZXgKPiAtCSAqIGNhbGxz IFJQTSBzdXNwZW5kIGNvbmN1cnJlbnRseSwgc2luY2UgdGhlIFJQTSBzdXNwZW5kIHdpbGwgd2Fp dAo+IC0JICogZmlyc3QgZm9yIHRoaXMgUlBNIHN1c3BlbmQgdG8gZmluaXNoLiBJbiB0aGlzIGNh c2UgdGhlIGNvbmN1cnJlbnQKPiAtCSAqIFJQTSByZXN1bWUgd2lsbCBiZSBmb2xsb3dlZCBieSBp dHMgUlBNIHN1c3BlbmQgY291bnRlcnBhcnQuIFN0aWxsCj4gLQkgKiBmb3IgY29uc2lzdGVuY3kg cmV0dXJuIC1FQUdBSU4sIHdoaWNoIHdpbGwgcmVzY2hlZHVsZSB0aGlzIHN1c3BlbmQuCj4gLQkg Ki8KPiAtCWlmICghbXV0ZXhfdHJ5bG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpKSB7Cj4gLQkJRFJN X0RFQlVHX0tNUygiZGV2aWNlIGxvY2sgY29udGVudGlvbiwgZGVmZmVyaW5nIHN1c3BlbmRcbiIp Owo+IC0JCS8qCj4gLQkJICogQnVtcCB0aGUgZXhwaXJhdGlvbiB0aW1lc3RhbXAsIG90aGVyd2lz ZSB0aGUgc3VzcGVuZCB3b24ndAo+IC0JCSAqIGJlIHJlc2NoZWR1bGVkLgo+IC0JCSAqLwo+IC0J CXBtX3J1bnRpbWVfbWFya19sYXN0X2J1c3koa2Rldik7Cj4gLQo+IC0JCXJldHVybiAtRUFHQUlO Owo+IC0JfQo+IC0KPiAgCWRpc2FibGVfcnBtX3dha2VyZWZfYXNzZXJ0cyhkZXZfcHJpdik7Cj4g IAo+ICAJLyoKPiBAQCAtMjMzOCw3ICsyMzIwLDYgQEAgc3RhdGljIGludCBpbnRlbF9ydW50aW1l X3N1c3BlbmQoc3RydWN0IGRldmljZSAqa2RldikKPiAgCSAqIGFuIFJQTSByZWZlcmVuY2UuCj4g IAkgKi8KPiAgCWk5MTVfZ2VtX3JlbGVhc2VfYWxsX21tYXBzKGRldl9wcml2KTsKPiAtCW11dGV4 X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAKPiAgCWludGVsX2d1Y19zdXNwZW5kKGRl dik7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IGluZGV4IDkxOTEwZmZlMDk2NC4uNTg3 YTkxYWY1YTNmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gQEAgLTE0NjksNyArMTQ2 OSw5IEBAIGk5MTVfZ2VtX3B3cml0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lk ICpkYXRhLAo+ICAJICovCj4gIAlpZiAoIWk5MTVfZ2VtX29iamVjdF9oYXNfc3RydWN0X3BhZ2Uo b2JqKSB8fAo+ICAJICAgIGNwdV93cml0ZV9uZWVkc19jbGZsdXNoKG9iaikpIHsKPiArCQlpbnRl bF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gIAkJcmV0ID0gaTkxNV9nZW1fZ3R0X3B3cml0 ZV9mYXN0KGRldl9wcml2LCBvYmosIGFyZ3MsIGZpbGUpOwo+ICsJCWludGVsX3J1bnRpbWVfcG1f cHV0KGRldl9wcml2KTsKCkknZCBtb3ZlIHRoZSBycG1fZ2V0L3B1dCBpbnRvIGd0dF9wd3JpdGVf ZmFzdCAtIHRoZXJlJ3Mgb25seSBvbmUgY2FsbGVyLAphbmQgaXQncyBpbiB0aGUgc3Bpcml0IG9m IHRoaXMgcGF0Y2ggb2YgbW92aW5nIHRoZSBycG0gZ2V0L3B1dCBjbG9zZXIgdG8Kd2hlcmUgd2Ug cmVhbGx5IG5lZWQgaXQuCgo+ICAJCS8qIE5vdGUgdGhhdCB0aGUgZ3R0IHBhdGhzIG1pZ2h0IGZh aWwgd2l0aCBub24tcGFnZS1iYWNrZWQgdXNlcgo+ICAJCSAqIHBvaW50ZXJzIChlLmcuIGd0dCBt YXBwaW5ncyB3aGVuIG1vdmluZyBkYXRhIGJldHdlZW4KPiAgCQkgKiB0ZXh0dXJlcykuIEZhbGxi YWNrIHRvIHRoZSBzaG1lbSBwYXRoIGluIHRoYXQgY2FzZS4gKi8KPiBAQCAtMTg1MCw2ICsxODUy LDcgQEAgaW50IGk5MTVfZ2VtX2ZhdWx0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqYXJlYSwgc3Ry dWN0IHZtX2ZhdWx0ICp2bWYpCj4gIAlpZiAocmV0KQo+ICAJCWdvdG8gZXJyX3VucGluOwo+ICAK PiArCWFzc2VydF9ycG1fd2FrZWxvY2tfaGVsZChkZXZfcHJpdik7Cj4gIAlzcGluX2xvY2soJmRl dl9wcml2LT5tbS51c2VyZmF1bHRfbG9jayk7Cj4gIAlsaXN0X2FkZCgmb2JqLT51c2VyZmF1bHRf bGluaywgJmRldl9wcml2LT5tbS51c2VyZmF1bHRfbGlzdCk7Cj4gIAlzcGluX3VubG9jaygmZGV2 X3ByaXYtPm1tLnVzZXJmYXVsdF9sb2NrKTsKPiBAQCAtMTkzMiw3ICsxOTM1LDcgQEAgaTkxNV9n ZW1fcmVsZWFzZV9tbWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gIAkgKiBy ZXF1aXJlbWVudCB0aGF0IG9wZXJhdGlvbnMgdG8gdGhlIEdHVFQgYmUgbWFkZSBob2xkaW5nIHRo ZSBSUE0KPiAgCSAqIHdha2VyZWYuCj4gIAkgKi8KPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJm9i ai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwlhc3NlcnRfcnBtX3dha2Vsb2NrX2hlbGQo aTkxNSk7Cj4gIAo+ICAJc3Bpbl9sb2NrKCZpOTE1LT5tbS51c2VyZmF1bHRfbG9jayk7Cj4gIAlp ZiAoIWxpc3RfZW1wdHkoJm9iai0+dXNlcmZhdWx0X2xpbmspKSB7Cj4gQEAgLTM0NjksNyArMzQ3 Miw2IEBAIGludCBpOTE1X2dlbV9nZXRfY2FjaGluZ19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB2b2lkICpkYXRhLAo+ICBpbnQgaTkxNV9nZW1fc2V0X2NhY2hpbmdfaW9jdGwoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgCQkJICAgICAgIHN0cnVjdCBkcm1fZmls ZSAqZmlsZSkKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShkZXYpOwo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9jYWNoaW5nICphcmdzID0gZGF0YTsK PiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gIAllbnVtIGk5MTVfY2FjaGVf bGV2ZWwgbGV2ZWw7Cj4gQEAgLTM0OTgsMTEgKzM1MDAsOSBAQCBpbnQgaTkxNV9nZW1fc2V0X2Nh Y2hpbmdfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgCQlyZXR1 cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4gLQlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7 Cj4gLQo+ICAJcmV0ID0gaTkxNV9tdXRleF9sb2NrX2ludGVycnVwdGlibGUoZGV2KTsKPiAgCWlm IChyZXQpCj4gLQkJZ290byBycG1fcHV0Owo+ICsJCXJldHVybiByZXQ7Cj4gIAo+ICAJb2JqID0g aTkxNV9nZW1fb2JqZWN0X2xvb2t1cChmaWxlLCBhcmdzLT5oYW5kbGUpOwo+ICAJaWYgKCFvYmop IHsKPiBAQCAtMzUxMSwxMyArMzUxMSw5IEBAIGludCBpOTE1X2dlbV9zZXRfY2FjaGluZ19pb2N0 bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAJfQo+ICAKPiAgCXJldCA9 IGk5MTVfZ2VtX29iamVjdF9zZXRfY2FjaGVfbGV2ZWwob2JqLCBsZXZlbCk7Cj4gLQo+ICAJaTkx NV9nZW1fb2JqZWN0X3B1dChvYmopOwo+ICB1bmxvY2s6Cj4gIAltdXRleF91bmxvY2soJmRldi0+ c3RydWN0X211dGV4KTsKPiAtcnBtX3B1dDoKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9w cml2KTsKPiAtCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2d0dC5jCj4gaW5kZXggMmQ4NDZhYTM5Y2E1Li5jMGE0YmE0NzgzMDkgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+IEBAIC0yNTk2LDYgKzI1OTYsNyBAQCBzdGF0aWMg aW50IGdndHRfYmluZF92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsCj4gIAkJCSBlbnVtIGk5MTVf Y2FjaGVfbGV2ZWwgY2FjaGVfbGV2ZWwsCj4gIAkJCSB1MzIgZmxhZ3MpCj4gIHsKPiArCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNSh2bWEtPnZtLT5kZXYpOwo+ICAJc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHZtYS0+b2JqOwo+ICAJdTMyIHB0ZV9mbGFn cyA9IDA7Cj4gIAlpbnQgcmV0Owo+IEBAIC0yNjA4LDggKzI2MDksMTAgQEAgc3RhdGljIGludCBn Z3R0X2JpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+ICAJaWYgKG9iai0+Z3Rfcm8pCj4g IAkJcHRlX2ZsYWdzIHw9IFBURV9SRUFEX09OTFk7Cj4gIAo+ICsJaW50ZWxfcnVudGltZV9wbV9n ZXQoaTkxNSk7Cj4gIAl2bWEtPnZtLT5pbnNlcnRfZW50cmllcyh2bWEtPnZtLCB2bWEtPnBhZ2Vz LCB2bWEtPm5vZGUuc3RhcnQsCj4gIAkJCQljYWNoZV9sZXZlbCwgcHRlX2ZsYWdzKTsKPiArCWlu dGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOwo+ICAKPiAgCS8qCj4gIAkgKiBXaXRob3V0IGFsaWFz aW5nIFBQR1RUIHRoZXJlJ3Mgbm8gZGlmZmVyZW5jZSBiZXR3ZWVuCj4gQEAgLTI2MjUsNiArMjYy OCw3IEBAIHN0YXRpYyBpbnQgYWxpYXNpbmdfZ3R0X2JpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAq dm1hLAo+ICAJCQkJIGVudW0gaTkxNV9jYWNoZV9sZXZlbCBjYWNoZV9sZXZlbCwKPiAgCQkJCSB1 MzIgZmxhZ3MpCj4gIHsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkx NSh2bWEtPnZtLT5kZXYpOwo+ICAJdTMyIHB0ZV9mbGFnczsKPiAgCWludCByZXQ7Cj4gIAo+IEBA IC0yNjM5LDE0ICsyNjQzLDE1IEBAIHN0YXRpYyBpbnQgYWxpYXNpbmdfZ3R0X2JpbmRfdm1hKHN0 cnVjdCBpOTE1X3ZtYSAqdm1hLAo+ICAKPiAgCj4gIAlpZiAoZmxhZ3MgJiBJOTE1X1ZNQV9HTE9C QUxfQklORCkgewo+ICsJCWludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICAJCXZtYS0+dm0t Pmluc2VydF9lbnRyaWVzKHZtYS0+dm0sCj4gIAkJCQkJdm1hLT5wYWdlcywgdm1hLT5ub2RlLnN0 YXJ0LAo+ICAJCQkJCWNhY2hlX2xldmVsLCBwdGVfZmxhZ3MpOwo+ICsJCWludGVsX3J1bnRpbWVf cG1fcHV0KGk5MTUpOwo+ICAJfQo+ICAKPiAgCWlmIChmbGFncyAmIEk5MTVfVk1BX0xPQ0FMX0JJ TkQpIHsKPiAtCQlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqYXBwZ3R0ID0KPiAtCQkJdG9faTkxNSh2 bWEtPnZtLT5kZXYpLT5tbS5hbGlhc2luZ19wcGd0dDsKPiArCQlzdHJ1Y3QgaTkxNV9od19wcGd0 dCAqYXBwZ3R0ID0gaTkxNS0+bW0uYWxpYXNpbmdfcHBndHQ7Cj4gIAkJYXBwZ3R0LT5iYXNlLmlu c2VydF9lbnRyaWVzKCZhcHBndHQtPmJhc2UsCj4gIAkJCQkJICAgIHZtYS0+cGFnZXMsIHZtYS0+ bm9kZS5zdGFydCwKPiAgCQkJCQkgICAgY2FjaGVfbGV2ZWwsIHB0ZV9mbGFncyk7Cj4gQEAgLTI2 NTcsMTMgKzI2NjIsMTcgQEAgc3RhdGljIGludCBhbGlhc2luZ19ndHRfYmluZF92bWEoc3RydWN0 IGk5MTVfdm1hICp2bWEsCj4gIAo+ICBzdGF0aWMgdm9pZCBnZ3R0X3VuYmluZF92bWEoc3RydWN0 IGk5MTVfdm1hICp2bWEpCj4gIHsKPiAtCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICphcHBndHQgPSB0 b19pOTE1KHZtYS0+dm0tPmRldiktPm1tLmFsaWFzaW5nX3BwZ3R0Owo+ICsJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KHZtYS0+dm0tPmRldik7Cj4gKwlzdHJ1Y3QgaTkx NV9od19wcGd0dCAqYXBwZ3R0ID0gaTkxNS0+bW0uYWxpYXNpbmdfcHBndHQ7Cj4gIAljb25zdCB1 NjQgc2l6ZSA9IG1pbih2bWEtPnNpemUsIHZtYS0+bm9kZS5zaXplKTsKPiAgCj4gLQlpZiAodm1h LT5mbGFncyAmIEk5MTVfVk1BX0dMT0JBTF9CSU5EKQo+ICsJaWYgKHZtYS0+ZmxhZ3MgJiBJOTE1 X1ZNQV9HTE9CQUxfQklORCkgewo+ICsJCWludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICAJ CXZtYS0+dm0tPmNsZWFyX3JhbmdlKHZtYS0+dm0sCj4gIAkJCQkgICAgIHZtYS0+bm9kZS5zdGFy dCwgc2l6ZSwKPiAgCQkJCSAgICAgdHJ1ZSk7Cj4gKwkJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkx NSk7Cj4gKwl9Cj4gIAo+ICAJaWYgKHZtYS0+ZmxhZ3MgJiBJOTE1X1ZNQV9MT0NBTF9CSU5EICYm IGFwcGd0dCkKPiAgCQlhcHBndHQtPmJhc2UuY2xlYXJfcmFuZ2UoJmFwcGd0dC0+YmFzZSwKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aWxpbmcuYwo+IGluZGV4IGExNGIxZTNkNGM3OC4u MDhmNzk2YTRmNWY2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X3RpbGluZy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMK PiBAQCAtMjA0LDggKzIwNCw2IEBAIGk5MTVfZ2VtX3NldF90aWxpbmcoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4gLQlp bnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gLQo+ICAJbXV0ZXhfbG9jaygmZGV2LT5z dHJ1Y3RfbXV0ZXgpOwo+ICAJaWYgKG9iai0+cGluX2Rpc3BsYXkgfHwgb2JqLT5mcmFtZWJ1ZmZl cl9yZWZlcmVuY2VzKSB7Cj4gIAkJZXJyID0gLUVCVVNZOwo+IEBAIC0zMDEsOCArMjk5LDYgQEAg ZXJyOgo+ICAJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwo+ICAJbXV0ZXhfdW5sb2NrKCZkZXYt PnN0cnVjdF9tdXRleCk7Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+ IC0KPiAgCXJldHVybiBlcnI7Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3VuY29yZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3Jl LmMKPiBpbmRleCBlMmIxODhkY2Y5MDguLmUwYzNiZDk0MWUzOCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3VuY29yZS5jCj4gQEAgLTEzNjQsNyArMTM2NCw3IEBAIGludCBpOTE1X3JlZ19y ZWFkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlzdHJ1Y3QgcmVnaXN0ZXJfd2hp dGVsaXN0IGNvbnN0ICplbnRyeSA9IHdoaXRlbGlzdDsKPiAgCXVuc2lnbmVkIHNpemU7Cj4gIAlp OTE1X3JlZ190IG9mZnNldF9sZHcsIG9mZnNldF91ZHc7Cj4gLQlpbnQgaSwgcmV0ID0gMDsKPiAr CWludCBpLCByZXQ7Cj4gIAo+ICAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUod2hpdGVsaXN0 KTsgaSsrLCBlbnRyeSsrKSB7Cj4gIAkJaWYgKGk5MTVfbW1pb19yZWdfb2Zmc2V0KGVudHJ5LT5v ZmZzZXRfbGR3KSA9PSAocmVnLT5vZmZzZXQgJiAtZW50cnktPnNpemUpICYmCj4gQEAgLTEzODYs NiArMTM4Niw3IEBAIGludCBpOTE1X3JlZ19yZWFkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4gIAo+ICAJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ICAKPiArCXJldCA9 IDA7Cj4gIAlzd2l0Y2ggKHNpemUpIHsKPiAgCWNhc2UgOCB8IDE6Cj4gIAkJcmVnLT52YWwgPSBJ OTE1X1JFQUQ2NF8yeDMyKG9mZnNldF9sZHcsIG9mZnNldF91ZHcpOwo+IEBAIC0xNDA0LDEwICsx NDA1LDkgQEAgaW50IGk5MTVfcmVnX3JlYWRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiAgCQlicmVhazsKPiAgCWRlZmF1bHQ6Cj4gIAkJcmV0ID0gLUVJTlZBTDsKPiAtCQlnb3RvIG91 dDsKPiArCQlicmVhazsKPiAgCX0KPiAgCj4gLW91dDoKPiAgCWludGVsX3J1bnRpbWVfcG1fcHV0 KGRldl9wcml2KTsKPiAgCXJldHVybiByZXQ7CgpTcHVyaW91cyBodW5rcyBpbiBpOTE1X3JlZ19y ZWFkX2lvY3RsLCBwbGVhc2UgcmVtb3ZlIGZyb20gdGhlIHBhdGNoLiBXaXRoCnRoZSB1c2VyZmF1 bHRfbGlzdC9sb2NrIEknbSBoYXBweSB3aXRoIHRoaXMgbm93LiBXaXRoIHRoZSAyIG5pdHMKYWRk cmVzc2VkLgoKUmV2aWV3ZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwu Y2g+Cgo+ICB9Cj4gLS0gCj4gMi45LjMKPiAKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVu Z2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK