From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 25/41] drm/i915: Move GEM activity tracking into a common struct reservation_object Date: Fri, 14 Oct 2016 13:18:17 +0100 Message-ID: <20161014121833.439-26-chris@chris-wilson.co.uk> References: <20161014121833.439-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 mail-qk0-x243.google.com (mail-qk0-x243.google.com [IPv6:2607:f8b0:400d:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 244546EC2F for ; Fri, 14 Oct 2016 12:19:07 +0000 (UTC) Received: by mail-qk0-x243.google.com with SMTP id v138so8438243qka.2 for ; Fri, 14 Oct 2016 05:19:07 -0700 (PDT) In-Reply-To: <20161014121833.439-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 List-Id: intel-gfx@lists.freedesktop.org SW4gcHJlcGFyYXRpb24gdG8gc3VwcG9ydCBtYW55IGRpc3RpbmN0IHRpbWVsaW5lcywgd2UgbmVl ZCB0byBleHBhbmQgdGhlCmFjdGl2aXR5IHRyYWNraW5nIG9uIHRoZSBHRU0gb2JqZWN0IHRvIGhh bmRsZSBtb3JlIHRoYW4ganVzdCBhIHJlcXVlc3QKcGVyIGVuZ2luZS4gV2UgYWxyZWFkeSB1c2Ug dGhlIHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3Qgb24gdGhlIGRtYS1idWYKdG8gaGFuZGxlIG1h bnkgZmVuY2UgY29udGV4dHMsIHNvIGludGVncmF0aW5nIHRoYXQgaW50byB0aGUgR0VNIG9iamVj dAppdHNlbGYgaXMgdGhlIHByZWZlcnJlZCBzb2x1dGlvbi4gKEZvciBleGFtcGxlLCB3ZSBjYW4g bm93IHNoYXJlIHRoZSBzYW1lCnJlc2VydmF0aW9uX29iamVjdCBiZXR3ZWVuIGV2ZXJ5IGNvbnN1 bWVyL3Byb2R1Y2VyIHVzaW5nIHRoaXMgYnVmZmVyIGFuZApza2lwIHRoZSBtYW51YWwgaW1wb3J0 L2V4cG9ydCB2aWEgZG1hLWJ1Zi4pCgp2MjogUmVpbXBsZW1lbnQgYnVzeS1pb2N0bCAoYnkgd2Fs a2luZyB0aGUgcmVzZXJ2YXRpb24gb2JqZWN0KSwgcG9zdHBvbmUKdGhlIEFCSSBjaGFuZ2UgZm9y IGFub3RoZXIgZGF5LiBTaW1pbGFybHkgdXNlIHRoZSByZXNlcnZhdGlvbiBvYmplY3QgdG8KZmlu ZCB0aGUgbGFzdF93cml0ZSByZXF1ZXN0IChpZiBhY3RpdmUgYW5kIGZyb20gaTkxNSkgZm9yIGNo b29zaW5nCmRpc3BsYXkgQ1MgZmxpcHMuCgpDYXZlYXRzOgoKICogYnVzeS1pb2N0bDogYnVzeS1p b2N0bCBvbmx5IHJlcG9ydHMgb24gdGhlIG5hdGl2ZSBmZW5jZXMsIGl0IHdpbGwgbm90Cndhcm4g b2Ygc3RhbGxzIChpbiBzZXQtZG9tYWluLWlvY3RsLCBwcmVhZC9wd3JpdGUgZXRjKSBpZiB0aGUg b2JqZWN0IGlzCmJlaW5nIHJlbmRlcmVkIHRvIGJ5IGV4dGVybmFsIGZlbmNlcy4gSXQgYWxzbyB3 aWxsIG5vdCByZXBvcnQgdGhlIHNhbWUKYnVzeSBzdGF0ZSBhcyB3YWl0LWlvY3RsIChvciBwb2xs aW5nIG9uIHRoZSBkbWEtYnVmKSBpbiB0aGUgc2FtZQpjaXJjdW1zdGFuY2VzLiBPbiB0aGUgcGx1 cyBzaWRlLCBpdCBkb2VzIHJldGFpbiByZXBvcnRpbmcgb2Ygd2hpY2gKKmk5MTUqIGVuZ2luZXMg YXJlIGVuZ2FnZWQgd2l0aCB0aGlzIG9iamVjdC4KCiAqIG5vbi1ibG9ja2luZyBhdG9taWMgbW9k ZXNldHMgdGFrZSBhIHN0ZXAgYmFja3dhcmRzIGFzIHRoZSB3YWl0IGZvcgpyZW5kZXIgY29tcGxl dGlvbiBibG9ja3MgdGhlIGlvY3RsLiBUaGlzIGlzIGZpeGVkIGluIGEgc3Vic2VxdWVudApwYXRj aCB0byB1c2UgYSBmZW5jZSBpbnN0ZWFkIGZvciBhd2FpdGluZyBvbiB0aGUgcmVuZGVyaW5nLCBz ZWUKImRybS9pOTE1OiBSZXN0b3JlIG5vbmJsb2NraW5nIGF3YWl0cyBmb3IgbW9kZXNldHRpbmci CgogKiBkeW5hbWljIGFycmF5IG1hbmlwdWxhdGlvbiBmb3Igc2hhcmVkLWZlbmNlcyBpbiByZXNl cnZhdGlvbiBpcyBzbG93ZXIKdGhhbiB0aGUgcHJldmlvdXMgbG9ja2xlc3Mgc3RhdGljIGFzc2ln bm1lbnQgKGUuZy4gZ2VtX2V4ZWNfbHV0X2hhbmRsZQpydW50aW1lIG9uIGl2YiBnb2VzIGZyb20g NDJzIHRvIDY2cyksIG1haW5seSBkdWUgdG8gYXRvbWljIG9wZXJhdGlvbnMuCgogKiBsb3NzIG9m IG9iamVjdC1sZXZlbCByZXRpcmVtZW50IGNhbGxiYWNrcywgZW11bGF0ZWQgYnkgVk1BIHJldGly ZW1lbnQKdHJhY2tpbmcuCgogKiBtaW5vciBsb3NzIG9mIG9iamVjdC1sZXZlbCBsYXN0IGFjdGl2 aXR5IGluZm9ybWF0aW9uIGZyb20gZGVidWdmcywKY291bGQgYmUgcmVwbGFjZWQgd2l0aCBwZXIt dm1hIGluZm9ybWF0aW9uIGlmIGRlc2lyZWQKClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8 Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jICAgICAgICB8ICAxNSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aCAgICAgICAgICAgIHwgIDYyICsrKy0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMgICAgICAgICAgICB8IDI2NiArKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fYmF0Y2hfcG9vbC5jIHwgIDExICstCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuYyAgICAgfCAgNTMgKy0tLS0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuaCAgICAgfCAgNDUgLS0tLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyB8ICA4MiArKystLS0tLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgICAgICB8ICAzMiArKysrCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jICAgIHwgIDQ4ICsrKy0tLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oICAgIHwgIDM3ICstLS0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ3B1X2Vycm9yLmMgICAgICB8ICAgNiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfYXRvbWljX3BsYW5lLmMgIHwgICAyIC0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYyAgICAgICB8IDExNCArKystLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaCAgICAgICAgICAgfCAgIDMgLQogMTUgZmlsZXMgY2hhbmdlZCwgMjIzIGlu c2VydGlvbnMoKyksIDU1NCBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMKaW5kZXggMjdmZDUzNzBmMGNjLi4zZmNkZmZmMjczZTQgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jCkBAIC0xMzYsMTEgKzEzNiwxMCBAQCBkZXNjcmliZV9vYmooc3RydWN0 IHNlcV9maWxlICptLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCXN0cnVjdCBp OTE1X3ZtYSAqdm1hOwogCXVuc2lnbmVkIGludCBmcm9udGJ1ZmZlcl9iaXRzOwogCWludCBwaW5f Y291bnQgPSAwOwotCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwogCiAJbG9ja2RlcF9hc3NlcnRf aGVsZCgmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKIAotCXNlcV9wcmludGYobSwgIiVw SzogJWMlYyVjJWMlYyAlOHpkS2lCICUwMnggJTAyeCBbICIsCisJc2VxX3ByaW50ZihtLCAiJXBL OiAlYyVjJWMlYyVjICU4emRLaUIgJTAyeCAlMDJ4ICVzJXMlcyIsCiAJCSAgICZvYmotPmJhc2Us CiAJCSAgIGdldF9hY3RpdmVfZmxhZyhvYmopLAogCQkgICBnZXRfcGluX2ZsYWcob2JqKSwKQEAg LTE0OSwxNCArMTQ4LDcgQEAgZGVzY3JpYmVfb2JqKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAkJICAgZ2V0X3Bpbl9tYXBwZWRfZmxhZyhvYmop LAogCQkgICBvYmotPmJhc2Uuc2l6ZSAvIDEwMjQsCiAJCSAgIG9iai0+YmFzZS5yZWFkX2RvbWFp bnMsCi0JCSAgIG9iai0+YmFzZS53cml0ZV9kb21haW4pOwotCWZvcl9lYWNoX2VuZ2luZShlbmdp bmUsIGRldl9wcml2LCBpZCkKLQkJc2VxX3ByaW50ZihtLCAiJXggIiwKLQkJCSAgIGk5MTVfZ2Vt X2FjdGl2ZV9nZXRfc2Vxbm8oJm9iai0+bGFzdF9yZWFkW2lkXSwKLQkJCQkJCSAgICAgJm9iai0+ YmFzZS5kZXYtPnN0cnVjdF9tdXRleCkpOwotCXNlcV9wcmludGYobSwgIl0gJXggJXMlcyVzIiwK LQkJICAgaTkxNV9nZW1fYWN0aXZlX2dldF9zZXFubygmb2JqLT5sYXN0X3dyaXRlLAotCQkJCQkg ICAgICZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpLAorCQkgICBvYmotPmJhc2Uud3JpdGVf ZG9tYWluLAogCQkgICBpOTE1X2NhY2hlX2xldmVsX3N0cihkZXZfcHJpdiwgb2JqLT5jYWNoZV9s ZXZlbCksCiAJCSAgIG9iai0+bW0uZGlydHkgPyAiIGRpcnR5IiA6ICIiLAogCQkgICBvYmotPm1t Lm1hZHYgPT0gSTkxNV9NQURWX0RPTlRORUVEID8gIiBwdXJnZWFibGUiIDogIiIpOwpAQCAtMTg3 LDggKzE3OSw3IEBAIGRlc2NyaWJlX29iaihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJaWYgKG9iai0+c3RvbGVuKQogCQlzZXFfcHJpbnRmKG0s ICIgKHN0b2xlbjogJTA4bGx4KSIsIG9iai0+c3RvbGVuLT5zdGFydCk7CiAKLQllbmdpbmUgPSBp OTE1X2dlbV9hY3RpdmVfZ2V0X2VuZ2luZSgmb2JqLT5sYXN0X3dyaXRlLAotCQkJCQkgICAgJmRl dl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKKwllbmdpbmUgPSBpOTE1X2dlbV9vYmplY3RfbGFz dF93cml0ZV9lbmdpbmUob2JqKTsKIAlpZiAoZW5naW5lKQogCQlzZXFfcHJpbnRmKG0sICIgKCVz KSIsIGVuZ2luZS0+bmFtZSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IGI2MTkyYWNh NTdlYy4uMzI0NTI4MGM4YjZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTQxLDYgKzQx LDcgQEAKICNpbmNsdWRlIDxsaW51eC9pbnRlbC1pb21tdS5oPgogI2luY2x1ZGUgPGxpbnV4L2ty ZWYuaD4KICNpbmNsdWRlIDxsaW51eC9wbV9xb3MuaD4KKyNpbmNsdWRlIDxsaW51eC9yZXNlcnZh dGlvbi5oPgogI2luY2x1ZGUgPGxpbnV4L3NobWVtX2ZzLmg+CiAKICNpbmNsdWRlIDxkcm0vZHJt UC5oPgpAQCAtMjIzMywyMSArMjIzNCwxMiBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7 CiAJc3RydWN0IGxpc3RfaGVhZCBiYXRjaF9wb29sX2xpbms7CiAKIAl1bnNpZ25lZCBsb25nIGZs YWdzOwotCS8qKgotCSAqIFRoaXMgaXMgc2V0IGlmIHRoZSBvYmplY3QgaXMgb24gdGhlIGFjdGl2 ZSBsaXN0cyAoaGFzIHBlbmRpbmcKLQkgKiByZW5kZXJpbmcgYW5kIHNvIGEgbm9uLXplcm8gc2Vx bm8pLCBhbmQgaXMgbm90IHNldCBpZiBpdCBpIHMgb24KLQkgKiBpbmFjdGl2ZSAocmVhZHkgdG8g YmUgdW5ib3VuZCkgbGlzdC4KLQkgKi8KLSNkZWZpbmUgSTkxNV9CT19BQ1RJVkVfU0hJRlQgMAot I2RlZmluZSBJOTE1X0JPX0FDVElWRV9NQVNLICgoMSA8PCBJOTE1X05VTV9FTkdJTkVTKSAtIDEp Ci0jZGVmaW5lIF9fSTkxNV9CT19BQ1RJVkUoYm8pIFwKLQkoKFJFQURfT05DRSgoYm8pLT5mbGFn cykgPj4gSTkxNV9CT19BQ1RJVkVfU0hJRlQpICYgSTkxNV9CT19BQ1RJVkVfTUFTSykKIAogCS8q KgogCSAqIEhhdmUgd2UgdGFrZW4gYSByZWZlcmVuY2UgZm9yIHRoZSBvYmplY3QgZm9yIGluY29t cGxldGUgR1BVCiAJICogYWN0aXZpdHk/CiAJICovCi0jZGVmaW5lIEk5MTVfQk9fQUNUSVZFX1JF RiAoSTkxNV9CT19BQ1RJVkVfU0hJRlQgKyBJOTE1X05VTV9FTkdJTkVTKQorI2RlZmluZSBJOTE1 X0JPX0FDVElWRV9SRUYgMAogCiAJLyoKIAkgKiBJcyB0aGUgb2JqZWN0IHRvIGJlIG1hcHBlZCBh cyByZWFkLW9ubHkgdG8gdGhlIEdQVQpAQCAtMjI2OCw2ICsyMjYwLDcgQEAgc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgewogCiAJLyoqIENvdW50IG9mIFZNQSBhY3R1YWxseSBib3VuZCBieSB0 aGlzIG9iamVjdCAqLwogCXVuc2lnbmVkIGludCBiaW5kX2NvdW50OworCXVuc2lnbmVkIGludCBh Y3RpdmVfY291bnQ7CiAJdW5zaWduZWQgaW50IHBpbl9kaXNwbGF5OwogCiAJc3RydWN0IHsKQEAg LTIzMDcsOCArMjMwMCw3IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHsKIAkgKiByZWFk IHJlcXVlc3QuIFRoaXMgYWxsb3dzIGZvciB0aGUgQ1BVIHRvIHJlYWQgZnJvbSBhbiBhY3RpdmUK IAkgKiBidWZmZXIgYnkgb25seSB3YWl0aW5nIGZvciB0aGUgd3JpdGUgdG8gY29tcGxldGUuCiAJ ICovCi0Jc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSBsYXN0X3JlYWRbSTkxNV9OVU1fRU5HSU5FU107 Ci0Jc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSBsYXN0X3dyaXRlOworCXN0cnVjdCByZXNlcnZhdGlv bl9vYmplY3QgKnJlc3Y7CiAKIAkvKiogUmVmZXJlbmNlcyBmcm9tIGZyYW1lYnVmZmVycywgbG9j a3Mgb3V0IHRpbGluZyBjaGFuZ2VzLiAqLwogCXVuc2lnbmVkIGxvbmcgZnJhbWVidWZmZXJfcmVm ZXJlbmNlczsKQEAgLTIzMjcsNiArMjMxOSw4IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 IHsKIAogCS8qKiBmb3IgcGh5cyBhbGxvY2F0ZWQgb2JqZWN0cyAqLwogCXN0cnVjdCBkcm1fZG1h X2hhbmRsZSAqcGh5c19oYW5kbGU7CisKKwlzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0IF9fYnVp bHRpbl9yZXN2OwogfTsKIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqCkBAIC0yNDEyLDM1ICsyNDA2LDEwIEBAIGk5MTVfZ2VtX29iamVjdF9oYXNfc3RydWN0X3Bh Z2UoY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAlyZXR1cm4gb2JqLT5v cHMtPmZsYWdzICYgSTkxNV9HRU1fT0JKRUNUX0hBU19TVFJVQ1RfUEFHRTsKIH0KIAotc3RhdGlj IGlubGluZSB1bnNpZ25lZCBsb25nCi1pOTE1X2dlbV9vYmplY3RfZ2V0X2FjdGl2ZShjb25zdCBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQotewotCXJldHVybiAob2JqLT5mbGFncyA+ PiBJOTE1X0JPX0FDVElWRV9TSElGVCkgJiBJOTE1X0JPX0FDVElWRV9NQVNLOwotfQotCiBzdGF0 aWMgaW5saW5lIGJvb2wKIGk5MTVfZ2VtX29iamVjdF9pc19hY3RpdmUoY29uc3Qgc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHsKLQlyZXR1cm4gaTkxNV9nZW1fb2JqZWN0X2dldF9h Y3RpdmUob2JqKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkCi1pOTE1X2dlbV9vYmplY3Rfc2V0 X2FjdGl2ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBpbnQgZW5naW5lKQotewot CW9iai0+ZmxhZ3MgfD0gQklUKGVuZ2luZSArIEk5MTVfQk9fQUNUSVZFX1NISUZUKTsKLX0KLQot c3RhdGljIGlubGluZSB2b2lkCi1pOTE1X2dlbV9vYmplY3RfY2xlYXJfYWN0aXZlKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIGludCBlbmdpbmUpCi17Ci0Jb2JqLT5mbGFncyAmPSB+ QklUKGVuZ2luZSArIEk5MTVfQk9fQUNUSVZFX1NISUZUKTsKLX0KLQotc3RhdGljIGlubGluZSBi b29sCi1pOTE1X2dlbV9vYmplY3RfaGFzX2FjdGl2ZV9lbmdpbmUoY29uc3Qgc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaiwKLQkJCQkgIGludCBlbmdpbmUpCi17Ci0JcmV0dXJuIG9iai0+ ZmxhZ3MgJiBCSVQoZW5naW5lICsgSTkxNV9CT19BQ1RJVkVfU0hJRlQpOworCXJldHVybiBvYmot PmFjdGl2ZV9jb3VudDsKIH0KIAogc3RhdGljIGlubGluZSBib29sCkBAIC0yNDgzLDYgKzI0NTIs MjMgQEAgaTkxNV9nZW1fb2JqZWN0X2dldF9zdHJpZGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaikKIAlyZXR1cm4gb2JqLT50aWxpbmdfYW5kX3N0cmlkZSAmIFNUUklERV9NQVNLOwog fQogCitzdGF0aWMgaW5saW5lIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKgoraTkxNV9nZW1fb2Jq ZWN0X2xhc3Rfd3JpdGVfZW5naW5lKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCit7 CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gTlVMTDsKKwlzdHJ1Y3QgZmVuY2Ug KmZlbmNlOworCisJcmN1X3JlYWRfbG9jaygpOworCWZlbmNlID0gcmVzZXJ2YXRpb25fb2JqZWN0 X2dldF9leGNsX3JjdShvYmotPnJlc3YpOworCXJjdV9yZWFkX3VubG9jaygpOworCisJaWYgKGZl bmNlICYmIGZlbmNlX2lzX2k5MTUoZmVuY2UpICYmICFmZW5jZV9pc19zaWduYWxlZChmZW5jZSkp CisJCWVuZ2luZSA9IHRvX3JlcXVlc3QoZmVuY2UpLT5lbmdpbmU7CisJZmVuY2VfcHV0KGZlbmNl KTsKKworCXJldHVybiBlbmdpbmU7Cit9CisKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGk5MTVfdm1h ICppOTE1X3ZtYV9nZXQoc3RydWN0IGk5MTVfdm1hICp2bWEpCiB7CiAJaTkxNV9nZW1fb2JqZWN0 X2dldCh2bWEtPm9iaik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwppbmRleCBhM2UzOWY0MTJhODcu LjVmNmYzMmFjMmE2NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBAIC0yOSw3ICsyOSw2IEBA CiAjaW5jbHVkZSA8ZHJtL2RybV92bWFfbWFuYWdlci5oPgogI2luY2x1ZGUgPGRybS9pOTE1X2Ry bS5oPgogI2luY2x1ZGUgImk5MTVfZHJ2LmgiCi0jaW5jbHVkZSAiaTkxNV9nZW1fZG1hYnVmLmgi CiAjaW5jbHVkZSAiaTkxNV92Z3B1LmgiCiAjaW5jbHVkZSAiaTkxNV90cmFjZS5oIgogI2luY2x1 ZGUgImludGVsX2Rydi5oIgpAQCAtNDQ3LDExICs0NDYsNiBAQCBpOTE1X2dlbV9vYmplY3Rfd2Fp dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQkgICAgIGxvbmcgdGltZW91dCwK IAkJICAgICBzdHJ1Y3QgaW50ZWxfcnBzX2NsaWVudCAqcnBzKQogewotCXN0cnVjdCByZXNlcnZh dGlvbl9vYmplY3QgKnJlc3Y7Ci0Jc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlOwotCXVu c2lnbmVkIGxvbmcgYWN0aXZlX21hc2s7Ci0JaW50IGlkeDsKLQogCW1pZ2h0X3NsZWVwKCk7CiAj aWYgSVNfRU5BQkxFRChDT05GSUdfTE9DS0RFUCkKIAlHRU1fQlVHX09OKCEhbG9ja2RlcF9pc19o ZWxkKCZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpICE9CkBAIC00NTksMzMgKzQ1Myw5IEBA IGk5MTVfZ2VtX29iamVjdF93YWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAj ZW5kaWYKIAlHRU1fQlVHX09OKHRpbWVvdXQgPCAwKTsKIAotCWlmIChmbGFncyAmIEk5MTVfV0FJ VF9BTEwpIHsKLQkJYWN0aXZlID0gb2JqLT5sYXN0X3JlYWQ7Ci0JCWFjdGl2ZV9tYXNrID0gaTkx NV9nZW1fb2JqZWN0X2dldF9hY3RpdmUob2JqKTsKLQl9IGVsc2UgewotCQlhY3RpdmVfbWFzayA9 IDE7Ci0JCWFjdGl2ZSA9ICZvYmotPmxhc3Rfd3JpdGU7Ci0JfQotCi0JZm9yX2VhY2hfYWN0aXZl KGFjdGl2ZV9tYXNrLCBpZHgpIHsKLQkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1 ZXN0OwotCi0JCXJlcXVlc3QgPSBpOTE1X2dlbV9hY3RpdmVfZ2V0X3VubG9ja2VkKCZhY3RpdmVb aWR4XSk7Ci0JCWlmIChyZXF1ZXN0KSB7Ci0JCQl0aW1lb3V0ID0gaTkxNV9nZW1fb2JqZWN0X3dh aXRfZmVuY2UoJnJlcXVlc3QtPmZlbmNlLAotCQkJCQkJCSAgICAgZmxhZ3MsIHRpbWVvdXQsCi0J CQkJCQkJICAgICBycHMpOwotCQkJaTkxNV9nZW1fcmVxdWVzdF9wdXQocmVxdWVzdCk7Ci0JCX0K LQkJaWYgKHRpbWVvdXQgPCAwKQotCQkJcmV0dXJuIHRpbWVvdXQ7Ci0JfQotCi0JcmVzdiA9IGk5 MTVfZ2VtX29iamVjdF9nZXRfZG1hYnVmX3Jlc3Yob2JqKTsKLQlpZiAocmVzdikKLQkJdGltZW91 dCA9IGk5MTVfZ2VtX29iamVjdF93YWl0X3Jlc2VydmF0aW9uKHJlc3YsCi0JCQkJCQkJICAgZmxh Z3MsIHRpbWVvdXQsCi0JCQkJCQkJICAgcnBzKTsKKwl0aW1lb3V0ID0gaTkxNV9nZW1fb2JqZWN0 X3dhaXRfcmVzZXJ2YXRpb24ob2JqLT5yZXN2LAorCQkJCQkJICAgZmxhZ3MsIHRpbWVvdXQsCisJ CQkJCQkgICBycHMpOwogCXJldHVybiB0aW1lb3V0IDwgMCA/IHRpbWVvdXQgOiAwOwogfQogCkBA IC0yNTYxLDQ0ICsyNTMxLDYgQEAgZXJyX3VubG9jazoKIAlnb3RvIG91dF91bmxvY2s7CiB9CiAK LXN0YXRpYyB2b2lkCi1pOTE1X2dlbV9vYmplY3RfcmV0aXJlX193cml0ZShzdHJ1Y3QgaTkxNV9n ZW1fYWN0aXZlICphY3RpdmUsCi0JCQkgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcXVlc3QpCi17Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9Ci0JCWNvbnRh aW5lcl9vZihhY3RpdmUsIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0LCBsYXN0X3dyaXRlKTsK LQotCWludGVsX2ZiX29ial9mbHVzaChvYmosIHRydWUsIE9SSUdJTl9DUyk7Ci19Ci0KLXN0YXRp YyB2b2lkCi1pOTE1X2dlbV9vYmplY3RfcmV0aXJlX19yZWFkKHN0cnVjdCBpOTE1X2dlbV9hY3Rp dmUgKmFjdGl2ZSwKLQkJCSAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0 KQotewotCWludCBpZHggPSByZXF1ZXN0LT5lbmdpbmUtPmlkOwotCXN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmogPQotCQljb250YWluZXJfb2YoYWN0aXZlLCBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCwgbGFzdF9yZWFkW2lkeF0pOwotCi0JR0VNX0JVR19PTighaTkxNV9nZW1fb2Jq ZWN0X2hhc19hY3RpdmVfZW5naW5lKG9iaiwgaWR4KSk7Ci0KLQlpOTE1X2dlbV9vYmplY3RfY2xl YXJfYWN0aXZlKG9iaiwgaWR4KTsKLQlpZiAoaTkxNV9nZW1fb2JqZWN0X2lzX2FjdGl2ZShvYmop KQotCQlyZXR1cm47Ci0KLQkvKiBCdW1wIG91ciBwbGFjZSBvbiB0aGUgYm91bmQgbGlzdCB0byBr ZWVwIGl0IHJvdWdobHkgaW4gTFJVIG9yZGVyCi0JICogc28gdGhhdCB3ZSBkb24ndCBzdGVhbCBm cm9tIHJlY2VudGx5IHVzZWQgYnV0IGluYWN0aXZlIG9iamVjdHMKLQkgKiAodW5sZXNzIHdlIGFy ZSBmb3JjZWQgdG8gb2ZjISkKLQkgKi8KLQlpZiAob2JqLT5iaW5kX2NvdW50KQotCQlsaXN0X21v dmVfdGFpbCgmb2JqLT5nbG9iYWxfbGlzdCwKLQkJCSAgICAgICAmcmVxdWVzdC0+aTkxNS0+bW0u Ym91bmRfbGlzdCk7Ci0KLQlpZiAoaTkxNV9nZW1fb2JqZWN0X2hhc19hY3RpdmVfcmVmZXJlbmNl KG9iaikpIHsKLQkJaTkxNV9nZW1fb2JqZWN0X2NsZWFyX2FjdGl2ZV9yZWZlcmVuY2Uob2JqKTsK LQkJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwotCX0KLX0KLQogc3RhdGljIGJvb2wgaTkxNV9j b250ZXh0X2lzX2Jhbm5lZChjb25zdCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQogewog CXVuc2lnbmVkIGxvbmcgZWxhcHNlZDsKQEAgLTI5NzgsNiArMjkxMCwxMyBAQCBpbnQgaTkxNV92 bWFfdW5iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogCQkgKiBJbiBvcmRlciB0byBwcmV2ZW50 IGl0IGZyb20gYmVpbmcgcmVjdXJzaXZlbHkgY2xvc2VkLAogCQkgKiB0YWtlIGEgcGluIG9uIHRo ZSB2bWEgc28gdGhhdCB0aGUgc2Vjb25kIHVuYmluZCBpcwogCQkgKiBhYm9ydGVkLgorCQkgKgor CQkgKiBFdmVuIG1vcmUgc2NhcnkgaXMgdGhhdCB0aGUgcmV0aXJlIGNhbGxiYWNrIG1heSBmcmVl CisJCSAqIHRoZSBvYmplY3QgKGxhc3QgYWN0aXZlIHZtYSkuIFRvIHByZXZlbnQgdGhlIGV4cGxv c2lvbgorCQkgKiB3ZSBkZWZlciB0aGUgYWN0dWFsIG9iamVjdCBmcmVlIHRvIGEgd29ya2VyIHRo YXQgY2FuCisJCSAqIG9ubHkgcHJvY2VlZCBvbmNlIGl0IGFjcXVpcmVzIHRoZSBzdHJ1Y3RfbXV0 ZXggKHdoaWNoCisJCSAqIHdlIGN1cnJlbnRseSBob2xkLCB0aGVyZWZvcmUgaXQgY2Fubm90IGZy ZWUgdGhpcyBvYmplY3QKKwkJICogYmVmb3JlIHdlIGFyZSBmaW5pc2hlZCkuCiAJCSAqLwogCQlf X2k5MTVfdm1hX3Bpbih2bWEpOwogCkBAIC00MDIwLDgzICszOTU5LDQyIEBAIHN0YXRpYyBfX2Fs d2F5c19pbmxpbmUgdW5zaWduZWQgaW50IF9fYnVzeV93cml0ZV9pZCh1bnNpZ25lZCBpbnQgaWQp CiB9CiAKIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgaW50Ci1fX2J1c3lfc2V0X2lm X2FjdGl2ZShjb25zdCBzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUsCitfX2J1c3lfc2V0 X2lmX2FjdGl2ZShjb25zdCBzdHJ1Y3QgZmVuY2UgKmZlbmNlLAogCQkgICAgIHVuc2lnbmVkIGlu dCAoKmZsYWcpKHVuc2lnbmVkIGludCBpZCkpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXF1ZXN0OwotCi0JcmVxdWVzdCA9IHJjdV9kZXJlZmVyZW5jZShhY3RpdmUtPnJlcXVl c3QpOwotCWlmICghcmVxdWVzdCB8fCBpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXF1ZXN0 KSkKLQkJcmV0dXJuIDA7CisJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycTsKIAotCS8q IFRoaXMgaXMgcmFjeS4gU2VlIF9faTkxNV9nZW1fYWN0aXZlX2dldF9yY3UoKSBmb3IgYW4gaW4g ZGV0YWlsCi0JICogZGlzY3Vzc2lvbiBvZiBob3cgdG8gaGFuZGxlIHRoZSByYWNlIGNvcnJlY3Rs eSwgYnV0IGZvciByZXBvcnRpbmcKLQkgKiB0aGUgYnVzeSBzdGF0ZSB3ZSBlcnIgb24gdGhlIHNp ZGUgb2YgcG90ZW50aWFsbHkgcmVwb3J0aW5nIHRoZQotCSAqIHdyb25nIGVuZ2luZSBhcyBiZWlu ZyBidXN5IChidXQgd2UgZ3VhcmFudGVlIHRoYXQgdGhlIHJlc3VsdAotCSAqIGlzIGF0IGxlYXN0 IHNlbGYtY29uc2lzdGVudCkuCi0JICoKLQkgKiBBcyB3ZSB1c2UgU0xBQl9ERVNUUk9ZX0JZX1JD VSwgdGhlIHJlcXVlc3QgbWF5IGJlIHJlYWxsb2NhdGVkCi0JICogd2hpbHN0IHdlIGFyZSBpbnNw ZWN0aW5nIGl0LCBldmVuIHVuZGVyIHRoZSBSQ1UgcmVhZCBsb2NrIGFzIHdlIGFyZS4KLQkgKiBU aGlzIG1lYW5zIHRoYXQgdGhlcmUgaXMgYSBzbWFsbCB3aW5kb3cgZm9yIHRoZSBlbmdpbmUgYW5k L29yIHRoZQotCSAqIHNlcW5vIHRvIGhhdmUgYmVlbiBvdmVyd3JpdHRlbi4gVGhlIHNlcW5vIHdp bGwgYWx3YXlzIGJlIGluIHRoZQotCSAqIGZ1dHVyZSBjb21wYXJlZCB0byB0aGUgaW50ZW5kZWQs IGFuZCBzbyB3ZSBrbm93IHRoYXQgaWYgdGhhdAotCSAqIHNlcW5vIGlzIGlkbGUgKG9uIHdoYXRl dmVyIGVuZ2luZSkgb3VyIHJlcXVlc3QgaXMgaWRsZSBhbmQgdGhlCi0JICogcmV0dXJuIDAgYWJv dmUgaXMgY29ycmVjdC4KLQkgKgotCSAqIFRoZSBpc3N1ZSBpcyB0aGF0IGlmIHRoZSBlbmdpbmUg aXMgc3dpdGNoZWQsIGl0IGlzIGp1c3QgYXMgbGlrZWx5Ci0JICogdG8gcmVwb3J0IHRoYXQgaXQg aXMgYnVzeSAoYnV0IHNpbmNlIHRoZSBzd2l0Y2ggaGFwcGVuZWQsIHdlIGtub3cKLQkgKiB0aGUg cmVxdWVzdCBzaG91bGQgYmUgaWRsZSkuIFNvIHRoZXJlIGlzIGEgc21hbGwgY2hhbmNlIHRoYXQg YSBidXN5Ci0JICogcmVzdWx0IGlzIGFjdHVhbGx5IHRoZSB3cm9uZyBlbmdpbmUuCisJLyogV2Ug aGF2ZSB0byBjaGVjayB0aGUgY3VycmVudCBodyBzdGF0dXMgb2YgdGhlIGZlbmNlIGFzIHRoZSB1 QUJJCisJICogZ3VhcmFudGVlcyBmb3J3YXJkIHByb2dyZXNzLiBXZSBjb3VsZCByZWx5IG9uIHRo ZSBpZGxlIHdvcmtlcgorCSAqIHRvIGV2ZW50dWFsbHkgZmx1c2ggdXMsIGJ1dCB0byBtaW5pbWlz ZSBsYXRlbmN5IGp1c3QgYXNrIHRoZQorCSAqIGhhcmR3YXJlLgogCSAqCi0JICogU28gd2h5IGRv bid0IHdlIGNhcmU/Ci0JICoKLQkgKiBGb3Igc3RhcnRlcnMsIHRoZSBidXN5IGlvY3RsIGlzIGEg aGV1cmlzdGljIHRoYXQgaXMgYnkgZGVmaW5pdGlvbgotCSAqIHJhY3kuIEV2ZW4gd2l0aCBwZXJm ZWN0IHNlcmlhbGlzYXRpb24gaW4gdGhlIGRyaXZlciwgdGhlIGhhcmR3YXJlCi0JICogc3RhdGUg aXMgY29uc3RhbnRseSBhZHZhbmNpbmcgLSB0aGUgc3RhdGUgd2UgcmVwb3J0IHRvIHRoZSB1c2Vy Ci0JICogaXMgc3RhbGUuCi0JICoKLQkgKiBUaGUgY3JpdGljYWwgaW5mb3JtYXRpb24gZm9yIHRo ZSBidXN5LWlvY3RsIGlzIHdoZXRoZXIgdGhlIG9iamVjdAotCSAqIGlzIGlkbGUgYXMgdXNlcnNw YWNlIHJlbGllcyBvbiB0aGF0IHRvIGRldGVjdCB3aGV0aGVyIGl0cyBuZXh0Ci0JICogYWNjZXNz IHdpbGwgc3RhbGwsIG9yIGlmIGl0IGhhcyBtaXNzZWQgc3VibWl0dGluZyBjb21tYW5kcyB0bwot CSAqIHRoZSBoYXJkd2FyZSBhbGxvd2luZyB0aGUgR1BVIHRvIHN0YWxsLiBXZSBuZXZlciBnZW5l cmF0ZSBhCi0JICogZmFsc2UtcG9zaXRpdmUgZm9yIGlkbGVuZXNzLCB0aHVzIGJ1c3ktaW9jdGwg aXMgcmVsaWFibGUgYXQgdGhlCi0JICogbW9zdCBmdW5kYW1lbnRhbCBsZXZlbCwgYW5kIHdlIG1h aW50YWluIHRoZSBndWFyYW50ZWUgdGhhdCBhCi0JICogYnVzeSBvYmplY3QgbGVmdCB0byBpdHNl bGYgd2lsbCBldmVudHVhbGx5IGJlY29tZSBpZGxlIChhbmQgc3RheQotCSAqIGlkbGUhKS4KLQkg KgotCSAqIFdlIGFsbG93IG91cnNlbHZlcyB0aGUgbGVld2F5IG9mIHBvdGVudGlhbGx5IG1pc3Jl cG9ydGluZyB0aGUgYnVzeQotCSAqIHN0YXRlIGJlY2F1c2UgdGhhdCBpcyBhbiBvcHRpbWlzYXRp b24gaGV1cmlzdGljIHRoYXQgaXMgY29uc3RhbnRseQotCSAqIGluIGZsdXguIEJlaW5nIHF1aWNr bHkgYWJsZSB0byBkZXRlY3QgdGhlIGJ1c3kvaWRsZSBzdGF0ZSBpcyBtdWNoCi0JICogbW9yZSBp bXBvcnRhbnQgdGhhbiBhY2N1cmF0ZSBsb2dnaW5nIG9mIGV4YWN0bHkgd2hpY2ggZW5naW5lcyB3 ZXJlCi0JICogYnVzeS4KLQkgKgotCSAqIEZvciBhY2N1cmFjeSBpbiByZXBvcnRpbmcgdGhlIGVu Z2luZSwgd2UgY291bGQgdXNlCi0JICoKLQkgKglyZXN1bHQgPSAwOwotCSAqCXJlcXVlc3QgPSBf X2k5MTVfZ2VtX2FjdGl2ZV9nZXRfcmN1KGFjdGl2ZSk7Ci0JICoJaWYgKHJlcXVlc3QpIHsKLQkg KgkJaWYgKCFpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXF1ZXN0KSkKLQkgKgkJCXJlc3Vs dCA9IGZsYWcocmVxdWVzdC0+ZW5naW5lLT5leGVjX2lkKTsKLQkgKgkJaTkxNV9nZW1fcmVxdWVz dF9wdXQocmVxdWVzdCk7Ci0JICoJfQotCSAqCi0JICogYnV0IHRoYXQgc3RpbGwgcmVtYWlucyBz dXNjZXB0aWJsZSB0byBib3RoIGhhcmR3YXJlIGFuZCB1c2Vyc3BhY2UKLQkgKiByYWNlcy4gU28g d2UgYWNjZXB0IG1ha2luZyB0aGUgcmVzdWx0IG9mIHRoYXQgcmFjZSBzbGlnaHRseSB3b3JzZSwK LQkgKiBnaXZlbiB0aGUgcmFyaXR5IG9mIHRoZSByYWNlIGFuZCBpdHMgbG93IGltcGFjdCBvbiB0 aGUgcmVzdWx0LgorCSAqIE5vdGUgd2Ugb25seSByZXBvcnQgb24gdGhlIHN0YXR1cyBvZiBuYXRp dmUgZmVuY2VzLgogCSAqLwotCXJldHVybiBmbGFnKFJFQURfT05DRShyZXF1ZXN0LT5lbmdpbmUt PmV4ZWNfaWQpKTsKKwlpZiAoIWZlbmNlX2lzX2k5MTUoZmVuY2UpKQorCQlyZXR1cm4gMDsKKwor CS8qIG9wZW5jb2RlIHRvX3JlcXVlc3QoKSBpbiBvcmRlciB0byBhdm9pZCBjb25zdCB3YXJuaW5n cyAqLworCXJxID0gY29udGFpbmVyX29mKGZlbmNlLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QsIGZlbmNlKTsKKwlpZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocnEpKQorCQlyZXR1 cm4gMDsKKworCXJldHVybiBmbGFnKHJxLT5lbmdpbmUtPmV4ZWNfaWQpOwogfQogCiBzdGF0aWMg X19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGludAotYnVzeV9jaGVja19yZWFkZXIoY29uc3Qgc3Ry dWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlKQorYnVzeV9jaGVja19yZWFkZXIoY29uc3Qgc3Ry dWN0IGZlbmNlICpmZW5jZSkKIHsKLQlyZXR1cm4gX19idXN5X3NldF9pZl9hY3RpdmUoYWN0aXZl LCBfX2J1c3lfcmVhZF9mbGFnKTsKKwlyZXR1cm4gX19idXN5X3NldF9pZl9hY3RpdmUoZmVuY2Us IF9fYnVzeV9yZWFkX2ZsYWcpOwogfQogCiBzdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVk IGludAotYnVzeV9jaGVja193cml0ZXIoY29uc3Qgc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0 aXZlKQorYnVzeV9jaGVja193cml0ZXIoY29uc3Qgc3RydWN0IGZlbmNlICpmZW5jZSkKIHsKLQly ZXR1cm4gX19idXN5X3NldF9pZl9hY3RpdmUoYWN0aXZlLCBfX2J1c3lfd3JpdGVfaWQpOworCWlm ICghZmVuY2UpCisJCXJldHVybiAwOworCisJcmV0dXJuIF9fYnVzeV9zZXRfaWZfYWN0aXZlKGZl bmNlLCBfX2J1c3lfd3JpdGVfaWQpOwogfQogCiBpbnQKQEAgLTQxMDUsNjMgKzQwMDMsNTIgQEAg aTkxNV9nZW1fYnVzeV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAog ewogCXN0cnVjdCBkcm1faTkxNV9nZW1fYnVzeSAqYXJncyA9IGRhdGE7CiAJc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iajsKLQl1bnNpZ25lZCBsb25nIGFjdGl2ZTsKKwlzdHJ1Y3QgcmVz ZXJ2YXRpb25fb2JqZWN0X2xpc3QgKmxpc3Q7CisJdW5zaWduZWQgaW50IHNlcTsKIAlpbnQgZXJy OwogCisJZXJyID0gLUVOT0VOVDsKIAlyY3VfcmVhZF9sb2NrKCk7CiAJb2JqID0gaTkxNV9nZW1f b2JqZWN0X2xvb2t1cF9yY3UoZmlsZSwgYXJncy0+aGFuZGxlKTsKLQlpZiAoIW9iaikgewotCQll cnIgPSAtRU5PRU5UOworCWlmICghb2JqKQogCQlnb3RvIG91dDsKLQl9CiAKLQlhcmdzLT5idXN5 ID0gMDsKLQlhY3RpdmUgPSBfX0k5MTVfQk9fQUNUSVZFKG9iaik7Ci0JaWYgKGFjdGl2ZSkgewot CQlpbnQgaWR4OwotCi0JCS8qIFllcywgdGhlIGxvb2t1cHMgYXJlIGludGVudGlvbmFsbHkgcmFj eS4KLQkJICoKLQkJICogRmlyc3QsIHdlIGNhbm5vdCBzaW1wbHkgcmVseSBvbiBfX0k5MTVfQk9f QUNUSVZFLiBXZSBoYXZlCi0JCSAqIHRvIHJlZ2FyZCB0aGUgdmFsdWUgYXMgc3RhbGUgYW5kIGFz IG91ciBBQkkgZ3VhcmFudGVlcwotCQkgKiBmb3J3YXJkIHByb2dyZXNzLCB3ZSBjb25maXJtIHRo ZSBzdGF0dXMgb2YgZWFjaCBhY3RpdmUKLQkJICogcmVxdWVzdCB3aXRoIHRoZSBoYXJkd2FyZS4K LQkJICoKLQkJICogRXZlbiB0aG91Z2ggd2UgZ3VhcmQgdGhlIHBvaW50ZXIgbG9va3VwIGJ5IFJD VSwgdGhhdCBvbmx5Ci0JCSAqIGd1YXJhbnRlZXMgdGhhdCB0aGUgcG9pbnRlciBhbmQgaXRzIGNv bnRlbnRzIHJlbWFpbgotCQkgKiBkZXJlZmVyZW5jYWJsZSBhbmQgZG9lcyAqbm90KiBtZWFuIHRo YXQgdGhlIHJlcXVlc3Qgd2UKLQkJICogaGF2ZSBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIGJlaW5n IHRyYWNrZWQgYnkgdGhlIG9iamVjdC4KLQkJICoKLQkJICogQ29uc2lkZXIgdGhhdCB3ZSBsb29r dXAgdGhlIHJlcXVlc3QganVzdCBhcyBpdCBpcyBiZWluZwotCQkgKiByZXRpcmVkIGFuZCBmcmVl ZC4gV2UgdGFrZSBhIGxvY2FsIGNvcHkgb2YgdGhlIHBvaW50ZXIsCi0JCSAqIGJ1dCBiZWZvcmUg d2UgYWRkIGl0cyBlbmdpbmUgaW50byB0aGUgYnVzeSBzZXQsIHRoZSBvdGhlcgotCQkgKiB0aHJl YWQgcmVhbGxvY2F0ZXMgaXQgYW5kIGFzc2lnbnMgaXQgdG8gYSB0YXNrIG9uIGFub3RoZXIKLQkJ ICogZW5naW5lIHdpdGggYSBmcmVzaCBhbmQgaW5jb21wbGV0ZSBzZXFuby4gR3VhcmRpbmcgYWdh aW5zdAotCQkgKiB0aGF0IHJlcXVpcmVzIGNhcmVmdWwgc2VyaWFsaXNhdGlvbiBhbmQgcmVmZXJl bmNlIGNvdW50aW5nLAotCQkgKiBpLmUuIHVzaW5nIF9faTkxNV9nZW1fYWN0aXZlX2dldF9yZXF1 ZXN0X3JjdSgpLiBXZSBkb24ndCwKLQkJICogaW5zdGVhZCB3ZSBleHBlY3QgdGhhdCBpZiB0aGUg cmVzdWx0IGlzIGJ1c3ksIHdoaWNoIGVuZ2luZXMKLQkJICogYXJlIGJ1c3kgaXMgbm90IGNvbXBs ZXRlbHkgcmVsaWFibGUgLSB3ZSBvbmx5IGd1YXJhbnRlZQotCQkgKiB0aGF0IHRoZSBvYmplY3Qg d2FzIGJ1c3kuCi0JCSAqLwotCi0JCWZvcl9lYWNoX2FjdGl2ZShhY3RpdmUsIGlkeCkKLQkJCWFy Z3MtPmJ1c3kgfD0gYnVzeV9jaGVja19yZWFkZXIoJm9iai0+bGFzdF9yZWFkW2lkeF0pOwotCi0J CS8qIEZvciBBQkkgc2FuaXR5LCB3ZSBvbmx5IGNhcmUgdGhhdCB0aGUgd3JpdGUgZW5naW5lIGlz IGluCi0JCSAqIHRoZSBzZXQgb2YgcmVhZCBlbmdpbmVzLiBUaGlzIHNob3VsZCBiZSBlbnN1cmVk IGJ5IHRoZQotCQkgKiBvcmRlcmluZyBvZiBzZXR0aW5nIGxhc3RfcmVhZC9sYXN0X3dyaXRlIGlu Ci0JCSAqIGk5MTVfdm1hX21vdmVfdG9fYWN0aXZlKCksIGFuZCB0aGVuIGluIHJldmVyc2UgaW4g cmV0aXJlLgotCQkgKiBIb3dldmVyLCBmb3IgZ29vZCBtZWFzdXJlLCB3ZSBhbHdheXMgcmVwb3J0 IHRoZSBsYXN0X3dyaXRlCi0JCSAqIHJlcXVlc3QgYXMgYSBidXN5IHJlYWQgYXMgd2VsbCBhcyBi ZWluZyBhIGJ1c3kgd3JpdGUuCi0JCSAqCi0JCSAqIFdlIGRvbid0IGNhcmUgdGhhdCB0aGUgc2V0 IG9mIGFjdGl2ZSByZWFkL3dyaXRlIGVuZ2luZXMKLQkJICogbWF5IGNoYW5nZSBkdXJpbmcgY29u c3RydWN0aW9uIG9mIHRoZSByZXN1bHQsIGFzIGl0IGlzCi0JCSAqIGVxdWFsbHkgbGlhYmxlIHRv IGNoYW5nZSBiZWZvcmUgdXNlcnNwYWNlIGNhbiBpbnNwZWN0Ci0JCSAqIHRoZSByZXN1bHQuCi0J CSAqLwotCQlhcmdzLT5idXN5IHw9IGJ1c3lfY2hlY2tfd3JpdGVyKCZvYmotPmxhc3Rfd3JpdGUp OworCS8qIEEgZGlzY3JlcGFuY3kgaGVyZSBpcyB0aGF0IHdlIGRvIG5vdCByZXBvcnQgdGhlIHN0 YXR1cyBvZgorCSAqIG5vbi1pOTE1IGZlbmNlcywgaS5lLiBldmVuIHRob3VnaCB3ZSBtYXkgcmVw b3J0IHRoZSBvYmplY3QgYXMgaWRsZSwKKwkgKiBhIGNhbGwgdG8gc2V0LWRvbWFpbiBtYXkgc3Rp bGwgc3RhbGwgd2FpdGluZyBmb3IgZm9yZWlnbiByZW5kZXJpbmcuCisJICogVGhpcyBhbHNvIG1l YW5zIHRoYXQgd2FpdC1pb2N0bCBtYXkgcmVwb3J0IGFuIG9iamVjdCBhcyBidXN5LAorCSAqIHdo ZXJlIGJ1c3ktaW9jdGwgY29uc2lkZXJzIGl0IGlkbGUuCisJICoKKwkgKiBXZSB0cmFkZSB0aGUg YWJpbGl0eSB0byB3YXJuIG9mIGZvcmVpZ24gZmVuY2VzIHRvIHJlcG9ydCBvbiB3aGljaAorCSAq IGk5MTUgZW5naW5lcyBhcmUgYWN0aXZlIGZvciB0aGUgb2JqZWN0LgorCSAqCisJICogQWx0ZXJu YXRpdmVseSwgd2UgY2FuIHRyYWRlIHRoYXQgZXh0cmEgaW5mb3JtYXRpb24gb24gcmVhZC93cml0 ZQorCSAqIGFjdGl2aXR5IHdpdGgKKwkgKglhcmdzLT5idXN5ID0KKwkgKgkJIXJlc2VydmF0aW9u X29iamVjdF90ZXN0X3NpZ25hbGVkX3JjdShvYmotPnJlc3YsIHRydWUpOworCSAqIHRvIHJlcG9y dCB0aGUgb3ZlcmFsbCBidXN5bmVzcy4gVGhpcyBpcyB3aGF0IHRoZSB3YWl0LWlvY3RsIGRvZXMu CisJICoKKwkgKi8KK3JldHJ5OgorCXNlcSA9IHJhd19yZWFkX3NlcWNvdW50KCZvYmotPnJlc3Yt PnNlcSk7CisKKwkvKiBUcmFuc2xhdGUgdGhlIGV4Y2x1c2l2ZSBmZW5jZSB0byB0aGUgUkVBRCAq YW5kKiBXUklURSBlbmdpbmUgKi8KKwlhcmdzLT5idXN5ID0gYnVzeV9jaGVja193cml0ZXIocmN1 X2RlcmVmZXJlbmNlKG9iai0+cmVzdi0+ZmVuY2VfZXhjbCkpOworCisJLyogVHJhbnNsYXRlIHNo YXJlZCBmZW5jZXMgdG8gUkVBRCBzZXQgb2YgZW5naW5lcyAqLworCWxpc3QgPSByY3VfZGVyZWZl cmVuY2Uob2JqLT5yZXN2LT5mZW5jZSk7CisJaWYgKGxpc3QpIHsKKwkJdW5zaWduZWQgaW50IHNo YXJlZF9jb3VudCA9IGxpc3QtPnNoYXJlZF9jb3VudCwgaTsKKwkJZm9yIChpID0gMDsgaSA8IHNo YXJlZF9jb3VudDsgKytpKSB7CisJCQlzdHJ1Y3QgZmVuY2UgKmZlbmNlID0gcmN1X2RlcmVmZXJl bmNlKGxpc3QtPnNoYXJlZFtpXSk7CisJCQlhcmdzLT5idXN5IHw9IGJ1c3lfY2hlY2tfcmVhZGVy KGZlbmNlKTsKKwkJfQogCX0KIAorCWlmIChhcmdzLT5idXN5ICYmIHJlYWRfc2VxY291bnRfcmV0 cnkoJm9iai0+cmVzdi0+c2VxLCBzZXEpKQorCQlnb3RvIHJldHJ5OworCisJZXJyID0gMDsKIG91 dDoKIAlyY3VfcmVhZF91bmxvY2soKTsKIAlyZXR1cm4gZXJyOwpAQCAtNDIyNiwyMyArNDExMywx OSBAQCBvdXQ6CiB2b2lkIGk5MTVfZ2VtX29iamVjdF9pbml0KHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmosCiAJCQkgIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29wcyAq b3BzKQogewotCWludCBpOwotCiAJbXV0ZXhfaW5pdCgmb2JqLT5tbS5sb2NrKTsKIAogCUlOSVRf TElTVF9IRUFEKCZvYmotPmdsb2JhbF9saXN0KTsKIAlJTklUX0xJU1RfSEVBRCgmb2JqLT51c2Vy ZmF1bHRfbGluayk7Ci0JZm9yIChpID0gMDsgaSA8IEk5MTVfTlVNX0VOR0lORVM7IGkrKykKLQkJ aW5pdF9yZXF1ZXN0X2FjdGl2ZSgmb2JqLT5sYXN0X3JlYWRbaV0sCi0JCQkJICAgIGk5MTVfZ2Vt X29iamVjdF9yZXRpcmVfX3JlYWQpOwotCWluaXRfcmVxdWVzdF9hY3RpdmUoJm9iai0+bGFzdF93 cml0ZSwKLQkJCSAgICBpOTE1X2dlbV9vYmplY3RfcmV0aXJlX193cml0ZSk7CiAJSU5JVF9MSVNU X0hFQUQoJm9iai0+b2JqX2V4ZWNfbGluayk7CiAJSU5JVF9MSVNUX0hFQUQoJm9iai0+dm1hX2xp c3QpOwogCUlOSVRfTElTVF9IRUFEKCZvYmotPmJhdGNoX3Bvb2xfbGluayk7CiAKIAlvYmotPm9w cyA9IG9wczsKIAorCXJlc2VydmF0aW9uX29iamVjdF9pbml0KCZvYmotPl9fYnVpbHRpbl9yZXN2 KTsKKwlvYmotPnJlc3YgPSAmb2JqLT5fX2J1aWx0aW5fcmVzdjsKKwogCW9iai0+ZnJvbnRidWZm ZXJfZ2d0dF9vcmlnaW4gPSBPUklHSU5fR1RUOwogCiAJb2JqLT5tbS5tYWR2ID0gSTkxNV9NQURW X1dJTExORUVEOwpAQCAtNDM4MCw2ICs0MjYzLDcgQEAgc3RhdGljIHZvaWQgX19pOTE1X2dlbV9m cmVlX29iamVjdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJCWlmIChvYmotPmJh c2UuaW1wb3J0X2F0dGFjaCkKIAkJCWRybV9wcmltZV9nZW1fZGVzdHJveSgmb2JqLT5iYXNlLCBO VUxMKTsKIAorCQlyZXNlcnZhdGlvbl9vYmplY3RfZmluaSgmb2JqLT5fX2J1aWx0aW5fcmVzdik7 CiAJCWRybV9nZW1fb2JqZWN0X3JlbGVhc2UoJm9iai0+YmFzZSk7CiAJCWk5MTVfZ2VtX2luZm9f cmVtb3ZlX29iaihpOTE1LCBvYmotPmJhc2Uuc2l6ZSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYwppbmRleCBlMGYzOGU1YzBmYmIuLmIzYmMxMTllYzFiYiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fYmF0Y2hfcG9vbC5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYwpAQCAtMTE0LDEx ICsxMTQsMTggQEAgaTkxNV9nZW1fYmF0Y2hfcG9vbF9nZXQoc3RydWN0IGk5MTVfZ2VtX2JhdGNo X3Bvb2wgKnBvb2wsCiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRtcCwgbGlzdCwgYmF0Y2hfcG9v bF9saW5rKSB7CiAJCS8qIFRoZSBiYXRjaGVzIGFyZSBzdHJpY3RseSBMUlUgb3JkZXJlZCAqLwot CQlpZiAoIWk5MTVfZ2VtX2FjdGl2ZV9pc19pZGxlKCZ0bXAtPmxhc3RfcmVhZFtwb29sLT5lbmdp bmUtPmlkXSwKLQkJCQkJICAgICAmdG1wLT5iYXNlLmRldi0+c3RydWN0X211dGV4KSkKKwkJaWYg KGk5MTVfZ2VtX29iamVjdF9pc19hY3RpdmUodG1wKSkKIAkJCWJyZWFrOwogCisJCUdFTV9CVUdf T04oIXJlc2VydmF0aW9uX29iamVjdF90ZXN0X3NpZ25hbGVkX3JjdSh0bXAtPnJlc3YsCisJCQkJ CQkJCSB0cnVlKSk7CisKIAkJaWYgKHRtcC0+YmFzZS5zaXplID49IHNpemUpIHsKKwkJCS8qIENs ZWFyIHRoZSBzZXQgb2Ygc2hhcmVkIGZlbmNlcyBlYXJseSAqLworCQkJd3dfbXV0ZXhfbG9jaygm dG1wLT5yZXN2LT5sb2NrLCBOVUxMKTsKKwkJCXJlc2VydmF0aW9uX29iamVjdF9hZGRfZXhjbF9m ZW5jZSh0bXAtPnJlc3YsIE5VTEwpOworCQkJd3dfbXV0ZXhfdW5sb2NrKCZ0bXAtPnJlc3YtPmxv Y2spOworCiAJCQlvYmogPSB0bXA7CiAJCQlicmVhazsKIAkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9kbWFidWYuYwppbmRleCA0ZDQ1ZjIwZDExZWQuLjVlMzgyOTliNWRmNiAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMKQEAgLTIxMSw2MCArMjExLDE3IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgZG1hX2J1Zl9vcHMgaTkxNV9kbWFidWZfb3BzID0gIHsKIAkuZW5k X2NwdV9hY2Nlc3MgPSBpOTE1X2dlbV9lbmRfY3B1X2FjY2VzcywKIH07CiAKLXN0YXRpYyB2b2lk IGV4cG9ydF9mZW5jZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKLQkJCSAgc3Ry dWN0IGRtYV9idWYgKmRtYV9idWYpCi17Ci0Jc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVz diA9IGRtYV9idWYtPnJlc3Y7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7Ci0J dW5zaWduZWQgbG9uZyBhY3RpdmU7Ci0JaW50IGlkeDsKLQotCWFjdGl2ZSA9IF9fSTkxNV9CT19B Q1RJVkUob2JqKTsKLQlpZiAoIWFjdGl2ZSkKLQkJcmV0dXJuOwotCi0JLyogU2VyaWFsaXNlIHdp dGggZXhlY2J1ZiB0byBwcmV2ZW50IGNvbmN1cnJlbnQgZmVuY2UtbG9vcHMgKi8KLQltdXRleF9s b2NrKCZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCi0JLyogTWFyayB0aGUgb2JqZWN0 IGZvciBmdXR1cmUgZmVuY2VzIGJlZm9yZSByYWNpbHkgYWRkaW5nIG9sZCBmZW5jZXMgKi8KLQlv YmotPmJhc2UuZG1hX2J1ZiA9IGRtYV9idWY7Ci0KLQl3d19tdXRleF9sb2NrKCZyZXN2LT5sb2Nr LCBOVUxMKTsKLQotCWZvcl9lYWNoX2FjdGl2ZShhY3RpdmUsIGlkeCkgewotCQlyZXEgPSBpOTE1 X2dlbV9hY3RpdmVfZ2V0KCZvYmotPmxhc3RfcmVhZFtpZHhdLAotCQkJCQkgICZvYmotPmJhc2Uu ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCQlpZiAoIXJlcSkKLQkJCWNvbnRpbnVlOwotCi0JCWlmIChy ZXNlcnZhdGlvbl9vYmplY3RfcmVzZXJ2ZV9zaGFyZWQocmVzdikgPT0gMCkKLQkJCXJlc2VydmF0 aW9uX29iamVjdF9hZGRfc2hhcmVkX2ZlbmNlKHJlc3YsICZyZXEtPmZlbmNlKTsKLQotCQlpOTE1 X2dlbV9yZXF1ZXN0X3B1dChyZXEpOwotCX0KLQotCXJlcSA9IGk5MTVfZ2VtX2FjdGl2ZV9nZXQo Jm9iai0+bGFzdF93cml0ZSwKLQkJCQkgICZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOwot CWlmIChyZXEpIHsKLQkJcmVzZXJ2YXRpb25fb2JqZWN0X2FkZF9leGNsX2ZlbmNlKHJlc3YsICZy ZXEtPmZlbmNlKTsKLQkJaTkxNV9nZW1fcmVxdWVzdF9wdXQocmVxKTsKLQl9Ci0KLQl3d19tdXRl eF91bmxvY2soJnJlc3YtPmxvY2spOwotCW11dGV4X3VubG9jaygmb2JqLT5iYXNlLmRldi0+c3Ry dWN0X211dGV4KTsKLX0KLQogc3RydWN0IGRtYV9idWYgKmk5MTVfZ2VtX3ByaW1lX2V4cG9ydChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCSAgICAgIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAq Z2VtX29iaiwgaW50IGZsYWdzKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmog PSB0b19pbnRlbF9ibyhnZW1fb2JqKTsKIAlERUZJTkVfRE1BX0JVRl9FWFBPUlRfSU5GTyhleHBf aW5mbyk7Ci0Jc3RydWN0IGRtYV9idWYgKmRtYV9idWY7CiAKIAlleHBfaW5mby5vcHMgPSAmaTkx NV9kbWFidWZfb3BzOwogCWV4cF9pbmZvLnNpemUgPSBnZW1fb2JqLT5zaXplOwogCWV4cF9pbmZv LmZsYWdzID0gZmxhZ3M7CiAJZXhwX2luZm8ucHJpdiA9IGdlbV9vYmo7CisJZXhwX2luZm8ucmVz diA9IG9iai0+cmVzdjsKIAogCWlmIChvYmotPm9wcy0+ZG1hYnVmX2V4cG9ydCkgewogCQlpbnQg cmV0ID0gb2JqLT5vcHMtPmRtYWJ1Zl9leHBvcnQob2JqKTsKQEAgLTI3MiwxMiArMjI5LDcgQEAg c3RydWN0IGRtYV9idWYgKmk5MTVfZ2VtX3ByaW1lX2V4cG9ydChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAogCQkJcmV0dXJuIEVSUl9QVFIocmV0KTsKIAl9CiAKLQlkbWFfYnVmID0gZHJtX2dlbV9k bWFidWZfZXhwb3J0KGRldiwgJmV4cF9pbmZvKTsKLQlpZiAoSVNfRVJSKGRtYV9idWYpKQotCQly ZXR1cm4gZG1hX2J1ZjsKLQotCWV4cG9ydF9mZW5jZXMob2JqLCBkbWFfYnVmKTsKLQlyZXR1cm4g ZG1hX2J1ZjsKKwlyZXR1cm4gZHJtX2dlbV9kbWFidWZfZXhwb3J0KGRldiwgJmV4cF9pbmZvKTsK IH0KIAogc3RhdGljIHN0cnVjdCBzZ190YWJsZSAqCkBAIC0zMzUsNiArMjg3LDcgQEAgc3RydWN0 IGRybV9nZW1fb2JqZWN0ICppOTE1X2dlbV9wcmltZV9pbXBvcnQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKIAlkcm1fZ2VtX3ByaXZhdGVfb2JqZWN0X2luaXQoZGV2LCAmb2JqLT5iYXNlLCBkbWFf YnVmLT5zaXplKTsKIAlpOTE1X2dlbV9vYmplY3RfaW5pdChvYmosICZpOTE1X2dlbV9vYmplY3Rf ZG1hYnVmX29wcyk7CiAJb2JqLT5iYXNlLmltcG9ydF9hdHRhY2ggPSBhdHRhY2g7CisJb2JqLT5y ZXN2ID0gZG1hX2J1Zi0+cmVzdjsKIAogCS8qIFdlIHVzZSBHVFQgYXMgc2hvcnRoYW5kIGZvciBh IGNvaGVyZW50IGRvbWFpbiwgb25lIHRoYXQgaXMKIAkgKiBuZWl0aGVyIGluIHRoZSBHUFUgY2Fj aGUgbm9yIGluIHRoZSBDUFUgY2FjaGUsIHdoZXJlIGFsbApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9kbWFidWYuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTEzMTU1NTdlNDIx Li4wMDAwMDAwMDAwMDAKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVm LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IDIwMTYg SW50ZWwgQ29ycG9yYXRpb24KLSAqCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQotICogY29weSBvZiB0aGlz IHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdh cmUiKSwKLSAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGlu Y2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KLSAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBt b2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAotICogYW5kL29y IHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdo b20gdGhlCi0gKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhl IGZvbGxvd2luZyBjb25kaXRpb25zOgotICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKLSAqIHBhcmFn cmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0 aW9ucyBvZiB0aGUKLSAqIFNvZnR3YXJlLgotICoKLSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURF RCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi0gKiBJ TVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1F UkNIQU5UQUJJTElUWSwKLSAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO T05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAotICogVEhFIEFVVEhPUlMgT1IgQ09Q WVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIK LSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Ig T1RIRVJXSVNFLCBBUklTSU5HCi0gKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI IFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCi0gKiBERUFMSU5HUyBJTiBUSEUgU09G VFdBUkUuCi0gKgotICovCi0KLSNpZm5kZWYgX0k5MTVfR0VNX0RNQUJVRl9IXwotI2RlZmluZSBf STkxNV9HRU1fRE1BQlVGX0hfCi0KLSNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+Ci0KLXN0YXRp YyBpbmxpbmUgc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqCi1pOTE1X2dlbV9vYmplY3RfZ2V0 X2RtYWJ1Zl9yZXN2KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCi17Ci0Jc3RydWN0 IGRtYV9idWYgKmRtYV9idWY7Ci0KLQlpZiAob2JqLT5iYXNlLmRtYV9idWYpCi0JCWRtYV9idWYg PSBvYmotPmJhc2UuZG1hX2J1ZjsKLQllbHNlIGlmIChvYmotPmJhc2UuaW1wb3J0X2F0dGFjaCkK LQkJZG1hX2J1ZiA9IG9iai0+YmFzZS5pbXBvcnRfYXR0YWNoLT5kbWFidWY7Ci0JZWxzZQotCQly ZXR1cm4gTlVMTDsKLQotCXJldHVybiBkbWFfYnVmLT5yZXN2OwotfQotCi0jZW5kaWYKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwppbmRleCBkNjIxNGI5OWJiZjUu LjliNjdkZjAzM2ZmOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f ZXhlY2J1ZmZlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZm ZXIuYwpAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgPGRybS9pOTE1X2RybS5oPgogCiAjaW5j bHVkZSAiaTkxNV9kcnYuaCIKLSNpbmNsdWRlICJpOTE1X2dlbV9kbWFidWYuaCIKICNpbmNsdWRl ICJpOTE1X3RyYWNlLmgiCiAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCiAjaW5jbHVkZSAiaW50ZWxf ZnJvbnRidWZmZXIuaCIKQEAgLTM5MCw2ICszODksMTEgQEAgc3RhdGljIHZvaWQgKnJlbG9jX2tt YXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAkJdW5zaWduZWQgaW50IGZsdXNo ZXM7CiAJCWludCByZXQ7CiAKKwkJLyogV2UgY2FuJ3Qgd2FpdCBmb3IgcmVuZGVyaW5nIHdpdGgg cGFnZWZhdWx0cyBkaXNhYmxlZCAqLworCQlpZiAocGFnZWZhdWx0X2Rpc2FibGVkKCkgJiYKKwkJ ICAgICFyZXNlcnZhdGlvbl9vYmplY3RfdGVzdF9zaWduYWxlZF9yY3Uob2JqLT5yZXN2LCB0cnVl KSkKKwkJCXJldHVybiBFUlJfUFRSKC1FRkFVTFQpOworCiAJCXJldCA9IGk5MTVfZ2VtX29ial9w cmVwYXJlX3NobWVtX3dyaXRlKG9iaiwgJmZsdXNoZXMpOwogCQlpZiAocmV0KQogCQkJcmV0dXJu IEVSUl9QVFIocmV0KTsKQEAgLTQzNiw2ICs0NDAsMTEgQEAgc3RhdGljIHZvaWQgKnJlbG9jX2lv bWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCWlmICh1c2VfY3B1X3JlbG9j KG9iaikpCiAJCQlyZXR1cm4gTlVMTDsKIAorCQkvKiBXZSBjYW4ndCB3YWl0IGZvciByZW5kZXJp bmcgd2l0aCBwYWdlZmF1bHRzIGRpc2FibGVkICovCisJCWlmIChwYWdlZmF1bHRfZGlzYWJsZWQo KSAmJgorCQkgICAgIXJlc2VydmF0aW9uX29iamVjdF90ZXN0X3NpZ25hbGVkX3JjdShvYmotPnJl c3YsIHRydWUpKQorCQkJcmV0dXJuIEVSUl9QVFIoLUVGQVVMVCk7CisKIAkJcmV0ID0gaTkxNV9n ZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKG9iaiwgdHJ1ZSk7CiAJCWlmIChyZXQpCiAJCQly ZXR1cm4gRVJSX1BUUihyZXQpOwpAQCAtNTUxLDIwICs1NjAsNiBAQCByZXBlYXQ6CiAJcmV0dXJu IDA7CiB9CiAKLXN0YXRpYyBib29sIG9iamVjdF9pc19pZGxlKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmopCi17Ci0JdW5zaWduZWQgbG9uZyBhY3RpdmUgPSBpOTE1X2dlbV9vYmplY3Rf Z2V0X2FjdGl2ZShvYmopOwotCWludCBpZHg7Ci0KLQlmb3JfZWFjaF9hY3RpdmUoYWN0aXZlLCBp ZHgpIHsKLQkJaWYgKCFpOTE1X2dlbV9hY3RpdmVfaXNfaWRsZSgmb2JqLT5sYXN0X3JlYWRbaWR4 XSwKLQkJCQkJICAgICAmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KSkKLQkJCXJldHVybiBm YWxzZTsKLQl9Ci0KLQlyZXR1cm4gdHJ1ZTsKLX0KLQogc3RhdGljIGludAogaTkxNV9nZW1fZXhl Y2J1ZmZlcl9yZWxvY2F0ZV9lbnRyeShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAog CQkJCSAgIHN0cnVjdCBlYl92bWFzICplYiwKQEAgLTY0OCwxMCArNjQzLDYgQEAgaTkxNV9nZW1f ZXhlY2J1ZmZlcl9yZWxvY2F0ZV9lbnRyeShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq LAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQkvKiBXZSBjYW4ndCB3YWl0IGZvciByZW5kZXJp bmcgd2l0aCBwYWdlZmF1bHRzIGRpc2FibGVkICovCi0JaWYgKHBhZ2VmYXVsdF9kaXNhYmxlZCgp ICYmICFvYmplY3RfaXNfaWRsZShvYmopKQotCQlyZXR1cm4gLUVGQVVMVDsKLQogCXJldCA9IHJl bG9jYXRlX2VudHJ5KG9iaiwgcmVsb2MsIGNhY2hlLCB0YXJnZXRfb2Zmc2V0KTsKIAlpZiAocmV0 KQogCQlyZXR1cm4gcmV0OwpAQCAtMTExMCw0NCArMTEwMSwyMCBAQCBlcnI6CiAJcmV0dXJuIHJl dDsKIH0KIAotc3RhdGljIHVuc2lnbmVkIGludCBlYl9vdGhlcl9lbmdpbmVzKHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxKQotewotCXVuc2lnbmVkIGludCBtYXNrOwotCi0JbWFzayA9 IH5pbnRlbF9lbmdpbmVfZmxhZyhyZXEtPmVuZ2luZSkgJiBJOTE1X0JPX0FDVElWRV9NQVNLOwot CW1hc2sgPDw9IEk5MTVfQk9fQUNUSVZFX1NISUZUOwotCi0JcmV0dXJuIG1hc2s7Ci19Ci0KIHN0 YXRpYyBpbnQKIGk5MTVfZ2VtX2V4ZWNidWZmZXJfbW92ZV90b19ncHUoc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQkJc3RydWN0IGxpc3RfaGVhZCAqdm1hcykKIHsKLQljb25z dCB1bnNpZ25lZCBpbnQgb3RoZXJfcmluZ3MgPSBlYl9vdGhlcl9lbmdpbmVzKHJlcSk7CiAJc3Ry dWN0IGk5MTVfdm1hICp2bWE7CiAJaW50IHJldDsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnkodm1h LCB2bWFzLCBleGVjX2xpc3QpIHsKIAkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9 IHZtYS0+b2JqOwotCQlzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpyZXN2OwogCi0JCWlmIChv YmotPmZsYWdzICYgb3RoZXJfcmluZ3MpIHsKLQkJCXJldCA9IGk5MTVfZ2VtX3JlcXVlc3RfYXdh aXRfb2JqZWN0Ci0JCQkJKHJlcSwgb2JqLCBvYmotPmJhc2UucGVuZGluZ193cml0ZV9kb21haW4p OwotCQkJaWYgKHJldCkKLQkJCQlyZXR1cm4gcmV0OwotCQl9Ci0KLQkJcmVzdiA9IGk5MTVfZ2Vt X29iamVjdF9nZXRfZG1hYnVmX3Jlc3Yob2JqKTsKLQkJaWYgKHJlc3YpIHsKLQkJCXJldCA9IGk5 MTVfc3dfZmVuY2VfYXdhaXRfcmVzZXJ2YXRpb24KLQkJCQkoJnJlcS0+c3VibWl0LCByZXN2LCAm aTkxNV9mZW5jZV9vcHMsCi0JCQkJIG9iai0+YmFzZS5wZW5kaW5nX3dyaXRlX2RvbWFpbiwgMTAq SFosCi0JCQkJIEdGUF9LRVJORUwgfCBfX0dGUF9OT1dBUk4pOwotCQkJaWYgKHJldCA8IDApCi0J CQkJcmV0dXJuIHJldDsKLQkJfQorCQlyZXQgPSBpOTE1X2dlbV9yZXF1ZXN0X2F3YWl0X29iamVj dAorCQkJKHJlcSwgb2JqLCBvYmotPmJhc2UucGVuZGluZ193cml0ZV9kb21haW4pOworCQlpZiAo cmV0KQorCQkJcmV0dXJuIHJldDsKIAogCQlpZiAob2JqLT5iYXNlLndyaXRlX2RvbWFpbiAmIEk5 MTVfR0VNX0RPTUFJTl9DUFUpCiAJCQlpOTE1X2dlbV9jbGZsdXNoX29iamVjdChvYmosIGZhbHNl KTsKQEAgLTEyODksOCArMTI1Niw2IEBAIHZvaWQgaTkxNV92bWFfbW92ZV90b19hY3RpdmUoc3Ry dWN0IGk5MTVfdm1hICp2bWEsCiAKIAlHRU1fQlVHX09OKCFkcm1fbW1fbm9kZV9hbGxvY2F0ZWQo JnZtYS0+bm9kZSkpOwogCi0Jb2JqLT5tbS5kaXJ0eSA9IHRydWU7IC8qIGJlIHBhcmFub2lkICAq LwotCiAJLyogQWRkIGEgcmVmZXJlbmNlIGlmIHdlJ3JlIG5ld2x5IGVudGVyaW5nIHRoZSBhY3Rp dmUgbGlzdC4KIAkgKiBUaGUgb3JkZXIgaW4gd2hpY2ggd2UgYWRkIG9wZXJhdGlvbnMgdG8gdGhl IHJldGlyZW1lbnQgcXVldWUgaXMKIAkgKiB2aXRhbCBoZXJlOiBtYXJrX2FjdGl2ZSBhZGRzIHRv IHRoZSBzdGFydCBvZiB0aGUgY2FsbGJhY2sgbGlzdCwKQEAgLTEyOTgsMTEgKzEyNjMsMTQgQEAg dm9pZCBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKIAkgKiBh ZGQgdGhlIGFjdGl2ZSByZWZlcmVuY2UgZmlyc3QgYW5kIHF1ZXVlIGZvciBpdCB0byBiZSBkcm9w cGVkCiAJICogKmxhc3QqLgogCSAqLwotCWk5MTVfZ2VtX29iamVjdF9zZXRfYWN0aXZlKG9iaiwg aWR4KTsKLQlpOTE1X2dlbV9hY3RpdmVfc2V0KCZvYmotPmxhc3RfcmVhZFtpZHhdLCByZXEpOwor CWlmICghaTkxNV92bWFfaXNfYWN0aXZlKHZtYSkpCisJCW9iai0+YWN0aXZlX2NvdW50Kys7CisJ aTkxNV92bWFfc2V0X2FjdGl2ZSh2bWEsIGlkeCk7CisJaTkxNV9nZW1fYWN0aXZlX3NldCgmdm1h LT5sYXN0X3JlYWRbaWR4XSwgcmVxKTsKKwlsaXN0X21vdmVfdGFpbCgmdm1hLT52bV9saW5rLCAm dm1hLT52bS0+YWN0aXZlX2xpc3QpOwogCiAJaWYgKGZsYWdzICYgRVhFQ19PQkpFQ1RfV1JJVEUp IHsKLQkJaTkxNV9nZW1fYWN0aXZlX3NldCgmb2JqLT5sYXN0X3dyaXRlLCByZXEpOworCQlpOTE1 X2dlbV9hY3RpdmVfc2V0KCZ2bWEtPmxhc3Rfd3JpdGUsIHJlcSk7CiAKIAkJaW50ZWxfZmJfb2Jq X2ludmFsaWRhdGUob2JqLCBPUklHSU5fQ1MpOwogCkBAIC0xMzEyLDIxICsxMjgwLDEzIEBAIHZv aWQgaTkxNV92bWFfbW92ZV90b19hY3RpdmUoc3RydWN0IGk5MTVfdm1hICp2bWEsCiAKIAlpZiAo ZmxhZ3MgJiBFWEVDX09CSkVDVF9ORUVEU19GRU5DRSkKIAkJaTkxNV9nZW1fYWN0aXZlX3NldCgm dm1hLT5sYXN0X2ZlbmNlLCByZXEpOwotCi0JaTkxNV92bWFfc2V0X2FjdGl2ZSh2bWEsIGlkeCk7 Ci0JaTkxNV9nZW1fYWN0aXZlX3NldCgmdm1hLT5sYXN0X3JlYWRbaWR4XSwgcmVxKTsKLQlsaXN0 X21vdmVfdGFpbCgmdm1hLT52bV9saW5rLCAmdm1hLT52bS0+YWN0aXZlX2xpc3QpOwogfQogCiBz dGF0aWMgdm9pZCBlYl9leHBvcnRfZmVuY2Uoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwKIAkJCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJCSAgICB1bnNp Z25lZCBpbnQgZmxhZ3MpCiB7Ci0Jc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVzdjsKLQot CXJlc3YgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X2RtYWJ1Zl9yZXN2KG9iaik7Ci0JaWYgKCFyZXN2 KQotCQlyZXR1cm47CisJc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVzdiA9IG9iai0+cmVz djsKIAogCS8qIElnbm9yZSBlcnJvcnMgZnJvbSBmYWlsaW5nIHRvIGFsbG9jYXRlIHRoZSBuZXcg ZmVuY2UsIHdlIGNhbid0CiAJICogaGFuZGxlIGFuIGVycm9yIHJpZ2h0IG5vdy4gV29yc3QgY2Fz ZSBzaG91bGQgYmUgbWlzc2VkCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCmluZGV4IDEw MDgyMDljYTc5Ny4uMWIxYTQ1OWUyYjY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9ndHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQu YwpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImk5MTVfdmdwdS5oIgogI2luY2x1ZGUgImk5 MTVfdHJhY2UuaCIKICNpbmNsdWRlICJpbnRlbF9kcnYuaCIKKyNpbmNsdWRlICJpbnRlbF9mcm9u dGJ1ZmZlci5oIgogCiAjZGVmaW5lIEk5MTVfR0ZQX0RNQSAoR0ZQX0tFUk5FTCB8IF9fR0ZQX0hJ R0hNRU0pCiAKQEAgLTMzNDMsNiArMzM0NCw3IEBAIGk5MTVfdm1hX3JldGlyZShzdHJ1Y3QgaTkx NV9nZW1fYWN0aXZlICphY3RpdmUsCiAJY29uc3QgdW5zaWduZWQgaW50IGlkeCA9IHJxLT5lbmdp bmUtPmlkOwogCXN0cnVjdCBpOTE1X3ZtYSAqdm1hID0KIAkJY29udGFpbmVyX29mKGFjdGl2ZSwg c3RydWN0IGk5MTVfdm1hLCBsYXN0X3JlYWRbaWR4XSk7CisJc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiA9IHZtYS0+b2JqOwogCiAJR0VNX0JVR19PTighaTkxNV92bWFfaGFzX2FjdGl2 ZV9lbmdpbmUodm1hLCBpZHgpKTsKIApAQCAtMzM1Myw2ICszMzU1LDM0IEBAIGk5MTVfdm1hX3Jl dGlyZShzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUsCiAJbGlzdF9tb3ZlX3RhaWwoJnZt YS0+dm1fbGluaywgJnZtYS0+dm0tPmluYWN0aXZlX2xpc3QpOwogCWlmICh1bmxpa2VseShpOTE1 X3ZtYV9pc19jbG9zZWQodm1hKSAmJiAhaTkxNV92bWFfaXNfcGlubmVkKHZtYSkpKQogCQlXQVJO X09OKGk5MTVfdm1hX3VuYmluZCh2bWEpKTsKKworCUdFTV9CVUdfT04oIWk5MTVfZ2VtX29iamVj dF9pc19hY3RpdmUob2JqKSk7CisJaWYgKC0tb2JqLT5hY3RpdmVfY291bnQpCisJCXJldHVybjsK KworCS8qIEJ1bXAgb3VyIHBsYWNlIG9uIHRoZSBib3VuZCBsaXN0IHRvIGtlZXAgaXQgcm91Z2hs eSBpbiBMUlUgb3JkZXIKKwkgKiBzbyB0aGF0IHdlIGRvbid0IHN0ZWFsIGZyb20gcmVjZW50bHkg dXNlZCBidXQgaW5hY3RpdmUgb2JqZWN0cworCSAqICh1bmxlc3Mgd2UgYXJlIGZvcmNlZCB0byBv ZmMhKQorCSAqLworCWlmIChvYmotPmJpbmRfY291bnQpCisJCWxpc3RfbW92ZV90YWlsKCZvYmot Pmdsb2JhbF9saXN0LCAmcnEtPmk5MTUtPm1tLmJvdW5kX2xpc3QpOworCisJb2JqLT5tbS5kaXJ0 eSA9IHRydWU7IC8qIGJlIHBhcmFub2lkICAqLworCisJaWYgKGk5MTVfZ2VtX29iamVjdF9oYXNf YWN0aXZlX3JlZmVyZW5jZShvYmopKSB7CisJCWk5MTVfZ2VtX29iamVjdF9jbGVhcl9hY3RpdmVf cmVmZXJlbmNlKG9iaik7CisJCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKKwl9Cit9CisKK3N0 YXRpYyB2b2lkCitpOTE1X2dndHRfcmV0aXJlX193cml0ZShzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZl ICphY3RpdmUsCisJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCit7CisJ c3RydWN0IGk5MTVfdm1hICp2bWEgPQorCQljb250YWluZXJfb2YoYWN0aXZlLCBzdHJ1Y3QgaTkx NV92bWEsIGxhc3Rfd3JpdGUpOworCisJaW50ZWxfZmJfb2JqX2ZsdXNoKHZtYS0+b2JqLCB0cnVl LCBPUklHSU5fQ1MpOwogfQogCiB2b2lkIGk5MTVfdm1hX2Rlc3Ryb3koc3RydWN0IGk5MTVfdm1h ICp2bWEpCkBAIC0zMzk2LDYgKzM0MjYsOCBAQCBfX2k5MTVfdm1hX2NyZWF0ZShzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCUlOSVRfTElTVF9IRUFEKCZ2bWEtPmV4ZWNfbGlzdCk7 CiAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUodm1hLT5sYXN0X3JlYWQpOyBpKyspCiAJCWlu aXRfcmVxdWVzdF9hY3RpdmUoJnZtYS0+bGFzdF9yZWFkW2ldLCBpOTE1X3ZtYV9yZXRpcmUpOwor CWluaXRfcmVxdWVzdF9hY3RpdmUoJnZtYS0+bGFzdF93cml0ZSwKKwkJCSAgICBpOTE1X2lzX2dn dHQodm0pID8gaTkxNV9nZ3R0X3JldGlyZV9fd3JpdGUgOiBOVUxMKTsKIAlpbml0X3JlcXVlc3Rf YWN0aXZlKCZ2bWEtPmxhc3RfZmVuY2UsIE5VTEwpOwogCWxpc3RfYWRkKCZ2bWEtPnZtX2xpbmss ICZ2bS0+dW5ib3VuZF9saXN0KTsKIAl2bWEtPnZtID0gdm07CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2d0dC5oCmluZGV4IGRiZTZhNmNlYzIwZC4uOWYwMzI3ZTUxNzZhIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9ndHQuaApAQCAtMjExLDYgKzIxMSw3IEBAIHN0cnVjdCBpOTE1X3ZtYSB7 CiAKIAl1bnNpZ25lZCBpbnQgYWN0aXZlOwogCXN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgbGFzdF9y ZWFkW0k5MTVfTlVNX0VOR0lORVNdOworCXN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgbGFzdF93cml0 ZTsKIAlzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlIGxhc3RfZmVuY2U7CiAKIAkvKioKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwppbmRleCBmMDliOGUzYTgyNzYuLjIyNWM0YzY4 NGFjNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwpAQCAtMTk2LDYg KzE5Niw4IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJlKHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIAl9CiAKIAlpOTE1X2dlbV9jb250ZXh0X3B1dChy ZXF1ZXN0LT5jdHgpOworCisJZmVuY2Vfc2lnbmFsKCZyZXF1ZXN0LT5mZW5jZSk7CiAJaTkxNV9n ZW1fcmVxdWVzdF9wdXQocmVxdWVzdCk7CiB9CiAKQEAgLTU1MywzMyArNTU1LDQxIEBAIGk5MTVf Z2VtX3JlcXVlc3RfYXdhaXRfb2JqZWN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqdG8s CiAJCQkgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQkJICAgICAgYm9v bCB3cml0ZSkKIHsKLQlzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmU7Ci0JdW5zaWduZWQg bG9uZyBhY3RpdmVfbWFzazsKLQlpbnQgaWR4OworCXN0cnVjdCBmZW5jZSAqZXhjbDsKKwlpbnQg cmV0ID0gMDsKIAogCWlmICh3cml0ZSkgewotCQlhY3RpdmVfbWFzayA9IGk5MTVfZ2VtX29iamVj dF9nZXRfYWN0aXZlKG9iaik7Ci0JCWFjdGl2ZSA9IG9iai0+bGFzdF9yZWFkOworCQlzdHJ1Y3Qg ZmVuY2UgKipzaGFyZWQ7CisJCXVuc2lnbmVkIGludCBjb3VudCwgaTsKKworCQlyZXQgPSByZXNl cnZhdGlvbl9vYmplY3RfZ2V0X2ZlbmNlc19yY3Uob2JqLT5yZXN2LAorCQkJCQkJCSZleGNsLCAm Y291bnQsICZzaGFyZWQpOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKworCQlmb3IgKGkg PSAwOyBpIDwgY291bnQ7IGkrKykgeworCQkJcmV0ID0gaTkxNV9nZW1fcmVxdWVzdF9hd2FpdF9m ZW5jZSh0bywgc2hhcmVkW2ldKTsKKwkJCWlmIChyZXQpCisJCQkJYnJlYWs7CisKKwkJCWZlbmNl X3B1dChzaGFyZWRbaV0pOworCQl9CisKKwkJZm9yICg7IGkgPCBjb3VudDsgaSsrKQorCQkJZmVu Y2VfcHV0KHNoYXJlZFtpXSk7CisJCWtmcmVlKHNoYXJlZCk7CiAJfSBlbHNlIHsKLQkJYWN0aXZl X21hc2sgPSAxOwotCQlhY3RpdmUgPSAmb2JqLT5sYXN0X3dyaXRlOworCQlleGNsID0gcmVzZXJ2 YXRpb25fb2JqZWN0X2dldF9leGNsX3JjdShvYmotPnJlc3YpOwogCX0KIAotCWZvcl9lYWNoX2Fj dGl2ZShhY3RpdmVfbWFzaywgaWR4KSB7Ci0JCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxdWVzdDsKLQkJaW50IHJldDsKLQotCQlyZXF1ZXN0ID0gaTkxNV9nZW1fYWN0aXZlX3BlZWso JmFjdGl2ZVtpZHhdLAotCQkJCQkgICAgICAgJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7 Ci0JCWlmICghcmVxdWVzdCkKLQkJCWNvbnRpbnVlOworCWlmIChleGNsKSB7CisJCWlmIChyZXQg PT0gMCkKKwkJCXJldCA9IGk5MTVfZ2VtX3JlcXVlc3RfYXdhaXRfZmVuY2UodG8sIGV4Y2wpOwog Ci0JCXJldCA9IGk5MTVfZ2VtX3JlcXVlc3RfYXdhaXRfcmVxdWVzdCh0bywgcmVxdWVzdCk7Ci0J CWlmIChyZXQpCi0JCQlyZXR1cm4gcmV0OworCQlmZW5jZV9wdXQoZXhjbCk7CiAJfQogCi0JcmV0 dXJuIDA7CisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIHZvaWQgaTkxNV9nZW1fbWFya19idXN5 KGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3JlcXVlc3QuaAppbmRleCA0NTk5OGVlZGRhMmMuLmI4ZmVmZjU4NTdhMCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuaApAQCAtMTQ3LDcgKzE0Nyw3IEBA IHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCB7CiAKIGV4dGVybiBjb25zdCBzdHJ1Y3QgZmVu Y2Vfb3BzIGk5MTVfZmVuY2Vfb3BzOwogCi1zdGF0aWMgaW5saW5lIGJvb2wgZmVuY2VfaXNfaTkx NShzdHJ1Y3QgZmVuY2UgKmZlbmNlKQorc3RhdGljIGlubGluZSBib29sIGZlbmNlX2lzX2k5MTUo Y29uc3Qgc3RydWN0IGZlbmNlICpmZW5jZSkKIHsKIAlyZXR1cm4gZmVuY2UtPm9wcyA9PSAmaTkx NV9mZW5jZV9vcHM7CiB9CkBAIC01NTQsMjIgKzU1NCw3IEBAIGk5MTVfZ2VtX2FjdGl2ZV9pc3Nl dChjb25zdCBzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUpCiB9CiAKIC8qKgotICogaTkx NV9nZW1fYWN0aXZlX2lzX2lkbGUgLSByZXBvcnQgd2hldGhlciB0aGUgYWN0aXZlIHRyYWNrZXIg aXMgaWRsZQotICogQGFjdGl2ZSAtIHRoZSBhY3RpdmUgdHJhY2tlcgotICoKLSAqIGk5MTVfZ2Vt X2FjdGl2ZV9pc19pZGxlKCkgcmV0dXJucyB0cnVlIGlmIHRoZSBhY3RpdmUgdHJhY2tlciBpcyBj dXJyZW50bHkKLSAqIHVuYXNzaWduZWQgb3IgaWYgdGhlIHJlcXVlc3QgaXMgY29tcGxldGUgKGJ1 dCBub3QgeWV0IHJldGlyZWQpLiBSZXF1aXJlcwotICogdGhlIGNhbGxlciB0byBob2xkIHN0cnVj dF9tdXRleCAoYnV0IHRoYXQgY2FuIGJlIHJlbGF4ZWQgaWYgZGVzaXJlZCkuCi0gKi8KLXN0YXRp YyBpbmxpbmUgYm9vbAotaTkxNV9nZW1fYWN0aXZlX2lzX2lkbGUoY29uc3Qgc3RydWN0IGk5MTVf Z2VtX2FjdGl2ZSAqYWN0aXZlLAotCQkJc3RydWN0IG11dGV4ICptdXRleCkKLXsKLQlyZXR1cm4g IWk5MTVfZ2VtX2FjdGl2ZV9wZWVrKGFjdGl2ZSwgbXV0ZXgpOwotfQotCi0vKioKLSAqIGk5MTVf Z2VtX2FjdGl2ZV93YWl0LSB3YWl0cyB1bnRpbCB0aGUgcmVxdWVzdCBpcyBjb21wbGV0ZWQKKyAq IGk5MTVfZ2VtX2FjdGl2ZV93YWl0IC0gd2FpdHMgdW50aWwgdGhlIHJlcXVlc3QgaXMgY29tcGxl dGVkCiAgKiBAYWN0aXZlIC0gdGhlIGFjdGl2ZSByZXF1ZXN0IG9uIHdoaWNoIHRvIHdhaXQKICAq IEBmbGFncyAtIGhvdyB0byB3YWl0CiAgKiBAdGltZW91dCAtIGhvdyBsb25nIHRvIHdhaXQgYXQg bW9zdApAQCAtNjM5LDI0ICs2MjQsNiBAQCBpOTE1X2dlbV9hY3RpdmVfcmV0aXJlKHN0cnVjdCBp OTE1X2dlbV9hY3RpdmUgKmFjdGl2ZSwKIAlyZXR1cm4gMDsKIH0KIAotLyogQ29udmVuaWVuY2Ug ZnVuY3Rpb25zIGZvciBwZWVraW5nIGF0IHN0YXRlIGluc2lkZSBhY3RpdmUncyByZXF1ZXN0IHdo aWxzdAotICogZ3VhcmRlZCBieSB0aGUgc3RydWN0X211dGV4LgotICovCi0KLXN0YXRpYyBpbmxp bmUgdWludDMyX3QKLWk5MTVfZ2VtX2FjdGl2ZV9nZXRfc2Vxbm8oY29uc3Qgc3RydWN0IGk5MTVf Z2VtX2FjdGl2ZSAqYWN0aXZlLAotCQkJICBzdHJ1Y3QgbXV0ZXggKm11dGV4KQotewotCXJldHVy biBpOTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFubyhpOTE1X2dlbV9hY3RpdmVfcGVlayhhY3RpdmUs IG11dGV4KSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqCi1p OTE1X2dlbV9hY3RpdmVfZ2V0X2VuZ2luZShjb25zdCBzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICph Y3RpdmUsCi0JCQkgICBzdHJ1Y3QgbXV0ZXggKm11dGV4KQotewotCXJldHVybiBpOTE1X2dlbV9y ZXF1ZXN0X2dldF9lbmdpbmUoaTkxNV9nZW1fYWN0aXZlX3BlZWsoYWN0aXZlLCBtdXRleCkpOwot fQotCiAjZGVmaW5lIGZvcl9lYWNoX2FjdGl2ZShtYXNrLCBpZHgpIFwKIAlmb3IgKDsgbWFzayA/ IGlkeCA9IGZmcyhtYXNrKSAtIDEsIDEgOiAwOyBtYXNrICY9IH5CSVQoaWR4KSkKIApkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKaW5kZXggYjgxZjBmYTNjNmUzLi40ZjYyYjgyZmM0 ZGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwpAQCAtODgwLDkgKzg4MCw5 IEBAIHN0YXRpYyB2b2lkIGNhcHR1cmVfYm8oc3RydWN0IGRybV9pOTE1X2Vycm9yX2J1ZmZlciAq ZXJyLAogCWVyci0+bmFtZSA9IG9iai0+YmFzZS5uYW1lOwogCiAJZm9yIChpID0gMDsgaSA8IEk5 MTVfTlVNX0VOR0lORVM7IGkrKykKLQkJZXJyLT5yc2Vxbm9baV0gPSBfX2FjdGl2ZV9nZXRfc2Vx bm8oJm9iai0+bGFzdF9yZWFkW2ldKTsKLQllcnItPndzZXFubyA9IF9fYWN0aXZlX2dldF9zZXFu bygmb2JqLT5sYXN0X3dyaXRlKTsKLQllcnItPmVuZ2luZSA9IF9fYWN0aXZlX2dldF9lbmdpbmVf aWQoJm9iai0+bGFzdF93cml0ZSk7CisJCWVyci0+cnNlcW5vW2ldID0gX19hY3RpdmVfZ2V0X3Nl cW5vKCZ2bWEtPmxhc3RfcmVhZFtpXSk7CisJZXJyLT53c2Vxbm8gPSBfX2FjdGl2ZV9nZXRfc2Vx bm8oJnZtYS0+bGFzdF93cml0ZSk7CisJZXJyLT5lbmdpbmUgPSBfX2FjdGl2ZV9nZXRfZW5naW5l X2lkKCZ2bWEtPmxhc3Rfd3JpdGUpOwogCiAJZXJyLT5ndHRfb2Zmc2V0ID0gdm1hLT5ub2RlLnN0 YXJ0OwogCWVyci0+cmVhZF9kb21haW5zID0gb2JqLT5iYXNlLnJlYWRfZG9tYWluczsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMKaW5kZXggYjgyZGUzMDcyZDRmLi5h ODkyNzkyOWM3NDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21p Y19wbGFuZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5j CkBAIC04NCw3ICs4NCw2IEBAIGludGVsX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSkKIAlzdGF0ZSA9ICZpbnRlbF9zdGF0ZS0+YmFzZTsKIAogCV9fZHJtX2F0 b21pY19oZWxwZXJfcGxhbmVfZHVwbGljYXRlX3N0YXRlKHBsYW5lLCBzdGF0ZSk7Ci0JaW50ZWxf c3RhdGUtPndhaXRfcmVxID0gTlVMTDsKIAogCXJldHVybiBzdGF0ZTsKIH0KQEAgLTEwMSw3ICsx MDAsNiBAQCB2b2lkCiBpbnRlbF9wbGFuZV9kZXN0cm95X3N0YXRlKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLAogCQkJICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSkKIHsKLQlXQVJOX09O KHN0YXRlICYmIHRvX2ludGVsX3BsYW5lX3N0YXRlKHN0YXRlKS0+d2FpdF9yZXEpOwogCWRybV9h dG9taWNfaGVscGVyX3BsYW5lX2Rlc3Ryb3lfc3RhdGUocGxhbmUsIHN0YXRlKTsKIH0KIApkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IDI2YjZhZDAzZjg0YS4uMWYxZjc5MmM1 MTkxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC0zNyw3ICszNyw2IEBA CiAjaW5jbHVkZSAiaW50ZWxfZnJvbnRidWZmZXIuaCIKICNpbmNsdWRlIDxkcm0vaTkxNV9kcm0u aD4KICNpbmNsdWRlICJpOTE1X2Rydi5oIgotI2luY2x1ZGUgImk5MTVfZ2VtX2RtYWJ1Zi5oIgog I2luY2x1ZGUgImludGVsX2RzaS5oIgogI2luY2x1ZGUgImk5MTVfdHJhY2UuaCIKICNpbmNsdWRl IDxkcm0vZHJtX2F0b21pYy5oPgpAQCAtMTE5NDUsOCArMTE5NDQsNiBAQCBzdGF0aWMgaW50IGlu dGVsX2dlbjdfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogc3RhdGljIGJvb2wg dXNlX21taW9fZmxpcChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJCQkgIHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiB7Ci0Jc3RydWN0IHJlc2VydmF0aW9uX29iamVj dCAqcmVzdjsKLQogCS8qCiAJICogVGhpcyBpcyBub3QgYmVpbmcgdXNlZCBmb3Igb2xkZXIgcGxh dGZvcm1zLCBiZWNhdXNlCiAJICogbm9uLWF2YWlsYWJpbGl0eSBvZiBmbGlwIGRvbmUgaW50ZXJy dXB0IGZvcmNlcyB1cyB0byB1c2UKQEAgLTExOTY4LDEyICsxMTk2NSw3IEBAIHN0YXRpYyBib29s IHVzZV9tbWlvX2ZsaXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCWVsc2UgaWYg KGk5MTUuZW5hYmxlX2V4ZWNsaXN0cykKIAkJcmV0dXJuIHRydWU7CiAKLQlyZXN2ID0gaTkxNV9n ZW1fb2JqZWN0X2dldF9kbWFidWZfcmVzdihvYmopOwotCWlmIChyZXN2ICYmICFyZXNlcnZhdGlv bl9vYmplY3RfdGVzdF9zaWduYWxlZF9yY3UocmVzdiwgZmFsc2UpKQotCQlyZXR1cm4gdHJ1ZTsK LQotCXJldHVybiBlbmdpbmUgIT0gaTkxNV9nZW1fYWN0aXZlX2dldF9lbmdpbmUoJm9iai0+bGFz dF93cml0ZSwKLQkJCQkJCSAgICAmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKKwlyZXR1 cm4gZW5naW5lICE9IGk5MTVfZ2VtX29iamVjdF9sYXN0X3dyaXRlX2VuZ2luZShvYmopOwogfQog CiBzdGF0aWMgdm9pZCBza2xfZG9fbW1pb19mbGlwKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjLApAQCAtMTIwNDYsMTcgKzEyMDM4LDggQEAgc3RhdGljIHZvaWQgaW50ZWxfbW1pb19mbGlw X3dvcmtfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpCiAJc3RydWN0IGludGVsX2ZyYW1lYnVm ZmVyICppbnRlbF9mYiA9CiAJCXRvX2ludGVsX2ZyYW1lYnVmZmVyKGNydGMtPmJhc2UucHJpbWFy eS0+ZmIpOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYi0+b2Jq OwotCXN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKnJlc3Y7CiAKLQlpZiAod29yay0+ZmxpcF9x dWV1ZWRfcmVxKQotCQlXQVJOX09OKGk5MTVfd2FpdF9yZXF1ZXN0KHdvcmstPmZsaXBfcXVldWVk X3JlcSwKLQkJCQkJICAwLCBNQVhfU0NIRURVTEVfVElNRU9VVCkgPCAwKTsKLQotCS8qIEZvciBm cmFtZWJ1ZmZlciBiYWNrZWQgYnkgZG1hYnVmLCB3YWl0IGZvciBmZW5jZSAqLwotCXJlc3YgPSBp OTE1X2dlbV9vYmplY3RfZ2V0X2RtYWJ1Zl9yZXN2KG9iaik7Ci0JaWYgKHJlc3YpCi0JCVdBUk5f T04ocmVzZXJ2YXRpb25fb2JqZWN0X3dhaXRfdGltZW91dF9yY3UocmVzdiwgZmFsc2UsIGZhbHNl LAotCQkJCQkJCSAgICBNQVhfU0NIRURVTEVfVElNRU9VVCkgPCAwKTsKKwlXQVJOX09OKGk5MTVf Z2VtX29iamVjdF93YWl0KG9iaiwgMCwgTUFYX1NDSEVEVUxFX1RJTUVPVVQsIE5VTEwpIDwgMCk7 CiAKIAlpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChjcnRjKTsKIApAQCAtMTIyNTcsOCArMTIyNDAs NyBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfcGFnZV9mbGlwKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKIAl9IGVsc2UgaWYgKElTX0lWWUJSSURHRShkZXZfcHJpdikgfHwgSVNfSEFTV0VMTChkZXZf cHJpdikpIHsKIAkJZW5naW5lID0gZGV2X3ByaXYtPmVuZ2luZVtCQ1NdOwogCX0gZWxzZSBpZiAo SU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNykgewotCQllbmdpbmUgPSBpOTE1X2dlbV9hY3RpdmVf Z2V0X2VuZ2luZSgmb2JqLT5sYXN0X3dyaXRlLAotCQkJCQkJICAgICZvYmotPmJhc2UuZGV2LT5z dHJ1Y3RfbXV0ZXgpOworCQllbmdpbmUgPSBpOTE1X2dlbV9vYmplY3RfbGFzdF93cml0ZV9lbmdp bmUob2JqKTsKIAkJaWYgKGVuZ2luZSA9PSBOVUxMIHx8IGVuZ2luZS0+aWQgIT0gUkNTKQogCQkJ ZW5naW5lID0gZGV2X3ByaXYtPmVuZ2luZVtCQ1NdOwogCX0gZWxzZSB7CkBAIC0xMjI5MCw5ICsx MjI3Miw2IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19wYWdlX2ZsaXAoc3RydWN0IGRybV9jcnRj ICpjcnRjLAogCiAJaWYgKG1taW9fZmxpcCkgewogCQlJTklUX1dPUksoJndvcmstPm1taW9fd29y aywgaW50ZWxfbW1pb19mbGlwX3dvcmtfZnVuYyk7Ci0KLQkJd29yay0+ZmxpcF9xdWV1ZWRfcmVx ID0gaTkxNV9nZW1fYWN0aXZlX2dldCgmb2JqLT5sYXN0X3dyaXRlLAotCQkJCQkJCSAgICAmb2Jq LT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKIAkJcXVldWVfd29yayhzeXN0ZW1fdW5ib3VuZF93 cSwgJndvcmstPm1taW9fd29yayk7CiAJfSBlbHNlIHsKIAkJcmVxdWVzdCA9IGk5MTVfZ2VtX3Jl cXVlc3RfYWxsb2MoZW5naW5lLCBlbmdpbmUtPmxhc3RfY29udGV4dCk7CkBAIC0xNDA2NywxMyAr MTQwNDYsMTAgQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfY2hlY2soc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKIH0KIAogc3RhdGljIGludCBpbnRlbF9hdG9taWNfcHJlcGFyZV9jb21taXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKLQkJCQkgICAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlLAotCQkJCSAgICAgICBib29sIG5vbmJsb2NrKQorCQkJCSAgICAgICBzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShkZXYpOwotCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRl OwogCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKLQlzdHJ1Y3QgZHJtX3BsYW5l ICpwbGFuZTsKIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7CiAJaW50IGksIHJldDsKIApAQCAtMTQw OTYsMzAgKzE0MDcyLDYgQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfcHJlcGFyZV9jb21taXQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9wcmVwYXJl X3BsYW5lcyhkZXYsIHN0YXRlKTsKIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsK IAotCWlmICghcmV0ICYmICFub25ibG9jaykgewotCQlmb3JfZWFjaF9wbGFuZV9pbl9zdGF0ZShz dGF0ZSwgcGxhbmUsIHBsYW5lX3N0YXRlLCBpKSB7Ci0JCQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKmludGVsX3BsYW5lX3N0YXRlID0KLQkJCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZV9z dGF0ZSk7Ci0JCQlsb25nIHRpbWVvdXQ7Ci0KLQkJCWlmICghaW50ZWxfcGxhbmVfc3RhdGUtPndh aXRfcmVxKQotCQkJCWNvbnRpbnVlOwotCi0JCQl0aW1lb3V0ID0gaTkxNV93YWl0X3JlcXVlc3Qo aW50ZWxfcGxhbmVfc3RhdGUtPndhaXRfcmVxLAotCQkJCQkJICAgIEk5MTVfV0FJVF9JTlRFUlJV UFRJQkxFLAotCQkJCQkJICAgIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKLQkJCWlmICh0aW1lb3V0 IDwgMCkgewotCQkJCS8qIEFueSBoYW5nIHNob3VsZCBiZSBzd2FsbG93ZWQgYnkgdGhlIHdhaXQg Ki8KLQkJCQlXQVJOX09OKHRpbWVvdXQgPT0gLUVJTyk7Ci0JCQkJbXV0ZXhfbG9jaygmZGV2LT5z dHJ1Y3RfbXV0ZXgpOwotCQkJCWRybV9hdG9taWNfaGVscGVyX2NsZWFudXBfcGxhbmVzKGRldiwg c3RhdGUpOwotCQkJCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCQkJCXJldCA9 IHRpbWVvdXQ7Ci0JCQkJYnJlYWs7Ci0JCQl9Ci0JCX0KLQl9Ci0KIAlyZXR1cm4gcmV0OwogfQog CkBAIC0xNDMxMSwyNiArMTQyNjMsMTEgQEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX2NvbW1p dF90YWlsKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAlzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgKm9sZF9jcnRjX3N0YXRlOwogCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKIAlzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqaW50ZWxfY3N0YXRlOwotCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5l OwotCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlOwogCWJvb2wgaHdfY2hlY2sg PSBpbnRlbF9zdGF0ZS0+bW9kZXNldDsKIAl1bnNpZ25lZCBsb25nIHB1dF9kb21haW5zW0k5MTVf TUFYX1BJUEVTXSA9IHt9OwogCXVuc2lnbmVkIGNydGNfdmJsYW5rX21hc2sgPSAwOwogCWludCBp OwogCi0JZm9yX2VhY2hfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBwbGFuZV9zdGF0ZSwg aSkgewotCQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmludGVsX3BsYW5lX3N0YXRlID0KLQkJ CXRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lX3N0YXRlKTsKLQotCQlpZiAoIWludGVsX3BsYW5l X3N0YXRlLT53YWl0X3JlcSkKLQkJCWNvbnRpbnVlOwotCi0JCS8qIEVJTyBzaG91bGQgYmUgZWF0 ZW4sIGFuZCB3ZSBjYW4ndCBnZXQgaW50ZXJydXB0ZWQgaW4gdGhlCi0JCSAqIHdvcmtlciwgYW5k IGJsb2NraW5nIGNvbW1pdHMgaGF2ZSB3YWl0ZWQgYWxyZWFkeS4gKi8KLQkJV0FSTl9PTihpOTE1 X3dhaXRfcmVxdWVzdChpbnRlbF9wbGFuZV9zdGF0ZS0+d2FpdF9yZXEsCi0JCQkJCSAgMCwgTUFY X1NDSEVEVUxFX1RJTUVPVVQpIDwgMCk7Ci0JfQotCiAJZHJtX2F0b21pY19oZWxwZXJfd2FpdF9m b3JfZGVwZW5kZW5jaWVzKHN0YXRlKTsKIAogCWlmIChpbnRlbF9zdGF0ZS0+bW9kZXNldCkgewpA QCAtMTQ1MzcsNyArMTQ0NzQsNyBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19jb21taXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKIAogCUlOSVRfV09SSygmc3RhdGUtPmNvbW1pdF93b3JrLCBp bnRlbF9hdG9taWNfY29tbWl0X3dvcmspOwogCi0JcmV0ID0gaW50ZWxfYXRvbWljX3ByZXBhcmVf Y29tbWl0KGRldiwgc3RhdGUsIG5vbmJsb2NrKTsKKwlyZXQgPSBpbnRlbF9hdG9taWNfcHJlcGFy ZV9jb21taXQoZGV2LCBzdGF0ZSk7CiAJaWYgKHJldCkgewogCQlEUk1fREVCVUdfQVRPTUlDKCJQ cmVwYXJpbmcgc3RhdGUgZmFpbGVkIHdpdGggJWlcbiIsIHJldCk7CiAJCXJldHVybiByZXQ7CkBA IC0xNDY3MCw3ICsxNDYwNyw3IEBAIGludGVsX3ByZXBhcmVfcGxhbmVfZmIoc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsCiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBuZXdfc3RhdGUtPmZi OwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwog CXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvbGRfb2JqID0gaW50ZWxfZmJfb2JqKHBsYW5l LT5zdGF0ZS0+ZmIpOwotCXN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKnJlc3Y7CisJbG9uZyBs cmV0OwogCWludCByZXQgPSAwOwogCiAJaWYgKCFvYmogJiYgIW9sZF9vYmopCkBAIC0xNDcwOCwz OSArMTQ2NDUsMzQgQEAgaW50ZWxfcHJlcGFyZV9wbGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSwKIAkJcmV0dXJuIDA7CiAKIAkvKiBGb3IgZnJhbWVidWZmZXIgYmFja2VkIGJ5IGRtYWJ1 Ziwgd2FpdCBmb3IgZmVuY2UgKi8KLQlyZXN2ID0gaTkxNV9nZW1fb2JqZWN0X2dldF9kbWFidWZf cmVzdihvYmopOwotCWlmIChyZXN2KSB7Ci0JCWxvbmcgbHJldDsKKwlscmV0ID0gaTkxNV9nZW1f b2JqZWN0X3dhaXQob2JqLAorCQkJCSAgICBJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSB8IEk5MTVf V0FJVF9MT0NLRUQsCisJCQkJICAgIE1BWF9TQ0hFRFVMRV9USU1FT1VULAorCQkJCSAgICBOVUxM KTsKKwlpZiAobHJldCA9PSAtRVJFU1RBUlRTWVMpCisJCXJldHVybiBscmV0OwogCi0JCWxyZXQg PSByZXNlcnZhdGlvbl9vYmplY3Rfd2FpdF90aW1lb3V0X3JjdShyZXN2LCBmYWxzZSwgdHJ1ZSwK LQkJCQkJCQkgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7Ci0JCWlmIChscmV0ID09IC1FUkVTVEFS VFNZUykKLQkJCXJldHVybiBscmV0OwotCi0JCVdBUk4obHJldCA8IDAsICJ3YWl0aW5nIHJldHVy bnMgJWxpXG4iLCBscmV0KTsKLQl9CisJV0FSTihscmV0IDwgMCwgIndhaXRpbmcgcmV0dXJucyAl bGlcbiIsIGxyZXQpOwogCiAJaWYgKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX0NVUlNP UiAmJgogCSAgICBJTlRFTF9JTkZPKGRldiktPmN1cnNvcl9uZWVkc19waHlzaWNhbCkgewogCQlp bnQgYWxpZ24gPSBJU19JODMwKGRldl9wcml2KSA/IDE2ICogMTAyNCA6IDI1NjsKIAkJcmV0ID0g aTkxNV9nZW1fb2JqZWN0X2F0dGFjaF9waHlzKG9iaiwgYWxpZ24pOwotCQlpZiAocmV0KQorCQlp ZiAocmV0KSB7CiAJCQlEUk1fREVCVUdfS01TKCJmYWlsZWQgdG8gYXR0YWNoIHBoeXMgb2JqZWN0 XG4iKTsKKwkJCXJldHVybiByZXQ7CisJCX0KIAl9IGVsc2UgewogCQlzdHJ1Y3QgaTkxNV92bWEg KnZtYTsKIAogCQl2bWEgPSBpbnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihmYiwgbmV3X3N0YXRl LT5yb3RhdGlvbik7Ci0JCWlmIChJU19FUlIodm1hKSkKLQkJCXJldCA9IFBUUl9FUlIodm1hKTsK LQl9Ci0KLQlpZiAocmV0ID09IDApIHsKLQkJdG9faW50ZWxfcGxhbmVfc3RhdGUobmV3X3N0YXRl KS0+d2FpdF9yZXEgPQotCQkJaTkxNV9nZW1fYWN0aXZlX2dldCgmb2JqLT5sYXN0X3dyaXRlLAot CQkJCQkgICAgJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7CisJCWlmIChJU19FUlIodm1h KSkgeworCQkJRFJNX0RFQlVHX0tNUygiZmFpbGVkIHRvIHBpbiBvYmplY3RcbiIpOworCQkJcmV0 dXJuIFBUUl9FUlIodm1hKTsKKwkJfQogCX0KIAotCXJldHVybiByZXQ7CisJcmV0dXJuIDA7CiB9 CiAKIC8qKgpAQCAtMTQ3NTgsNyArMTQ2OTAsNiBAQCBpbnRlbF9jbGVhbnVwX3BsYW5lX2ZiKHN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwbGFu ZS0+ZGV2OwogCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqb2xkX2ludGVsX3N0YXRlOwotCXN0 cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9wbGFuZV9zdGF0 ZShwbGFuZS0+c3RhdGUpOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvbGRfb2JqID0g aW50ZWxfZmJfb2JqKG9sZF9zdGF0ZS0+ZmIpOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmogPSBpbnRlbF9mYl9vYmoocGxhbmUtPnN0YXRlLT5mYik7CiAKQEAgLTE0NzcwLDkgKzE0 NzAxLDYgQEAgaW50ZWxfY2xlYW51cF9wbGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK IAlpZiAob2xkX29iaiAmJiAocGxhbmUtPnR5cGUgIT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SIHx8 CiAJICAgICFJTlRFTF9JTkZPKGRldiktPmN1cnNvcl9uZWVkc19waHlzaWNhbCkpCiAJCWludGVs X3VucGluX2ZiX29iaihvbGRfc3RhdGUtPmZiLCBvbGRfc3RhdGUtPnJvdGF0aW9uKTsKLQotCWk5 MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZpbnRlbF9zdGF0ZS0+d2FpdF9yZXEsIE5VTEwpOwotCWk5 MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZvbGRfaW50ZWxfc3RhdGUtPndhaXRfcmVxLCBOVUxMKTsK IH0KIAogaW50CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IDI5NDg2MTU1NzNkNi4uM2Rm ZTk5NTE2NzIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtNDAxLDkgKzQwMSw2IEBA IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSB7CiAJaW50IHNjYWxlcl9pZDsKIAogCXN0cnVjdCBk cm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5IGNrZXk7Ci0KLQkvKiBhc3luYyBmbGlwIHJlbGF0ZWQg c3RydWN0dXJlcyAqLwotCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqd2FpdF9yZXE7CiB9 OwogCiBzdHJ1Y3QgaW50ZWxfaW5pdGlhbF9wbGFuZV9jb25maWcgewotLSAKMi45LjMKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=