From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 36/36] drm/i915: Support per-context user requests for GPU frequency control Date: Wed, 14 Mar 2018 09:37:48 +0000 Message-ID: <20180314093748.8541-36-chris@chris-wilson.co.uk> References: <20180314093748.8541-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 67FB06E6C1 for ; Wed, 14 Mar 2018 09:39:18 +0000 (UTC) In-Reply-To: <20180314093748.8541-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: praveen.paneri@intel.com List-Id: intel-gfx@lists.freedesktop.org T2Z0ZW4sIHdlIGZpbmQgb3Vyc2VsdmVzIGZhY2luZyBhIHdvcmtsb2FkIHdoZXJlIHRoZSB1c2Vy IGtub3dzIGluCmFkdmFuY2Ugd2hhdCBHUFUgZnJlcXVlbmN5IHRoZXkgcmVxdWlyZSBmb3IgaXQg dG8gY29tcGxldGUgaW4gYSB0aW1lbHkKbWFubmVyLCBhbmQgdXNpbmcgcGFzdCBleHBlcmllbmNl IHRoZXkgY2FuIG91dHBlcmZvcm0gdGhlIEhXIGFzc2lzdGVkClJQUyBhdXRvdHVuaW5nLiBBbiBl eGFtcGxlIG1pZ2h0IGJlIGtvZGkgKEhUUEMpIHdoZXJlIHRoZXkga25vdyB0aGF0CnZpZGVvIGRl Y29kaW5nIGFuZCBjb21wb3NpdGluZyByZXF1aXJlIGEgbWluaW11bSBmcmVxdWVuY3kgdG8gYXZv aWQgZXZlcgpkcm9wcGluZyBhIGZyYW1lLCBvciBjb252ZXJzZWx5IGtub3cgd2hlbiB0aGV5IGFy ZSBpbiBhIHBvd2Vyc2F2aW5nIG1vZGUKYW5kIHdvdWxkIHJhdGhlciBoYXZlIHNsb3dlciB1cGRh dGVzIHRoYW4gcmFtcCB1cCB0aGUgR1BVIGZyZXF1ZW5jeSBhbmQKcG93ZXIgY29uc3VtcHRpb24u IE90aGVyIHdvcmtsb2FkcyBtYXkgZGVmZWF0IHRoZSBhdXRvdHVuaW5nIGVudGlyZWx5CmFuZCBu ZWVkIG1hbnVhbCBjb250cm9sIHRvIG1lZXQgdGhlaXIgcGVyZm9ybWFuY2UgZ29hbHMsIGUuZy4g YnVyc3R5CmFwcGxpY2F0aW9ucyB3aGljaCByZXF1aXJlIGxvdyBsYXRlbmN5LgoKVG8gYWNjb21t b2RhdGUgdGhlIHZhcnlpbmcgbmVlZHMgb2YgZGlmZmVyZW50IGFwcGxpY2F0aW9ucywgdGhhdCBt YXkgYmUKcnVubmluZyBjb25jdXJyZW50bHksIHdlIHdhbnQgYSBtb3JlIGZsZXhpYmxlIHN5c3Rl bSB0aGFuIGEgZ2xvYmFsIGxpbWl0CnN1cHBsaWVkIGJ5IHN5c2ZzLiBUbyB0aGlzIGVuZCwgd2Ug b2ZmZXIgdGhlIGFwcGxpY2F0aW9uIHRoZSBvcHRpb24gdG8Kc2V0IHRoZWlyIGRlc2lyZWQgZnJl cXVlbmN5IGJvdW5kcyBvbiB0aGUgY29udGV4dCBpdHNlbGYsIGFuZCBhcHBseSB0aG9zZQpib3Vu ZHMgd2hlbiB3ZSBleGVjdXRlIGNvbW1hbmRzIGZyb20gdGhlIGFwcGxpY2F0aW9uLCBzd2l0Y2hp bmcgYmV0d2Vlbgpib3VuZHMganVzdCBhcyBlYXNpbHkgYXMgd2Ugc3dpdGNoIGJldHdlZW4gdGhl IGNsaWVudHMgdGhlbXNlbHZlcy4KClRoZSBjbGllbnRzIGNhbiBxdWVyeSB0aGUgcmFuZ2Ugc3Vw cG9ydGVkIGJ5IHRoZSBIVywgb3IgYXQgbGVhc3QgdGhlCnJhbmdlIHRoZXkgYXJlIHJlc3RyaWN0 ZWQgdG8sIGFuZCB0aGVuIGZyZWVseSBzZWxlY3QgZnJlcXVlbmNpZXMgd2l0aGluCnRoYXQgcmFu Z2UgdGhhdCB0aGV5IHdhbnQgdG8gcnVuIGF0LiAoVGhleSBjYW4gc2VsZWN0IGp1c3QgYSBzaW5n bGUKZnJlcXVlbmN5IGlmIHRoZXkgc28gY2hvb3NlLikgQXMgdGhpcyBpcyBzdWJqZWN0IHRvIHRo ZSBnbG9iYWwgbGltaXQKc3VwcGxpZWQgYnkgdGhlIHVzZXIgaW4gc3lzZnMsIGFuZCBhIGNsaWVu dCBjYW4gb25seSByZWR1Y2UgdGhlIHJhbmdlIG9mCmZyZXF1ZW5jaWVzIHRoZXkgYWxsb3cgdGhl IEhXIHRvIHJ1biBhdCwgd2UgYWxsb3cgYWxsIGNsaWVudHMgdG8gYWRqdXN0CnRoZWlyIHJlcXVl c3QgKGFuZCBub3QgcmVzdHJpY3QgcmFpc2luZyB0aGUgbWluaW11bSB0byBwcml2aWxlZ2VkCkNB UF9TWVNfTklDRSBjbGllbnRzKS4KClRlc3RjYXNlOiBpZ3QvZ2VtX2N0eF9mcmVxClNpZ25lZC1v ZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzogSm9vbmFz IExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgpDYzogVHZydGtvIFVy c3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KQ2M6IFByYXZlZW4gUGFuZXJpIDxwcmF2 ZWVuLnBhbmVyaUBpbnRlbC5jb20+CkNjOiBTYWdhciBBIEthbWJsZSA8c2FnYXIuYS5rYW1ibGVA aW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAg ICAgICAgICAgIHwgIDE2ICsrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAg ICAgICAgICAgICAgICAgfCAgIDUgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29u dGV4dC5jICAgICAgICAgICAgfCAgNTQgKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9jb250ZXh0LmggICAgICAgICAgICB8ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ndF9wbS5jICAgICAgICAgICAgICAgICB8IDEyMSArKysrKysrKysrKysrKysrLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndF9wbS5oICAgICAgICAgICAgICAgICB8ICAg NCArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc3VibWlzc2lvbi5jICAgICAgICB8 ICAxNiArKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICAgICAgICAg ICAgIHwgIDE1ICsrKwogLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9tb2NrX3NlbGZ0 ZXN0cy5oICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2d0 X3BtLmMgICAgICAgfCAxMzAgKysrKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL3VhcGkvZHJt L2k5MTVfZHJtLmggICAgICAgICAgICAgICAgICAgICAgICB8ICAyMCArKysrCiAxMSBmaWxlcyBj aGFuZ2VkLCAzNjggaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2d0X3BtLmMKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCmluZGV4IDdjN2FmZGFjOGM4Yy4uYTIxYjkxNjRhZGU4 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpAQCAtMjE5MSw2ICsyMTkxLDcgQEAg c3RhdGljIGludCBpOTE1X3Jwc19ib29zdF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAq ZGF0YSkKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gJmRldl9wcml2LT5kcm07CiAJc3RydWN0 IGludGVsX3JwcyAqcnBzID0gJmRldl9wcml2LT5ndF9wbS5ycHM7CiAJc3RydWN0IGRybV9maWxl ICpmaWxlOworCWludCBuOwogCiAJc2VxX3ByaW50ZihtLCAiR1BVIGJ1c3k/ICVzIFslZCByZXF1 ZXN0c11cbiIsCiAJCSAgIHllc25vKGRldl9wcml2LT5ndC5hd2FrZSksIGRldl9wcml2LT5ndC5h Y3RpdmVfcmVxdWVzdHMpOwpAQCAtMjE5OCwxNyArMjE5OSwzMCBAQCBzdGF0aWMgaW50IGk5MTVf cnBzX2Jvb3N0X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogCXNlcV9wcmlu dGYobSwgIkNQVSB3YWl0aW5nPyAlZFxuIiwgY291bnRfaXJxX3dhaXRlcnMoZGV2X3ByaXYpKTsK IAlzZXFfcHJpbnRmKG0sICJCb29zdHMgb3V0c3RhbmRpbmc/ICVkXG4iLAogCQkgICBhdG9taWNf cmVhZCgmcnBzLT5udW1fd2FpdGVycykpOworCXNlcV9wcmludGYobSwgIldvcmtlciBwZW5kaW5n PyAlc1xuIiwgeWVzbm8od29ya19idXN5KCZycHMtPndvcmspKSk7CiAJc2VxX3ByaW50ZihtLCAi RnJlcXVlbmN5IHJlcXVlc3RlZCAlZCBbJWQsICVkXVxuIiwKIAkJICAgaW50ZWxfZ3B1X2ZyZXEo ZGV2X3ByaXYsIHJwcy0+ZnJlcSksCiAJCSAgIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBycHMt Pm1pbiksCiAJCSAgIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBycHMtPm1heCkpOwotCXNlcV9w cmludGYobSwgIiAgbWluIGhhcmQ6JWQsIHNvZnQ6JWQgdXNlcjolZDsgbWF4IHVzZXI6JWQsIHNv ZnQ6ICVkIGhhcmQ6JWRcbiIsCisJc2VxX3ByaW50ZihtLCAiICBtaW4gaGFyZDolZCwgc29mdDol ZCwgY3R4OiVkLCB1c2VyOiVkOyBtYXggdXNlcjolZCwgY3R4OiVkLCBzb2Z0OiVkLCBoYXJkOiVk XG4iLAogCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgcnBzLT5taW5fZnJlcV9odyksCiAJ CSAgIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBycHMtPm1pbl9mcmVxX3NvZnQpLAorCQkgICBp bnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgcnBzLT5taW5fZnJlcV9jb250ZXh0KSwKIAkJICAgaW50 ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIHJwcy0+bWluX2ZyZXFfdXNlciksCiAJCSAgIGludGVsX2dw dV9mcmVxKGRldl9wcml2LCBycHMtPm1heF9mcmVxX3VzZXIpLAorCQkgICBpbnRlbF9ncHVfZnJl cShkZXZfcHJpdiwgcnBzLT5tYXhfZnJlcV9jb250ZXh0KSwKIAkJICAgaW50ZWxfZ3B1X2ZyZXEo ZGV2X3ByaXYsIHJwcy0+bWF4X2ZyZXFfc29mdCksCiAJCSAgIGludGVsX2dwdV9mcmVxKGRldl9w cml2LCBycHMtPm1heF9mcmVxX2h3KSk7CisJc2VxX3ByaW50ZihtLCAiICBlbmdpbmVzIG1pbjog WyIpOworCWZvciAobiA9IDA7IG4gPCBBUlJBWV9TSVpFKHJwcy0+bWluX2ZyZXFfZW5naW5lKTsg bisrKQorCQlzZXFfcHJpbnRmKG0sICIlcyVkIiwgbiA/ICIsICIgOiAiIiwKKwkJCSAgIGludGVs X2dwdV9mcmVxKGRldl9wcml2LCBycHMtPm1pbl9mcmVxX2VuZ2luZVtuXSkpOworCXNlcV9wcmlu dGYobSwgIl1cbiAgZW5naW5lcyBtYXg6IFsiKTsKKwlmb3IgKG4gPSAwOyBuIDwgQVJSQVlfU0la RShycHMtPm1heF9mcmVxX2VuZ2luZSk7IG4rKykKKwkJc2VxX3ByaW50ZihtLCAiJXMlZCIsIG4g PyAiLCAiIDogIiIsCisJCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgcnBzLT5tYXhfZnJl cV9lbmdpbmVbbl0pKTsKKwlzZXFfcHJpbnRmKG0sICJdXG4iKTsKKwogCXNlcV9wcmludGYobSwg IiAgaWRsZTolZCwgZWZmaWNpZW50OiVkLCBib29zdDolZFxuIiwKIAkJICAgaW50ZWxfZ3B1X2Zy ZXEoZGV2X3ByaXYsIHJwcy0+aWRsZV9mcmVxKSwKIAkJICAgaW50ZWxfZ3B1X2ZyZXEoZGV2X3By aXYsIHJwcy0+ZWZmaWNpZW50X2ZyZXEpLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggODJl OWE1OGJkNjVmLi5kNzU0ZDQ0Y2ZiYzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtNzMx LDYgKzczMSw3IEBAIHN0cnVjdCBpbnRlbF9ycHNfZWkgewogCiBzdHJ1Y3QgaW50ZWxfcnBzIHsK IAlzdHJ1Y3QgbXV0ZXggbG9jazsKKwlzcGlubG9ja190IGVuZ2luZV9sb2NrOyAvKiBwcm90ZWN0 cyB1cGRhdGVzIHRvIG1pbi9tYXhfZnJlcV9jb250ZXh0ICovCiAJc3RydWN0IHdvcmtfc3RydWN0 IHdvcms7CiAKIAlib29sIGFjdGl2ZTsKQEAgLTc2Myw2ICs3NjQsMTAgQEAgc3RydWN0IGludGVs X3JwcyB7CiAJdTggbWF4X2ZyZXFfdXNlcjsJLyogTWF4IGZyZXF1ZW5jeSBwZXJtaXR0ZWQgYnkg dGhlIGRyaXZlciAqLwogCXU4IG1pbl9mcmVxX3NvZnQ7CiAJdTggbWF4X2ZyZXFfc29mdDsKKwl1 OCBtaW5fZnJlcV9jb250ZXh0OwkvKiBNaW4gZnJlcXVlbmN5IHBlcm1pdHRlZCBieSB0aGUgY29u dGV4dCAqLworCXU4IG1heF9mcmVxX2NvbnRleHQ7CS8qIE1heCBmcmVxdWVuY3kgcGVybWl0dGVk IGJ5IHRoZSBjb250ZXh0ICovCisJdTggbWluX2ZyZXFfZW5naW5lW0k5MTVfTlVNX0VOR0lORVNd OworCXU4IG1heF9mcmVxX2VuZ2luZVtJOTE1X05VTV9FTkdJTkVTXTsKIAogCXU4IGlkbGVfZnJl cTsJCS8qIEZyZXF1ZW5jeSB0byByZXF1ZXN0IHdoZW4gd2UgYXJlIGlkbGUgKi8KIAl1OCBlZmZp Y2llbnRfZnJlcTsJLyogQUtBIFJQZS4gUHJlLWRldGVybWluZWQgYmFsYW5jZWQgZnJlcXVlbmN5 ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXggNjViZjkyNjU4 ZDkyLi4xZDM2ZTJhMDI0NzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0 LmMKQEAgLTg4LDggKzg4LDEwIEBACiAjaW5jbHVkZSA8bGludXgvbG9nMi5oPgogI2luY2x1ZGUg PGRybS9kcm1QLmg+CiAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+CisKICNpbmNsdWRlICJpOTE1 X2Rydi5oIgogI2luY2x1ZGUgImk5MTVfdHJhY2UuaCIKKyNpbmNsdWRlICJpbnRlbF9ndF9wbS5o IgogCiAjZGVmaW5lIEFMTF9MM19TTElDRVMoZGV2KSAoMSA8PCBOVU1fTDNfU0xJQ0VTKGRldikp IC0gMQogCkBAIC0yODEsNiArMjgzLDggQEAgX19jcmVhdGVfaHdfY29udGV4dChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJbGlzdF9hZGRfdGFpbCgmY3R4LT5saW5rLCAmZGV2 X3ByaXYtPmNvbnRleHRzLmxpc3QpOwogCWN0eC0+aTkxNSA9IGRldl9wcml2OwogCWN0eC0+cHJp b3JpdHkgPSBJOTE1X1BSSU9SSVRZX05PUk1BTDsKKwljdHgtPm1pbl9mcmVxID0gZGV2X3ByaXYt Pmd0X3BtLnJwcy5taW5fZnJlcV9odzsKKwljdHgtPm1heF9mcmVxID0gZGV2X3ByaXYtPmd0X3Bt LnJwcy5tYXhfZnJlcV9odzsKIAogCUlOSVRfUkFESVhfVFJFRSgmY3R4LT5oYW5kbGVzX3ZtYSwg R0ZQX0tFUk5FTCk7CiAJSU5JVF9MSVNUX0hFQUQoJmN0eC0+aGFuZGxlc19saXN0KTsKQEAgLTcx NSw2ICs3MTksNyBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9nZXRwYXJhbV9pb2N0bChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogewogCXN0cnVjdCBkcm1faTkxNV9maWxlX3By aXZhdGUgKmZpbGVfcHJpdiA9IGZpbGUtPmRyaXZlcl9wcml2OwogCXN0cnVjdCBkcm1faTkxNV9n ZW1fY29udGV4dF9wYXJhbSAqYXJncyA9IGRhdGE7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUgPSB0b19pOTE1KGRldik7CiAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKIAlp bnQgcmV0ID0gMDsKIApAQCAtNzQ3LDYgKzc1MiwxOSBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9n ZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCWNhc2Ug STkxNV9DT05URVhUX1BBUkFNX1BSSU9SSVRZOgogCQlhcmdzLT52YWx1ZSA9IGN0eC0+cHJpb3Jp dHk7CiAJCWJyZWFrOworCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX0ZSRVFVRU5DWToKKwkJaWYg KCFIQVNfUlBTKGk5MTUpIHx8ICFIQVNfRVhFQ0xJU1RTKGk5MTUpKSB7CisJCQlyZXQgPSAtRU5P REVWOworCQl9IGVsc2UgaWYgKGFyZ3MtPnNpemUpIHsKKwkJCXJldCA9IC1FSU5WQUw7CisJCX0g ZWxzZSB7CisJCQl1MzIgbWluID0gaW50ZWxfZ3B1X2ZyZXEoaTkxNSwgY3R4LT5taW5fZnJlcSk7 CisJCQl1MzIgbWF4ID0gaW50ZWxfZ3B1X2ZyZXEoaTkxNSwgY3R4LT5tYXhfZnJlcSk7CisKKwkJ CWFyZ3MtPnZhbHVlID0gSTkxNV9DT05URVhUX1NFVF9GUkVRVUVOQ1kobWluLCBtYXgpOworCQl9 CisJCWJyZWFrOworCiAJZGVmYXVsdDoKIAkJcmV0ID0gLUVJTlZBTDsKIAkJYnJlYWs7CkBAIC03 NjEsNiArNzc5LDcgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfc2V0cGFyYW1faW9jdGwoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9w cml2YXRlICpmaWxlX3ByaXYgPSBmaWxlLT5kcml2ZXJfcHJpdjsKIAlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2NvbnRleHRfcGFyYW0gKmFyZ3MgPSBkYXRhOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1ID0gdG9faTkxNShkZXYpOwogCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7CiAJ aW50IHJldDsKIApAQCAtODIxLDYgKzg0MCw0MSBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9zZXRw YXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJCWN0eC0+ cHJpb3JpdHkgPSBwcmlvcml0eTsKIAkJfQogCQlicmVhazsKKwljYXNlIEk5MTVfQ09OVEVYVF9Q QVJBTV9GUkVRVUVOQ1k6CisJCWlmICghSEFTX1JQUyhpOTE1KSB8fCAhSEFTX0VYRUNMSVNUUyhp OTE1KSkgeworCQkJcmV0ID0gLUVOT0RFVjsKKwkJfSBlbHNlIGlmIChhcmdzLT5zaXplKSB7CisJ CQlyZXQgPSAtRUlOVkFMOworCQl9IGVsc2UgeworCQkJc3RydWN0IGludGVsX3JwcyAqcnBzID0g Jmk5MTUtPmd0X3BtLnJwczsKKwkJCXUzMiBtaW4sIG1heDsKKworCQkJbWluID0gSTkxNV9DT05U RVhUX01JTl9GUkVRVUVOQ1koYXJncy0+dmFsdWUpOworCQkJbWluID0gaW50ZWxfZnJlcV9vcGNv ZGUoaTkxNSwgbWluKTsKKworCQkJbWF4ID0gSTkxNV9DT05URVhUX01BWF9GUkVRVUVOQ1koYXJn cy0+dmFsdWUpOworCQkJbWF4ID0gaW50ZWxfZnJlcV9vcGNvZGUoaTkxNSwgbWF4KTsKKworCQkJ LyoKKwkJCSAqIEFzIHdlIGNvbnN0cmFpbiB0aGUgZnJlcXVlbmN5IHJlcXVlc3QgZnJvbSB0aGUK KwkJCSAqIGNvbnRleHQgKGFwcGxpY2F0aW9uKSBieSB0aGUgc3lzYWRtaW4gaW1wb3NlZCBsaW1p dHMsCisJCQkgKiBpdCBpcyByZWFzb25hYmxlIHRvIGFsbG93IHRoZSBhcHBsaWNhdGlvbiB0bwor CQkJICogc3BlY2lmeSBpdHMgcHJlZmVycmVkIHJhbmdlIHdpdGhpbiB0aG9zZSBsaW1pdHMuCisJ CQkgKiBUaGF0IGlzIHdlIGRvIG5vdCBuZWVkIHRvIHJlc3RyaWN0IHJlcXVlc3RpbmcKKwkJCSAq IGEgaGlnaGVyIGZyZXF1ZW5jeSB0byBwcml2aWxlZ2VkIChDQVBfU1lTX05JQ0UpCisJCQkgKiBw cm9jZXNzZXMuCisJCQkgKi8KKwkJCWlmIChtYXggPCBtaW4pIHsKKwkJCQlyZXQgPSAtRUlOVkFM OworCQkJfSBlbHNlIGlmIChtaW4gPCBycHMtPm1pbl9mcmVxX2h3IHx8CisJCQkJICAgbWF4ID4g cnBzLT5tYXhfZnJlcV9odykgeworCQkJCXJldCA9IC1FSU5WQUw7CisJCQl9IGVsc2UgeworCQkJ CWN0eC0+bWluX2ZyZXEgPSBtaW47CisJCQkJY3R4LT5tYXhfZnJlcSA9IG1heDsKKwkJCX0KKwkJ fQorCQlicmVhazsKIAogCWRlZmF1bHQ6CiAJCXJldCA9IC1FSU5WQUw7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9jb250ZXh0LmgKaW5kZXggNzg1NDI2MmRkZmQ5Li45OGY3YjcxYTc4N2Eg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmgKQEAgLTE1MCw2ICsxNTAs OSBAQCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCB7CiAJICovCiAJaW50IHByaW9yaXR5OwogCisJ dTMyIG1pbl9mcmVxOworCXUzMiBtYXhfZnJlcTsKKwogCS8qKiBnZ3R0X29mZnNldF9iaWFzOiBw bGFjZW1lbnQgcmVzdHJpY3Rpb24gZm9yIGNvbnRleHQgb2JqZWN0cyAqLwogCXUzMiBnZ3R0X29m ZnNldF9iaWFzOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndF9w bS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3RfcG0uYwppbmRleCA5NzA1MjA1YTI2 YjUuLjRiYmZiNDA4MGY4ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Z3RfcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndF9wbS5jCkBAIC00MDIs MTAgKzQwMiwxMCBAQCBzdGF0aWMgaW50IGFkanVzdF9ycHMoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LCBpbnQgZnJlcSwgaW50IGFkaikKIAlHRU1fQlVHX09OKCFycHMtPmFjdGl2 ZSk7CiAKIAltaW4gPSBjbGFtcF90KGludCwKLQkJICAgICAgcnBzLT5taW5fZnJlcV9zb2Z0LAor CQkgICAgICBtYXgocnBzLT5taW5fZnJlcV9zb2Z0LCBSRUFEX09OQ0UocnBzLT5taW5fZnJlcV9j b250ZXh0KSksCiAJCSAgICAgIHJwcy0+bWluX2ZyZXFfdXNlciwgcnBzLT5tYXhfZnJlcV91c2Vy KTsKIAltYXggPSBjbGFtcF90KGludCwKLQkJICAgICAgcnBzLT5tYXhfZnJlcV9zb2Z0LAorCQkg ICAgICBtaW4ocnBzLT5tYXhfZnJlcV9zb2Z0LCBSRUFEX09OQ0UocnBzLT5tYXhfZnJlcV9jb250 ZXh0KSksCiAJCSAgICAgIG1pbiwgcnBzLT5tYXhfZnJlcV91c2VyKTsKIAlpZiAoYXRvbWljX3Jl YWQoJnJwcy0+bnVtX3dhaXRlcnMpICYmIG1heCA8IHJwcy0+Ym9vc3RfZnJlcSkKIAkJbWF4ID0g cnBzLT5ib29zdF9mcmVxOwpAQCAtODA5LDYgKzgwOSw3NSBAQCB2b2lkIGludGVsX3Jwc19ib29z dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgc3RydWN0IGludGVsX3Jwc19jbGllbnQgKmNsaWVu dCkKIAlhdG9taWNfaW5jKGNsaWVudCA/ICZjbGllbnQtPmJvb3N0cyA6ICZycHMtPmJvb3N0cyk7 CiB9CiAKK3N0YXRpYyB2b2lkIF9fcnBzX3VwZGF0ZV9lbmdpbmUoc3RydWN0IGludGVsX3JwcyAq cnBzLAorCQkJCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkeCwKKwkJCQl1MzIgbWluLCB1MzIgbWF4 KQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJYm9vbCB1cGRhdGUgPSBmYWxzZTsKKwl1MzIg b2xkOworCWludCBuOworCisJR0VNX0JVR19PTihtaW4gPiBtYXgpOworCisJaWYgKHJwcy0+bWlu X2ZyZXFfZW5naW5lW2lkeF0gIT0gbWluKSB7CisJCXNwaW5fbG9ja19pcnFzYXZlKCZycHMtPmVu Z2luZV9sb2NrLCBmbGFncyk7CisKKwkJcnBzLT5taW5fZnJlcV9lbmdpbmVbaWR4XSA9IG1pbjsK KworCQlvbGQgPSBycHMtPm1pbl9mcmVxX2NvbnRleHQ7CisJCXJwcy0+bWluX2ZyZXFfY29udGV4 dCA9IHJwcy0+bWluX2ZyZXFfZW5naW5lWzBdOworCQlmb3IgKG4gPSAxOyBuIDwgQVJSQVlfU0la RShycHMtPm1pbl9mcmVxX2VuZ2luZSk7IG4rKykKKwkJCWlmIChycHMtPm1pbl9mcmVxX2VuZ2lu ZVtuXSA+IHJwcy0+bWluX2ZyZXFfY29udGV4dCkKKwkJCQlycHMtPm1pbl9mcmVxX2NvbnRleHQg PSBycHMtPm1pbl9mcmVxX2VuZ2luZVtuXTsKKwkJdXBkYXRlIHw9IHJwcy0+bWluX2ZyZXFfY29u dGV4dCAhPSBvbGQ7CisKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcnBzLT5lbmdpbmVfbG9j aywgZmxhZ3MpOworCX0KKworCWlmIChycHMtPm1heF9mcmVxX2VuZ2luZVtpZHhdICE9IG1heCkg eworCQlzcGluX2xvY2tfaXJxc2F2ZSgmcnBzLT5lbmdpbmVfbG9jaywgZmxhZ3MpOworCisJCXJw cy0+bWF4X2ZyZXFfZW5naW5lW2lkeF0gPSBtYXg7CisKKwkJb2xkID0gcnBzLT5tYXhfZnJlcV9j b250ZXh0OworCQlycHMtPm1heF9mcmVxX2NvbnRleHQgPSBycHMtPm1heF9mcmVxX2VuZ2luZVsw XTsKKwkJZm9yIChuID0gMTsgbiA8IEFSUkFZX1NJWkUocnBzLT5tYXhfZnJlcV9lbmdpbmUpOyBu KyspCisJCQlpZiAocnBzLT5tYXhfZnJlcV9lbmdpbmVbbl0gPCBycHMtPm1heF9mcmVxX2NvbnRl eHQpCisJCQkJcnBzLT5tYXhfZnJlcV9jb250ZXh0ID0gcnBzLT5tYXhfZnJlcV9lbmdpbmVbbl07 CisJCXVwZGF0ZSB8PSBycHMtPm1heF9mcmVxX2NvbnRleHQgIT0gb2xkOworCisJCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJnJwcy0+ZW5naW5lX2xvY2ssIGZsYWdzKTsKKwl9CisKKwkvKiBLaWNr IHRoZSBSUFMgd29ya2VyIHRvIGFwcGx5IHRoZSB1cGRhdGVkIGNvbnN0cmFpbnRzLCBhcyBuZWVk ZWQgKi8KKwlpZiAodXBkYXRlICYmICFhdG9taWNfcmVhZCgmcnBzLT5udW1fd2FpdGVycykpIHsK KwkJb2xkID0gUkVBRF9PTkNFKHJwcy0+ZnJlcSk7CisJCWlmICgob2xkIDwgbWluIHx8IG9sZCA+ IG1heCkpCisJCQlzY2hlZHVsZV93b3JrKCZycHMtPndvcmspOworCX0KK30KKwordm9pZCBpbnRl bF9ycHNfdXBkYXRlX2VuZ2luZShjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs CisJCQkgICAgIGNvbnN0IHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCit7CisJc3RydWN0 IGludGVsX3JwcyAqcnBzID0gJmVuZ2luZS0+aTkxNS0+Z3RfcG0ucnBzOworCXUzMiBtaW4sIG1h eDsKKworCWlmICghSEFTX1JQUyhlbmdpbmUtPmk5MTUpKQorCQlyZXR1cm47CisKKwlpZiAoY3R4 KSB7CisJCW1pbiA9IGN0eC0+bWluX2ZyZXE7CisJCW1heCA9IGN0eC0+bWF4X2ZyZXE7CisJfSBl bHNlIHsKKwkJbWluID0gcnBzLT5taW5fZnJlcV9odzsKKwkJbWF4ID0gcnBzLT5tYXhfZnJlcV9o dzsKKwl9CisKKwlfX3Jwc191cGRhdGVfZW5naW5lKHJwcywgZW5naW5lLT5pZCwgbWluLCBtYXgp OworfQorCiBzdGF0aWMgdm9pZCBnZW45X2Rpc2FibGVfcmM2KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIHsKIAlJOTE1X1dSSVRFKEdFTjZfUkNfQ09OVFJPTCwgMCk7CkBAIC0y Mzc5LDEyICsyNDQ4LDQxIEBAIHZvaWQgaW50ZWxfZ3RfcG1fc2FuaXRpemUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQlnZW42X3Jlc2V0X3Jwc19pbnRlcnJ1cHRzKGRldl9w cml2KTsKIH0KIAorc3RhdGljIHZvaWQgaW50ZWxfcnBzX2luaXQoc3RydWN0IGludGVsX3JwcyAq cnBzKQoreworCW11dGV4X2luaXQoJnJwcy0+bG9jayk7CisJSU5JVF9XT1JLKCZycHMtPndvcmss IGludGVsX3Jwc193b3JrKTsKKwlzcGluX2xvY2tfaW5pdCgmcnBzLT5lbmdpbmVfbG9jayk7Cit9 CisKK3N0YXRpYyB2b2lkIGludGVsX3Jwc19pbml0X19mcmVxdWVuY2llcyhzdHJ1Y3QgaW50ZWxf cnBzICpycHMpCit7CisJaW50IG47CisKKwlycHMtPm1heF9mcmVxX3NvZnQgPSBycHMtPm1heF9m cmVxX2h3OworCXJwcy0+bWluX2ZyZXFfc29mdCA9IHJwcy0+bWluX2ZyZXFfaHc7CisKKwlycHMt Pm1heF9mcmVxX2NvbnRleHQgPSBycHMtPm1heF9mcmVxX2h3OworCXJwcy0+bWluX2ZyZXFfY29u dGV4dCA9IHJwcy0+bWluX2ZyZXFfaHc7CisJZm9yIChuID0gMDsgbiA8IEFSUkFZX1NJWkUocnBz LT5tYXhfZnJlcV9lbmdpbmUpOyBuKyspIHsKKwkJcnBzLT5tYXhfZnJlcV9lbmdpbmVbbl0gPSBy cHMtPm1heF9mcmVxX2h3OworCQlycHMtPm1pbl9mcmVxX2VuZ2luZVtuXSA9IHJwcy0+bWluX2Zy ZXFfaHc7CisJfQorCisJLyogRmluYWxseSBhbGxvdyB1cyB0byBib29zdCB0byBtYXggYnkgZGVm YXVsdCAqLworCXJwcy0+Ym9vc3RfZnJlcSA9IHJwcy0+bWF4X2ZyZXFfaHc7CisJcnBzLT5pZGxl X2ZyZXEgPSBycHMtPm1pbl9mcmVxX2h3OworCisJcnBzLT5mcmVxID0gcnBzLT5pZGxlX2ZyZXE7 CisJcnBzLT5taW4gPSBycHMtPm1pbl9mcmVxX2h3OworCXJwcy0+bWF4ID0gcnBzLT5tYXhfZnJl cV9odzsKK30KKwogdm9pZCBpbnRlbF9ndF9wbV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKIHsKIAlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmZGV2X3ByaXYtPmd0X3Bt LnJwczsKIAotCW11dGV4X2luaXQoJnJwcy0+bG9jayk7Ci0JSU5JVF9XT1JLKCZycHMtPndvcmss IGludGVsX3Jwc193b3JrKTsKKwlpbnRlbF9ycHNfaW5pdChycHMpOwogCiAJaWYgKEhBU19HVUNf U0NIRUQoZGV2X3ByaXYpKQogCQlycHMtPmd1Y19ldmVudHMgPSBHRU45X0dVQ19UT19IT1NUX0lO VF9FVkVOVDsKQEAgLTI0NDksMTYgKzI1NDcsNyBAQCB2b2lkIGludGVsX2d0X3BtX2luaXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQl9CiAJfQogCi0JcnBzLT5tYXhfZnJl cV9zb2Z0ID0gcnBzLT5tYXhfZnJlcV9odzsKLQlycHMtPm1pbl9mcmVxX3NvZnQgPSBycHMtPm1p bl9mcmVxX2h3OwotCi0JLyogRmluYWxseSBhbGxvdyB1cyB0byBib29zdCB0byBtYXggYnkgZGVm YXVsdCAqLwotCXJwcy0+Ym9vc3RfZnJlcSA9IHJwcy0+bWF4X2ZyZXFfaHc7Ci0JcnBzLT5pZGxl X2ZyZXEgPSBycHMtPm1pbl9mcmVxX2h3OwotCi0JcnBzLT5mcmVxID0gcnBzLT5pZGxlX2ZyZXE7 Ci0JcnBzLT5taW4gPSBycHMtPm1pbl9mcmVxX2h3OwotCXJwcy0+bWF4ID0gcnBzLT5tYXhfZnJl cV9odzsKKwlpbnRlbF9ycHNfaW5pdF9fZnJlcXVlbmNpZXMocnBzKTsKIAogCWlmIChIQVNfTExD KGRldl9wcml2KSkKIAkJZ2VuNl91cGRhdGVfcmluZ19mcmVxKGRldl9wcml2KTsKQEAgLTI3MDMs MyArMjc5Miw3IEBAIHZvaWQgZ2VuOV9kaXNhYmxlX2d1Y19pbnRlcnJ1cHRzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAogCWdlbjlfcmVzZXRfZ3VjX2ludGVycnVwdHMoZGV2 X3ByaXYpOwogfQorCisjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpCisj aW5jbHVkZSAic2VsZnRlc3RzL2ludGVsX2d0X3BtLmMiCisjZW5kaWYKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d0X3BtLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9ndF9wbS5oCmluZGV4IDMxNDkxMmMxNTEyNi4uZWYzZjI3ZWNhNTI5IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndF9wbS5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d0X3BtLmgKQEAgLTI1LDcgKzI1LDkgQEAKICNkZWZpbmUgX19JTlRFTF9H VF9QTV9IX18KIAogc3RydWN0IGRybV9pOTE1X3ByaXZhdGU7CitzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dDsKIHN0cnVjdCBpOTE1X3JlcXVlc3Q7CitzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzOwogc3Ry dWN0IGludGVsX3Jwc19jbGllbnQ7CiAKIHZvaWQgaW50ZWxfZ3B1X2lwc19pbml0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CkBAIC00Nyw2ICs0OSw4IEBAIHZvaWQgaW50ZWxf Z3RfcG1faWRsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogCiB2b2lkIGlu dGVsX2d0X3BtX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg dTMyIHBtX2lpcik7CiAKK3ZvaWQgaW50ZWxfcnBzX3VwZGF0ZV9lbmdpbmUoY29uc3Qgc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQkJICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCAqY3R4KTsKIHZvaWQgaW50ZWxfcnBzX2Jvb3N0KHN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxLCBzdHJ1Y3QgaW50ZWxfcnBzX2NsaWVudCAqcnBzKTsKIAogaW50IGludGVsX2dwdV9mcmVx KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IHZhbCk7CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc3VibWlzc2lvbi5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwppbmRleCA4YThhZDJmZTE1OGQuLmQ4 ZWFhZTY4MzE4NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1 Ym1pc3Npb24uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc3VibWlzc2lv bi5jCkBAIC0yNiw5ICsyNiwxMiBAQAogI2luY2x1ZGUgPHRyYWNlL2V2ZW50cy9kbWFfZmVuY2Uu aD4KIAogI2luY2x1ZGUgImludGVsX2d1Y19zdWJtaXNzaW9uLmgiCi0jaW5jbHVkZSAiaW50ZWxf bHJjX3JlZy5oIgorCiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKIAorI2luY2x1ZGUgImludGVsX2d0 X3BtLmgiCisjaW5jbHVkZSAiaW50ZWxfbHJjX3JlZy5oIgorCiAjZGVmaW5lIEdVQ19QUkVFTVBU X0ZJTklTSEVECQkweDEKICNkZWZpbmUgR1VDX1BSRUVNUFRfQlJFQURDUlVNQl9EV09SRFMJMHg4 CiAjZGVmaW5lIEdVQ19QUkVFTVBUX0JSRUFEQ1JVTUJfQllURVMJXApAQCAtNjUwLDYgKzY1Mywx MiBAQCBzdGF0aWMgdm9pZCBndWNfc3VibWl0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKIAl9CiB9CiAKK3N0YXRpYyB2b2lkIHVwZGF0ZV9ycHMoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQoreworCWludGVsX3Jwc191cGRhdGVfZW5naW5lKGVuZ2luZSwKKwkJCQlwb3J0 X3JlcXVlc3QoZW5naW5lLT5leGVjbGlzdHMucG9ydCktPmN0eCk7Cit9CisKIHN0YXRpYyB2b2lk IHBvcnRfYXNzaWduKHN0cnVjdCBleGVjbGlzdF9wb3J0ICpwb3J0LCBzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycSkKIHsKIAlHRU1fQlVHX09OKHBvcnRfaXNzZXQocG9ydCkpOwpAQCAtNzI4LDYgKzcz Nyw3IEBAIHN0YXRpYyB2b2lkIGd1Y19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKIAlleGVjbGlzdHMtPmZpcnN0ID0gcmI7CiAJaWYgKHN1Ym1pdCkgewogCQlwb3J0X2Fz c2lnbihwb3J0LCBsYXN0KTsKKwkJdXBkYXRlX3JwcyhlbmdpbmUpOwogCQlleGVjbGlzdHNfc2V0 X2FjdGl2ZShleGVjbGlzdHMsIEVYRUNMSVNUU19BQ1RJVkVfVVNFUik7CiAJCWd1Y19zdWJtaXQo ZW5naW5lKTsKIAl9CkBAIC03NTcsOCArNzY3LDEwIEBAIHN0YXRpYyB2b2lkIGd1Y19zdWJtaXNz aW9uX3Rhc2tsZXQodW5zaWduZWQgbG9uZyBkYXRhKQogCiAJCXJxID0gcG9ydF9yZXF1ZXN0KCZw b3J0WzBdKTsKIAl9Ci0JaWYgKCFycSkKKwlpZiAoIXJxKSB7CiAJCWV4ZWNsaXN0c19jbGVhcl9h Y3RpdmUoZXhlY2xpc3RzLCBFWEVDTElTVFNfQUNUSVZFX1VTRVIpOworCQlpbnRlbF9ycHNfdXBk YXRlX2VuZ2luZShlbmdpbmUsIE5VTEwpOworCX0KIAogCWlmIChleGVjbGlzdHNfaXNfYWN0aXZl KGV4ZWNsaXN0cywgRVhFQ0xJU1RTX0FDVElWRV9QUkVFTVBUKSAmJgogCSAgICBpbnRlbF9yZWFk X3N0YXR1c19wYWdlKGVuZ2luZSwgSTkxNV9HRU1fSFdTX1BSRUVNUFRfSU5ERVgpID09CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IDNhNjliMzY3ZTU2NS4uNTE4ZjdiM2RiODU3IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtMTM4LDYgKzEzOCw3IEBACiAjaW5jbHVkZSAiaTkx NV9kcnYuaCIKICNpbmNsdWRlICJpOTE1X2dlbV9yZW5kZXJfc3RhdGUuaCIKICNpbmNsdWRlICJp bnRlbF9scmNfcmVnLmgiCisjaW5jbHVkZSAiaW50ZWxfZ3RfcG0uaCIKICNpbmNsdWRlICJpbnRl bF9tb2NzLmgiCiAKICNkZWZpbmUgUklOR19FWEVDTElTVF9RRlVMTAkJKDEgPDwgMHgyKQpAQCAt NTM1LDYgKzUzNiwxMiBAQCBzdGF0aWMgdm9pZCBpbmplY3RfcHJlZW1wdF9jb250ZXh0KHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlleGVjbGlzdHNfc2V0X2FjdGl2ZSgmZW5naW5l LT5leGVjbGlzdHMsIEVYRUNMSVNUU19BQ1RJVkVfUFJFRU1QVCk7CiB9CiAKK3N0YXRpYyB2b2lk IHVwZGF0ZV9ycHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCWludGVsX3Jw c191cGRhdGVfZW5naW5lKGVuZ2luZSwKKwkJCQlwb3J0X3JlcXVlc3QoZW5naW5lLT5leGVjbGlz dHMucG9ydCktPmN0eCk7Cit9CisKIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19kZXF1ZXVlKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNs aXN0cyAqIGNvbnN0IGV4ZWNsaXN0cyA9ICZlbmdpbmUtPmV4ZWNsaXN0czsKQEAgLTcwOCw2ICs3 MTUsNyBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCiAJc3Bpbl91bmxvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrKTsK IAogCWlmIChzdWJtaXQpIHsKKwkJdXBkYXRlX3JwcyhlbmdpbmUpOwogCQlleGVjbGlzdHNfc2V0 X2FjdGl2ZShleGVjbGlzdHMsIEVYRUNMSVNUU19BQ1RJVkVfVVNFUik7CiAJCWV4ZWNsaXN0c19z dWJtaXRfcG9ydHMoZW5naW5lKTsKIAl9CkBAIC05ODIsNiArOTkwLDExIEBAIHN0YXRpYyB2b2lk IGV4ZWNsaXN0c19zdWJtaXNzaW9uX3Rhc2tsZXQodW5zaWduZWQgbG9uZyBkYXRhKQogCQkJCQkg IGVuZ2luZS0+bmFtZSwgcG9ydC0+Y29udGV4dF9pZCk7CiAKIAkJCQlleGVjbGlzdHNfcG9ydF9j b21wbGV0ZShleGVjbGlzdHMsIHBvcnQpOworCisJCQkJLyogU3dpdGNoIHRvIHRoZSBuZXh0IHJl cXVlc3QvY29udGV4dCAqLworCQkJCXJxID0gcG9ydF9yZXF1ZXN0KHBvcnQpOworCQkJCWludGVs X3Jwc191cGRhdGVfZW5naW5lKGVuZ2luZSwKKwkJCQkJCQlycSA/IHJxLT5jdHggOiBOVUxMKTsK IAkJCX0gZWxzZSB7CiAJCQkJcG9ydF9zZXQocG9ydCwgcG9ydF9wYWNrKHJxLCBjb3VudCkpOwog CQkJfQpAQCAtMTcxNyw2ICsxNzMwLDggQEAgc3RhdGljIHZvaWQgcmVzZXRfY29tbW9uX3Jpbmco c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCV9fdW53aW5kX2luY29tcGxldGVfcmVx dWVzdHMoZW5naW5lKTsKIAlzcGluX3VubG9jaygmZW5naW5lLT50aW1lbGluZS0+bG9jayk7CiAK KwlpbnRlbF9ycHNfdXBkYXRlX2VuZ2luZShlbmdpbmUsIE5VTEwpOworCiAJLyogTWFyayBhbGwg Q1MgaW50ZXJydXB0cyBhcyBjb21wbGV0ZSAqLwogCWV4ZWNsaXN0cy0+YWN0aXZlID0gMDsKIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxm dGVzdHMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X21vY2tfc2VsZnRl c3RzLmgKaW5kZXggOWE0OGFhNDQxNzQzLi44NWI2ZTZkMDIwYjcgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X21vY2tfc2VsZnRlc3RzLmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaApAQCAtMTQs NiArMTQsNyBAQCBzZWxmdGVzdChmZW5jZSwgaTkxNV9zd19mZW5jZV9tb2NrX3NlbGZ0ZXN0cykK IHNlbGZ0ZXN0KHNjYXR0ZXJsaXN0LCBzY2F0dGVybGlzdF9tb2NrX3NlbGZ0ZXN0cykKIHNlbGZ0 ZXN0KHN5bmNtYXAsIGk5MTVfc3luY21hcF9tb2NrX3NlbGZ0ZXN0cykKIHNlbGZ0ZXN0KHVuY29y ZSwgaW50ZWxfdW5jb3JlX21vY2tfc2VsZnRlc3RzKQorc2VsZnRlc3QoZ3RfcG0sIGludGVsX2d0 X3BtX21vY2tfc2VsZnRlc3RzKQogc2VsZnRlc3QoYnJlYWRjcnVtYnMsIGludGVsX2JyZWFkY3J1 bWJzX21vY2tfc2VsZnRlc3RzKQogc2VsZnRlc3QodGltZWxpbmVzLCBpOTE1X2dlbV90aW1lbGlu ZV9tb2NrX3NlbGZ0ZXN0cykKIHNlbGZ0ZXN0KHJlcXVlc3RzLCBpOTE1X3JlcXVlc3RfbW9ja19z ZWxmdGVzdHMpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50 ZWxfZ3RfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9ndF9wbS5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzM4NzFlYjllYWJiCi0t LSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX2d0 X3BtLmMKQEAgLTAsMCArMSwxMzAgQEAKKy8qCisgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog TUlUCisgKgorICogQ29weXJpZ2h0IMKpIDIwMTggSW50ZWwgQ29ycG9yYXRpb24KKyAqLworCisj aW5jbHVkZSAiLi4vaTkxNV9zZWxmdGVzdC5oIgorI2luY2x1ZGUgImk5MTVfcmFuZG9tLmgiCisK KyNpbmNsdWRlICJtb2NrX2dlbV9kZXZpY2UuaCIKKworc3RhdGljIHZvaWQgbW9ja19ycHNfaW5p dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKK3sKKwlzdHJ1Y3QgaW50ZWxfcnBzICpy cHMgPSAmaTkxNS0+Z3RfcG0ucnBzOworCisJLyogRGlzYWJsZSB0aGUgcmVnaXN0ZXIgd3JpdGVz ICovCisJbWt3cml0ZV9kZXZpY2VfaW5mbyhpOTE1KS0+Z2VuID0gMDsKKwlta3dyaXRlX2Rldmlj ZV9pbmZvKGk5MTUpLT5oYXNfcnBzID0gdHJ1ZTsKKworCWludGVsX3Jwc19pbml0KHJwcyk7CisK KwlycHMtPm1pbl9mcmVxX2h3ID0gMDsKKwlycHMtPm1heF9mcmVxX2h3ID0gMjU1OworCisJcnBz LT5taW5fZnJlcV91c2VyID0gcnBzLT5taW5fZnJlcV9odzsKKwlycHMtPm1heF9mcmVxX3VzZXIg PSBycHMtPm1heF9mcmVxX2h3OworCisJaW50ZWxfcnBzX2luaXRfX2ZyZXF1ZW5jaWVzKHJwcyk7 Cit9CisKK3N0YXRpYyB2b2lkIG1vY2tfcnBzX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUpCit7CisJc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmk5MTUtPmd0X3BtLnJwczsKKwor CWNhbmNlbF93b3JrX3N5bmMoJnJwcy0+d29yayk7Cit9CisKK3N0YXRpYyBpbnQgaWd0X3Jwc19l bmdpbmUodm9pZCAqYXJnKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gYXJn OworCXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZpOTE1LT5ndF9wbS5ycHM7CisJSTkxNV9STkRf U1RBVEUocHJuZyk7CisJaW50IGVycjsKKwlpbnQgaTsKKworCWludGVsX2d0X3BtX2J1c3koaTkx NSk7IC8qIEFjdGl2YXRlIFJQUyAqLworCisJLyoKKwkgKiBNaW5pbXVtIHVuaXQgdGVzdHMgZm9y IGludGVsX3Jwc191cGRhdGVfZW5naW5lKCkuCisJICoKKwkgKiBXaGVuZXZlciB3ZSBjYWxsIGlu dGVsX3Jwc191cGRhdGVfZW5naW5lLCBpdCB3aWxsCisJICogcmVwbGFjZSB0aGUgY29udGV4dCBt aW4vbWF4IGZyZXF1ZW5jeSByZXF1ZXN0IGZvciBhIHBhcnRpY3VsYXIKKwkgKiBlbmdpbmUgYW5k IHRoZW4gcmVjb21wdXRlIHRoZSBnbG9iYWwgbWF4KG1pbikvbWluKG1heCkgb3ZlciBhbGwKKwkg KiBlbmdpbmVzLiBJbiB0aGlzIG1vY2t1cCwgd2UgYXJlIGxpbWl0ZWQgdG8gY2hlY2tpbmcgdGhv c2UKKwkgKiBtYXgobWluKS9taW4obWF4KSBjYWxjdWxhdGlvbnMgYW5kIHRoZW4gc2VlaW5nIGlm IHRoZSBycHMKKwkgKiB3b3JrZXIgdXNlcyB0aG9zZSBib3VuZHMuCisJICovCisKKwlmb3IgKGkg PSAwOyBpIDwgMjU2ICogMjU2OyBpKyspIHsKKwkJdTggZnJlcSA9IHByYW5kb21fdTMyX3N0YXRl KCZwcm5nKTsKKworCQlfX3Jwc191cGRhdGVfZW5naW5lKHJwcywgMCwgZnJlcSwgZnJlcSk7CisJ CWlmIChycHMtPm1pbl9mcmVxX2NvbnRleHQgIT0gZnJlcSB8fAorCQkgICAgcnBzLT5tYXhfZnJl cV9jb250ZXh0ICE9IGZyZXEpIHsKKwkJCXByX2VycigiQ29udGV4dCBtaW4vbWF4IGZyZXF1ZW5j aWVzIG5vdCByZXN0cmljdGVkIHRvICVkLCBmb3VuZCBbJWQsICVkXVxuIiwKKwkJCSAgICAgICBm cmVxLCBycHMtPm1pbl9mcmVxX2NvbnRleHQsIHJwcy0+bWF4X2ZyZXFfY29udGV4dCk7CisJCQll cnIgPSAtRUlOVkFMOworCQkJZ290byBvdXQ7CisJCX0KKwkJZmx1c2hfd29yaygmcnBzLT53b3Jr KTsKKworCQlpZiAocnBzLT5mcmVxICE9IGZyZXEpIHsKKwkJCXByX2VycigiVHJpZWQgdG8gcmVz dHJpY3QgZnJlcXVlbmN5IHRvICVkLCBmb3VuZCAlZFxuIiwKKwkJCSAgICAgICBmcmVxLCBycHMt PmZyZXEpOworCQkJZXJyID0gLUVJTlZBTDsKKwkJCWdvdG8gb3V0OworCQl9CisJfQorCisJX19y cHNfdXBkYXRlX2VuZ2luZShycHMsIDAsIHJwcy0+bWluX2ZyZXFfaHcsIHJwcy0+bWF4X2ZyZXFf aHcpOworCWlmIChycHMtPm1pbl9mcmVxX2NvbnRleHQgIT0gcnBzLT5taW5fZnJlcV9odyB8fAor CSAgICBycHMtPm1heF9mcmVxX2NvbnRleHQgIT0gcnBzLT5tYXhfZnJlcV9odykgeworCQlwcl9l cnIoIkNvbnRleHQgZnJlcXVlbmN5IG5vdCByZXN0b3JlZCB0byBbJWQsICVkXSwgZm91bmQgWyVk LCAlZF1cbiIsCisJCSAgICAgICBycHMtPm1pbl9mcmVxX2h3LCBycHMtPm1pbl9mcmVxX2h3LAor CQkgICAgICAgcnBzLT5taW5fZnJlcV9jb250ZXh0LCBycHMtPm1heF9mcmVxX2NvbnRleHQpOwor CQllcnIgPSAtRUlOVkFMOworCQlnb3RvIG91dDsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgSTkx NV9OVU1fRU5HSU5FUzsgaSsrKQorCQlfX3Jwc191cGRhdGVfZW5naW5lKHJwcywgaSwgaSwgMjU1 IC0gaSk7CisJaS0tOworCWlmIChycHMtPm1pbl9mcmVxX2NvbnRleHQgIT0gaSkgeworCQlwcl9l cnIoIk1pbmltdW0gY29udGV4dCBmcmVxdWVuY3kgYWNyb3NzIGFsbCBlbmdpbmVzIG5vdCByYWlz ZWQgdG8gJWQsIGZvdW5kICVkXG4iLCBpLCBycHMtPm1pbl9mcmVxX2NvbnRleHQpOworCQllcnIg PSAtRUlOVkFMOworCQlnb3RvIG91dDsKKwl9CisJaWYgKHJwcy0+bWF4X2ZyZXFfY29udGV4dCAh PSAyNTUgLSBpKSB7CisJCXByX2VycigiTWF4bWltdW0gY29udGV4dCBmcmVxdWVuY3kgYWNyb3Nz IGFsbCBlbmdpbmVzIG5vdCBsb3dlcmVkIHRvICVkLCBmb3VuZCAlZFxuIiwgMjU1IC0gaSwgcnBz LT5tYXhfZnJlcV9jb250ZXh0KTsKKwkJZXJyID0gLUVJTlZBTDsKKwkJZ290byBvdXQ7CisJfQor CisJZXJyID0gMDsKK291dDoKKwlpbnRlbF9ndF9wbV9pZGxlKGk5MTUpOworCXJldHVybiBlcnI7 Cit9CisKK2ludCBpbnRlbF9ndF9wbV9tb2NrX3NlbGZ0ZXN0cyh2b2lkKQoreworCXN0YXRpYyBj b25zdCBzdHJ1Y3QgaTkxNV9zdWJ0ZXN0IHRlc3RzW10gPSB7CisJCVNVQlRFU1QoaWd0X3Jwc19l bmdpbmUpLAorCX07CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTU7CisJaW50IGVycjsK KworCWk5MTUgPSBtb2NrX2dlbV9kZXZpY2UoKTsKKwlpZiAoIWk5MTUpCisJCXJldHVybiAtRU5P TUVNOworCisJbW9ja19ycHNfaW5pdChpOTE1KTsKKworCWVyciA9IGk5MTVfc3VidGVzdHModGVz dHMsIGk5MTUpOworCisJbW9ja19ycHNfZmluaShpOTE1KTsKKwlkcm1fZGV2X3VucmVmKCZpOTE1 LT5kcm0pOworCisJcmV0dXJuIGVycjsKK30KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0v aTkxNV9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAppbmRleCA3ZjU2MzRjZThl ODguLjY0YzYzNzdkZjc2OSAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5o CisrKyBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaApAQCAtMTQ1Niw2ICsxNDU2LDI2IEBA IHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSB7CiAjZGVmaW5lICAgSTkxNV9DT05U RVhUX01BWF9VU0VSX1BSSU9SSVRZCTEwMjMgLyogaW5jbHVzaXZlICovCiAjZGVmaW5lICAgSTkx NV9DT05URVhUX0RFRkFVTFRfUFJJT1JJVFkJCTAKICNkZWZpbmUgICBJOTE1X0NPTlRFWFRfTUlO X1VTRVJfUFJJT1JJVFkJLTEwMjMgLyogaW5jbHVzaXZlICovCisKKy8qCisgKiBJOTE1X0NPTlRF WFRfUEFSQU1fRlJFUVVFTkNZOgorICoKKyAqIFJlcXVlc3QgdGhhdCB3aGVuIHRoaXMgY29udGV4 dCBydW5zLCB0aGUgR1BVIGlzIHJlc3RyaWN0ZWQgdG8gcnVuCisgKiBpbiB0aGlzIGZyZXF1ZW5j eSByYW5nZTsgYnV0IHN0aWxsIGNvbnRyYWluZWQgYnkgdGhlIGdsb2JhbCB1c2VyCisgKiByZXN0 cmljdGlvbiBzcGVjaWZpZWQgdmlhIHN5c2ZzLgorICoKKyAqIFRoZSBtaW5pbXVtIC8gbWF4aW11 bSBmcmVxdWVuY2llcyBhcmUgc3BlY2lmaWVkIGluIE1Iei4gRWFjaCBjb250ZXh0CisgKiBzdGFy dHMgaW4gdGhlIGRlZmF1bHQgdW5yZXN0cmljdGVkIHN0YXRlLCB3aGVyZSB0aGUgcmFuZ2UgaXMg dGFrZW4gZnJvbQorICogdGhlIGhhcmR3YXJlLCBhbmQgc28gbWF5IGJlIHF1ZXJpZWQuCisgKgor ICogTm90ZSB0aGUgZnJlcXVlbmN5IGlzIG9ubHkgY2hhbmdlZCBvbiBhIGNvbnRleHQgc3dpdGNo OyBpZiB0aGUKKyAqIGNvbnRleHQncyBmcmVxdWVuY3kgaXMgdXBkYXRlZCB3aGlsc3QgdGhlIGNv bnRleHQgaXMgY3VycmVudGx5IGV4ZWN1dGluZworICogdGhlIHJlcXVlc3Qgd2lsbCBub3QgdGFr ZSBlZmZlY3QgdW50aWwgdGhlIG5leHQgdGltZSB0aGUgY29udGV4dCBpcyBydW4uCisgKi8KKyNk ZWZpbmUgSTkxNV9DT05URVhUX1BBUkFNX0ZSRVFVRU5DWQkweDcKKyNkZWZpbmUgICBJOTE1X0NP TlRFWFRfTUlOX0ZSRVFVRU5DWSh4KSAoKHgpICYgMHhmZmZmZmZmZikKKyNkZWZpbmUgICBJOTE1 X0NPTlRFWFRfTUFYX0ZSRVFVRU5DWSh4KSAoKHgpID4+IDMyKQorI2RlZmluZSAgIEk5MTVfQ09O VEVYVF9TRVRfRlJFUVVFTkNZKG1pbiwgbWF4KSAoKF9fdTY0KShtYXgpIDw8IDMyIHwgKG1pbikp CiAJX191NjQgdmFsdWU7CiB9OwogCi0tIAoyLjE2LjIKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=