From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3627B6E471 for ; Mon, 22 Mar 2021 12:38:24 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Mon, 22 Mar 2021 13:37:31 +0100 Message-Id: <20210322123750.94772-18-zbigniew.kempczynski@intel.com> In-Reply-To: <20210322123750.94772-1-zbigniew.kempczynski@intel.com> References: <20210322123750.94772-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v28 17/36] lib/intel_batchbuffer: Add tracking intel_buf to intel_bb List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org List-ID: RnJvbSBub3cgb24gaW50ZWxfYmIgc3RhcnRzIHRyYWNraW5nIGFkZGVkL3JlbW92ZWQgaW50ZWxf YnVmcy4KV2UncmUgc2FmZSBub3cgcmVnYXJkbGVzcyBvcmRlciBvZiBpbnRlbF9idWYgY2xvc2Uv ZGVzdHJveQpvciBpbnRlbF9iYiBkZXN0cm95IHBhdGhzLgoKV2hlbiBpbnRlbF9idWYgaXMgY2xv c2VkL2Rlc3Ryb3llZCBmaXJzdCBhbmQgaXQgd2FzIHByZXZpb3VzbHkgYWRkZWQKdG8gaW50ZWxf YmIgaXQgY2FsbHMgdGhlIGNvZGUgd2hpY2ggcmVtb3ZlcyBpdHNlbGYgZnJvbSBpbnRlbF9iYi4K SW4gZGVzdHJveSBwYXRoIHdlIGdvIG92ZXIgYWxsIHRyYWNrZWQgaW50ZWxfYnVmcyBhbmQgY2xl YXIgdHJhY2tpbmcKaW5mb3JtYXRpb24gYW5kIGJ1ZmZlciBvZmZzZXQgKGl0IGlzIHNldCB0byBJ TlRFTF9CVUZfSU5WQUxJRF9BRERSRVNTKS4KClJlc2V0IHBhdGggaXMgaGFuZGxlZCBhcyBmb2xs b3dzOgotIGludGVsX2JiX3Jlc2V0KGliYiwgZmFsc2UpIC0ganVzdCBjbGVhbiBvYmplY3RzIGFy cmF5IGxlYXZpbmcKICBjYWNoZSAvIGFsbG9jYXRvciBzdGF0ZSBpbnRhY3QuCi0gaW50ZWxfYmJf cmVzZXQoaWJiLCB0cnVlKSAtIHB1cmdlIGNhY2hlIGFzIHdlbGwgYXMgZGV0YWNoIGludGVsX2J1 ZnMKICBmcm9tIGludGVsX2JiIChyZWxlYXNlIG9mZnNldHMgZnJvbSBhbGxvY2F0b3IpLgoKUmVt b3ZlIGludGVsX2JiX29iamVjdF9vZmZzZXRfdG9fYnVmKCkgZnVuY3Rpb24gYXMgdHJhY2tpbmcg aW50ZWxfYnVmCnVwZGF0ZXMgKGNoZWNrcyBmb3IgYWxsb2NhdG9yKSB0aGVpciBvZmZzZXRzIGFm dGVyIGV4ZWNidWYuCgpBbHRlciBhcGlfaW50ZWxfYmIgYWNjb3JkaW5nIHRvIGludGVsLWJiIGNo YW5nZXMuCgpTaWduZWQtb2ZmLWJ5OiBaYmlnbmlldyBLZW1wY3p5xYRza2kgPHpiaWduaWV3Lmtl bXBjenluc2tpQGludGVsLmNvbT4KQ2M6IERvbWluaWsgR3J6ZWdvcnplayA8ZG9taW5pay5ncnpl Z29yemVrQGludGVsLmNvbT4KQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNv LnVrPgpBY2tlZC1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KLS0t CiBsaWIvaW50ZWxfYmF0Y2hidWZmZXIuYyAgIHwgMTg2ICsrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tCiBsaWIvaW50ZWxfYmF0Y2hidWZmZXIuaCAgIHwgIDI5ICsrKy0tLQog bGliL2ludGVsX2J1Zm9wcy5jICAgICAgICB8ICAxMyArKy0KIGxpYi9pbnRlbF9idWZvcHMuaCAg ICAgICAgfCAgIDYgKysKIGxpYi9tZWRpYV9zcGluLmMgICAgICAgICAgfCAgIDIgLQogdGVzdHMv aTkxNS9hcGlfaW50ZWxfYmIuYyB8ICAgNyAtLQogNiBmaWxlcyBjaGFuZ2VkLCAxNjkgaW5zZXJ0 aW9ucygrKSwgNzQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL2ludGVsX2JhdGNoYnVm ZmVyLmMgYi9saWIvaW50ZWxfYmF0Y2hidWZmZXIuYwppbmRleCAwNDVmM2YxNTcuLjFiMjM0YjE0 ZCAxMDA2NDQKLS0tIGEvbGliL2ludGVsX2JhdGNoYnVmZmVyLmMKKysrIGIvbGliL2ludGVsX2Jh dGNoYnVmZmVyLmMKQEAgLTEyNjEsNiArMTI2MSw4IEBAIHN0YXRpYyBpbmxpbmUgdWludDY0X3Qg X19pbnRlbF9iYl9nZXRfb2Zmc2V0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLAogICogSWYgd2UgZG8g cmVzZXQgd2l0aG91dCBwdXJnaW5nIGNhY2hlcyB3ZSB1c2UgYWRkcmVzc2VzIGZyb20gaW50ZWwt YmIgY2FjaGUKICAqIGR1cmluZyBleGVjYnVmIG9iamVjdHMgY29uc3RydWN0aW9uLgogICoKKyAq IElmIHdlIGRvIHJlc2V0IHdpdGggcHVyZ2luZyBjYWNoZXMgYWxsb2NhdG9yIGVudHJpZXMgYXJl IGZyZWVkIGFzIHdlbGwuCisgKgogICogUmV0dXJuczoKICAqCiAgKiBQb2ludGVyIHRoZSBpbnRl bF9iYiwgYXNzZXJ0cyBvbiBmYWlsdXJlLgpAQCAtMTMwMyw2ICsxMzA1LDcgQEAgX19pbnRlbF9i Yl9jcmVhdGUoaW50IGk5MTUsIHVpbnQzMl90IGN0eCwgdWludDMyX3Qgc2l6ZSwgYm9vbCBkb19y ZWxvY3MsCiAJaWJiLT5zaXplID0gc2l6ZTsKIAlpYmItPmFsaWdubWVudCA9IDQwOTY7CiAJaWJi LT5jdHggPSBjdHg7CisJaWJiLT52bV9pZCA9IDA7CiAJaWJiLT5iYXRjaCA9IGNhbGxvYygxLCBz aXplKTsKIAlpZ3RfYXNzZXJ0KGliYi0+YmF0Y2gpOwogCWliYi0+cHRyID0gaWJiLT5iYXRjaDsK QEAgLTEzMTcsNiArMTMyMCw4IEBAIF9faW50ZWxfYmJfY3JlYXRlKGludCBpOTE1LCB1aW50MzJf dCBjdHgsIHVpbnQzMl90IHNpemUsIGJvb2wgZG9fcmVsb2NzLAogCQkJCSAgICAgZmFsc2UpOwog CWliYi0+YmF0Y2hfb2Zmc2V0ID0gb2JqZWN0LT5vZmZzZXQ7CiAKKwlJR1RfSU5JVF9MSVNUX0hF QUQoJmliYi0+aW50ZWxfYnVmcyk7CisKIAlpYmItPnJlZmNvdW50ID0gMTsKIAogCXJldHVybiBp YmI7CkBAIC0xNTA4LDYgKzE1MTMsMjIgQEAgc3RhdGljIHZvaWQgX19pbnRlbF9iYl9kZXN0cm95 X2NhY2hlKHN0cnVjdCBpbnRlbF9iYiAqaWJiKQogCWliYi0+cm9vdCA9IE5VTEw7CiB9CiAKK3N0 YXRpYyB2b2lkIF9faW50ZWxfYmJfZGV0YWNoX2ludGVsX2J1ZnMoc3RydWN0IGludGVsX2JiICpp YmIpCit7CisJc3RydWN0IGludGVsX2J1ZiAqZW50cnksICp0bXA7CisKKwlpZ3RfbGlzdF9mb3Jf ZWFjaF9lbnRyeV9zYWZlKGVudHJ5LCB0bXAsICZpYmItPmludGVsX2J1ZnMsIGxpbmspCisJCWlu dGVsX2JiX2RldGFjaF9pbnRlbF9idWYoaWJiLCBlbnRyeSk7Cit9CisKK3N0YXRpYyB2b2lkIF9f aW50ZWxfYmJfcmVtb3ZlX2ludGVsX2J1ZnMoc3RydWN0IGludGVsX2JiICppYmIpCit7CisJc3Ry dWN0IGludGVsX2J1ZiAqZW50cnksICp0bXA7CisKKwlpZ3RfbGlzdF9mb3JfZWFjaF9lbnRyeV9z YWZlKGVudHJ5LCB0bXAsICZpYmItPmludGVsX2J1ZnMsIGxpbmspCisJCWludGVsX2JiX3JlbW92 ZV9pbnRlbF9idWYoaWJiLCBlbnRyeSk7Cit9CisKIC8qKgogICogaW50ZWxfYmJfZGVzdHJveToK ICAqIEBpYmI6IHBvaW50ZXIgdG8gaW50ZWxfYmIKQEAgLTE1MjEsNiArMTU0Miw3IEBAIHZvaWQg aW50ZWxfYmJfZGVzdHJveShzdHJ1Y3QgaW50ZWxfYmIgKmliYikKIAlpYmItPnJlZmNvdW50LS07 CiAJaWd0X2Fzc2VydF9mKGliYi0+cmVmY291bnQgPT0gMCwgIlRyeWluZyB0byBkZXN0cm95IHJl ZmVyZW5jZWQgYmIhIik7CiAKKwlfX2ludGVsX2JiX3JlbW92ZV9pbnRlbF9idWZzKGliYik7CiAJ X19pbnRlbF9iYl9kZXN0cm95X3JlbG9jYXRpb25zKGliYik7CiAJX19pbnRlbF9iYl9kZXN0cm95 X29iamVjdHMoaWJiKTsKIAlfX2ludGVsX2JiX2Rlc3Ryb3lfY2FjaGUoaWJiKTsKQEAgLTE1NDQs NiArMTU2NiwxMCBAQCB2b2lkIGludGVsX2JiX2Rlc3Ryb3koc3RydWN0IGludGVsX2JiICppYmIp CiAgKiBAcHVyZ2Vfb2JqZWN0c19jYWNoZTogaWYgdHJ1ZSBkZXN0cm95IGludGVybmFsIGV4ZWNv YmogYW5kIHJlbG9jcyArIGNhY2hlCiAgKgogICogUmVjcmVhdGUgYmF0Y2ggYm8gd2hlbiB0aGVy ZSdzIG5vIGFkZGl0aW9uYWwgcmVmZXJlbmNlLgorICoKKyAqIFdoZW4gcHVyZ2Vfb2JqZWN0X2Nh Y2hlID09IHRydWUgd2UgZGVzdHJveSBjYWNoZSBhcyB3ZWxsIGFzIHJlbW92ZSBpbnRlbF9idWYK KyAqIGZyb20gaW50ZWwtYmIgdHJhY2tpbmcgbGlzdC4gUmVtb3ZpbmcgaW50ZWxfYnVmcyByZWxl YXNlcyB0aGVpciBhZGRyZXNzZXMKKyAqIGluIHRoZSBhbGxvY2F0b3IuCiAqLwogCiB2b2lkIGlu dGVsX2JiX3Jlc2V0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCBib29sIHB1cmdlX29iamVjdHNfY2Fj aGUpCkBAIC0xNTY5LDggKzE1OTUsMTAgQEAgdm9pZCBpbnRlbF9iYl9yZXNldChzdHJ1Y3QgaW50 ZWxfYmIgKmliYiwgYm9vbCBwdXJnZV9vYmplY3RzX2NhY2hlKQogCV9faW50ZWxfYmJfZGVzdHJv eV9vYmplY3RzKGliYik7CiAJX19yZWFsbG9jYXRlX29iamVjdHMoaWJiKTsKIAotCWlmIChwdXJn ZV9vYmplY3RzX2NhY2hlKQorCWlmIChwdXJnZV9vYmplY3RzX2NhY2hlKSB7CisJCV9faW50ZWxf YmJfcmVtb3ZlX2ludGVsX2J1ZnMoaWJiKTsKIAkJX19pbnRlbF9iYl9kZXN0cm95X2NhY2hlKGli Yik7CisJfQogCiAJLyoKIAkgKiBXaGVuIHdlIHVzZSBhbGxvY2F0b3JzIHdlJ3JlIGluIG5vLXJl bG9jIG1vZGUgc28gd2UgaGF2ZSB0byBmcmVlCkBAIC0xNjIxLDYgKzE2NDksNTAgQEAgaW50IGlu dGVsX2JiX3N5bmMoc3RydWN0IGludGVsX2JiICppYmIpCiAJcmV0dXJuIHJldDsKIH0KIAordWlu dDY0X3QgaW50ZWxfYmJfYXNzaWduX3ZtKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50NjRfdCBh bGxvY2F0b3IsCisJCQkgICAgdWludDMyX3Qgdm1faWQpCit7CisJc3RydWN0IGRybV9pOTE1X2dl bV9jb250ZXh0X3BhcmFtIGFyZyA9IHsKKwkJLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX1ZN LAorCX07CisJdWludDY0X3QgcHJldl9hbGxvY2F0b3IgPSBpYmItPmFsbG9jYXRvcl9oYW5kbGU7 CisJYm9vbCBjbG9zZWQgPSBmYWxzZTsKKworCWlmIChpYmItPnZtX2lkID09IHZtX2lkKSB7CisJ CWlndF9kZWJ1ZygiU2tpcHBpbmcgdG8gYXNzaWduIHNhbWUgdm1faWQ6ICV1XG4iLCB2bV9pZCk7 CisJCXJldHVybiAwOworCX0KKworCS8qIENhbm5vdCBzd2l0Y2ggaWYgc29tZW9uZSBrZWVwcyBi YiByZWZjb3VudCAqLworCWlndF9hc3NlcnQoaWJiLT5yZWZjb3VudCA9PSAxKTsKKworCS8qIERl dGFjaCBpbnRlbF9idWZzIGFuZCByZW1vdmUgYmIgaGFuZGxlICovCisJX19pbnRlbF9iYl9kZXRh Y2hfaW50ZWxfYnVmcyhpYmIpOworCWludGVsX2JiX3JlbW92ZV9vYmplY3QoaWJiLCBpYmItPmhh bmRsZSwgaWJiLT5iYXRjaF9vZmZzZXQsIGliYi0+c2l6ZSk7CisKKwkvKiBDYWNoZSArIG9iamVj dHMgYXJlIG5vdCB2YWxpZCBhZnRlciBjaGFuZ2UgYW55bW9yZSAqLworCV9faW50ZWxfYmJfZGVz dHJveV9vYmplY3RzKGliYik7CisJX19pbnRlbF9iYl9kZXN0cm95X2NhY2hlKGliYik7CisKKwkv KiBBdHRhY2ggbmV3IGFsbG9jYXRvciAqLworCWliYi0+YWxsb2NhdG9yX2hhbmRsZSA9IGFsbG9j YXRvcjsKKworCS8qIFNldHBhcmFtICovCisJaWJiLT52bV9pZCA9IHZtX2lkOworCisJLyogU2tp cCBzZXQgcGFyYW0sIHdlIGxpa2VseSByZXR1cm4gdG8gZGVmYXVsdCB2bSAqLworCWlmICh2bV9p ZCkgeworCQlhcmcuY3R4X2lkID0gaWJiLT5jdHg7CisJCWFyZy52YWx1ZSA9IHZtX2lkOworCQln ZW1fY29udGV4dF9zZXRfcGFyYW0oaWJiLT5pOTE1LCAmYXJnKTsKKwl9CisKKwkvKiBSZWNyZWF0 ZSBiYiAqLworCWludGVsX2JiX3Jlc2V0KGliYiwgZmFsc2UpOworCisJcmV0dXJuIGNsb3NlZCA/ IDAgOiBwcmV2X2FsbG9jYXRvcjsKK30KKwogLyoKICAqIGludGVsX2JiX3ByaW50OgogICogQGli YjogcG9pbnRlciB0byBpbnRlbF9iYgpAQCAtMTg3NSwyMiArMTk0NywxMyBAQCBpbnRlbF9iYl9h ZGRfb2JqZWN0KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQ2NF90 IHNpemUsCiAKIAlvYmplY3QtPm9mZnNldCA9IG9mZnNldDsKIAotCS8qIExpbWl0IGN1cnJlbnQg b2Zmc2V0IHRvIGd0dCBzaXplICovCi0JaWYgKG9mZnNldCAhPSBJTlRFTF9CVUZfSU5WQUxJRF9B RERSRVNTKSB7Ci0JCW9iamVjdC0+b2Zmc2V0ID0gQ0FOT05JQ0FMKG9mZnNldCAmIChpYmItPmd0 dF9zaXplIC0gMSkpOwotCX0gZWxzZSB7Ci0JCW9iamVjdC0+b2Zmc2V0ID0gX19pbnRlbF9iYl9n ZXRfb2Zmc2V0KGliYiwKLQkJCQkJCSAgICAgICBoYW5kbGUsIHNpemUsCi0JCQkJCQkgICAgICAg b2JqZWN0LT5hbGlnbm1lbnQpOwotCX0KLQogCWlmICh3cml0ZSkKIAkJb2JqZWN0LT5mbGFncyB8 PSBFWEVDX09CSkVDVF9XUklURTsKIAogCWlmIChpYmItPnN1cHBvcnRzXzQ4Yl9hZGRyZXNzKQog CQlvYmplY3QtPmZsYWdzIHw9IEVYRUNfT0JKRUNUX1NVUFBPUlRTXzQ4Ql9BRERSRVNTOwogCi0J aWYgKGliYi0+dXNlc19mdWxsX3BwZ3R0ICYmIGliYi0+YWxsb2NhdG9yX3R5cGUgPT0gSU5URUxf QUxMT0NBVE9SX1NJTVBMRSkKKwlpZiAoaWJiLT51c2VzX2Z1bGxfcHBndHQgJiYgIWliYi0+ZW5m b3JjZV9yZWxvY3MpCiAJCW9iamVjdC0+ZmxhZ3MgfD0gRVhFQ19PQkpFQ1RfUElOTkVEOwogCiAJ cmV0dXJuIG9iamVjdDsKQEAgLTE5MjcsNiArMTk5MCw5IEBAIF9faW50ZWxfYmJfYWRkX2ludGVs X2J1ZihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgc3RydWN0IGludGVsX2J1ZiAqYnVmLAogewogCXN0 cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICpvYmo7CiAKKwlpZ3RfYXNzZXJ0KGliYik7 CisJaWd0X2Fzc2VydChidWYpOworCWlndF9hc3NlcnQoIWJ1Zi0+aWJiIHx8IGJ1Zi0+aWJiID09 IGliYik7CiAJaWd0X2Fzc2VydChBTElHTihhbGlnbm1lbnQsIDQwOTYpID09IGFsaWdubWVudCk7 CiAKIAlpZiAoIWFsaWdubWVudCkgewpAQCAtMTk1MSw2ICsyMDE3LDEzIEBAIF9faW50ZWxfYmJf YWRkX2ludGVsX2J1ZihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgc3RydWN0IGludGVsX2J1ZiAqYnVm LAogCWlmICghaWJiLT5lbmZvcmNlX3JlbG9jcykKIAkJb2JqLT5hbGlnbm1lbnQgPSBhbGlnbm1l bnQ7CiAKKwlpZiAoaWd0X2xpc3RfZW1wdHkoJmJ1Zi0+bGluaykpIHsKKwkJaWd0X2xpc3RfYWRk X3RhaWwoJmJ1Zi0+bGluaywgJmliYi0+aW50ZWxfYnVmcyk7CisJCWJ1Zi0+aWJiID0gaWJiOwor CX0gZWxzZSB7CisJCWlndF9hc3NlcnQoYnVmLT5pYmIgPT0gaWJiKTsKKwl9CisKIAlyZXR1cm4g b2JqOwogfQogCkBAIC0xOTY3LDE4ICsyMDQwLDUzIEBAIGludGVsX2JiX2FkZF9pbnRlbF9idWZf d2l0aF9hbGlnbm1lbnQoc3RydWN0IGludGVsX2JiICppYmIsIHN0cnVjdCBpbnRlbF9idWYgKmJ1 CiAJcmV0dXJuIF9faW50ZWxfYmJfYWRkX2ludGVsX2J1ZihpYmIsIGJ1ZiwgYWxpZ25tZW50LCB3 cml0ZSk7CiB9CiAKK3ZvaWQgaW50ZWxfYmJfZGV0YWNoX2ludGVsX2J1ZihzdHJ1Y3QgaW50ZWxf YmIgKmliYiwgc3RydWN0IGludGVsX2J1ZiAqYnVmKQoreworCWlndF9hc3NlcnQoaWJiKTsKKwlp Z3RfYXNzZXJ0KGJ1Zik7CisJaWd0X2Fzc2VydCghYnVmLT5pYmIgfHwgYnVmLT5pYmIgPT0gaWJi KTsKKworCWlmICghaWd0X2xpc3RfZW1wdHkoJmJ1Zi0+bGluaykpIHsKKwkJYnVmLT5hZGRyLm9m ZnNldCA9IElOVEVMX0JVRl9JTlZBTElEX0FERFJFU1M7CisJCWJ1Zi0+aWJiID0gTlVMTDsKKwkJ aWd0X2xpc3RfZGVsX2luaXQoJmJ1Zi0+bGluayk7CisJfQorfQorCiBib29sIGludGVsX2JiX3Jl bW92ZV9pbnRlbF9idWYoc3RydWN0IGludGVsX2JiICppYmIsIHN0cnVjdCBpbnRlbF9idWYgKmJ1 ZikKIHsKLQlib29sIHJlbW92ZWQgPSBpbnRlbF9iYl9yZW1vdmVfb2JqZWN0KGliYiwgYnVmLT5o YW5kbGUsCi0JCQkJCSAgICAgIGJ1Zi0+YWRkci5vZmZzZXQsCi0JCQkJCSAgICAgIGludGVsX2J1 Zl9ib19zaXplKGJ1ZikpOworCWJvb2wgcmVtb3ZlZDsKIAotCWlmIChyZW1vdmVkKQorCWlndF9h c3NlcnQoaWJiKTsKKwlpZ3RfYXNzZXJ0KGJ1Zik7CisJaWd0X2Fzc2VydCghYnVmLT5pYmIgfHwg YnVmLT5pYmIgPT0gaWJiKTsKKworCWlmIChpZ3RfbGlzdF9lbXB0eSgmYnVmLT5saW5rKSkKKwkJ cmV0dXJuIGZhbHNlOworCisJcmVtb3ZlZCA9IGludGVsX2JiX3JlbW92ZV9vYmplY3QoaWJiLCBi dWYtPmhhbmRsZSwKKwkJCQkJIGJ1Zi0+YWRkci5vZmZzZXQsCisJCQkJCSBpbnRlbF9idWZfYm9f c2l6ZShidWYpKTsKKwlpZiAocmVtb3ZlZCkgewogCQlidWYtPmFkZHIub2Zmc2V0ID0gSU5URUxf QlVGX0lOVkFMSURfQUREUkVTUzsKKwkJYnVmLT5pYmIgPSBOVUxMOworCQlpZ3RfbGlzdF9kZWxf aW5pdCgmYnVmLT5saW5rKTsKKwl9CiAKIAlyZXR1cm4gcmVtb3ZlZDsKIH0KIAordm9pZCBpbnRl bF9iYl9wcmludF9pbnRlbF9idWZzKHN0cnVjdCBpbnRlbF9iYiAqaWJiKQoreworCXN0cnVjdCBp bnRlbF9idWYgKmVudHJ5OworCisJaWd0X2xpc3RfZm9yX2VhY2hfZW50cnkoZW50cnksICZpYmIt PmludGVsX2J1ZnMsIGxpbmspIHsKKwkJaWd0X2luZm8oImhhbmRsZTogJXUsIGliYjogJXAsIG9m ZnNldDogJWx4XG4iLAorCQkJIGVudHJ5LT5oYW5kbGUsIGVudHJ5LT5pYmIsCisJCQkgKGxvbmcp IGVudHJ5LT5hZGRyLm9mZnNldCk7CisJfQorfQorCiBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNf b2JqZWN0MiAqCiBpbnRlbF9iYl9maW5kX29iamVjdChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWlu dDMyX3QgaGFuZGxlKQogewpAQCAtMjM2MSw2ICsyNDY5LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRl X29mZnNldHMoc3RydWN0IGludGVsX2JiICppYmIsCiAJCQkgICBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X2V4ZWNfb2JqZWN0MiAqb2JqZWN0cykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2Jq ZWN0MiAqb2JqZWN0OworCXN0cnVjdCBpbnRlbF9idWYgKmVudHJ5OwogCXVpbnQzMl90IGk7CiAK IAlmb3IgKGkgPSAwOyBpIDwgaWJiLT5udW1fb2JqZWN0czsgaSsrKSB7CkBAIC0yMzcyLDExICsy NDgxLDIzIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9vZmZzZXRzKHN0cnVjdCBpbnRlbF9iYiAqaWJi LAogCQlpZiAoaSA9PSAwKQogCQkJaWJiLT5iYXRjaF9vZmZzZXQgPSBvYmplY3QtPm9mZnNldDsK IAl9CisKKwlpZ3RfbGlzdF9mb3JfZWFjaF9lbnRyeShlbnRyeSwgJmliYi0+aW50ZWxfYnVmcywg bGluaykgeworCQlvYmplY3QgPSBpbnRlbF9iYl9maW5kX29iamVjdChpYmIsIGVudHJ5LT5oYW5k bGUpOworCQlpZ3RfYXNzZXJ0KG9iamVjdCk7CisKKwkJaWYgKGliYi0+YWxsb2NhdG9yX3R5cGUg PT0gSU5URUxfQUxMT0NBVE9SX1NJTVBMRSkKKwkJCWlndF9hc3NlcnQob2JqZWN0LT5vZmZzZXQg PT0gZW50cnktPmFkZHIub2Zmc2V0KTsKKwkJZWxzZQorCQkJZW50cnktPmFkZHIub2Zmc2V0ID0g b2JqZWN0LT5vZmZzZXQ7CisKKwkJZW50cnktPmFkZHIuY3R4ID0gaWJiLT5jdHg7CisJfQogfQog CiAjZGVmaW5lIExJTkVMRU4gNzYKIC8qCi0gKiBAX19pbnRlbF9iYl9leGVjOgorICogX19pbnRl bF9iYl9leGVjOgogICogQGliYjogcG9pbnRlciB0byBpbnRlbF9iYgogICogQGVuZF9vZmZzZXQ6 IG9mZnNldCBvZiB0aGUgbGFzdCBpbnN0cnVjdGlvbiBpbiB0aGUgYmIKICAqIEBmbGFnczogZmxh Z3MgcGFzc2VkIGRpcmVjdGx5IHRvIGV4ZWNidWYKQEAgLTI0MTYsNiArMjUzNyw5IEBAIHN0YXRp YyBpbnQgX19pbnRlbF9iYl9leGVjKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50MzJfdCBlbmRf b2Zmc2V0LAogCWlmIChpYmItPmR1bXBfYmFzZTY0KQogCQlpbnRlbF9iYl9kdW1wX2Jhc2U2NChp YmIsIExJTkVMRU4pOwogCisJLyogRm9yIGRlYnVnZ2luZyBvbiBDSSwgcmVtb3ZlIGluIGZpbmFs IHNlcmllcyAqLworCWludGVsX2JiX2R1bXBfZXhlY2J1ZihpYmIsICZleGVjYnVmKTsKKwogCXJl dCA9IF9fZ2VtX2V4ZWNidWZfd3IoaWJiLT5pOTE1LCAmZXhlY2J1Zik7CiAJaWYgKHJldCkgewog CQlpbnRlbF9iYl9kdW1wX2V4ZWNidWYoaWJiLCAmZXhlY2J1Zik7CkBAIC0yNDkzLDM2ICsyNjE3 LDYgQEAgdWludDY0X3QgaW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQoc3RydWN0IGludGVsX2Ji ICppYmIsIHVpbnQzMl90IGhhbmRsZSkKIAlyZXR1cm4gKCpmb3VuZCktPm9mZnNldDsKIH0KIAot LyoqCi0gKiBpbnRlbF9iYl9vYmplY3Rfb2Zmc2V0X3RvX2J1ZjoKLSAqIEBpYmI6IHBvaW50ZXIg dG8gaW50ZWxfYmIKLSAqIEBidWY6IGJ1ZmZlciB3ZSB3YW50IHRvIHN0b3JlIGxhc3QgZXhlYyBv ZmZzZXQgYW5kIGNvbnRleHQgaWQKLSAqCi0gKiBDb3B5IG9iamVjdCBvZmZzZXQgdXNlZCBpbiB0 aGUgYmF0Y2ggdG8gaW50ZWxfYnVmIHRvIGFsbG93IGNhbGxlciBwcmVwYXJlCi0gKiBvdGhlciBi YXRjaCBsaWtlbHkgd2l0aG91dCByZWxvY2F0aW9ucy4KLSAqLwotYm9vbCBpbnRlbF9iYl9vYmpl Y3Rfb2Zmc2V0X3RvX2J1ZihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgc3RydWN0IGludGVsX2J1ZiAq YnVmKQotewotCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9iamVjdCA9IHsgLmhh bmRsZSA9IGJ1Zi0+aGFuZGxlIH07Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIg Kipmb3VuZDsKLQotCWlndF9hc3NlcnQoaWJiKTsKLQlpZ3RfYXNzZXJ0KGJ1Zik7Ci0KLQlmb3Vu ZCA9IHRmaW5kKCh2b2lkICopJm9iamVjdCwgJmliYi0+cm9vdCwgX19jb21wYXJlX29iamVjdHMp OwotCWlmICghZm91bmQpIHsKLQkJYnVmLT5hZGRyLm9mZnNldCA9IDA7Ci0JCWJ1Zi0+YWRkci5j dHggPSBpYmItPmN0eDsKLQotCQlyZXR1cm4gZmFsc2U7Ci0JfQotCi0JYnVmLT5hZGRyLm9mZnNl dCA9ICgqZm91bmQpLT5vZmZzZXQgJiAoaWJiLT5ndHRfc2l6ZSAtIDEpOwotCWJ1Zi0+YWRkci5j dHggPSBpYmItPmN0eDsKLQotCXJldHVybiB0cnVlOwotfQotCiAvKgogICogaW50ZWxfYmJfZW1p dF9iYmU6CiAgKiBAaWJiOiBiYXRjaGJ1ZmZlcgpkaWZmIC0tZ2l0IGEvbGliL2ludGVsX2JhdGNo YnVmZmVyLmggYi9saWIvaW50ZWxfYmF0Y2hidWZmZXIuaAppbmRleCA3MDIwNTJkMjIuLjZmMTQ4 NzEzYiAxMDA2NDQKLS0tIGEvbGliL2ludGVsX2JhdGNoYnVmZmVyLmgKKysrIGIvbGliL2ludGVs X2JhdGNoYnVmZmVyLmgKQEAgLTYsNiArNiw3IEBACiAjaW5jbHVkZSA8aTkxNV9kcm0uaD4KIAog I2luY2x1ZGUgImlndF9jb3JlLmgiCisjaW5jbHVkZSAiaWd0X2xpc3QuaCIKICNpbmNsdWRlICJp bnRlbF9yZWcuaCIKICNpbmNsdWRlICJkcm10ZXN0LmgiCiAjaW5jbHVkZSAiaW50ZWxfYWxsb2Nh dG9yLmgiCkBAIC00NjQsNiArNDY1LDcgQEAgc3RydWN0IGludGVsX2JiIHsKIAlib29sIHVzZXNf ZnVsbF9wcGd0dDsKIAogCXVpbnQzMl90IGN0eDsKKwl1aW50MzJfdCB2bV9pZDsKIAogCS8qIENh Y2hlICovCiAJdm9pZCAqcm9vdDsKQEAgLTQ4MSw2ICs0ODMsOSBAQCBzdHJ1Y3QgaW50ZWxfYmIg ewogCXVpbnQzMl90IG51bV9yZWxvY3M7CiAJdWludDMyX3QgYWxsb2NhdGVkX3JlbG9jczsKIAor CS8qIFRyYWNrZWQgaW50ZWxfYnVmcyAqLworCXN0cnVjdCBpZ3RfbGlzdF9oZWFkIGludGVsX2J1 ZnM7CisKIAkvKgogCSAqIEJPIHJlY3JlYXRlIGluIHJlc2V0IHBhdGggb25seSB3aGVuIHJlZmNv dW50ID09IDAKIAkgKiBDdXJyZW50bHkgd2UgZG9uJ3QgbmVlZCB0byB1c2UgYXRvbWljcyBiZWNh dXNlIGludGVsX2JiCkBAIC01MTcsMjkgKzUyMiwxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaW50 ZWxfYmJfdW5yZWYoc3RydWN0IGludGVsX2JiICppYmIpCiAKIHZvaWQgaW50ZWxfYmJfcmVzZXQo c3RydWN0IGludGVsX2JiICppYmIsIGJvb2wgcHVyZ2Vfb2JqZWN0c19jYWNoZSk7CiBpbnQgaW50 ZWxfYmJfc3luYyhzdHJ1Y3QgaW50ZWxfYmIgKmliYik7CisKK3VpbnQ2NF90IGludGVsX2JiX2Fz c2lnbl92bShzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgdWludDY0X3QgYWxsb2NhdG9yLAorCQkJICAg IHVpbnQzMl90IHZtX2lkKTsKKwogdm9pZCBpbnRlbF9iYl9wcmludChzdHJ1Y3QgaW50ZWxfYmIg KmliYik7CiB2b2lkIGludGVsX2JiX2R1bXAoc3RydWN0IGludGVsX2JiICppYmIsIGNvbnN0IGNo YXIgKmZpbGVuYW1lKTsKIHZvaWQgaW50ZWxfYmJfc2V0X2RlYnVnKHN0cnVjdCBpbnRlbF9iYiAq aWJiLCBib29sIGRlYnVnKTsKIHZvaWQgaW50ZWxfYmJfc2V0X2R1bXBfYmFzZTY0KHN0cnVjdCBp bnRlbF9iYiAqaWJiLCBib29sIGR1bXApOwogCi0vKgotc3RhdGljIGlubGluZSB1aW50NjRfdAot aW50ZWxfYmJfc2V0X2RlZmF1bHRfb2JqZWN0X2FsaWdubWVudChzdHJ1Y3QgaW50ZWxfYmIgKmli YiwgdWludDY0X3QgYWxpZ25tZW50KQotewotCXVpbnQ2NF90IG9sZCA9IGliYi0+YWxpZ25tZW50 OwotCi0JaWJiLT5hbGlnbm1lbnQgPSBhbGlnbm1lbnQ7Ci0KLQlyZXR1cm4gb2xkOwotfQotCi1z dGF0aWMgaW5saW5lIHVpbnQ2NF90Ci1pbnRlbF9iYl9nZXRfZGVmYXVsdF9vYmplY3RfYWxpZ25t ZW50KHN0cnVjdCBpbnRlbF9iYiAqaWJiKQotewotCXJldHVybiBpYmItPmFsaWdubWVudDsKLX0K LSovCi0KIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgaW50ZWxfYmJfb2Zmc2V0KHN0cnVjdCBpbnRl bF9iYiAqaWJiKQogewogCXJldHVybiAodWludDMyX3QpICgodWludDhfdCAqKSBpYmItPnB0ciAt ICh1aW50OF90ICopIGliYi0+YmF0Y2gpOwpAQCAtNTk3LDcgKzU4OCw5IEBAIGludGVsX2JiX2Fk ZF9pbnRlbF9idWYoc3RydWN0IGludGVsX2JiICppYmIsIHN0cnVjdCBpbnRlbF9idWYgKmJ1Ziwg Ym9vbCB3cml0ZSk7CiBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqCiBpbnRlbF9i Yl9hZGRfaW50ZWxfYnVmX3dpdGhfYWxpZ25tZW50KHN0cnVjdCBpbnRlbF9iYiAqaWJiLCBzdHJ1 Y3QgaW50ZWxfYnVmICpidWYsCiAJCQkJICAgICAgdWludDY0X3QgYWxpZ25tZW50LCBib29sIHdy aXRlKTsKK3ZvaWQgaW50ZWxfYmJfZGV0YWNoX2ludGVsX2J1ZihzdHJ1Y3QgaW50ZWxfYmIgKmli Yiwgc3RydWN0IGludGVsX2J1ZiAqYnVmKTsKIGJvb2wgaW50ZWxfYmJfcmVtb3ZlX2ludGVsX2J1 ZihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgc3RydWN0IGludGVsX2J1ZiAqYnVmKTsKK3ZvaWQgaW50 ZWxfYmJfcHJpbnRfaW50ZWxfYnVmcyhzdHJ1Y3QgaW50ZWxfYmIgKmliYik7CiBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqCiBpbnRlbF9iYl9maW5kX29iamVjdChzdHJ1Y3QgaW50 ZWxfYmIgKmliYiwgdWludDMyX3QgaGFuZGxlKTsKIApkaWZmIC0tZ2l0IGEvbGliL2ludGVsX2J1 Zm9wcy5jIGIvbGliL2ludGVsX2J1Zm9wcy5jCmluZGV4IDAwYmUyYmQwNC4uM2MxY2NhMGNmIDEw MDY0NAotLS0gYS9saWIvaW50ZWxfYnVmb3BzLmMKKysrIGIvbGliL2ludGVsX2J1Zm9wcy5jCkBA IC03MjcsNiArNzI3LDcgQEAgc3RhdGljIHZvaWQgX19pbnRlbF9idWZfaW5pdChzdHJ1Y3QgYnVm X29wcyAqYm9wcywKIAogCWJ1Zi0+Ym9wcyA9IGJvcHM7CiAJYnVmLT5hZGRyLm9mZnNldCA9IElO VEVMX0JVRl9JTlZBTElEX0FERFJFU1M7CisJSUdUX0lOSVRfTElTVF9IRUFEKCZidWYtPmxpbmsp OwogCiAJaWYgKGNvbXByZXNzaW9uKSB7CiAJCWludCBhdXhfd2lkdGgsIGF1eF9oZWlnaHQ7CkBA IC04MjcsMTMgKzgyOCwyMyBAQCB2b2lkIGludGVsX2J1Zl9pbml0KHN0cnVjdCBidWZfb3BzICpi b3BzLAogICoKICAqIEZ1bmN0aW9uIGNsb3NlcyBnZW0gQk8gaW5zaWRlIGludGVsX2J1ZiBpZiBi byBpcyBvd25lZCBieSBpbnRlbF9idWYuCiAgKiBGb3IgaGFuZGxlIHBhc3NlZCBmcm9tIHRoZSBj YWxsZXIgaW50ZWxfYnVmIGRvZXNuJ3QgdGFrZSBvd25lcnNoaXAgYW5kCi0gKiBkb2Vzbid0IGNs b3NlIGl0IGluIGNsb3NlKCkvZGVzdHJveSgpIHBhdGhzLgorICogZG9lc24ndCBjbG9zZSBpdCBp biBjbG9zZSgpL2Rlc3Ryb3koKSBwYXRocy4gV2hlbiBpbnRlbF9idWYgd2FzIHByZXZpb3VzbHkK KyAqIGFkZGVkIHRvIGludGVsX2JiIChpbnRlbF9iYl9hZGRfaW50ZWxfYnVmKCkgY2FsbCkgaXQg aXMgdHJhY2tlZCB0aGVyZSBhbmQKKyAqIG11c3QgYmUgcmVtb3ZlZCBmcm9tIGl0cyBpbnRlcm5h bCBzdHJ1Y3R1cmVzLgogICovCiB2b2lkIGludGVsX2J1Zl9jbG9zZShzdHJ1Y3QgYnVmX29wcyAq Ym9wcywgc3RydWN0IGludGVsX2J1ZiAqYnVmKQogewogCWlndF9hc3NlcnQoYm9wcyk7CiAJaWd0 X2Fzc2VydChidWYpOwogCisJLyogSWYgYnVmIGlzIHRyYWNrZWQgYnkgc29tZSBpbnRlbF9iYiBl bnN1cmUgaXQgd2lsbCBiZSByZW1vdmVkIHRoZXJlICovCisJaWYgKGJ1Zi0+aWJiKSB7CisJCWlu dGVsX2JiX3JlbW92ZV9pbnRlbF9idWYoYnVmLT5pYmIsIGJ1Zik7CisJCWJ1Zi0+YWRkci5vZmZz ZXQgPSBJTlRFTF9CVUZfSU5WQUxJRF9BRERSRVNTOworCQlidWYtPmliYiA9IE5VTEw7CisJCUlH VF9JTklUX0xJU1RfSEVBRCgmYnVmLT5saW5rKTsKKwl9CisKIAlpZiAoYnVmLT5pc19vd25lcikK IAkJZ2VtX2Nsb3NlKGJvcHMtPmZkLCBidWYtPmhhbmRsZSk7CiB9CmRpZmYgLS1naXQgYS9saWIv aW50ZWxfYnVmb3BzLmggYi9saWIvaW50ZWxfYnVmb3BzLmgKaW5kZXggNTQ0ODBiZmY2Li4xYTNk ODY5MjUgMTAwNjQ0Ci0tLSBhL2xpYi9pbnRlbF9idWZvcHMuaAorKysgYi9saWIvaW50ZWxfYnVm b3BzLmgKQEAgLTIsNiArMiw3IEBACiAjZGVmaW5lIF9fSU5URUxfQlVGT1BTX0hfXwogCiAjaW5j bHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSAiaWd0X2xpc3QuaCIKICNpbmNsdWRlICJpZ3RfYXV4 LmgiCiAjaW5jbHVkZSAiaW50ZWxfYmF0Y2hidWZmZXIuaCIKIApAQCAtMTMsNiArMTQsNyBAQCBz dHJ1Y3QgYnVmX29wczsKIAogc3RydWN0IGludGVsX2J1ZiB7CiAJc3RydWN0IGJ1Zl9vcHMgKmJv cHM7CisKIAlib29sIGlzX293bmVyOwogCXVpbnQzMl90IGhhbmRsZTsKIAl1aW50NjRfdCBzaXpl OwpAQCAtNDAsNiArNDIsMTAgQEAgc3RydWN0IGludGVsX2J1ZiB7CiAJCXVpbnQzMl90IGN0eDsK IAl9IGFkZHI7CiAKKwkvKiBUcmFja2luZyAqLworCXN0cnVjdCBpbnRlbF9iYiAqaWJiOworCXN0 cnVjdCBpZ3RfbGlzdF9oZWFkIGxpbms7CisKIAkvKiBDUFUgbWFwcGluZyAqLwogCXVpbnQzMl90 ICpwdHI7CiAJYm9vbCBjcHVfd3JpdGU7CmRpZmYgLS1naXQgYS9saWIvbWVkaWFfc3Bpbi5jIGIv bGliL21lZGlhX3NwaW4uYwppbmRleCA1ZGE0NjlhNTIuLmQyMzQ1ZDE1MyAxMDA2NDQKLS0tIGEv bGliL21lZGlhX3NwaW4uYworKysgYi9saWIvbWVkaWFfc3Bpbi5jCkBAIC0xMzIsNyArMTMyLDYg QEAgZ2VuOF9tZWRpYV9zcGluZnVuYyhpbnQgaTkxNSwgc3RydWN0IGludGVsX2J1ZiAqYnVmLCB1 aW50MzJfdCBzcGlucykKIAlpbnRlbF9iYl9leGVjKGliYiwgaW50ZWxfYmJfb2Zmc2V0KGliYiks CiAJCSAgICAgIEk5MTVfRVhFQ19ERUZBVUxUIHwgSTkxNV9FWEVDX05PX1JFTE9DLCBmYWxzZSk7 CiAKLQlpbnRlbF9iYl9vYmplY3Rfb2Zmc2V0X3RvX2J1ZihpYmIsIGJ1Zik7CiAJaW50ZWxfYmJf ZGVzdHJveShpYmIpOwogfQogCkBAIC0xODYsNiArMTg1LDUgQEAgZ2VuOV9tZWRpYV9zcGluZnVu YyhpbnQgaTkxNSwgc3RydWN0IGludGVsX2J1ZiAqYnVmLCB1aW50MzJfdCBzcGlucykKIAlpbnRl bF9iYl9leGVjKGliYiwgaW50ZWxfYmJfb2Zmc2V0KGliYiksCiAJCSAgICAgIEk5MTVfRVhFQ19E RUZBVUxUIHwgSTkxNV9FWEVDX05PX1JFTE9DLCBmYWxzZSk7CiAKLQlpbnRlbF9iYl9vYmplY3Rf b2Zmc2V0X3RvX2J1ZihpYmIsIGJ1Zik7CiAJaW50ZWxfYmJfZGVzdHJveShpYmIpOwogfQpkaWZm IC0tZ2l0IGEvdGVzdHMvaTkxNS9hcGlfaW50ZWxfYmIuYyBiL3Rlc3RzL2k5MTUvYXBpX2ludGVs X2JiLmMKaW5kZXggYzZjOTQzNTA2Li43N2RmYjY4NTQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUv YXBpX2ludGVsX2JiLmMKKysrIGIvdGVzdHMvaTkxNS9hcGlfaW50ZWxfYmIuYwpAQCAtODI4LDkg KzgyOCw2IEBAIHN0YXRpYyB2b2lkIG9mZnNldF9jb250cm9sKHN0cnVjdCBidWZfb3BzICpib3Bz KQogCQlwcmludF9idWYoZHN0MiwgImRzdDIiKTsKIAl9CiAKLQlpZ3RfYXNzZXJ0KGludGVsX2Ji X29iamVjdF9vZmZzZXRfdG9fYnVmKGliYiwgc3JjKSA9PSB0cnVlKTsKLQlpZ3RfYXNzZXJ0KGlu dGVsX2JiX29iamVjdF9vZmZzZXRfdG9fYnVmKGliYiwgZHN0MSkgPT0gdHJ1ZSk7Ci0JaWd0X2Fz c2VydChpbnRlbF9iYl9vYmplY3Rfb2Zmc2V0X3RvX2J1ZihpYmIsIGRzdDIpID09IHRydWUpOwog CXBvZmZfc3JjID0gc3JjLT5hZGRyLm9mZnNldDsKIAlwb2ZmX2RzdDEgPSBkc3QxLT5hZGRyLm9m ZnNldDsKIAlwb2ZmX2RzdDIgPSBkc3QyLT5hZGRyLm9mZnNldDsKQEAgLTg1MywxMCArODUwLDYg QEAgc3RhdGljIHZvaWQgb2Zmc2V0X2NvbnRyb2woc3RydWN0IGJ1Zl9vcHMgKmJvcHMpCiAJCSAg ICAgIEk5MTVfRVhFQ19ERUZBVUxUIHwgSTkxNV9FWEVDX05PX1JFTE9DLCBmYWxzZSk7CiAJaW50 ZWxfYmJfc3luYyhpYmIpOwogCi0JaWd0X2Fzc2VydChpbnRlbF9iYl9vYmplY3Rfb2Zmc2V0X3Rv X2J1ZihpYmIsIHNyYykgPT0gdHJ1ZSk7Ci0JaWd0X2Fzc2VydChpbnRlbF9iYl9vYmplY3Rfb2Zm c2V0X3RvX2J1ZihpYmIsIGRzdDEpID09IHRydWUpOwotCWlndF9hc3NlcnQoaW50ZWxfYmJfb2Jq ZWN0X29mZnNldF90b19idWYoaWJiLCBkc3QyKSA9PSB0cnVlKTsKLQlpZ3RfYXNzZXJ0KGludGVs X2JiX29iamVjdF9vZmZzZXRfdG9fYnVmKGliYiwgZHN0MykgPT0gdHJ1ZSk7CiAJaWd0X2Fzc2Vy dChwb2ZmX3NyYyA9PSBzcmMtPmFkZHIub2Zmc2V0KTsKIAlpZ3RfYXNzZXJ0KHBvZmZfZHN0MSA9 PSBkc3QxLT5hZGRyLm9mZnNldCk7CiAJaWd0X2Fzc2VydChwb2ZmX2RzdDIgPT0gZHN0Mi0+YWRk ci5vZmZzZXQpOwotLSAKMi4yNi4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ln dC1kZXYK