From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC PATCH v3 09/11] drm, cgroup: Add per cgroup bw measure and control Date: Wed, 26 Jun 2019 18:25:54 +0200 Message-ID: <20190626162554.GU12905@phenom.ffwll.local> References: <20190626150522.11618-1-Kenny.Ho@amd.com> <20190626150522.11618-10-Kenny.Ho@amd.com> Mime-Version: 1.0 Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20190626150522.11618-10-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="iso-8859-1" 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 T24gV2VkLCBKdW4gMjYsIDIwMTkgYXQgMTE6MDU6MjBBTSAtMDQwMCwgS2VubnkgSG8gd3JvdGU6 Cj4gVGhlIGJhbmR3aWR0aCBpcyBtZWFzdXJlZCBieSBrZWVwaW5nIHRyYWNrIG9mIHRoZSBhbW91 bnQgb2YgYnl0ZXMgbW92ZWQKPiBieSB0dG0gd2l0aGluIGEgdGltZSBwZXJpb2QuICBXZSBkZWZp bmVkIHR3byB0eXBlIG9mIGJhbmR3aWR0aDogYnVyc3QKPiBhbmQgYXZlcmFnZS4gIEF2ZXJhZ2Ug YmFuZHdpZHRoIGlzIGNhbGN1bGF0ZWQgYnkgZGl2aWRpbmcgdGhlIHRvdGFsCj4gYW1vdW50IG9m IGJ5dGVzIG1vdmVkIHdpdGhpbiBhIGNncm91cCBieSB0aGUgbGlmZXRpbWUgb2YgdGhlIGNncm91 cC4KPiBCdXJzdCBiYW5kd2lkdGggaXMgc2ltaWxhciBleGNlcHQgdGhhdCB0aGUgYnl0ZSBhbmQg dGltZSBtZWFzdXJlbWVudCBpcwo+IHJlc2V0IGFmdGVyIGEgdXNlciBjb25maWd1cmFibGUgcGVy aW9kLgo+IAo+IFRoZSBiYW5kd2lkdGggY29udHJvbCBpcyBiZXN0IGVmZm9ydCBzaW5jZSBpdCBp cyBkb25lIG9uIGEgcGVyIG1vdmUKPiBiYXNpcyBpbnN0ZWFkIG9mIHBlciBieXRlLiAgVGhlIGJh bmR3aWR0aCBpcyBsaW1pdGVkIGJ5IGRlbGF5aW5nIHRoZQo+IG1vdmUgb2YgYSBidWZmZXIuICBU aGUgYmFuZHdpZHRoIGxpbWl0IGNhbiBiZSBleGNlZWRlZCB3aGVuIHRoZSBuZXh0Cj4gbW92ZSBp cyBsYXJnZXIgdGhhbiB0aGUgcmVtYWluaW5nIGFsbG93YW5jZS4KPiAKPiBkcm0uYnVyc3RfYndf cGVyaW9kX2luX3VzCj4gICAgICAgICBBIHJlYWQtd3JpdGUgZmxhdC1rZXllZCBmaWxlIHdoaWNo IGV4aXN0cyBvbiB0aGUgcm9vdCBjZ3JvdXAuCj4gICAgICAgICBFYWNoIGVudHJ5IGlzIGtleWVk IGJ5IHRoZSBkcm0gZGV2aWNlJ3MgbWFqb3I6bWlub3IuCj4gCj4gICAgICAgICBMZW5ndGggb2Yg YSBwZXJpb2QgdXNlIHRvIG1lYXN1cmUgYnVyc3QgYmFuZHdpZHRoIGluIHVzLgo+ICAgICAgICAg T25lIHBlcmlvZCBwZXIgZGV2aWNlLgo+IAo+IGRybS5idXJzdF9id19wZXJpb2RfaW5fdXMuZGVm YXVsdAo+ICAgICAgICAgQSByZWFkLW9ubHkgZmxhdC1rZXllZCBmaWxlIHdoaWNoIGV4aXN0cyBv biB0aGUgcm9vdCBjZ3JvdXAuCj4gICAgICAgICBFYWNoIGVudHJ5IGlzIGtleWVkIGJ5IHRoZSBk cm0gZGV2aWNlJ3MgbWFqb3I6bWlub3IuCj4gCj4gICAgICAgICBEZWZhdWx0IGxlbmd0aCBvZiBh IHBlcmlvZCBpbiB1cyAob25lIHBlciBkZXZpY2UuKQo+IAo+IGRybS5iYW5kd2lkdGguc3RhdHMK PiAgICAgICAgIEEgcmVhZC1vbmx5IG5lc3RlZC1rZXllZCBmaWxlIHdoaWNoIGV4aXN0cyBvbiBh bGwgY2dyb3Vwcy4KPiAgICAgICAgIEVhY2ggZW50cnkgaXMga2V5ZWQgYnkgdGhlIGRybSBkZXZp Y2UncyBtYWpvcjptaW5vci4gIFRoZQo+ICAgICAgICAgZm9sbG93aW5nIG5lc3RlZCBrZXlzIGFy ZSBkZWZpbmVkLgo+IAo+ICAgICAgICAgICA9PT09PT09PT09PT09PT09PSAgICAgPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPiAgICAgICAgICAgYnVyc3RfYnl0ZV9wZXJf dXMgICAgIEJ1cnN0IGJhbmR3aWR0aAo+ICAgICAgICAgICBhdmdfYnl0ZXNfcGVyX3VzICAgICAg QXZlcmFnZSBiYW5kd2lkdGgKPiAgICAgICAgICAgbW92ZWRfYnl0ZSAgICAgICAgICAgIEFtb3Vu dCBvZiBieXRlIG1vdmVkIHdpdGhpbiBhIHBlcmlvZAo+ICAgICAgICAgICBhY2N1bV91cyAgICAg ICAgICAgICAgQW1vdW50IG9mIHRpbWUgYWNjdW11bGF0ZWQgaW4gYSBwZXJpb2QKPiAgICAgICAg ICAgdG90YWxfbW92ZWRfYnl0ZSAgICAgIEJ5dGUgbW92ZWQgd2l0aGluIHRoZSBjZ3JvdXAgbGlm ZXRpbWUKPiAgICAgICAgICAgdG90YWxfYWNjdW1fdXMgICAgICAgIENncm91cCBsaWZldGltZSBp biB1cwo+ICAgICAgICAgICBieXRlX2NyZWRpdCAgICAgICAgICAgQXZhaWxhYmxlIGJ5dGUgY3Jl ZGl0IHRvIGxpbWl0IGF2ZyBidwo+ICAgICAgICAgICA9PT09PT09PT09PT09PT09PSAgICAgPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPiAKPiAgICAgICAgIFJlYWRpbmcg cmV0dXJucyB0aGUgZm9sbG93aW5nOjoKPiAgICAgICAgIDIyNjoxIGJ1cnN0X2J5dGVfcGVyX3Vz PTIzIGF2Z19ieXRlc19wZXJfdXM9MCBtb3ZlZF9ieXRlPTIyNDQ2MDgKPiAgICAgICAgIGFjY3Vt X3VzPTk1NTc1IHRvdGFsX21vdmVkX2J5dGU9NDU4OTk3NzYgdG90YWxfYWNjdW1fdXM9MjAxNjM0 NTkwCj4gICAgICAgICBieXRlX2NyZWRpdD0xMzIxNDI3ODU5MDQ2NAo+ICAgICAgICAgMjI2OjIg YnVyc3RfYnl0ZV9wZXJfdXM9MTAgYXZnX2J5dGVzX3Blcl91cz0yMTkgbW92ZWRfYnl0ZT00MzAw ODAKPiAgICAgICAgIGFjY3VtX3VzPTM5MzUwIHRvdGFsX21vdmVkX2J5dGU9NjU1MTgwMjY3NTIg dG90YWxfYWNjdW1fdXM9Mjk4MzM3NzIxCj4gICAgICAgICBieXRlX2NyZWRpdD05MjIzMzcyMDM2 ODU0NjQ0NzM1Cj4gCj4gZHJtLmJhbmR3aWR0aC5oaWdoCj4gICAgICAgICBBIHJlYWQtd3JpdGUg bmVzdGVkLWtleWVkIGZpbGUgd2hpY2ggZXhpc3RzIG9uIGFsbCBjZ3JvdXBzLgo+ICAgICAgICAg RWFjaCBlbnRyeSBpcyBrZXllZCBieSB0aGUgZHJtIGRldmljZSdzIG1ham9yOm1pbm9yLiAgVGhl Cj4gICAgICAgICBmb2xsb3dpbmcgbmVzdGVkIGtleXMgYXJlIGRlZmluZWQuCj4gCj4gICAgICAg ICAgID09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQo+ICAgICAgICAgICBieXRlc19pbl9wZXJpb2QgICBCdXJzdCBsaW1pdCBwZXIgcGVyaW9k IGluIGJ5dGUKPiAgICAgICAgICAgYXZnX2J5dGVzX3Blcl91cyAgQXZlcmFnZSBiYW5kd2lkdGgg bGltaXQgaW4gYnl0ZXMgcGVyIHVzCj4gICAgICAgICAgID09PT09PT09PT09PT09PT0gID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+IAo+ICAgICAgICAgUmVhZGluZyBy ZXR1cm5zIHRoZSBmb2xsb3dpbmc6Ogo+IAo+ICAgICAgICAgMjI2OjEgYnl0ZXNfaW5fcGVyaW9k PTkyMjMzNzIwMzY4NTQ3NzU4MDcgYXZnX2J5dGVzX3Blcl91cz02NTUzNgo+ICAgICAgICAgMjI2 OjIgYnl0ZXNfaW5fcGVyaW9kPTkyMjMzNzIwMzY4NTQ3NzU4MDcgYXZnX2J5dGVzX3Blcl91cz02 NTUzNgo+IAo+IGRybS5iYW5kd2lkdGguZGVmYXVsdAo+ICAgICAgICAgQSByZWFkLW9ubHkgbmVz dGVkLWtleWVkIGZpbGUgd2hpY2ggZXhpc3RzIG9uIHRoZSByb290IGNncm91cC4KPiAgICAgICAg IEVhY2ggZW50cnkgaXMga2V5ZWQgYnkgdGhlIGRybSBkZXZpY2UncyBtYWpvcjptaW5vci4gIFRo ZQo+ICAgICAgICAgZm9sbG93aW5nIG5lc3RlZCBrZXlzIGFyZSBkZWZpbmVkLgo+IAo+ICAgICAg ICAgICA9PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Cj4gICAgICAgICAgIGJ5dGVzX2luX3BlcmlvZCAgIERlZmF1bHQgYnVyc3QgbGltaXQg cGVyIHBlcmlvZCBpbiBieXRlCj4gICAgICAgICAgIGF2Z19ieXRlc19wZXJfdXMgIERlZmF1bHQg YXZlcmFnZSBidyBsaW1pdCBpbiBieXRlcyBwZXIgdXMKPiAgICAgICAgICAgPT09PT09PT09PT09 PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+IAo+ICAgICAg ICAgUmVhZGluZyByZXR1cm5zIHRoZSBmb2xsb3dpbmc6Ogo+IAo+ICAgICAgICAgMjI2OjEgYnl0 ZXNfaW5fcGVyaW9kPTkyMjMzNzIwMzY4NTQ3NzU4MDcgYXZnX2J5dGVzX3Blcl91cz02NTUzNgo+ ICAgICAgICAgMjI2OjIgYnl0ZXNfaW5fcGVyaW9kPTkyMjMzNzIwMzY4NTQ3NzU4MDcgYXZnX2J5 dGVzX3Blcl91cz02NTUzNgo+IAo+IENoYW5nZS1JZDogSWU1NzM0OTEzMjVjY2MxNjUzNWJiOTQz ZTc4NTdmNDNiZDA5NjJhZGQKPiBTaWduZWQtb2ZmLWJ5OiBLZW5ueSBIbyA8S2VubnkuSG9AYW1k LmNvbT4KClNvIEknbSBub3QgdG9vIHN1cmUgZXhwb3NpbmcgdGhpcyBpcyBhIGdyZWF0IGlkZWEs IGF0IGxlYXN0IGRlcGVuZGluZyB1cG9uCndoYXQgeW91J3JlIHRyeWluZyB0byBkbyB3aXRoIGl0 LiBUaGVyZSdzIGEgZmV3IGNvbmNlcm5zIGhlcmU6CgotIEkgdGhpbmsgYm8gbW92ZW1lbnQgc3Rh dHMgbWlnaHQgYmUgdXNlZnVsLCBidXQgdGhleSdyZSBub3QgdGVsbGluZyB5b3UKICBldmVyeXRo aW5nLiBBcHBsaWNhdGlvbnMgY2FuIGFsc28gY29weSBkYXRhIHRoZW1zZWx2ZXMgYW5kIHB1dCBi dWZmZXJzCiAgd2hlcmUgdGhleSB3YW50IHRoZW0sIGVzcGVjaWFsbHkgd2l0aCBtb3JlIGV4cGxp Y2l0IGFwaXMgbGlrZSB2ay4KCi0gd2hpY2gga2luZCBvZiBtb3ZlcyBhcmUgd2UgdGFsa2luZyBh Ym91dCBoZXJlPyBFdmljdGlvbiByZWxhdGVkIGJvIG1vdmVzCiAgc2VlbSBub3QgY291bnRlZCBo ZXJlLCBhbmQgaWYgeW91IGhhdmUgbG90cyBvZiBncHVzIHdpdGggZnVubnkKICBpbnRlcmNvbm5l Y3RzIHlvdSBtaWdodCBhbHNvIGdldCBvdGhlciBraW5kcyBvZiBtb3Zlcywgbm90IGp1c3Qgc3lz dGVtCiAgcmFtIDwtPiB2cmFtLgoKLSBXaGF0IGhhcHBlbnMgaWYgd2Ugc2xvdyBkb3duLCBidXQg c29tZW9uZSBlbHNlIG5lZWRzIHRvIGV2aWN0IG91cgogIGJ1ZmZlcnMvbW92ZSB0aGVtICh0dG0g aXMgYXRtIG5vdCBncmVhdCBhdCB0aGlzLCBidXQgQ2hyaXN0aWFuIEvDtm5pZyBpcwogIHdvcmtp bmcgb24gcGF0Y2hlcykuIEkgdGhpbmsgdGhlcmUncyBsb3RzIG9mIHByaW9yaXR5IGludmVyc2lv bgogIHBvdGVudGlhbCBoZXJlLgoKLSBJZiB0aGUgZ29hbCBpcyB0byBhdm9pZCB0aHJhc2hpbmcg dGhlIGludGVyY29ubmVjdHMsIHRoZW4gdGhpcyBpc24ndCB0aGUKICBmdWxsIHBpY3R1cmUgYnkg ZmFyIC0gYXBwcyBjYW4gdXNlIGNvcHkgZW5naW5lcyBhbmQgZXhwbGljaXQgcGxhY2VtZW50LAog IGFnYWluIHRoYXQncyBob3cgdnVsa2FuIGF0IGxlYXN0IGlzIHN1cHBvc2VkIHRvIHdvcmsuCgpJ IGd1ZXNzIHRoZXNlIGFsbCBib2lsIGRvd24gdG86IFdoYXQgZG8geW91IHdhbnQgdG8gYWNoaWV2 ZSBoZXJlPyBUaGUKY29tbWl0IG1lc3NhZ2UgZG9lc24ndCBleHBsYWluIHRoZSBpbnRlbmRlZCB1 c2UtY2FzZSBvZiB0aGlzLgotRGFuaWVsCgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vdHRtL3R0 bV9iby5jIHwgICA3ICsKPiAgaW5jbHVkZS9kcm0vZHJtX2Nncm91cC5oICAgICB8ICAxMyArKwo+ ICBpbmNsdWRlL2xpbnV4L2Nncm91cF9kcm0uaCAgIHwgIDE0ICsrCj4gIGtlcm5lbC9jZ3JvdXAv ZHJtLmMgICAgICAgICAgfCAzMDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0K PiAgNCBmaWxlcyBjaGFuZ2VkLCAzNDAgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKPiAK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm8uYyBiL2RyaXZlcnMvZ3B1 L2RybS90dG0vdHRtX2JvLmMKPiBpbmRleCBlOWY3MDU0N2YwYWQuLmYwNmMyYjlkOGE0YSAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL3R0bS90dG1fYm8uYwo+IEBAIC0zNiw2ICszNiw3IEBACj4gICNpbmNsdWRlIDxkcm0v dHRtL3R0bV9wbGFjZW1lbnQuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fY2dyb3VwLmg+Cj4gICNp bmNsdWRlIDxsaW51eC9qaWZmaWVzLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgo+ICAj aW5jbHVkZSA8bGludXgvc2xhYi5oPgo+ICAjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KPiAgI2lu Y2x1ZGUgPGxpbnV4L21tLmg+Cj4gQEAgLTExNzYsNiArMTE3NywxMiBAQCBpbnQgdHRtX2JvX3Zh bGlkYXRlKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sCj4gIAkgKiBDaGVjayB3aGV0aGVy IHdlIG5lZWQgdG8gbW92ZSBidWZmZXIuCj4gIAkgKi8KPiAgCWlmICghdHRtX2JvX21lbV9jb21w YXQocGxhY2VtZW50LCAmYm8tPm1lbSwgJm5ld19mbGFncykpIHsKPiArCQl1bnNpZ25lZCBpbnQg bW92ZV9kZWxheSA9IGRybWNncnBfZ2V0X21lbV9id19wZXJpb2RfaW5fdXMoYm8pOwo+ICsJCW1v dmVfZGVsYXkgLz0gMjAwMDsgLyogY2hlY2sgZXZlcnkgaGFsZiBwZXJpb2QgaW4gbXMqLwo+ICsJ CXdoaWxlIChiby0+YmRldi0+ZGRldiAhPSBOVUxMICYmICFkcm1jZ3JwX21lbV9jYW5fbW92ZShi bykpIHsKPiArCQkJbXNsZWVwKG1vdmVfZGVsYXkpOwo+ICsJCX0KPiArCj4gIAkJcmV0ID0gdHRt X2JvX21vdmVfYnVmZmVyKGJvLCBwbGFjZW1lbnQsIGN0eCk7Cj4gIAkJaWYgKHJldCkKPiAgCQkJ cmV0dXJuIHJldDsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2Nncm91cC5oIGIvaW5j bHVkZS9kcm0vZHJtX2Nncm91cC5oCj4gaW5kZXggNDhhYjU0NTBjZjE3Li45YjFkYmQ2YTRlY2Eg MTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2Nncm91cC5oCj4gKysrIGIvaW5jbHVkZS9k cm0vZHJtX2Nncm91cC5oCj4gQEAgLTIzLDYgKzIzLDggQEAgdm9pZCBkcm1jZ3JwX2NoZ19tZW0o c3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICp0Ym8pOwo+ICB2b2lkIGRybWNncnBfdW5jaGdfbWVt KHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqdGJvKTsKPiAgdm9pZCBkcm1jZ3JwX21lbV90cmFj a19tb3ZlKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqb2xkX2JvLCBib29sIGV2aWN0LAo+ICAJ CXN0cnVjdCB0dG1fbWVtX3JlZyAqbmV3X21lbSk7Cj4gK3Vuc2lnbmVkIGludCBkcm1jZ3JwX2dl dF9tZW1fYndfcGVyaW9kX2luX3VzKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqdGJvKTsKPiAr Ym9vbCBkcm1jZ3JwX21lbV9jYW5fbW92ZShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKnRibyk7 Cj4gIAo+ICAjZWxzZQo+ICBzdGF0aWMgaW5saW5lIGludCBkcm1jZ3JwX3JlZ2lzdGVyX2Rldmlj ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2aWNlKQo+IEBAIC02OSw1ICs3MSwxNiBAQCBzdGF0aWMg aW5saW5lIHZvaWQgZHJtY2dycF9tZW1fdHJhY2tfbW92ZShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmpl Y3QgKm9sZF9ibywKPiAgCQlib29sIGV2aWN0LCBzdHJ1Y3QgdHRtX21lbV9yZWcgKm5ld19tZW0p Cj4gIHsKPiAgfQo+ICsKPiArc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZHJtY2dycF9nZXRf bWVtX2J3X3BlcmlvZF9pbl91cygKPiArCQlzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKnRibykK PiArewo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBkcm1jZ3Jw X21lbV9jYW5fbW92ZShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKnRibykKPiArewo+ICsJcmV0 dXJuIHRydWU7Cj4gK30KPiAgI2VuZGlmIC8qIENPTkZJR19DR1JPVVBfRFJNICovCj4gICNlbmRp ZiAvKiBfX0RSTV9DR1JPVVBfSF9fICovCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvY2dy b3VwX2RybS5oIGIvaW5jbHVkZS9saW51eC9jZ3JvdXBfZHJtLmgKPiBpbmRleCA5MjI1Mjk2NDFk ZjUuLjk0ODI4ZGEyMTA0YSAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2xpbnV4L2Nncm91cF9kcm0u aAo+ICsrKyBiL2luY2x1ZGUvbGludXgvY2dyb3VwX2RybS5oCj4gQEAgLTE0LDYgKzE0LDE1IEBA Cj4gIC8qIGxpbWl0IGRlZmluZWQgcGVyIHRoZSB3YXkgZHJtX21pbm9yX2FsbG9jIG9wZXJhdGVz ICovCj4gICNkZWZpbmUgTUFYX0RSTV9ERVYgKDY0ICogRFJNX01JTk9SX1JFTkRFUikKPiAgCj4g K2VudW0gZHJtY2dycF9tZW1fYndfYXR0ciB7Cj4gKyAgICBEUk1DR1JQX01FTV9CV19BVFRSX0JZ VEVfTU9WRUQsIC8qIGZvciBjYWx1bGF0aW5nICdpbnN0YW50YW5lb3VzJyBidyAqLwo+ICsgICAg RFJNQ0dSUF9NRU1fQldfQVRUUl9BQ0NVTV9VUywgIC8qIGZvciBjYWx1bGF0aW5nICdpbnN0YW50 YW5lb3VzJyBidyAqLwo+ICsgICAgRFJNQ0dSUF9NRU1fQldfQVRUUl9UT1RBTF9CWVRFX01PVkVE LAo+ICsgICAgRFJNQ0dSUF9NRU1fQldfQVRUUl9UT1RBTF9BQ0NVTV9VUywKPiArICAgIERSTUNH UlBfTUVNX0JXX0FUVFJfQllURV9DUkVESVQsCj4gKyAgICBfX0RSTUNHUlBfTUVNX0JXX0FUVFJf TEFTVCwKPiArfTsKPiArCj4gIHN0cnVjdCBkcm1jZ3JwX2RldmljZV9yZXNvdXJjZSB7Cj4gIAkv KiBmb3IgcGVyIGRldmljZSBzdGF0cyAqLwo+ICAJczY0CQkJYm9fc3RhdHNfdG90YWxfYWxsb2Nh dGVkOwo+IEBAIC0yNyw2ICszNiwxMSBAQCBzdHJ1Y3QgZHJtY2dycF9kZXZpY2VfcmVzb3VyY2Ug ewo+ICAJczY0CQkJbWVtX3N0YXRzW1RUTV9QTF9QUklWKzFdOwo+ICAJczY0CQkJbWVtX3BlYWtz W1RUTV9QTF9QUklWKzFdOwo+ICAJczY0CQkJbWVtX3N0YXRzX2V2aWN0Owo+ICsKPiArCXM2NAkJ CW1lbV9id19zdGF0c19sYXN0X3VwZGF0ZV91czsKPiArCXM2NAkJCW1lbV9id19zdGF0c1tfX0RS TUNHUlBfTUVNX0JXX0FUVFJfTEFTVF07Cj4gKwlzNjQJCQltZW1fYndfbGltaXRzX2J5dGVzX2lu X3BlcmlvZDsKPiArCXM2NAkJCW1lbV9id19saW1pdHNfYXZnX2J5dGVzX3Blcl91czsKPiAgfTsK PiAgCj4gIHN0cnVjdCBkcm1jZ3JwIHsKPiBkaWZmIC0tZ2l0IGEva2VybmVsL2Nncm91cC9kcm0u YyBiL2tlcm5lbC9jZ3JvdXAvZHJtLmMKPiBpbmRleCA1ZjVmYTZhMmIwNjguLmJiYzY2MTIyMDBh NCAxMDA2NDQKPiAtLS0gYS9rZXJuZWwvY2dyb3VwL2RybS5jCj4gKysrIGIva2VybmVsL2Nncm91 cC9kcm0uYwo+IEBAIC03LDYgKzcsNyBAQAo+ICAjaW5jbHVkZSA8bGludXgvc2VxX2ZpbGUuaD4K PiAgI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC9jZ3JvdXBfZHJt Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9rdGltZS5oPgo+ICAjaW5jbHVkZSA8bGludXgva2VybmVs Lmg+Cj4gICNpbmNsdWRlIDxkcm0vdHRtL3R0bV9ib19hcGkuaD4KPiAgI2luY2x1ZGUgPGRybS90 dG0vdHRtX2JvX2RyaXZlci5oPgo+IEBAIC0yMiw2ICsyMywxMiBAQCBzdHJ1Y3QgZHJtY2dycF9k ZXZpY2Ugewo+ICAKPiAgCXM2NAkJCWJvX2xpbWl0c190b3RhbF9hbGxvY2F0ZWRfZGVmYXVsdDsK PiAgCXNpemVfdAkJCWJvX2xpbWl0c19wZWFrX2FsbG9jYXRlZF9kZWZhdWx0Owo+ICsKPiArCXM2 NAkJCW1lbV9id19saW1pdHNfcGVyaW9kX2luX3VzOwo+ICsJczY0CQkJbWVtX2J3X2xpbWl0c19w ZXJpb2RfaW5fdXNfZGVmYXVsdDsKPiArCj4gKwlzNjQJCQltZW1fYndfYnl0ZXNfaW5fcGVyaW9k X2RlZmF1bHQ7Cj4gKwlzNjQJCQltZW1fYndfYXZnX2J5dGVzX3Blcl91c19kZWZhdWx0Owo+ICB9 Owo+ICAKPiAgI2RlZmluZSBEUk1DR19DVEZfUFJJVl9TSVpFIDMKPiBAQCAtMzksNiArNDYsOCBA QCBlbnVtIGRybWNncnBfcmVzX3R5cGUgewo+ICAJRFJNQ0dSUF9UWVBFX01FTSwKPiAgCURSTUNH UlBfVFlQRV9NRU1fRVZJQ1QsCj4gIAlEUk1DR1JQX1RZUEVfTUVNX1BFQUssCj4gKwlEUk1DR1JQ X1RZUEVfQkFORFdJRFRILAo+ICsJRFJNQ0dSUF9UWVBFX0JBTkRXSURUSF9QRVJJT0RfQlVSU1Qs Cj4gIH07Cj4gIAo+ICBlbnVtIGRybWNncnBfZmlsZV90eXBlIHsKPiBAQCAtNTQsNiArNjMsMTcg QEAgc3RhdGljIGNoYXIgY29uc3QgKnR0bV9wbGFjZW1lbnRfbmFtZXNbXSA9IHsKPiAgCVtUVE1f UExfUFJJVl0gICA9ICJwcml2IiwKPiAgfTsKPiAgCj4gK3N0YXRpYyBjaGFyIGNvbnN0ICptZW1f YndfYXR0cl9uYW1lc1tdID0gewo+ICsJW0RSTUNHUlBfTUVNX0JXX0FUVFJfQllURV9NT1ZFRF0g PSAibW92ZWRfYnl0ZSIsCj4gKwlbRFJNQ0dSUF9NRU1fQldfQVRUUl9BQ0NVTV9VU10gPSAiYWNj dW1fdXMiLAo+ICsJW0RSTUNHUlBfTUVNX0JXX0FUVFJfVE9UQUxfQllURV9NT1ZFRF0gPSAidG90 YWxfbW92ZWRfYnl0ZSIsCj4gKwlbRFJNQ0dSUF9NRU1fQldfQVRUUl9UT1RBTF9BQ0NVTV9VU10g PSAidG90YWxfYWNjdW1fdXMiLAo+ICsJW0RSTUNHUlBfTUVNX0JXX0FUVFJfQllURV9DUkVESVRd ID0gImJ5dGVfY3JlZGl0IiwKPiArfTsKPiArCj4gKyNkZWZpbmUgTUVNX0JXX0xJTUlUU19OQU1F X0FWRyAiYXZnX2J5dGVzX3Blcl91cyIKPiArI2RlZmluZSBNRU1fQldfTElNSVRTX05BTUVfQlVS U1QgImJ5dGVzX2luX3BlcmlvZCIKPiArCj4gIC8qIGluZGV4ZWQgYnkgZHJtX21pbm9yIGZvciBh Y2Nlc3Mgc3BlZWQgKi8KPiAgc3RhdGljIHN0cnVjdCBkcm1jZ3JwX2RldmljZQkqa25vd25fZHJt Y2dycF9kZXZzW01BWF9EUk1fREVWXTsKPiAgCj4gQEAgLTg2LDYgKzEwNiw5IEBAIHN0YXRpYyBp bmxpbmUgaW50IGluaXRfZHJtY2dycF9zaW5nbGUoc3RydWN0IGRybWNncnAgKmRybWNncnAsIGlu dCBtaW5vcikKPiAgCQlpZiAoIWRkcikKPiAgCQkJcmV0dXJuIC1FTk9NRU07Cj4gIAo+ICsJCWRk ci0+bWVtX2J3X3N0YXRzX2xhc3RfdXBkYXRlX3VzID0ga3RpbWVfdG9fdXMoa3RpbWVfZ2V0KCkp Owo+ICsJCWRkci0+bWVtX2J3X3N0YXRzW0RSTUNHUlBfTUVNX0JXX0FUVFJfQUNDVU1fVVNdID0g MTsKPiArCj4gIAkJZHJtY2dycC0+ZGV2X3Jlc291cmNlc1ttaW5vcl0gPSBkZHI7Cj4gIAl9Cj4g IAo+IEBAIC05Niw2ICsxMTksMTIgQEAgc3RhdGljIGlubGluZSBpbnQgaW5pdF9kcm1jZ3JwX3Np bmdsZShzdHJ1Y3QgZHJtY2dycCAqZHJtY2dycCwgaW50IG1pbm9yKQo+ICAKPiAgCQlkZHItPmJv X2xpbWl0c19wZWFrX2FsbG9jYXRlZCA9Cj4gIAkJICBrbm93bl9kcm1jZ3JwX2RldnNbbWlub3Jd LT5ib19saW1pdHNfcGVha19hbGxvY2F0ZWRfZGVmYXVsdDsKPiArCj4gKwkJZGRyLT5tZW1fYndf bGltaXRzX2J5dGVzX2luX3BlcmlvZCA9Cj4gKwkJICBrbm93bl9kcm1jZ3JwX2RldnNbbWlub3Jd LT5tZW1fYndfYnl0ZXNfaW5fcGVyaW9kX2RlZmF1bHQ7Cj4gKwo+ICsJCWRkci0+bWVtX2J3X2xp bWl0c19hdmdfYnl0ZXNfcGVyX3VzID0KPiArCQkgIGtub3duX2RybWNncnBfZGV2c1ttaW5vcl0t Pm1lbV9id19hdmdfYnl0ZXNfcGVyX3VzX2RlZmF1bHQ7Cj4gIAl9Cj4gIAo+ICAJcmV0dXJuIDA7 Cj4gQEAgLTE0Myw2ICsxNzIsMjYgQEAgZHJtY2dycF9jc3NfYWxsb2Moc3RydWN0IGNncm91cF9z dWJzeXNfc3RhdGUgKnBhcmVudF9jc3MpCj4gIAlyZXR1cm4gJmRybWNncnAtPmNzczsKPiAgfQo+ ICAKPiArc3RhdGljIGlubGluZSB2b2lkIGRybWNncnBfbWVtX2J1cnN0X2J3X3N0YXRzX3Jlc2V0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3sKPiArCXN0cnVjdCBjZ3JvdXBfc3Vic3lzX3N0 YXRlICpwb3M7Cj4gKwlzdHJ1Y3QgZHJtY2dycCAqbm9kZTsKPiArCXN0cnVjdCBkcm1jZ3JwX2Rl dmljZV9yZXNvdXJjZSAqZGRyOwo+ICsJaW50IGRldklkeDsKPiArCj4gKwlkZXZJZHggPSAgZGV2 LT5wcmltYXJ5LT5pbmRleDsKPiArCj4gKwlyY3VfcmVhZF9sb2NrKCk7Cj4gKwljc3NfZm9yX2Vh Y2hfZGVzY2VuZGFudF9wcmUocG9zLCAmcm9vdF9kcm1jZ3JwLT5jc3MpIHsKPiArCQlub2RlID0g Y3NzX2RybWNncnAocG9zKTsKPiArCQlkZHIgPSBub2RlLT5kZXZfcmVzb3VyY2VzW2RldklkeF07 Cj4gKwo+ICsJCWRkci0+bWVtX2J3X3N0YXRzW0RSTUNHUlBfTUVNX0JXX0FUVFJfQUNDVU1fVVNd ID0gMTsKPiArCQlkZHItPm1lbV9id19zdGF0c1tEUk1DR1JQX01FTV9CV19BVFRSX0JZVEVfTU9W RURdID0gMDsKPiArCX0KPiArCXJjdV9yZWFkX3VubG9jaygpOwo+ICt9Cj4gKwo+ICBzdGF0aWMg aW5saW5lIHZvaWQgZHJtY2dycF9wcmludF9zdGF0cyhzdHJ1Y3QgZHJtY2dycF9kZXZpY2VfcmVz b3VyY2UgKmRkciwKPiAgCQlzdHJ1Y3Qgc2VxX2ZpbGUgKnNmLCBlbnVtIGRybWNncnBfcmVzX3R5 cGUgdHlwZSkKPiAgewo+IEBAIC0xNzksNiArMjI4LDMxIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBk cm1jZ3JwX3ByaW50X3N0YXRzKHN0cnVjdCBkcm1jZ3JwX2RldmljZV9yZXNvdXJjZSAqZGRyLAo+ ICAJCX0KPiAgCQlzZXFfcHV0cyhzZiwgIlxuIik7Cj4gIAkJYnJlYWs7Cj4gKwljYXNlIERSTUNH UlBfVFlQRV9CQU5EV0lEVEg6Cj4gKwkJaWYgKGRkci0+bWVtX2J3X3N0YXRzW0RSTUNHUlBfTUVN X0JXX0FUVFJfQUNDVU1fVVNdID09IDApCj4gKwkJCXNlcV9wdXRzKHNmLCAiYnVyc3RfYnl0ZV9w ZXJfdXM9TmFOICIpOwo+ICsJCWVsc2UKPiArCQkJc2VxX3ByaW50ZihzZiwgImJ1cnN0X2J5dGVf cGVyX3VzPSVsbGQgIiwKPiArCQkJCWRkci0+bWVtX2J3X3N0YXRzWwo+ICsJCQkJRFJNQ0dSUF9N RU1fQldfQVRUUl9CWVRFX01PVkVEXS8KPiArCQkJCWRkci0+bWVtX2J3X3N0YXRzWwo+ICsJCQkJ RFJNQ0dSUF9NRU1fQldfQVRUUl9BQ0NVTV9VU10pOwo+ICsKPiArCQlpZiAoZGRyLT5tZW1fYndf c3RhdHNbRFJNQ0dSUF9NRU1fQldfQVRUUl9UT1RBTF9BQ0NVTV9VU10gPT0gMCkKPiArCQkJc2Vx X3B1dHMoc2YsICJhdmdfYnl0ZXNfcGVyX3VzPU5hTiAiKTsKPiArCQllbHNlCj4gKwkJCXNlcV9w cmludGYoc2YsICJhdmdfYnl0ZXNfcGVyX3VzPSVsbGQgIiwKPiArCQkJCWRkci0+bWVtX2J3X3N0 YXRzWwo+ICsJCQkJRFJNQ0dSUF9NRU1fQldfQVRUUl9UT1RBTF9CWVRFX01PVkVEXS8KPiArCQkJ CWRkci0+bWVtX2J3X3N0YXRzWwo+ICsJCQkJRFJNQ0dSUF9NRU1fQldfQVRUUl9UT1RBTF9BQ0NV TV9VU10pOwo+ICsKPiArCQlmb3IgKGkgPSAwOyBpIDwgX19EUk1DR1JQX01FTV9CV19BVFRSX0xB U1Q7IGkrKykgewo+ICsJCQlzZXFfcHJpbnRmKHNmLCAiJXM9JWxsZCAiLCBtZW1fYndfYXR0cl9u YW1lc1tpXSwKPiArCQkJCQlkZHItPm1lbV9id19zdGF0c1tpXSk7Cj4gKwkJfQo+ICsJCXNlcV9w dXRzKHNmLCAiXG4iKTsKPiArCQlicmVhazsKPiAgCWRlZmF1bHQ6Cj4gIAkJc2VxX3B1dHMoc2Ys ICJcbiIpOwo+ICAJCWJyZWFrOwo+IEBAIC0xODYsOSArMjYwLDkgQEAgc3RhdGljIGlubGluZSB2 b2lkIGRybWNncnBfcHJpbnRfc3RhdHMoc3RydWN0IGRybWNncnBfZGV2aWNlX3Jlc291cmNlICpk ZHIsCj4gIH0KPiAgCj4gIHN0YXRpYyBpbmxpbmUgdm9pZCBkcm1jZ3JwX3ByaW50X2xpbWl0cyhz dHJ1Y3QgZHJtY2dycF9kZXZpY2VfcmVzb3VyY2UgKmRkciwKPiAtCQlzdHJ1Y3Qgc2VxX2ZpbGUg KnNmLCBlbnVtIGRybWNncnBfcmVzX3R5cGUgdHlwZSkKPiArCQlzdHJ1Y3Qgc2VxX2ZpbGUgKnNm LCBlbnVtIGRybWNncnBfcmVzX3R5cGUgdHlwZSwgaW50IG1pbm9yKQo+ICB7Cj4gLQlpZiAoZGRy ID09IE5VTEwpIHsKPiArCWlmIChkZHIgPT0gTlVMTCB8fCBrbm93bl9kcm1jZ3JwX2RldnNbbWlu b3JdID09IE5VTEwpIHsKPiAgCQlzZXFfcHV0cyhzZiwgIlxuIik7Cj4gIAkJcmV0dXJuOwo+ICAJ fQo+IEBAIC0yMDAsNiArMjc0LDE3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkcm1jZ3JwX3ByaW50 X2xpbWl0cyhzdHJ1Y3QgZHJtY2dycF9kZXZpY2VfcmVzb3VyY2UgKmRkciwKPiAgCWNhc2UgRFJN Q0dSUF9UWVBFX0JPX1BFQUs6Cj4gIAkJc2VxX3ByaW50ZihzZiwgIiV6dVxuIiwgZGRyLT5ib19s aW1pdHNfcGVha19hbGxvY2F0ZWQpOwo+ICAJCWJyZWFrOwo+ICsJY2FzZSBEUk1DR1JQX1RZUEVf QkFORFdJRFRIX1BFUklPRF9CVVJTVDoKPiArCQlzZXFfcHJpbnRmKHNmLCAiJWxsZFxuIiwKPiAr CQkJa25vd25fZHJtY2dycF9kZXZzW21pbm9yXS0+bWVtX2J3X2xpbWl0c19wZXJpb2RfaW5fdXMp Owo+ICsJCWJyZWFrOwo+ICsJY2FzZSBEUk1DR1JQX1RZUEVfQkFORFdJRFRIOgo+ICsJCXNlcV9w cmludGYoc2YsICIlcz0lbGxkICVzPSVsbGRcbiIsCj4gKwkJCQlNRU1fQldfTElNSVRTX05BTUVf QlVSU1QsCj4gKwkJCQlkZHItPm1lbV9id19saW1pdHNfYnl0ZXNfaW5fcGVyaW9kLAo+ICsJCQkJ TUVNX0JXX0xJTUlUU19OQU1FX0FWRywKPiArCQkJCWRkci0+bWVtX2J3X2xpbWl0c19hdmdfYnl0 ZXNfcGVyX3VzKTsKPiArCQlicmVhazsKPiAgCWRlZmF1bHQ6Cj4gIAkJc2VxX3B1dHMoc2YsICJc biIpOwo+ICAJCWJyZWFrOwo+IEBAIC0yMjMsNiArMzA4LDE3IEBAIHN0YXRpYyBpbmxpbmUgdm9p ZCBkcm1jZ3JwX3ByaW50X2RlZmF1bHQoc3RydWN0IGRybWNncnBfZGV2aWNlICpkZGV2LAo+ICAJ CXNlcV9wcmludGYoc2YsICIlenVcbiIsCj4gIAkJCQlkZGV2LT5ib19saW1pdHNfcGVha19hbGxv Y2F0ZWRfZGVmYXVsdCk7Cj4gIAkJYnJlYWs7Cj4gKwljYXNlIERSTUNHUlBfVFlQRV9CQU5EV0lE VEhfUEVSSU9EX0JVUlNUOgo+ICsJCXNlcV9wcmludGYoc2YsICIlbGxkXG4iLAo+ICsJCQkJZGRl di0+bWVtX2J3X2xpbWl0c19wZXJpb2RfaW5fdXNfZGVmYXVsdCk7Cj4gKwkJYnJlYWs7Cj4gKwlj YXNlIERSTUNHUlBfVFlQRV9CQU5EV0lEVEg6Cj4gKwkJc2VxX3ByaW50ZihzZiwgIiVzPSVsbGQg JXM9JWxsZFxuIiwKPiArCQkJCU1FTV9CV19MSU1JVFNfTkFNRV9CVVJTVCwKPiArCQkJCWRkZXYt Pm1lbV9id19ieXRlc19pbl9wZXJpb2RfZGVmYXVsdCwKPiArCQkJCU1FTV9CV19MSU1JVFNfTkFN RV9BVkcsCj4gKwkJCQlkZGV2LT5tZW1fYndfYXZnX2J5dGVzX3Blcl91c19kZWZhdWx0KTsKPiAr CQlicmVhazsKPiAgCWRlZmF1bHQ6Cj4gIAkJc2VxX3B1dHMoc2YsICJcbiIpOwo+ICAJCWJyZWFr Owo+IEBAIC0yNTEsNyArMzQ3LDcgQEAgaW50IGRybWNncnBfYm9fc2hvdyhzdHJ1Y3Qgc2VxX2Zp bGUgKnNmLCB2b2lkICp2KQo+ICAJCQlkcm1jZ3JwX3ByaW50X3N0YXRzKGRkciwgc2YsIHR5cGUp Owo+ICAJCQlicmVhazsKPiAgCQljYXNlIERSTUNHUlBfRlRZUEVfTElNSVQ6Cj4gLQkJCWRybWNn cnBfcHJpbnRfbGltaXRzKGRkciwgc2YsIHR5cGUpOwo+ICsJCQlkcm1jZ3JwX3ByaW50X2xpbWl0 cyhkZHIsIHNmLCB0eXBlLCBpKTsKPiAgCQkJYnJlYWs7Cj4gIAkJY2FzZSBEUk1DR1JQX0ZUWVBF X0RFRkFVTFQ6Cj4gIAkJCWRybWNncnBfcHJpbnRfZGVmYXVsdChkZGV2LCBzZiwgdHlwZSk7Cj4g QEAgLTMxNyw2ICs0MTMsOSBAQCBzc2l6ZV90IGRybWNncnBfYm9fbGltaXRfd3JpdGUoc3RydWN0 IGtlcm5mc19vcGVuX2ZpbGUgKm9mLCBjaGFyICpidWYsCj4gIAlzdHJ1Y3QgZHJtY2dycF9kZXZp Y2VfcmVzb3VyY2UgKmRkcjsKPiAgCWNoYXIgKmxpbmU7Cj4gIAljaGFyIHNhdHRyWzI1Nl07Cj4g KwljaGFyIHN2YWxbMjU2XTsKPiArCWNoYXIgKm5lc3RlZDsKPiArCWNoYXIgKmF0dHI7Cj4gIAlz NjQgdmFsOwo+ICAJczY0IHBfbWF4Owo+ICAJaW50IHJjOwo+IEBAIC0zODEsNiArNDgwLDc4IEBA IHNzaXplX3QgZHJtY2dycF9ib19saW1pdF93cml0ZShzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAq b2YsIGNoYXIgKmJ1ZiwKPiAgCj4gIAkJCWRkci0+Ym9fbGltaXRzX3BlYWtfYWxsb2NhdGVkID0g dmFsOwo+ICAJCQlicmVhazsKPiArCQljYXNlIERSTUNHUlBfVFlQRV9CQU5EV0lEVEhfUEVSSU9E X0JVUlNUOgo+ICsJCQlyYyA9IGRybWNncnBfcHJvY2Vzc19saW1pdF92YWwoc2F0dHIsIGZhbHNl LAo+ICsJCQkJZGRldi0+bWVtX2J3X2xpbWl0c19wZXJpb2RfaW5fdXNfZGVmYXVsdCwKPiArCQkJ CVM2NF9NQVgsCj4gKwkJCQkmdmFsKTsKPiArCj4gKwkJCWlmIChyYyB8fCB2YWwgPCAyMDAwKSB7 Cj4gKwkJCQlkcm1jZ3JwX3ByX2NmdF9lcnIoZHJtY2dycCwgY2Z0X25hbWUsIG1pbm9yKTsKPiAr CQkJCWNvbnRpbnVlOwo+ICsJCQl9Cj4gKwo+ICsJCQlkZGV2LT5tZW1fYndfbGltaXRzX3Blcmlv ZF9pbl91cz0gdmFsOwo+ICsJCQlkcm1jZ3JwX21lbV9idXJzdF9id19zdGF0c19yZXNldChkZGV2 LT5kZXYpOwo+ICsJCQlicmVhazsKPiArCQljYXNlIERSTUNHUlBfVFlQRV9CQU5EV0lEVEg6Cj4g KwkJCW5lc3RlZCA9IHN0cnN0cmlwKHNhdHRyKTsKPiArCj4gKwkJCXdoaWxlIChuZXN0ZWQgIT0g TlVMTCkgewo+ICsJCQkJYXR0ciA9IHN0cnNlcCgmbmVzdGVkLCAiICIpOwo+ICsKPiArCQkJCWlm IChzc2NhbmYoYXR0ciwgTUVNX0JXX0xJTUlUU19OQU1FX0JVUlNUIj0lcyIsCj4gKwkJCQkJCQlz dmFsKSA9PSAxKSB7Cj4gKwkJCQkJcF9tYXggPSBwYXJlbnQgPT0gTlVMTCA/IFM2NF9NQVggOgo+ ICsJCQkJCQlwYXJlbnQtPgo+ICsJCQkJCQlkZXZfcmVzb3VyY2VzW21pbm9yXS0+Cj4gKwkJCQkJ CW1lbV9id19saW1pdHNfYnl0ZXNfaW5fcGVyaW9kOwo+ICsKPiArCQkJCQlyYyA9IGRybWNncnBf cHJvY2Vzc19saW1pdF92YWwoc3ZhbCwKPiArCQkJCQkJdHJ1ZSwKPiArCQkJCQkJZGRldi0+Cj4g KwkJCQkJCW1lbV9id19ieXRlc19pbl9wZXJpb2RfZGVmYXVsdCwKPiArCQkJCQkJcF9tYXgsCj4g KwkJCQkJCSZ2YWwpOwo+ICsKPiArCQkJCQlpZiAocmMgfHwgdmFsIDwgMCkgewo+ICsJCQkJCQlk cm1jZ3JwX3ByX2NmdF9lcnIoZHJtY2dycCwKPiArCQkJCQkJCQljZnRfbmFtZSwKPiArCQkJCQkJ CQltaW5vcik7Cj4gKwkJCQkJCWNvbnRpbnVlOwo+ICsJCQkJCX0KPiArCj4gKwkJCQkJZGRyLT5t ZW1fYndfbGltaXRzX2J5dGVzX2luX3BlcmlvZD12YWw7Cj4gKwkJCQkJY29udGludWU7Cj4gKwkJ CQl9Cj4gKwo+ICsJCQkJaWYgKHNzY2FuZihhdHRyLCBNRU1fQldfTElNSVRTX05BTUVfQVZHIj0l cyIsCj4gKwkJCQkJCQlzdmFsKSA9PSAxKSB7Cj4gKwkJCQkJcF9tYXggPSBwYXJlbnQgPT0gTlVM TCA/IFM2NF9NQVggOgo+ICsJCQkJCQlwYXJlbnQtPgo+ICsJCQkJCQlkZXZfcmVzb3VyY2VzW21p bm9yXS0+Cj4gKwkJCQkJCW1lbV9id19saW1pdHNfYXZnX2J5dGVzX3Blcl91czsKPiArCj4gKwkJ CQkJcmMgPSBkcm1jZ3JwX3Byb2Nlc3NfbGltaXRfdmFsKHN2YWwsCj4gKwkJCQkJCXRydWUsCj4g KwkJCQkJCWRkZXYtPgo+ICsJCQkJCSAgICAgIG1lbV9id19hdmdfYnl0ZXNfcGVyX3VzX2RlZmF1 bHQsCj4gKwkJCQkJCXBfbWF4LAo+ICsJCQkJCQkmdmFsKTsKPiArCj4gKwkJCQkJaWYgKHJjIHx8 IHZhbCA8IDApIHsKPiArCQkJCQkJZHJtY2dycF9wcl9jZnRfZXJyKGRybWNncnAsCj4gKwkJCQkJ CQkJY2Z0X25hbWUsCj4gKwkJCQkJCQkJbWlub3IpOwo+ICsJCQkJCQljb250aW51ZTsKPiArCQkJ CQl9Cj4gKwo+ICsJCQkJCWRkci0+Cj4gKwkJCQkJbWVtX2J3X2xpbWl0c19hdmdfYnl0ZXNfcGVy X3VzPXZhbDsKPiArCQkJCQljb250aW51ZTsKPiArCQkJCX0KPiArCQkJfQo+ICsJCQlicmVhazsK PiAgCQlkZWZhdWx0Ogo+ICAJCQlicmVhazsKPiAgCQl9Cj4gQEAgLTQ1NCw2ICs2MjUsNDEgQEAg c3RydWN0IGNmdHlwZSBmaWxlc1tdID0gewo+ICAJCS5wcml2YXRlID0gRFJNQ0dfQ1RGX1BSSVYo RFJNQ0dSUF9UWVBFX01FTV9QRUFLLAo+ICAJCQkJCQlEUk1DR1JQX0ZUWVBFX1NUQVRTKSwKPiAg CX0sCj4gKwl7Cj4gKwkJLm5hbWUgPSAiYnVyc3RfYndfcGVyaW9kX2luX3VzIiwKPiArCQkud3Jp dGUgPSBkcm1jZ3JwX2JvX2xpbWl0X3dyaXRlLAo+ICsJCS5zZXFfc2hvdyA9IGRybWNncnBfYm9f c2hvdywKPiArCQkuZmxhZ3MgPSBDRlRZUEVfT05MWV9PTl9ST09ULAo+ICsJCS5wcml2YXRlID0g RFJNQ0dfQ1RGX1BSSVYoRFJNQ0dSUF9UWVBFX0JBTkRXSURUSF9QRVJJT0RfQlVSU1QsCj4gKwkJ CQkJCURSTUNHUlBfRlRZUEVfTElNSVQpLAo+ICsJfSwKPiArCXsKPiArCQkubmFtZSA9ICJidXJz dF9id19wZXJpb2RfaW5fdXMuZGVmYXVsdCIsCj4gKwkJLnNlcV9zaG93ID0gZHJtY2dycF9ib19z aG93LAo+ICsJCS5mbGFncyA9IENGVFlQRV9PTkxZX09OX1JPT1QsCj4gKwkJLnByaXZhdGUgPSBE Uk1DR19DVEZfUFJJVihEUk1DR1JQX1RZUEVfQkFORFdJRFRIX1BFUklPRF9CVVJTVCwKPiArCQkJ CQkJRFJNQ0dSUF9GVFlQRV9ERUZBVUxUKSwKPiArCX0sCj4gKwl7Cj4gKwkJLm5hbWUgPSAiYmFu ZHdpZHRoLnN0YXRzIiwKPiArCQkuc2VxX3Nob3cgPSBkcm1jZ3JwX2JvX3Nob3csCj4gKwkJLnBy aXZhdGUgPSBEUk1DR19DVEZfUFJJVihEUk1DR1JQX1RZUEVfQkFORFdJRFRILAo+ICsJCQkJCQlE Uk1DR1JQX0ZUWVBFX1NUQVRTKSwKPiArCX0sCj4gKwl7Cj4gKwkJLm5hbWUgPSAiYmFuZHdpZHRo LmhpZ2giLAo+ICsJCS53cml0ZSA9IGRybWNncnBfYm9fbGltaXRfd3JpdGUsCj4gKwkJLnNlcV9z aG93ID0gZHJtY2dycF9ib19zaG93LAo+ICsJCS5wcml2YXRlID0gRFJNQ0dfQ1RGX1BSSVYoRFJN Q0dSUF9UWVBFX0JBTkRXSURUSCwKPiArCQkJCQkJRFJNQ0dSUF9GVFlQRV9MSU1JVCksCj4gKwl9 LAo+ICsJewo+ICsJCS5uYW1lID0gImJhbmR3aWR0aC5kZWZhdWx0IiwKPiArCQkuc2VxX3Nob3cg PSBkcm1jZ3JwX2JvX3Nob3csCj4gKwkJLmZsYWdzID0gQ0ZUWVBFX09OTFlfT05fUk9PVCwKPiAr CQkucHJpdmF0ZSA9IERSTUNHX0NURl9QUklWKERSTUNHUlBfVFlQRV9CQU5EV0lEVEgsCj4gKwkJ CQkJCURSTUNHUlBfRlRZUEVfREVGQVVMVCksCj4gKwl9LAo+ICAJeyB9CS8qIHRlcm1pbmF0ZSAq Lwo+ICB9Owo+ICAKPiBAQCAtNDc2LDYgKzY4MiwxMCBAQCBpbnQgZHJtY2dycF9yZWdpc3Rlcl9k ZXZpY2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCWRkZXYtPmRldiA9IGRldjsKPiAgCWRk ZXYtPmJvX2xpbWl0c190b3RhbF9hbGxvY2F0ZWRfZGVmYXVsdCA9IFM2NF9NQVg7Cj4gIAlkZGV2 LT5ib19saW1pdHNfcGVha19hbGxvY2F0ZWRfZGVmYXVsdCA9IFNJWkVfTUFYOwo+ICsJZGRldi0+ bWVtX2J3X2xpbWl0c19wZXJpb2RfaW5fdXNfZGVmYXVsdCA9IDIwMDAwMDsKPiArCWRkZXYtPm1l bV9id19saW1pdHNfcGVyaW9kX2luX3VzID0gMjAwMDAwOwo+ICsJZGRldi0+bWVtX2J3X2J5dGVz X2luX3BlcmlvZF9kZWZhdWx0ID0gUzY0X01BWDsKPiArCWRkZXYtPm1lbV9id19hdmdfYnl0ZXNf cGVyX3VzX2RlZmF1bHQgPSA2NTUzNjsKPiAgCj4gIAltdXRleF9pbml0KCZkZGV2LT5tdXRleCk7 Cj4gIAo+IEBAIC02NTIsNiArODYyLDI3IEBAIHZvaWQgZHJtY2dycF91bmNoZ19tZW0oc3RydWN0 IHR0bV9idWZmZXJfb2JqZWN0ICp0Ym8pCj4gIH0KPiAgRVhQT1JUX1NZTUJPTChkcm1jZ3JwX3Vu Y2hnX21lbSk7Cj4gIAo+ICtzdGF0aWMgaW5saW5lIHZvaWQgZHJtY2dycF9tZW1fYndfYWNjdW0o czY0IHRpbWVfdXMsCj4gKwkJc3RydWN0IGRybWNncnBfZGV2aWNlX3Jlc291cmNlICpkZHIpCj4g K3sKPiArCXM2NCBpbmNyZW1lbnRfdXMgPSB0aW1lX3VzIC0gZGRyLT5tZW1fYndfc3RhdHNfbGFz dF91cGRhdGVfdXM7Cj4gKwlzNjQgbmV3X2NyZWRpdCA9IGRkci0+bWVtX2J3X2xpbWl0c19hdmdf Ynl0ZXNfcGVyX3VzICogaW5jcmVtZW50X3VzOwo+ICsKPiArCWRkci0+bWVtX2J3X3N0YXRzW0RS TUNHUlBfTUVNX0JXX0FUVFJfQUNDVU1fVVNdCj4gKwkJKz0gaW5jcmVtZW50X3VzOwo+ICsJZGRy LT5tZW1fYndfc3RhdHNbRFJNQ0dSUF9NRU1fQldfQVRUUl9UT1RBTF9BQ0NVTV9VU10KPiArCQkr PSBpbmNyZW1lbnRfdXM7Cj4gKwo+ICsJaWYgKChTNjRfTUFYIC0gbmV3X2NyZWRpdCkgPgo+ICsJ CQlkZHItPm1lbV9id19zdGF0c1tEUk1DR1JQX01FTV9CV19BVFRSX0JZVEVfQ1JFRElUXSkKPiAr CQlkZHItPm1lbV9id19zdGF0c1tEUk1DR1JQX01FTV9CV19BVFRSX0JZVEVfQ1JFRElUXQo+ICsJ CQkrPSBuZXdfY3JlZGl0Owo+ICsJZWxzZQo+ICsJCWRkci0+bWVtX2J3X3N0YXRzW0RSTUNHUlBf TUVNX0JXX0FUVFJfQllURV9DUkVESVRdID0gUzY0X01BWDsKPiArCj4gKwlkZHItPm1lbV9id19z dGF0c19sYXN0X3VwZGF0ZV91cyA9IHRpbWVfdXM7Cj4gK30KPiArCj4gIHZvaWQgZHJtY2dycF9t ZW1fdHJhY2tfbW92ZShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKm9sZF9ibywgYm9vbCBldmlj dCwKPiAgCQlzdHJ1Y3QgdHRtX21lbV9yZWcgKm5ld19tZW0pCj4gIHsKPiBAQCAtNjYxLDYgKzg5 Miw3IEBAIHZvaWQgZHJtY2dycF9tZW1fdHJhY2tfbW92ZShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmpl Y3QgKm9sZF9ibywgYm9vbCBldmljdCwKPiAgCWludCBkZXZJZHggPSBkZXYtPnByaW1hcnktPmlu ZGV4Owo+ICAJaW50IG9sZF9tZW1fdHlwZSA9IG9sZF9iby0+bWVtLm1lbV90eXBlOwo+ICAJaW50 IG5ld19tZW1fdHlwZSA9IG5ld19tZW0tPm1lbV90eXBlOwo+ICsJczY0IHRpbWVfdXM7Cj4gIAlz dHJ1Y3QgZHJtY2dycF9kZXZpY2VfcmVzb3VyY2UgKmRkcjsKPiAgCXN0cnVjdCBkcm1jZ3JwX2Rl dmljZSAqa25vd25fZGV2Owo+ICAKPiBAQCAtNjcyLDYgKzkwNCwxNCBAQCB2b2lkIGRybWNncnBf bWVtX3RyYWNrX21vdmUoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpvbGRfYm8sIGJvb2wgZXZp Y3QsCj4gIAlvbGRfbWVtX3R5cGUgPSBvbGRfbWVtX3R5cGUgPiBUVE1fUExfUFJJViA/IFRUTV9Q TF9QUklWIDogb2xkX21lbV90eXBlOwo+ICAJbmV3X21lbV90eXBlID0gbmV3X21lbV90eXBlID4g VFRNX1BMX1BSSVYgPyBUVE1fUExfUFJJViA6IG5ld19tZW1fdHlwZTsKPiAgCj4gKwlpZiAocm9v dF9kcm1jZ3JwLT5kZXZfcmVzb3VyY2VzW2RldklkeF0gIT0gTlVMTCAmJgo+ICsJCQlyb290X2Ry bWNncnAtPmRldl9yZXNvdXJjZXNbZGV2SWR4XS0+Cj4gKwkJCW1lbV9id19zdGF0c1tEUk1DR1JQ X01FTV9CV19BVFRSX0FDQ1VNX1VTXSA+PQo+ICsJCQlrbm93bl9kZXYtPm1lbV9id19saW1pdHNf cGVyaW9kX2luX3VzKQo+ICsJCWRybWNncnBfbWVtX2J1cnN0X2J3X3N0YXRzX3Jlc2V0KGRldik7 Cj4gKwo+ICsJdGltZV91cyA9IGt0aW1lX3RvX3VzKGt0aW1lX2dldCgpKTsKPiArCj4gIAltdXRl eF9sb2NrKCZrbm93bl9kZXYtPm11dGV4KTsKPiAgCWZvciAoIDsgZHJtY2dycCAhPSBOVUxMOyBk cm1jZ3JwID0gcGFyZW50X2RybWNncnAoZHJtY2dycCkpIHsKPiAgCQlkZHIgPSBkcm1jZ3JwLT5k ZXZfcmVzb3VyY2VzW2RldklkeF07Cj4gQEAgLTY4NCw3ICs5MjQsNzAgQEAgdm9pZCBkcm1jZ3Jw X21lbV90cmFja19tb3ZlKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqb2xkX2JvLCBib29sIGV2 aWN0LAo+ICAKPiAgCQlpZiAoZXZpY3QpCj4gIAkJCWRkci0+bWVtX3N0YXRzX2V2aWN0Kys7Cj4g Kwo+ICsJCWRybWNncnBfbWVtX2J3X2FjY3VtKHRpbWVfdXMsIGRkcik7Cj4gKwo+ICsJCWRkci0+ bWVtX2J3X3N0YXRzW0RSTUNHUlBfTUVNX0JXX0FUVFJfQllURV9NT1ZFRF0KPiArCQkJKz0gbW92 ZV9pbl9ieXRlczsKPiArCQlkZHItPm1lbV9id19zdGF0c1tEUk1DR1JQX01FTV9CV19BVFRSX1RP VEFMX0JZVEVfTU9WRURdCj4gKwkJCSs9IG1vdmVfaW5fYnl0ZXM7Cj4gKwo+ICsJCWRkci0+bWVt X2J3X3N0YXRzW0RSTUNHUlBfTUVNX0JXX0FUVFJfQllURV9DUkVESVRdCj4gKwkJCS09IG1vdmVf aW5fYnl0ZXM7Cj4gIAl9Cj4gIAltdXRleF91bmxvY2soJmtub3duX2Rldi0+bXV0ZXgpOwo+ICB9 Cj4gIEVYUE9SVF9TWU1CT0woZHJtY2dycF9tZW1fdHJhY2tfbW92ZSk7Cj4gKwo+ICt1bnNpZ25l ZCBpbnQgZHJtY2dycF9nZXRfbWVtX2J3X3BlcmlvZF9pbl91cyhzdHJ1Y3QgdHRtX2J1ZmZlcl9v YmplY3QgKnRibykKPiArewo+ICsJaW50IGRldklkeDsKPiArCj4gKwkvL1RPRE8gcmVwbGFjZSB3 aXRoIEJVR19PTgoKTmFoLCBXQVJOX09OLCBCVUdfT04gY29uc2lkZXJlZCBldmlsIGluIGNvZGUg d2hlcmUgaXQncyBhdm9pZGFibGUuCgo+ICsJaWYgKHRiby0+YmRldi0+ZGRldiA9PSBOVUxMKQo+ ICsJCXJldHVybiAwOwo+ICsKPiArCWRldklkeCA9IHRiby0+YmRldi0+ZGRldi0+cHJpbWFyeS0+ aW5kZXg7Cj4gKwo+ICsJcmV0dXJuICh1bnNpZ25lZCBpbnQpIGtub3duX2RybWNncnBfZGV2c1tk ZXZJZHhdLT4KPiArCQltZW1fYndfbGltaXRzX3BlcmlvZF9pbl91czsKPiArfQo+ICtFWFBPUlRf U1lNQk9MKGRybWNncnBfZ2V0X21lbV9id19wZXJpb2RfaW5fdXMpOwo+ICsKPiArYm9vbCBkcm1j Z3JwX21lbV9jYW5fbW92ZShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKnRibykKPiArewo+ICsJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHRiby0+YmRldi0+ZGRldjsKPiArCXN0cnVjdCBkcm1j Z3JwICpkcm1jZ3JwID0gdGJvLT5kcm1jZ3JwOwo+ICsJaW50IGRldklkeCA9IGRldi0+cHJpbWFy eS0+aW5kZXg7Cj4gKwlzNjQgdGltZV91czsKPiArCXN0cnVjdCBkcm1jZ3JwX2RldmljZV9yZXNv dXJjZSAqZGRyOwo+ICsJYm9vbCByZXN1bHQgPSB0cnVlOwo+ICsKPiArCWlmIChyb290X2RybWNn cnAtPmRldl9yZXNvdXJjZXNbZGV2SWR4XSAhPSBOVUxMICYmCj4gKwkJCXJvb3RfZHJtY2dycC0+ ZGV2X3Jlc291cmNlc1tkZXZJZHhdLT4KPiArCQkJbWVtX2J3X3N0YXRzW0RSTUNHUlBfTUVNX0JX X0FUVFJfQUNDVU1fVVNdID49Cj4gKwkJCWtub3duX2RybWNncnBfZGV2c1tkZXZJZHhdLT4KPiAr CQkJbWVtX2J3X2xpbWl0c19wZXJpb2RfaW5fdXMpCj4gKwkJZHJtY2dycF9tZW1fYnVyc3RfYndf c3RhdHNfcmVzZXQoZGV2KTsKPiArCj4gKwl0aW1lX3VzID0ga3RpbWVfdG9fdXMoa3RpbWVfZ2V0 KCkpOwo+ICsKPiArCW11dGV4X2xvY2soJmtub3duX2RybWNncnBfZGV2c1tkZXZJZHhdLT5tdXRl eCk7Cj4gKwlmb3IgKCA7IGRybWNncnAgIT0gTlVMTDsgZHJtY2dycCA9IHBhcmVudF9kcm1jZ3Jw KGRybWNncnApKSB7Cj4gKwkJZGRyID0gZHJtY2dycC0+ZGV2X3Jlc291cmNlc1tkZXZJZHhdOwo+ ICsKPiArCQlkcm1jZ3JwX21lbV9id19hY2N1bSh0aW1lX3VzLCBkZHIpOwo+ICsKPiArCQlpZiAo cmVzdWx0ICYmCj4gKwkJCShkZHItPm1lbV9id19zdGF0c1tEUk1DR1JQX01FTV9CV19BVFRSX0JZ VEVfTU9WRURdCj4gKwkJCSA+PSBkZHItPm1lbV9id19saW1pdHNfYnl0ZXNfaW5fcGVyaW9kIHx8 Cj4gKwkJCWRkci0+bWVtX2J3X3N0YXRzW0RSTUNHUlBfTUVNX0JXX0FUVFJfQllURV9DUkVESVRd Cj4gKwkJCSA8PSAwKSkgewo+ICsJCQlyZXN1bHQgPSBmYWxzZTsKPiArCQl9Cj4gKwl9Cj4gKwlt dXRleF91bmxvY2soJmtub3duX2RybWNncnBfZGV2c1tkZXZJZHhdLT5tdXRleCk7Cj4gKwo+ICsJ cmV0dXJuIHJlc3VsdDsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybWNncnBfbWVtX2Nhbl9tb3Zl KTsKPiAtLSAKPiAyLjIxLjAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwo+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJ bnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2FtZC1nZng=