From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kenny Ho Subject: [RFC PATCH v3 09/11] drm, cgroup: Add per cgroup bw measure and control Date: Wed, 26 Jun 2019 11:05:20 -0400 Message-ID: <20190626150522.11618-10-Kenny.Ho@amd.com> References: <20190626150522.11618-1-Kenny.Ho@amd.com> Mime-Version: 1.0 Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190626150522.11618-1-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: y2kenny-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, alexander.deucher-5C7GfCeVMHo@public.gmane.org, christian.koenig-5C7GfCeVMHo@public.gmane.org, joseph.greathouse-5C7GfCeVMHo@public.gmane.org, jsparks-WVYJKLFxKCc@public.gmane.org, lkaplan-WVYJKLFxKCc@public.gmane.org Cc: Kenny Ho VGhlIGJhbmR3aWR0aCBpcyBtZWFzdXJlZCBieSBrZWVwaW5nIHRyYWNrIG9mIHRoZSBhbW91bnQg b2YgYnl0ZXMgbW92ZWQKYnkgdHRtIHdpdGhpbiBhIHRpbWUgcGVyaW9kLiAgV2UgZGVmaW5lZCB0 d28gdHlwZSBvZiBiYW5kd2lkdGg6IGJ1cnN0CmFuZCBhdmVyYWdlLiAgQXZlcmFnZSBiYW5kd2lk dGggaXMgY2FsY3VsYXRlZCBieSBkaXZpZGluZyB0aGUgdG90YWwKYW1vdW50IG9mIGJ5dGVzIG1v dmVkIHdpdGhpbiBhIGNncm91cCBieSB0aGUgbGlmZXRpbWUgb2YgdGhlIGNncm91cC4KQnVyc3Qg YmFuZHdpZHRoIGlzIHNpbWlsYXIgZXhjZXB0IHRoYXQgdGhlIGJ5dGUgYW5kIHRpbWUgbWVhc3Vy ZW1lbnQgaXMKcmVzZXQgYWZ0ZXIgYSB1c2VyIGNvbmZpZ3VyYWJsZSBwZXJpb2QuCgpUaGUgYmFu ZHdpZHRoIGNvbnRyb2wgaXMgYmVzdCBlZmZvcnQgc2luY2UgaXQgaXMgZG9uZSBvbiBhIHBlciBt b3ZlCmJhc2lzIGluc3RlYWQgb2YgcGVyIGJ5dGUuICBUaGUgYmFuZHdpZHRoIGlzIGxpbWl0ZWQg YnkgZGVsYXlpbmcgdGhlCm1vdmUgb2YgYSBidWZmZXIuICBUaGUgYmFuZHdpZHRoIGxpbWl0IGNh biBiZSBleGNlZWRlZCB3aGVuIHRoZSBuZXh0Cm1vdmUgaXMgbGFyZ2VyIHRoYW4gdGhlIHJlbWFp bmluZyBhbGxvd2FuY2UuCgpkcm0uYnVyc3RfYndfcGVyaW9kX2luX3VzCiAgICAgICAgQSByZWFk LXdyaXRlIGZsYXQta2V5ZWQgZmlsZSB3aGljaCBleGlzdHMgb24gdGhlIHJvb3QgY2dyb3VwLgog ICAgICAgIEVhY2ggZW50cnkgaXMga2V5ZWQgYnkgdGhlIGRybSBkZXZpY2UncyBtYWpvcjptaW5v ci4KCiAgICAgICAgTGVuZ3RoIG9mIGEgcGVyaW9kIHVzZSB0byBtZWFzdXJlIGJ1cnN0IGJhbmR3 aWR0aCBpbiB1cy4KICAgICAgICBPbmUgcGVyaW9kIHBlciBkZXZpY2UuCgpkcm0uYnVyc3RfYndf cGVyaW9kX2luX3VzLmRlZmF1bHQKICAgICAgICBBIHJlYWQtb25seSBmbGF0LWtleWVkIGZpbGUg d2hpY2ggZXhpc3RzIG9uIHRoZSByb290IGNncm91cC4KICAgICAgICBFYWNoIGVudHJ5IGlzIGtl eWVkIGJ5IHRoZSBkcm0gZGV2aWNlJ3MgbWFqb3I6bWlub3IuCgogICAgICAgIERlZmF1bHQgbGVu Z3RoIG9mIGEgcGVyaW9kIGluIHVzIChvbmUgcGVyIGRldmljZS4pCgpkcm0uYmFuZHdpZHRoLnN0 YXRzCiAgICAgICAgQSByZWFkLW9ubHkgbmVzdGVkLWtleWVkIGZpbGUgd2hpY2ggZXhpc3RzIG9u IGFsbCBjZ3JvdXBzLgogICAgICAgIEVhY2ggZW50cnkgaXMga2V5ZWQgYnkgdGhlIGRybSBkZXZp Y2UncyBtYWpvcjptaW5vci4gIFRoZQogICAgICAgIGZvbGxvd2luZyBuZXN0ZWQga2V5cyBhcmUg ZGVmaW5lZC4KCiAgICAgICAgICA9PT09PT09PT09PT09PT09PSAgICAgPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgIGJ1cnN0X2J5dGVfcGVyX3VzICAgICBC dXJzdCBiYW5kd2lkdGgKICAgICAgICAgIGF2Z19ieXRlc19wZXJfdXMgICAgICBBdmVyYWdlIGJh bmR3aWR0aAogICAgICAgICAgbW92ZWRfYnl0ZSAgICAgICAgICAgIEFtb3VudCBvZiBieXRlIG1v dmVkIHdpdGhpbiBhIHBlcmlvZAogICAgICAgICAgYWNjdW1fdXMgICAgICAgICAgICAgIEFtb3Vu dCBvZiB0aW1lIGFjY3VtdWxhdGVkIGluIGEgcGVyaW9kCiAgICAgICAgICB0b3RhbF9tb3ZlZF9i eXRlICAgICAgQnl0ZSBtb3ZlZCB3aXRoaW4gdGhlIGNncm91cCBsaWZldGltZQogICAgICAgICAg dG90YWxfYWNjdW1fdXMgICAgICAgIENncm91cCBsaWZldGltZSBpbiB1cwogICAgICAgICAgYnl0 ZV9jcmVkaXQgICAgICAgICAgIEF2YWlsYWJsZSBieXRlIGNyZWRpdCB0byBsaW1pdCBhdmcgYncK ICAgICAgICAgID09PT09PT09PT09PT09PT09ICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQoKICAgICAgICBSZWFkaW5nIHJldHVybnMgdGhlIGZvbGxvd2luZzo6CiAg ICAgICAgMjI2OjEgYnVyc3RfYnl0ZV9wZXJfdXM9MjMgYXZnX2J5dGVzX3Blcl91cz0wIG1vdmVk X2J5dGU9MjI0NDYwOAogICAgICAgIGFjY3VtX3VzPTk1NTc1IHRvdGFsX21vdmVkX2J5dGU9NDU4 OTk3NzYgdG90YWxfYWNjdW1fdXM9MjAxNjM0NTkwCiAgICAgICAgYnl0ZV9jcmVkaXQ9MTMyMTQy Nzg1OTA0NjQKICAgICAgICAyMjY6MiBidXJzdF9ieXRlX3Blcl91cz0xMCBhdmdfYnl0ZXNfcGVy X3VzPTIxOSBtb3ZlZF9ieXRlPTQzMDA4MAogICAgICAgIGFjY3VtX3VzPTM5MzUwIHRvdGFsX21v dmVkX2J5dGU9NjU1MTgwMjY3NTIgdG90YWxfYWNjdW1fdXM9Mjk4MzM3NzIxCiAgICAgICAgYnl0 ZV9jcmVkaXQ9OTIyMzM3MjAzNjg1NDY0NDczNQoKZHJtLmJhbmR3aWR0aC5oaWdoCiAgICAgICAg QSByZWFkLXdyaXRlIG5lc3RlZC1rZXllZCBmaWxlIHdoaWNoIGV4aXN0cyBvbiBhbGwgY2dyb3Vw cy4KICAgICAgICBFYWNoIGVudHJ5IGlzIGtleWVkIGJ5IHRoZSBkcm0gZGV2aWNlJ3MgbWFqb3I6 bWlub3IuICBUaGUKICAgICAgICBmb2xsb3dpbmcgbmVzdGVkIGtleXMgYXJlIGRlZmluZWQuCgog ICAgICAgICAgPT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CiAgICAgICAgICBieXRlc19pbl9wZXJpb2QgICBCdXJzdCBsaW1pdCBwZXIgcGVy aW9kIGluIGJ5dGUKICAgICAgICAgIGF2Z19ieXRlc19wZXJfdXMgIEF2ZXJhZ2UgYmFuZHdpZHRo IGxpbWl0IGluIGJ5dGVzIHBlciB1cwogICAgICAgICAgPT09PT09PT09PT09PT09PSAgPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgogICAgICAgIFJlYWRpbmcgcmV0dXJu cyB0aGUgZm9sbG93aW5nOjoKCiAgICAgICAgMjI2OjEgYnl0ZXNfaW5fcGVyaW9kPTkyMjMzNzIw MzY4NTQ3NzU4MDcgYXZnX2J5dGVzX3Blcl91cz02NTUzNgogICAgICAgIDIyNjoyIGJ5dGVzX2lu X3BlcmlvZD05MjIzMzcyMDM2ODU0Nzc1ODA3IGF2Z19ieXRlc19wZXJfdXM9NjU1MzYKCmRybS5i YW5kd2lkdGguZGVmYXVsdAogICAgICAgIEEgcmVhZC1vbmx5IG5lc3RlZC1rZXllZCBmaWxlIHdo aWNoIGV4aXN0cyBvbiB0aGUgcm9vdCBjZ3JvdXAuCiAgICAgICAgRWFjaCBlbnRyeSBpcyBrZXll ZCBieSB0aGUgZHJtIGRldmljZSdzIG1ham9yOm1pbm9yLiAgVGhlCiAgICAgICAgZm9sbG93aW5n IG5lc3RlZCBrZXlzIGFyZSBkZWZpbmVkLgoKICAgICAgICAgID09PT09PT09PT09PT09PT0gID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgIGJ5dGVzX2lu X3BlcmlvZCAgIERlZmF1bHQgYnVyc3QgbGltaXQgcGVyIHBlcmlvZCBpbiBieXRlCiAgICAgICAg ICBhdmdfYnl0ZXNfcGVyX3VzICBEZWZhdWx0IGF2ZXJhZ2UgYncgbGltaXQgaW4gYnl0ZXMgcGVy IHVzCiAgICAgICAgICA9PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CgogICAgICAgIFJlYWRpbmcgcmV0dXJucyB0aGUgZm9sbG93aW5nOjoK CiAgICAgICAgMjI2OjEgYnl0ZXNfaW5fcGVyaW9kPTkyMjMzNzIwMzY4NTQ3NzU4MDcgYXZnX2J5 dGVzX3Blcl91cz02NTUzNgogICAgICAgIDIyNjoyIGJ5dGVzX2luX3BlcmlvZD05MjIzMzcyMDM2 ODU0Nzc1ODA3IGF2Z19ieXRlc19wZXJfdXM9NjU1MzYKCkNoYW5nZS1JZDogSWU1NzM0OTEzMjVj Y2MxNjUzNWJiOTQzZTc4NTdmNDNiZDA5NjJhZGQKU2lnbmVkLW9mZi1ieTogS2VubnkgSG8gPEtl bm55LkhvQGFtZC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm8uYyB8ICAgNyAr CiBpbmNsdWRlL2RybS9kcm1fY2dyb3VwLmggICAgIHwgIDEzICsrCiBpbmNsdWRlL2xpbnV4L2Nn cm91cF9kcm0uaCAgIHwgIDE0ICsrCiBrZXJuZWwvY2dyb3VwL2RybS5jICAgICAgICAgIHwgMzA5 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiA0IGZpbGVzIGNoYW5nZWQsIDM0 MCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS90dG0vdHRtX2JvLmMgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5jCmluZGV4IGU5 ZjcwNTQ3ZjBhZC4uZjA2YzJiOWQ4YTRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdHRt L3R0bV9iby5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvLmMKQEAgLTM2LDYgKzM2 LDcgQEAKICNpbmNsdWRlIDxkcm0vdHRtL3R0bV9wbGFjZW1lbnQuaD4KICNpbmNsdWRlIDxkcm0v ZHJtX2Nncm91cC5oPgogI2luY2x1ZGUgPGxpbnV4L2ppZmZpZXMuaD4KKyNpbmNsdWRlIDxsaW51 eC9kZWxheS5oPgogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KICNpbmNsdWRlIDxsaW51eC9zY2hl ZC5oPgogI2luY2x1ZGUgPGxpbnV4L21tLmg+CkBAIC0xMTc2LDYgKzExNzcsMTIgQEAgaW50IHR0 bV9ib192YWxpZGF0ZShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLAogCSAqIENoZWNrIHdo ZXRoZXIgd2UgbmVlZCB0byBtb3ZlIGJ1ZmZlci4KIAkgKi8KIAlpZiAoIXR0bV9ib19tZW1fY29t cGF0KHBsYWNlbWVudCwgJmJvLT5tZW0sICZuZXdfZmxhZ3MpKSB7CisJCXVuc2lnbmVkIGludCBt b3ZlX2RlbGF5ID0gZHJtY2dycF9nZXRfbWVtX2J3X3BlcmlvZF9pbl91cyhibyk7CisJCW1vdmVf ZGVsYXkgLz0gMjAwMDsgLyogY2hlY2sgZXZlcnkgaGFsZiBwZXJpb2QgaW4gbXMqLworCQl3aGls ZSAoYm8tPmJkZXYtPmRkZXYgIT0gTlVMTCAmJiAhZHJtY2dycF9tZW1fY2FuX21vdmUoYm8pKSB7 CisJCQltc2xlZXAobW92ZV9kZWxheSk7CisJCX0KKwogCQlyZXQgPSB0dG1fYm9fbW92ZV9idWZm ZXIoYm8sIHBsYWNlbWVudCwgY3R4KTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7CmRpZmYg LS1naXQgYS9pbmNsdWRlL2RybS9kcm1fY2dyb3VwLmggYi9pbmNsdWRlL2RybS9kcm1fY2dyb3Vw LmgKaW5kZXggNDhhYjU0NTBjZjE3Li45YjFkYmQ2YTRlY2EgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv ZHJtL2RybV9jZ3JvdXAuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fY2dyb3VwLmgKQEAgLTIzLDYg KzIzLDggQEAgdm9pZCBkcm1jZ3JwX2NoZ19tZW0oc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICp0 Ym8pOwogdm9pZCBkcm1jZ3JwX3VuY2hnX21lbShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKnRi byk7CiB2b2lkIGRybWNncnBfbWVtX3RyYWNrX21vdmUoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0 ICpvbGRfYm8sIGJvb2wgZXZpY3QsCiAJCXN0cnVjdCB0dG1fbWVtX3JlZyAqbmV3X21lbSk7Cit1 bnNpZ25lZCBpbnQgZHJtY2dycF9nZXRfbWVtX2J3X3BlcmlvZF9pbl91cyhzdHJ1Y3QgdHRtX2J1 ZmZlcl9vYmplY3QgKnRibyk7Citib29sIGRybWNncnBfbWVtX2Nhbl9tb3ZlKHN0cnVjdCB0dG1f YnVmZmVyX29iamVjdCAqdGJvKTsKIAogI2Vsc2UKIHN0YXRpYyBpbmxpbmUgaW50IGRybWNncnBf cmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXZpY2UpCkBAIC02OSw1ICs3MSwx NiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZHJtY2dycF9tZW1fdHJhY2tfbW92ZShzdHJ1Y3QgdHRt X2J1ZmZlcl9vYmplY3QgKm9sZF9ibywKIAkJYm9vbCBldmljdCwgc3RydWN0IHR0bV9tZW1fcmVn ICpuZXdfbWVtKQogewogfQorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBkcm1jZ3JwX2dl dF9tZW1fYndfcGVyaW9kX2luX3VzKAorCQlzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKnRibykK K3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlubGluZSBib29sIGRybWNncnBfbWVtX2Nhbl9t b3ZlKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqdGJvKQoreworCXJldHVybiB0cnVlOworfQog I2VuZGlmIC8qIENPTkZJR19DR1JPVVBfRFJNICovCiAjZW5kaWYgLyogX19EUk1fQ0dST1VQX0hf XyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jZ3JvdXBfZHJtLmggYi9pbmNsdWRlL2xp bnV4L2Nncm91cF9kcm0uaAppbmRleCA5MjI1Mjk2NDFkZjUuLjk0ODI4ZGEyMTA0YSAxMDA2NDQK LS0tIGEvaW5jbHVkZS9saW51eC9jZ3JvdXBfZHJtLmgKKysrIGIvaW5jbHVkZS9saW51eC9jZ3Jv dXBfZHJtLmgKQEAgLTE0LDYgKzE0LDE1IEBACiAvKiBsaW1pdCBkZWZpbmVkIHBlciB0aGUgd2F5 IGRybV9taW5vcl9hbGxvYyBvcGVyYXRlcyAqLwogI2RlZmluZSBNQVhfRFJNX0RFViAoNjQgKiBE Uk1fTUlOT1JfUkVOREVSKQogCitlbnVtIGRybWNncnBfbWVtX2J3X2F0dHIgeworICAgIERSTUNH UlBfTUVNX0JXX0FUVFJfQllURV9NT1ZFRCwgLyogZm9yIGNhbHVsYXRpbmcgJ2luc3RhbnRhbmVv dXMnIGJ3ICovCisgICAgRFJNQ0dSUF9NRU1fQldfQVRUUl9BQ0NVTV9VUywgIC8qIGZvciBjYWx1 bGF0aW5nICdpbnN0YW50YW5lb3VzJyBidyAqLworICAgIERSTUNHUlBfTUVNX0JXX0FUVFJfVE9U QUxfQllURV9NT1ZFRCwKKyAgICBEUk1DR1JQX01FTV9CV19BVFRSX1RPVEFMX0FDQ1VNX1VTLAor ICAgIERSTUNHUlBfTUVNX0JXX0FUVFJfQllURV9DUkVESVQsCisgICAgX19EUk1DR1JQX01FTV9C V19BVFRSX0xBU1QsCit9OworCiBzdHJ1Y3QgZHJtY2dycF9kZXZpY2VfcmVzb3VyY2UgewogCS8q IGZvciBwZXIgZGV2aWNlIHN0YXRzICovCiAJczY0CQkJYm9fc3RhdHNfdG90YWxfYWxsb2NhdGVk OwpAQCAtMjcsNiArMzYsMTEgQEAgc3RydWN0IGRybWNncnBfZGV2aWNlX3Jlc291cmNlIHsKIAlz NjQJCQltZW1fc3RhdHNbVFRNX1BMX1BSSVYrMV07CiAJczY0CQkJbWVtX3BlYWtzW1RUTV9QTF9Q UklWKzFdOwogCXM2NAkJCW1lbV9zdGF0c19ldmljdDsKKworCXM2NAkJCW1lbV9id19zdGF0c19s YXN0X3VwZGF0ZV91czsKKwlzNjQJCQltZW1fYndfc3RhdHNbX19EUk1DR1JQX01FTV9CV19BVFRS X0xBU1RdOworCXM2NAkJCW1lbV9id19saW1pdHNfYnl0ZXNfaW5fcGVyaW9kOworCXM2NAkJCW1l bV9id19saW1pdHNfYXZnX2J5dGVzX3Blcl91czsKIH07CiAKIHN0cnVjdCBkcm1jZ3JwIHsKZGlm ZiAtLWdpdCBhL2tlcm5lbC9jZ3JvdXAvZHJtLmMgYi9rZXJuZWwvY2dyb3VwL2RybS5jCmluZGV4 IDVmNWZhNmEyYjA2OC4uYmJjNjYxMjIwMGE0IDEwMDY0NAotLS0gYS9rZXJuZWwvY2dyb3VwL2Ry bS5jCisrKyBiL2tlcm5lbC9jZ3JvdXAvZHJtLmMKQEAgLTcsNiArNyw3IEBACiAjaW5jbHVkZSA8 bGludXgvc2VxX2ZpbGUuaD4KICNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgogI2luY2x1ZGUgPGxp bnV4L2Nncm91cF9kcm0uaD4KKyNpbmNsdWRlIDxsaW51eC9rdGltZS5oPgogI2luY2x1ZGUgPGxp bnV4L2tlcm5lbC5oPgogI2luY2x1ZGUgPGRybS90dG0vdHRtX2JvX2FwaS5oPgogI2luY2x1ZGUg PGRybS90dG0vdHRtX2JvX2RyaXZlci5oPgpAQCAtMjIsNiArMjMsMTIgQEAgc3RydWN0IGRybWNn cnBfZGV2aWNlIHsKIAogCXM2NAkJCWJvX2xpbWl0c190b3RhbF9hbGxvY2F0ZWRfZGVmYXVsdDsK IAlzaXplX3QJCQlib19saW1pdHNfcGVha19hbGxvY2F0ZWRfZGVmYXVsdDsKKworCXM2NAkJCW1l bV9id19saW1pdHNfcGVyaW9kX2luX3VzOworCXM2NAkJCW1lbV9id19saW1pdHNfcGVyaW9kX2lu X3VzX2RlZmF1bHQ7CisKKwlzNjQJCQltZW1fYndfYnl0ZXNfaW5fcGVyaW9kX2RlZmF1bHQ7CisJ czY0CQkJbWVtX2J3X2F2Z19ieXRlc19wZXJfdXNfZGVmYXVsdDsKIH07CiAKICNkZWZpbmUgRFJN Q0dfQ1RGX1BSSVZfU0laRSAzCkBAIC0zOSw2ICs0Niw4IEBAIGVudW0gZHJtY2dycF9yZXNfdHlw ZSB7CiAJRFJNQ0dSUF9UWVBFX01FTSwKIAlEUk1DR1JQX1RZUEVfTUVNX0VWSUNULAogCURSTUNH UlBfVFlQRV9NRU1fUEVBSywKKwlEUk1DR1JQX1RZUEVfQkFORFdJRFRILAorCURSTUNHUlBfVFlQ RV9CQU5EV0lEVEhfUEVSSU9EX0JVUlNULAogfTsKIAogZW51bSBkcm1jZ3JwX2ZpbGVfdHlwZSB7 CkBAIC01NCw2ICs2MywxNyBAQCBzdGF0aWMgY2hhciBjb25zdCAqdHRtX3BsYWNlbWVudF9uYW1l c1tdID0gewogCVtUVE1fUExfUFJJVl0gICA9ICJwcml2IiwKIH07CiAKK3N0YXRpYyBjaGFyIGNv bnN0ICptZW1fYndfYXR0cl9uYW1lc1tdID0geworCVtEUk1DR1JQX01FTV9CV19BVFRSX0JZVEVf TU9WRURdID0gIm1vdmVkX2J5dGUiLAorCVtEUk1DR1JQX01FTV9CV19BVFRSX0FDQ1VNX1VTXSA9 ICJhY2N1bV91cyIsCisJW0RSTUNHUlBfTUVNX0JXX0FUVFJfVE9UQUxfQllURV9NT1ZFRF0gPSAi dG90YWxfbW92ZWRfYnl0ZSIsCisJW0RSTUNHUlBfTUVNX0JXX0FUVFJfVE9UQUxfQUNDVU1fVVNd ID0gInRvdGFsX2FjY3VtX3VzIiwKKwlbRFJNQ0dSUF9NRU1fQldfQVRUUl9CWVRFX0NSRURJVF0g PSAiYnl0ZV9jcmVkaXQiLAorfTsKKworI2RlZmluZSBNRU1fQldfTElNSVRTX05BTUVfQVZHICJh dmdfYnl0ZXNfcGVyX3VzIgorI2RlZmluZSBNRU1fQldfTElNSVRTX05BTUVfQlVSU1QgImJ5dGVz X2luX3BlcmlvZCIKKwogLyogaW5kZXhlZCBieSBkcm1fbWlub3IgZm9yIGFjY2VzcyBzcGVlZCAq Lwogc3RhdGljIHN0cnVjdCBkcm1jZ3JwX2RldmljZQkqa25vd25fZHJtY2dycF9kZXZzW01BWF9E Uk1fREVWXTsKIApAQCAtODYsNiArMTA2LDkgQEAgc3RhdGljIGlubGluZSBpbnQgaW5pdF9kcm1j Z3JwX3NpbmdsZShzdHJ1Y3QgZHJtY2dycCAqZHJtY2dycCwgaW50IG1pbm9yKQogCQlpZiAoIWRk cikKIAkJCXJldHVybiAtRU5PTUVNOwogCisJCWRkci0+bWVtX2J3X3N0YXRzX2xhc3RfdXBkYXRl X3VzID0ga3RpbWVfdG9fdXMoa3RpbWVfZ2V0KCkpOworCQlkZHItPm1lbV9id19zdGF0c1tEUk1D R1JQX01FTV9CV19BVFRSX0FDQ1VNX1VTXSA9IDE7CisKIAkJZHJtY2dycC0+ZGV2X3Jlc291cmNl c1ttaW5vcl0gPSBkZHI7CiAJfQogCkBAIC05Niw2ICsxMTksMTIgQEAgc3RhdGljIGlubGluZSBp bnQgaW5pdF9kcm1jZ3JwX3NpbmdsZShzdHJ1Y3QgZHJtY2dycCAqZHJtY2dycCwgaW50IG1pbm9y KQogCiAJCWRkci0+Ym9fbGltaXRzX3BlYWtfYWxsb2NhdGVkID0KIAkJICBrbm93bl9kcm1jZ3Jw X2RldnNbbWlub3JdLT5ib19saW1pdHNfcGVha19hbGxvY2F0ZWRfZGVmYXVsdDsKKworCQlkZHIt Pm1lbV9id19saW1pdHNfYnl0ZXNfaW5fcGVyaW9kID0KKwkJICBrbm93bl9kcm1jZ3JwX2RldnNb bWlub3JdLT5tZW1fYndfYnl0ZXNfaW5fcGVyaW9kX2RlZmF1bHQ7CisKKwkJZGRyLT5tZW1fYndf bGltaXRzX2F2Z19ieXRlc19wZXJfdXMgPQorCQkgIGtub3duX2RybWNncnBfZGV2c1ttaW5vcl0t Pm1lbV9id19hdmdfYnl0ZXNfcGVyX3VzX2RlZmF1bHQ7CiAJfQogCiAJcmV0dXJuIDA7CkBAIC0x NDMsNiArMTcyLDI2IEBAIGRybWNncnBfY3NzX2FsbG9jKHN0cnVjdCBjZ3JvdXBfc3Vic3lzX3N0 YXRlICpwYXJlbnRfY3NzKQogCXJldHVybiAmZHJtY2dycC0+Y3NzOwogfQogCitzdGF0aWMgaW5s aW5lIHZvaWQgZHJtY2dycF9tZW1fYnVyc3RfYndfc3RhdHNfcmVzZXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKK3sKKwlzdHJ1Y3QgY2dyb3VwX3N1YnN5c19zdGF0ZSAqcG9zOworCXN0cnVjdCBk cm1jZ3JwICpub2RlOworCXN0cnVjdCBkcm1jZ3JwX2RldmljZV9yZXNvdXJjZSAqZGRyOworCWlu dCBkZXZJZHg7CisKKwlkZXZJZHggPSAgZGV2LT5wcmltYXJ5LT5pbmRleDsKKworCXJjdV9yZWFk X2xvY2soKTsKKwljc3NfZm9yX2VhY2hfZGVzY2VuZGFudF9wcmUocG9zLCAmcm9vdF9kcm1jZ3Jw LT5jc3MpIHsKKwkJbm9kZSA9IGNzc19kcm1jZ3JwKHBvcyk7CisJCWRkciA9IG5vZGUtPmRldl9y ZXNvdXJjZXNbZGV2SWR4XTsKKworCQlkZHItPm1lbV9id19zdGF0c1tEUk1DR1JQX01FTV9CV19B VFRSX0FDQ1VNX1VTXSA9IDE7CisJCWRkci0+bWVtX2J3X3N0YXRzW0RSTUNHUlBfTUVNX0JXX0FU VFJfQllURV9NT1ZFRF0gPSAwOworCX0KKwlyY3VfcmVhZF91bmxvY2soKTsKK30KKwogc3RhdGlj IGlubGluZSB2b2lkIGRybWNncnBfcHJpbnRfc3RhdHMoc3RydWN0IGRybWNncnBfZGV2aWNlX3Jl c291cmNlICpkZHIsCiAJCXN0cnVjdCBzZXFfZmlsZSAqc2YsIGVudW0gZHJtY2dycF9yZXNfdHlw ZSB0eXBlKQogewpAQCAtMTc5LDYgKzIyOCwzMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZHJtY2dy cF9wcmludF9zdGF0cyhzdHJ1Y3QgZHJtY2dycF9kZXZpY2VfcmVzb3VyY2UgKmRkciwKIAkJfQog CQlzZXFfcHV0cyhzZiwgIlxuIik7CiAJCWJyZWFrOworCWNhc2UgRFJNQ0dSUF9UWVBFX0JBTkRX SURUSDoKKwkJaWYgKGRkci0+bWVtX2J3X3N0YXRzW0RSTUNHUlBfTUVNX0JXX0FUVFJfQUNDVU1f VVNdID09IDApCisJCQlzZXFfcHV0cyhzZiwgImJ1cnN0X2J5dGVfcGVyX3VzPU5hTiAiKTsKKwkJ ZWxzZQorCQkJc2VxX3ByaW50ZihzZiwgImJ1cnN0X2J5dGVfcGVyX3VzPSVsbGQgIiwKKwkJCQlk ZHItPm1lbV9id19zdGF0c1sKKwkJCQlEUk1DR1JQX01FTV9CV19BVFRSX0JZVEVfTU9WRURdLwor CQkJCWRkci0+bWVtX2J3X3N0YXRzWworCQkJCURSTUNHUlBfTUVNX0JXX0FUVFJfQUNDVU1fVVNd KTsKKworCQlpZiAoZGRyLT5tZW1fYndfc3RhdHNbRFJNQ0dSUF9NRU1fQldfQVRUUl9UT1RBTF9B Q0NVTV9VU10gPT0gMCkKKwkJCXNlcV9wdXRzKHNmLCAiYXZnX2J5dGVzX3Blcl91cz1OYU4gIik7 CisJCWVsc2UKKwkJCXNlcV9wcmludGYoc2YsICJhdmdfYnl0ZXNfcGVyX3VzPSVsbGQgIiwKKwkJ CQlkZHItPm1lbV9id19zdGF0c1sKKwkJCQlEUk1DR1JQX01FTV9CV19BVFRSX1RPVEFMX0JZVEVf TU9WRURdLworCQkJCWRkci0+bWVtX2J3X3N0YXRzWworCQkJCURSTUNHUlBfTUVNX0JXX0FUVFJf VE9UQUxfQUNDVU1fVVNdKTsKKworCQlmb3IgKGkgPSAwOyBpIDwgX19EUk1DR1JQX01FTV9CV19B VFRSX0xBU1Q7IGkrKykgeworCQkJc2VxX3ByaW50ZihzZiwgIiVzPSVsbGQgIiwgbWVtX2J3X2F0 dHJfbmFtZXNbaV0sCisJCQkJCWRkci0+bWVtX2J3X3N0YXRzW2ldKTsKKwkJfQorCQlzZXFfcHV0 cyhzZiwgIlxuIik7CisJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXNlcV9wdXRzKHNmLCAiXG4iKTsK IAkJYnJlYWs7CkBAIC0xODYsOSArMjYwLDkgQEAgc3RhdGljIGlubGluZSB2b2lkIGRybWNncnBf cHJpbnRfc3RhdHMoc3RydWN0IGRybWNncnBfZGV2aWNlX3Jlc291cmNlICpkZHIsCiB9CiAKIHN0 YXRpYyBpbmxpbmUgdm9pZCBkcm1jZ3JwX3ByaW50X2xpbWl0cyhzdHJ1Y3QgZHJtY2dycF9kZXZp Y2VfcmVzb3VyY2UgKmRkciwKLQkJc3RydWN0IHNlcV9maWxlICpzZiwgZW51bSBkcm1jZ3JwX3Jl c190eXBlIHR5cGUpCisJCXN0cnVjdCBzZXFfZmlsZSAqc2YsIGVudW0gZHJtY2dycF9yZXNfdHlw ZSB0eXBlLCBpbnQgbWlub3IpCiB7Ci0JaWYgKGRkciA9PSBOVUxMKSB7CisJaWYgKGRkciA9PSBO VUxMIHx8IGtub3duX2RybWNncnBfZGV2c1ttaW5vcl0gPT0gTlVMTCkgewogCQlzZXFfcHV0cyhz ZiwgIlxuIik7CiAJCXJldHVybjsKIAl9CkBAIC0yMDAsNiArMjc0LDE3IEBAIHN0YXRpYyBpbmxp bmUgdm9pZCBkcm1jZ3JwX3ByaW50X2xpbWl0cyhzdHJ1Y3QgZHJtY2dycF9kZXZpY2VfcmVzb3Vy Y2UgKmRkciwKIAljYXNlIERSTUNHUlBfVFlQRV9CT19QRUFLOgogCQlzZXFfcHJpbnRmKHNmLCAi JXp1XG4iLCBkZHItPmJvX2xpbWl0c19wZWFrX2FsbG9jYXRlZCk7CiAJCWJyZWFrOworCWNhc2Ug RFJNQ0dSUF9UWVBFX0JBTkRXSURUSF9QRVJJT0RfQlVSU1Q6CisJCXNlcV9wcmludGYoc2YsICIl bGxkXG4iLAorCQkJa25vd25fZHJtY2dycF9kZXZzW21pbm9yXS0+bWVtX2J3X2xpbWl0c19wZXJp b2RfaW5fdXMpOworCQlicmVhazsKKwljYXNlIERSTUNHUlBfVFlQRV9CQU5EV0lEVEg6CisJCXNl cV9wcmludGYoc2YsICIlcz0lbGxkICVzPSVsbGRcbiIsCisJCQkJTUVNX0JXX0xJTUlUU19OQU1F X0JVUlNULAorCQkJCWRkci0+bWVtX2J3X2xpbWl0c19ieXRlc19pbl9wZXJpb2QsCisJCQkJTUVN X0JXX0xJTUlUU19OQU1FX0FWRywKKwkJCQlkZHItPm1lbV9id19saW1pdHNfYXZnX2J5dGVzX3Bl cl91cyk7CisJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXNlcV9wdXRzKHNmLCAiXG4iKTsKIAkJYnJl YWs7CkBAIC0yMjMsNiArMzA4LDE3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkcm1jZ3JwX3ByaW50 X2RlZmF1bHQoc3RydWN0IGRybWNncnBfZGV2aWNlICpkZGV2LAogCQlzZXFfcHJpbnRmKHNmLCAi JXp1XG4iLAogCQkJCWRkZXYtPmJvX2xpbWl0c19wZWFrX2FsbG9jYXRlZF9kZWZhdWx0KTsKIAkJ YnJlYWs7CisJY2FzZSBEUk1DR1JQX1RZUEVfQkFORFdJRFRIX1BFUklPRF9CVVJTVDoKKwkJc2Vx X3ByaW50ZihzZiwgIiVsbGRcbiIsCisJCQkJZGRldi0+bWVtX2J3X2xpbWl0c19wZXJpb2RfaW5f dXNfZGVmYXVsdCk7CisJCWJyZWFrOworCWNhc2UgRFJNQ0dSUF9UWVBFX0JBTkRXSURUSDoKKwkJ c2VxX3ByaW50ZihzZiwgIiVzPSVsbGQgJXM9JWxsZFxuIiwKKwkJCQlNRU1fQldfTElNSVRTX05B TUVfQlVSU1QsCisJCQkJZGRldi0+bWVtX2J3X2J5dGVzX2luX3BlcmlvZF9kZWZhdWx0LAorCQkJ CU1FTV9CV19MSU1JVFNfTkFNRV9BVkcsCisJCQkJZGRldi0+bWVtX2J3X2F2Z19ieXRlc19wZXJf dXNfZGVmYXVsdCk7CisJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXNlcV9wdXRzKHNmLCAiXG4iKTsK IAkJYnJlYWs7CkBAIC0yNTEsNyArMzQ3LDcgQEAgaW50IGRybWNncnBfYm9fc2hvdyhzdHJ1Y3Qg c2VxX2ZpbGUgKnNmLCB2b2lkICp2KQogCQkJZHJtY2dycF9wcmludF9zdGF0cyhkZHIsIHNmLCB0 eXBlKTsKIAkJCWJyZWFrOwogCQljYXNlIERSTUNHUlBfRlRZUEVfTElNSVQ6Ci0JCQlkcm1jZ3Jw X3ByaW50X2xpbWl0cyhkZHIsIHNmLCB0eXBlKTsKKwkJCWRybWNncnBfcHJpbnRfbGltaXRzKGRk ciwgc2YsIHR5cGUsIGkpOwogCQkJYnJlYWs7CiAJCWNhc2UgRFJNQ0dSUF9GVFlQRV9ERUZBVUxU OgogCQkJZHJtY2dycF9wcmludF9kZWZhdWx0KGRkZXYsIHNmLCB0eXBlKTsKQEAgLTMxNyw2ICs0 MTMsOSBAQCBzc2l6ZV90IGRybWNncnBfYm9fbGltaXRfd3JpdGUoc3RydWN0IGtlcm5mc19vcGVu X2ZpbGUgKm9mLCBjaGFyICpidWYsCiAJc3RydWN0IGRybWNncnBfZGV2aWNlX3Jlc291cmNlICpk ZHI7CiAJY2hhciAqbGluZTsKIAljaGFyIHNhdHRyWzI1Nl07CisJY2hhciBzdmFsWzI1Nl07CisJ Y2hhciAqbmVzdGVkOworCWNoYXIgKmF0dHI7CiAJczY0IHZhbDsKIAlzNjQgcF9tYXg7CiAJaW50 IHJjOwpAQCAtMzgxLDYgKzQ4MCw3OCBAQCBzc2l6ZV90IGRybWNncnBfYm9fbGltaXRfd3JpdGUo c3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLCBjaGFyICpidWYsCiAKIAkJCWRkci0+Ym9fbGlt aXRzX3BlYWtfYWxsb2NhdGVkID0gdmFsOwogCQkJYnJlYWs7CisJCWNhc2UgRFJNQ0dSUF9UWVBF X0JBTkRXSURUSF9QRVJJT0RfQlVSU1Q6CisJCQlyYyA9IGRybWNncnBfcHJvY2Vzc19saW1pdF92 YWwoc2F0dHIsIGZhbHNlLAorCQkJCWRkZXYtPm1lbV9id19saW1pdHNfcGVyaW9kX2luX3VzX2Rl ZmF1bHQsCisJCQkJUzY0X01BWCwKKwkJCQkmdmFsKTsKKworCQkJaWYgKHJjIHx8IHZhbCA8IDIw MDApIHsKKwkJCQlkcm1jZ3JwX3ByX2NmdF9lcnIoZHJtY2dycCwgY2Z0X25hbWUsIG1pbm9yKTsK KwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJZGRldi0+bWVtX2J3X2xpbWl0c19wZXJpb2RfaW5f dXM9IHZhbDsKKwkJCWRybWNncnBfbWVtX2J1cnN0X2J3X3N0YXRzX3Jlc2V0KGRkZXYtPmRldik7 CisJCQlicmVhazsKKwkJY2FzZSBEUk1DR1JQX1RZUEVfQkFORFdJRFRIOgorCQkJbmVzdGVkID0g c3Ryc3RyaXAoc2F0dHIpOworCisJCQl3aGlsZSAobmVzdGVkICE9IE5VTEwpIHsKKwkJCQlhdHRy ID0gc3Ryc2VwKCZuZXN0ZWQsICIgIik7CisKKwkJCQlpZiAoc3NjYW5mKGF0dHIsIE1FTV9CV19M SU1JVFNfTkFNRV9CVVJTVCI9JXMiLAorCQkJCQkJCXN2YWwpID09IDEpIHsKKwkJCQkJcF9tYXgg PSBwYXJlbnQgPT0gTlVMTCA/IFM2NF9NQVggOgorCQkJCQkJcGFyZW50LT4KKwkJCQkJCWRldl9y ZXNvdXJjZXNbbWlub3JdLT4KKwkJCQkJCW1lbV9id19saW1pdHNfYnl0ZXNfaW5fcGVyaW9kOwor CisJCQkJCXJjID0gZHJtY2dycF9wcm9jZXNzX2xpbWl0X3ZhbChzdmFsLAorCQkJCQkJdHJ1ZSwK KwkJCQkJCWRkZXYtPgorCQkJCQkJbWVtX2J3X2J5dGVzX2luX3BlcmlvZF9kZWZhdWx0LAorCQkJ CQkJcF9tYXgsCisJCQkJCQkmdmFsKTsKKworCQkJCQlpZiAocmMgfHwgdmFsIDwgMCkgeworCQkJ CQkJZHJtY2dycF9wcl9jZnRfZXJyKGRybWNncnAsCisJCQkJCQkJCWNmdF9uYW1lLAorCQkJCQkJ CQltaW5vcik7CisJCQkJCQljb250aW51ZTsKKwkJCQkJfQorCisJCQkJCWRkci0+bWVtX2J3X2xp bWl0c19ieXRlc19pbl9wZXJpb2Q9dmFsOworCQkJCQljb250aW51ZTsKKwkJCQl9CisKKwkJCQlp ZiAoc3NjYW5mKGF0dHIsIE1FTV9CV19MSU1JVFNfTkFNRV9BVkciPSVzIiwKKwkJCQkJCQlzdmFs KSA9PSAxKSB7CisJCQkJCXBfbWF4ID0gcGFyZW50ID09IE5VTEwgPyBTNjRfTUFYIDoKKwkJCQkJ CXBhcmVudC0+CisJCQkJCQlkZXZfcmVzb3VyY2VzW21pbm9yXS0+CisJCQkJCQltZW1fYndfbGlt aXRzX2F2Z19ieXRlc19wZXJfdXM7CisKKwkJCQkJcmMgPSBkcm1jZ3JwX3Byb2Nlc3NfbGltaXRf dmFsKHN2YWwsCisJCQkJCQl0cnVlLAorCQkJCQkJZGRldi0+CisJCQkJCSAgICAgIG1lbV9id19h dmdfYnl0ZXNfcGVyX3VzX2RlZmF1bHQsCisJCQkJCQlwX21heCwKKwkJCQkJCSZ2YWwpOworCisJ CQkJCWlmIChyYyB8fCB2YWwgPCAwKSB7CisJCQkJCQlkcm1jZ3JwX3ByX2NmdF9lcnIoZHJtY2dy cCwKKwkJCQkJCQkJY2Z0X25hbWUsCisJCQkJCQkJCW1pbm9yKTsKKwkJCQkJCWNvbnRpbnVlOwor CQkJCQl9CisKKwkJCQkJZGRyLT4KKwkJCQkJbWVtX2J3X2xpbWl0c19hdmdfYnl0ZXNfcGVyX3Vz PXZhbDsKKwkJCQkJY29udGludWU7CisJCQkJfQorCQkJfQorCQkJYnJlYWs7CiAJCWRlZmF1bHQ6 CiAJCQlicmVhazsKIAkJfQpAQCAtNDU0LDYgKzYyNSw0MSBAQCBzdHJ1Y3QgY2Z0eXBlIGZpbGVz W10gPSB7CiAJCS5wcml2YXRlID0gRFJNQ0dfQ1RGX1BSSVYoRFJNQ0dSUF9UWVBFX01FTV9QRUFL LAogCQkJCQkJRFJNQ0dSUF9GVFlQRV9TVEFUUyksCiAJfSwKKwl7CisJCS5uYW1lID0gImJ1cnN0 X2J3X3BlcmlvZF9pbl91cyIsCisJCS53cml0ZSA9IGRybWNncnBfYm9fbGltaXRfd3JpdGUsCisJ CS5zZXFfc2hvdyA9IGRybWNncnBfYm9fc2hvdywKKwkJLmZsYWdzID0gQ0ZUWVBFX09OTFlfT05f Uk9PVCwKKwkJLnByaXZhdGUgPSBEUk1DR19DVEZfUFJJVihEUk1DR1JQX1RZUEVfQkFORFdJRFRI X1BFUklPRF9CVVJTVCwKKwkJCQkJCURSTUNHUlBfRlRZUEVfTElNSVQpLAorCX0sCisJeworCQku bmFtZSA9ICJidXJzdF9id19wZXJpb2RfaW5fdXMuZGVmYXVsdCIsCisJCS5zZXFfc2hvdyA9IGRy bWNncnBfYm9fc2hvdywKKwkJLmZsYWdzID0gQ0ZUWVBFX09OTFlfT05fUk9PVCwKKwkJLnByaXZh dGUgPSBEUk1DR19DVEZfUFJJVihEUk1DR1JQX1RZUEVfQkFORFdJRFRIX1BFUklPRF9CVVJTVCwK KwkJCQkJCURSTUNHUlBfRlRZUEVfREVGQVVMVCksCisJfSwKKwl7CisJCS5uYW1lID0gImJhbmR3 aWR0aC5zdGF0cyIsCisJCS5zZXFfc2hvdyA9IGRybWNncnBfYm9fc2hvdywKKwkJLnByaXZhdGUg PSBEUk1DR19DVEZfUFJJVihEUk1DR1JQX1RZUEVfQkFORFdJRFRILAorCQkJCQkJRFJNQ0dSUF9G VFlQRV9TVEFUUyksCisJfSwKKwl7CisJCS5uYW1lID0gImJhbmR3aWR0aC5oaWdoIiwKKwkJLndy aXRlID0gZHJtY2dycF9ib19saW1pdF93cml0ZSwKKwkJLnNlcV9zaG93ID0gZHJtY2dycF9ib19z aG93LAorCQkucHJpdmF0ZSA9IERSTUNHX0NURl9QUklWKERSTUNHUlBfVFlQRV9CQU5EV0lEVEgs CisJCQkJCQlEUk1DR1JQX0ZUWVBFX0xJTUlUKSwKKwl9LAorCXsKKwkJLm5hbWUgPSAiYmFuZHdp ZHRoLmRlZmF1bHQiLAorCQkuc2VxX3Nob3cgPSBkcm1jZ3JwX2JvX3Nob3csCisJCS5mbGFncyA9 IENGVFlQRV9PTkxZX09OX1JPT1QsCisJCS5wcml2YXRlID0gRFJNQ0dfQ1RGX1BSSVYoRFJNQ0dS UF9UWVBFX0JBTkRXSURUSCwKKwkJCQkJCURSTUNHUlBfRlRZUEVfREVGQVVMVCksCisJfSwKIAl7 IH0JLyogdGVybWluYXRlICovCiB9OwogCkBAIC00NzYsNiArNjgyLDEwIEBAIGludCBkcm1jZ3Jw X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCWRkZXYtPmRldiA9IGRl djsKIAlkZGV2LT5ib19saW1pdHNfdG90YWxfYWxsb2NhdGVkX2RlZmF1bHQgPSBTNjRfTUFYOwog CWRkZXYtPmJvX2xpbWl0c19wZWFrX2FsbG9jYXRlZF9kZWZhdWx0ID0gU0laRV9NQVg7CisJZGRl di0+bWVtX2J3X2xpbWl0c19wZXJpb2RfaW5fdXNfZGVmYXVsdCA9IDIwMDAwMDsKKwlkZGV2LT5t ZW1fYndfbGltaXRzX3BlcmlvZF9pbl91cyA9IDIwMDAwMDsKKwlkZGV2LT5tZW1fYndfYnl0ZXNf aW5fcGVyaW9kX2RlZmF1bHQgPSBTNjRfTUFYOworCWRkZXYtPm1lbV9id19hdmdfYnl0ZXNfcGVy X3VzX2RlZmF1bHQgPSA2NTUzNjsKIAogCW11dGV4X2luaXQoJmRkZXYtPm11dGV4KTsKIApAQCAt NjUyLDYgKzg2MiwyNyBAQCB2b2lkIGRybWNncnBfdW5jaGdfbWVtKHN0cnVjdCB0dG1fYnVmZmVy X29iamVjdCAqdGJvKQogfQogRVhQT1JUX1NZTUJPTChkcm1jZ3JwX3VuY2hnX21lbSk7CiAKK3N0 YXRpYyBpbmxpbmUgdm9pZCBkcm1jZ3JwX21lbV9id19hY2N1bShzNjQgdGltZV91cywKKwkJc3Ry dWN0IGRybWNncnBfZGV2aWNlX3Jlc291cmNlICpkZHIpCit7CisJczY0IGluY3JlbWVudF91cyA9 IHRpbWVfdXMgLSBkZHItPm1lbV9id19zdGF0c19sYXN0X3VwZGF0ZV91czsKKwlzNjQgbmV3X2Ny ZWRpdCA9IGRkci0+bWVtX2J3X2xpbWl0c19hdmdfYnl0ZXNfcGVyX3VzICogaW5jcmVtZW50X3Vz OworCisJZGRyLT5tZW1fYndfc3RhdHNbRFJNQ0dSUF9NRU1fQldfQVRUUl9BQ0NVTV9VU10KKwkJ Kz0gaW5jcmVtZW50X3VzOworCWRkci0+bWVtX2J3X3N0YXRzW0RSTUNHUlBfTUVNX0JXX0FUVFJf VE9UQUxfQUNDVU1fVVNdCisJCSs9IGluY3JlbWVudF91czsKKworCWlmICgoUzY0X01BWCAtIG5l d19jcmVkaXQpID4KKwkJCWRkci0+bWVtX2J3X3N0YXRzW0RSTUNHUlBfTUVNX0JXX0FUVFJfQllU RV9DUkVESVRdKQorCQlkZHItPm1lbV9id19zdGF0c1tEUk1DR1JQX01FTV9CV19BVFRSX0JZVEVf Q1JFRElUXQorCQkJKz0gbmV3X2NyZWRpdDsKKwllbHNlCisJCWRkci0+bWVtX2J3X3N0YXRzW0RS TUNHUlBfTUVNX0JXX0FUVFJfQllURV9DUkVESVRdID0gUzY0X01BWDsKKworCWRkci0+bWVtX2J3 X3N0YXRzX2xhc3RfdXBkYXRlX3VzID0gdGltZV91czsKK30KKwogdm9pZCBkcm1jZ3JwX21lbV90 cmFja19tb3ZlKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqb2xkX2JvLCBib29sIGV2aWN0LAog CQlzdHJ1Y3QgdHRtX21lbV9yZWcgKm5ld19tZW0pCiB7CkBAIC02NjEsNiArODkyLDcgQEAgdm9p ZCBkcm1jZ3JwX21lbV90cmFja19tb3ZlKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqb2xkX2Jv LCBib29sIGV2aWN0LAogCWludCBkZXZJZHggPSBkZXYtPnByaW1hcnktPmluZGV4OwogCWludCBv bGRfbWVtX3R5cGUgPSBvbGRfYm8tPm1lbS5tZW1fdHlwZTsKIAlpbnQgbmV3X21lbV90eXBlID0g bmV3X21lbS0+bWVtX3R5cGU7CisJczY0IHRpbWVfdXM7CiAJc3RydWN0IGRybWNncnBfZGV2aWNl X3Jlc291cmNlICpkZHI7CiAJc3RydWN0IGRybWNncnBfZGV2aWNlICprbm93bl9kZXY7CiAKQEAg LTY3Miw2ICs5MDQsMTQgQEAgdm9pZCBkcm1jZ3JwX21lbV90cmFja19tb3ZlKHN0cnVjdCB0dG1f YnVmZmVyX29iamVjdCAqb2xkX2JvLCBib29sIGV2aWN0LAogCW9sZF9tZW1fdHlwZSA9IG9sZF9t ZW1fdHlwZSA+IFRUTV9QTF9QUklWID8gVFRNX1BMX1BSSVYgOiBvbGRfbWVtX3R5cGU7CiAJbmV3 X21lbV90eXBlID0gbmV3X21lbV90eXBlID4gVFRNX1BMX1BSSVYgPyBUVE1fUExfUFJJViA6IG5l d19tZW1fdHlwZTsKIAorCWlmIChyb290X2RybWNncnAtPmRldl9yZXNvdXJjZXNbZGV2SWR4XSAh PSBOVUxMICYmCisJCQlyb290X2RybWNncnAtPmRldl9yZXNvdXJjZXNbZGV2SWR4XS0+CisJCQlt ZW1fYndfc3RhdHNbRFJNQ0dSUF9NRU1fQldfQVRUUl9BQ0NVTV9VU10gPj0KKwkJCWtub3duX2Rl di0+bWVtX2J3X2xpbWl0c19wZXJpb2RfaW5fdXMpCisJCWRybWNncnBfbWVtX2J1cnN0X2J3X3N0 YXRzX3Jlc2V0KGRldik7CisKKwl0aW1lX3VzID0ga3RpbWVfdG9fdXMoa3RpbWVfZ2V0KCkpOwor CiAJbXV0ZXhfbG9jaygma25vd25fZGV2LT5tdXRleCk7CiAJZm9yICggOyBkcm1jZ3JwICE9IE5V TEw7IGRybWNncnAgPSBwYXJlbnRfZHJtY2dycChkcm1jZ3JwKSkgewogCQlkZHIgPSBkcm1jZ3Jw LT5kZXZfcmVzb3VyY2VzW2RldklkeF07CkBAIC02ODQsNyArOTI0LDcwIEBAIHZvaWQgZHJtY2dy cF9tZW1fdHJhY2tfbW92ZShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKm9sZF9ibywgYm9vbCBl dmljdCwKIAogCQlpZiAoZXZpY3QpCiAJCQlkZHItPm1lbV9zdGF0c19ldmljdCsrOworCisJCWRy bWNncnBfbWVtX2J3X2FjY3VtKHRpbWVfdXMsIGRkcik7CisKKwkJZGRyLT5tZW1fYndfc3RhdHNb RFJNQ0dSUF9NRU1fQldfQVRUUl9CWVRFX01PVkVEXQorCQkJKz0gbW92ZV9pbl9ieXRlczsKKwkJ ZGRyLT5tZW1fYndfc3RhdHNbRFJNQ0dSUF9NRU1fQldfQVRUUl9UT1RBTF9CWVRFX01PVkVEXQor CQkJKz0gbW92ZV9pbl9ieXRlczsKKworCQlkZHItPm1lbV9id19zdGF0c1tEUk1DR1JQX01FTV9C V19BVFRSX0JZVEVfQ1JFRElUXQorCQkJLT0gbW92ZV9pbl9ieXRlczsKIAl9CiAJbXV0ZXhfdW5s b2NrKCZrbm93bl9kZXYtPm11dGV4KTsKIH0KIEVYUE9SVF9TWU1CT0woZHJtY2dycF9tZW1fdHJh Y2tfbW92ZSk7CisKK3Vuc2lnbmVkIGludCBkcm1jZ3JwX2dldF9tZW1fYndfcGVyaW9kX2luX3Vz KHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqdGJvKQoreworCWludCBkZXZJZHg7CisKKwkvL1RP RE8gcmVwbGFjZSB3aXRoIEJVR19PTgorCWlmICh0Ym8tPmJkZXYtPmRkZXYgPT0gTlVMTCkKKwkJ cmV0dXJuIDA7CisKKwlkZXZJZHggPSB0Ym8tPmJkZXYtPmRkZXYtPnByaW1hcnktPmluZGV4Owor CisJcmV0dXJuICh1bnNpZ25lZCBpbnQpIGtub3duX2RybWNncnBfZGV2c1tkZXZJZHhdLT4KKwkJ bWVtX2J3X2xpbWl0c19wZXJpb2RfaW5fdXM7Cit9CitFWFBPUlRfU1lNQk9MKGRybWNncnBfZ2V0 X21lbV9id19wZXJpb2RfaW5fdXMpOworCitib29sIGRybWNncnBfbWVtX2Nhbl9tb3ZlKHN0cnVj dCB0dG1fYnVmZmVyX29iamVjdCAqdGJvKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSB0 Ym8tPmJkZXYtPmRkZXY7CisJc3RydWN0IGRybWNncnAgKmRybWNncnAgPSB0Ym8tPmRybWNncnA7 CisJaW50IGRldklkeCA9IGRldi0+cHJpbWFyeS0+aW5kZXg7CisJczY0IHRpbWVfdXM7CisJc3Ry dWN0IGRybWNncnBfZGV2aWNlX3Jlc291cmNlICpkZHI7CisJYm9vbCByZXN1bHQgPSB0cnVlOwor CisJaWYgKHJvb3RfZHJtY2dycC0+ZGV2X3Jlc291cmNlc1tkZXZJZHhdICE9IE5VTEwgJiYKKwkJ CXJvb3RfZHJtY2dycC0+ZGV2X3Jlc291cmNlc1tkZXZJZHhdLT4KKwkJCW1lbV9id19zdGF0c1tE Uk1DR1JQX01FTV9CV19BVFRSX0FDQ1VNX1VTXSA+PQorCQkJa25vd25fZHJtY2dycF9kZXZzW2Rl dklkeF0tPgorCQkJbWVtX2J3X2xpbWl0c19wZXJpb2RfaW5fdXMpCisJCWRybWNncnBfbWVtX2J1 cnN0X2J3X3N0YXRzX3Jlc2V0KGRldik7CisKKwl0aW1lX3VzID0ga3RpbWVfdG9fdXMoa3RpbWVf Z2V0KCkpOworCisJbXV0ZXhfbG9jaygma25vd25fZHJtY2dycF9kZXZzW2RldklkeF0tPm11dGV4 KTsKKwlmb3IgKCA7IGRybWNncnAgIT0gTlVMTDsgZHJtY2dycCA9IHBhcmVudF9kcm1jZ3JwKGRy bWNncnApKSB7CisJCWRkciA9IGRybWNncnAtPmRldl9yZXNvdXJjZXNbZGV2SWR4XTsKKworCQlk cm1jZ3JwX21lbV9id19hY2N1bSh0aW1lX3VzLCBkZHIpOworCisJCWlmIChyZXN1bHQgJiYKKwkJ CShkZHItPm1lbV9id19zdGF0c1tEUk1DR1JQX01FTV9CV19BVFRSX0JZVEVfTU9WRURdCisJCQkg Pj0gZGRyLT5tZW1fYndfbGltaXRzX2J5dGVzX2luX3BlcmlvZCB8fAorCQkJZGRyLT5tZW1fYndf c3RhdHNbRFJNQ0dSUF9NRU1fQldfQVRUUl9CWVRFX0NSRURJVF0KKwkJCSA8PSAwKSkgeworCQkJ cmVzdWx0ID0gZmFsc2U7CisJCX0KKwl9CisJbXV0ZXhfdW5sb2NrKCZrbm93bl9kcm1jZ3JwX2Rl dnNbZGV2SWR4XS0+bXV0ZXgpOworCisJcmV0dXJuIHJlc3VsdDsKK30KK0VYUE9SVF9TWU1CT0wo ZHJtY2dycF9tZW1fY2FuX21vdmUpOwotLSAKMi4yMS4wCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2FtZC1nZng=