From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 1/3] drm/i915: Use RPM as the barrier for controlling user mmap access Date: Tue, 11 Oct 2016 15:25:24 +0200 Message-ID: <20161011132524.GC20761@phenom.ffwll.local> References: <20161010215842.7898-1-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-lf0-x244.google.com (mail-lf0-x244.google.com [IPv6:2a00:1450:4010:c07::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0410E6E679 for ; Tue, 11 Oct 2016 13:25:29 +0000 (UTC) Received: by mail-lf0-x244.google.com with SMTP id l131so1060989lfl.0 for ; Tue, 11 Oct 2016 06:25:28 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20161010215842.7898-1-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 T24gTW9uLCBPY3QgMTAsIDIwMTYgYXQgMTA6NTg6NDBQTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy 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 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICB8IDI5ICsrKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgIHwg MTcgKysrKysrKysrKysrKy0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGls aW5nLmMgfCAgNCAtLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAg IHwgIDYgKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jICAgIHwg IDYgKysrLS0tCj4gIDcgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgNjMgZGVsZXRp b25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCAyMDY4OWYx Y2Q3MTkuLjc5M2IxODE2ZjcwMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5j Cj4gQEAgLTEzOTYsMTQgKzEzOTYsOSBAQCBzdGF0aWMgaW50IGk5MTVfaGFuZ2NoZWNrX2luZm8o c3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gIHN0YXRpYyBpbnQgaXJvbmxha2Vf ZHJwY19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOwo+IC0Jc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9ICZkZXZfcHJpdi0+ZHJtOwo+ICAJdTMyIHJndm1vZGVjdGwsIHJzdGRi eWN0bDsKPiAgCXUxNiBjcnN0YW5kdmlkOwo+IC0JaW50IHJldDsKPiAgCj4gLQlyZXQgPSBtdXRl eF9sb2NrX2ludGVycnVwdGlibGUoJmRldi0+c3RydWN0X211dGV4KTsKPiAtCWlmIChyZXQpCj4g LQkJcmV0dXJuIHJldDsKPiAgCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiAgCj4g IAlyZ3Ztb2RlY3RsID0gSTkxNV9SRUFEKE1FTU1PREVDVEwpOwo+IEBAIC0xNDExLDcgKzE0MDYs NiBAQCBzdGF0aWMgaW50IGlyb25sYWtlX2RycGNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCj4g IAljcnN0YW5kdmlkID0gSTkxNV9SRUFEMTYoQ1JTVEFORFZJRCk7Cj4gIAo+ICAJaW50ZWxfcnVu dGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRl eCk7Cj4gIAo+ICAJc2VxX3ByaW50ZihtLCAiSEQgYm9vc3Q6ICVzXG4iLCB5ZXNubyhyZ3Ztb2Rl Y3RsICYgTUVNTU9ERV9CT09TVF9FTikpOwo+ICAJc2VxX3ByaW50ZihtLCAiQm9vc3QgZnJlcTog JWRcbiIsCj4gQEAgLTIwODksMTIgKzIwODMsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqc3dpenps ZV9zdHJpbmcodW5zaWduZWQgc3dpenpsZSkKPiAgc3RhdGljIGludCBpOTE1X3N3aXp6bGVfaW5m byhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsKPiAtCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSAmZGV2X3ByaXYtPmRybTsKPiAtCWludCByZXQ7Cj4gIAo+IC0J cmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gLQlp ZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4gIAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJp dik7Cj4gIAo+ICAJc2VxX3ByaW50ZihtLCAiYml0NiBzd2l6emxlIGZvciBYLXRpbGluZyA9ICVz XG4iLAo+IEBAIC0yMTM0LDcgKzIxMjMsNiBAQCBzdGF0aWMgaW50IGk5MTVfc3dpenpsZV9pbmZv KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgCQlzZXFfcHV0cyhtLCAiTC1zaGFw ZWQgbWVtb3J5IGRldGVjdGVkXG4iKTsKPiAgCj4gIAlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZf cHJpdik7Cj4gLQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgCj4gIAlyZXR1 cm4gMDsKPiAgfQo+IEBAIC00NzkzLDEzICs0NzgxLDkgQEAgaTkxNV93ZWRnZWRfc2V0KHZvaWQg KmRhdGEsIHU2NCB2YWwpCj4gIAlpZiAoaTkxNV9yZXNldF9pbl9wcm9ncmVzcygmZGV2X3ByaXYt PmdwdV9lcnJvcikpCj4gIAkJcmV0dXJuIC1FQUdBSU47Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9w bV9nZXQoZGV2X3ByaXYpOwo+IC0KPiAgCWk5MTVfaGFuZGxlX2Vycm9yKGRldl9wcml2LCB2YWws Cj4gIAkJCSAgIk1hbnVhbGx5IHNldHRpbmcgd2VkZ2VkIHRvICVsbHUiLCB2YWwpOwo+ICAKPiAt CWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiAtCj4gIAlyZXR1cm4gMDsKPiAgfQo+ ICAKPiBAQCAtNTAzNCwyMiArNTAxOCwxNiBAQCBzdGF0aWMgaW50Cj4gIGk5MTVfY2FjaGVfc2hh cmluZ19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGRhdGE7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gJmRl dl9wcml2LT5kcm07Cj4gIAl1MzIgc25wY3I7Cj4gLQlpbnQgcmV0Owo+ICAKPiAgCWlmICghKElT X0dFTjYoZGV2X3ByaXYpIHx8IElTX0dFTjcoZGV2X3ByaXYpKSkKPiAgCQlyZXR1cm4gLUVOT0RF VjsKPiAgCj4gLQlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRldi0+c3RydWN0X211 dGV4KTsKPiAtCWlmIChyZXQpCj4gLQkJcmV0dXJuIHJldDsKPiAgCWludGVsX3J1bnRpbWVfcG1f Z2V0KGRldl9wcml2KTsKPiAgCj4gIAlzbnBjciA9IEk5MTVfUkVBRChHRU42X01CQ1VOSVRfU05Q Q1IpOwo+ICAKPiAgCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiAtCW11dGV4X3Vu bG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAKPiAgCSp2YWwgPSAoc25wY3IgJiBHRU42X01C Q19TTlBDUl9NQVNLKSA+PiBHRU42X01CQ19TTlBDUl9TSElGVDsKPiAgCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5jCj4gaW5kZXggODlkMzIyMjE1Yzg0Li4zMWVlZTMyZmNmNmQgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmMKPiBAQCAtMjMxMywyNCArMjMxMyw2IEBAIHN0YXRpYyBpbnQgaW50 ZWxfcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmtkZXYpCj4gIAo+ICAJRFJNX0RFQlVH X0tNUygiU3VzcGVuZGluZyBkZXZpY2VcbiIpOwo+ICAKPiAtCS8qCj4gLQkgKiBXZSBjb3VsZCBk ZWFkbG9jayBoZXJlIGluIGNhc2UgYW5vdGhlciB0aHJlYWQgaG9sZGluZyBzdHJ1Y3RfbXV0ZXgK PiAtCSAqIGNhbGxzIFJQTSBzdXNwZW5kIGNvbmN1cnJlbnRseSwgc2luY2UgdGhlIFJQTSBzdXNw ZW5kIHdpbGwgd2FpdAo+IC0JICogZmlyc3QgZm9yIHRoaXMgUlBNIHN1c3BlbmQgdG8gZmluaXNo LiBJbiB0aGlzIGNhc2UgdGhlIGNvbmN1cnJlbnQKPiAtCSAqIFJQTSByZXN1bWUgd2lsbCBiZSBm b2xsb3dlZCBieSBpdHMgUlBNIHN1c3BlbmQgY291bnRlcnBhcnQuIFN0aWxsCj4gLQkgKiBmb3Ig Y29uc2lzdGVuY3kgcmV0dXJuIC1FQUdBSU4sIHdoaWNoIHdpbGwgcmVzY2hlZHVsZSB0aGlzIHN1 c3BlbmQuCj4gLQkgKi8KPiAtCWlmICghbXV0ZXhfdHJ5bG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgp KSB7Cj4gLQkJRFJNX0RFQlVHX0tNUygiZGV2aWNlIGxvY2sgY29udGVudGlvbiwgZGVmZmVyaW5n IHN1c3BlbmRcbiIpOwo+IC0JCS8qCj4gLQkJICogQnVtcCB0aGUgZXhwaXJhdGlvbiB0aW1lc3Rh bXAsIG90aGVyd2lzZSB0aGUgc3VzcGVuZCB3b24ndAo+IC0JCSAqIGJlIHJlc2NoZWR1bGVkLgo+ IC0JCSAqLwo+IC0JCXBtX3J1bnRpbWVfbWFya19sYXN0X2J1c3koa2Rldik7Cj4gLQo+IC0JCXJl dHVybiAtRUFHQUlOOwo+IC0JfQo+IC0KPiAgCWRpc2FibGVfcnBtX3dha2VyZWZfYXNzZXJ0cyhk ZXZfcHJpdik7Cj4gIAo+ICAJLyoKPiBAQCAtMjMzOCw3ICsyMzIwLDYgQEAgc3RhdGljIGludCBp bnRlbF9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqa2RldikKPiAgCSAqIGFuIFJQTSBy ZWZlcmVuY2UuCj4gIAkgKi8KPiAgCWk5MTVfZ2VtX3JlbGVhc2VfYWxsX21tYXBzKGRldl9wcml2 KTsKPiAtCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwoKaTkxNV9nZW1fcmVsZWFz ZV9hbGxfbW1hcHMgaXMgd2Fsa2luZyB0aGUgYm91bmRfbGlzdCwgd2hpY2ggYWZhaWN0IGlzCnBy b3RlY3RlZCBieSBkZXYtPnN0cnVjdF9tdXRleCBzdGlsbC4gSSBndWVzcyBhIHNlcGFyYXRlIGxv Y2sgZm9yIHRoYXQKbGlzdCB3b3VsZCBiZSBvaywgYnV0IEkgZG9uJ3Qgc2VlIGl0IGFueXdoZXJl LgoKUmVxdWlyaW5nIHRoYXQgd2UgaG9sZCBhIGZ1bGwgcnBtIHJlZmVyZW5jZSBiZWZvcmUgdG91 Y2hpbmcgdGhpcyBsaXN0CndvdWxkIGJlIGFub3RoZXIgYXBwcm9hY2gsIGJ1dCBpbW8gdGhhdCBk ZWZlYXRzIHRoZSBwb2ludCBvZiB0aGlzIHBhdGNoIG9mCmRlY291cGxpbmcgcnBtIGFuZCBzdHJ1 Y3RfbXV0ZXggbG9ja2luZy4KCk90aGVyd2lzZSBtYWtlcyBzZW5zZSBJIHRoaW5rLCBzYW1lIGZv ciBwYXRjaDIuCi1EYW5pZWwKCj4gIAo+ICAJaW50ZWxfZ3VjX3N1c3BlbmQoZGV2KTsKPiAgCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggYTg5YTg4OTIyNDQ4Li5lZTkyMGIwZWMyNTgg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBAQCAtMTQ2OSw3ICsxNDY5LDkgQEAgaTkx NV9nZW1fcHdyaXRlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4g IAkgKi8KPiAgCWlmICghaTkxNV9nZW1fb2JqZWN0X2hhc19zdHJ1Y3RfcGFnZShvYmopIHx8Cj4g IAkgICAgY3B1X3dyaXRlX25lZWRzX2NsZmx1c2gob2JqKSkgewo+ICsJCWludGVsX3J1bnRpbWVf cG1fZ2V0KGRldl9wcml2KTsKPiAgCQlyZXQgPSBpOTE1X2dlbV9ndHRfcHdyaXRlX2Zhc3QoZGV2 X3ByaXYsIG9iaiwgYXJncywgZmlsZSk7Cj4gKwkJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3By aXYpOwo+ICAJCS8qIE5vdGUgdGhhdCB0aGUgZ3R0IHBhdGhzIG1pZ2h0IGZhaWwgd2l0aCBub24t cGFnZS1iYWNrZWQgdXNlcgo+ICAJCSAqIHBvaW50ZXJzIChlLmcuIGd0dCBtYXBwaW5ncyB3aGVu IG1vdmluZyBkYXRhIGJldHdlZW4KPiAgCQkgKiB0ZXh0dXJlcykuIEZhbGxiYWNrIHRvIHRoZSBz aG1lbSBwYXRoIGluIHRoYXQgY2FzZS4gKi8KPiBAQCAtMTkyMiw5ICsxOTI0LDEzIEBAIGk5MTVf Z2VtX3JlbGVhc2VfbW1hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAJLyog U2VyaWFsaXNhdGlvbiBiZXR3ZWVuIHVzZXIgR1RUIGFjY2VzcyBhbmQgb3VyIGNvZGUgZGVwZW5k cyB1cG9uCj4gIAkgKiByZXZva2luZyB0aGUgQ1BVJ3MgUFRFIHdoaWxzdCB0aGUgbXV0ZXggaXMg aGVsZC4gVGhlIG5leHQgdXNlcgo+ICAJICogcGFnZWZhdWx0IHRoZW4gaGFzIHRvIHdhaXQgdW50 aWwgd2UgcmVsZWFzZSB0aGUgbXV0ZXguCj4gKwkgKgo+ICsJICogTm90ZSB0aGF0IFJQTSBjb21w bGljYXRlcyBzb21ld2hhdCBieSBhZGRpbmcgYW4gYWRkaXRpb25hbAo+ICsJICogcmVxdWlyZW1l bnQgdGhhdCBvcGVyYXRpb25zIHRvIHRoZSBHR1RUIGJlIG1hZGUgaG9sZGluZyB0aGUgUlBNCj4g KwkgKiB3YWtlcmVmLiBUaGlzIGluIHR1cm5zIGFsbG93IHVzIHRvIHJlbGVhc2UgdGhlIG1tYXAg ZnJvbSB3aXRoaW4KPiArCSAqIHRoZSBSUE0gc3VzcGVuZCBjb2RlIGlnbm9yaW5nIHRoZSBzdHJ1 Y3RfbXV0ZXggc2VyaWFsaXNhdGlvbiBpbgo+ICsJICogbGlldSBvZiB0aGUgUlBNIGJhcnJpZXJz Lgo+ICAJICovCj4gLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZvYmotPmJhc2UuZGV2LT5zdHJ1Y3Rf bXV0ZXgpOwo+IC0KPiAgCWlmICghb2JqLT5mYXVsdF9tYXBwYWJsZSkKPiAgCQlyZXR1cm47Cj4g IAo+IEBAIC0xOTQ4LDYgKzE5NTQsMTEgQEAgaTkxNV9nZW1fcmVsZWFzZV9hbGxfbW1hcHMoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqOwo+ICAKPiArCS8qIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5 IFJQTSBhcyB3ZSByZXF1aXJlIHRoZSBib3VuZF9saXN0Cj4gKwkgKiB0byBiZSBwcm90ZWN0ZWQg YnkgdGhlIFJQTSBiYXJyaWVycyBhbmQgbm90IHN0cnVjdF9tdXRleC4KPiArCSAqIFdlIGNoZWNr IHRoYXQgd2UgYXJlIGhvbGRpbmcgdGhlIHdha2VyZWYgd2hlbmV2ZXIgd2UgbWFuaXB1bGF0ZQo+ ICsJICogdGhlIGRldl9wcml2LT5tbS5ib3VuZF9saXN0ICh2aWEgYXNzZXJ0X3JwbV9yZWxlYXNl X2FsbF9tbWFwcykuCj4gKwkgKi8KPiAgCWxpc3RfZm9yX2VhY2hfZW50cnkob2JqLCAmZGV2X3By aXYtPm1tLmJvdW5kX2xpc3QsIGdsb2JhbF9saXN0KQo+ICAJCWk5MTVfZ2VtX3JlbGVhc2VfbW1h cChvYmopOwo+ICB9Cj4gQEAgLTI5MTEsOSArMjkyMiwxMSBAQCBpbnQgaTkxNV92bWFfdW5iaW5k KHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAKPiAgCS8qIFNpbmNlIHRoZSB1bmJvdW5kIGxpc3Qg aXMgZ2xvYmFsLCBvbmx5IG1vdmUgdG8gdGhhdCBsaXN0IGlmCj4gIAkgKiBubyBtb3JlIFZNQXMg ZXhpc3QuICovCj4gLQlpZiAoLS1vYmotPmJpbmRfY291bnQgPT0gMCkKPiArCWlmICgtLW9iai0+ YmluZF9jb3VudCA9PSAwKSB7Cj4gKwkJYXNzZXJ0X3JwbV9yZWxlYXNlX2FsbF9tbWFwcyh0b19p OTE1KG9iai0+YmFzZS5kZXYpKTsKPiAgCQlsaXN0X21vdmVfdGFpbCgmb2JqLT5nbG9iYWxfbGlz dCwKPiAgCQkJICAgICAgICZ0b19pOTE1KG9iai0+YmFzZS5kZXYpLT5tbS51bmJvdW5kX2xpc3Qp Owo+ICsJfQo+ICAKPiAgCS8qIEFuZCBmaW5hbGx5IG5vdyB0aGUgb2JqZWN0IGlzIGNvbXBsZXRl bHkgZGVjb3VwbGVkIGZyb20gdGhpcyB2bWEsCj4gIAkgKiB3ZSBjYW4gZHJvcCBpdHMgaG9sZCBv biB0aGUgYmFja2luZyBzdG9yYWdlIGFuZCBhbGxvdyBpdCB0byBiZQo+IEBAIC0zMDk5LDYgKzMx MTIsNyBAQCBzZWFyY2hfZnJlZToKPiAgCX0KPiAgCUdFTV9CVUdfT04oIWk5MTVfZ2VtX3ZhbGlk X2d0dF9zcGFjZSh2bWEsIG9iai0+Y2FjaGVfbGV2ZWwpKTsKPiAgCj4gKwlhc3NlcnRfcnBtX3Jl bGVhc2VfYWxsX21tYXBzKGRldl9wcml2KTsKPiAgCWxpc3RfbW92ZV90YWlsKCZvYmotPmdsb2Jh bF9saXN0LCAmZGV2X3ByaXYtPm1tLmJvdW5kX2xpc3QpOwo+ICAJbGlzdF9tb3ZlX3RhaWwoJnZt YS0+dm1fbGluaywgJnZtYS0+dm0tPmluYWN0aXZlX2xpc3QpOwo+ICAJb2JqLT5iaW5kX2NvdW50 Kys7Cj4gQEAgLTM0NDYsNyArMzQ2MCw2IEBAIGludCBpOTE1X2dlbV9nZXRfY2FjaGluZ19pb2N0 bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICBpbnQgaTkxNV9nZW1fc2V0 X2NhY2hpbmdfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgCQkJ ICAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9j YWNoaW5nICphcmdzID0gZGF0YTsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7 Cj4gIAllbnVtIGk5MTVfY2FjaGVfbGV2ZWwgbGV2ZWw7Cj4gQEAgLTM0NzUsMTEgKzM0ODgsOSBA QCBpbnQgaTkxNV9nZW1fc2V0X2NhY2hpbmdfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dm9pZCAqZGF0YSwKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4gLQlpbnRlbF9ydW50 aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gLQo+ICAJcmV0ID0gaTkxNV9tdXRleF9sb2NrX2ludGVy cnVwdGlibGUoZGV2KTsKPiAgCWlmIChyZXQpCj4gLQkJZ290byBycG1fcHV0Owo+ICsJCXJldHVy biByZXQ7Cj4gIAo+ICAJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2xvb2t1cChmaWxlLCBhcmdzLT5o YW5kbGUpOwo+ICAJaWYgKCFvYmopIHsKPiBAQCAtMzQ4OCwxMyArMzQ5OSw5IEBAIGludCBpOTE1 X2dlbV9zZXRfY2FjaGluZ19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAo+ICAJfQo+ICAKPiAgCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfY2FjaGVfbGV2ZWwob2Jq LCBsZXZlbCk7Cj4gLQo+ICAJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwo+ICB1bmxvY2s6Cj4g IAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAtcnBtX3B1dDoKPiAtCWludGVs X3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiAtCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gaW5kZXggMGJiNDIzMmY2NmJjLi5lMTEw OWQ3MjMwNjAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0 LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+IEBAIC0yNTk2 LDYgKzI1OTYsNyBAQCBzdGF0aWMgaW50IGdndHRfYmluZF92bWEoc3RydWN0IGk5MTVfdm1hICp2 bWEsCj4gIAkJCSBlbnVtIGk5MTVfY2FjaGVfbGV2ZWwgY2FjaGVfbGV2ZWwsCj4gIAkJCSB1MzIg ZmxhZ3MpCj4gIHsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNSh2 bWEtPnZtLT5kZXYpOwo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHZtYS0+ b2JqOwo+ICAJdTMyIHB0ZV9mbGFncyA9IDA7Cj4gIAlpbnQgcmV0Owo+IEBAIC0yNjA4LDggKzI2 MDksMTAgQEAgc3RhdGljIGludCBnZ3R0X2JpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+ ICAJaWYgKG9iai0+Z3Rfcm8pCj4gIAkJcHRlX2ZsYWdzIHw9IFBURV9SRUFEX09OTFk7Cj4gIAo+ ICsJaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7Cj4gIAl2bWEtPnZtLT5pbnNlcnRfZW50cmll cyh2bWEtPnZtLCB2bWEtPnBhZ2VzLCB2bWEtPm5vZGUuc3RhcnQsCj4gIAkJCQljYWNoZV9sZXZl bCwgcHRlX2ZsYWdzKTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOwo+ICAKPiAgCS8q Cj4gIAkgKiBXaXRob3V0IGFsaWFzaW5nIFBQR1RUIHRoZXJlJ3Mgbm8gZGlmZmVyZW5jZSBiZXR3 ZWVuCj4gQEAgLTI2MjUsNiArMjYyOCw3IEBAIHN0YXRpYyBpbnQgYWxpYXNpbmdfZ3R0X2JpbmRf dm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+ICAJCQkJIGVudW0gaTkxNV9jYWNoZV9sZXZlbCBj YWNoZV9sZXZlbCwKPiAgCQkJCSB1MzIgZmxhZ3MpCj4gIHsKPiArCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1ID0gdG9faTkxNSh2bWEtPnZtLT5kZXYpOwo+ICAJdTMyIHB0ZV9mbGFnczsK PiAgCWludCByZXQ7Cj4gIAo+IEBAIC0yNjM5LDE0ICsyNjQzLDE1IEBAIHN0YXRpYyBpbnQgYWxp YXNpbmdfZ3R0X2JpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+ICAKPiAgCj4gIAlpZiAo ZmxhZ3MgJiBJOTE1X1ZNQV9HTE9CQUxfQklORCkgewo+ICsJCWludGVsX3J1bnRpbWVfcG1fZ2V0 KGk5MTUpOwo+ICAJCXZtYS0+dm0tPmluc2VydF9lbnRyaWVzKHZtYS0+dm0sCj4gIAkJCQkJdm1h LT5wYWdlcywgdm1hLT5ub2RlLnN0YXJ0LAo+ICAJCQkJCWNhY2hlX2xldmVsLCBwdGVfZmxhZ3Mp Owo+ICsJCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOwo+ICAJfQo+ICAKPiAgCWlmIChmbGFn cyAmIEk5MTVfVk1BX0xPQ0FMX0JJTkQpIHsKPiAtCQlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqYXBw Z3R0ID0KPiAtCQkJdG9faTkxNSh2bWEtPnZtLT5kZXYpLT5tbS5hbGlhc2luZ19wcGd0dDsKPiAr CQlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqYXBwZ3R0ID0gaTkxNS0+bW0uYWxpYXNpbmdfcHBndHQ7 Cj4gIAkJYXBwZ3R0LT5iYXNlLmluc2VydF9lbnRyaWVzKCZhcHBndHQtPmJhc2UsCj4gIAkJCQkJ ICAgIHZtYS0+cGFnZXMsIHZtYS0+bm9kZS5zdGFydCwKPiAgCQkJCQkgICAgY2FjaGVfbGV2ZWws IHB0ZV9mbGFncyk7Cj4gQEAgLTI2NTcsMTMgKzI2NjIsMTcgQEAgc3RhdGljIGludCBhbGlhc2lu Z19ndHRfYmluZF92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsCj4gIAo+ICBzdGF0aWMgdm9pZCBn Z3R0X3VuYmluZF92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gIHsKPiAtCXN0cnVjdCBpOTE1 X2h3X3BwZ3R0ICphcHBndHQgPSB0b19pOTE1KHZtYS0+dm0tPmRldiktPm1tLmFsaWFzaW5nX3Bw Z3R0Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KHZtYS0+dm0t PmRldik7Cj4gKwlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqYXBwZ3R0ID0gaTkxNS0+bW0uYWxpYXNp bmdfcHBndHQ7Cj4gIAljb25zdCB1NjQgc2l6ZSA9IG1pbih2bWEtPnNpemUsIHZtYS0+bm9kZS5z aXplKTsKPiAgCj4gLQlpZiAodm1hLT5mbGFncyAmIEk5MTVfVk1BX0dMT0JBTF9CSU5EKQo+ICsJ aWYgKHZtYS0+ZmxhZ3MgJiBJOTE1X1ZNQV9HTE9CQUxfQklORCkgewo+ICsJCWludGVsX3J1bnRp bWVfcG1fZ2V0KGk5MTUpOwo+ICAJCXZtYS0+dm0tPmNsZWFyX3JhbmdlKHZtYS0+dm0sCj4gIAkJ CQkgICAgIHZtYS0+bm9kZS5zdGFydCwgc2l6ZSwKPiAgCQkJCSAgICAgdHJ1ZSk7Cj4gKwkJaW50 ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7Cj4gKwl9Cj4gIAo+ICAJaWYgKHZtYS0+ZmxhZ3MgJiBJ OTE1X1ZNQV9MT0NBTF9CSU5EICYmIGFwcGd0dCkKPiAgCQlhcHBndHQtPmJhc2UuY2xlYXJfcmFu Z2UoJmFwcGd0dC0+YmFzZSwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fdGlsaW5nLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aWxpbmcuYwo+ IGluZGV4IGExNGIxZTNkNGM3OC4uMDhmNzk2YTRmNWY2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbGluZy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fdGlsaW5nLmMKPiBAQCAtMjA0LDggKzIwNCw2IEBAIGk5MTVfZ2VtX3NldF90 aWxpbmcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgCQlyZXR1cm4gLUVJ TlZBTDsKPiAgCX0KPiAgCj4gLQlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gLQo+ ICAJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAJaWYgKG9iai0+cGluX2Rpc3Bs YXkgfHwgb2JqLT5mcmFtZWJ1ZmZlcl9yZWZlcmVuY2VzKSB7Cj4gIAkJZXJyID0gLUVCVVNZOwo+ IEBAIC0zMDEsOCArMjk5LDYgQEAgZXJyOgo+ICAJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwo+ ICAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gIAo+IC0JaW50ZWxfcnVudGlt ZV9wbV9wdXQoZGV2X3ByaXYpOwo+IC0KPiAgCXJldHVybiBlcnI7Cj4gIH0KPiAgCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCBmNDhlNzlhZTJhYzYuLjliMGEyZmE3OTg0YiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTE2NDgsNiArMTY0OCwxMiBAQCBhc3Nl cnRfcnBtX3dha2Vsb2NrX2hlbGQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ICAJCURSTV9ERUJVR19EUklWRVIoIlJQTSB3YWtlbG9jayByZWYgbm90IGhlbGQgZHVyaW5nIEhX IGFjY2VzcyIpOwo+ICB9Cj4gIAo+ICtzdGF0aWMgaW5saW5lIHZvaWQKPiArYXNzZXJ0X3JwbV9y ZWxlYXNlX2FsbF9tbWFwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sK PiArCWFzc2VydF9ycG1fd2FrZWxvY2tfaGVsZChkZXZfcHJpdik7Cj4gK30KPiArCj4gIHN0YXRp YyBpbmxpbmUgaW50Cj4gIGFzc2VydF9ycG1fYXRvbWljX2JlZ2luKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiAgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF91bmNvcmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCj4g aW5kZXggZTJiMTg4ZGNmOTA4Li5lMGMzYmQ5NDFlMzggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF91bmNvcmUuYwo+IEBAIC0xMzY0LDcgKzEzNjQsNyBAQCBpbnQgaTkxNV9yZWdfcmVhZF9p b2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJc3RydWN0IHJlZ2lzdGVyX3doaXRlbGlz dCBjb25zdCAqZW50cnkgPSB3aGl0ZWxpc3Q7Cj4gIAl1bnNpZ25lZCBzaXplOwo+ICAJaTkxNV9y ZWdfdCBvZmZzZXRfbGR3LCBvZmZzZXRfdWR3Owo+IC0JaW50IGksIHJldCA9IDA7Cj4gKwlpbnQg aSwgcmV0Owo+ICAKPiAgCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHdoaXRlbGlzdCk7IGkr KywgZW50cnkrKykgewo+ICAJCWlmIChpOTE1X21taW9fcmVnX29mZnNldChlbnRyeS0+b2Zmc2V0 X2xkdykgPT0gKHJlZy0+b2Zmc2V0ICYgLWVudHJ5LT5zaXplKSAmJgo+IEBAIC0xMzg2LDYgKzEz ODYsNyBAQCBpbnQgaTkxNV9yZWdfcmVhZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ ICAKPiAgCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiAgCj4gKwlyZXQgPSAwOwo+ ICAJc3dpdGNoIChzaXplKSB7Cj4gIAljYXNlIDggfCAxOgo+ICAJCXJlZy0+dmFsID0gSTkxNV9S RUFENjRfMngzMihvZmZzZXRfbGR3LCBvZmZzZXRfdWR3KTsKPiBAQCAtMTQwNCwxMCArMTQwNSw5 IEBAIGludCBpOTE1X3JlZ19yZWFkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJ YnJlYWs7Cj4gIAlkZWZhdWx0Ogo+ICAJCXJldCA9IC1FSU5WQUw7Cj4gLQkJZ290byBvdXQ7Cj4g KwkJYnJlYWs7Cj4gIAl9Cj4gIAo+IC1vdXQ6Cj4gIAlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZf cHJpdik7Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gLS0gCj4gMi45LjMKPiAKCi0tIApEYW5pZWwg VmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5m ZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK