From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chunming Zhou Subject: [PATCH 5/9] [RFC]drm: add syncobj timeline support v4 Date: Wed, 12 Sep 2018 17:48:47 +0800 Message-ID: <20180912094851.824-5-david1.zhou@amd.com> References: <20180912094851.824-1-david1.zhou@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180912094851.824-1-david1.zhou@amd.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: amd-gfx@lists.freedesktop.org, Daniel Rakos , Dave Airlie , Christian Konig List-Id: amd-gfx.lists.freedesktop.org VktfS0hSX3RpbWVsaW5lX3NlbWFwaG9yZToKVGhpcyBleHRlbnNpb24gaW50cm9kdWNlcyBhIG5l dyB0eXBlIG9mIHNlbWFwaG9yZSB0aGF0IGhhcyBhbiBpbnRlZ2VyIHBheWxvYWQKaWRlbnRpZnlp bmcgYSBwb2ludCBpbiBhIHRpbWVsaW5lLiBTdWNoIHRpbWVsaW5lIHNlbWFwaG9yZXMgc3VwcG9y dCB0aGUKZm9sbG93aW5nIG9wZXJhdGlvbnM6CiAgICogQ1BVIHF1ZXJ5IC0gQSBob3N0IG9wZXJh dGlvbiB0aGF0IGFsbG93cyBxdWVyeWluZyB0aGUgcGF5bG9hZCBvZiB0aGUKICAgICB0aW1lbGlu ZSBzZW1hcGhvcmUuCiAgICogQ1BVIHdhaXQgLSBBIGhvc3Qgb3BlcmF0aW9uIHRoYXQgYWxsb3dz IGEgYmxvY2tpbmcgd2FpdCBmb3IgYQogICAgIHRpbWVsaW5lIHNlbWFwaG9yZSB0byByZWFjaCBh IHNwZWNpZmllZCB2YWx1ZS4KICAgKiBEZXZpY2Ugd2FpdCAtIEEgZGV2aWNlIG9wZXJhdGlvbiB0 aGF0IGFsbG93cyB3YWl0aW5nIGZvciBhCiAgICAgdGltZWxpbmUgc2VtYXBob3JlIHRvIHJlYWNo IGEgc3BlY2lmaWVkIHZhbHVlLgogICAqIERldmljZSBzaWduYWwgLSBBIGRldmljZSBvcGVyYXRp b24gdGhhdCBhbGxvd3MgYWR2YW5jaW5nIHRoZQogICAgIHRpbWVsaW5lIHNlbWFwaG9yZSB0byBh IHNwZWNpZmllZCB2YWx1ZS4KClNpbmNlIGl0J3MgYSB0aW1lbGluZSwgdGhhdCBtZWFucyB0aGUg ZnJvbnQgdGltZSBwb2ludChQVCkgYWx3YXlzIGlzIHNpZ25hbGVkIGJlZm9yZSB0aGUgbGF0ZSBQ VC4KYS4gc2lnbmFsIFBUIGRlc2lnbjoKU2lnbmFsIFBUIGZlbmNlIE4gZGVwZW5kcyBvbiBQVFtO LTFdIGZlbmNlIGFuZCBzaWduYWwgb3BlcnRpb24gZmVuY2UsIHdoZW4gUFRbTl0gZmVuY2UgaXMg c2lnbmFsZWQsCnRoZSB0aW1lbGluZSB3aWxsIGluY3JlYXNlIHRvIHZhbHVlIG9mIFBUW05dLgpi LiB3YWl0IFBUIGRlc2lnbjoKV2FpdCBQVCBmZW5jZSBpcyBzaWduYWxlZCBieSByZWFjaGluZyB0 aW1lbGluZSBwb2ludCB2YWx1ZSwgd2hlbiB0aW1lbGluZSBpcyBpbmNyZWFzaW5nLCB3aWxsIGNv bXBhcmUKd2FpdCBQVHMgdmFsdWUgd2l0aCBuZXcgdGltZWxpbmUgdmFsdWUsIGlmIFBUIHZhbHVl IGlzIGxvd2VyIHRoYW4gdGltZWxpbmUgdmFsdWUsIHRoZW4gd2FpdCBQVCB3aWxsIGJlCnNpZ25h bGVkLCBvdGhlcndpc2Uga2VlcCBpbiBsaXN0LiBzZW1hcGhvcmUgd2FpdCBvcGVyYXRpb24gY2Fu IHdhaXQgb24gYW55IHBvaW50IG9mIHRpbWVsaW5lLApzbyBuZWVkIGEgUkIgdHJlZSB0byBvcmRl ciB0aGVtLiBBbmQgd2FpdCBQVCBjb3VsZCBhaGVhZCBvZiBzaWduYWwgUFQsIHdlIG5lZWQgYSBz dW1pc3Npb24gZmVuY2UgdG8KcGVyZm9ybSB0aGF0LgoKdjI6CjEuIHJlbW92ZSB1bnVzZWQgRFJN X1NZTkNPQkpfQ1JFQVRFX1RZUEVfTk9STUFMLiAoQ2hyaXN0aWFuKQoyLiBtb3ZlIHVuZXhwb3Nl ZCBkZW5pdGlvbnMgdG8gLmMgZmlsZS4gKERhbmllbCBWZXR0ZXIpCjMuIHNwbGl0IHVwIHRoZSBj aGFuZ2UgdG8gZHJtX3N5bmNvYmpfZmluZF9mZW5jZSgpIGluIGEgc2VwYXJhdGUgcGF0Y2guIChD aHJpc3RpYW4pCjQuIHNwbGl0IHVwIHRoZSBjaGFuZ2UgdG8gZHJtX3N5bmNvYmpfcmVwbGFjZV9m ZW5jZSgpIGluIGEgc2VwYXJhdGUgcGF0Y2guCjUuIGRyb3AgdGhlIHN1Ym1pc3Npb25fZmVuY2Ug aW1wbGVtZW50YXRpb24gYW5kIGluc3RlYWQgdXNlIHdhaXRfZXZlbnQoKSBmb3IgdGhhdC4gKENo cmlzdGlhbikKNi4gV0FSTl9PTihwb2ludCAhPSAwKSBmb3IgTk9STUFMIHR5cGUgc3luY29iaiBj YXNlLiAoRGFuaWVsIFZldHRlcikKCnYzOgoxLiByZXBsYWNlIG5vcm1hbCBzeW5jb2JqIHdpdGgg dGltZWxpbmUgaW1wbGVtZW5hdGlvbi4gKFZldHRlciBhbmQgQ2hyaXN0aWFuKQogICAgYS4gbm9y bWFsIHN5bmNvYmogc2lnbmFsIG9wIHdpbGwgY3JlYXRlIGEgc2lnbmFsIFBUIHRvIHRhaWwgb2Yg c2lnbmFsIHB0IGxpc3QuCiAgICBiLiBub3JtYWwgc3luY29iaiB3YWl0IG9wIHdpbGwgY3JlYXRl IGEgd2FpdCBwdCB3aXRoIGxhc3Qgc2lnbmFsIHBvaW50LCBhbmQgdGhpcyB3YWl0IFBUIGlzIG9u bHkgc2lnbmFsZWQgYnkgcmVsYXRlZCBzaWduYWwgcG9pbnQgUFQuCjIuIG1hbnkgYnVnIGZpeCBh bmQgY2xlYW4gdXAKMy4gc3R1YiBmZW5jZSBtb3ZpbmcgaXMgbW92ZWQgdG8gb3RoZXIgcGF0Y2gu Cgp2NO+8mgoxLiBmaXggUkIgdHJlZSBsb29wIHdpdGggd2hpbGUobm9kZT1yYl9maXJzdCguLi4p KS4gKENocmlzdGlhbikKMi4gZml4IHN5bmNvYmogbGlmZWN5Y2xlLiAoQ2hyaXN0aWFuKQozLiBv bmx5IGVuYWJsZV9zaWduYWxpbmcgd2hlbiB0aGVyZSBpcyB3YWl0X3B0LiAoQ2hyaXN0aWFuKQo0 LiBmaXggdGltZWxpbmUgcGF0aCBpc3N1ZXMuCjUuIHdyaXRlIGEgdGltZWxpbmUgdGVzdCBpbiBs aWJkcm0KCm5vcm1hbCBzeW5jb2JqIGlzIHRlc3RlZCBieSAuL2RlcXAtdmsgLW4gZEVRUC1WSypz ZW1hcGhvcmUqCnRpbWVsaW5lIHN5bmNvYmogaXMgdGVzdGVkIGJ5IC4vYW1kZ3B1X3Rlc3QgLXMg OQoKU2lnbmVkLW9mZi1ieTogQ2h1bm1pbmcgWmhvdSA8ZGF2aWQxLnpob3VAYW1kLmNvbT4KQ2M6 IENocmlzdGlhbiBLb25pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgpDYzogRGF2ZSBBaXJs aWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KQ2M6IERhbmllbCBSYWtvcyA8RGFuaWVsLlJha29zQGFt ZC5jb20+CkNjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+Ci0tLQogZHJpdmVycy9n cHUvZHJtL2RybV9zeW5jb2JqLmMgICAgICAgICAgICAgIHwgNDk0ICsrKysrKysrKysrKysrKyst LS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIHwgICA0ICst CiBpbmNsdWRlL2RybS9kcm1fc3luY29iai5oICAgICAgICAgICAgICAgICAgfCAgNzggKystLQog aW5jbHVkZS91YXBpL2RybS9kcm0uaCAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIDQgZmls ZXMgY2hhbmdlZCwgNDI1IGluc2VydGlvbnMoKyksIDE1MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f c3luY29iai5jCmluZGV4IGU5Y2U2MjNkMDQ5ZS4uNTAyY2RmMzEzYWVhIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5 bmNvYmouYwpAQCAtNTYsNiArNTYsOSBAQAogI2luY2x1ZGUgImRybV9pbnRlcm5hbC5oIgogI2lu Y2x1ZGUgPGRybS9kcm1fc3luY29iai5oPgogCisvKiBtZXJnZSBub3JtYWwgc3luY29iaiB0byB0 aW1lbGluZSBzeW5jb2JqLCB0aGUgcG9pbnQgaW50ZXJ2YWwgaXMgMSAqLworI2RlZmluZSBEUk1f U1lOQ09CSl9OT1JNQUxfUE9JTlQgMQorCiBzdHJ1Y3QgZHJtX3N5bmNvYmpfc3R1Yl9mZW5jZSB7 CiAJc3RydWN0IGRtYV9mZW5jZSBiYXNlOwogCXNwaW5sb2NrX3QgbG9jazsKQEAgLTgyLDYgKzg1 LDE4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZG1hX2ZlbmNlX29wcyBkcm1fc3luY29ial9zdHVi X2ZlbmNlX29wcyA9IHsKIAkucmVsZWFzZSA9IGRybV9zeW5jb2JqX3N0dWJfZmVuY2VfcmVsZWFz ZSwKIH07CiAKK3N0cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQgeworCXN0cnVjdCBkbWFfZmVu Y2VfYXJyYXkgKmJhc2U7CisJdTY0ICAgIHZhbHVlOworCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsK K307CitzdHJ1Y3QgZHJtX3N5bmNvYmpfd2FpdF9wdCB7CisJc3RydWN0IGRybV9zeW5jb2JqX3N0 dWJfZmVuY2UgYmFzZTsKKwlzdHJ1Y3QgZG1hX2ZlbmNlICpzaWduYWxfcHRfZmVuY2U7CisJc3Ry dWN0IGRtYV9mZW5jZV9jYiB3YWl0X2NiOworCXN0cnVjdCByYl9ub2RlICAgbm9kZTsKKwl1NjQg ICAgdmFsdWU7Cit9OwogCiAvKioKICAqIGRybV9zeW5jb2JqX2ZpbmQgLSBsb29rdXAgYW5kIHJl ZmVyZW5jZSBhIHN5bmMgb2JqZWN0LgpAQCAtMTA5LDYxICsxMjQsMjEzIEBAIHN0cnVjdCBkcm1f c3luY29iaiAqZHJtX3N5bmNvYmpfZmluZChzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSwK IH0KIEVYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfZmluZCk7CiAKLXN0YXRpYyB2b2lkIGRybV9z eW5jb2JqX2FkZF9jYWxsYmFja19sb2NrZWQoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLAot CQkJCQkgICAgc3RydWN0IGRybV9zeW5jb2JqX2NiICpjYiwKLQkJCQkJICAgIGRybV9zeW5jb2Jq X2Z1bmNfdCBmdW5jKQorc3RhdGljIHZvaWQgZHJtX3N5bmNvYmpfdGltZWxpbmVfaW5pdChzdHJ1 Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosCisJCQkJICAgICAgc3RydWN0IGRybV9zeW5jb2JqX3Rp bWVsaW5lICpzeW5jb2JqX3RpbWVsaW5lKQogewotCWNiLT5mdW5jID0gZnVuYzsKLQlsaXN0X2Fk ZF90YWlsKCZjYi0+bm9kZSwgJnN5bmNvYmotPmNiX2xpc3QpOworCXNwaW5fbG9jaygmc3luY29i ai0+bG9jayk7CisJc3luY29ial90aW1lbGluZS0+dGltZWxpbmVfY29udGV4dCA9IGRtYV9mZW5j ZV9jb250ZXh0X2FsbG9jKDEpOworCXN5bmNvYmpfdGltZWxpbmUtPnRpbWVsaW5lID0gMDsKKwlz eW5jb2JqX3RpbWVsaW5lLT5zaWduYWxfcG9pbnQgPSAwOworCWluaXRfd2FpdHF1ZXVlX2hlYWQo JnN5bmNvYmpfdGltZWxpbmUtPndxKTsKKworCXN5bmNvYmpfdGltZWxpbmUtPndhaXRfcHRfdHJl ZSA9IFJCX1JPT1Q7CisJSU5JVF9MSVNUX0hFQUQoJnN5bmNvYmpfdGltZWxpbmUtPnNpZ25hbF9w dF9saXN0KTsKKwlzcGluX3VubG9jaygmc3luY29iai0+bG9jayk7CiB9CiAKLXN0YXRpYyBpbnQg ZHJtX3N5bmNvYmpfZmVuY2VfZ2V0X29yX2FkZF9jYWxsYmFjayhzdHJ1Y3QgZHJtX3N5bmNvYmog KnN5bmNvYmosCi0JCQkJCQkgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlLAotCQkJCQkJIHN0cnVj dCBkcm1fc3luY29ial9jYiAqY2IsCi0JCQkJCQkgZHJtX3N5bmNvYmpfZnVuY190IGZ1bmMpCitz dGF0aWMgdm9pZCBkcm1fc3luY29ial90aW1lbGluZV9maW5pKHN0cnVjdCBkcm1fc3luY29iaiAq c3luY29iaiwKKwkJCQkgICAgICBzdHJ1Y3QgZHJtX3N5bmNvYmpfdGltZWxpbmUgKnN5bmNvYmpf dGltZWxpbmUpCiB7Ci0JaW50IHJldDsKLQotCSpmZW5jZSA9IGRybV9zeW5jb2JqX2ZlbmNlX2dl dChzeW5jb2JqKTsKLQlpZiAoKmZlbmNlKQotCQlyZXR1cm4gMTsKKwlzdHJ1Y3QgcmJfbm9kZSAq bm9kZSA9IE5VTEw7CisJc3RydWN0IGRybV9zeW5jb2JqX3dhaXRfcHQgKndhaXRfcHQgPSBOVUxM OworCXN0cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQgKnNpZ25hbF9wdCA9IE5VTEwsICp0bXA7 CiAKIAlzcGluX2xvY2soJnN5bmNvYmotPmxvY2spOwotCS8qIFdlJ3ZlIGFscmVhZHkgdHJpZWQg b25jZSB0byBnZXQgYSBmZW5jZSBhbmQgZmFpbGVkLiAgTm93IHRoYXQgd2UKLQkgKiBoYXZlIHRo ZSBsb2NrLCB0cnkgb25lIG1vcmUgdGltZSBqdXN0IHRvIGJlIHN1cmUgd2UgZG9uJ3QgYWRkIGEK LQkgKiBjYWxsYmFjayB3aGVuIGEgZmVuY2UgaGFzIGFscmVhZHkgYmVlbiBzZXQuCi0JICovCi0J aWYgKHN5bmNvYmotPmZlbmNlKSB7Ci0JCSpmZW5jZSA9IGRtYV9mZW5jZV9nZXQocmN1X2RlcmVm ZXJlbmNlX3Byb3RlY3RlZChzeW5jb2JqLT5mZW5jZSwKLQkJCQkJCQkJIGxvY2tkZXBfaXNfaGVs ZCgmc3luY29iai0+bG9jaykpKTsKLQkJcmV0ID0gMTsKLQl9IGVsc2UgewotCQkqZmVuY2UgPSBO VUxMOwotCQlkcm1fc3luY29ial9hZGRfY2FsbGJhY2tfbG9ja2VkKHN5bmNvYmosIGNiLCBmdW5j KTsKLQkJcmV0ID0gMDsKKwlpZiAoIVJCX0VNUFRZX1JPT1QoJnN5bmNvYmpfdGltZWxpbmUtPndh aXRfcHRfdHJlZSkpCisJCURSTV9FUlJPUigiVGhlcmUgc3RpbGwgYXJlIGFkdmFuY2VkIHdhaXRf cHRzISBwbHMgY2hlY2shIik7CisJd2hpbGUgKChub2RlID0gcmJfZmlyc3QoJnN5bmNvYmpfdGlt ZWxpbmUtPndhaXRfcHRfdHJlZSkpKSB7CisJCXdhaXRfcHQgPSByYl9lbnRyeShub2RlLCBzdHJ1 Y3QgZHJtX3N5bmNvYmpfd2FpdF9wdCwgbm9kZSk7CisJCXJiX2VyYXNlKCZ3YWl0X3B0LT5ub2Rl LAorCQkJICZzeW5jb2JqX3RpbWVsaW5lLT53YWl0X3B0X3RyZWUpOworCQlSQl9DTEVBUl9OT0RF KCZ3YWl0X3B0LT5ub2RlKTsKKwkJaWYgKCF3YWl0X3B0LT5zaWduYWxfcHRfZmVuY2UpIHsKKwkJ CS8qIGlmIHdhaXRfcHQgc3RpbGwgaXMgYWR2YW5jZWQsIGZha2Ugc2lnbmFsIGl0LgorCQkJICog Z2VuZXJhbGx5IHNob3VsZG4ndCBoYXBwZW5zICovCisJCQlkbWFfZmVuY2Vfc2V0X2Vycm9yKCZ3 YWl0X3B0LT5iYXNlLmJhc2UsIC1FTk9FTlQpOworCQkJZG1hX2ZlbmNlX3NpZ25hbCgmd2FpdF9w dC0+YmFzZS5iYXNlKTsKKwkJfQorCQkvKiBrZnJlZSh3YWl0X3B0KSBpcyBleGN1dGVkIGJ5IGZl bmNlIHB1dCAqLworCQlkbWFfZmVuY2VfcHV0KCZ3YWl0X3B0LT5iYXNlLmJhc2UpOworCX0KKwls aXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc2lnbmFsX3B0LCB0bXAsCisJCQkJICZzeW5jb2JqX3Rp bWVsaW5lLT5zaWduYWxfcHRfbGlzdCwgbGlzdCkgeworCQlsaXN0X2RlbCgmc2lnbmFsX3B0LT5s aXN0KTsKKwkJZG1hX2ZlbmNlX3B1dCgmc2lnbmFsX3B0LT5iYXNlLT5iYXNlKTsKKwkJa2ZyZWUo c2lnbmFsX3B0KTsKIAl9CiAJc3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2spOworfQogCi0JcmV0 dXJuIHJldDsKK3N0YXRpYyB2b2lkIHdhaXRfcHRfZnVuYyhzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5j ZSwgc3RydWN0IGRtYV9mZW5jZV9jYiAqY2IpCit7CisJc3RydWN0IGRybV9zeW5jb2JqX3dhaXRf cHQgKndhaXRfcHQgPQorCQljb250YWluZXJfb2YoY2IsIHN0cnVjdCBkcm1fc3luY29ial93YWl0 X3B0LCB3YWl0X2NiKTsKKworCWRtYV9mZW5jZV9zaWduYWwoJndhaXRfcHQtPmJhc2UuYmFzZSk7 CisJZG1hX2ZlbmNlX3B1dCh3YWl0X3B0LT5zaWduYWxfcHRfZmVuY2UpOworCXdhaXRfcHQtPnNp Z25hbF9wdF9mZW5jZSA9IE5VTEw7CisJZG1hX2ZlbmNlX3B1dCgmd2FpdF9wdC0+YmFzZS5iYXNl KTsKK30KKworc3RhdGljIHZvaWQgZHJtX3N5bmNvYmpfZmluZF9zaWduYWxfcHRfZm9yX3dhaXRf cHQoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLAorCQkJCQkJICAgc3RydWN0IGRybV9zeW5j b2JqX3dhaXRfcHQgKndhaXRfcHQpCit7CisJc3RydWN0IGRybV9zeW5jb2JqX3RpbWVsaW5lICp0 aW1lbGluZSA9ICZzeW5jb2JqLT5zeW5jb2JqX3RpbWVsaW5lOworCXN0cnVjdCBkcm1fc3luY29i al9zaWduYWxfcHQgKnNpZ25hbF9wdDsKKwlpbnQgcmV0OworCisJaWYgKHdhaXRfcHQtPnNpZ25h bF9wdF9mZW5jZSkgeworCQlyZXR1cm47CisJfSBlbHNlIGlmICgoc3luY29iai0+dHlwZSA9PSBE Uk1fU1lOQ09CSl9UWVBFX1RJTUVMSU5FKSAmJgorCQkgICAod2FpdF9wdC0+dmFsdWUgPD0gdGlt ZWxpbmUtPnRpbWVsaW5lKSkgeworCQlkbWFfZmVuY2Vfc2lnbmFsKCZ3YWl0X3B0LT5iYXNlLmJh c2UpOworCQlyYl9lcmFzZSgmd2FpdF9wdC0+bm9kZSwKKwkJCSAmdGltZWxpbmUtPndhaXRfcHRf dHJlZSk7CisJCVJCX0NMRUFSX05PREUoJndhaXRfcHQtPm5vZGUpOworCQlkbWFfZmVuY2VfcHV0 KCZ3YWl0X3B0LT5iYXNlLmJhc2UpOworCQlyZXR1cm47CisJfQorCisJbGlzdF9mb3JfZWFjaF9l bnRyeShzaWduYWxfcHQsICZ0aW1lbGluZS0+c2lnbmFsX3B0X2xpc3QsIGxpc3QpIHsKKwkJaWYg KHdhaXRfcHQtPnZhbHVlID4gc2lnbmFsX3B0LT52YWx1ZSkKKwkJCWNvbnRpbnVlOworCQlpZiAo KHN5bmNvYmotPnR5cGUgPT0gRFJNX1NZTkNPQkpfVFlQRV9OT1JNQUwpICYmCisJCSAgICAod2Fp dF9wdC0+dmFsdWUgIT0gc2lnbmFsX3B0LT52YWx1ZSkpCisJCQljb250aW51ZTsKKwkJd2FpdF9w dC0+c2lnbmFsX3B0X2ZlbmNlID0gZG1hX2ZlbmNlX2dldCgmc2lnbmFsX3B0LT5iYXNlLT5iYXNl KTsKKwkJcmV0ID0gZG1hX2ZlbmNlX2FkZF9jYWxsYmFjayh3YWl0X3B0LT5zaWduYWxfcHRfZmVu Y2UsCisJCQkJCSAgICAgJndhaXRfcHQtPndhaXRfY2IsCisJCQkJCSAgICAgd2FpdF9wdF9mdW5j KTsKKwkJaWYgKHJldCA9PSAtRU5PRU5UKSB7CisJCQlkbWFfZmVuY2Vfc2lnbmFsKCZ3YWl0X3B0 LT5iYXNlLmJhc2UpOworCQkJZG1hX2ZlbmNlX3B1dCh3YWl0X3B0LT5zaWduYWxfcHRfZmVuY2Up OworCQkJd2FpdF9wdC0+c2lnbmFsX3B0X2ZlbmNlID0gTlVMTDsKKwkJCXJiX2VyYXNlKCZ3YWl0 X3B0LT5ub2RlLAorCQkJCSAmdGltZWxpbmUtPndhaXRfcHRfdHJlZSk7CisJCQlSQl9DTEVBUl9O T0RFKCZ3YWl0X3B0LT5ub2RlKTsKKwkJCWRtYV9mZW5jZV9wdXQoJndhaXRfcHQtPmJhc2UuYmFz ZSk7CisJCX0gZWxzZSBpZiAocmV0IDwgMCkgeworCQkJZG1hX2ZlbmNlX3B1dCh3YWl0X3B0LT5z aWduYWxfcHRfZmVuY2UpOworCQkJRFJNX0VSUk9SKCJhZGQgY2FsbGJhY2sgZXJyb3IhIik7CisJ CX0gZWxzZSB7CisJCQkvKiBhZnRlciBhZGRpbmcgY2FsbGJhY2ssIHJlbW92ZSBmcm9tIHJiIHRy ZWUgKi8KKwkJCXJiX2VyYXNlKCZ3YWl0X3B0LT5ub2RlLAorCQkJCSAmdGltZWxpbmUtPndhaXRf cHRfdHJlZSk7CisJCQlSQl9DTEVBUl9OT0RFKCZ3YWl0X3B0LT5ub2RlKTsKKwkJfQorCQlyZXR1 cm47CisJfQogfQogCi12b2lkIGRybV9zeW5jb2JqX2FkZF9jYWxsYmFjayhzdHJ1Y3QgZHJtX3N5 bmNvYmogKnN5bmNvYmosCi0JCQkgICAgICBzdHJ1Y3QgZHJtX3N5bmNvYmpfY2IgKmNiLAotCQkJ ICAgICAgZHJtX3N5bmNvYmpfZnVuY190IGZ1bmMpCitzdGF0aWMgaW50IGRybV9zeW5jb2JqX3Rp bWVsaW5lX2NyZWF0ZV9zaWduYWxfcHQoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLAorCQkJ CQkJIHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlLAorCQkJCQkJIHU2NCBwb2ludCkKIHsKKwlzdHJ1 Y3QgZHJtX3N5bmNvYmpfc2lnbmFsX3B0ICpzaWduYWxfcHQgPQorCQlremFsbG9jKHNpemVvZihz dHJ1Y3QgZHJtX3N5bmNvYmpfc2lnbmFsX3B0KSwgR0ZQX0tFUk5FTCk7CisJc3RydWN0IGRybV9z eW5jb2JqX3NpZ25hbF9wdCAqdGFpbF9wdDsKKwlzdHJ1Y3QgZG1hX2ZlbmNlICoqZmVuY2VzOwor CXN0cnVjdCByYl9ub2RlICpub2RlOworCXN0cnVjdCBkcm1fc3luY29ial93YWl0X3B0ICp0YWls X3dhaXRfcHQgPSBOVUxMOworCWludCBudW1fZmVuY2VzID0gMDsKKwlpbnQgcmV0ID0gMCwgaTsK KworCWlmICghc2lnbmFsX3B0KQorCQlyZXR1cm4gLUVOT01FTTsKKwlpZiAoc3luY29iai0+c3lu Y29ial90aW1lbGluZS5zaWduYWxfcG9pbnQgPj0gcG9pbnQpIHsKKwkJRFJNX1dBUk4oIkEgbGF0 ZXIgc2lnbmFsIGlzIHJlYWR5ISIpOworCQlnb3RvIG91dDsKKwl9CisJaWYgKCFmZW5jZSkKKwkJ Z290byBvdXQ7CisKKwlmZW5jZXMgPSBrbWFsbG9jX2FycmF5KHNpemVvZih2b2lkICopLCAyLCBH RlBfS0VSTkVMKTsKKwlpZiAoIWZlbmNlcykKKwkJZ290byBvdXQ7CisJZmVuY2VzW251bV9mZW5j ZXMrK10gPSBkbWFfZmVuY2VfZ2V0KGZlbmNlKTsKKwkvKiB0aW1lbGluZSBzeW5jb2JqIG11c3Qg dGFrZSB0aGlzIGRlcGVuZGVuY3kgKi8KKwlpZiAoc3luY29iai0+dHlwZSA9PSBEUk1fU1lOQ09C Sl9UWVBFX1RJTUVMSU5FKSB7CisJCXNwaW5fbG9jaygmc3luY29iai0+bG9jayk7CisJCWlmICgh bGlzdF9lbXB0eSgmc3luY29iai0+c3luY29ial90aW1lbGluZS5zaWduYWxfcHRfbGlzdCkpIHsK KwkJCXRhaWxfcHQgPSBsaXN0X2xhc3RfZW50cnkoJnN5bmNvYmotPnN5bmNvYmpfdGltZWxpbmUu c2lnbmFsX3B0X2xpc3QsCisJCQkJCQkgIHN0cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQsIGxp c3QpOworCQkJZmVuY2VzW251bV9mZW5jZXMrK10gPSBkbWFfZmVuY2VfZ2V0KCZ0YWlsX3B0LT5i YXNlLT5iYXNlKTsKKwkJfQorCQlzcGluX3VubG9jaygmc3luY29iai0+bG9jayk7CisJfQorCXNp Z25hbF9wdC0+YmFzZSA9IGRtYV9mZW5jZV9hcnJheV9jcmVhdGUobnVtX2ZlbmNlcywgZmVuY2Vz LAorCQkJCQkJIHN5bmNvYmotPnN5bmNvYmpfdGltZWxpbmUudGltZWxpbmVfY29udGV4dCwKKwkJ CQkJCSBwb2ludCwgZmFsc2UpOworCWlmICghc2lnbmFsX3B0LT5iYXNlKQorCQlnb3RvIGZhaWw7 CisKIAlzcGluX2xvY2soJnN5bmNvYmotPmxvY2spOwotCWRybV9zeW5jb2JqX2FkZF9jYWxsYmFj a19sb2NrZWQoc3luY29iaiwgY2IsIGZ1bmMpOworCXNpZ25hbF9wdC0+dmFsdWUgPSBwb2ludDsK KwlJTklUX0xJU1RfSEVBRCgmc2lnbmFsX3B0LT5saXN0KTsKKwlsaXN0X2FkZF90YWlsKCZzaWdu YWxfcHQtPmxpc3QsICZzeW5jb2JqLT5zeW5jb2JqX3RpbWVsaW5lLnNpZ25hbF9wdF9saXN0KTsK KwlzeW5jb2JqLT5zeW5jb2JqX3RpbWVsaW5lLnNpZ25hbF9wb2ludCA9IHBvaW50OworCisJLyog Y2hlY2sgaWYgdGhlcmUgaXMgYWR2YW5jZWQgd2FpdCAqLworCW5vZGUgPSByYl9sYXN0KCZzeW5j b2JqLT5zeW5jb2JqX3RpbWVsaW5lLndhaXRfcHRfdHJlZSk7CisJaWYgKG5vZGUpCisJCXRhaWxf d2FpdF9wdCA9IHJiX2VudHJ5KG5vZGUsIHN0cnVjdCBkcm1fc3luY29ial93YWl0X3B0LCBub2Rl KTsKKwlpZiAodGFpbF93YWl0X3B0ICYmICF0YWlsX3dhaXRfcHQtPnNpZ25hbF9wdF9mZW5jZSkg eworCQlmb3IgKG5vZGUgPSByYl9maXJzdCgmc3luY29iai0+c3luY29ial90aW1lbGluZS53YWl0 X3B0X3RyZWUpOworCQkgICAgIG5vZGUgIT0gTlVMTDsgbm9kZSA9IHJiX25leHQobm9kZSkpIHsK KwkJCXN0cnVjdCBkcm1fc3luY29ial93YWl0X3B0ICp3YWl0X3B0ID0KKwkJCQlyYl9lbnRyeShu b2RlLCBzdHJ1Y3QgZHJtX3N5bmNvYmpfd2FpdF9wdCwKKwkJCQkJIG5vZGUpOworCisJCQlkcm1f c3luY29ial9maW5kX3NpZ25hbF9wdF9mb3Jfd2FpdF9wdChzeW5jb2JqLAorCQkJCQkJCSAgICAg ICB3YWl0X3B0KTsKKwkJfQorCX0KKwogCXNwaW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsKKwl3 YWtlX3VwX2FsbCgmc3luY29iai0+c3luY29ial90aW1lbGluZS53cSk7CisKKwlyZXR1cm4gMDsK K2ZhaWw6CisJZm9yIChpID0gMDsgaSA8IG51bV9mZW5jZXM7IGkrKykKKwkJZG1hX2ZlbmNlX3B1 dChmZW5jZXNbaV0pOworCWtmcmVlKGZlbmNlcyk7CitvdXQ6CisJa2ZyZWUoc2lnbmFsX3B0KTsK KwlyZXR1cm4gcmV0OwogfQogCi12b2lkIGRybV9zeW5jb2JqX3JlbW92ZV9jYWxsYmFjayhzdHJ1 Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosCi0JCQkJIHN0cnVjdCBkcm1fc3luY29ial9jYiAqY2Ip CitzdGF0aWMgdm9pZCBkcm1fc3luY29ial90aW1lbGluZV9nYXJiYWdlX2NvbGxlY3Rpb24oc3Ry dWN0IGRybV9zeW5jb2JqICpzeW5jb2JqKQogeworCXN0cnVjdCBkcm1fc3luY29ial90aW1lbGlu ZSAqdGltZWxpbmUgPSAmc3luY29iai0+c3luY29ial90aW1lbGluZTsKKwlzdHJ1Y3QgZHJtX3N5 bmNvYmpfc2lnbmFsX3B0ICpzaWduYWxfcHQsICp0bXA7CisKIAlzcGluX2xvY2soJnN5bmNvYmot PmxvY2spOwotCWxpc3RfZGVsX2luaXQoJmNiLT5ub2RlKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5 X3NhZmUoc2lnbmFsX3B0LCB0bXAsCisJCQkJICZ0aW1lbGluZS0+c2lnbmFsX3B0X2xpc3QsIGxp c3QpIHsKKwkJaWYgKGRtYV9mZW5jZV9pc19zaWduYWxlZCgmc2lnbmFsX3B0LT5iYXNlLT5iYXNl KSkgeworCQkJdGltZWxpbmUtPnRpbWVsaW5lID0gc2lnbmFsX3B0LT52YWx1ZTsKKwkJCWxpc3Rf ZGVsKCZzaWduYWxfcHQtPmxpc3QpOworCQkJZG1hX2ZlbmNlX3B1dCgmc2lnbmFsX3B0LT5iYXNl LT5iYXNlKTsKKwkJCWtmcmVlKHNpZ25hbF9wdCk7CisJCX0gZWxzZSB7CisJCQkvKnNpZ25hbF9w dCBpcyBpbiBvcmRlciBpbiBsaXN0LCBmcm9tIHNtYWxsIHRvIGJpZywgc28KKwkJCSAqIHRoZSBs YXRlciBtdXN0IG5vdCBiZSBzaWduYWwgZWl0aGVyICovCisJCQlicmVhazsKKwkJfQorCX0KKwog CXNwaW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsKIH0KLQogLyoqCiAgKiBkcm1fc3luY29ial9y ZXBsYWNlX2ZlbmNlIC0gcmVwbGFjZSBmZW5jZSBpbiBhIHN5bmMgb2JqZWN0LgogICogQHN5bmNv Ymo6IFN5bmMgb2JqZWN0IHRvIHJlcGxhY2UgZmVuY2UgaW4KQEAgLTE3NiwyOCArMzQzLDI5IEBA IHZvaWQgZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNv YmosCiAJCQkgICAgICAgdTY0IHBvaW50LAogCQkJICAgICAgIHN0cnVjdCBkbWFfZmVuY2UgKmZl bmNlKQogewotCXN0cnVjdCBkbWFfZmVuY2UgKm9sZF9mZW5jZTsKLQlzdHJ1Y3QgZHJtX3N5bmNv YmpfY2IgKmN1ciwgKnRtcDsKLQotCWlmIChmZW5jZSkKLQkJZG1hX2ZlbmNlX2dldChmZW5jZSk7 Ci0KLQlzcGluX2xvY2soJnN5bmNvYmotPmxvY2spOwotCi0Jb2xkX2ZlbmNlID0gcmN1X2RlcmVm ZXJlbmNlX3Byb3RlY3RlZChzeW5jb2JqLT5mZW5jZSwKLQkJCQkJICAgICAgbG9ja2RlcF9pc19o ZWxkKCZzeW5jb2JqLT5sb2NrKSk7Ci0JcmN1X2Fzc2lnbl9wb2ludGVyKHN5bmNvYmotPmZlbmNl LCBmZW5jZSk7Ci0KLQlpZiAoZmVuY2UgIT0gb2xkX2ZlbmNlKSB7Ci0JCWxpc3RfZm9yX2VhY2hf ZW50cnlfc2FmZShjdXIsIHRtcCwgJnN5bmNvYmotPmNiX2xpc3QsIG5vZGUpIHsKLQkJCWxpc3Rf ZGVsX2luaXQoJmN1ci0+bm9kZSk7Ci0JCQljdXItPmZ1bmMoc3luY29iaiwgY3VyKTsKKwlkcm1f c3luY29ial90aW1lbGluZV9nYXJiYWdlX2NvbGxlY3Rpb24oc3luY29iaik7CisJaWYgKHN5bmNv YmotPnR5cGUgPT0gRFJNX1NZTkNPQkpfVFlQRV9USU1FTElORSkgeworCQlpZiAoZmVuY2UpCisJ CQlkcm1fc3luY29ial90aW1lbGluZV9jcmVhdGVfc2lnbmFsX3B0KHN5bmNvYmosIGZlbmNlLAor CQkJCQkJCSAgICAgIHBvaW50KTsKKwkJcmV0dXJuOworCX0gZWxzZSBpZiAoc3luY29iai0+dHlw ZSA9PSBEUk1fU1lOQ09CSl9UWVBFX05PUk1BTCkgeworCQl1NjQgcHRfdmFsdWU7CisKKwkJaWYg KCFmZW5jZSkgeworCQkJZHJtX3N5bmNvYmpfdGltZWxpbmVfZmluaShzeW5jb2JqLAorCQkJCQkJ ICAmc3luY29iai0+c3luY29ial90aW1lbGluZSk7CisJCQlkcm1fc3luY29ial90aW1lbGluZV9p bml0KHN5bmNvYmosCisJCQkJCQkgICZzeW5jb2JqLT5zeW5jb2JqX3RpbWVsaW5lKTsKKwkJCXJl dHVybjsKIAkJfQorCQlwdF92YWx1ZSA9IHN5bmNvYmotPnN5bmNvYmpfdGltZWxpbmUuc2lnbmFs X3BvaW50ICsKKwkJCURSTV9TWU5DT0JKX05PUk1BTF9QT0lOVDsKKwkJZHJtX3N5bmNvYmpfdGlt ZWxpbmVfY3JlYXRlX3NpZ25hbF9wdChzeW5jb2JqLCBmZW5jZSwgcHRfdmFsdWUpOworCQlyZXR1 cm47CisJfSBlbHNlIHsKKwkJRFJNX0VSUk9SKCJ0aGUgc3luY29iaiB0eXBlIGlzbid0IHN1cHBv cnRcbiIpOwogCX0KLQotCXNwaW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsKLQotCWRtYV9mZW5j ZV9wdXQob2xkX2ZlbmNlKTsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfcmVwbGFjZV9m ZW5jZSk7CiAKQEAgLTIyMCw2ICszODgsMTIwIEBAIHN0YXRpYyBpbnQgZHJtX3N5bmNvYmpfYXNz aWduX251bGxfaGFuZGxlKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaikKIAlyZXR1cm4gMDsK IH0KIAorc3RhdGljIHN0cnVjdCBkcm1fc3luY29ial93YWl0X3B0ICoKK2RybV9zeW5jb2JqX3Rp bWVsaW5lX2xvb2t1cF93YWl0X3B0X2ZlbmNlKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwK KwkJCQkJICB1NjQgcG9pbnQsCisJCQkJCSAgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlKQorewor CXN0cnVjdCByYl9ub2RlICpub2RlID0gc3luY29iai0+c3luY29ial90aW1lbGluZS53YWl0X3B0 X3RyZWUucmJfbm9kZTsKKwlzdHJ1Y3QgZHJtX3N5bmNvYmpfd2FpdF9wdCAqd2FpdF9wdCA9IE5V TEw7CisKKwlzcGluX2xvY2soJnN5bmNvYmotPmxvY2spOworCXdoaWxlKG5vZGUpIHsKKwkJaW50 IHJlc3VsdDsKKworCQl3YWl0X3B0ID0gcmJfZW50cnkobm9kZSwgc3RydWN0IGRybV9zeW5jb2Jq X3dhaXRfcHQsIG5vZGUpOworCQlyZXN1bHQgPSBwb2ludCAtIHdhaXRfcHQtPnZhbHVlOworCQlp ZiAocmVzdWx0IDwgMCkgeworCQkJbm9kZSA9IG5vZGUtPnJiX2xlZnQ7CisJCX0gZWxzZSBpZiAo cmVzdWx0ID4gMCkgeworCQkJbm9kZSA9IG5vZGUtPnJiX3JpZ2h0OworCQl9IGVsc2UgeworCQkJ aWYgKGZlbmNlKQorCQkJCSpmZW5jZSA9IGRtYV9mZW5jZV9nZXQoJndhaXRfcHQtPmJhc2UuYmFz ZSk7CisJCQlicmVhazsKKwkJfQorCX0KKwlzcGluX3VubG9jaygmc3luY29iai0+bG9jayk7CisK KwlyZXR1cm4gd2FpdF9wdDsKK30KKworc3RhdGljIHN0cnVjdCBkcm1fc3luY29ial93YWl0X3B0 ICoKK2RybV9zeW5jb2JqX3RpbWVsaW5lX2NyZWF0ZV93YWl0X3B0X2FuZF9yZXR1cm5fZmVuY2Uo c3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLAorCQkJCQkJICAgICB1NjQgcG9pbnQsCisJCQkJ CQkgICAgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSkKK3sKKwlzdHJ1Y3QgZHJtX3N5bmNvYmpf d2FpdF9wdCAqd2FpdF9wdCA9IGt6YWxsb2Moc2l6ZW9mKCp3YWl0X3B0KSwKKwkJCQkJCSAgICAg IEdGUF9LRVJORUwpOworCXN0cnVjdCBkcm1fc3luY29ial9zdHViX2ZlbmNlICpiYXNlOworCXN0 cnVjdCByYl9ub2RlICoqbmV3ID0gJihzeW5jb2JqLT5zeW5jb2JqX3RpbWVsaW5lLndhaXRfcHRf dHJlZS5yYl9ub2RlKSwgKnBhcmVudCA9IE5VTEw7CisKKwlpZiAoIXdhaXRfcHQpCisJCXJldHVy biBOVUxMOworCWJhc2UgPSAmd2FpdF9wdC0+YmFzZTsKKwlzcGluX2xvY2tfaW5pdCgmYmFzZS0+ bG9jayk7CisJZG1hX2ZlbmNlX2luaXQoJmJhc2UtPmJhc2UsCisJCSAgICAgICAmZHJtX3N5bmNv Ympfc3R1Yl9mZW5jZV9vcHMsCisJCSAgICAgICAmYmFzZS0+bG9jaywKKwkJICAgICAgIHN5bmNv YmotPnN5bmNvYmpfdGltZWxpbmUudGltZWxpbmVfY29udGV4dCwgcG9pbnQpOworCXdhaXRfcHQt PnZhbHVlID0gcG9pbnQ7CisJd2FpdF9wdC0+c2lnbmFsX3B0X2ZlbmNlID0gTlVMTDsKKworCS8q IHdhaXQgcHQgbXVzdCBiZSBpbiBhbiBvcmRlciwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGxvb2t1 cCBhbmQgc2lnbmFsCisJICogaXQgKi8KKwlzcGluX2xvY2soJnN5bmNvYmotPmxvY2spOworCXdo aWxlKCpuZXcpIHsKKwkJc3RydWN0IGRybV9zeW5jb2JqX3dhaXRfcHQgKnRoaXMgPQorCQkJcmJf ZW50cnkoKm5ldywgc3RydWN0IGRybV9zeW5jb2JqX3dhaXRfcHQsIG5vZGUpOworCQlpbnQgcmVz dWx0ID0gd2FpdF9wdC0+dmFsdWUgLSB0aGlzLT52YWx1ZTsKKworCQlwYXJlbnQgPSAqbmV3Owor CQlpZiAocmVzdWx0IDwgMCkKKwkJCW5ldyA9ICYoKCpuZXcpLT5yYl9sZWZ0KTsKKwkJZWxzZSBp ZiAocmVzdWx0ID4gMCkKKwkJCW5ldyA9ICYoKCpuZXcpLT5yYl9yaWdodCk7CisJCWVsc2UKKwkJ CWdvdG8gZXhpc3Q7CisJfQorCWlmIChmZW5jZSkKKwkJKmZlbmNlID0gZG1hX2ZlbmNlX2dldCgm d2FpdF9wdC0+YmFzZS5iYXNlKTsKKwlyYl9saW5rX25vZGUoJndhaXRfcHQtPm5vZGUsIHBhcmVu dCwgbmV3KTsKKwlyYl9pbnNlcnRfY29sb3IoJndhaXRfcHQtPm5vZGUsICZzeW5jb2JqLT5zeW5j b2JqX3RpbWVsaW5lLndhaXRfcHRfdHJlZSk7CisJc3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2sp OworCXJldHVybiB3YWl0X3B0OworZXhpc3Q6CisJc3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2sp OworCWRtYV9mZW5jZV9wdXQoJndhaXRfcHQtPmJhc2UuYmFzZSk7CisJd2FpdF9wdCA9IGRybV9z eW5jb2JqX3RpbWVsaW5lX2xvb2t1cF93YWl0X3B0X2ZlbmNlKHN5bmNvYmosIHBvaW50LAorCQkJ CQkJCSAgICBmZW5jZSk7CisJcmV0dXJuIHdhaXRfcHQ7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZG1h X2ZlbmNlICoKK2RybV9zeW5jb2JqX3RpbWVsaW5lX3BvaW50X2dldChzdHJ1Y3QgZHJtX3N5bmNv YmogKnN5bmNvYmosIHU2NCBwb2ludCwgdTY0IGZsYWdzKQoreworCXN0cnVjdCBkcm1fc3luY29i al93YWl0X3B0ICp3YWl0X3B0OworCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlID0gTlVMTDsKKwor CS8qIGNoZWNrIGlmIHRoZSB3YWl0IHB0IGV4aXN0cyAqLworCXdhaXRfcHQgPSBkcm1fc3luY29i al90aW1lbGluZV9sb29rdXBfd2FpdF9wdF9mZW5jZShzeW5jb2JqLCBwb2ludCwKKwkJCQkJCQkg ICAgJmZlbmNlKTsKKwlpZiAoIWZlbmNlKSB7CisJCS8qIFRoaXMgaXMgYSBuZXcgd2FpdCBwdCwg c28gY3JlYXRlIGl0ICovCisJCXdhaXRfcHQgPSBkcm1fc3luY29ial90aW1lbGluZV9jcmVhdGVf d2FpdF9wdF9hbmRfcmV0dXJuX2ZlbmNlKHN5bmNvYmosIHBvaW50LAorCQkJCQkJCSAgICAgICZm ZW5jZSk7CisJCWlmICghZmVuY2UpCisJCQlyZXR1cm4gTlVMTDsKKwl9CisJaWYgKHdhaXRfcHQp IHsKKwkJaW50IHJldCA9IDA7CisKKwkJaWYgKGZsYWdzICYgRFJNX1NZTkNPQkpfV0FJVF9GTEFH U19XQUlUX0ZPUl9TVUJNSVQpIHsKKwkJCXJldCA9IHdhaXRfZXZlbnRfdGltZW91dChzeW5jb2Jq LT5zeW5jb2JqX3RpbWVsaW5lLndxLAorCQkJCQkJCSAgICAgICB3YWl0X3B0LT52YWx1ZSA8PSBz eW5jb2JqLT5zeW5jb2JqX3RpbWVsaW5lLnNpZ25hbF9wb2ludCwKKwkJCQkJCQkgICAgICAgbXNl Y3NfdG9famlmZmllcygxMDAwMCkpOyAvKiB3YWl0IDEwcyAqLworCQkJaWYgKHJldCA8PSAwKQor CQkJCXJldHVybiBOVUxMOworCQl9CisJCXNwaW5fbG9jaygmc3luY29iai0+bG9jayk7CisJCWRy bV9zeW5jb2JqX2ZpbmRfc2lnbmFsX3B0X2Zvcl93YWl0X3B0KHN5bmNvYmosIHdhaXRfcHQpOwor CQlzcGluX3VubG9jaygmc3luY29iai0+bG9jayk7CisJCXJldHVybiBmZW5jZTsKKwl9CisJcmV0 dXJuIE5VTEw7Cit9CisKIC8qKgogICogZHJtX3N5bmNvYmpfZmluZF9mZW5jZSAtIGxvb2t1cCBh bmQgcmVmZXJlbmNlIHRoZSBmZW5jZSBpbiBhIHN5bmMgb2JqZWN0CiAgKiBAZmlsZV9wcml2YXRl OiBkcm0gZmlsZSBwcml2YXRlIHBvaW50ZXIKQEAgLTIzNCwyMCArNTE2LDQ2IEBAIHN0YXRpYyBp bnQgZHJtX3N5bmNvYmpfYXNzaWduX251bGxfaGFuZGxlKHN0cnVjdCBkcm1fc3luY29iaiAqc3lu Y29iaikKICAqIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBmZW5jZSwgd2hpY2ggbXVzdCBi ZSByZWxlYXNlZCBieSBjYWxsaW5nCiAgKiBkbWFfZmVuY2VfcHV0KCkuCiAgKi8KLWludCBkcm1f c3luY29ial9maW5kX2ZlbmNlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLAotCQkJICAg dTMyIGhhbmRsZSwgdTY0IHBvaW50LAotCQkJICAgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlKQor aW50IGRybV9zeW5jb2JqX3NlYXJjaF9mZW5jZShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmos IHU2NCBwb2ludCwKKwkJCSAgICAgdTY0IGZsYWdzLCBzdHJ1Y3QgZG1hX2ZlbmNlICoqZmVuY2Up CiB7Ci0Jc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqID0gZHJtX3N5bmNvYmpfZmluZChmaWxl X3ByaXZhdGUsIGhhbmRsZSk7CiAJaW50IHJldCA9IDA7CiAKIAlpZiAoIXN5bmNvYmopCiAJCXJl dHVybiAtRU5PRU5UOwogCi0JKmZlbmNlID0gZHJtX3N5bmNvYmpfZmVuY2VfZ2V0KHN5bmNvYmop OworCWRybV9zeW5jb2JqX3RpbWVsaW5lX2dhcmJhZ2VfY29sbGVjdGlvbihzeW5jb2JqKTsKKwlp ZiAoc3luY29iai0+dHlwZSA9PSBEUk1fU1lOQ09CSl9UWVBFX05PUk1BTCkgeworCQkvKk5PUk1B TCBzeW5jb2JqIGFsd2F5cyB3YWl0IG9uIGxhc3QgcHQgKi8KKwkJdTY0IHRhaWxfcHRfdmFsdWUg PSBzeW5jb2JqLT5zeW5jb2JqX3RpbWVsaW5lLnNpZ25hbF9wb2ludDsKKworCQlpZiAodGFpbF9w dF92YWx1ZSA9PSAwKQorCQkJdGFpbF9wdF92YWx1ZSArPSBEUk1fU1lOQ09CSl9OT1JNQUxfUE9J TlQ7CisJCS8qIE5PUk1BTCBzeW5jb2JqIGRvZXNuJ3QgY2FyZSBwb2ludCB2YWx1ZSAqLworCQlX QVJOX09OKHBvaW50ICE9IDApOworCQkqZmVuY2UgPSBkcm1fc3luY29ial90aW1lbGluZV9wb2lu dF9nZXQoc3luY29iaiwgdGFpbF9wdF92YWx1ZSwKKwkJCQkJCQlmbGFncyk7CisJfSBlbHNlIGlm IChzeW5jb2JqLT50eXBlID09IERSTV9TWU5DT0JKX1RZUEVfVElNRUxJTkUpIHsKKwkJKmZlbmNl ID0gZHJtX3N5bmNvYmpfdGltZWxpbmVfcG9pbnRfZ2V0KHN5bmNvYmosIHBvaW50LAorCQkJCQkJ CWZsYWdzKTsKKwl9IGVsc2UgeworCQlEUk1fRVJST1IoIkRvbid0IHN1cHBvcnQgdGhpcyB0eXBl IHN5bmNvYmpcbiIpOworCQkqZmVuY2UgPSBOVUxMOworCX0KIAlpZiAoISpmZW5jZSkgewogCQly ZXQgPSAtRUlOVkFMOwogCX0KKwlyZXR1cm4gcmV0OworfQorRVhQT1JUX1NZTUJPTChkcm1fc3lu Y29ial9zZWFyY2hfZmVuY2UpOworaW50IGRybV9zeW5jb2JqX2ZpbmRfZmVuY2Uoc3RydWN0IGRy bV9maWxlICpmaWxlX3ByaXZhdGUsCisJCQkgICB1MzIgaGFuZGxlLCB1NjQgcG9pbnQsCisJCQkg ICBzdHJ1Y3QgZG1hX2ZlbmNlICoqZmVuY2UpIHsKKwlzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNv YmogPSBkcm1fc3luY29ial9maW5kKGZpbGVfcHJpdmF0ZSwgaGFuZGxlKTsKKworCWludCByZXQg PSBkcm1fc3luY29ial9zZWFyY2hfZmVuY2Uoc3luY29iaiwgcG9pbnQsCisJCQkJCURSTV9TWU5D T0JKX1dBSVRfRkxBR1NfV0FJVF9GT1JfU1VCTUlULAorCQkJCQlmZW5jZSk7CiAJZHJtX3N5bmNv YmpfcHV0KHN5bmNvYmopOwogCXJldHVybiByZXQ7CiB9CkBAIC0yNjQsNyArNTcyLDcgQEAgdm9p ZCBkcm1fc3luY29ial9mcmVlKHN0cnVjdCBrcmVmICprcmVmKQogCXN0cnVjdCBkcm1fc3luY29i aiAqc3luY29iaiA9IGNvbnRhaW5lcl9vZihrcmVmLAogCQkJCQkJICAgc3RydWN0IGRybV9zeW5j b2JqLAogCQkJCQkJICAgcmVmY291bnQpOwotCWRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2Uoc3lu Y29iaiwgMCwgTlVMTCk7CisJZHJtX3N5bmNvYmpfdGltZWxpbmVfZmluaShzeW5jb2JqLCAmc3lu Y29iai0+c3luY29ial90aW1lbGluZSk7CiAJa2ZyZWUoc3luY29iaik7CiB9CiBFWFBPUlRfU1lN Qk9MKGRybV9zeW5jb2JqX2ZyZWUpOwpAQCAtMjkyLDggKzYwMCwxMiBAQCBpbnQgZHJtX3N5bmNv YmpfY3JlYXRlKHN0cnVjdCBkcm1fc3luY29iaiAqKm91dF9zeW5jb2JqLCB1aW50MzJfdCBmbGFn cywKIAkJcmV0dXJuIC1FTk9NRU07CiAKIAlrcmVmX2luaXQoJnN5bmNvYmotPnJlZmNvdW50KTsK LQlJTklUX0xJU1RfSEVBRCgmc3luY29iai0+Y2JfbGlzdCk7CiAJc3Bpbl9sb2NrX2luaXQoJnN5 bmNvYmotPmxvY2spOworCWlmIChmbGFncyAmIERSTV9TWU5DT0JKX0NSRUFURV9UWVBFX1RJTUVM SU5FKQorCQlzeW5jb2JqLT50eXBlID0gRFJNX1NZTkNPQkpfVFlQRV9USU1FTElORTsKKwllbHNl CisJCXN5bmNvYmotPnR5cGUgPSBEUk1fU1lOQ09CSl9UWVBFX05PUk1BTDsKKwlkcm1fc3luY29i al90aW1lbGluZV9pbml0KHN5bmNvYmosICZzeW5jb2JqLT5zeW5jb2JqX3RpbWVsaW5lKTsKIAog CWlmIChmbGFncyAmIERSTV9TWU5DT0JKX0NSRUFURV9TSUdOQUxFRCkgewogCQlyZXQgPSBkcm1f c3luY29ial9hc3NpZ25fbnVsbF9oYW5kbGUoc3luY29iaik7CkBAIC01NzYsNyArODg4LDggQEAg ZHJtX3N5bmNvYmpfY3JlYXRlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRh dGEsCiAJCXJldHVybiAtRU5PREVWOwogCiAJLyogbm8gdmFsaWQgZmxhZ3MgeWV0ICovCi0JaWYg KGFyZ3MtPmZsYWdzICYgfkRSTV9TWU5DT0JKX0NSRUFURV9TSUdOQUxFRCkKKwlpZiAoYXJncy0+ ZmxhZ3MgJiB+KERSTV9TWU5DT0JKX0NSRUFURV9TSUdOQUxFRCB8CisJCQkgICAgRFJNX1NZTkNP QkpfQ1JFQVRFX1RZUEVfVElNRUxJTkUpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAogCXJldHVybiBk cm1fc3luY29ial9jcmVhdGVfYXNfaGFuZGxlKGZpbGVfcHJpdmF0ZSwKQEAgLTY1MSw3ICs5NjQs NiBAQCBzdHJ1Y3Qgc3luY29ial93YWl0X2VudHJ5IHsKIAlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRh c2s7CiAJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7CiAJc3RydWN0IGRtYV9mZW5jZV9jYiBmZW5j ZV9jYjsKLQlzdHJ1Y3QgZHJtX3N5bmNvYmpfY2Igc3luY29ial9jYjsKIH07CiAKIHN0YXRpYyB2 b2lkIHN5bmNvYmpfd2FpdF9mZW5jZV9mdW5jKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlLApAQCAt NjYzLDE4ICs5NzUsNiBAQCBzdGF0aWMgdm9pZCBzeW5jb2JqX3dhaXRfZmVuY2VfZnVuYyhzdHJ1 Y3QgZG1hX2ZlbmNlICpmZW5jZSwKIAl3YWtlX3VwX3Byb2Nlc3Mod2FpdC0+dGFzayk7CiB9CiAK LXN0YXRpYyB2b2lkIHN5bmNvYmpfd2FpdF9zeW5jb2JqX2Z1bmMoc3RydWN0IGRybV9zeW5jb2Jq ICpzeW5jb2JqLAotCQkJCSAgICAgIHN0cnVjdCBkcm1fc3luY29ial9jYiAqY2IpCi17Ci0Jc3Ry dWN0IHN5bmNvYmpfd2FpdF9lbnRyeSAqd2FpdCA9Ci0JCWNvbnRhaW5lcl9vZihjYiwgc3RydWN0 IHN5bmNvYmpfd2FpdF9lbnRyeSwgc3luY29ial9jYik7Ci0KLQkvKiBUaGlzIGhhcHBlbnMgaW5z aWRlIHRoZSBzeW5jb2JqIGxvY2sgKi8KLQl3YWl0LT5mZW5jZSA9IGRtYV9mZW5jZV9nZXQocmN1 X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChzeW5jb2JqLT5mZW5jZSwKLQkJCQkJCQkgICAgICBsb2Nr ZGVwX2lzX2hlbGQoJnN5bmNvYmotPmxvY2spKSk7Ci0Jd2FrZV91cF9wcm9jZXNzKHdhaXQtPnRh c2spOwotfQotCiBzdGF0aWMgc2lnbmVkIGxvbmcgZHJtX3N5bmNvYmpfYXJyYXlfd2FpdF90aW1l b3V0KHN0cnVjdCBkcm1fc3luY29iaiAqKnN5bmNvYmpzLAogCQkJCQkJICB1aW50MzJfdCBjb3Vu dCwKIAkJCQkJCSAgdWludDMyX3QgZmxhZ3MsCkBAIC02OTgsMTQgKzk5OCwxMSBAQCBzdGF0aWMg c2lnbmVkIGxvbmcgZHJtX3N5bmNvYmpfYXJyYXlfd2FpdF90aW1lb3V0KHN0cnVjdCBkcm1fc3lu Y29iaiAqKnN5bmNvYmpzLAogCXNpZ25hbGVkX2NvdW50ID0gMDsKIAlmb3IgKGkgPSAwOyBpIDwg Y291bnQ7ICsraSkgewogCQllbnRyaWVzW2ldLnRhc2sgPSBjdXJyZW50OwotCQllbnRyaWVzW2ld LmZlbmNlID0gZHJtX3N5bmNvYmpfZmVuY2VfZ2V0KHN5bmNvYmpzW2ldKTsKKwkJcmV0ID0gZHJt X3N5bmNvYmpfc2VhcmNoX2ZlbmNlKHN5bmNvYmpzW2ldLCAwLCAwLAorCQkJCQkgICAgICAgJmVu dHJpZXNbaV0uZmVuY2UpOwogCQlpZiAoIWVudHJpZXNbaV0uZmVuY2UpIHsKLQkJCWlmIChmbGFn cyAmIERSTV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJVF9GT1JfU1VCTUlUKSB7Ci0JCQkJY29udGlu dWU7Ci0JCQl9IGVsc2UgewotCQkJCXJldCA9IC1FSU5WQUw7Ci0JCQkJZ290byBjbGVhbnVwX2Vu dHJpZXM7Ci0JCQl9CisJCQlyZXQgPSAtRUlOVkFMOworCQkJZ290byBjbGVhbnVwX2VudHJpZXM7 CiAJCX0KIAogCQlpZiAoZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKGVudHJpZXNbaV0uZmVuY2UpKSB7 CkBAIC03MzMsMTUgKzEwMzAsNiBAQCBzdGF0aWMgc2lnbmVkIGxvbmcgZHJtX3N5bmNvYmpfYXJy YXlfd2FpdF90aW1lb3V0KHN0cnVjdCBkcm1fc3luY29iaiAqKnN5bmNvYmpzLAogCSAqIGZhbGx0 aG91Z2ggYW5kIHRyeSBhIDAgdGltZW91dCB3YWl0IQogCSAqLwogCi0JaWYgKGZsYWdzICYgRFJN X1NZTkNPQkpfV0FJVF9GTEFHU19XQUlUX0ZPUl9TVUJNSVQpIHsKLQkJZm9yIChpID0gMDsgaSA8 IGNvdW50OyArK2kpIHsKLQkJCWRybV9zeW5jb2JqX2ZlbmNlX2dldF9vcl9hZGRfY2FsbGJhY2so c3luY29ianNbaV0sCi0JCQkJCQkJICAgICAgJmVudHJpZXNbaV0uZmVuY2UsCi0JCQkJCQkJICAg ICAgJmVudHJpZXNbaV0uc3luY29ial9jYiwKLQkJCQkJCQkgICAgICBzeW5jb2JqX3dhaXRfc3lu Y29ial9mdW5jKTsKLQkJfQotCX0KLQogCWRvIHsKIAkJc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19J TlRFUlJVUFRJQkxFKTsKIApAQCAtNzg5LDEzICsxMDc3LDEwIEBAIHN0YXRpYyBzaWduZWQgbG9u ZyBkcm1fc3luY29ial9hcnJheV93YWl0X3RpbWVvdXQoc3RydWN0IGRybV9zeW5jb2JqICoqc3lu Y29ianMsCiAKIGNsZWFudXBfZW50cmllczoKIAlmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkg ewotCQlpZiAoZW50cmllc1tpXS5zeW5jb2JqX2NiLmZ1bmMpCi0JCQlkcm1fc3luY29ial9yZW1v dmVfY2FsbGJhY2soc3luY29ianNbaV0sCi0JCQkJCQkgICAgJmVudHJpZXNbaV0uc3luY29ial9j Yik7CisJCWRtYV9mZW5jZV9wdXQoZW50cmllc1tpXS5mZW5jZSk7CiAJCWlmIChlbnRyaWVzW2ld LmZlbmNlX2NiLmZ1bmMpCiAJCQlkbWFfZmVuY2VfcmVtb3ZlX2NhbGxiYWNrKGVudHJpZXNbaV0u ZmVuY2UsCiAJCQkJCQkgICZlbnRyaWVzW2ldLmZlbmNlX2NiKTsKLQkJZG1hX2ZlbmNlX3B1dChl bnRyaWVzW2ldLmZlbmNlKTsKIAl9CiAJa2ZyZWUoZW50cmllcyk7CiAKQEAgLTk3MCwxMiArMTI1 NSwyMSBAQCBkcm1fc3luY29ial9yZXNldF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2 b2lkICpkYXRhLAogCWlmIChyZXQgPCAwKQogCQlyZXR1cm4gcmV0OwogCi0JZm9yIChpID0gMDsg aSA8IGFyZ3MtPmNvdW50X2hhbmRsZXM7IGkrKykKLQkJZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5j ZShzeW5jb2Jqc1tpXSwgMCwgTlVMTCk7Ci0KKwlmb3IgKGkgPSAwOyBpIDwgYXJncy0+Y291bnRf aGFuZGxlczsgaSsrKSB7CisJCWlmIChzeW5jb2Jqc1tpXS0+dHlwZSA9PSBEUk1fU1lOQ09CSl9U WVBFX1RJTUVMSU5FKSB7CisJCQlEUk1fRVJST1IoInRpbWVsaW5lIHN5bmNvYmogY2Fubm90IHJl c2V0IVxuIik7CisJCQlyZXQgPSAtRUlOVkFMOworCQkJZ290byBvdXQ7CisJCX0KKwkJZHJtX3N5 bmNvYmpfdGltZWxpbmVfZmluaShzeW5jb2Jqc1tpXSwKKwkJCQkJICAmc3luY29ianNbaV0tPnN5 bmNvYmpfdGltZWxpbmUpOworCQlkcm1fc3luY29ial90aW1lbGluZV9pbml0KHN5bmNvYmpzW2ld LAorCQkJCQkgICZzeW5jb2Jqc1tpXS0+c3luY29ial90aW1lbGluZSk7CisJfQorb3V0OgogCWRy bV9zeW5jb2JqX2FycmF5X2ZyZWUoc3luY29ianMsIGFyZ3MtPmNvdW50X2hhbmRsZXMpOwogCi0J cmV0dXJuIDA7CisJcmV0dXJuIHJldDsKIH0KIAogaW50CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9leGVjYnVmZmVyLmMKaW5kZXggMGE4ZDJkNjRmMzgwLi41NzllOTFhNTg1OGIgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKQEAgLTIxMzcsNyAr MjEzNyw5IEBAIGF3YWl0X2ZlbmNlX2FycmF5KHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViLAog CQlpZiAoIShmbGFncyAmIEk5MTVfRVhFQ19GRU5DRV9XQUlUKSkKIAkJCWNvbnRpbnVlOwogCi0J CWZlbmNlID0gZHJtX3N5bmNvYmpfZmVuY2VfZ2V0KHN5bmNvYmopOworCQlkcm1fc3luY29ial9z ZWFyY2hfZmVuY2Uoc3luY29iaiwgMCwKKwkJCQkJIERSTV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJ VF9GT1JfU1VCTUlULAorCQkJCQkgJmZlbmNlKTsKIAkJaWYgKCFmZW5jZSkKIAkJCXJldHVybiAt RUlOVkFMOwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fc3luY29iai5oIGIvaW5jbHVk ZS9kcm0vZHJtX3N5bmNvYmouaAppbmRleCA0MjU0MzJiODVhODcuLjY1N2M5N2RjMjVlYyAxMDA2 NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX3N5bmNvYmouaAorKysgYi9pbmNsdWRlL2RybS9kcm1f c3luY29iai5oCkBAIC0zMCw2ICszMCwyNSBAQAogCiBzdHJ1Y3QgZHJtX3N5bmNvYmpfY2I7CiAK K2VudW0gZHJtX3N5bmNvYmpfdHlwZSB7CisJRFJNX1NZTkNPQkpfVFlQRV9OT1JNQUwsCisJRFJN X1NZTkNPQkpfVFlQRV9USU1FTElORQorfTsKKworc3RydWN0IGRybV9zeW5jb2JqX3RpbWVsaW5l IHsKKwl3YWl0X3F1ZXVlX2hlYWRfdAl3cTsKKwl1NjQgdGltZWxpbmVfY29udGV4dDsKKwkvKioK KwkgKiBAdGltZWxpbmU6IHN5bmNvYmogdGltZWxpbmUKKwkgKi8KKwl1NjQgdGltZWxpbmU7CisJ dTY0IHNpZ25hbF9wb2ludDsKKworCisJc3RydWN0IHJiX3Jvb3Qgd2FpdF9wdF90cmVlOworCXN0 cnVjdCBsaXN0X2hlYWQgc2lnbmFsX3B0X2xpc3Q7Cit9OworCiAvKioKICAqIHN0cnVjdCBkcm1f c3luY29iaiAtIHN5bmMgb2JqZWN0LgogICoKQEAgLTQxLDE5ICs2MCwxNiBAQCBzdHJ1Y3QgZHJt X3N5bmNvYmogewogCSAqLwogCXN0cnVjdCBrcmVmIHJlZmNvdW50OwogCS8qKgotCSAqIEBmZW5j ZToKLQkgKiBOVUxMIG9yIGEgcG9pbnRlciB0byB0aGUgZmVuY2UgYm91bmQgdG8gdGhpcyBvYmpl Y3QuCi0JICoKLQkgKiBUaGlzIGZpZWxkIHNob3VsZCBub3QgYmUgdXNlZCBkaXJlY3RseS4gVXNl IGRybV9zeW5jb2JqX2ZlbmNlX2dldCgpCi0JICogYW5kIGRybV9zeW5jb2JqX3JlcGxhY2VfZmVu Y2UoKSBpbnN0ZWFkLgorCSAqIEB0eXBlOiBpbmRpY2F0ZSBzeW5jb2JqIHR5cGUKIAkgKi8KLQlz dHJ1Y3QgZG1hX2ZlbmNlIF9fcmN1ICpmZW5jZTsKKwllbnVtIGRybV9zeW5jb2JqX3R5cGUgdHlw ZTsKIAkvKioKLQkgKiBAY2JfbGlzdDogTGlzdCBvZiBjYWxsYmFja3MgdG8gY2FsbCB3aGVuIHRo ZSAmZmVuY2UgZ2V0cyByZXBsYWNlZC4KKwkgKiBAc3luY29ial90aW1lbGluZTogdGltZWxpbmUK IAkgKi8KLQlzdHJ1Y3QgbGlzdF9oZWFkIGNiX2xpc3Q7CisJc3RydWN0IGRybV9zeW5jb2JqX3Rp bWVsaW5lIHN5bmNvYmpfdGltZWxpbmU7CisKIAkvKioKLQkgKiBAbG9jazogUHJvdGVjdHMgJmNi X2xpc3QgYW5kIHdyaXRlLWxvY2tzICZmZW5jZS4KKwkgKiBAbG9jazogUHJvdGVjdHMgdGltZWxp bmUgbGlzdCBhbmQgd3JpdGUtbG9ja3MgJmZlbmNlLgogCSAqLwogCXNwaW5sb2NrX3QgbG9jazsK IAkvKioKQEAgLTYyLDI1ICs3OCw2IEBAIHN0cnVjdCBkcm1fc3luY29iaiB7CiAJc3RydWN0IGZp bGUgKmZpbGU7CiB9OwogCi10eXBlZGVmIHZvaWQgKCpkcm1fc3luY29ial9mdW5jX3QpKHN0cnVj dCBkcm1fc3luY29iaiAqc3luY29iaiwKLQkJCQkgICBzdHJ1Y3QgZHJtX3N5bmNvYmpfY2IgKmNi KTsKLQotLyoqCi0gKiBzdHJ1Y3QgZHJtX3N5bmNvYmpfY2IgLSBjYWxsYmFjayBmb3IgZHJtX3N5 bmNvYmpfYWRkX2NhbGxiYWNrCi0gKiBAbm9kZTogdXNlZCBieSBkcm1fc3luY29iX2FkZF9jYWxs YmFjayB0byBhcHBlbmQgdGhpcyBzdHJ1Y3QgdG8KLSAqCSAgJmRybV9zeW5jb2JqLmNiX2xpc3QK LSAqIEBmdW5jOiBkcm1fc3luY29ial9mdW5jX3QgdG8gY2FsbAotICoKLSAqIFRoaXMgc3RydWN0 IHdpbGwgYmUgaW5pdGlhbGl6ZWQgYnkgZHJtX3N5bmNvYmpfYWRkX2NhbGxiYWNrLCBhZGRpdGlv bmFsCi0gKiBkYXRhIGNhbiBiZSBwYXNzZWQgYWxvbmcgYnkgZW1iZWRkaW5nIGRybV9zeW5jb2Jq X2NiIGluIGFub3RoZXIgc3RydWN0LgotICogVGhlIGNhbGxiYWNrIHdpbGwgZ2V0IGNhbGxlZCB0 aGUgbmV4dCB0aW1lIGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2UgaXMKLSAqIGNhbGxlZC4KLSAq Lwotc3RydWN0IGRybV9zeW5jb2JqX2NiIHsKLQlzdHJ1Y3QgbGlzdF9oZWFkIG5vZGU7Ci0JZHJt X3N5bmNvYmpfZnVuY190IGZ1bmM7Ci19OwotCiB2b2lkIGRybV9zeW5jb2JqX2ZyZWUoc3RydWN0 IGtyZWYgKmtyZWYpOwogCiAvKioKQEAgLTEwNiwyOSArMTAzLDYgQEAgZHJtX3N5bmNvYmpfcHV0 KHN0cnVjdCBkcm1fc3luY29iaiAqb2JqKQogCWtyZWZfcHV0KCZvYmotPnJlZmNvdW50LCBkcm1f c3luY29ial9mcmVlKTsKIH0KIAotLyoqCi0gKiBkcm1fc3luY29ial9mZW5jZV9nZXQgLSBnZXQg YSByZWZlcmVuY2UgdG8gYSBmZW5jZSBpbiBhIHN5bmMgb2JqZWN0Ci0gKiBAc3luY29iajogc3lu YyBvYmplY3QuCi0gKgotICogVGhpcyBhY3F1aXJlcyBhZGRpdGlvbmFsIHJlZmVyZW5jZSB0byAm ZHJtX3N5bmNvYmouZmVuY2UgY29udGFpbmVkIGluIEBvYmosCi0gKiBpZiBub3QgTlVMTC4gSXQg aXMgaWxsZWdhbCB0byBjYWxsIHRoaXMgd2l0aG91dCBhbHJlYWR5IGhvbGRpbmcgYSByZWZlcmVu Y2UuCi0gKiBObyBsb2NrcyByZXF1aXJlZC4KLSAqCi0gKiBSZXR1cm5zOgotICogRWl0aGVyIHRo ZSBmZW5jZSBvZiBAb2JqIG9yIE5VTEwgaWYgdGhlcmUncyBub25lLgotICovCi1zdGF0aWMgaW5s aW5lIHN0cnVjdCBkbWFfZmVuY2UgKgotZHJtX3N5bmNvYmpfZmVuY2VfZ2V0KHN0cnVjdCBkcm1f c3luY29iaiAqc3luY29iaikKLXsKLQlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKLQotCXJjdV9y ZWFkX2xvY2soKTsKLQlmZW5jZSA9IGRtYV9mZW5jZV9nZXRfcmN1X3NhZmUoJnN5bmNvYmotPmZl bmNlKTsKLQlyY3VfcmVhZF91bmxvY2soKTsKLQotCXJldHVybiBmZW5jZTsKLX0KLQogc3RydWN0 IGRybV9zeW5jb2JqICpkcm1fc3luY29ial9maW5kKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2 YXRlLAogCQkJCSAgICAgdTMyIGhhbmRsZSk7CiB2b2lkIGRybV9zeW5jb2JqX3JlcGxhY2VfZmVu Y2Uoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqLCB1NjQgcG9pbnQsCkBAIC0xNDIsNSArMTE2 LDcgQEAgaW50IGRybV9zeW5jb2JqX2NyZWF0ZShzdHJ1Y3QgZHJtX3N5bmNvYmogKipvdXRfc3lu Y29iaiwgdWludDMyX3QgZmxhZ3MsCiBpbnQgZHJtX3N5bmNvYmpfZ2V0X2hhbmRsZShzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSwKIAkJCSAgIHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29i aiwgdTMyICpoYW5kbGUpOwogaW50IGRybV9zeW5jb2JqX2dldF9mZChzdHJ1Y3QgZHJtX3N5bmNv YmogKnN5bmNvYmosIGludCAqcF9mZCk7CitpbnQgZHJtX3N5bmNvYmpfc2VhcmNoX2ZlbmNlKHN0 cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwgdTY0IHBvaW50LAorCQkJICAgICB1NjQgZmxhZ3Ms IHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVk ZS91YXBpL2RybS9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgKaW5kZXggMzAwZjMzNjYz M2YyLi5jZWJkYjI1NDFlYjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgKKysr IGIvaW5jbHVkZS91YXBpL2RybS9kcm0uaApAQCAtNzE3LDYgKzcxNyw3IEBAIHN0cnVjdCBkcm1f cHJpbWVfaGFuZGxlIHsKIHN0cnVjdCBkcm1fc3luY29ial9jcmVhdGUgewogCV9fdTMyIGhhbmRs ZTsKICNkZWZpbmUgRFJNX1NZTkNPQkpfQ1JFQVRFX1NJR05BTEVEICgxIDw8IDApCisjZGVmaW5l IERSTV9TWU5DT0JKX0NSRUFURV9UWVBFX1RJTUVMSU5FICgxIDw8IDEpCiAJX191MzIgZmxhZ3M7 CiB9OwogCi0tIAoyLjE3LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbAo=