From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Brezillon Subject: Re: [PATCH v3] drm/vc4: Add the DRM_IOCTL_VC4_GEM_MADVISE ioctl Date: Wed, 18 Oct 2017 09:54:48 +0200 Message-ID: <20171018095448.6da19169@bbrezillon> References: <20171013142201.18425-1-boris.brezillon@free-electrons.com> <874lqxgvj6.fsf@anholt.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.free-electrons.com (mail.free-electrons.com [62.4.15.54]) by gabe.freedesktop.org (Postfix) with ESMTP id 45C406E806 for ; Wed, 18 Oct 2017 07:54:51 +0000 (UTC) In-Reply-To: <874lqxgvj6.fsf@anholt.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Eric Anholt Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCAxNyBPY3QgMjAxNyAxNzoxNjoyOSAtMDcwMApFcmljIEFuaG9sdCA8ZXJpY0Bhbmhv bHQubmV0PiB3cm90ZToKCj4gQm9yaXMgQnJlemlsbG9uIDxib3Jpcy5icmV6aWxsb25AZnJlZS1l bGVjdHJvbnMuY29tPiB3cml0ZXM6Cj4gCj4gPiBUaGlzIGlvY3RsIHdpbGwgYWxsb3cgdXMgdG8g cHVyZ2UgaW5hY3RpdmUgdXNlcnNwYWNlIGJ1ZmZlcnMgd2hlbiB0aGUKPiA+IHN5c3RlbSBpcyBy dW5uaW5nIG91dCBvZiBjb250aWd1b3VzIG1lbW9yeS4KPiA+Cj4gPiBGb3Igbm93LCB0aGUgcHVy Z2UgbG9naWMgaXMgcmF0aGVyIGR1bWIgaW4gdGhhdCBpdCBkb2VzIG5vdCB0cnkgdG8KPiA+IHJl bGVhc2Ugb25seSB0aGUgYW1vdW50IG9mIEJPIG5lZWRlZCB0byBtZWV0IHRoZSBsYXN0IENNQSBh bGxvYyByZXF1ZXN0Cj4gPiBidXQgaW5zdGVhZCBwdXJnZXMgYWxsIG9iamVjdHMgcGxhY2VkIGlu IHRoZSBwdXJnZWFibGUgcG9vbCBhcyBzb29uIGFzCj4gPiB3ZSBleHBlcmllbmNlIGEgQ01BIGFs bG9jYXRpb24gZmFpbHVyZS4KPiA+Cj4gPiBOb3RlIHRoYXQgdGhlIGluLWtlcm5lbCBCTyBjYWNo ZSBpcyBhbHdheXMgcHVyZ2VkIGJlZm9yZSB0aGUgcHVyZ2VhYmxlCj4gPiBjYWNoZSBiZWNhdXNl IHRob3NlIG9iamVjdHMgYXJlIGtub3duIHRvIGJlIHVudXNlZCB3aGlsZSBvYmplY3RzIG1hcmtl ZAo+ID4gYXMgcHVyZ2VhYmxlIGJ5IGEgdXNlcnNwYWNlIGFwcGxpY2F0aW9uL2xpYnJhcnkgbWln aHQgaGF2ZSB0byBiZQo+ID4gcmVzdG9yZWQgd2hlbiB0aGV5IGFyZSBtYXJrZWQgYmFjayBhcyB1 bnB1cmdlYWJsZSwgd2hpY2ggY2FuIGJlCj4gPiBleHBlbnNpdmUuCj4gPgo+ID4gU2lnbmVkLW9m Zi1ieTogQm9yaXMgQnJlemlsbG9uIDxib3Jpcy5icmV6aWxsb25AZnJlZS1lbGVjdHJvbnMuY29t PiAgCj4gCj4gTG9va2luZyBnb29kISAgSnVzdCBhIGNvdXBsZSB0aGluZ3MgSSdkIGxpa2UgdG8g c29ydCBvdXQgYmVmb3JlIHdlCj4gbWVyZ2UuCj4gCj4gPiAtLS0KPiA+IEhlbGxvLAo+ID4KPiA+ IFVwZGF0ZXMgdG8gbGliZHJtLCBtZXNhIGFuZCBpZ3QgbWFraW5nIHVzZSBvZiB0aGlzIGtlcm5l bCBmZWF0dXJlIGNhbgo+ID4gYmUgZm91bmQgb24gbXkgZ2l0aHViIHJlcG9zIFsxXVsyXVszXS4K PiA+Cj4gPiBUaGVyZSdzIGN1cnJlbnRseSBubyBkZWJ1Z2ZzIGhvb2sgdG8gbWFudWFsbHkgZm9y Y2UgYSBwdXJnZSwgYnV0IHRoaXMKPiA+IGlzIGJlaW5nIGRpc2N1c3NlZCBhbmQgbWlnaHQgYmUg YWRkZWQgbGF0ZXIgb24uCj4gPgo+ID4gUmVnYXJkcywKPiA+Cj4gPiBCb3Jpcwo+ID4KPiA+IFsx XWh0dHBzOi8vZ2l0aHViLmNvbS9iYnJlemlsbG9uL2RybS90cmVlL3ZjNC9wdXJnZWFibGUKPiA+ IFsyXWh0dHBzOi8vZ2l0aHViLmNvbS9iYnJlemlsbG9uL21lc2EvdHJlZS92YzQvcHVyZ2VhYmxl Cj4gPiBbM11odHRwczovL2dpdGh1Yi5jb20vYmJyZXppbGxvbi9pZ3QvdHJlZS92YzQvcHVyZ2Vh YmxlCj4gPgo+ID4gQ2hhbmdlcyBpbiB2MzoKPiA+IC0gVXNlICV6ZCBmb3JtYXR0ZXJzIHdoZW4g cHJpbnRpbmcgc2l6ZV90IHZhbHVlcwo+ID4gLSByZXdvcmsgZGV0ZWN0aW9uIG9mIEJPcyB0aGF0 IGRvIG5vdCBzdXBwb3J0IHRoZSBNQURWIGlvY3RsCj4gPiAtIHJlcGxhY2UgRFJNX0VSUk9SIGJ5 IERSTV9ERUJVRyBpbiB0aGUgaW9jdGwgcGF0aAo+ID4gLSBkbyBub3QgZXhwbGljaXRseSBtZW16 ZXJvIHB1cmdlZCBCTyBtZW0KPiA+IC0gY2hlY2sgdGhhdCBwYWQgaXMgc2V0IHRvIHplcm8gaW4g dGhlIG1hZHYgaW9jdGwgZnVuY3Rpb24KPiA+Cj4gPiBDaGFuZ2VzIGluIHYyOgo+ID4gLSBEbyBu b3QgcmUtYWxsb2NhdGUgQk8ncyBtZW1vcnkgYWZ0ZXIgd2hlbiBXSUxMTkVFRCBpcyBhc2tlZCBh ZnRlciBhIHB1cmdlCj4gPiAtIEFkZCBwdXJnZWFibGUvcHVyZ2VkIHN0YXRzIHRvIGRlYnVnZnMg YW5kIGR1bXBzdGF0cwo+ID4gLSBQYWQgdGhlIGRybV92YzRfZ2VtX21hZHZpc2UgdG8gbWFrZSBp dCA2NC1iaXQgYWxpZ25lZAo+ID4gLSBGb3JiaWQgbWFkdmlzZSBjYWxscyBvbiBpbnRlcm5hbCBC TyBvYmplY3RzIChldmVyeXRoaW5nIHRoYXQgaXMgbm90Cj4gPiAgIG1lYW50IHRvIGJlIGV4cG9z ZWQgdG8gdXNlcnNwYWNlKQo+ID4gLSBEbyBub3QgaW5jcmVtZW50L2RlY3JlbWVudCB1c2VjbnQg b24gaW50ZXJuYWwgQk9zICh0aGV5IGNhbm5vdCBiZSBtYXJrZWQKPiA+ICAgcHVyZ2VhYmxlLCBz byBkb2luZyB0aGF0IGlzIHVzZWxlc3MgYW5kIGVycm9yIHByb25lKQo+ID4gLSBGaXggYSBmZXcg YnVncyByZWxhdGVkIHRvIHVzZWNudCByZWZjb3VudGluZwo+ID4gLS0tCj4gPiAgZHJpdmVycy9n cHUvZHJtL3ZjNC92YzRfYm8uYyAgICB8IDI5MiArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHJ2LmMgICB8ICAxMCAr LQo+ID4gIGRyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2Rydi5oICAgfCAgMzAgKysrKysKPiA+ICBk cml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9nZW0uYyAgIHwgMTU2ICsrKysrKysrKysrKysrKysrKysr LQo+ID4gIGRyaXZlcnMvZ3B1L2RybS92YzQvdmM0X3BsYW5lLmMgfCAgMjAgKysrCj4gPiAgaW5j bHVkZS91YXBpL2RybS92YzRfZHJtLmggICAgICB8ICAxOSArKysKPiA+ICA2IGZpbGVzIGNoYW5n ZWQsIDUxMiBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKPiA+Cj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfYm8uYyBiL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0 X2JvLmMKPiA+IGluZGV4IDNhZmRiZjRiYzEwYi4uZTRkMTNiYmVmNTRmIDEwMDY0NAo+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfYm8uYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJt L3ZjNC92YzRfYm8uYwo+ID4gQEAgLTQyLDYgKzQyLDggQEAgc3RhdGljIGJvb2wgaXNfdXNlcl9s YWJlbChpbnQgbGFiZWwpCj4gPiAgCj4gPiAgc3RhdGljIHZvaWQgdmM0X2JvX3N0YXRzX2R1bXAo c3RydWN0IHZjNF9kZXYgKnZjNCkKPiA+ICB7Cj4gPiArCXNpemVfdCBwdXJnZWFibGVfc2l6ZSwg cHVyZ2VkX3NpemU7Cj4gPiArCXVuc2lnbmVkIGludCBucHVyZ2VhYmxlLCBucHVyZ2VkOwo+ID4g IAlpbnQgaTsKPiA+ICAKPiA+ICAJZm9yIChpID0gMDsgaSA8IHZjNC0+bnVtX2xhYmVsczsgaSsr KSB7Cj4gPiBAQCAtNTMsNiArNTUsMjEgQEAgc3RhdGljIHZvaWQgdmM0X2JvX3N0YXRzX2R1bXAo c3RydWN0IHZjNF9kZXYgKnZjNCkKPiA+ICAJCQkgdmM0LT5ib19sYWJlbHNbaV0uc2l6ZV9hbGxv Y2F0ZWQgLyAxMDI0LAo+ID4gIAkJCSB2YzQtPmJvX2xhYmVsc1tpXS5udW1fYWxsb2NhdGVkKTsK PiA+ICAJfQo+ID4gKwo+ID4gKwltdXRleF9sb2NrKCZ2YzQtPnB1cmdlYWJsZS5sb2NrKTsKPiA+ ICsJbnB1cmdlYWJsZSA9IHZjNC0+cHVyZ2VhYmxlLm51bTsKPiA+ICsJcHVyZ2VhYmxlX3NpemUg PSB2YzQtPnB1cmdlYWJsZS5zaXplOwo+ID4gKwlwdXJnZWRfc2l6ZSA9IHZjNC0+cHVyZ2VhYmxl LnB1cmdlZF9zaXplOwo+ID4gKwlucHVyZ2VkID0gdmM0LT5wdXJnZWFibGUucHVyZ2VkX251bTsK PiA+ICsJbXV0ZXhfdW5sb2NrKCZ2YzQtPnB1cmdlYWJsZS5sb2NrKTsKPiA+ICsKPiA+ICsJaWYg KG5wdXJnZWFibGUpCj4gPiArCQlEUk1fSU5GTygiJTMwczogJTZ6ZGtiIEJPcyAoJWQpXG4iLCAi dXNlcnNwYWNlIEJPIGNhY2hlIiwKPiA+ICsJCQkgcHVyZ2VhYmxlX3NpemUgLyAxMDI0LCBucHVy Z2VhYmxlKTsKPiA+ICsKPiA+ICsJaWYgKG5wdXJnZWQpCj4gPiArCQlEUk1fSU5GTygiJTMwczog JTZ6ZGtiIEJPcyAoJWQpXG4iLCAidG90YWwgcHVyZ2VkIEJPIiwKPiA+ICsJCQkgcHVyZ2VkX3Np emUgLyAxMDI0LCBucHVyZ2VkKTsKPiA+ICB9Cj4gPiAgCj4gPiAgI2lmZGVmIENPTkZJR19ERUJV R19GUwo+ID4gQEAgLTYxLDYgKzc4LDggQEAgaW50IHZjNF9ib19zdGF0c19kZWJ1Z2ZzKHN0cnVj dCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ID4gIAlzdHJ1Y3QgZHJtX2luZm9fbm9kZSAq bm9kZSA9IChzdHJ1Y3QgZHJtX2luZm9fbm9kZSAqKW0tPnByaXZhdGU7Cj4gPiAgCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBub2RlLT5taW5vci0+ZGV2Owo+ID4gIAlzdHJ1Y3QgdmM0X2RldiAq dmM0ID0gdG9fdmM0X2RldihkZXYpOwo+ID4gKwlzaXplX3QgcHVyZ2VhYmxlX3NpemUsIHB1cmdl ZF9zaXplOwo+ID4gKwl1bnNpZ25lZCBpbnQgbnB1cmdlYWJsZSwgbnB1cmdlZDsKPiA+ICAJaW50 IGk7Cj4gPiAgCj4gPiAgCW11dGV4X2xvY2soJnZjNC0+Ym9fbG9jayk7Cj4gPiBAQCAtNzUsNiAr OTQsMjEgQEAgaW50IHZjNF9ib19zdGF0c19kZWJ1Z2ZzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9p ZCAqdW51c2VkKQo+ID4gIAl9Cj4gPiAgCW11dGV4X3VubG9jaygmdmM0LT5ib19sb2NrKTsKPiA+ ICAKPiA+ICsJbXV0ZXhfbG9jaygmdmM0LT5wdXJnZWFibGUubG9jayk7Cj4gPiArCW5wdXJnZWFi bGUgPSB2YzQtPnB1cmdlYWJsZS5udW07Cj4gPiArCXB1cmdlYWJsZV9zaXplID0gdmM0LT5wdXJn ZWFibGUuc2l6ZTsKPiA+ICsJcHVyZ2VkX3NpemUgPSB2YzQtPnB1cmdlYWJsZS5wdXJnZWRfc2l6 ZTsKPiA+ICsJbnB1cmdlZCA9IHZjNC0+cHVyZ2VhYmxlLnB1cmdlZF9udW07Cj4gPiArCW11dGV4 X3VubG9jaygmdmM0LT5wdXJnZWFibGUubG9jayk7Cj4gPiArCj4gPiArCWlmIChucHVyZ2VhYmxl KQo+ID4gKwkJc2VxX3ByaW50ZihtLCAiJTMwczogJTZka2IgQk9zICglZClcbiIsICJ1c2Vyc3Bh Y2UgQk8gY2FjaGUiLAo+ID4gKwkJCSAgIHB1cmdlYWJsZV9zaXplIC8gMTAyNCwgbnB1cmdlYWJs ZSk7Cj4gPiArCj4gPiArCWlmIChucHVyZ2VkKQo+ID4gKwkJc2VxX3ByaW50ZihtLCAiJTMwczog JTZka2IgQk9zICglZClcbiIsICJ0b3RhbCBwdXJnZWQgQk8iLAo+ID4gKwkJCSAgIHB1cmdlZF9z aXplIC8gMTAyNCwgbnB1cmdlZCk7ICAKPiAKPiBJIHRoaW5rIHlvdSBjb3VsZCBqdXN0IGRvIHRo ZXNlIHNlcV9wcmludGZzIHVuZGVyIHRoZSBsb2NrLCBpbnN0ZWFkIG9mCj4gdGFraW5nIGEgc25h cHNob3QgYWhlYWQgb2YgdGltZS4gIFNhbWUgZm9yIHRoZSBkdW1wLgoKVGhlIHJlYXNvbiBJIGlu aXRpYWxseSBkaWQgaXQgbGlrZSB0aGF0IGlzIGJlY2F1c2UgcHJpbnRpbmcgYSBtZXNzYWdlCm9u IHRoZSBjb25zb2xlIGNhbiB0YWtlIGEgbm9uLW5lZ2xpZ2libGUgYW1vdW50IG9mIHRpbWUgaWYg aXQncyBhCnNlcmlhbCBjb25zb2xlLiBUaGF0J3MgbGVzcyBvZiBhIHByb2JsZW0gZm9yIHRoZSBz ZXFfcHJpbnRmcy4KCkFueXdheSwgSSBjYW4gZ28gZm9yIHlvdXIgc29sdXRpb24gaWYgeW91IHBy ZWZlci4KCj4gCj4gPiArc3RhdGljIHZvaWQgdmM0X2JvX3JlbW92ZV9mcm9tX3B1cmdlYWJsZV9w b29sX2xvY2tlZChzdHJ1Y3QgdmM0X2JvICpibykKPiA+ICt7Cj4gPiArCXN0cnVjdCB2YzRfZGV2 ICp2YzQgPSB0b192YzRfZGV2KGJvLT5iYXNlLmJhc2UuZGV2KTsKPiA+ICsKPiA+ICsJLyogbGlz dF9kZWxfaW5pdCgpIGlzIHVzZWQgaGVyZSBiZWNhdXNlIHRoZSBjYWxsZXIgbWlnaHQgcmVsZWFz ZQo+ID4gKwkgKiB0aGUgcHVyZ2VhYmxlIGxvY2sgaW4gb3JkZXIgdG8gYWNxdWlyZSB0aGUgbWFk diBvbmUgYW5kIHVwZGF0ZSB0aGUKPiA+ICsJICogbWFkdiBzdGF0dXMuCj4gPiArCSAqIER1cmlu ZyB0aGlzIHNob3J0IHBlcmlvZCBvZiB0aW1lIGEgdXNlciBtaWdodCBkZWNpZGUgdG8gbWFyawo+ ID4gKwkgKiB0aGUgQk8gYXMgdW5wdXJnZWFibGUsIGFuZCBpZiBiby0+bWFkdiBpcyBzZXQgdG8K PiA+ICsJICogVkM0X01BRFZfRE9OVE5FRUQgaXQgd2lsbCB0cnkgdG8gcmVtb3ZlIHRoZSBCTyBm cm9tIHRoZQo+ID4gKwkgKiBwdXJnZWFibGUgbGlzdCB3aGljaCB3aWxsIGZhaWwgaWYgdGhlIC0+ bmV4dC9wcmV2IGZpZWxkcwo+ID4gKwkgKiBhcmUgc2V0IHRvIExJU1RfUE9JU09OMS9MSVNUX1BP SVNPTjIgKHdoaWNoIGlzIHdoYXQKPiA+ICsJICogbGlzdF9kZWwoKSBkb2VzKS4KPiA+ICsJICog UmUtaW5pdGlhbGl6aW5nIHRoZSBsaXN0IGVsZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGxpc3RfZGVs KCkKPiA+ICsJICogd2lsbCB3b3JrIGNvcnJlY3RseSBldmVuIGlmIGl0J3MgYSBOT1AuCj4gPiAr CSAqLwo+ID4gKwlsaXN0X2RlbF9pbml0KCZiby0+c2l6ZV9oZWFkKTsKPiA+ICsJdmM0LT5wdXJn ZWFibGUubnVtLS07Cj4gPiArCXZjNC0+cHVyZ2VhYmxlLnNpemUgLT0gYm8tPmJhc2UuYmFzZS5z aXplOwo+ID4gK30KPiA+ICsKPiA+ICt2b2lkIHZjNF9ib19yZW1vdmVfZnJvbV9wdXJnZWFibGVf cG9vbChzdHJ1Y3QgdmM0X2JvICpibykKPiA+ICt7Cj4gPiArCXN0cnVjdCB2YzRfZGV2ICp2YzQg PSB0b192YzRfZGV2KGJvLT5iYXNlLmJhc2UuZGV2KTsKPiA+ICsKPiA+ICsJbXV0ZXhfbG9jaygm dmM0LT5wdXJnZWFibGUubG9jayk7Cj4gPiArCXZjNF9ib19yZW1vdmVfZnJvbV9wdXJnZWFibGVf cG9vbF9sb2NrZWQoYm8pOwo+ID4gKwltdXRleF91bmxvY2soJnZjNC0+cHVyZ2VhYmxlLmxvY2sp Owo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCB2YzRfYm9fcHVyZ2Uoc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpvYmopCj4gPiArewo+ID4gKwlzdHJ1Y3QgdmM0X2JvICpibyA9IHRvX3ZjNF9i byhvYmopOwo+ID4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5kZXY7Cj4gPiArCj4g PiArCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmYm8tPm1hZHZfbG9jaykpOwo+ID4gKwlXQVJO X09OKGJvLT5tYWR2ICE9IFZDNF9NQURWX0RPTlRORUVEKTsKPiA+ICsKPiA+ICsJZHJtX3ZtYV9u b2RlX3VubWFwKCZvYmotPnZtYV9ub2RlLCBkZXYtPmFub25faW5vZGUtPmlfbWFwcGluZyk7Cj4g PiArCj4gPiArCWRtYV9mcmVlX3djKGRldi0+ZGV2LCBvYmotPnNpemUsIGJvLT5iYXNlLnZhZGRy LCBiby0+YmFzZS5wYWRkcik7Cj4gPiArCWJvLT5iYXNlLnZhZGRyID0gTlVMTDsKPiA+ICsJYm8t Pm1hZHYgPSBfX1ZDNF9NQURWX1BVUkdFRDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQg dmM0X2JvX3VzZXJzcGFjZV9jYWNoZV9wdXJnZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4g K3sKPiA+ICsJc3RydWN0IHZjNF9kZXYgKnZjNCA9IHRvX3ZjNF9kZXYoZGV2KTsKPiA+ICsKPiA+ ICsJbXV0ZXhfbG9jaygmdmM0LT5wdXJnZWFibGUubG9jayk7Cj4gPiArCXdoaWxlICghbGlzdF9l bXB0eSgmdmM0LT5wdXJnZWFibGUubGlzdCkpIHsKPiA+ICsJCXN0cnVjdCB2YzRfYm8gKmJvID0g bGlzdF9maXJzdF9lbnRyeSgmdmM0LT5wdXJnZWFibGUubGlzdCwKPiA+ICsJCQkJCQkgICAgIHN0 cnVjdCB2YzRfYm8sIHNpemVfaGVhZCk7Cj4gPiArCQlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9i aiA9ICZiby0+YmFzZS5iYXNlOwo+ID4gKwkJc2l6ZV90IHB1cmdlZF9zaXplID0gMDsKPiA+ICsK PiA+ICsJCXZjNF9ib19yZW1vdmVfZnJvbV9wdXJnZWFibGVfcG9vbF9sb2NrZWQoYm8pOwo+ID4g Kwo+ID4gKwkJLyogUmVsZWFzZSB0aGUgcHVyZ2VhYmxlIGxvY2sgd2hpbGUgd2UncmUgcHVyZ2lu ZyB0aGUgQk8gc28KPiA+ICsJCSAqIHRoYXQgb3RoZXIgcGVvcGxlIGNhbiBjb250aW51ZSBpbnNl cnRpbmcgdGhpbmdzIGluIHRoZQo+ID4gKwkJICogcHVyZ2VhYmxlIHBvb2wgd2l0aG91dCBoYXZp bmcgdG8gd2FpdCBmb3IgYWxsIEJPcyB0byBiZQo+ID4gKwkJICogcHVyZ2VkLgo+ID4gKwkJICov Cj4gPiArCQltdXRleF91bmxvY2soJnZjNC0+cHVyZ2VhYmxlLmxvY2spOwo+ID4gKwkJbXV0ZXhf bG9jaygmYm8tPm1hZHZfbG9jayk7Cj4gPiArCj4gPiArCQkvKiBTaW5jZSB3ZSByZWxlYXNlZCB0 aGUgcHVyZ2VhYmxlIHBvb2wgbG9jayBiZWZvcmUgYWNxdWlyaW5nCj4gPiArCQkgKiB0aGUgQk8g bWFkdiBvbmUsIHZjNF9nZW1fbWFkdmlzZV9pb2N0bCgpIG1heSBoYXZlIGNoYW5nZWQKPiA+ICsJ CSAqIHRoZSBiby0+bWFkdiBzdGF0dXMuIEluIHRoaXMgY2FzZSwganVzdCBza2lwIHRoaXMgZW50 cnkuCj4gPiArCQkgKi8KPiA+ICsJCWlmIChiby0+bWFkdiA9PSBWQzRfTUFEVl9ET05UTkVFRCkg ewo+ID4gKwkJCXB1cmdlZF9zaXplID0gYm8tPmJhc2UuYmFzZS5zaXplOwo+ID4gKwkJCXZjNF9i b19wdXJnZShvYmopOwo+ID4gKwkJfSAgCj4gCj4gUG9zc2libGUgdWdseSByYWNlIGhlcmU/Cj4g Cj4gdGhyZWFkIDEgICAgICAgICAgICAgICB0aHJlYWQgMgo+IC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiBJZGxlIG15IEJPCj4gTWFyayBET05U TkVFRAo+ICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnQgcHVyZ2UKPiAgICAgICAgICAgICAg ICAgICAgICAgIHB1bGwgQk8gb2ZmIG9mIHB1cmdlYWJsZSBsaXN0Cj4gTWFyayBORUVECj4gRG8g YSBzdWJtaXQgQ0wKPiBNYXJrIERPTlRORUVECj4gICAgICAgICAgICAgICAgICAgICAgICBwdXJn ZSB0aGUgQk8KPiAKCkNyYXAhIFlvdSdyZSByaWdodC4gSSBkaWRuJ3QgZ28gdGhhdCBmYXIgaW4g bXkgYW5hbHlzaXMuCgo+IENhbiB3ZSBwbHVnIHRoYXQgYnkgY2hlY2tpbmcgdGhlIHJlZmNvdW50 IGFsb25nIHdpdGggY2hlY2tpbmcgdGhhdCB3ZSdyZQo+IERPTlRORUVEPwoKVGhhdCBzaG91bGQg c29sdmUgdGhlIHByb2JsZW0geW91J3JlIGRlc2NyaWJpbmcgYWJvdmUsIGJ1dCBJIHNlZSBhbm90 aGVyCnByb2JsZW06Cgp0aHJlYWQgMSAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQgMgotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklkbGUgbXkg Qk8KTWFyayBET05UTkVFRAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFydCBwdXJn ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWxsIEJPIG9mZiBvZiBwdXJnZWFibGUg bGlzdApNYXJrIE5FRUQKTWFyayBET05UTkVFRAogKEJPIGdldHMgYmFjayBpbiB0aGUgbGlzdCkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVyZ2UgdGhlIEJPCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAob3VjaCEgd2UgcHVyZ2VkIGEgQk8gdGhhdCBpcyBzdGlsbCBpbgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBwdXJnZWFibGUgbGlzdCkKCgpXZSdk IG5lZWQgc29tZXRoaW5nIGxpa2U6CgoJCS8qIFNpbmNlIHdlIHJlbGVhc2VkIHRoZSBwdXJnZWFi bGUgcG9vbCBsb2NrIGJlZm9yZQoJCSAqIGFjcXVpcmluZyB0aGUgQk8gbWFkdiBvbmUsIHZjNF9n ZW1fbWFkdmlzZV9pb2N0bCgpCgkJICogbWF5IGhhdmUgY2hhbmdlZCB0aGUgYm8tPm1hZHYgc3Rh dHVzIGluIHRoZSBtZWFudGltZQoJCSAqIGFuZCBtYXkgaGF2ZSByZS11c2VkIHRoZSBCTy4gQmVm b3JlIHB1cmdpbmcgdGhlIEJPIHdlCgkJICogbmVlZCB0byBtYWtlIHN1cmUKCQkgKiAtIGl0IGlz IHN0aWxsIG1hcmtlZCBhcyBET05UTkVFRAoJCSAqIC0gaXQgaGFzIG5vdCBiZWVuIHJlLWluc2Vy dGVkIGluIHRoZSBwdXJnZWFibGUgbGlzdAoJCSAqIC0gaXQgaXMgbm90IHVzZWQgYnkgSFcgYmxv Y2tzCgkJICogSWYgb25lIG9mIHRoZXNlIGNvbmRpdGlvbnMgaXMgbm90IHRydWUsIGp1c3Qgc2tp cCB0aGUKCQkgKiBlbnRyeS4KCQkgKi8KCQlpZiAoYm8tPm1hZHYgPT0gVkM0X01BRFZfRE9OVE5F RUQgJiYKCQkgICAgbGlzdF9lbXB0eSgmYm8tPnNpemVfbGlzdCkgJiYKCQkgICAgIXJlZmNvdW50 X3JlYWQoJmJvLT51c2VjbnQpKSB7CgkJCXB1cmdlZF9zaXplID0gYm8tPmJhc2UuYmFzZS5zaXpl OwoJCQl2YzRfYm9fcHVyZ2Uob2JqKTsKCQl9CgoKCj4gPiArCQltdXRleF91bmxvY2soJmJvLT5t YWR2X2xvY2spOwo+ID4gKwkJbXV0ZXhfbG9jaygmdmM0LT5wdXJnZWFibGUubG9jayk7Cj4gPiAr Cj4gPiArCQlpZiAocHVyZ2VkX3NpemUpIHsKPiA+ICsJCQl2YzQtPnB1cmdlYWJsZS5wdXJnZWRf c2l6ZSArPSBwdXJnZWRfc2l6ZTsKPiA+ICsJCQl2YzQtPnB1cmdlYWJsZS5wdXJnZWRfbnVtKys7 Cj4gPiArCQl9Cj4gPiArCX0KPiA+ICsJbXV0ZXhfdW5sb2NrKCZ2YzQtPnB1cmdlYWJsZS5sb2Nr KTsKPiA+ICt9ICAKPiAKPiAKPiA+ICBpbnQgdmM0X21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0 cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQo+ID4gIHsKPiA+ICAJc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpnZW1fb2JqOwo+ID4gKwl1bnNpZ25lZCBsb25nIHZtX3Bnb2ZmOwo+ID4gIAlzdHJ1Y3Qg dmM0X2JvICpibzsKPiA+ICAJaW50IHJldDsKPiA+ICAKPiA+IEBAIC01MDcsMTYgKzc1OSwzNiBA QCBpbnQgdmM0X21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq dm1hKQo+ID4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gPiAgCX0KPiA+ICAKPiA+ICsJaWYgKGJvLT5t YWR2ICE9IFZDNF9NQURWX1dJTExORUVEKSB7Cj4gPiArCQlEUk1fREVCVUcoIm1tYXBpbmcgb2Yg JXMgQk8gbm90IGFsbG93ZWRcbiIsCj4gPiArCQkJICBiby0+bWFkdiA9PSBWQzRfTUFEVl9ET05U TkVFRCA/Cj4gPiArCQkJICAicHVyZ2VhYmxlIiA6ICJwdXJnZWQiKTsKPiA+ICsJCXJldHVybiAt RUlOVkFMOwo+ID4gKwl9Cj4gPiArCj4gPiAgCS8qCj4gPiAgCSAqIENsZWFyIHRoZSBWTV9QRk5N QVAgZmxhZyB0aGF0IHdhcyBzZXQgYnkgZHJtX2dlbV9tbWFwKCksIGFuZCBzZXQgdGhlCj4gPiAg CSAqIHZtX3Bnb2ZmICh1c2VkIGFzIGEgZmFrZSBidWZmZXIgb2Zmc2V0IGJ5IERSTSkgdG8gMCBh cyB3ZSB3YW50IHRvIG1hcAo+ID4gIAkgKiB0aGUgd2hvbGUgYnVmZmVyLgo+ID4gIAkgKi8KPiA+ ICAJdm1hLT52bV9mbGFncyAmPSB+Vk1fUEZOTUFQOwo+ID4gLQl2bWEtPnZtX3Bnb2ZmID0gMDsK PiA+ICAKPiA+ICsJLyogVGhpcyAtPnZtX3Bnb2ZmIGRhbmNlIGlzIG5lZWRlZCB0byBtYWtlIGFs bCBwYXJ0aWVzIGhhcHB5Ogo+ID4gKwkgKiAtIGRtYV9tbWFwX3djKCkgdXNlcyAtPnZtX3Bnb2Zm IGFzIGFuIG9mZnNldCB3aXRoaW4gdGhlIGFsbG9jYXRlZAo+ID4gKwkgKiAgIG1lbS1yZWdpb24s IGhlbmNlIHRoZSBuZWVkIHRvIHNldCBpdCB0byB6ZXJvICh0aGUgdmFsdWUgc2V0IGJ5Cj4gPiAr CSAqICAgdGhlIERSTSBjb3JlIGlzIGEgdmlydHVhbCBvZmZzZXQgZW5jb2RpbmcgdGhlIEdFTSBv YmplY3QtaWQpCj4gPiArCSAqIC0gdGhlIG1tYXAoKSBjb3JlIGxvZ2ljIG5lZWRzIC0+dm1fcGdv ZmYgdG8gYmUgcmVzdG9yZWQgdG8gaXRzCj4gPiArCSAqICAgaW5pdGlhbCBiZWZvcmUgcmV0dXJu aW5nIGZyb20gdGhpcyBmdW5jdGlvbiBiZWNhdXNlIGl0IGVuY29kZXMgdGhlCgoJCSAgIF4gdmFs dWUKCj4gPiArCSAqICAgb2Zmc2V0IG9mIHRoaXMgR0VNIGluIHRoZSBkZXYtPmFub25faW5vZGUg cHNldWRvLWZpbGUgYW5kIHRoaXMKPiA+ICsJICogICBpbmZvcm1hdGlvbiB3aWxsIGJlIHVzZWQg d2hlbiB3ZSBpbnZhbGlkYXRlIHVzZXJzcGFjZSBtYXBwaW5ncwo+ID4gKwkgKiAgIHdpdGggZHJt X3ZtYV9ub2RlX3VubWFwKCkgKGNhbGxlZCBmcm9tIHZjNF9nZW1fcHVyZ2UoKSkuCj4gPiArCSAq Lwo+ID4gKwl2bV9wZ29mZiA9IHZtYS0+dm1fcGdvZmY7Cj4gPiArCXZtYS0+dm1fcGdvZmYgPSAw Owo+ID4gIAlyZXQgPSBkbWFfbW1hcF93Yyhiby0+YmFzZS5iYXNlLmRldi0+ZGV2LCB2bWEsIGJv LT5iYXNlLnZhZGRyLAo+ID4gIAkJCSAgYm8tPmJhc2UucGFkZHIsIHZtYS0+dm1fZW5kIC0gdm1h LT52bV9zdGFydCk7Cj4gPiArCXZtYS0+dm1fcGdvZmYgPSB2bV9wZ29mZjsgIAo+IAo+IFRoYW5r cyBmb3IgdGhlIGV4cGxhbmF0aW9uIGhlcmUhCj4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3ZjNC92YzRfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYuaAo+ID4g aW5kZXggODdmMmQ4ZTVjMTM0Li5mNTRjMWY1Y2U0N2YgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vdmM0L3ZjNF9kcnYuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRf ZHJ2LmgKPiA+IEBAIC03NCw2ICs3NCwxOSBAQCBzdHJ1Y3QgdmM0X2RldiB7Cj4gPiAgCS8qIFBy b3RlY3RzIGJvX2NhY2hlIGFuZCBib19sYWJlbHMuICovCj4gPiAgCXN0cnVjdCBtdXRleCBib19s b2NrOwo+ID4gIAo+ID4gKwkvKiBQdXJnZWFibGUgQk8gcG9vbC4gQWxsIEJPcyBpbiB0aGlzIHBv b2wgY2FuIGhhdmUgdGhlaXIgbWVtb3J5Cj4gPiArCSAqIHJlY2xhaW1lZCBpZiB0aGUgZHJpdmVy IGlzIHVuYWJsZSB0byBhbGxvY2F0ZSBuZXcgQk9zLiBXZSBhbHNvCj4gPiArCSAqIGtlZXAgc3Rh dHMgcmVsYXRlZCB0byB0aGUgcHVyZ2UgbWVjaGFuaXNtIGhlcmUuCj4gPiArCSAqLwo+ID4gKwlz dHJ1Y3Qgewo+ID4gKwkJc3RydWN0IGxpc3RfaGVhZCBsaXN0Owo+ID4gKwkJdW5zaWduZWQgaW50 IG51bTsKPiA+ICsJCXNpemVfdCBzaXplOwo+ID4gKwkJdW5zaWduZWQgaW50IHB1cmdlZF9udW07 Cj4gPiArCQlzaXplX3QgcHVyZ2VkX3NpemU7Cj4gPiArCQlzdHJ1Y3QgbXV0ZXggbG9jazsKPiA+ ICsJfSBwdXJnZWFibGU7Cj4gPiArCj4gPiAgCXVpbnQ2NF90IGRtYV9mZW5jZV9jb250ZXh0Owo+ ID4gIAo+ID4gIAkvKiBTZXF1ZW5jZSBudW1iZXIgZm9yIHRoZSBsYXN0IGpvYiBxdWV1ZWQgaW4g YmluX2pvYl9saXN0Lgo+ID4gQEAgLTE5Miw2ICsyMDUsMTYgQEAgc3RydWN0IHZjNF9ibyB7Cj4g PiAgCSAqIGZvciB1c2VyLWFsbG9jYXRlZCBsYWJlbHMuCj4gPiAgCSAqLwo+ID4gIAlpbnQgbGFi ZWw7Cj4gPiArCj4gPiArCS8qIENvdW50IHRoZSBudW1iZXIgb2YgYWN0aXZlIHVzZXJzLiBUaGlz IGlzIG5lZWRlZCB0byBkZXRlcm1pbmUKPiA+ICsJICogd2hldGhlciB3ZSBjYW4gdGhlIEJPIHRv IHRoZSBwdXJnZWFibGUgb3Igbm90ICh3aGVuIHRoZSBCTyBpcyB1c2VkICAKPiAKPiBTb21ldGhp bmcgd2VudCB3ZWlyZCBoZXJlLiAgTWF5YmUgeW91IHdhbnRlZCAid2hldGhlciB3ZSBjYW4gbW92 ZSB0aGUgQk8KPiB0byB0aGUgcHVyZ2VhYmxlIGxpc3Qgb3Igbm90Ij8KClllcC4KCj4gCj4gPiAr CSAqIGJ5IHRoZSBHUFUgb3IgdGhlIGRpc3BsYXkgZW5naW5lIHdlIGNhbid0IHB1cmdlIGl0KS4K PiA+ICsJICovCj4gPiArCXJlZmNvdW50X3QgdXNlY250Owo+ID4gKwo+ID4gKwkvKiBTdG9yZSBw dXJnZWFibGUvcHVyZ2VkIHN0YXRlIGhlcmUgKi8KPiA+ICsJdTMyIG1hZHY7Cj4gPiArCXN0cnVj dCBtdXRleCBtYWR2X2xvY2s7Cj4gPiAgfTsgIAo+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS92YzQvdmM0X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZ2VtLmMKPiA+ IGluZGV4IGQwYzZiZmI2OGM0ZS4uNTBhMGIyNjM4YTJmIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3ZjNC92YzRfZ2VtLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0 X2dlbS5jCj4gPiBAQCAtMTg4LDExICsxODgsMjIgQEAgdmM0X3NhdmVfaGFuZ19zdGF0ZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gIAkJCWNvbnRpbnVlOwo+ID4gIAo+ID4gIAkJZm9yIChq ID0gMDsgaiA8IGV4ZWNbaV0tPmJvX2NvdW50OyBqKyspIHsKPiA+ICsJCQlibyA9IHRvX3ZjNF9i bygmZXhlY1tpXS0+Ym9bal0tPmJhc2UpOwo+ID4gKwo+ID4gKwkJCS8qIFJldGFpbiBCT3MganVz dCBpbiBjYXNlIHRoZXkgd2VyZSBtYXJrZWQgcHVyZ2VhYmxlLgo+ID4gKwkJCSAqIFRoaXMgcHJl dmVudHMgdGhlIEJPIGZyb20gYmVpbmcgcHVyZ2VkIGJlZm9yZQo+ID4gKwkJCSAqIHNvbWVvbmUg aGFkIGEgY2hhbmNlIHRvIGR1bXAgdGhlIGhhbmcgc3RhdGUuCj4gPiArCQkJICovCj4gPiArCQkJ V0FSTl9PTighcmVmY291bnRfcmVhZCgmYm8tPnVzZWNudCkpOwo+ID4gKwkJCXJlZmNvdW50X2lu YygmYm8tPnVzZWNudCk7Cj4gPiAgCQkJZHJtX2dlbV9vYmplY3RfZ2V0KCZleGVjW2ldLT5ib1tq XS0+YmFzZSk7Cj4gPiAgCQkJa2VybmVsX3N0YXRlLT5ib1tqICsgcHJldl9pZHhdID0gJmV4ZWNb aV0tPmJvW2pdLT5iYXNlOwo+ID4gIAkJfQo+ID4gIAo+ID4gIAkJbGlzdF9mb3JfZWFjaF9lbnRy eShibywgJmV4ZWNbaV0tPnVucmVmX2xpc3QsIHVucmVmX2hlYWQpIHsKPiA+ICsJCQkvKiBObyBu ZWVkIHRvIHJldGFpbiBCT3MgY29taW5nIGZyb20gdGhlIC0+dW5yZWZfbGlzdAo+ID4gKwkJCSAq IGJlY2F1c2UgdGhleSBhcmUgbmF0dXJhbGx5IHVucHVyZ2VhYmxlLgo+ID4gKwkJCSAqLwo+ID4g IAkJCWRybV9nZW1fb2JqZWN0X2dldCgmYm8tPmJhc2UuYmFzZSk7Cj4gPiAgCQkJa2VybmVsX3N0 YXRlLT5ib1tqICsgcHJldl9pZHhdID0gJmJvLT5iYXNlLmJhc2U7Cj4gPiAgCQkJaisrOwo+ID4g QEAgLTIzMyw2ICsyNDQsMjYgQEAgdmM0X3NhdmVfaGFuZ19zdGF0ZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+ID4gIAlzdGF0ZS0+ZmRiZ3MgPSBWM0RfUkVBRChWM0RfRkRCR1MpOwo+ID4gIAlz dGF0ZS0+ZXJyc3RhdCA9IFYzRF9SRUFEKFYzRF9FUlJTVEFUKTsKPiA+ICAKPiA+ICsJLyogV2Ug bmVlZCB0byB0dXJuIHB1cmdlYWJsZSBCT3MgaW50byB1bnB1cmdlYWJsZSBvbmVzIHNvIHRoYXQK PiA+ICsJICogdXNlcnNwYWNlIGhhcyBhIGNoYW5jZSB0byBkdW1wIHRoZSBoYW5nIHN0YXRlIGJl Zm9yZSB0aGUga2VybmVsCj4gPiArCSAqIGRlY2lkZXMgdG8gcHVyZ2UgdGhvc2UgQk9zLgo+ID4g KwkgKiBOb3RlIHRoYXQgQk8gY29uc2lzdGVuY3kgYXQgZHVtcCB0aW1lIGNhbm5vdCBiZSBndWFy YW50ZWVkLiBGb3IKPiA+ICsJICogZXhhbXBsZSwgaWYgdGhlIG93bmVyIG9mIHRoZXNlIEJPcyBk ZWNpZGVzIHRvIHJlLXVzZSB0aGVtIG9yIG1hcmsKPiA+ICsJICogdGhlbSBwdXJnZWFibGUgYWdh aW4gdGhlcmUncyBub3RoaW5nIHdlIGNhbiBkbyB0byBwcmV2ZW50IGl0Lgo+ID4gKwkgKi8KPiA+ ICsJZm9yIChpID0gMDsgaSA8IGtlcm5lbF9zdGF0ZS0+dXNlcl9zdGF0ZS5ib19jb3VudDsgaSsr KSB7Cj4gPiArCQlzdHJ1Y3QgdmM0X2JvICpibyA9IHRvX3ZjNF9ibyhrZXJuZWxfc3RhdGUtPmJv W2ldKTsKPiA+ICsKPiA+ICsJCWlmIChiby0+bWFkdiA9PSBfX1ZDNF9NQURWX05PVFNVUFApCj4g PiArCQkJY29udGludWU7Cj4gPiArCj4gPiArCQltdXRleF9sb2NrKCZiby0+bWFkdl9sb2NrKTsK PiA+ICsJCWlmICghV0FSTl9PTihiby0+bWFkdiA9PSBfX1ZDNF9NQURWX1BVUkdFRCkpCj4gPiAr CQkJYm8tPm1hZHYgPSBWQzRfTUFEVl9XSUxMTkVFRDsKPiA+ICsJCXJlZmNvdW50X2RlYygmYm8t PnVzZWNudCk7Cj4gPiArCQltdXRleF91bmxvY2soJmJvLT5tYWR2X2xvY2spOwo+ID4gKwl9ICAK PiAKPiBJIGxpa2UgeW91ciBzb2x1dGlvbiBmb3IgZ2V0dGluZyB0aGVzZSBidWZmZXJzIHRyYW5z aXRpb25lZCB0byBXSUxMTkVFRC4KPiBJbiBteSBwcmV2aW91cyBjb21tZW50cywgSSBoYWQgYmVl biB0aGlua2luZyB5b3Ugd2VyZSBpbmNyZW1lbnRpbmcgdGhlCj4gcmVmIGhlcmUgYW5kIGRlY3Jl bWVudGluZyBhdCBoYW5nIHN0YXRlIGlvY3RsIHRpbWUsIGJ1dCB5b3UncmUgYWN0dWFsbHkKPiBk b2luZyBpdCBhbGwgd2l0aGluIHNhdmVfaGFuZ19zdGF0ZS4KPiAKPiA+IEBAIC02MzksOSArNjcw LDYgQEAgdmM0X3F1ZXVlX3N1Ym1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgdmM0 X2V4ZWNfaW5mbyAqZXhlYywKPiA+ICAgKiBUaGUgY29tbWFuZCB2YWxpZGF0b3IgbmVlZHMgdG8g cmVmZXJlbmNlIEJPcyBieSB0aGVpciBpbmRleCB3aXRoaW4KPiA+ICAgKiB0aGUgc3VibWl0dGVk IGpvYidzIEJPIGxpc3QuICBUaGlzIGRvZXMgdGhlIHZhbGlkYXRpb24gb2YgdGhlIGpvYidzCj4g PiAgICogQk8gbGlzdCBhbmQgcmVmZXJlbmNlIGNvdW50aW5nIGZvciB0aGUgbGlmZXRpbWUgb2Yg dGhlIGpvYi4KPiA+IC0gKgo+ID4gLSAqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGRvZXNuJ3Qg bmVlZCB0byB1bnJlZmVyZW5jZSB0aGUgQk9zIG9uCj4gPiAtICogZmFpbHVyZSwgYmVjYXVzZSB0 aGF0IHdpbGwgaGFwcGVuIGF0IHZjNF9jb21wbGV0ZV9leGVjKCkgdGltZS4KPiA+ICAgKi8KPiA+ ICBzdGF0aWMgaW50Cj4gPiAgdmM0X2NsX2xvb2t1cF9ib3Moc3RydWN0IGRybV9kZXZpY2UgKmRl diwKPiA+IEBAIC02OTMsMTYgKzcyMSw0NyBAQCB2YzRfY2xfbG9va3VwX2JvcyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAo+ID4gIAkJCURSTV9ERUJVRygiRmFpbGVkIHRvIGxvb2sgdXAgR0VNIEJP ICVkOiAlZFxuIiwKPiA+ICAJCQkJICBpLCBoYW5kbGVzW2ldKTsKPiA+ICAJCQlyZXQgPSAtRUlO VkFMOwo+ID4gLQkJCXNwaW5fdW5sb2NrKCZmaWxlX3ByaXYtPnRhYmxlX2xvY2spOwo+ID4gLQkJ CWdvdG8gZmFpbDsKPiA+ICsJCQlicmVhazsKPiA+ICAJCX0KPiA+ICsKPiA+ICAJCWRybV9nZW1f b2JqZWN0X2dldChibyk7Cj4gPiAgCQlleGVjLT5ib1tpXSA9IChzdHJ1Y3QgZHJtX2dlbV9jbWFf b2JqZWN0ICopYm87Cj4gPiAgCX0KPiA+ICAJc3Bpbl91bmxvY2soJmZpbGVfcHJpdi0+dGFibGVf bG9jayk7Cj4gPiAgCj4gPiArCWlmIChyZXQpCj4gPiArCQlnb3RvIGZhaWxfcHV0X2JvOwo+ID4g Kwo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgZXhlYy0+Ym9fY291bnQ7IGkrKykgewo+ID4gKwkJcmV0 ID0gdmM0X2JvX2luY191c2VjbnQodG9fdmM0X2JvKCZleGVjLT5ib1tpXS0+YmFzZSkpOwo+ID4g KwkJaWYgKHJldCkKPiA+ICsJCQlnb3RvIGZhaWxfZGVjX3VzZWNudDsKPiA+ICsJfQo+ID4gKwo+ ID4gKwlrdmZyZWUoaGFuZGxlcyk7Cj4gPiArCXJldHVybiAwOwo+ID4gKwo+ID4gK2ZhaWxfZGVj X3VzZWNudDoKPiA+ICsJLyogRGVjcmVhc2UgdXNlY250IG9uIGFjcXVpcmVkIG9iamVjdHMuCj4g PiArCSAqIFdlIGNhbm5vdCByZWx5IG9uICB2YzRfY29tcGxldGVfZXhlYygpIHRvIHJlbGVhc2Ug cmVzb3VyY2VzIGhlcmUsCj4gPiArCSAqIGJlY2F1c2UgdmM0X2NvbXBsZXRlX2V4ZWMoKSBoYXMg bm8gaW5mb3JtYXRpb24gYWJvdXQgd2hpY2ggQk8gaGFzCj4gPiArCSAqIGhhZCBpdHMgLT51c2Vj bnQgaW5jcmVtZW50ZWQuCj4gPiArCSAqIFRvIG1ha2UgdGhpbmdzIGVhc2llciB3ZSBqdXN0IGZy ZWUgZXZlcnl0aGluZyBleHBsaWNpdGx5IGFuZCBzZXQKPiA+ICsJICogZXhlYy0+Ym8gdG8gTlVM TCBzbyB0aGF0IHZjNF9jb21wbGV0ZV9leGVjKCkgc2tpcHMgdGhlICdCTyByZWxlYXNlJwo+ID4g KwkgKiBzdGVwLgo+ID4gKwkgKi8KPiA+ICsJZm9yIChpLS0gOyBpID49IDA7IGktLSkKPiA+ICsJ CXZjNF9ib19kZWNfdXNlY250KHRvX3ZjNF9ibygmZXhlYy0+Ym9baV0tPmJhc2UpKTsKPiA+ICsK PiA+ICtmYWlsX3B1dF9ibzoKPiA+ICsJLyogUmVsZWFzZSBhbnkgcmVmZXJlbmNlIHRvIGFjcXVp cmVkIG9iamVjdHMuICovCj4gPiArCWZvciAoaSA9IDA7IGkgPCBleGVjLT5ib19jb3VudCAmJiBl eGVjLT5ib1tpXTsgaSsrKQo+ID4gKwkJZHJtX2dlbV9vYmplY3RfcHV0KCZleGVjLT5ib1tpXS0+ YmFzZSk7ICAKPiAKPiBJIHRoaW5rIHRoaXMgc2hvdWxkIGJlIGRybV9nZW1fb2JqZWN0X3B1dF91 bmxvY2tlZCgpIC0tIHdlJ3JlIG5vdAo+IGhvbGRpbmcgc3RydWN0X211dGV4LCBhbmQgZG9uJ3Qg dXNlIGl0IGluIHRoaXMgZHJpdmVyLgoKUmlnaHQsIEknbGwgY2hhbmdlIHRoYXQuCgo+IFlvdSBj YW4gc2FmZWx5Cj4gY2FsbCBpdCB3aXRoIE5VTEwsIGJ1dCBJJ20gZmluZSBlaXRoZXIgd2F5LgoK QnV0IEkgY2FuJ3QgZGVyZWZlcmVuY2UgYSBOVUxMIHBvaW50ZXI6IEknbSBwYXNzaW5nICZleGVj LT5ib1tpXS0+YmFzZQp0byBkcm1fZ2VtX29iamVjdF9wdXQoKSwgYW5kIGlmIGV4ZWMtPmJvW2ld IGlzIE5VTEwgPT4gUEFOSUMhCgo+IAo+ID4gIHN0YXRpYyB2b2lkIHZjNF9wbGFuZV9kZXN0cm95 KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQo+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9k cm0vdmM0X2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS92YzRfZHJtLmgKPiA+IGluZGV4IGFmYWU4 NzAwNDk2My4uNTIyNjNiNTc1YmRjIDEwMDY0NAo+ID4gLS0tIGEvaW5jbHVkZS91YXBpL2RybS92 YzRfZHJtLmgKPiA+ICsrKyBiL2luY2x1ZGUvdWFwaS9kcm0vdmM0X2RybS5oCj4gPiBAQCAtNDEs NiArNDEsNyBAQCBleHRlcm4gIkMiIHsKPiA+ICAjZGVmaW5lIERSTV9WQzRfU0VUX1RJTElORyAg ICAgICAgICAgICAgICAgICAgICAgIDB4MDgKPiA+ICAjZGVmaW5lIERSTV9WQzRfR0VUX1RJTElO RyAgICAgICAgICAgICAgICAgICAgICAgIDB4MDkKPiA+ICAjZGVmaW5lIERSTV9WQzRfTEFCRUxf Qk8gICAgICAgICAgICAgICAgICAgICAgICAgIDB4MGEKPiA+ICsjZGVmaW5lIERSTV9WQzRfR0VN X01BRFZJU0UgICAgICAgICAgICAgICAgICAgICAgIDB4MGIKPiA+ICAKPiA+ICAjZGVmaW5lIERS TV9JT0NUTF9WQzRfU1VCTUlUX0NMICAgICAgICAgICBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNF ICsgRFJNX1ZDNF9TVUJNSVRfQ0wsIHN0cnVjdCBkcm1fdmM0X3N1Ym1pdF9jbCkKPiA+ICAjZGVm aW5lIERSTV9JT0NUTF9WQzRfV0FJVF9TRVFOTyAgICAgICAgICBEUk1fSU9XUihEUk1fQ09NTUFO RF9CQVNFICsgRFJNX1ZDNF9XQUlUX1NFUU5PLCBzdHJ1Y3QgZHJtX3ZjNF93YWl0X3NlcW5vKQo+ ID4gQEAgLTUzLDYgKzU0LDcgQEAgZXh0ZXJuICJDIiB7Cj4gPiAgI2RlZmluZSBEUk1fSU9DVExf VkM0X1NFVF9USUxJTkcgICAgICAgICAgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9W QzRfU0VUX1RJTElORywgc3RydWN0IGRybV92YzRfc2V0X3RpbGluZykKPiA+ICAjZGVmaW5lIERS TV9JT0NUTF9WQzRfR0VUX1RJTElORyAgICAgICAgICBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNF ICsgRFJNX1ZDNF9HRVRfVElMSU5HLCBzdHJ1Y3QgZHJtX3ZjNF9nZXRfdGlsaW5nKQo+ID4gICNk ZWZpbmUgRFJNX0lPQ1RMX1ZDNF9MQUJFTF9CTyAgICAgICAgICAgIERSTV9JT1dSKERSTV9DT01N QU5EX0JBU0UgKyBEUk1fVkM0X0xBQkVMX0JPLCBzdHJ1Y3QgZHJtX3ZjNF9sYWJlbF9ibykKPiA+ ICsjZGVmaW5lIERSTV9JT0NUTF9WQzRfR0VNX01BRFZJU0UgICAgICAgICBEUk1fSU9XUihEUk1f Q09NTUFORF9CQVNFICsgRFJNX1ZDNF9HRU1fTUFEVklTRSwgc3RydWN0IGRybV92YzRfZ2VtX21h ZHZpc2UpCj4gPiAgCj4gPiAgc3RydWN0IGRybV92YzRfc3VibWl0X3JjbF9zdXJmYWNlIHsKPiA+ ICAJX191MzIgaGluZGV4OyAvKiBIYW5kbGUgaW5kZXgsIG9yIH4wIGlmIG5vdCBwcmVzZW50LiAq Lwo+ID4gQEAgLTMwNSw2ICszMDcsNyBAQCBzdHJ1Y3QgZHJtX3ZjNF9nZXRfaGFuZ19zdGF0ZSB7 Cj4gPiAgI2RlZmluZSBEUk1fVkM0X1BBUkFNX1NVUFBPUlRTX0VUQzEJCTQKPiA+ICAjZGVmaW5l IERSTV9WQzRfUEFSQU1fU1VQUE9SVFNfVEhSRUFERURfRlMJNQo+ID4gICNkZWZpbmUgRFJNX1ZD NF9QQVJBTV9TVVBQT1JUU19GSVhFRF9SQ0xfT1JERVIJNgo+ID4gKyNkZWZpbmUgRFJNX1ZDNF9Q QVJBTV9TVVBQT1JUU19NQURWSVNFCQk3Cj4gPiAgCj4gPiAgc3RydWN0IGRybV92YzRfZ2V0X3Bh cmFtIHsKPiA+ICAJX191MzIgcGFyYW07Cj4gPiBAQCAtMzMzLDYgKzMzNiwyMiBAQCBzdHJ1Y3Qg ZHJtX3ZjNF9sYWJlbF9ibyB7Cj4gPiAgCV9fdTY0IG5hbWU7Cj4gPiAgfTsKPiA+ICAKPiA+ICsv Kgo+ID4gKyAqIFN0YXRlcyBwcmVmaXhlZCB3aXRoICdfXycgYXJlIGludGVybmFsIHN0YXRlcyBh bmQgY2Fubm90IGJlIHBhc3NlZCB0byB0aGUKPiA+ICsgKiBEUk1fSU9DVExfVkM0X0dFTV9NQURW SVNFIGlvY3RsLgo+ID4gKyAqLwo+ID4gKyNkZWZpbmUgVkM0X01BRFZfV0lMTE5FRUQJCQkwCj4g PiArI2RlZmluZSBWQzRfTUFEVl9ET05UTkVFRAkJCTEKPiA+ICsjZGVmaW5lIF9fVkM0X01BRFZf UFVSR0VECQkJMgo+ID4gKyNkZWZpbmUgX19WQzRfTUFEVl9OT1RTVVBQCQkJMwo+ID4gKwo+ID4g K3N0cnVjdCBkcm1fdmM0X2dlbV9tYWR2aXNlIHsKPiA+ICsJX191MzIgaGFuZGxlOwo+ID4gKwlf X3UzMiBtYWR2Owo+ID4gKwlfX3UzMiByZXRhaW5lZDsKPiA+ICsJX191MzIgcGFkOwo+ID4gK307 ICAKPiAKPiBkYW52ZXQsIHlvdSBoYWQgc2FpZCB0aGF0IHRoZSBwYWQgd2UgYWRkZWQgaGVyZSBp cyBub3QgbmVjZXNzYXJ5LAo+IGRlc3BpdGUgeW91ciBibG9nIHBvc3Qgc2F5aW5nIHRvIHBhZCB0 byA2NCBiaXRzLiAgU2hvdWxkIHdlIGhhdmUgaXQgb3IKPiBub3Q/ICBJJ20gZmluZSBlaXRoZXIg d2F5LgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJp LWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==