From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 39/39] drm/i915: Remove logical HW ID Date: Wed, 13 Mar 2019 14:44:01 +0000 Message-ID: <20190313144401.17735-39-chris@chris-wilson.co.uk> References: <20190313144401.17735-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 C78C689F08 for ; Wed, 13 Mar 2019 14:45:03 +0000 (UTC) In-Reply-To: <20190313144401.17735-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 V2Ugb25seSBuZWVkIHRvIGtlZXAgYSB1bmlxdWUgdGFnIGZvciB0aGUgYWN0aXZlIGxpZmV0aW1l IG9mIHRoZQpjb250ZXh0LCBhbmQgZm9yIGFzIGxvbmcgYXMgd2UgbmVlZCB0byBpZGVudGlmeSB0 aGF0IGNvbnRleHQuIFRoZSBIVwp1c2VzIHRoZSB0YWcgdG8gZGV0ZXJtaW5lIGlmIGl0IHNob3Vs ZCB1c2UgYSBsaXRlLXJlc3RvcmUgKHdoeSBub3QgdGhlCkxSQ0E/KSBhbmQgcGFzc2VzIHRoZSB0 YWcgYmFjayBmb3IgdmFyaW91cyBzdGF0dXMgaWRlbnRpZmllcy4gVGhlIG9ubHkKc3RhdHVzIHdl IG5lZWQgdG8gdHJhY2sgaXMgZm9yIE9BLCBzbyB3aGVuIHVzaW5nIHBlcmYsIHdlIGFzc2lnbiB0 aGUKc3BlY2lmaWMgY29udGV4dCBhIHVuaXF1ZSB0YWcuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBX aWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9nZW0vaTkxNV9nZW1fY29udGV4dC5jICAgfCAxNTAgLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5oICAgfCAgMTUgLS0KIC4uLi9n cHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHRfdHlwZXMuaCB8ICAxOCAtLS0KIC4uLi9k cm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYyB8ICAxMyArLQogLi4uL2dw dS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL21vY2tfY29udGV4dC5jIHwgIDEwIC0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAgICAgfCAgIDMgLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgIDExIC0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jICAgICAgICAgfCAgMTAgKy0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmggICAgICAgICB8ICAgMSAtCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3BlcmYuYyAgICAgICAgICAgICAgfCAgNTggKystLS0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV90cmFjZS5oICAgICAgICAgICAgIHwgIDM4ICsrLS0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9jb250ZXh0X3R5cGVzLmggICAgfCAgIDEgKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX3R5cGVzLmggICAgIHwgICAzICsKIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICAgICAgICB8ICAyOSArKy0tCiAuLi4vZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ldmljdC5jICAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3ZtYS5jICAgICB8ICAgMiArLQogMTYgZmlsZXMgY2hh bmdlZCwgNTMgaW5zZXJ0aW9ucygrKSwgMzEzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jCmluZGV4IGU3NjNlMTE0MmNlOS4uN2Q1Mjg0 MDVmZWM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29u dGV4dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMK QEAgLTEyNyw5NSArMTI3LDYgQEAgc3RhdGljIHZvaWQgbHV0X2Nsb3NlKHN0cnVjdCBpOTE1X2dl bV9jb250ZXh0ICpjdHgpCiAJcmN1X3JlYWRfdW5sb2NrKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg aW50IG5ld19od19pZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgZ2ZwX3QgZ2ZwKQot ewotCXVuc2lnbmVkIGludCBtYXg7Ci0KLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5jb250 ZXh0cy5tdXRleCk7Ci0KLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDExKQotCQltYXggPSBHRU4x MV9NQVhfQ09OVEVYVF9IV19JRDsKLQllbHNlIGlmIChVU0VTX0dVQ19TVUJNSVNTSU9OKGk5MTUp KQotCQkvKgotCQkgKiBXaGVuIHVzaW5nIEd1QyBpbiBwcm94eSBzdWJtaXNzaW9uLCBHdUMgY29u c3VtZXMgdGhlCi0JCSAqIGhpZ2hlc3QgYml0IGluIHRoZSBjb250ZXh0IGlkIHRvIGluZGljYXRl IHByb3h5IHN1Ym1pc3Npb24uCi0JCSAqLwotCQltYXggPSBNQVhfR1VDX0NPTlRFWFRfSFdfSUQ7 Ci0JZWxzZQotCQltYXggPSBNQVhfQ09OVEVYVF9IV19JRDsKLQotCXJldHVybiBpZGFfc2ltcGxl X2dldCgmaTkxNS0+Y29udGV4dHMuaHdfaWRhLCAwLCBtYXgsIGdmcCk7Ci19Ci0KLXN0YXRpYyBp bnQgc3RlYWxfaHdfaWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCi17Ci0Jc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwgKmNuOwotCUxJU1RfSEVBRChwaW5uZWQpOwotCWludCBp ZCA9IC1FTk9TUEM7Ci0KLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5jb250ZXh0cy5tdXRl eCk7Ci0KLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY3R4LCBjbiwKLQkJCQkgJmk5MTUtPmNv bnRleHRzLmh3X2lkX2xpc3QsIGh3X2lkX2xpbmspIHsKLQkJaWYgKGF0b21pY19yZWFkKCZjdHgt Pmh3X2lkX3Bpbl9jb3VudCkpIHsKLQkJCWxpc3RfbW92ZV90YWlsKCZjdHgtPmh3X2lkX2xpbmss ICZwaW5uZWQpOwotCQkJY29udGludWU7Ci0JCX0KLQotCQlHRU1fQlVHX09OKCFjdHgtPmh3X2lk KTsgLyogcGVybWEtcGlubmVkIGtlcm5lbCBjb250ZXh0ICovCi0JCWxpc3RfZGVsX2luaXQoJmN0 eC0+aHdfaWRfbGluayk7Ci0JCWlkID0gY3R4LT5od19pZDsKLQkJYnJlYWs7Ci0JfQotCi0JLyoK LQkgKiBSZW1lbWJlciBob3cgZmFyIHdlIGdvdCB1cCBvbiB0aGUgbGFzdCByZXBvc3Nlc2lvbiBz Y2FuLCBzbyB0aGUKLQkgKiBsaXN0IGlzIGtlcHQgaW4gYSAibGVhc3QgcmVjZW50bHkgc2Nhbm5l ZCIgb3JkZXIuCi0JICovCi0JbGlzdF9zcGxpY2VfdGFpbCgmcGlubmVkLCAmaTkxNS0+Y29udGV4 dHMuaHdfaWRfbGlzdCk7Ci0JcmV0dXJuIGlkOwotfQotCi1zdGF0aWMgaW50IGFzc2lnbl9od19p ZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdW5zaWduZWQgaW50ICpvdXQpCi17Ci0J aW50IHJldDsKLQotCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmNvbnRleHRzLm11dGV4KTsK LQotCS8qCi0JICogV2UgcHJlZmVyIHRvIHN0ZWFsL3N0YWxsIG91cnNlbHZlcyBhbmQgb3VyIHVz ZXJzIG92ZXIgdGhhdCBvZiB0aGUKLQkgKiBlbnRpcmUgc3lzdGVtLiBUaGF0IG1heSBiZSBhIGxp dHRsZSB1bmZhaXIgdG8gb3VyIHVzZXJzLCBhbmQKLQkgKiBldmVuIGh1cnQgaGlnaCBwcmlvcml0 eSBjbGllbnRzLiBUaGUgY2hvaWNlIGlzIHdoZXRoZXIgdG8gb29ta2lsbAotCSAqIHNvbWV0aGlu ZyBlbHNlLCBvciBzdGVhbCBhIGNvbnRleHQgaWQuCi0JICovCi0JcmV0ID0gbmV3X2h3X2lkKGk5 MTUsIEdGUF9LRVJORUwgfCBfX0dGUF9SRVRSWV9NQVlGQUlMIHwgX19HRlBfTk9XQVJOKTsKLQlp ZiAodW5saWtlbHkocmV0IDwgMCkpIHsKLQkJcmV0ID0gc3RlYWxfaHdfaWQoaTkxNSk7Ci0JCWlm IChyZXQgPCAwKSAvKiBvbmNlIGFnYWluIGZvciB0aGUgY29ycmVjdCBlcnJubyBjb2RlICovCi0J CQlyZXQgPSBuZXdfaHdfaWQoaTkxNSwgR0ZQX0tFUk5FTCk7Ci0JCWlmIChyZXQgPCAwKQotCQkJ cmV0dXJuIHJldDsKLQl9Ci0KLQkqb3V0ID0gcmV0OwotCXJldHVybiAwOwotfQotCi1zdGF0aWMg dm9pZCByZWxlYXNlX2h3X2lkKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCi17Ci0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBjdHgtPmk5MTU7Ci0KLQlpZiAobGlzdF9lbXB0 eSgmY3R4LT5od19pZF9saW5rKSkKLQkJcmV0dXJuOwotCi0JbXV0ZXhfbG9jaygmaTkxNS0+Y29u dGV4dHMubXV0ZXgpOwotCWlmICghbGlzdF9lbXB0eSgmY3R4LT5od19pZF9saW5rKSkgewotCQlp ZGFfc2ltcGxlX3JlbW92ZSgmaTkxNS0+Y29udGV4dHMuaHdfaWRhLCBjdHgtPmh3X2lkKTsKLQkJ bGlzdF9kZWxfaW5pdCgmY3R4LT5od19pZF9saW5rKTsKLQl9Ci0JbXV0ZXhfdW5sb2NrKCZpOTE1 LT5jb250ZXh0cy5tdXRleCk7Ci19Ci0KIHN0YXRpYyB2b2lkIGZyZWVfZW5naW5lcyhzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICoqZW5naW5lcywgaW50IGNvdW50KQogewogCWludCBpOwpAQCAtMjM4 LDcgKzE0OSw2IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX2NvbnRleHRfZnJlZShzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dCAqY3R4KQogCUdFTV9CVUdfT04oIWk5MTVfZ2VtX2NvbnRleHRfaXNfY2xv c2VkKGN0eCkpOwogCUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJmN0eC0+YWN0aXZlX2VuZ2luZXMp KTsKIAotCXJlbGVhc2VfaHdfaWQoY3R4KTsKIAlpOTE1X3BwZ3R0X3B1dChjdHgtPnBwZ3R0KTsK IAlmcmVlX2VuZ2luZXMoY3R4LT5lbmdpbmVzLCBjdHgtPm5lbmdpbmUpOwogCkBAIC0zMDksMTIg KzIxOSw2IEBAIHN0YXRpYyB2b2lkIGNvbnRleHRfY2xvc2Uoc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKmN0eCkKIAogCWk5MTVfZ2VtX2NvbnRleHRfc2V0X2Nsb3NlZChjdHgpOwogCi0JLyoKLQkg KiBUaGlzIGNvbnRleHQgd2lsbCBuZXZlciBhZ2FpbiBiZSBhc3NpbmdlZCB0byBIVywgc28gd2Ug Y2FuCi0JICogcmV1c2UgaXRzIElEIGZvciB0aGUgbmV4dCBjb250ZXh0LgotCSAqLwotCXJlbGVh c2VfaHdfaWQoY3R4KTsKLQogCS8qCiAJICogVGhlIExVVCB1c2VzIHRoZSBWTUEgYXMgYSBiYWNr cG9pbnRlciB0byB1bnJlZiB0aGUgb2JqZWN0LAogCSAqIHNvIHdlIG5lZWQgdG8gY2xlYXIgdGhl IExVVCBiZWZvcmUgd2UgY2xvc2UgYWxsIHRoZSBWTUEgKGluc2lkZQpAQCAtMzc3LDcgKzI4MSw2 IEBAIF9fY3JlYXRlX2h3X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAogCXNwaW5fbG9ja19pbml0KCZjdHgtPmh3X2NvbnRleHRzX2xvY2spOwogCiAJSU5JVF9SQURJ WF9UUkVFKCZjdHgtPmhhbmRsZXNfdm1hLCBHRlBfS0VSTkVMKTsKLQlJTklUX0xJU1RfSEVBRCgm Y3R4LT5od19pZF9saW5rKTsKIAogCS8qIERlZmF1bHQgY29udGV4dCB3aWxsIG5ldmVyIGhhdmUg YSBmaWxlX3ByaXYgKi8KIAlyZXQgPSBERUZBVUxUX0NPTlRFWFRfSEFORExFOwpAQCAtNTY5LDE4 ICs0NzIsMTEgQEAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKgogaTkxNV9nZW1fY29udGV4dF9j cmVhdGVfa2VybmVsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBpbnQgcHJpbykKIHsK IAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OwotCWludCBlcnI7CiAKIAljdHggPSBpOTE1 X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBOVUxMLCAwKTsKIAlpZiAoSVNfRVJSKGN0eCkpCiAJ CXJldHVybiBjdHg7CiAKLQllcnIgPSBpOTE1X2dlbV9jb250ZXh0X3Bpbl9od19pZChjdHgpOwot CWlmIChlcnIpIHsKLQkJZGVzdHJveV9rZXJuZWxfY29udGV4dCgmY3R4KTsKLQkJcmV0dXJuIEVS Ul9QVFIoZXJyKTsKLQl9Ci0KIAlpOTE1X2dlbV9jb250ZXh0X2NsZWFyX2Jhbm5hYmxlKGN0eCk7 CiAJY3R4LT5zY2hlZC5wcmlvcml0eSA9IEk5MTVfVVNFUl9QUklPUklUWShwcmlvKTsKIAljdHgt PnJpbmdfc2l6ZSA9IFBBR0VfU0laRTsKQEAgLTU5NSwxMiArNDkxLDYgQEAgc3RhdGljIHZvaWQg aW5pdF9jb250ZXh0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAltdXRleF9pbml0 KCZpOTE1LT5jb250ZXh0cy5tdXRleCk7CiAJSU5JVF9MSVNUX0hFQUQoJmk5MTUtPmNvbnRleHRz Lmxpc3QpOwogCi0JLyogVXNpbmcgdGhlIHNpbXBsZSBpZGEgaW50ZXJmYWNlLCB0aGUgbWF4IGlz IGxpbWl0ZWQgYnkgc2l6ZW9mKGludCkgKi8KLQlCVUlMRF9CVUdfT04oTUFYX0NPTlRFWFRfSFdf SUQgPiBJTlRfTUFYKTsKLQlCVUlMRF9CVUdfT04oR0VOMTFfTUFYX0NPTlRFWFRfSFdfSUQgPiBJ TlRfTUFYKTsKLQlpZGFfaW5pdCgmaTkxNS0+Y29udGV4dHMuaHdfaWRhKTsKLQlJTklUX0xJU1Rf SEVBRCgmaTkxNS0+Y29udGV4dHMuaHdfaWRfbGlzdCk7Ci0KIAlJTklUX1dPUksoJmk5MTUtPmNv bnRleHRzLmZyZWVfd29yaywgY29udGV4dHNfZnJlZV93b3JrZXIpOwogCWluaXRfbGxpc3RfaGVh ZCgmaTkxNS0+Y29udGV4dHMuZnJlZV9saXN0KTsKIH0KQEAgLTYyNywxNSArNTE3LDYgQEAgaW50 IGk5MTVfZ2VtX2NvbnRleHRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogCQlEUk1fRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGVmYXVsdCBnbG9iYWwgY29udGV4dFxu Iik7CiAJCXJldHVybiBQVFJfRVJSKGN0eCk7CiAJfQotCS8qCi0JICogRm9yIGVhc3kgcmVjb2du aXNhYmxpdHksIHdlIHdhbnQgdGhlIGtlcm5lbCBjb250ZXh0IHRvIGJlIDAgYW5kIHRoZW4KLQkg KiBhbGwgdXNlciBjb250ZXh0cyB3aWxsIGhhdmUgbm9uLXplcm8gaHdfaWQuIEtlcm5lbCBjb250 ZXh0cyBhcmUKLQkgKiBwZXJtYW5lbnRseSBwaW5uZWQsIHNvIHRoYXQgd2UgbmV2ZXIgc3VmZmVy IGEgc3RhbGwgYW5kIGNhbgotCSAqIHVzZSB0aGVtIGZyb20gYW55IGFsbG9jYXRpb24gY29udGV4 dCAoZS5nLiBmb3IgZXZpY3Rpbmcgb3RoZXIKLQkgKiBjb250ZXh0cyBhbmQgZnJvbSBpbnNpZGUg dGhlIHNocmlua2VyKS4KLQkgKi8KLQlHRU1fQlVHX09OKGN0eC0+aHdfaWQpOwotCUdFTV9CVUdf T04oIWF0b21pY19yZWFkKCZjdHgtPmh3X2lkX3Bpbl9jb3VudCkpOwogCWRldl9wcml2LT5rZXJu ZWxfY29udGV4dCA9IGN0eDsKIAogCS8qIGhpZ2hlc3QgcHJpb3JpdHk7IHByZWVtcHRpbmcgdGFz ayAqLwpAQCAtNjYwLDEwICs1NDEsNiBAQCB2b2lkIGk5MTVfZ2VtX2NvbnRleHRzX2Zpbmkoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJaWYgKGk5MTUtPnByZWVtcHRfY29udGV4dCkK IAkJZGVzdHJveV9rZXJuZWxfY29udGV4dCgmaTkxNS0+cHJlZW1wdF9jb250ZXh0KTsKIAlkZXN0 cm95X2tlcm5lbF9jb250ZXh0KCZpOTE1LT5rZXJuZWxfY29udGV4dCk7Ci0KLQkvKiBNdXN0IGZy ZWUgYWxsIGRlZmVycmVkIGNvbnRleHRzICh2aWEgZmx1c2hfd29ya3F1ZXVlKSBmaXJzdCAqLwot CUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJmk5MTUtPmNvbnRleHRzLmh3X2lkX2xpc3QpKTsKLQlp ZGFfZGVzdHJveSgmaTkxNS0+Y29udGV4dHMuaHdfaWRhKTsKIH0KIAogc3RhdGljIGludCBjb250 ZXh0X2lkcl9jbGVhbnVwKGludCBpZCwgdm9pZCAqcCwgdm9pZCAqZGF0YSkKQEAgLTIyMTAsMzMg KzIwODcsNiBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9yZXNldF9zdGF0c19pb2N0bChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAogCXJldHVybiByZXQ7CiB9CiAKLWludCBfX2k5MTVfZ2VtX2NvbnRl eHRfcGluX2h3X2lkKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCi17Ci0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBjdHgtPmk5MTU7Ci0JaW50IGVyciA9IDA7Ci0KLQltdXRl eF9sb2NrKCZpOTE1LT5jb250ZXh0cy5tdXRleCk7Ci0KLQlHRU1fQlVHX09OKGk5MTVfZ2VtX2Nv bnRleHRfaXNfY2xvc2VkKGN0eCkpOwotCi0JaWYgKGxpc3RfZW1wdHkoJmN0eC0+aHdfaWRfbGlu aykpIHsKLQkJR0VNX0JVR19PTihhdG9taWNfcmVhZCgmY3R4LT5od19pZF9waW5fY291bnQpKTsK LQotCQllcnIgPSBhc3NpZ25faHdfaWQoaTkxNSwgJmN0eC0+aHdfaWQpOwotCQlpZiAoZXJyKQot CQkJZ290byBvdXRfdW5sb2NrOwotCi0JCWxpc3RfYWRkX3RhaWwoJmN0eC0+aHdfaWRfbGluaywg Jmk5MTUtPmNvbnRleHRzLmh3X2lkX2xpc3QpOwotCX0KLQotCUdFTV9CVUdfT04oYXRvbWljX3Jl YWQoJmN0eC0+aHdfaWRfcGluX2NvdW50KSA9PSB+MHUpOwotCWF0b21pY19pbmMoJmN0eC0+aHdf aWRfcGluX2NvdW50KTsKLQotb3V0X3VubG9jazoKLQltdXRleF91bmxvY2soJmk5MTUtPmNvbnRl eHRzLm11dGV4KTsKLQlyZXR1cm4gZXJyOwotfQotCiAjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJN X0k5MTVfU0VMRlRFU1QpCiAjaW5jbHVkZSAic2VsZnRlc3RzL21vY2tfY29udGV4dC5jIgogI2lu Y2x1ZGUgInNlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMiCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuaAppbmRleCAwZTgxM2ZhY2E0NTEuLjRiYjBhZjYzMmY4 YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQu aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5oCkBAIC05 MywyMSArOTMsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9nZW1fY29udGV4dF9zZXRfZm9y Y2Vfc2luZ2xlX3N1Ym1pc3Npb24oc3RydWN0IGk5MTVfZ2VtXwogCV9fc2V0X2JpdChDT05URVhU X0ZPUkNFX1NJTkdMRV9TVUJNSVNTSU9OLCAmY3R4LT5mbGFncyk7CiB9CiAKLWludCBfX2k5MTVf Z2VtX2NvbnRleHRfcGluX2h3X2lkKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpOwotc3Rh dGljIGlubGluZSBpbnQgaTkxNV9nZW1fY29udGV4dF9waW5faHdfaWQoc3RydWN0IGk5MTVfZ2Vt X2NvbnRleHQgKmN0eCkKLXsKLQlpZiAoYXRvbWljX2luY19ub3RfemVybygmY3R4LT5od19pZF9w aW5fY291bnQpKQotCQlyZXR1cm4gMDsKLQotCXJldHVybiBfX2k5MTVfZ2VtX2NvbnRleHRfcGlu X2h3X2lkKGN0eCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X2dlbV9jb250ZXh0X3Vu cGluX2h3X2lkKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCi17Ci0JR0VNX0JVR19PTihh dG9taWNfcmVhZCgmY3R4LT5od19pZF9waW5fY291bnQpID09IDB1KTsKLQlhdG9taWNfZGVjKCZj dHgtPmh3X2lkX3Bpbl9jb3VudCk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X2dlbV9j b250ZXh0X2lzX2RlZmF1bHQoY29uc3Qgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmMpCiB7CiAJ cmV0dXJuIGMtPnVzZXJfaGFuZGxlID09IERFRkFVTFRfQ09OVEVYVF9IQU5ETEU7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dF90eXBlcy5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHRfdHlwZXMuaAppbmRleCAz MzNlZWFjZWY1ZTMuLjdjZmM3MmU4MjAyZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHRfdHlwZXMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9nZW0vaTkxNV9nZW1fY29udGV4dF90eXBlcy5oCkBAIC0xMTQsMjQgKzExNCw2IEBAIHN0cnVj dCBpOTE1X2dlbV9jb250ZXh0IHsKIAogCXVuc2lnbmVkIGludCBuZW5naW5lOwogCi0JLyoqCi0J ICogQGh3X2lkOiAtIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY29udGV4dAotCSAqCi0JICog VGhlIGhhcmR3YXJlIG5lZWRzIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoZSBjb250ZXh0IGZvciBh IGZldwotCSAqIGZ1bmN0aW9ucyBsaWtlIGZhdWx0IHJlcG9ydGluZywgUEFTSUQsIHNjaGVkdWxp bmcuIFRoZQotCSAqICZkcm1faTkxNV9wcml2YXRlLmNvbnRleHRfaHdfaWRhIGlzIHVzZWQgdG8g YXNzaWduIGEgdW5xaXVlCi0JICogaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgY29udGV4dC4K LQkgKgotCSAqIEBod19pZF9waW5fY291bnQ6IC0gbnVtYmVyIG9mIHRpbWVzIHRoaXMgY29udGV4 dCBoYWQgYmVlbiBwaW5uZWQKLQkgKiBmb3IgdXNlIChzaG91bGQgYmUsIGF0IG1vc3QsIG9uY2Ug cGVyIGVuZ2luZSkuCi0JICoKLQkgKiBAaHdfaWRfbGluazogLSBhbGwgY29udGV4dHMgd2l0aCBh biBhc3NpZ25lZCBpZCBhcmUgdHJhY2tlZAotCSAqIGZvciBwb3NzaWJsZSByZXBvc3Nlc3Npb24u Ci0JICovCi0JdW5zaWduZWQgaW50IGh3X2lkOwotCWF0b21pY190IGh3X2lkX3Bpbl9jb3VudDsK LQlzdHJ1Y3QgbGlzdF9oZWFkIGh3X2lkX2xpbms7Ci0KIAlzdHJ1Y3QgbGlzdF9oZWFkIGFjdGl2 ZV9lbmdpbmVzOwogCXN0cnVjdCBtdXRleCBtdXRleDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYwppbmRleCA5NDQ4ZDFi NDM0YTYuLjRhNmMzMDZmZmI4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKQEAgLTUzNSw5ICs1MzUsOSBAQCBzdGF0 aWMgaW50IGlndF9jdHhfZXhlYyh2b2lkICphcmcpCiAJCQl3aXRoX2ludGVsX3J1bnRpbWVfcG0o aTkxNSwgd2FrZXJlZikKIAkJCQllcnIgPSBncHVfZmlsbChvYmosIGN0eCwgZW5naW5lLCBkdyk7 CiAJCQlpZiAoZXJyKSB7Ci0JCQkJcHJfZXJyKCJGYWlsZWQgdG8gZmlsbCBkd29yZCAlbHUgWyVs dS8lbHVdIHdpdGggZ3B1ICglcykgaW4gY3R4ICV1IFtmdWxsLXBwZ3R0PyAlc10sIGVycj0lZFxu IiwKKwkJCQlwcl9lcnIoIkZhaWxlZCB0byBmaWxsIGR3b3JkICVsdSBbJWx1LyVsdV0gd2l0aCBn cHUgKCVzKSBbZnVsbC1wcGd0dD8gJXNdLCBlcnI9JWRcbiIsCiAJCQkJICAgICAgIG5kd29yZHMs IGR3LCBtYXhfZHdvcmRzKG9iaiksCi0JCQkJICAgICAgIGVuZ2luZS0+bmFtZSwgY3R4LT5od19p ZCwKKwkJCQkgICAgICAgZW5naW5lLT5uYW1lLAogCQkJCSAgICAgICB5ZXNubyghIWN0eC0+cHBn dHQpLCBlcnIpOwogCQkJCWdvdG8gb3V0X3VubG9jazsKIAkJCX0KQEAgLTY1OCw5ICs2NTgsOSBA QCBzdGF0aWMgaW50IGlndF9zaGFyZWRfY3R4X2V4ZWModm9pZCAqYXJnKQogCQkJd2l0aF9pbnRl bF9ydW50aW1lX3BtKGk5MTUsIHdha2VyZWYpCiAJCQkJZXJyID0gZ3B1X2ZpbGwob2JqLCBjdHgs IGVuZ2luZSwgZHcpOwogCQkJaWYgKGVycikgewotCQkJCXByX2VycigiRmFpbGVkIHRvIGZpbGwg ZHdvcmQgJWx1IFslbHUvJWx1XSB3aXRoIGdwdSAoJXMpIGluIGN0eCAldSBbZnVsbC1wcGd0dD8g JXNdLCBlcnI9JWRcbiIsCisJCQkJcHJfZXJyKCJGYWlsZWQgdG8gZmlsbCBkd29yZCAlbHUgWyVs dS8lbHVdIHdpdGggZ3B1ICglcykgW2Z1bGwtcHBndHQ/ICVzXSwgZXJyPSVkXG4iLAogCQkJCSAg ICAgICBuZHdvcmRzLCBkdywgbWF4X2R3b3JkcyhvYmopLAotCQkJCSAgICAgICBlbmdpbmUtPm5h bWUsIGN0eC0+aHdfaWQsCisJCQkJICAgICAgIGVuZ2luZS0+bmFtZSwKIAkJCQkgICAgICAgeWVz bm8oISFjdHgtPnBwZ3R0KSwgZXJyKTsKIAkJCQlnb3RvIG91dF90ZXN0OwogCQkJfQpAQCAtMTIz OSwxMCArMTIzOSw5IEBAIHN0YXRpYyBpbnQgaWd0X2N0eF9yZWFkb25seSh2b2lkICphcmcpCiAJ CQl3aXRoX2ludGVsX3J1bnRpbWVfcG0oaTkxNSwgd2FrZXJlZikKIAkJCQllcnIgPSBncHVfZmls bChvYmosIGN0eCwgZW5naW5lLCBkdyk7CiAJCQlpZiAoZXJyKSB7Ci0JCQkJcHJfZXJyKCJGYWls ZWQgdG8gZmlsbCBkd29yZCAlbHUgWyVsdS8lbHVdIHdpdGggZ3B1ICglcykgaW4gY3R4ICV1IFtm dWxsLXBwZ3R0PyAlc10sIGVycj0lZFxuIiwKKwkJCQlwcl9lcnIoIkZhaWxlZCB0byBmaWxsIGR3 b3JkICVsdSBbJWx1LyVsdV0gd2l0aCBncHUgKCVzKSBbZnVsbC1wcGd0dD8gJXNdLCBlcnI9JWRc biIsCiAJCQkJICAgICAgIG5kd29yZHMsIGR3LCBtYXhfZHdvcmRzKG9iaiksCi0JCQkJICAgICAg IGVuZ2luZS0+bmFtZSwgY3R4LT5od19pZCwKLQkJCQkgICAgICAgeWVzbm8oISFjdHgtPnBwZ3R0 KSwgZXJyKTsKKwkJCQkgICAgICAgZW5naW5lLT5uYW1lLCB5ZXNubyghIWN0eC0+cHBndHQpLCBl cnIpOwogCQkJCWdvdG8gb3V0X3VubG9jazsKIAkJCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMKaW5kZXggYzlkOTk2OTgyMWUwLi4y NTQ5OTQ0ZWI5OWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVz dHMvbW9ja19jb250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0 cy9tb2NrX2NvbnRleHQuYwpAQCAtMTIsNyArMTIsNiBAQCBtb2NrX2NvbnRleHQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJICAgICBjb25zdCBjaGFyICpuYW1lKQogewogCXN0cnVj dCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Ci0JaW50IHJldDsKIAogCWN0eCA9IGt6YWxsb2Moc2l6 ZW9mKCpjdHgpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIWN0eCkKQEAgLTI2LDE0ICsyNSw5IEBAIG1v Y2tfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAlzcGluX2xvY2tfaW5p dCgmY3R4LT5od19jb250ZXh0c19sb2NrKTsKIAogCUlOSVRfUkFESVhfVFJFRSgmY3R4LT5oYW5k bGVzX3ZtYSwgR0ZQX0tFUk5FTCk7Ci0JSU5JVF9MSVNUX0hFQUQoJmN0eC0+aHdfaWRfbGluayk7 CiAJSU5JVF9MSVNUX0hFQUQoJmN0eC0+YWN0aXZlX2VuZ2luZXMpOwogCW11dGV4X2luaXQoJmN0 eC0+bXV0ZXgpOwogCi0JcmV0ID0gaTkxNV9nZW1fY29udGV4dF9waW5faHdfaWQoY3R4KTsKLQlp ZiAocmV0IDwgMCkKLQkJZ290byBlcnJfaGFuZGxlczsKLQogCWlmIChuYW1lKSB7CiAJCXN0cnVj dCBpOTE1X2h3X3BwZ3R0ICpwcGd0dDsKIApAQCAtNTAsMTAgKzQ0LDYgQEAgbW9ja19jb250ZXh0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCiAJcmV0dXJuIGN0eDsKIAotZXJyX2hh bmRsZXM6Ci0Ja2ZyZWUoY3R4KTsKLQlyZXR1cm4gTlVMTDsKLQogZXJyX3B1dDoKIAlpOTE1X2dl bV9jb250ZXh0X3NldF9jbG9zZWQoY3R4KTsKIAlpOTE1X2dlbV9jb250ZXh0X3B1dChjdHgpOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwppbmRleCAwODY4M2RjYTc3NzUuLmU4N2IzYWM0 NWE3ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTE4ODgsOSArMTg4OCw2 IEBAIHN0YXRpYyBpbnQgaTkxNV9jb250ZXh0X3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZv aWQgKnVudXNlZCkKIAkJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOwogCiAJCXNlcV9wdXRzKG0s ICJIVyBjb250ZXh0ICIpOwotCQlpZiAoIWxpc3RfZW1wdHkoJmN0eC0+aHdfaWRfbGluaykpCi0J CQlzZXFfcHJpbnRmKG0sICIleCBbcGluICV1XSIsIGN0eC0+aHdfaWQsCi0JCQkJICAgYXRvbWlj X3JlYWQoJmN0eC0+aHdfaWRfcGluX2NvdW50KSk7CiAJCWlmIChjdHgtPnBpZCkgewogCQkJc3Ry dWN0IHRhc2tfc3RydWN0ICp0YXNrOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCA2MzNk M2MwYjZlOTYuLjA4MmQ2ODZkZjU0NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0xNzMy LDE2ICsxNzMyLDYgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCQlzdHJ1Y3QgbGlzdF9o ZWFkIGxpc3Q7CiAJCXN0cnVjdCBsbGlzdF9oZWFkIGZyZWVfbGlzdDsKIAkJc3RydWN0IHdvcmtf c3RydWN0IGZyZWVfd29yazsKLQotCQkvKiBUaGUgaHcgd2FudHMgdG8gaGF2ZSBhIHN0YWJsZSBj b250ZXh0IGlkZW50aWZpZXIgZm9yIHRoZQotCQkgKiBsaWZldGltZSBvZiB0aGUgY29udGV4dCAo Zm9yIE9BLCBQQVNJRCwgZmF1bHRzLCBldGMpLgotCQkgKiBUaGlzIGlzIGxpbWl0ZWQgaW4gZXhl Y2xpc3RzIHRvIDIxIGJpdHMuCi0JCSAqLwotCQlzdHJ1Y3QgaWRhIGh3X2lkYTsKLSNkZWZpbmUg TUFYX0NPTlRFWFRfSFdfSUQgKDE8PDIxKSAvKiBleGNsdXNpdmUgKi8KLSNkZWZpbmUgTUFYX0dV Q19DT05URVhUX0hXX0lEICgxIDw8IDIwKSAvKiBleGNsdXNpdmUgKi8KLSNkZWZpbmUgR0VOMTFf TUFYX0NPTlRFWFRfSFdfSUQgKDE8PDExKSAvKiBleGNsdXNpdmUgKi8KLQkJc3RydWN0IGxpc3Rf aGVhZCBod19pZF9saXN0OwogCX0gY29udGV4dHM7CiAKIAl1MzIgZmRpX3J4X2NvbmZpZzsKQEAg LTE4NjQsNyArMTg1NCw2IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKIAkJCSAqLwogCQkJ c3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKmV4Y2x1c2l2ZV9zdHJlYW07CiAKLQkJCXN0cnVjdCBp bnRlbF9jb250ZXh0ICpwaW5uZWRfY3R4OwogCQkJdTMyIHNwZWNpZmljX2N0eF9pZDsKIAkJCXUz MiBzcGVjaWZpY19jdHhfaWRfbWFzazsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9ncHVfZXJyb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9y LmMKaW5kZXggZmE5ODI3ZWVkOGVmLi40OTU3MTg3ZjdhYTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9ncHVfZXJyb3IuYwpAQCAtNDU3LDggKzQ1Nyw4IEBAIHN0YXRpYyB2b2lkIGVycm9yX3By aW50X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqbSwKIAkJCQljb25z dCBjaGFyICpoZWFkZXIsCiAJCQkJY29uc3Qgc3RydWN0IGRybV9pOTE1X2Vycm9yX2NvbnRleHQg KmN0eCkKIHsKLQllcnJfcHJpbnRmKG0sICIlcyVzWyVkXSB1c2VyX2hhbmRsZSAlZCBod19pZCAl ZCwgcHJpbyAlZCwgZ3VpbHR5ICVkIGFjdGl2ZSAlZFxuIiwKLQkJICAgaGVhZGVyLCBjdHgtPmNv bW0sIGN0eC0+cGlkLCBjdHgtPmhhbmRsZSwgY3R4LT5od19pZCwKKwllcnJfcHJpbnRmKG0sICIl cyVzWyVkXSB1c2VyX2hhbmRsZSAlZCwgcHJpbyAlZCwgZ3VpbHR5ICVkIGFjdGl2ZSAlZFxuIiwK KwkJICAgaGVhZGVyLCBjdHgtPmNvbW0sIGN0eC0+cGlkLCBjdHgtPmhhbmRsZSwKIAkJICAgY3R4 LT5zY2hlZF9hdHRyLnByaW9yaXR5LCBjdHgtPmd1aWx0eSwgY3R4LT5hY3RpdmUpOwogfQogCkBA IC03NjEsMTEgKzc2MSwxMCBAQCBzdGF0aWMgdm9pZCBfX2Vycl9wcmludF90b19zZ2woc3RydWN0 IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqbSwKIAkJaWYgKG9iaikgewogCQkJZXJyX3B1dHMo bSwgbS0+aTkxNS0+ZW5naW5lW2ldLT5uYW1lKTsKIAkJCWlmIChlZS0+Y29udGV4dC5waWQpCi0J CQkJZXJyX3ByaW50ZihtLCAiIChzdWJtaXR0ZWQgYnkgJXMgWyVkXSwgY3R4ICVkIFslZF0pIiwK KwkJCQllcnJfcHJpbnRmKG0sICIgKHN1Ym1pdHRlZCBieSAlcyBbJWQvJWRdKSIsCiAJCQkJCSAg IGVlLT5jb250ZXh0LmNvbW0sCiAJCQkJCSAgIGVlLT5jb250ZXh0LnBpZCwKLQkJCQkJICAgZWUt PmNvbnRleHQuaGFuZGxlLAotCQkJCQkgICBlZS0+Y29udGV4dC5od19pZCk7CisJCQkJCSAgIGVl LT5jb250ZXh0LmhhbmRsZSk7CiAJCQllcnJfcHJpbnRmKG0sICIgLS0tIGd0dF9vZmZzZXQgPSAw eCUwOHggJTA4eFxuIiwKIAkJCQkgICB1cHBlcl8zMl9iaXRzKG9iai0+Z3R0X29mZnNldCksCiAJ CQkJICAgbG93ZXJfMzJfYml0cyhvYmotPmd0dF9vZmZzZXQpKTsKQEAgLTEzMzAsNyArMTMyOSw2 IEBAIHN0YXRpYyB2b2lkIHJlY29yZF9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9lcnJvcl9jb250 ZXh0ICplLAogCX0KIAogCWUtPmhhbmRsZSA9IGN0eC0+dXNlcl9oYW5kbGU7Ci0JZS0+aHdfaWQg PSBjdHgtPmh3X2lkOwogCWUtPnNjaGVkX2F0dHIgPSBjdHgtPnNjaGVkOwogCWUtPmd1aWx0eSA9 IGF0b21pY19yZWFkKCZjdHgtPmd1aWx0eV9jb3VudCk7CiAJZS0+YWN0aXZlID0gYXRvbWljX3Jl YWQoJmN0eC0+YWN0aXZlX2NvdW50KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ3B1X2Vycm9yLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5o CmluZGV4IDk5ZDZiN2IyNzBjMi4uNmZlMTdlZGNiMTMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ3B1X2Vycm9yLmgKQEAgLTExNyw3ICsxMTcsNiBAQCBzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUg ewogCQkJY2hhciBjb21tW1RBU0tfQ09NTV9MRU5dOwogCQkJcGlkX3QgcGlkOwogCQkJdTMyIGhh bmRsZTsKLQkJCXUzMiBod19pZDsKIAkJCWludCBhY3RpdmU7CiAJCQlpbnQgZ3VpbHR5OwogCQkJ c3RydWN0IGk5MTVfc2NoZWRfYXR0ciBzY2hlZF9hdHRyOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYu YwppbmRleCBmYzdmYTQyMzgwNDYuLjBiNDdiN2JkZDA0ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9w ZXJmLmMKQEAgLTEyMDIsMzMgKzEyMDIsNiBAQCBzdGF0aWMgaW50IGk5MTVfb2FfcmVhZChzdHJ1 Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCXJldHVybiBkZXZfcHJpdi0+cGVyZi5vYS5v cHMucmVhZChzdHJlYW0sIGJ1ZiwgY291bnQsIG9mZnNldCk7CiB9CiAKLXN0YXRpYyBzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqb2FfcGluX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsCi0JCQkJCSAgICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQotewotCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IGk5MTUtPmVuZ2luZVtSQ1MwXTsKLQlzdHJ1Y3QgaW50 ZWxfY29udGV4dCAqY2U7Ci0JaW50IHJldDsKLQotCXJldCA9IGk5MTVfbXV0ZXhfbG9ja19pbnRl cnJ1cHRpYmxlKCZpOTE1LT5kcm0pOwotCWlmIChyZXQpCi0JCXJldHVybiBFUlJfUFRSKHJldCk7 Ci0KLQkvKgotCSAqIEFzIHRoZSBJRCBpcyB0aGUgZ3R0IG9mZnNldCBvZiB0aGUgY29udGV4dCdz IHZtYSB3ZQotCSAqIHBpbiB0aGUgdm1hIHRvIGVuc3VyZSB0aGUgSUQgcmVtYWlucyBmaXhlZC4K LQkgKgotCSAqIE5COiBpbXBsaWVkIFJDUyBlbmdpbmUuLi4KLQkgKi8KLQljZSA9IGludGVsX2Nv bnRleHRfcGluKGN0eCwgZW5naW5lKTsKLQltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3Rf bXV0ZXgpOwotCWlmIChJU19FUlIoY2UpKQotCQlyZXR1cm4gY2U7Ci0KLQlpOTE1LT5wZXJmLm9h LnBpbm5lZF9jdHggPSBjZTsKLQotCXJldHVybiBjZTsKLX0KLQogLyoqCiAgKiBvYV9nZXRfcmVu ZGVyX2N0eF9pZCAtIGRldGVybWluZSBhbmQgaG9sZCBjdHggaHcgaWQKICAqIEBzdHJlYW06IEFu IGk5MTUtcGVyZiBzdHJlYW0gb3BlbmVkIGZvciBPQSBtZXRyaWNzCkBAIC0xMjQ0LDcgKzEyMTcs NyBAQCBzdGF0aWMgaW50IG9hX2dldF9yZW5kZXJfY3R4X2lkKHN0cnVjdCBpOTE1X3BlcmZfc3Ry ZWFtICpzdHJlYW0pCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBzdHJlYW0tPmRl dl9wcml2OwogCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKIAotCWNlID0gb2FfcGluX2NvbnRl eHQoaTkxNSwgc3RyZWFtLT5jdHgpOworCWNlID0gaW50ZWxfY29udGV4dF9waW5fbG9jayhzdHJl YW0tPmN0eCwgaTkxNS0+ZW5naW5lW1JDUzBdKTsKIAlpZiAoSVNfRVJSKGNlKSkKIAkJcmV0dXJu IFBUUl9FUlIoY2UpOwogCkBAIC0xMjg2LDE5ICsxMjU5LDE0IEBAIHN0YXRpYyBpbnQgb2FfZ2V0 X3JlbmRlcl9jdHhfaWQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKIAkJCWk5MTUt PnBlcmYub2Euc3BlY2lmaWNfY3R4X2lkX21hc2sgPQogCQkJCSgxVSA8PCBHRU44X0NUWF9JRF9X SURUSCkgLSAxOwogCQkJaTkxNS0+cGVyZi5vYS5zcGVjaWZpY19jdHhfaWQgPQotCQkJCXVwcGVy XzMyX2JpdHMoY2UtPmxyY19kZXNjKTsKLQkJCWk5MTUtPnBlcmYub2Euc3BlY2lmaWNfY3R4X2lk ICY9CiAJCQkJaTkxNS0+cGVyZi5vYS5zcGVjaWZpY19jdHhfaWRfbWFzazsKIAkJfQogCQlicmVh azsKIAogCWNhc2UgMTE6IHsKIAkJaTkxNS0+cGVyZi5vYS5zcGVjaWZpY19jdHhfaWRfbWFzayA9 Ci0JCQkoKDFVIDw8IEdFTjExX1NXX0NUWF9JRF9XSURUSCkgLSAxKSA8PCAoR0VOMTFfU1dfQ1RY X0lEX1NISUZUIC0gMzIpIHwKLQkJCSgoMVUgPDwgR0VOMTFfRU5HSU5FX0lOU1RBTkNFX1dJRFRI KSAtIDEpIDw8IChHRU4xMV9FTkdJTkVfSU5TVEFOQ0VfU0hJRlQgLSAzMikgfAotCQkJKCgxIDw8 IEdFTjExX0VOR0lORV9DTEFTU19XSURUSCkgLSAxKSA8PCAoR0VOMTFfRU5HSU5FX0NMQVNTX1NI SUZUIC0gMzIpOwotCQlpOTE1LT5wZXJmLm9hLnNwZWNpZmljX2N0eF9pZCA9IHVwcGVyXzMyX2Jp dHMoY2UtPmxyY19kZXNjKTsKLQkJaTkxNS0+cGVyZi5vYS5zcGVjaWZpY19jdHhfaWQgJj0KKwkJ CSgoMVUgPDwgR0VOMTFfU1dfQ1RYX0lEX1dJRFRIKSAtIDEpIDw8IChHRU4xMV9TV19DVFhfSURf U0hJRlQgLSAzMik7CisJCWk5MTUtPnBlcmYub2Euc3BlY2lmaWNfY3R4X2lkID0KIAkJCWk5MTUt PnBlcmYub2Euc3BlY2lmaWNfY3R4X2lkX21hc2s7CiAJCWJyZWFrOwogCX0KQEAgLTEzMDcsNiAr MTI3NSw5IEBAIHN0YXRpYyBpbnQgb2FfZ2V0X3JlbmRlcl9jdHhfaWQoc3RydWN0IGk5MTVfcGVy Zl9zdHJlYW0gKnN0cmVhbSkKIAkJTUlTU0lOR19DQVNFKElOVEVMX0dFTihpOTE1KSk7CiAJfQog CisJY2UtPmh3X3RhZyA9IGk5MTUtPnBlcmYub2Euc3BlY2lmaWNfY3R4X2lkX21hc2s7CisJaW50 ZWxfY29udGV4dF9waW5fdW5sb2NrKGNlKTsKKwogCURSTV9ERUJVR19EUklWRVIoImZpbHRlcmlu ZyBvbiBjdHhfaWQ9MHgleCBjdHhfaWRfbWFzaz0weCV4XG4iLAogCQkJIGk5MTUtPnBlcmYub2Eu c3BlY2lmaWNfY3R4X2lkLAogCQkJIGk5MTUtPnBlcmYub2Euc3BlY2lmaWNfY3R4X2lkX21hc2sp OwpAQCAtMTMyMywxOCArMTI5NCwxNyBAQCBzdGF0aWMgaW50IG9hX2dldF9yZW5kZXJfY3R4X2lk KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiAgKi8KIHN0YXRpYyB2b2lkIG9hX3B1 dF9yZW5kZXJfY3R4X2lkKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiB7Ci0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHN0cmVhbS0+ZGV2X3ByaXY7CiAJc3RydWN0IGlu dGVsX2NvbnRleHQgKmNlOwogCi0JZGV2X3ByaXYtPnBlcmYub2Euc3BlY2lmaWNfY3R4X2lkID0g SU5WQUxJRF9DVFhfSUQ7Ci0JZGV2X3ByaXYtPnBlcmYub2Euc3BlY2lmaWNfY3R4X2lkX21hc2sg PSAwOwotCi0JY2UgPSBmZXRjaF9hbmRfemVybygmZGV2X3ByaXYtPnBlcmYub2EucGlubmVkX2N0 eCk7Ci0JaWYgKGNlKSB7Ci0JCW11dGV4X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4 KTsKLQkJaW50ZWxfY29udGV4dF91bnBpbihjZSk7Ci0JCW11dGV4X3VubG9jaygmZGV2X3ByaXYt PmRybS5zdHJ1Y3RfbXV0ZXgpOworCWNlID0gaW50ZWxfY29udGV4dF9waW5fbG9jayhzdHJlYW0t PmN0eCwgaTkxNS0+ZW5naW5lW1JDUzBdKTsKKwlpZiAoIUlTX0VSUihjZSkpIHsKKwkJY2UtPmh3 X3RhZyA9IDA7CisJCWludGVsX2NvbnRleHRfcGluX3VubG9jayhjZSk7CiAJfQorCisJaTkxNS0+ cGVyZi5vYS5zcGVjaWZpY19jdHhfaWQgPSBJTlZBTElEX0NUWF9JRDsKKwlpOTE1LT5wZXJmLm9h LnNwZWNpZmljX2N0eF9pZF9tYXNrID0gMDsKIH0KIAogc3RhdGljIHZvaWQKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdHJhY2UuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfdHJhY2UuaAppbmRleCAxMjg5MzMwNGM4ZjguLjIyYjY0ZmRiOTM5NiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfdHJhY2UuaApAQCAtNjczLDcgKzY3Myw2IEBAIFRSQUNFX0VWRU5UKGk5MTVf cmVxdWVzdF9xdWV1ZSwKIAogCSAgICBUUF9TVFJVQ1RfX2VudHJ5KAogCQkJICAgICBfX2ZpZWxk KHUzMiwgZGV2KQotCQkJICAgICBfX2ZpZWxkKHUzMiwgaHdfaWQpCiAJCQkgICAgIF9fZmllbGQo dTY0LCBjdHgpCiAJCQkgICAgIF9fZmllbGQodTE2LCBjbGFzcykKIAkJCSAgICAgX19maWVsZCh1 MTYsIGluc3RhbmNlKQpAQCAtNjgzLDcgKzY4Miw2IEBAIFRSQUNFX0VWRU5UKGk5MTVfcmVxdWVz dF9xdWV1ZSwKIAogCSAgICBUUF9mYXN0X2Fzc2lnbigKIAkJCSAgIF9fZW50cnktPmRldiA9IHJx LT5pOTE1LT5kcm0ucHJpbWFyeS0+aW5kZXg7Ci0JCQkgICBfX2VudHJ5LT5od19pZCA9IHJxLT5n ZW1fY29udGV4dC0+aHdfaWQ7CiAJCQkgICBfX2VudHJ5LT5jbGFzcyA9IHJxLT5lbmdpbmUtPnVh YmlfY2xhc3M7CiAJCQkgICBfX2VudHJ5LT5pbnN0YW5jZSA9IHJxLT5lbmdpbmUtPmluc3RhbmNl OwogCQkJICAgX19lbnRyeS0+Y3R4ID0gcnEtPmZlbmNlLmNvbnRleHQ7CkBAIC02OTEsMTAgKzY4 OSw5IEBAIFRSQUNFX0VWRU5UKGk5MTVfcmVxdWVzdF9xdWV1ZSwKIAkJCSAgIF9fZW50cnktPmZs YWdzID0gZmxhZ3M7CiAJCQkgICApLAogCi0JICAgIFRQX3ByaW50aygiZGV2PSV1LCBlbmdpbmU9 JXU6JXUsIGh3X2lkPSV1LCBjdHg9JWxsdSwgc2Vxbm89JXUsIGZsYWdzPTB4JXgiLAorCSAgICBU UF9wcmludGsoImRldj0ldSwgZW5naW5lPSV1OiV1LCBjdHg9JWxsdSwgc2Vxbm89JXUsIGZsYWdz PTB4JXgiLAogCQkgICAgICBfX2VudHJ5LT5kZXYsIF9fZW50cnktPmNsYXNzLCBfX2VudHJ5LT5p bnN0YW5jZSwKLQkJICAgICAgX19lbnRyeS0+aHdfaWQsIF9fZW50cnktPmN0eCwgX19lbnRyeS0+ c2Vxbm8sCi0JCSAgICAgIF9fZW50cnktPmZsYWdzKQorCQkgICAgICBfX2VudHJ5LT5jdHgsIF9f ZW50cnktPnNlcW5vLCBfX2VudHJ5LT5mbGFncykKICk7CiAKIERFQ0xBUkVfRVZFTlRfQ0xBU1Mo aTkxNV9yZXF1ZXN0LApAQCAtNzAzLDcgKzcwMCw2IEBAIERFQ0xBUkVfRVZFTlRfQ0xBU1MoaTkx NV9yZXF1ZXN0LAogCiAJICAgIFRQX1NUUlVDVF9fZW50cnkoCiAJCQkgICAgIF9fZmllbGQodTMy LCBkZXYpCi0JCQkgICAgIF9fZmllbGQodTMyLCBod19pZCkKIAkJCSAgICAgX19maWVsZCh1NjQs IGN0eCkKIAkJCSAgICAgX19maWVsZCh1MTYsIGNsYXNzKQogCQkJICAgICBfX2ZpZWxkKHUxNiwg aW5zdGFuY2UpCkBAIC03MTIsMTYgKzcwOCwxNSBAQCBERUNMQVJFX0VWRU5UX0NMQVNTKGk5MTVf cmVxdWVzdCwKIAogCSAgICBUUF9mYXN0X2Fzc2lnbigKIAkJCSAgIF9fZW50cnktPmRldiA9IHJx LT5pOTE1LT5kcm0ucHJpbWFyeS0+aW5kZXg7Ci0JCQkgICBfX2VudHJ5LT5od19pZCA9IHJxLT5n ZW1fY29udGV4dC0+aHdfaWQ7CiAJCQkgICBfX2VudHJ5LT5jbGFzcyA9IHJxLT5lbmdpbmUtPnVh YmlfY2xhc3M7CiAJCQkgICBfX2VudHJ5LT5pbnN0YW5jZSA9IHJxLT5lbmdpbmUtPmluc3RhbmNl OwogCQkJICAgX19lbnRyeS0+Y3R4ID0gcnEtPmZlbmNlLmNvbnRleHQ7CiAJCQkgICBfX2VudHJ5 LT5zZXFubyA9IHJxLT5mZW5jZS5zZXFubzsKIAkJCSAgICksCiAKLQkgICAgVFBfcHJpbnRrKCJk ZXY9JXUsIGVuZ2luZT0ldToldSwgaHdfaWQ9JXUsIGN0eD0lbGx1LCBzZXFubz0ldSIsCisJICAg IFRQX3ByaW50aygiZGV2PSV1LCBlbmdpbmU9JXU6JXUsIGN0eD0lbGx1LCBzZXFubz0ldSIsCiAJ CSAgICAgIF9fZW50cnktPmRldiwgX19lbnRyeS0+Y2xhc3MsIF9fZW50cnktPmluc3RhbmNlLAot CQkgICAgICBfX2VudHJ5LT5od19pZCwgX19lbnRyeS0+Y3R4LCBfX2VudHJ5LT5zZXFubykKKwkJ ICAgICAgX19lbnRyeS0+Y3R4LCBfX2VudHJ5LT5zZXFubykKICk7CiAKIERFRklORV9FVkVOVChp OTE1X3JlcXVlc3QsIGk5MTVfcmVxdWVzdF9hZGQsCkBAIC03NDYsNyArNzQxLDYgQEAgVFJBQ0Vf RVZFTlQoaTkxNV9yZXF1ZXN0X2luLAogCiAJICAgIFRQX1NUUlVDVF9fZW50cnkoCiAJCQkgICAg IF9fZmllbGQodTMyLCBkZXYpCi0JCQkgICAgIF9fZmllbGQodTMyLCBod19pZCkKIAkJCSAgICAg X19maWVsZCh1NjQsIGN0eCkKIAkJCSAgICAgX19maWVsZCh1MTYsIGNsYXNzKQogCQkJICAgICBf X2ZpZWxkKHUxNiwgaW5zdGFuY2UpCkBAIC03NTcsNyArNzUxLDYgQEAgVFJBQ0VfRVZFTlQoaTkx NV9yZXF1ZXN0X2luLAogCiAJICAgIFRQX2Zhc3RfYXNzaWduKAogCQkJICAgX19lbnRyeS0+ZGV2 ID0gcnEtPmk5MTUtPmRybS5wcmltYXJ5LT5pbmRleDsKLQkJCSAgIF9fZW50cnktPmh3X2lkID0g cnEtPmdlbV9jb250ZXh0LT5od19pZDsKIAkJCSAgIF9fZW50cnktPmNsYXNzID0gcnEtPmVuZ2lu ZS0+dWFiaV9jbGFzczsKIAkJCSAgIF9fZW50cnktPmluc3RhbmNlID0gcnEtPmVuZ2luZS0+aW5z dGFuY2U7CiAJCQkgICBfX2VudHJ5LT5jdHggPSBycS0+ZmVuY2UuY29udGV4dDsKQEAgLTc2Niw5 ICs3NTksOSBAQCBUUkFDRV9FVkVOVChpOTE1X3JlcXVlc3RfaW4sCiAJCQkgICBfX2VudHJ5LT5w b3J0ID0gcG9ydDsKIAkJCSAgICksCiAKLQkgICAgVFBfcHJpbnRrKCJkZXY9JXUsIGVuZ2luZT0l dToldSwgaHdfaWQ9JXUsIGN0eD0lbGx1LCBzZXFubz0ldSwgcHJpbz0ldSwgcG9ydD0ldSIsCisJ ICAgIFRQX3ByaW50aygiZGV2PSV1LCBlbmdpbmU9JXU6JXUsIGN0eD0lbGx1LCBzZXFubz0ldSwg cHJpbz0ldSwgcG9ydD0ldSIsCiAJCSAgICAgIF9fZW50cnktPmRldiwgX19lbnRyeS0+Y2xhc3Ms IF9fZW50cnktPmluc3RhbmNlLAotCQkgICAgICBfX2VudHJ5LT5od19pZCwgX19lbnRyeS0+Y3R4 LCBfX2VudHJ5LT5zZXFubywKKwkJICAgICAgX19lbnRyeS0+Y3R4LCBfX2VudHJ5LT5zZXFubywK IAkJICAgICAgX19lbnRyeS0+cHJpbywgX19lbnRyeS0+cG9ydCkKICk7CiAKQEAgLTc3OCw3ICs3 NzEsNiBAQCBUUkFDRV9FVkVOVChpOTE1X3JlcXVlc3Rfb3V0LAogCiAJICAgIFRQX1NUUlVDVF9f ZW50cnkoCiAJCQkgICAgIF9fZmllbGQodTMyLCBkZXYpCi0JCQkgICAgIF9fZmllbGQodTMyLCBo d19pZCkKIAkJCSAgICAgX19maWVsZCh1NjQsIGN0eCkKIAkJCSAgICAgX19maWVsZCh1MTYsIGNs YXNzKQogCQkJICAgICBfX2ZpZWxkKHUxNiwgaW5zdGFuY2UpCkBAIC03ODgsNyArNzgwLDYgQEAg VFJBQ0VfRVZFTlQoaTkxNV9yZXF1ZXN0X291dCwKIAogCSAgICBUUF9mYXN0X2Fzc2lnbigKIAkJ CSAgIF9fZW50cnktPmRldiA9IHJxLT5pOTE1LT5kcm0ucHJpbWFyeS0+aW5kZXg7Ci0JCQkgICBf X2VudHJ5LT5od19pZCA9IHJxLT5nZW1fY29udGV4dC0+aHdfaWQ7CiAJCQkgICBfX2VudHJ5LT5j bGFzcyA9IHJxLT5lbmdpbmUtPnVhYmlfY2xhc3M7CiAJCQkgICBfX2VudHJ5LT5pbnN0YW5jZSA9 IHJxLT5lbmdpbmUtPmluc3RhbmNlOwogCQkJICAgX19lbnRyeS0+Y3R4ID0gcnEtPmZlbmNlLmNv bnRleHQ7CkBAIC03OTYsMTAgKzc4Nyw5IEBAIFRSQUNFX0VWRU5UKGk5MTVfcmVxdWVzdF9vdXQs CiAJCQkgICBfX2VudHJ5LT5jb21wbGV0ZWQgPSBpOTE1X3JlcXVlc3RfY29tcGxldGVkKHJxKTsK IAkJCSAgICksCiAKLQkJICAgIFRQX3ByaW50aygiZGV2PSV1LCBlbmdpbmU9JXU6JXUsIGh3X2lk PSV1LCBjdHg9JWxsdSwgc2Vxbm89JXUsIGNvbXBsZXRlZD89JXUiLAorCQkgICAgVFBfcHJpbnRr KCJkZXY9JXUsIGVuZ2luZT0ldToldSwgY3R4PSVsbHUsIHNlcW5vPSV1LCBjb21wbGV0ZWQ/PSV1 IiwKIAkJCSAgICAgIF9fZW50cnktPmRldiwgX19lbnRyeS0+Y2xhc3MsIF9fZW50cnktPmluc3Rh bmNlLAotCQkJICAgICAgX19lbnRyeS0+aHdfaWQsIF9fZW50cnktPmN0eCwgX19lbnRyeS0+c2Vx bm8sCi0JCQkgICAgICBfX2VudHJ5LT5jb21wbGV0ZWQpCisJCQkgICAgICBfX2VudHJ5LT5jdHgs IF9fZW50cnktPnNlcW5vLCBfX2VudHJ5LT5jb21wbGV0ZWQpCiApOwogCiAjZWxzZQpAQCAtODM3 LDcgKzgyNyw2IEBAIFRSQUNFX0VWRU5UKGk5MTVfcmVxdWVzdF93YWl0X2JlZ2luLAogCiAJICAg IFRQX1NUUlVDVF9fZW50cnkoCiAJCQkgICAgIF9fZmllbGQodTMyLCBkZXYpCi0JCQkgICAgIF9f ZmllbGQodTMyLCBod19pZCkKIAkJCSAgICAgX19maWVsZCh1NjQsIGN0eCkKIAkJCSAgICAgX19m aWVsZCh1MTYsIGNsYXNzKQogCQkJICAgICBfX2ZpZWxkKHUxNiwgaW5zdGFuY2UpCkBAIC04NTMs NyArODQyLDYgQEAgVFJBQ0VfRVZFTlQoaTkxNV9yZXF1ZXN0X3dhaXRfYmVnaW4sCiAJICAgICAq LwogCSAgICBUUF9mYXN0X2Fzc2lnbigKIAkJCSAgIF9fZW50cnktPmRldiA9IHJxLT5pOTE1LT5k cm0ucHJpbWFyeS0+aW5kZXg7Ci0JCQkgICBfX2VudHJ5LT5od19pZCA9IHJxLT5nZW1fY29udGV4 dC0+aHdfaWQ7CiAJCQkgICBfX2VudHJ5LT5jbGFzcyA9IHJxLT5lbmdpbmUtPnVhYmlfY2xhc3M7 CiAJCQkgICBfX2VudHJ5LT5pbnN0YW5jZSA9IHJxLT5lbmdpbmUtPmluc3RhbmNlOwogCQkJICAg X19lbnRyeS0+Y3R4ID0gcnEtPmZlbmNlLmNvbnRleHQ7CkBAIC04NjEsOSArODQ5LDkgQEAgVFJB Q0VfRVZFTlQoaTkxNV9yZXF1ZXN0X3dhaXRfYmVnaW4sCiAJCQkgICBfX2VudHJ5LT5mbGFncyA9 IGZsYWdzOwogCQkJICAgKSwKIAotCSAgICBUUF9wcmludGsoImRldj0ldSwgZW5naW5lPSV1OiV1 LCBod19pZD0ldSwgY3R4PSVsbHUsIHNlcW5vPSV1LCBibG9ja2luZz0ldSwgZmxhZ3M9MHgleCIs CisJICAgIFRQX3ByaW50aygiZGV2PSV1LCBlbmdpbmU9JXU6JXUsIGN0eD0lbGx1LCBzZXFubz0l dSwgYmxvY2tpbmc9JXUsIGZsYWdzPTB4JXgiLAogCQkgICAgICBfX2VudHJ5LT5kZXYsIF9fZW50 cnktPmNsYXNzLCBfX2VudHJ5LT5pbnN0YW5jZSwKLQkJICAgICAgX19lbnRyeS0+aHdfaWQsIF9f ZW50cnktPmN0eCwgX19lbnRyeS0+c2Vxbm8sCisJCSAgICAgIF9fZW50cnktPmN0eCwgX19lbnRy eS0+c2Vxbm8sCiAJCSAgICAgICEhKF9fZW50cnktPmZsYWdzICYgSTkxNV9XQUlUX0xPQ0tFRCks CiAJCSAgICAgIF9fZW50cnktPmZsYWdzKQogKTsKQEAgLTk2NywxOSArOTU1LDE3IEBAIERFQ0xB UkVfRVZFTlRfQ0xBU1MoaTkxNV9jb250ZXh0LAogCVRQX1NUUlVDVF9fZW50cnkoCiAJCQlfX2Zp ZWxkKHUzMiwgZGV2KQogCQkJX19maWVsZChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqLCBjdHgp Ci0JCQlfX2ZpZWxkKHUzMiwgaHdfaWQpCiAJCQlfX2ZpZWxkKHN0cnVjdCBpOTE1X2FkZHJlc3Nf c3BhY2UgKiwgdm0pCiAJKSwKIAogCVRQX2Zhc3RfYXNzaWduKAogCQkJX19lbnRyeS0+ZGV2ID0g Y3R4LT5pOTE1LT5kcm0ucHJpbWFyeS0+aW5kZXg7CiAJCQlfX2VudHJ5LT5jdHggPSBjdHg7Ci0J CQlfX2VudHJ5LT5od19pZCA9IGN0eC0+aHdfaWQ7CiAJCQlfX2VudHJ5LT52bSA9IGN0eC0+cHBn dHQgPyAmY3R4LT5wcGd0dC0+dm0gOiBOVUxMOwogCSksCiAKLQlUUF9wcmludGsoImRldj0ldSwg Y3R4PSVwLCBjdHhfdm09JXAsIGh3X2lkPSV1IiwKLQkJICBfX2VudHJ5LT5kZXYsIF9fZW50cnkt PmN0eCwgX19lbnRyeS0+dm0sIF9fZW50cnktPmh3X2lkKQorCVRQX3ByaW50aygiZGV2PSV1LCBj dHg9JXAsIGN0eF92bT0lcCIsCisJCSAgX19lbnRyeS0+ZGV2LCBfX2VudHJ5LT5jdHgsIF9fZW50 cnktPnZtKQogKQogCiBERUZJTkVfRVZFTlQoaTkxNV9jb250ZXh0LCBpOTE1X2NvbnRleHRfY3Jl YXRlLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29udGV4dF90eXBl cy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29udGV4dF90eXBlcy5oCmluZGV4IDVj M2MzM2QwNWE2Yy4uNjc0NGZmYTU5OGY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9jb250ZXh0X3R5cGVzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Y29udGV4dF90eXBlcy5oCkBAIC01OCw2ICs1OCw3IEBAIHN0cnVjdCBpbnRlbF9jb250ZXh0IHsK IAogCXUzMiAqbHJjX3JlZ19zdGF0ZTsKIAl1NjQgbHJjX2Rlc2M7CisJdTMyIGh3X3RhZzsKIAog CWF0b21pY190IHBpbl9jb3VudDsKIAlzdHJ1Y3QgbXV0ZXggcGluX211dGV4OyAvKiBndWFyZHMg cGlubmluZyBhbmQgYXNzb2NpYXRlZCBvbi1ncHVpbmcgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZW5naW5lX3R5cGVzLmgKaW5kZXggOTVhNjFiNDM4Y2RlLi5lMTg1MDM5NTdkMjkgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV90eXBlcy5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV90eXBlcy5oCkBAIC0yMjEsNiArMjIx LDkgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7CiAJdTMyIGNvbnRleHRfc2l6ZTsKIAl1MzIg bW1pb19iYXNlOwogCisJdW5zaWduZWQgaW50IGh3X3RhZzsKKyNkZWZpbmUgTlVNX0hXX1RBRyAo MjU2KQorCiAJc3RydWN0IGludGVsX3JpbmcgKmJ1ZmZlcjsKIAogCXN0cnVjdCB7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5jCmluZGV4IGIxZjAzZDMzNWU3NC4uNmJjNzg2MWNhYjcyIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtNDAwLDkgKzQwMCw2IEBAIGxyY19kZXNjcmlwdG9yKHN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQog CXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHggPSBjZS0+Z2VtX2NvbnRleHQ7CiAJdTY0IGRl c2M7CiAKLQlCVUlMRF9CVUdfT04oTUFYX0NPTlRFWFRfSFdfSUQgPiAoQklUKEdFTjhfQ1RYX0lE X1dJRFRIKSkpOwotCUJVSUxEX0JVR19PTihHRU4xMV9NQVhfQ09OVEVYVF9IV19JRCA+IChCSVQo R0VOMTFfU1dfQ1RYX0lEX1dJRFRIKSkpOwotCiAJZGVzYyA9IGN0eC0+ZGVzY190ZW1wbGF0ZTsJ CQkJLyogYml0cyAgMC0xMSAqLwogCUdFTV9CVUdfT04oZGVzYyAmIEdFTk1BU0tfVUxMKDYzLCAx MikpOwogCkBAIC00MTYsMjAgKzQxMywxMSBAQCBscmNfZGVzY3JpcHRvcihzdHJ1Y3QgaW50ZWxf Y29udGV4dCAqY2UsIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkgKiBhbnl0aGlu ZyBiZWxvdy4KIAkgKi8KIAlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0gMTEpIHsKLQkJ R0VNX0JVR19PTihjdHgtPmh3X2lkID49IEJJVChHRU4xMV9TV19DVFhfSURfV0lEVEgpKTsKLQkJ ZGVzYyB8PSAodTY0KWN0eC0+aHdfaWQgPDwgR0VOMTFfU1dfQ1RYX0lEX1NISUZUOwotCQkJCQkJ CQkvKiBiaXRzIDM3LTQ3ICovCi0KIAkJZGVzYyB8PSAodTY0KWVuZ2luZS0+aW5zdGFuY2UgPDwg R0VOMTFfRU5HSU5FX0lOU1RBTkNFX1NISUZUOwogCQkJCQkJCQkvKiBiaXRzIDQ4LTUzICovCiAK LQkJLyogVE9ETzogZGVjaWRlIHdoYXQgdG8gZG8gd2l0aCBTVyBjb3VudGVyIChiaXRzIDU1LTYw KSAqLwotCiAJCWRlc2MgfD0gKHU2NCllbmdpbmUtPmNsYXNzIDw8IEdFTjExX0VOR0lORV9DTEFT U19TSElGVDsKIAkJCQkJCQkJLyogYml0cyA2MS02MyAqLwotCX0gZWxzZSB7Ci0JCUdFTV9CVUdf T04oY3R4LT5od19pZCA+PSBCSVQoR0VOOF9DVFhfSURfV0lEVEgpKTsKLQkJZGVzYyB8PSAodTY0 KWN0eC0+aHdfaWQgPDwgR0VOOF9DVFhfSURfU0hJRlQ7CS8qIGJpdHMgMzItNTIgKi8KIAl9CiAK IAlyZXR1cm4gZGVzYzsKQEAgLTU1Myw2ICs1NDEsMTYgQEAgZXhlY2xpc3RzX3NjaGVkdWxlX2lu KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBpbnQgaWR4KQogCWlmICghY291bnQpIHsKIAkJaW50 ZWxfY29udGV4dF9nZXQoY2UpOwogCQlleGVjbGlzdHNfY29udGV4dF9zdGF0dXNfY2hhbmdlKHJx LCBJTlRFTF9DT05URVhUX1NDSEVEVUxFX0lOKTsKKworCQlpZiAoY2UtPmh3X3RhZykgeworCQkJ Y2UtPmxyY19kZXNjIHw9ICh1NjQpY2UtPmh3X3RhZyA8PCAzMjsKKwkJfSBlbHNlIHsKKwkJCWNl LT5scmNfZGVzYyAmPSB+R0VOTUFTS19VTEwoNDcsIDM3KTsKKwkJCWNlLT5scmNfZGVzYyB8PQor CQkJCSh1NjQpKHJxLT5lbmdpbmUtPmh3X3RhZysrICUgTlVNX0hXX1RBRykgPDwKKwkJCQlHRU4x MV9TV19DVFhfSURfU0hJRlQ7CisJCX0KKwogCQlpbnRlbF9lbmdpbmVfY29udGV4dF9pbihycS0+ ZW5naW5lKTsKIAkJY2UtPmluZmxpZ2h0ID0gcnEtPmVuZ2luZTsKIAl9CkBAIC0xNDM0LDcgKzE0 MzIsNiBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfY29udGV4dF9kZXN0cm95KHN0cnVjdCBrcmVm ICprcmVmKQogCiBzdGF0aWMgdm9pZCBleGVjbGlzdHNfY29udGV4dF91bnBpbihzdHJ1Y3QgaW50 ZWxfY29udGV4dCAqY2UpCiB7Ci0JaTkxNV9nZW1fY29udGV4dF91bnBpbl9od19pZChjZS0+Z2Vt X2NvbnRleHQpOwogCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoY2UtPnN0YXRlLT5vYmopOwog CWludGVsX3JpbmdfdW5waW4oY2UtPnJpbmcpOwogfQpAQCAtMTQ5MiwxOCArMTQ4OSwxMiBAQCBf X2V4ZWNsaXN0c19jb250ZXh0X3BpbihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCiAJaWYgKHJl dCkKIAkJZ290byB1bnBpbl9tYXA7CiAKLQlyZXQgPSBpOTE1X2dlbV9jb250ZXh0X3Bpbl9od19p ZChjZS0+Z2VtX2NvbnRleHQpOwotCWlmIChyZXQpCi0JCWdvdG8gdW5waW5fcmluZzsKLQogCWNl LT5scmNfZGVzYyA9IGxyY19kZXNjcmlwdG9yKGNlLCBlbmdpbmUpOwogCWNlLT5scmNfcmVnX3N0 YXRlID0gdmFkZHIgKyBMUkNfU1RBVEVfUE4gKiBQQUdFX1NJWkU7CiAJX19leGVjbGlzdHNfdXBk YXRlX3JlZ19zdGF0ZShjZSwgZW5naW5lKTsKIAogCXJldHVybiAwOwogCi11bnBpbl9yaW5nOgot CWludGVsX3JpbmdfdW5waW4oY2UtPnJpbmcpOwogdW5waW5fbWFwOgogCWk5MTVfZ2VtX29iamVj dF91bnBpbl9tYXAoY2UtPnN0YXRlLT5vYmopOwogdW5waW5fYWN0aXZlOgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2V2aWN0LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZXZpY3QuYwppbmRleCA3NTNhZTUzNGRm MTMuLmY2OGJjMTZkODBkNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2k5MTVfZ2VtX2V2aWN0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2k5MTVfZ2VtX2V2aWN0LmMKQEAgLTQ2Nyw4ICs0NjcsOCBAQCBzdGF0aWMgaW50IGlndF9ldmlj dF9jb250ZXh0cyh2b2lkICphcmcpCiAJCQlpZiAoSVNfRVJSKHJxKSkgewogCQkJCS8qIFdoZW4g ZnVsbCwgZmFpbF9pZl9idXN5IHdpbGwgdHJpZ2dlciBFQlVTWSAqLwogCQkJCWlmIChQVFJfRVJS KHJxKSAhPSAtRUJVU1kpIHsKLQkJCQkJcHJfZXJyKCJVbmV4cGVjdGVkIGVycm9yIGZyb20gcmVx dWVzdCBhbGxvYyAoY3R4IGh3IGlkICV1LCBvbiAlcyk6ICVkXG4iLAotCQkJCQkgICAgICAgY3R4 LT5od19pZCwgZW5naW5lLT5uYW1lLAorCQkJCQlwcl9lcnIoIlVuZXhwZWN0ZWQgZXJyb3IgZnJv bSByZXF1ZXN0IGFsbG9jIChvbiAlcyk6ICVkXG4iLAorCQkJCQkgICAgICAgZW5naW5lLT5uYW1l LAogCQkJCQkgICAgICAgKGludClQVFJfRVJSKHJxKSk7CiAJCQkJCWVyciA9IFBUUl9FUlIocnEp OwogCQkJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1 X3ZtYS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfdm1hLmMKaW5kZXgg YjBhNDI5NmEwNTA0Li4yOTY1ZDQwNTcyMmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pOTE1X3ZtYS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pOTE1X3ZtYS5jCkBAIC0xNzAsNyArMTcwLDcgQEAgc3RhdGljIGludCBpZ3Rfdm1hX2Ny ZWF0ZSh2b2lkICphcmcpCiAJCX0KIAogCQluYyA9IDA7Ci0JCWZvcl9lYWNoX3ByaW1lX251bWJl cihudW1fY3R4LCBNQVhfQ09OVEVYVF9IV19JRCkgeworCQlmb3JfZWFjaF9wcmltZV9udW1iZXIo bnVtX2N0eCwgTlVNX0hXX1RBRykgewogCQkJZm9yICg7IG5jIDwgbnVtX2N0eDsgbmMrKykgewog CQkJCWN0eCA9IG1vY2tfY29udGV4dChpOTE1LCAibW9jayIpOwogCQkJCWlmICghY3R4KQotLSAK Mi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=