From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC PATCH v3 04/11] drm, cgroup: Add total GEM buffer allocation limit Date: Wed, 26 Jun 2019 18:05:53 +0200 Message-ID: <20190626160553.GR12905@phenom.ffwll.local> References: <20190626150522.11618-1-Kenny.Ho@amd.com> <20190626150522.11618-5-Kenny.Ho@amd.com> Mime-Version: 1.0 Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20190626150522.11618-5-Kenny.Ho-5C7GfCeVMHo@public.gmane.org> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" Content-Type: text/plain; charset="us-ascii" To: Kenny Ho Cc: jsparks-WVYJKLFxKCc@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, lkaplan-WVYJKLFxKCc@public.gmane.org, alexander.deucher-5C7GfCeVMHo@public.gmane.org, y2kenny-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, joseph.greathouse-5C7GfCeVMHo@public.gmane.org, tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, christian.koenig-5C7GfCeVMHo@public.gmane.org T24gV2VkLCBKdW4gMjYsIDIwMTkgYXQgMTE6MDU6MTVBTSAtMDQwMCwgS2VubnkgSG8gd3JvdGU6 Cj4gVGhlIGRybSByZXNvdXJjZSBiZWluZyBtZWFzdXJlZCBhbmQgbGltaXRlZCBoZXJlIGlzIHRo ZSBHRU0gYnVmZmVyCj4gb2JqZWN0cy4gIFVzZXIgYXBwbGljYXRpb25zIGFsbG9jYXRlIGFuZCBm cmVlIHRoZXNlIGJ1ZmZlcnMuICBJbgo+IGFkZGl0aW9uLCBhIHByb2Nlc3MgY2FuIGFsbG9jYXRl IGEgYnVmZmVyIGFuZCBzaGFyZSBpdCB3aXRoIGFub3RoZXIKPiBwcm9jZXNzLiAgVGhlIGNvbnN1 bWVyIG9mIGEgc2hhcmVkIGJ1ZmZlciBjYW4gYWxzbyBvdXRsaXZlIHRoZQo+IGFsbG9jYXRvciBv ZiB0aGUgYnVmZmVyLgo+IAo+IEZvciB0aGUgcHVycG9zZSBvZiBjZ3JvdXAgYWNjb3VudGluZyBh bmQgbGltaXRpbmcsIG93bmVyc2hpcCBvZiB0aGUKPiBidWZmZXIgaXMgZGVlbWVkIHRvIGJlIHRo ZSBjZ3JvdXAgZm9yIHdoaWNoIHRoZSBhbGxvY2F0aW5nIHByb2Nlc3MKPiBiZWxvbmdzIHRvLiAg VGhlcmUgaXMgb25lIGNncm91cCBsaW1pdCBwZXIgZHJtIGRldmljZS4KPiAKPiBJbiBvcmRlciB0 byBwcmV2ZW50IHRoZSBidWZmZXIgb3V0bGl2aW5nIHRoZSBjZ3JvdXAgdGhhdCBvd25zIGl0LCBh Cj4gcHJvY2VzcyBpcyBwcmV2ZW50ZWQgZnJvbSBpbXBvcnRpbmcgYnVmZmVycyB0aGF0IGFyZSBu b3Qgb3duIGJ5IHRoZQo+IHByb2Nlc3MnIGNncm91cCBvciB0aGUgYW5jZXN0b3JzIG9mIHRoZSBw cm9jZXNzJyBjZ3JvdXAuICBJbiBvdGhlcgo+IHdvcmRzLCBpbiBvcmRlciBmb3IgYSBidWZmZXIg dG8gYmUgc2hhcmVkIGJldHdlZW4gdHdvIGNncm91cHMsIHRoZQo+IGJ1ZmZlciBtdXN0IGJlIGNy ZWF0ZWQgYnkgdGhlIGNvbW1vbiBhbmNlc3RvcnMgb2YgdGhlIGNncm91cHMuCj4gCj4gZHJtLmJ1 ZmZlci5zdGF0cwo+ICAgICAgICAgQSByZWFkLW9ubHkgZmxhdC1rZXllZCBmaWxlIHdoaWNoIGV4 aXN0cyBvbiBhbGwgY2dyb3Vwcy4gIEVhY2gKPiAgICAgICAgIGVudHJ5IGlzIGtleWVkIGJ5IHRo ZSBkcm0gZGV2aWNlJ3MgbWFqb3I6bWlub3IuCj4gCj4gICAgICAgICBUb3RhbCBHRU0gYnVmZmVy IGFsbG9jYXRpb24gaW4gYnl0ZXMuCj4gCj4gZHJtLmJ1ZmZlci5kZWZhdWx0Cj4gICAgICAgICBB IHJlYWQtb25seSBmbGF0LWtleWVkIGZpbGUgd2hpY2ggZXhpc3RzIG9uIHRoZSByb290IGNncm91 cC4KPiAgICAgICAgIEVhY2ggZW50cnkgaXMga2V5ZWQgYnkgdGhlIGRybSBkZXZpY2UncyBtYWpv cjptaW5vci4KPiAKPiAgICAgICAgIERlZmF1bHQgbGltaXRzIG9uIHRoZSB0b3RhbCBHRU0gYnVm ZmVyIGFsbG9jYXRpb24gaW4gYnl0ZXMuCgpEb24ndCB3ZSBuZWVkIGEgIjAgbWVhbnMgbm8gbGlt aXQiIHNlbWFudGljcyBoZXJlPwoKPiBkcm0uYnVmZmVyLm1heAo+ICAgICAgICAgQSByZWFkLXdy aXRlIGZsYXQta2V5ZWQgZmlsZSB3aGljaCBleGlzdHMgb24gYWxsIGNncm91cHMuICBFYWNoCj4g ICAgICAgICBlbnRyeSBpcyBrZXllZCBieSB0aGUgZHJtIGRldmljZSdzIG1ham9yOm1pbm9yLgo+ IAo+ICAgICAgICAgUGVyIGRldmljZSBsaW1pdHMgb24gdGhlIHRvdGFsIEdFTSBidWZmZXIgYWxs b2NhdGlvbiBpbiBieXRlLgo+ICAgICAgICAgVGhpcyBpcyBhIGhhcmQgbGltaXQuICBBdHRlbXB0 cyBpbiBhbGxvY2F0aW5nIGJleW9uZCB0aGUgY2dyb3VwCj4gICAgICAgICBsaW1pdCB3aWxsIHJl c3VsdCBpbiBFTk9NRU0uICBTaG9ydGhhbmQgdW5kZXJzdG9vZCBieSBtZW1wYXJzZQo+ICAgICAg ICAgKHN1Y2ggYXMgaywgbSwgZykgY2FuIGJlIHVzZWQuCj4gCj4gICAgICAgICBTZXQgYWxsb2Nh dGlvbiBsaW1pdCBmb3IgL2Rldi9kcmkvY2FyZDEgdG8gMUdCCj4gICAgICAgICBlY2hvICIyMjY6 MSAxZyIgPiBkcm0uYnVmZmVyLnRvdGFsLm1heAo+IAo+ICAgICAgICAgU2V0IGFsbG9jYXRpb24g bGltaXQgZm9yIC9kZXYvZHJpL2NhcmQwIHRvIDUxMk1CCj4gICAgICAgICBlY2hvICIyMjY6MCA1 MTJtIiA+IGRybS5idWZmZXIudG90YWwubWF4CgpJIHRoaW5rIHdlIG5lZWQgYSBuZXcgZHJtLWNn cm91cC5yc3Qgd2hpY2ggY29udGFpbnMgYWxsIHRoaXMKZG9jdW1lbnRhdGlvbi4KCldpdGggbXVs dGlwbGUgR1BVcywgZG8gd2UgbmVlZCBhbiBvdmVyYWxsIEdFTSBibyBsaW1pdCwgYWNyb3NzIGFs bCBncHVzPwpGb3Igb3RoZXIgc3R1ZmYgbGF0ZXIgb24gbGlrZSB2cmFtL3R0Ly4uLiBhbmQgYWxs IHRoYXQgaXQgbmVlZHMgdG8gYmUKcGVyLWRldmljZSwgYnV0IEkgdGhpbmsgb25lIG92ZXJhbGwg bGltaXQgY291bGQgYmUgdXNlZnVsLgoKPiAKPiBDaGFuZ2UtSWQ6IEk0YzI0OWQwNmQ0NWVjNzA5 ZDY0ODFkNGNiZTg3YzUxNjg1NDVjNWQwCj4gU2lnbmVkLW9mZi1ieTogS2VubnkgSG8gPEtlbm55 LkhvQGFtZC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9v YmplY3QuYyB8ICAgNCArCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtLmMgICAgICAgICAgICAg ICAgICB8ICAgOCArCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbWUuYyAgICAgICAgICAgICAg ICB8ICAgOSArCj4gIGluY2x1ZGUvZHJtL2RybV9jZ3JvdXAuaCAgICAgICAgICAgICAgICAgICB8 ICAzNCArKy0KPiAgaW5jbHVkZS9kcm0vZHJtX2dlbS5oICAgICAgICAgICAgICAgICAgICAgIHwg IDExICsKPiAgaW5jbHVkZS9saW51eC9jZ3JvdXBfZHJtLmggICAgICAgICAgICAgICAgIHwgICAy ICsKPiAga2VybmVsL2Nncm91cC9kcm0uYyAgICAgICAgICAgICAgICAgICAgICAgIHwgMzIxICsr KysrKysrKysrKysrKysrKysrKwo+ICA3IGZpbGVzIGNoYW5nZWQsIDM4NyBpbnNlcnRpb25zKCsp LCAyIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfb2JqZWN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf b2JqZWN0LmMKPiBpbmRleCA5M2IyYzVhNDhhNzEuLmI0YzA3OGI3YWQ2MyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMKPiBAQCAtMzQsNiArMzQsNyBA QAo+ICAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPiAgI2luY2x1ZGUgPGRybS9hbWRncHVfZHJtLmg+ Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2NhY2hlLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2Nncm91 cC5oPgo+ICAjaW5jbHVkZSAiYW1kZ3B1LmgiCj4gICNpbmNsdWRlICJhbWRncHVfdHJhY2UuaCIK PiAgI2luY2x1ZGUgImFtZGdwdV9hbWRrZmQuaCIKPiBAQCAtNDQ2LDYgKzQ0Nyw5IEBAIHN0YXRp YyBpbnQgYW1kZ3B1X2JvX2RvX2NyZWF0ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPiAg CWlmICghYW1kZ3B1X2JvX3ZhbGlkYXRlX3NpemUoYWRldiwgc2l6ZSwgYnAtPmRvbWFpbikpCj4g IAkJcmV0dXJuIC1FTk9NRU07Cj4gIAo+ICsJaWYgKCFkcm1jZ3JwX2JvX2Nhbl9hbGxvY2F0ZShj dXJyZW50LCBhZGV2LT5kZGV2LCBzaXplKSkKPiArCQlyZXR1cm4gLUVOT01FTTsKClNvIHdoYXQg aGFwcGVucyB3aGVuIHlvdSBzdGFydCBhIGxvdCBvZiB0aHJlYWRzIGFsbCBhdCB0aGUgc2FtZSB0 aW1lLAphbGxvY2F0aW5nIGdlbSBibz8gQWxzbyB3b3VsZCBiZSBuaWNlIGlmIHdlIGNvdWxkIHJv bGwgb3V0IGF0IGxlYXN0IHRoZQphY2NvdW50aW5nIHBhcnQgb2YgdGhpcyBjZ3JvdXAgdG8gYWxs IEdFTSBkcml2ZXJzLgoKPiArCj4gIAkqYm9fcHRyID0gTlVMTDsKPiAgCj4gIAlhY2Nfc2l6ZSA9 IHR0bV9ib19kbWFfYWNjX3NpemUoJmFkZXYtPm1tYW4uYmRldiwgc2l6ZSwKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2RybV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtLmMK PiBpbmRleCA2YTgwZGIwNzdkYzYuLmUyMGMxMDM0YmYyYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vZHJtX2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9nZW0uYwo+IEBA IC0zNywxMCArMzcsMTIgQEAKPiAgI2luY2x1ZGUgPGxpbnV4L3NobWVtX2ZzLmg+Cj4gICNpbmNs dWRlIDxsaW51eC9kbWEtYnVmLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9tZW1fZW5jcnlwdC5oPgo+ ICsjaW5jbHVkZSA8bGludXgvY2dyb3VwX2RybS5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybVAuaD4K PiAgI2luY2x1ZGUgPGRybS9kcm1fdm1hX21hbmFnZXIuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1f Z2VtLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX3ByaW50Lmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJt X2Nncm91cC5oPgo+ICAjaW5jbHVkZSAiZHJtX2ludGVybmFsLmgiCj4gIAo+ICAvKiogQGZpbGUg ZHJtX2dlbS5jCj4gQEAgLTE1NCw2ICsxNTYsOSBAQCB2b2lkIGRybV9nZW1fcHJpdmF0ZV9vYmpl Y3RfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJb2JqLT5oYW5kbGVfY291bnQgPSAw Owo+ICAJb2JqLT5zaXplID0gc2l6ZTsKPiAgCWRybV92bWFfbm9kZV9yZXNldCgmb2JqLT52bWFf bm9kZSk7Cj4gKwo+ICsJb2JqLT5kcm1jZ3JwID0gZ2V0X2RybWNncnAoY3VycmVudCk7Cj4gKwlk cm1jZ3JwX2NoZ19ib19hbGxvYyhvYmotPmRybWNncnAsIGRldiwgc2l6ZSk7Cj4gIH0KPiAgRVhQ T1JUX1NZTUJPTChkcm1fZ2VtX3ByaXZhdGVfb2JqZWN0X2luaXQpOwo+ICAKPiBAQCAtODA0LDYg KzgwOSw5IEBAIGRybV9nZW1fb2JqZWN0X3JlbGVhc2Uoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpv YmopCj4gIAlpZiAob2JqLT5maWxwKQo+ICAJCWZwdXQob2JqLT5maWxwKTsKPiAgCj4gKwlkcm1j Z3JwX3VuY2hnX2JvX2FsbG9jKG9iai0+ZHJtY2dycCwgb2JqLT5kZXYsIG9iai0+c2l6ZSk7Cj4g KwlwdXRfZHJtY2dycChvYmotPmRybWNncnApOwo+ICsKPiAgCWRybV9nZW1fZnJlZV9tbWFwX29m ZnNldChvYmopOwo+ICB9Cj4gIEVYUE9SVF9TWU1CT0woZHJtX2dlbV9vYmplY3RfcmVsZWFzZSk7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbWUuYyBiL2RyaXZlcnMvZ3B1 L2RybS9kcm1fcHJpbWUuYwo+IGluZGV4IDIzMWUzZjZkNWY0MS4uZWViNjEyMTE2ODEwIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbWUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9kcm1fcHJpbWUuYwo+IEBAIC0zMiw2ICszMiw3IEBACj4gICNpbmNsdWRlIDxkcm0vZHJt X3ByaW1lLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2dlbS5oPgo+ICAjaW5jbHVkZSA8ZHJtL2Ry bVAuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fY2dyb3VwLmg+Cj4gIAo+ICAjaW5jbHVkZSAiZHJt X2ludGVybmFsLmgiCj4gIAo+IEBAIC03OTQsNiArNzk1LDcgQEAgaW50IGRybV9nZW1fcHJpbWVf ZmRfdG9faGFuZGxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIHsKPiAgCXN0cnVjdCBkbWFf YnVmICpkbWFfYnVmOwo+ICAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmo7Cj4gKwlzdHJ1Y3Qg ZHJtY2dycCAqZHJtY2dycCA9IGRybWNncnBfZnJvbShjdXJyZW50KTsKPiAgCWludCByZXQ7Cj4g IAo+ICAJZG1hX2J1ZiA9IGRtYV9idWZfZ2V0KHByaW1lX2ZkKTsKPiBAQCAtODE4LDYgKzgyMCwx MyBAQCBpbnQgZHJtX2dlbV9wcmltZV9mZF90b19oYW5kbGUoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKPiAgCQlnb3RvIG91dF91bmxvY2s7Cj4gIAl9Cj4gIAo+ICsJLyogb25seSBhbGxvdyBibyBm cm9tIHRoZSBzYW1lIGNncm91cCBvciBpdHMgYW5jZXN0b3IgdG8gYmUgaW1wb3J0ZWQgKi8KPiAr CWlmIChkcm1jZ3JwICE9IE5VTEwgJiYKClF1aXRlIGEgc2VyaW91cyBsaW1pdGF0aW9uIGhlcmUg Li4uCgo+ICsJCQkhZHJtY2dycF9pc19zZWxmX29yX2FuY2VzdG9yKGRybWNncnAsIG9iai0+ZHJt Y2dycCkpIHsKCkFsc28gd2hhdCBoYXBwZW5zIGlmIHlvdSBhY3R1YWxseSBzaGFyZSBhY3Jvc3Mg ZGV2aWNlcz8gVGhlbiBpbXBvcnRpbmcgaW4KdGhlIDJuZCBncm91cCBpcyBzdWRkZW5seSBwb3Nz aWJsZSwgYW5kIEkgdGhpbmsgd2lsbCBiZSBkb3VibGUtY291bnRlZC4KCldoYXQncyB0aGUgdW5k ZXJseWluZyB0ZWNobmljYWwgcmVhc29uIGZvciBub3QgYWxsb3dpbmcgc2hhcmluZyBhY3Jvc3MK Y2dyb3Vwcz8KCj4gKwkJcmV0ID0gLUVBQ0NFUzsKPiArCQlnb3RvIG91dF91bmxvY2s7Cj4gKwl9 Cj4gKwo+ICAJaWYgKG9iai0+ZG1hX2J1Zikgewo+ICAJCVdBUk5fT04ob2JqLT5kbWFfYnVmICE9 IGRtYV9idWYpOwo+ICAJfSBlbHNlIHsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2Nn cm91cC5oIGIvaW5jbHVkZS9kcm0vZHJtX2Nncm91cC5oCj4gaW5kZXggZGRiOWVhYjY0MzYwLi44 NzExYjdjNWY3YmYgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2Nncm91cC5oCj4gKysr IGIvaW5jbHVkZS9kcm0vZHJtX2Nncm91cC5oCj4gQEAgLTQsMTIgKzQsMjAgQEAKPiAgI2lmbmRl ZiBfX0RSTV9DR1JPVVBfSF9fCj4gICNkZWZpbmUgX19EUk1fQ0dST1VQX0hfXwo+ICAKPiArI2lu Y2x1ZGUgPGxpbnV4L2Nncm91cF9kcm0uaD4KPiArCj4gICNpZmRlZiBDT05GSUdfQ0dST1VQX0RS TQo+ICAKPiAgaW50IGRybWNncnBfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXZpY2UpOwo+IC0KPiAgaW50IGRybWNncnBfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IGRybV9k ZXZpY2UgKmRldmljZSk7Cj4gLQo+ICtib29sIGRybWNncnBfaXNfc2VsZl9vcl9hbmNlc3Rvcihz dHJ1Y3QgZHJtY2dycCAqc2VsZiwKPiArCQlzdHJ1Y3QgZHJtY2dycCAqcmVsYXRpdmUpOwo+ICt2 b2lkIGRybWNncnBfY2hnX2JvX2FsbG9jKHN0cnVjdCBkcm1jZ3JwICpkcm1jZ3JwLCBzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAo+ICsJCXNpemVfdCBzaXplKTsKPiArdm9pZCBkcm1jZ3JwX3VuY2hn X2JvX2FsbG9jKHN0cnVjdCBkcm1jZ3JwICpkcm1jZ3JwLCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+ICsJCXNpemVfdCBzaXplKTsKPiArYm9vbCBkcm1jZ3JwX2JvX2Nhbl9hbGxvY2F0ZShzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gKwkJc2l6ZV90 IHNpemUpOwo+ICAjZWxzZQo+ICBzdGF0aWMgaW5saW5lIGludCBkcm1jZ3JwX3JlZ2lzdGVyX2Rl dmljZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2aWNlKQo+ICB7Cj4gQEAgLTIwLDUgKzI4LDI3IEBA IHN0YXRpYyBpbmxpbmUgaW50IGRybWNncnBfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IGRybV9k ZXZpY2UgKmRldmljZSkKPiAgewo+ICAJcmV0dXJuIDA7Cj4gIH0KPiArCj4gK3N0YXRpYyBpbmxp bmUgYm9vbCBkcm1jZ3JwX2lzX3NlbGZfb3JfYW5jZXN0b3Ioc3RydWN0IGRybWNncnAgKnNlbGYs Cj4gKwkJc3RydWN0IGRybWNncnAgKnJlbGF0aXZlKQo+ICt7Cj4gKwlyZXR1cm4gZmFsc2U7Cj4g K30KPiArCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBkcm1jZ3JwX2NoZ19ib19hbGxvYyhzdHJ1Y3Qg ZHJtY2dycCAqZHJtY2dycCwKPiArCQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAlzaXplX3Qgc2l6 ZSkKPiArewo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHZvaWQgZHJtY2dycF91bmNoZ19ib19h bGxvYyhzdHJ1Y3QgZHJtY2dycCAqZHJtY2dycCwKPiArCQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAlzaXplX3Qgc2l6ZSkKPiArewo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGJvb2wgZHJtY2dy cF9ib19jYW5fYWxsb2NhdGUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLAo+ICsJCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCXNpemVfdCBzaXplKQo+ICt7Cj4gKwlyZXR1cm4gdHJ1ZTsKPiArfQo+ ICAjZW5kaWYgLyogQ09ORklHX0NHUk9VUF9EUk0gKi8KPiAgI2VuZGlmIC8qIF9fRFJNX0NHUk9V UF9IX18gKi8KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2dlbS5oIGIvaW5jbHVkZS9k cm0vZHJtX2dlbS5oCj4gaW5kZXggYzk1NzI3NDI1Mjg0Li4wOWQxYzY5YTNmMGMgMTAwNjQ0Cj4g LS0tIGEvaW5jbHVkZS9kcm0vZHJtX2dlbS5oCj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2dlbS5o Cj4gQEAgLTI3Miw2ICsyNzIsMTcgQEAgc3RydWN0IGRybV9nZW1fb2JqZWN0IHsKPiAgCSAqCj4g IAkgKi8KPiAgCWNvbnN0IHN0cnVjdCBkcm1fZ2VtX29iamVjdF9mdW5jcyAqZnVuY3M7Cj4gKwo+ ICsJLyoqCj4gKwkgKiBAZHJtY2dycDoKPiArCSAqCj4gKwkgKiBEUk0gY2dyb3VwIHRoaXMgR0VN IG9iamVjdCBiZWxvbmdzIHRvLgo+ICsJICoKPiArCSAqIFRoaXMgaXMgdXNlZCB0byB0cmFjayBh bmQgbGltaXQgdGhlIGFtb3VudCBvZiBHRU0gb2JqZWN0cyBhIHVzZXIKPiArCSAqIGNhbiBhbGxv Y2F0ZS4gIFNpbmNlIEdFTSBvYmplY3RzIGNhbiBiZSBzaGFyZWQsIHRoaXMgaXMgYWxzbyB1c2Vk Cj4gKwkgKiB0byBlbnN1cmUgR0VNIG9iamVjdHMgYXJlIG9ubHkgc2hhcmVkIHdpdGhpbiB0aGUg c2FtZSBjZ3JvdXAuCj4gKwkgKi8KPiArCXN0cnVjdCBkcm1jZ3JwICpkcm1jZ3JwOwo+ICB9Owo+ ICAKPiAgLyoqCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvY2dyb3VwX2RybS5oIGIvaW5j bHVkZS9saW51eC9jZ3JvdXBfZHJtLmgKPiBpbmRleCAyNzQ5N2Y3ODZjOTMuLmVmYTAxOTY2NmYx YyAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2xpbnV4L2Nncm91cF9kcm0uaAo+ICsrKyBiL2luY2x1 ZGUvbGludXgvY2dyb3VwX2RybS5oCj4gQEAgLTE1LDYgKzE1LDggQEAKPiAgCj4gIHN0cnVjdCBk cm1jZ3JwX2RldmljZV9yZXNvdXJjZSB7Cj4gIAkvKiBmb3IgcGVyIGRldmljZSBzdGF0cyAqLwo+ ICsJczY0CQkJYm9fc3RhdHNfdG90YWxfYWxsb2NhdGVkOwo+ICsJczY0CQkJYm9fbGltaXRzX3Rv dGFsX2FsbG9jYXRlZDsKPiAgfTsKPiAgCj4gIHN0cnVjdCBkcm1jZ3JwIHsKPiBkaWZmIC0tZ2l0 IGEva2VybmVsL2Nncm91cC9kcm0uYyBiL2tlcm5lbC9jZ3JvdXAvZHJtLmMKPiBpbmRleCA3ZGE2 ZTBkOTM5OTEuLmNmYzFmZTc0ZGNhMyAxMDA2NDQKPiAtLS0gYS9rZXJuZWwvY2dyb3VwL2RybS5j Cj4gKysrIGIva2VybmVsL2Nncm91cC9kcm0uYwo+IEBAIC05LDYgKzksNyBAQAo+ICAjaW5jbHVk ZSA8bGludXgvY2dyb3VwX2RybS5oPgo+ICAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4gICNp bmNsdWRlIDxkcm0vZHJtX2RldmljZS5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9pb2N0bC5oPgo+ ICAjaW5jbHVkZSA8ZHJtL2RybV9jZ3JvdXAuaD4KPiAgCj4gIHN0YXRpYyBERUZJTkVfTVVURVgo ZHJtY2dycF9tdXRleCk7Cj4gQEAgLTE2LDYgKzE3LDI2IEBAIHN0YXRpYyBERUZJTkVfTVVURVgo ZHJtY2dycF9tdXRleCk7Cj4gIHN0cnVjdCBkcm1jZ3JwX2RldmljZSB7Cj4gIAlzdHJ1Y3QgZHJt X2RldmljZQkqZGV2Owo+ICAJc3RydWN0IG11dGV4CQltdXRleDsKPiArCj4gKwlzNjQJCQlib19s aW1pdHNfdG90YWxfYWxsb2NhdGVkX2RlZmF1bHQ7Cj4gK307Cj4gKwo+ICsjZGVmaW5lIERSTUNH X0NURl9QUklWX1NJWkUgMwo+ICsjZGVmaW5lIERSTUNHX0NURl9QUklWX01BU0sgR0VOTUFTSygo RFJNQ0dfQ1RGX1BSSVZfU0laRSAtIDEpLCAwKQo+ICsjZGVmaW5lIERSTUNHX0NURl9QUklWKHJl c190eXBlLCBmX3R5cGUpICAoKHJlc190eXBlKSA8PFwKPiArCQlEUk1DR19DVEZfUFJJVl9TSVpF IHwgKGZfdHlwZSkpCj4gKyNkZWZpbmUgRFJNQ0dfQ1RGX1BSSVYyUkVTVFlQRShwcml2KSAoKHBy aXYpID4+IERSTUNHX0NURl9QUklWX1NJWkUpCj4gKyNkZWZpbmUgRFJNQ0dfQ1RGX1BSSVYyRlRZ UEUocHJpdikgKChwcml2KSAmIERSTUNHX0NURl9QUklWX01BU0spCj4gKwo+ICsKPiArZW51bSBk cm1jZ3JwX3Jlc190eXBlIHsKPiArCURSTUNHUlBfVFlQRV9CT19UT1RBTCwKPiArfTsKPiArCj4g K2VudW0gZHJtY2dycF9maWxlX3R5cGUgewo+ICsJRFJNQ0dSUF9GVFlQRV9TVEFUUywKPiArCURS TUNHUlBfRlRZUEVfTElNSVQsCj4gKwlEUk1DR1JQX0ZUWVBFX0RFRkFVTFQsCj4gIH07Cj4gIAo+ ICAvKiBpbmRleGVkIGJ5IGRybV9taW5vciBmb3IgYWNjZXNzIHNwZWVkICovCj4gQEAgLTU0LDYg Kzc1LDEwIEBAIHN0YXRpYyBpbmxpbmUgaW50IGluaXRfZHJtY2dycF9zaW5nbGUoc3RydWN0IGRy bWNncnAgKmRybWNncnAsIGludCBtaW5vcikKPiAgCX0KPiAgCj4gIAkvKiBzZXQgZGVmYXVsdHMg aGVyZSAqLwo+ICsJaWYgKGtub3duX2RybWNncnBfZGV2c1ttaW5vcl0gIT0gTlVMTCkgewo+ICsJ CWRkci0+Ym9fbGltaXRzX3RvdGFsX2FsbG9jYXRlZCA9Cj4gKwkJICBrbm93bl9kcm1jZ3JwX2Rl dnNbbWlub3JdLT5ib19saW1pdHNfdG90YWxfYWxsb2NhdGVkX2RlZmF1bHQ7Cj4gKwl9Cj4gIAo+ ICAJcmV0dXJuIDA7Cj4gIH0KPiBAQCAtMTAwLDcgKzEyNSwyMjUgQEAgZHJtY2dycF9jc3NfYWxs b2Moc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGUgKnBhcmVudF9jc3MpCj4gIAlyZXR1cm4gJmRy bWNncnAtPmNzczsKPiAgfQo+ICAKPiArc3RhdGljIGlubGluZSB2b2lkIGRybWNncnBfcHJpbnRf c3RhdHMoc3RydWN0IGRybWNncnBfZGV2aWNlX3Jlc291cmNlICpkZHIsCj4gKwkJc3RydWN0IHNl cV9maWxlICpzZiwgZW51bSBkcm1jZ3JwX3Jlc190eXBlIHR5cGUpCj4gK3sKPiArCWlmIChkZHIg PT0gTlVMTCkgewo+ICsJCXNlcV9wdXRzKHNmLCAiXG4iKTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4g Kwo+ICsJc3dpdGNoICh0eXBlKSB7Cj4gKwljYXNlIERSTUNHUlBfVFlQRV9CT19UT1RBTDoKPiAr CQlzZXFfcHJpbnRmKHNmLCAiJWxsZFxuIiwgZGRyLT5ib19zdGF0c190b3RhbF9hbGxvY2F0ZWQp Owo+ICsJCWJyZWFrOwo+ICsJZGVmYXVsdDoKPiArCQlzZXFfcHV0cyhzZiwgIlxuIik7Cj4gKwkJ YnJlYWs7Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBkcm1jZ3JwX3ByaW50 X2xpbWl0cyhzdHJ1Y3QgZHJtY2dycF9kZXZpY2VfcmVzb3VyY2UgKmRkciwKPiArCQlzdHJ1Y3Qg c2VxX2ZpbGUgKnNmLCBlbnVtIGRybWNncnBfcmVzX3R5cGUgdHlwZSkKPiArewo+ICsJaWYgKGRk ciA9PSBOVUxMKSB7Cj4gKwkJc2VxX3B1dHMoc2YsICJcbiIpOwo+ICsJCXJldHVybjsKPiArCX0K PiArCj4gKwlzd2l0Y2ggKHR5cGUpIHsKPiArCWNhc2UgRFJNQ0dSUF9UWVBFX0JPX1RPVEFMOgo+ ICsJCXNlcV9wcmludGYoc2YsICIlbGxkXG4iLCBkZHItPmJvX2xpbWl0c190b3RhbF9hbGxvY2F0 ZWQpOwo+ICsJCWJyZWFrOwo+ICsJZGVmYXVsdDoKPiArCQlzZXFfcHV0cyhzZiwgIlxuIik7Cj4g KwkJYnJlYWs7Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBkcm1jZ3JwX3By aW50X2RlZmF1bHQoc3RydWN0IGRybWNncnBfZGV2aWNlICpkZGV2LAo+ICsJCXN0cnVjdCBzZXFf ZmlsZSAqc2YsIGVudW0gZHJtY2dycF9yZXNfdHlwZSB0eXBlKQo+ICt7Cj4gKwlpZiAoZGRldiA9 PSBOVUxMKSB7Cj4gKwkJc2VxX3B1dHMoc2YsICJcbiIpOwo+ICsJCXJldHVybjsKPiArCX0KPiAr Cj4gKwlzd2l0Y2ggKHR5cGUpIHsKPiArCWNhc2UgRFJNQ0dSUF9UWVBFX0JPX1RPVEFMOgo+ICsJ CXNlcV9wcmludGYoc2YsICIlbGxkXG4iLAo+ICsJCQkJZGRldi0+Ym9fbGltaXRzX3RvdGFsX2Fs bG9jYXRlZF9kZWZhdWx0KTsKPiArCQlicmVhazsKPiArCWRlZmF1bHQ6Cj4gKwkJc2VxX3B1dHMo c2YsICJcbiIpOwo+ICsJCWJyZWFrOwo+ICsJfQo+ICt9Cj4gKwo+ICtpbnQgZHJtY2dycF9ib19z aG93KHN0cnVjdCBzZXFfZmlsZSAqc2YsIHZvaWQgKnYpCj4gK3sKPiArCXN0cnVjdCBkcm1jZ3Jw ICpkcm1jZ3JwID0gY3NzX2RybWNncnAoc2VxX2NzcyhzZikpOwo+ICsJc3RydWN0IGRybWNncnBf ZGV2aWNlX3Jlc291cmNlICpkZHIgPSBOVUxMOwo+ICsJZW51bSBkcm1jZ3JwX2ZpbGVfdHlwZSBm X3R5cGUgPQo+ICsJCURSTUNHX0NURl9QUklWMkZUWVBFKHNlcV9jZnQoc2YpLT5wcml2YXRlKTsK PiArCWVudW0gZHJtY2dycF9yZXNfdHlwZSB0eXBlID0KPiArCQlEUk1DR19DVEZfUFJJVjJSRVNU WVBFKHNlcV9jZnQoc2YpLT5wcml2YXRlKTsKPiArCXN0cnVjdCBkcm1jZ3JwX2RldmljZSAqZGRl djsKPiArCWludCBpOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPD0gbWF4X21pbm9yOyBpKyspIHsK PiArCQlkZHIgPSBkcm1jZ3JwLT5kZXZfcmVzb3VyY2VzW2ldOwo+ICsJCWRkZXYgPSBrbm93bl9k cm1jZ3JwX2RldnNbaV07Cj4gKwo+ICsJCXNlcV9wcmludGYoc2YsICIlZDolZCAiLCBEUk1fTUFK T1IsIGkpOwo+ICsKPiArCQlzd2l0Y2ggKGZfdHlwZSkgewo+ICsJCWNhc2UgRFJNQ0dSUF9GVFlQ RV9TVEFUUzoKPiArCQkJZHJtY2dycF9wcmludF9zdGF0cyhkZHIsIHNmLCB0eXBlKTsKPiArCQkJ YnJlYWs7Cj4gKwkJY2FzZSBEUk1DR1JQX0ZUWVBFX0xJTUlUOgo+ICsJCQlkcm1jZ3JwX3ByaW50 X2xpbWl0cyhkZHIsIHNmLCB0eXBlKTsKPiArCQkJYnJlYWs7Cj4gKwkJY2FzZSBEUk1DR1JQX0ZU WVBFX0RFRkFVTFQ6Cj4gKwkJCWRybWNncnBfcHJpbnRfZGVmYXVsdChkZGV2LCBzZiwgdHlwZSk7 Cj4gKwkJCWJyZWFrOwo+ICsJCWRlZmF1bHQ6Cj4gKwkJCXNlcV9wdXRzKHNmLCAiXG4iKTsKPiAr CQkJYnJlYWs7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgaW5saW5lIHZvaWQgZHJtY2dycF9wcl9jZnRfZXJyKGNvbnN0IHN0cnVjdCBkcm1jZ3JwICpk cm1jZ3JwLAo+ICsJCWNvbnN0IGNoYXIgKmNmdF9uYW1lLCBpbnQgbWlub3IpCj4gK3sKPiArCXBy X2VycigiZHJtY2dycDogZXJyb3IgcGFyc2luZyAlcywgbWlub3IgJWQgIiwKPiArCQkJY2Z0X25h bWUsIG1pbm9yKTsKPiArCXByX2NvbnRfY2dyb3VwX25hbWUoZHJtY2dycC0+Y3NzLmNncm91cCk7 Cj4gKwlwcl9jb250KCJcbiIpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGludCBkcm1jZ3Jw X3Byb2Nlc3NfbGltaXRfdmFsKGNoYXIgKnN2YWwsIGJvb2wgaXNfbWVtLAo+ICsJCQlzNjQgZGVm X3ZhbCwgczY0IG1heF92YWwsIHM2NCAqcmV0X3ZhbCkKPiArewo+ICsJaW50IHJjID0gc3RyY21w KCJtYXgiLCBzdmFsKTsKPiArCj4gKwo+ICsJaWYgKCFyYykKPiArCQkqcmV0X3ZhbCA9IG1heF92 YWw7Cj4gKwllbHNlIHsKPiArCQlyYyA9IHN0cmNtcCgiZGVmYXVsdCIsIHN2YWwpOwo+ICsKPiAr CQlpZiAoIXJjKQo+ICsJCQkqcmV0X3ZhbCA9IGRlZl92YWw7Cj4gKwl9Cj4gKwo+ICsJaWYgKHJj KSB7Cj4gKwkJaWYgKGlzX21lbSkgewo+ICsJCQkqcmV0X3ZhbCA9IG1lbXBhcnNlKHN2YWwsIE5V TEwpOwo+ICsJCQlyYyA9IDA7Cj4gKwkJfSBlbHNlIHsKPiArCQkJcmMgPSBrc3RydG9sbChzdmFs LCAwLCByZXRfdmFsKTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJaWYgKCpyZXRfdmFsID4gbWF4X3Zh bCkKPiArCQkqcmV0X3ZhbCA9IG1heF92YWw7Cj4gKwo+ICsJcmV0dXJuIHJjOwo+ICt9Cj4gKwo+ ICtzc2l6ZV90IGRybWNncnBfYm9fbGltaXRfd3JpdGUoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUg Km9mLCBjaGFyICpidWYsCj4gKwkJc2l6ZV90IG5ieXRlcywgbG9mZl90IG9mZikKPiArewo+ICsJ c3RydWN0IGRybWNncnAgKmRybWNncnAgPSBjc3NfZHJtY2dycChvZl9jc3Mob2YpKTsKPiArCXN0 cnVjdCBkcm1jZ3JwICpwYXJlbnQgPSBwYXJlbnRfZHJtY2dycChkcm1jZ3JwKTsKPiArCWVudW0g ZHJtY2dycF9yZXNfdHlwZSB0eXBlID0KPiArCQlEUk1DR19DVEZfUFJJVjJSRVNUWVBFKG9mX2Nm dChvZiktPnByaXZhdGUpOwo+ICsJY2hhciAqY2Z0X25hbWUgPSBvZl9jZnQob2YpLT5uYW1lOwo+ ICsJY2hhciAqbGltaXRzID0gc3Ryc3RyaXAoYnVmKTsKPiArCXN0cnVjdCBkcm1jZ3JwX2Rldmlj ZSAqZGRldjsKPiArCXN0cnVjdCBkcm1jZ3JwX2RldmljZV9yZXNvdXJjZSAqZGRyOwo+ICsJY2hh ciAqbGluZTsKPiArCWNoYXIgc2F0dHJbMjU2XTsKPiArCXM2NCB2YWw7Cj4gKwlzNjQgcF9tYXg7 Cj4gKwlpbnQgcmM7Cj4gKwlpbnQgbWlub3I7Cj4gKwo+ICsJd2hpbGUgKGxpbWl0cyAhPSBOVUxM KSB7Cj4gKwkJbGluZSA9ICBzdHJzZXAoJmxpbWl0cywgIlxuIik7Cj4gKwo+ICsJCWlmIChzc2Nh bmYobGluZSwKPiArCQkJX19zdHJpbmdpZnkoRFJNX01BSk9SKSI6JXUgJTI1NVteXHRcbl0iLAo+ ICsJCQkJCQkJJm1pbm9yLCBzYXR0cikgIT0gMikgewo+ICsJCQlwcl9lcnIoImRybWNncnA6IGVy cm9yIHBhcnNpbmcgJXMgIiwgY2Z0X25hbWUpOwo+ICsJCQlwcl9jb250X2Nncm91cF9uYW1lKGRy bWNncnAtPmNzcy5jZ3JvdXApOwo+ICsJCQlwcl9jb250KCJcbiIpOwo+ICsKPiArCQkJY29udGlu dWU7Cj4gKwkJfQo+ICsKPiArCQlpZiAobWlub3IgPCAwIHx8IG1pbm9yID4gbWF4X21pbm9yKSB7 Cj4gKwkJCXByX2VycigiZHJtY2dycDogaW52YWxpZCBtaW5vciAlZCBmb3IgJXMgIiwKPiArCQkJ CQltaW5vciwgY2Z0X25hbWUpOwo+ICsJCQlwcl9jb250X2Nncm91cF9uYW1lKGRybWNncnAtPmNz cy5jZ3JvdXApOwo+ICsJCQlwcl9jb250KCJcbiIpOwo+ICsKPiArCQkJY29udGludWU7Cj4gKwkJ fQo+ICsKPiArCQlkZHIgPSBkcm1jZ3JwLT5kZXZfcmVzb3VyY2VzW21pbm9yXTsKPiArCQlkZGV2 ID0ga25vd25fZHJtY2dycF9kZXZzW21pbm9yXTsKPiArCQlzd2l0Y2ggKHR5cGUpIHsKPiArCQlj YXNlIERSTUNHUlBfVFlQRV9CT19UT1RBTDoKPiArCQkJcF9tYXggPSBwYXJlbnQgPT0gTlVMTCA/ IFM2NF9NQVggOgo+ICsJCQkJcGFyZW50LT5kZXZfcmVzb3VyY2VzW21pbm9yXS0+Cj4gKwkJCQli b19saW1pdHNfdG90YWxfYWxsb2NhdGVkOwo+ICsKPiArCQkJcmMgPSBkcm1jZ3JwX3Byb2Nlc3Nf bGltaXRfdmFsKHNhdHRyLCB0cnVlLAo+ICsJCQkJZGRldi0+Ym9fbGltaXRzX3RvdGFsX2FsbG9j YXRlZF9kZWZhdWx0LAo+ICsJCQkJcF9tYXgsCj4gKwkJCQkmdmFsKTsKPiArCj4gKwkJCWlmIChy YyB8fCB2YWwgPCAwKSB7Cj4gKwkJCQlkcm1jZ3JwX3ByX2NmdF9lcnIoZHJtY2dycCwgY2Z0X25h bWUsIG1pbm9yKTsKPiArCQkJCWNvbnRpbnVlOwo+ICsJCQl9Cj4gKwo+ICsJCQlkZHItPmJvX2xp bWl0c190b3RhbF9hbGxvY2F0ZWQgPSB2YWw7Cj4gKwkJCWJyZWFrOwo+ICsJCWRlZmF1bHQ6Cj4g KwkJCWJyZWFrOwo+ICsJCX0KPiArCX0KPiArCj4gKwlyZXR1cm4gbmJ5dGVzOwo+ICt9Cj4gKwo+ ICBzdHJ1Y3QgY2Z0eXBlIGZpbGVzW10gPSB7Cj4gKwl7Cj4gKwkJLm5hbWUgPSAiYnVmZmVyLnRv dGFsLnN0YXRzIiwKPiArCQkuc2VxX3Nob3cgPSBkcm1jZ3JwX2JvX3Nob3csCj4gKwkJLnByaXZh dGUgPSBEUk1DR19DVEZfUFJJVihEUk1DR1JQX1RZUEVfQk9fVE9UQUwsCj4gKwkJCQkJCURSTUNH UlBfRlRZUEVfU1RBVFMpLAo+ICsJfSwKPiArCXsKPiArCQkubmFtZSA9ICJidWZmZXIudG90YWwu ZGVmYXVsdCIsCj4gKwkJLnNlcV9zaG93ID0gZHJtY2dycF9ib19zaG93LAo+ICsJCS5mbGFncyA9 IENGVFlQRV9PTkxZX09OX1JPT1QsCj4gKwkJLnByaXZhdGUgPSBEUk1DR19DVEZfUFJJVihEUk1D R1JQX1RZUEVfQk9fVE9UQUwsCj4gKwkJCQkJCURSTUNHUlBfRlRZUEVfREVGQVVMVCksCj4gKwl9 LAo+ICsJewo+ICsJCS5uYW1lID0gImJ1ZmZlci50b3RhbC5tYXgiLAo+ICsJCS53cml0ZSA9IGRy bWNncnBfYm9fbGltaXRfd3JpdGUsCj4gKwkJLnNlcV9zaG93ID0gZHJtY2dycF9ib19zaG93LAo+ ICsJCS5wcml2YXRlID0gRFJNQ0dfQ1RGX1BSSVYoRFJNQ0dSUF9UWVBFX0JPX1RPVEFMLAo+ICsJ CQkJCQlEUk1DR1JQX0ZUWVBFX0xJTUlUKSwKPiArCX0sCj4gIAl7IH0JLyogdGVybWluYXRlICov Cj4gIH07Cj4gIAo+IEBAIC0xMjEsNiArMzY0LDggQEAgaW50IGRybWNncnBfcmVnaXN0ZXJfZGV2 aWNlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJcmV0dXJuIC1FTk9NRU07Cj4gIAo+ICAJ ZGRldi0+ZGV2ID0gZGV2Owo+ICsJZGRldi0+Ym9fbGltaXRzX3RvdGFsX2FsbG9jYXRlZF9kZWZh dWx0ID0gUzY0X01BWDsKPiArCj4gIAltdXRleF9pbml0KCZkZGV2LT5tdXRleCk7Cj4gIAo+ICAJ bXV0ZXhfbG9jaygmZHJtY2dycF9tdXRleCk7Cj4gQEAgLTE1NiwzICs0MDEsNzkgQEAgaW50IGRy bWNncnBfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCXJldHVy biAwOwo+ICB9Cj4gIEVYUE9SVF9TWU1CT0woZHJtY2dycF91bnJlZ2lzdGVyX2RldmljZSk7Cj4g Kwo+ICtib29sIGRybWNncnBfaXNfc2VsZl9vcl9hbmNlc3RvcihzdHJ1Y3QgZHJtY2dycCAqc2Vs Ziwgc3RydWN0IGRybWNncnAgKnJlbGF0aXZlKQo+ICt7Cj4gKwlmb3IgKDsgc2VsZiAhPSBOVUxM OyBzZWxmID0gcGFyZW50X2RybWNncnAoc2VsZikpCj4gKwkJaWYgKHNlbGYgPT0gcmVsYXRpdmUp Cj4gKwkJCXJldHVybiB0cnVlOwo+ICsKPiArCXJldHVybiBmYWxzZTsKPiArfQo+ICtFWFBPUlRf U1lNQk9MKGRybWNncnBfaXNfc2VsZl9vcl9hbmNlc3Rvcik7Cj4gKwo+ICtib29sIGRybWNncnBf Ym9fY2FuX2FsbG9jYXRlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPiArCQlzaXplX3Qgc2l6ZSkKPiArewo+ICsJc3RydWN0IGRybWNncnAgKmRybWNn cnAgPSBkcm1jZ3JwX2Zyb20odGFzayk7Cj4gKwlzdHJ1Y3QgZHJtY2dycF9kZXZpY2VfcmVzb3Vy Y2UgKmRkcjsKPiArCXN0cnVjdCBkcm1jZ3JwX2RldmljZV9yZXNvdXJjZSAqZDsKPiArCWludCBk ZXZJZHggPSBkZXYtPnByaW1hcnktPmluZGV4Owo+ICsJYm9vbCByZXN1bHQgPSB0cnVlOwo+ICsJ czY0IGRlbHRhID0gMDsKPiArCj4gKwlpZiAoZHJtY2dycCA9PSBOVUxMIHx8IGRybWNncnAgPT0g cm9vdF9kcm1jZ3JwKQo+ICsJCXJldHVybiB0cnVlOwo+ICsKPiArCWRkciA9IGRybWNncnAtPmRl dl9yZXNvdXJjZXNbZGV2SWR4XTsKPiArCW11dGV4X2xvY2soJmtub3duX2RybWNncnBfZGV2c1tk ZXZJZHhdLT5tdXRleCk7Cj4gKwlmb3IgKCA7IGRybWNncnAgIT0gcm9vdF9kcm1jZ3JwOyBkcm1j Z3JwID0gcGFyZW50X2RybWNncnAoZHJtY2dycCkpIHsKPiArCQlkID0gZHJtY2dycC0+ZGV2X3Jl c291cmNlc1tkZXZJZHhdOwo+ICsJCWRlbHRhID0gZC0+Ym9fbGltaXRzX3RvdGFsX2FsbG9jYXRl ZCAtCj4gKwkJCQlkLT5ib19zdGF0c190b3RhbF9hbGxvY2F0ZWQ7Cj4gKwo+ICsJCWlmIChkZWx0 YSA8PSAwIHx8IHNpemUgPiBkZWx0YSkgewo+ICsJCQlyZXN1bHQgPSBmYWxzZTsKPiArCQkJYnJl YWs7Cj4gKwkJfQo+ICsJfQo+ICsJbXV0ZXhfdW5sb2NrKCZrbm93bl9kcm1jZ3JwX2RldnNbZGV2 SWR4XS0+bXV0ZXgpOwo+ICsKPiArCXJldHVybiByZXN1bHQ7Cj4gK30KPiArRVhQT1JUX1NZTUJP TChkcm1jZ3JwX2JvX2Nhbl9hbGxvY2F0ZSk7Cj4gKwo+ICt2b2lkIGRybWNncnBfY2hnX2JvX2Fs bG9jKHN0cnVjdCBkcm1jZ3JwICpkcm1jZ3JwLCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICsJ CXNpemVfdCBzaXplKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtY2dycF9kZXZpY2VfcmVzb3VyY2UgKmRk cjsKPiArCWludCBkZXZJZHggPSBkZXYtPnByaW1hcnktPmluZGV4Owo+ICsKPiArCWlmIChkcm1j Z3JwID09IE5VTEwgfHwga25vd25fZHJtY2dycF9kZXZzW2RldklkeF0gPT0gTlVMTCkKPiArCQly ZXR1cm47Cj4gKwo+ICsJbXV0ZXhfbG9jaygma25vd25fZHJtY2dycF9kZXZzW2RldklkeF0tPm11 dGV4KTsKPiArCWZvciAoIDsgZHJtY2dycCAhPSBOVUxMOyBkcm1jZ3JwID0gcGFyZW50X2RybWNn cnAoZHJtY2dycCkpIHsKPiArCQlkZHIgPSBkcm1jZ3JwLT5kZXZfcmVzb3VyY2VzW2RldklkeF07 Cj4gKwo+ICsJCWRkci0+Ym9fc3RhdHNfdG90YWxfYWxsb2NhdGVkICs9IChzNjQpc2l6ZTsKPiAr CX0KPiArCW11dGV4X3VubG9jaygma25vd25fZHJtY2dycF9kZXZzW2RldklkeF0tPm11dGV4KTsK PiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybWNncnBfY2hnX2JvX2FsbG9jKTsKPiArCj4gK3ZvaWQg ZHJtY2dycF91bmNoZ19ib19hbGxvYyhzdHJ1Y3QgZHJtY2dycCAqZHJtY2dycCwgc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKPiArCQlzaXplX3Qgc2l6ZSkKPiArewo+ICsJaW50IGRldklkeCA9IGRl di0+cHJpbWFyeS0+aW5kZXg7Cj4gKwo+ICsJaWYgKGRybWNncnAgPT0gTlVMTCB8fCBrbm93bl9k cm1jZ3JwX2RldnNbZGV2SWR4XSA9PSBOVUxMKQo+ICsJCXJldHVybjsKPiArCj4gKwltdXRleF9s b2NrKCZrbm93bl9kcm1jZ3JwX2RldnNbZGV2SWR4XS0+bXV0ZXgpOwo+ICsJZm9yICggOyBkcm1j Z3JwICE9IE5VTEw7IGRybWNncnAgPSBwYXJlbnRfZHJtY2dycChkcm1jZ3JwKSkKPiArCQlkcm1j Z3JwLT5kZXZfcmVzb3VyY2VzW2RldklkeF0tPmJvX3N0YXRzX3RvdGFsX2FsbG9jYXRlZAo+ICsJ CQktPSAoczY0KXNpemU7Cj4gKwltdXRleF91bmxvY2soJmtub3duX2RybWNncnBfZGV2c1tkZXZJ ZHhdLT5tdXRleCk7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkcm1jZ3JwX3VuY2hnX2JvX2FsbG9j KTsKPiAtLSAKPiAyLjIxLjAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwo+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJ bnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2FtZC1nZng=