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 91F0D6E193 for ; Thu, 13 Aug 2020 08:58:22 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Thu, 13 Aug 2020 10:56:57 +0200 Message-Id: <20200813085657.20658-31-zbigniew.kempczynski@intel.com> In-Reply-To: <20200813085657.20658-1-zbigniew.kempczynski@intel.com> References: <20200813085657.20658-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v28 30/30] tests/perf: remove libdrm dependency for rendercopy 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 Cc: Chris Wilson List-ID: UmVuZGVyY29weSBub3cgdXNlcyBuby1kcm0gdmVyc2lvbiBzbyBhbGwgdXNlcnMgaGFzIHRvCm1p Z3JhdGUgdG8gbmV3IGludGVyZmFjZS4KCnZ4OiBpdCBzZWVtcyB3ZSd2ZSBwcm9ibGVtIHdpdGgg R0VNX01NQVBfT0ZGU0VUIG1hcHBpbmcKc28gZm9yICFsbGMgcGxhdGZvcm1zIGRldmljZSBtYXBw aW5nIGlzIHVzZWQuCgpTaWduZWQtb2ZmLWJ5OiBaYmlnbmlldyBLZW1wY3p5xYRza2kgPHpiaWdu aWV3LmtlbXBjenluc2tpQGludGVsLmNvbT4KQ2M6IExpb25lbCBMYW5kd2VybGluIDxsaW9uZWwu Zy5sYW5kd2VybGluQGludGVsLmNvbT4KQ2M6IERvbWluaWsgR3J6ZWdvcnplayA8ZG9taW5pay5n cnplZ29yemVrQGludGVsLmNvbT4KQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29u LmNvLnVrPgpSZXZpZXdlZC1ieTogTGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJs aW5AaW50ZWwuY29tPgotLS0KIHRlc3RzL2k5MTUvcGVyZi5jIHwgNjc1ICsrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyOTMgaW5z ZXJ0aW9ucygrKSwgMzgyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvcGVy Zi5jIGIvdGVzdHMvaTkxNS9wZXJmLmMKaW5kZXggOTJlZGM5ZjEuLjNjMTkzNWMzIDEwMDY0NAot LS0gYS90ZXN0cy9pOTE1L3BlcmYuYworKysgYi90ZXN0cy9pOTE1L3BlcmYuYwpAQCAtNDk2LDY1 ICs0OTYsNjEgQEAgb2FfcmVwb3J0X2dldF9jdHhfaWQodWludDMyX3QgKnJlcG9ydCkKIAlyZXR1 cm4gcmVwb3J0WzJdOwogfQogCi1zdGF0aWMgdm9pZAotc2NyYXRjaF9idWZfbWVtc2V0KGRybV9p bnRlbF9ibyAqYm8sIGludCB3aWR0aCwgaW50IGhlaWdodCwgdWludDMyX3QgY29sb3IpCisvKgor ICogVGVtcG9yYXJ5IHdyYXBwZXIgdG8gZGlzdGluZ3Vpc2ggbWFwcGluZ3Mgb24gIWxsYyBwbGF0 Zm9ybXMsCisgKiB3aGVyZSBpdCBzZWVtcyBjYWNoZSBvdmVyIEdFTV9NTUFQX09GRlNFVCBpcyBu b3QgZmx1c2hlZCBiZWZvcmUgZXhlY3V0aW9uLgorICovCitzdGF0aWMgdm9pZCAqYnVmX21hcChp bnQgaTkxNSwgc3RydWN0IGludGVsX2J1ZiAqYnVmLCBib29sIHdyaXRlKQogewotCWludCByZXQ7 CisJdm9pZCAqcDsKIAotCXJldCA9IGRybV9pbnRlbF9ib19tYXAoYm8sIHRydWUgLyogd3JpdGFi bGUgKi8pOwotCWlndF9hc3NlcnRfZXEocmV0LCAwKTsKKwlpZiAoZ2VtX2hhc19sbGMoaTkxNSkp CisJCXAgPSBpbnRlbF9idWZfY3B1X21hcChidWYsIHdyaXRlKTsKKwllbHNlCisJCXAgPSBpbnRl bF9idWZfZGV2aWNlX21hcChidWYsIHdyaXRlKTsKKworCXJldHVybiBwOworfQorCitzdGF0aWMg dm9pZAorc2NyYXRjaF9idWZfbWVtc2V0KHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwgaW50IHdpZHRo LCBpbnQgaGVpZ2h0LCB1aW50MzJfdCBjb2xvcikKK3sKKwlidWZfbWFwKGJ1Zl9vcHNfZ2V0X2Zk KGJ1Zi0+Ym9wcyksIGJ1ZiwgdHJ1ZSk7CiAKIAlmb3IgKGludCBpID0gMDsgaSA8IHdpZHRoICog aGVpZ2h0OyBpKyspCi0JCSgodWludDMyX3QgKiliby0+dmlydHVhbClbaV0gPSBjb2xvcjsKKwkJ YnVmLT5wdHJbaV0gPSBjb2xvcjsKIAotCWRybV9pbnRlbF9ib191bm1hcChibyk7CisJaW50ZWxf YnVmX3VubWFwKGJ1Zik7CiB9CiAKIHN0YXRpYyB2b2lkCi1zY3JhdGNoX2J1Zl9pbml0KGRybV9p bnRlbF9idWZtZ3IgKmJ1Zm1nciwKLQkJIHN0cnVjdCBpZ3RfYnVmICpidWYsCitzY3JhdGNoX2J1 Zl9pbml0KHN0cnVjdCBidWZfb3BzICpib3BzLAorCQkgc3RydWN0IGludGVsX2J1ZiAqYnVmLAog CQkgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LAogCQkgdWludDMyX3QgY29sb3IpCiB7Ci0Jc2l6ZV90 IHN0cmlkZSA9IHdpZHRoICogNDsKLQlzaXplX3Qgc2l6ZSA9IHN0cmlkZSAqIGhlaWdodDsKLQlk cm1faW50ZWxfYm8gKmJvID0gZHJtX2ludGVsX2JvX2FsbG9jKGJ1Zm1nciwgIiIsIHNpemUsIDQw OTYpOwotCi0Jc2NyYXRjaF9idWZfbWVtc2V0KGJvLCB3aWR0aCwgaGVpZ2h0LCBjb2xvcik7Ci0K LQltZW1zZXQoYnVmLCAwLCBzaXplb2YoKmJ1ZikpOwotCi0JYnVmLT5ibyA9IGJvOwotCWJ1Zi0+ c3VyZmFjZVswXS5zdHJpZGUgPSBzdHJpZGU7Ci0JYnVmLT50aWxpbmcgPSBJOTE1X1RJTElOR19O T05FOwotCWJ1Zi0+c3VyZmFjZVswXS5zaXplID0gc2l6ZTsKLQlidWYtPmJwcCA9IDMyOworCWlu dGVsX2J1Zl9pbml0KGJvcHMsIGJ1Ziwgd2lkdGgsIGhlaWdodCwgMzIsIDAsCisJCSAgICAgICBJ OTE1X1RJTElOR19OT05FLCBJOTE1X0NPTVBSRVNTSU9OX05PTkUpOworCXNjcmF0Y2hfYnVmX21l bXNldChidWYsIHdpZHRoLCBoZWlnaHQsIGNvbG9yKTsKIH0KIAogc3RhdGljIHZvaWQKLWVtaXRf cmVwb3J0X3BlcmZfY291bnQoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKLQkJICAg ICAgIGRybV9pbnRlbF9ibyAqZHN0X2JvLAorZW1pdF9yZXBvcnRfcGVyZl9jb3VudChzdHJ1Y3Qg aW50ZWxfYmIgKmliYiwKKwkJICAgICAgIHN0cnVjdCBpbnRlbF9idWYgKmRzdCwKIAkJICAgICAg IGludCBkc3Rfb2Zmc2V0LAogCQkgICAgICAgdWludDMyX3QgcmVwb3J0X2lkKQogewotCWlmIChJ U19IQVNXRUxMKGRldmlkKSkgewotCQlCRUdJTl9CQVRDSCgzLCAxKTsKLQkJT1VUX0JBVENIKEdF TjZfTUlfUkVQT1JUX1BFUkZfQ09VTlQpOwotCQlPVVRfUkVMT0MoZHN0X2JvLCBJOTE1X0dFTV9E T01BSU5fSU5TVFJVQ1RJT04sIEk5MTVfR0VNX0RPTUFJTl9JTlNUUlVDVElPTiwKLQkJCSAgZHN0 X29mZnNldCk7Ci0JCU9VVF9CQVRDSChyZXBvcnRfaWQpOwotCQlBRFZBTkNFX0JBVENIKCk7Ci0J fSBlbHNlIHsKLQkJLyogWFhYOiBOQjogbiBkd29yZHMgYXJnIGlzIGFjdHVhbGx5IG1hZ2ljIHNp bmNlIGl0IGludGVybmFsbHkKLQkJICogYXV0b21hdGljYWxseSBhY2NvdW50cyBmb3IgbGFyZ2Vy IGFkZHJlc3NlcyBvbiBnZW4gPj0gOC4uLgotCQkgKi8KLQkJQkVHSU5fQkFUQ0goMywgMSk7Ci0J CU9VVF9CQVRDSChHRU44X01JX1JFUE9SVF9QRVJGX0NPVU5UKTsKLQkJT1VUX1JFTE9DKGRzdF9i bywgSTkxNV9HRU1fRE9NQUlOX0lOU1RSVUNUSU9OLCBJOTE1X0dFTV9ET01BSU5fSU5TVFJVQ1RJ T04sCi0JCQkgIGRzdF9vZmZzZXQpOwotCQlPVVRfQkFUQ0gocmVwb3J0X2lkKTsKLQkJQURWQU5D RV9CQVRDSCgpOwotCX0KKwlpbnRlbF9iYl9hZGRfaW50ZWxfYnVmKGliYiwgZHN0LCB0cnVlKTsK KworCWlmIChJU19IQVNXRUxMKGRldmlkKSkKKwkJaW50ZWxfYmJfb3V0KGliYiwgR0VONl9NSV9S RVBPUlRfUEVSRl9DT1VOVCk7CisJZWxzZQorCQlpbnRlbF9iYl9vdXQoaWJiLCBHRU44X01JX1JF UE9SVF9QRVJGX0NPVU5UKTsKKworCWludGVsX2JiX2VtaXRfcmVsb2MoaWJiLCBkc3QtPmhhbmRs ZSwKKwkJCSAgICBJOTE1X0dFTV9ET01BSU5fSU5TVFJVQ1RJT04sIEk5MTVfR0VNX0RPTUFJTl9J TlNUUlVDVElPTiwKKwkJCSAgICBkc3Rfb2Zmc2V0LCBkc3QtPmFkZHIub2Zmc2V0KTsKKwlpbnRl bF9iYl9vdXQoaWJiLCByZXBvcnRfaWQpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTQ5NSwxNCAr MTQ5MSwxMyBAQCBlbnVtIGxvYWQgewogCiBzdGF0aWMgc3RydWN0IGxvYWRfaGVscGVyIHsKIAlp bnQgZGV2aWQ7Ci0JZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyOwotCWRybV9pbnRlbF9jb250ZXh0 ICpjb250ZXh0OworCXN0cnVjdCBidWZfb3BzICpib3BzOwogCXVpbnQzMl90IGNvbnRleHRfaWQ7 Ci0Jc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaDsKKwlzdHJ1Y3QgaW50ZWxfYmIgKmli YjsKIAllbnVtIGxvYWQgbG9hZDsKIAlib29sIGV4aXQ7CiAJc3RydWN0IGlndF9oZWxwZXJfcHJv Y2VzcyBpZ3RfcHJvYzsKLQlzdHJ1Y3QgaWd0X2J1ZiBzcmMsIGRzdDsKKwlzdHJ1Y3QgaW50ZWxf YnVmIHNyYywgZHN0OwogfSBsaCA9IHsgMCwgfTsKIAogc3RhdGljIHZvaWQgbG9hZF9oZWxwZXJf c2lnbmFsX2hhbmRsZXIoaW50IHNpZykKQEAgLTE1NDIsMjEgKzE1MzcsMTIgQEAgc3RhdGljIHZv aWQgbG9hZF9oZWxwZXJfcnVuKGVudW0gbG9hZCBsb2FkKQogCQlzaWduYWwoU0lHVVNSMiwgbG9h ZF9oZWxwZXJfc2lnbmFsX2hhbmRsZXIpOwogCiAJCXdoaWxlICghbGguZXhpdCkgewotCQkJaW50 IHJldDsKLQotCQkJcmVuZGVyX2NvcHkobGguYmF0Y2gsCi0JCQkJICAgIGxoLmNvbnRleHQsCisJ CQlyZW5kZXJfY29weShsaC5pYmIsCisJCQkJICAgIGxoLmNvbnRleHRfaWQsCiAJCQkJICAgICZs aC5zcmMsIDAsIDAsIDE5MjAsIDEwODAsCiAJCQkJICAgICZsaC5kc3QsIDAsIDApOwogCi0JCQlp bnRlbF9iYXRjaGJ1ZmZlcl9mbHVzaF93aXRoX2NvbnRleHQobGguYmF0Y2gsCi0JCQkJCQkJICAg ICBsaC5jb250ZXh0KTsKLQotCQkJcmV0ID0gZHJtX2ludGVsX2dlbV9jb250ZXh0X2dldF9pZChs aC5jb250ZXh0LAotCQkJCQkJCSAgICZsaC5jb250ZXh0X2lkKTsKLQkJCWlndF9hc3NlcnRfZXEo cmV0LCAwKTsKLQotCQkJZHJtX2ludGVsX2JvX3dhaXRfcmVuZGVyaW5nKGxoLmRzdC5ibyk7CisJ CQlpbnRlbF9iYl9zeW5jKGxoLmliYik7CiAKIAkJCS8qIExvd2VyIHRoZSBsb2FkIGJ5IHBhdXNp bmcgYWZ0ZXIgZXZlcnkgc3VibWl0dGVkCiAJCQkgKiB3cml0ZS4gKi8KQEAgLTE1NzQsNTIgKzE1 NjAsMzYgQEAgc3RhdGljIHZvaWQgbG9hZF9oZWxwZXJfc3RvcCh2b2lkKQogCiBzdGF0aWMgdm9p ZCBsb2FkX2hlbHBlcl9pbml0KHZvaWQpCiB7Ci0JaW50IHJldDsKLQogCWxoLmRldmlkID0gaW50 ZWxfZ2V0X2RybV9kZXZpZChkcm1fZmQpOwogCiAJLyogTUlfU1RPUkVfREFUQSBjYW4gb25seSB1 c2UgR1RUIGFkZHJlc3Mgb24gZ2VuNCsvZzMzIGFuZCBuZWVkcwogCSAqIHNub29wYWJsZSBtZW0g b24gcHJlLWdlbjYuIEhlbmNlIGxvYWQtaGVscGVyIG9ubHkgd29ya3Mgb24gZ2VuNissIGJ1dAog CSAqIHRoYXQncyBhbHNvIGFsbCB3ZSBjYXJlIGFib3V0IGZvciB0aGUgcnBzIHRlc3RjYXNlKi8K IAlpZ3RfYXNzZXJ0KGludGVsX2dlbihsaC5kZXZpZCkgPj0gNik7Ci0JbGguYnVmbWdyID0gZHJt X2ludGVsX2J1Zm1ncl9nZW1faW5pdChkcm1fZmQsIDQwOTYpOwotCWlndF9hc3NlcnQobGguYnVm bWdyKTsKLQotCWRybV9pbnRlbF9idWZtZ3JfZ2VtX2VuYWJsZV9yZXVzZShsaC5idWZtZ3IpOwog Ci0JbGguY29udGV4dCA9IGRybV9pbnRlbF9nZW1fY29udGV4dF9jcmVhdGUobGguYnVmbWdyKTsK LQlpZ3RfYXNzZXJ0KGxoLmNvbnRleHQpOworCWxoLmJvcHMgPSBidWZfb3BzX2NyZWF0ZShkcm1f ZmQpOwogCi0JbGguY29udGV4dF9pZCA9IDB4ZmZmZmZmZmY7Ci0JcmV0ID0gZHJtX2ludGVsX2dl bV9jb250ZXh0X2dldF9pZChsaC5jb250ZXh0LCAmbGguY29udGV4dF9pZCk7Ci0JaWd0X2Fzc2Vy dF9lcShyZXQsIDApOworCWxoLmNvbnRleHRfaWQgPSBnZW1fY29udGV4dF9jcmVhdGUoZHJtX2Zk KTsKIAlpZ3RfYXNzZXJ0X25lcShsaC5jb250ZXh0X2lkLCAweGZmZmZmZmZmKTsKIAotCWxoLmJh dGNoID0gaW50ZWxfYmF0Y2hidWZmZXJfYWxsb2MobGguYnVmbWdyLCBsaC5kZXZpZCk7Ci0JaWd0 X2Fzc2VydChsaC5iYXRjaCk7CisJbGguaWJiID0gaW50ZWxfYmJfY3JlYXRlKGRybV9mZCwgQkFU Q0hfU1opOwogCi0Jc2NyYXRjaF9idWZfaW5pdChsaC5idWZtZ3IsICZsaC5kc3QsIDE5MjAsIDEw ODAsIDApOwotCXNjcmF0Y2hfYnVmX2luaXQobGguYnVmbWdyLCAmbGguc3JjLCAxOTIwLCAxMDgw LCAwKTsKKwlzY3JhdGNoX2J1Zl9pbml0KGxoLmJvcHMsICZsaC5kc3QsIDE5MjAsIDEwODAsIDAp OworCXNjcmF0Y2hfYnVmX2luaXQobGguYm9wcywgJmxoLnNyYywgMTkyMCwgMTA4MCwgMCk7CiB9 CiAKIHN0YXRpYyB2b2lkIGxvYWRfaGVscGVyX2Zpbmkodm9pZCkKIHsKKwlpbnQgaTkxNSA9IGJ1 Zl9vcHNfZ2V0X2ZkKGxoLmJvcHMpOworCiAJaWYgKGxoLmlndF9wcm9jLnJ1bm5pbmcpCiAJCWxv YWRfaGVscGVyX3N0b3AoKTsKIAotCWlmIChsaC5zcmMuYm8pCi0JCWRybV9pbnRlbF9ib191bnJl ZmVyZW5jZShsaC5zcmMuYm8pOwotCWlmIChsaC5kc3QuYm8pCi0JCWRybV9pbnRlbF9ib191bnJl ZmVyZW5jZShsaC5kc3QuYm8pOwotCi0JaWYgKGxoLmJhdGNoKQotCQlpbnRlbF9iYXRjaGJ1ZmZl cl9mcmVlKGxoLmJhdGNoKTsKLQotCWlmIChsaC5jb250ZXh0KQotCQlkcm1faW50ZWxfZ2VtX2Nv bnRleHRfZGVzdHJveShsaC5jb250ZXh0KTsKLQotCWlmIChsaC5idWZtZ3IpCi0JCWRybV9pbnRl bF9idWZtZ3JfZGVzdHJveShsaC5idWZtZ3IpOworCWludGVsX2J1Zl9jbG9zZShsaC5ib3BzLCAm bGguc3JjKTsKKwlpbnRlbF9idWZfY2xvc2UobGguYm9wcywgJmxoLmRzdCk7CisJaW50ZWxfYmJf ZGVzdHJveShsaC5pYmIpOworCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwgbGguY29udGV4dF9p ZCk7CisJYnVmX29wc19kZXN0cm95KGxoLmJvcHMpOwogfQogCiBzdGF0aWMgYm9vbCBleHBlY3Rl ZF9yZXBvcnRfdGltaW5nX2RlbHRhKHVpbnQzMl90IGRlbHRhLCB1aW50MzJfdCBleHBlY3RlZF9k ZWx0YSkKQEAgLTE4ODgsMjAgKzE4NTgsMTEgQEAgdGVzdF9wZXJfY29udGV4dF9tb2RlX3VucHJp dmlsZWdlZCh2b2lkKQogCXdyaXRlX3U2NF9maWxlKCIvcHJvYy9zeXMvZGV2L2k5MTUvcGVyZl9z dHJlYW1fcGFyYW5vaWQiLCAxKTsKIAogCWlndF9mb3JrKGNoaWxkLCAxKSB7Ci0JCWRybV9pbnRl bF9jb250ZXh0ICpjb250ZXh0OwotCQlkcm1faW50ZWxfYnVmbWdyICpidWZtZ3I7CiAJCXVpbnQz Ml90IGN0eF9pZCA9IDB4ZmZmZmZmZmY7IC8qIGludmFsaWQgaWQgKi8KLQkJaW50IHJldDsKIAog CQlpZ3RfZHJvcF9yb290KCk7CiAKLQkJYnVmbWdyID0gZHJtX2ludGVsX2J1Zm1ncl9nZW1faW5p dChkcm1fZmQsIDQwOTYpOwotCQljb250ZXh0ID0gZHJtX2ludGVsX2dlbV9jb250ZXh0X2NyZWF0 ZShidWZtZ3IpOwotCi0JCWlndF9hc3NlcnQoY29udGV4dCk7Ci0KLQkJcmV0ID0gZHJtX2ludGVs X2dlbV9jb250ZXh0X2dldF9pZChjb250ZXh0LCAmY3R4X2lkKTsKLQkJaWd0X2Fzc2VydF9lcShy ZXQsIDApOworCQljdHhfaWQgPSBnZW1fY29udGV4dF9jcmVhdGUoZHJtX2ZkKTsKIAkJaWd0X2Fz c2VydF9uZXEoY3R4X2lkLCAweGZmZmZmZmZmKTsKIAogCQlwcm9wZXJ0aWVzWzFdID0gY3R4X2lk OwpAQCAtMTkwOSw4ICsxODcwLDcgQEAgdGVzdF9wZXJfY29udGV4dF9tb2RlX3VucHJpdmlsZWdl ZCh2b2lkKQogCQlzdHJlYW1fZmQgPSBfX3BlcmZfb3Blbihkcm1fZmQsICZwYXJhbSwgZmFsc2Up OwogCQlfX3BlcmZfY2xvc2Uoc3RyZWFtX2ZkKTsKIAotCQlkcm1faW50ZWxfZ2VtX2NvbnRleHRf ZGVzdHJveShjb250ZXh0KTsKLQkJZHJtX2ludGVsX2J1Zm1ncl9kZXN0cm95KGJ1Zm1ncik7CisJ CWdlbV9jb250ZXh0X2Rlc3Ryb3koZHJtX2ZkLCBjdHhfaWQpOwogCX0KIAogCWlndF93YWl0Y2hp bGRyZW4oKTsKQEAgLTI5MzYsNTUgKzI4OTYsNDQgQEAgZ2VuMTJfdGVzdF9taV9ycGModm9pZCkK IAkJLm51bV9wcm9wZXJ0aWVzID0gQVJSQVlfU0laRShwcm9wZXJ0aWVzKSAvIDIsCiAJCS5wcm9w ZXJ0aWVzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihwcm9wZXJ0aWVzKSwKIAl9OwotCWRybV9pbnRl bF9ibyAqYm87Ci0JZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyOwotCWRybV9pbnRlbF9jb250ZXh0 ICpjb250ZXh0OwotCXN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2g7CisJc3RydWN0IGJ1 Zl9vcHMgKmJvcHM7CisJc3RydWN0IGludGVsX2JiICppYmI7CisJc3RydWN0IGludGVsX2J1ZiAq YnVmOwogI2RlZmluZSBJTlZBTElEX0NUWF9JRCAweGZmZmZmZmZmCiAJdWludDMyX3QgY3R4X2lk ID0gSU5WQUxJRF9DVFhfSUQ7CiAJdWludDMyX3QgKnJlcG9ydDMyOwotCWludCByZXQ7CiAJc2l6 ZV90IGZvcm1hdF9zaXplXzMyOwogCXN0cnVjdCBvYV9mb3JtYXQgZm9ybWF0ID0gZ2V0X29hX2Zv cm1hdCh0ZXN0X3NldC0+cGVyZl9vYV9mb3JtYXQpOwogCiAJLyogRW5zdXJlIHBlcmZfc3RyZWFt X3BhcmFub2lkIGlzIHNldCB0byAxIGJ5IGRlZmF1bHQgKi8KIAl3cml0ZV91NjRfZmlsZSgiL3By b2Mvc3lzL2Rldi9pOTE1L3BlcmZfc3RyZWFtX3BhcmFub2lkIiwgMSk7CiAKLQlidWZtZ3IgPSBk cm1faW50ZWxfYnVmbWdyX2dlbV9pbml0KGRybV9mZCwgNDA5Nik7Ci0JaWd0X2Fzc2VydChidWZt Z3IpOwotCi0JZHJtX2ludGVsX2J1Zm1ncl9nZW1fZW5hYmxlX3JldXNlKGJ1Zm1ncik7Ci0KLQlj b250ZXh0ID0gZHJtX2ludGVsX2dlbV9jb250ZXh0X2NyZWF0ZShidWZtZ3IpOwotCWlndF9hc3Nl cnQoY29udGV4dCk7Ci0KLQlyZXQgPSBkcm1faW50ZWxfZ2VtX2NvbnRleHRfZ2V0X2lkKGNvbnRl eHQsICZjdHhfaWQpOwotCWlndF9hc3NlcnRfZXEocmV0LCAwKTsKKwlib3BzID0gYnVmX29wc19j cmVhdGUoZHJtX2ZkKTsKKwljdHhfaWQgPSBnZW1fY29udGV4dF9jcmVhdGUoZHJtX2ZkKTsKIAlp Z3RfYXNzZXJ0X25lcShjdHhfaWQsIElOVkFMSURfQ1RYX0lEKTsKIAlwcm9wZXJ0aWVzWzFdID0g Y3R4X2lkOwogCi0JYmF0Y2ggPSBpbnRlbF9iYXRjaGJ1ZmZlcl9hbGxvYyhidWZtZ3IsIGRldmlk KTsKLQlibyA9IGRybV9pbnRlbF9ib19hbGxvYyhidWZtZ3IsICJtaV9ycGMgZGVzdCBibyIsIDQw OTYsIDY0KTsKKwlpYmIgPSBpbnRlbF9iYl9jcmVhdGUoZHJtX2ZkLCBCQVRDSF9TWik7CisJYnVm ID0gaW50ZWxfYnVmX2NyZWF0ZShib3BzLCA0MDk2LCAxLCA4LCA2NCwKKwkJCSAgICAgICBJOTE1 X1RJTElOR19OT05FLCBJOTE1X0NPTVBSRVNTSU9OX05PTkUpOwogCi0JcmV0ID0gZHJtX2ludGVs X2JvX21hcChibywgdHJ1ZSk7Ci0JaWd0X2Fzc2VydF9lcShyZXQsIDApOwotCW1lbXNldChiby0+ dmlydHVhbCwgMHg4MCwgNDA5Nik7Ci0JZHJtX2ludGVsX2JvX3VubWFwKGJvKTsKKwlidWZfbWFw KGRybV9mZCwgYnVmLCB0cnVlKTsKKwltZW1zZXQoYnVmLT5wdHIsIDB4ODAsIDQwOTYpOworCWlu dGVsX2J1Zl91bm1hcChidWYpOwogCiAJc3RyZWFtX2ZkID0gX19wZXJmX29wZW4oZHJtX2ZkLCAm cGFyYW0sIGZhbHNlKTsKIAogI2RlZmluZSBSRVBPUlRfSUQgMHhkZWFkYmVlZgogI2RlZmluZSBS RVBPUlRfT0ZGU0VUIDAKLQllbWl0X3JlcG9ydF9wZXJmX2NvdW50KGJhdGNoLAotCQkJICAgICAg IGJvLAorCWVtaXRfcmVwb3J0X3BlcmZfY291bnQoaWJiLAorCQkJICAgICAgIGJ1ZiwKIAkJCSAg ICAgICBSRVBPUlRfT0ZGU0VULAogCQkJICAgICAgIFJFUE9SVF9JRCk7Ci0JaW50ZWxfYmF0Y2hi dWZmZXJfZmx1c2hfd2l0aF9jb250ZXh0KGJhdGNoLCBjb250ZXh0KTsKLQotCXJldCA9IGRybV9p bnRlbF9ib19tYXAoYm8sIGZhbHNlKTsKLQlpZ3RfYXNzZXJ0X2VxKHJldCwgMCk7CisJaW50ZWxf YmJfZmx1c2hfcmVuZGVyX3dpdGhfY29udGV4dChpYmIsIGN0eF9pZCk7CisJaW50ZWxfYmJfc3lu YyhpYmIpOwogCi0JcmVwb3J0MzIgPSBiby0+dmlydHVhbDsKKwlpbnRlbF9idWZfY3B1X21hcChi dWYsIGZhbHNlKTsKKwlyZXBvcnQzMiA9IGJ1Zi0+cHRyOwogCWZvcm1hdF9zaXplXzMyID0gZm9y bWF0LnNpemUgPj4gMjsKIAlkdW1wX3JlcG9ydChyZXBvcnQzMiwgZm9ybWF0X3NpemVfMzIsICJt aS1ycGMiKTsKIApAQCAtMzAwNiwxMSArMjk1NSwxMSBAQCBnZW4xMl90ZXN0X21pX3JwYyh2b2lk KQogCWlndF9hc3NlcnRfbmVxKHJlcG9ydDMyW2Zvcm1hdC5iX29mZiA+PiAyXSwgMHg4MDgwODA4 MCk7CiAJaWd0X2Fzc2VydF9lcShyZXBvcnQzMltmb3JtYXRfc2l6ZV8zMl0sIDB4ODA4MDgwODAp OwogCi0JZHJtX2ludGVsX2JvX3VubWFwKGJvKTsKLQlkcm1faW50ZWxfYm9fdW5yZWZlcmVuY2Uo Ym8pOwotCWludGVsX2JhdGNoYnVmZmVyX2ZyZWUoYmF0Y2gpOwotCWRybV9pbnRlbF9nZW1fY29u dGV4dF9kZXN0cm95KGNvbnRleHQpOwotCWRybV9pbnRlbF9idWZtZ3JfZGVzdHJveShidWZtZ3Ip OworCWludGVsX2J1Zl91bm1hcChidWYpOworCWludGVsX2J1Zl9kZXN0cm95KGJ1Zik7CisJaW50 ZWxfYmJfZGVzdHJveShpYmIpOworCWdlbV9jb250ZXh0X2Rlc3Ryb3koZHJtX2ZkLCBjdHhfaWQp OworCWJ1Zl9vcHNfZGVzdHJveShib3BzKTsKIAlfX3BlcmZfY2xvc2Uoc3RyZWFtX2ZkKTsKIH0K IApAQCAtMzAzNCw0MSArMjk4MywzMyBAQCB0ZXN0X21pX3JwYyh2b2lkKQogCQkubnVtX3Byb3Bl cnRpZXMgPSBzaXplb2YocHJvcGVydGllcykgLyAxNiwKIAkJLnByb3BlcnRpZXNfcHRyID0gdG9f dXNlcl9wb2ludGVyKHByb3BlcnRpZXMpLAogCX07Ci0JZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdy ID0gZHJtX2ludGVsX2J1Zm1ncl9nZW1faW5pdChkcm1fZmQsIDQwOTYpOwotCWRybV9pbnRlbF9j b250ZXh0ICpjb250ZXh0OwotCXN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2g7Ci0JZHJt X2ludGVsX2JvICpibzsKLQl1aW50MzJfdCAqcmVwb3J0MzI7Ci0JaW50IHJldDsKKwlzdHJ1Y3Qg YnVmX29wcyAqYm9wcyA9IGJ1Zl9vcHNfY3JlYXRlKGRybV9mZCk7CisJc3RydWN0IGludGVsX2Ji ICppYmI7CisJc3RydWN0IGludGVsX2J1ZiAqYnVmOworCXVpbnQzMl90ICpyZXBvcnQzMiwgY3R4 X2lkOwogCiAJc3RyZWFtX2ZkID0gX19wZXJmX29wZW4oZHJtX2ZkLCAmcGFyYW0sIGZhbHNlKTsK IAotCWRybV9pbnRlbF9idWZtZ3JfZ2VtX2VuYWJsZV9yZXVzZShidWZtZ3IpOworCWN0eF9pZCA9 IGdlbV9jb250ZXh0X2NyZWF0ZShkcm1fZmQpOwogCi0JY29udGV4dCA9IGRybV9pbnRlbF9nZW1f Y29udGV4dF9jcmVhdGUoYnVmbWdyKTsKLQlpZ3RfYXNzZXJ0KGNvbnRleHQpOworCWliYiA9IGlu dGVsX2JiX2NyZWF0ZShkcm1fZmQsIEJBVENIX1NaKTsKKwlidWYgPSBpbnRlbF9idWZfY3JlYXRl KGJvcHMsIDQwOTYsIDEsIDgsIDY0LAorCQkJICAgICAgIEk5MTVfVElMSU5HX05PTkUsIEk5MTVf Q09NUFJFU1NJT05fTk9ORSk7CiAKLQliYXRjaCA9IGludGVsX2JhdGNoYnVmZmVyX2FsbG9jKGJ1 Zm1nciwgZGV2aWQpOworCWJ1Zl9tYXAoZHJtX2ZkLCBidWYsIHRydWUpOworCW1lbXNldChidWYt PnB0ciwgMHg4MCwgNDA5Nik7CisJaW50ZWxfYnVmX3VubWFwKGJ1Zik7CiAKLQlibyA9IGRybV9p bnRlbF9ib19hbGxvYyhidWZtZ3IsICJtaV9ycGMgZGVzdCBibyIsIDQwOTYsIDY0KTsKLQotCXJl dCA9IGRybV9pbnRlbF9ib19tYXAoYm8sIHRydWUpOwotCWlndF9hc3NlcnRfZXEocmV0LCAwKTsK LQotCW1lbXNldChiby0+dmlydHVhbCwgMHg4MCwgNDA5Nik7Ci0JZHJtX2ludGVsX2JvX3VubWFw KGJvKTsKLQotCWVtaXRfcmVwb3J0X3BlcmZfY291bnQoYmF0Y2gsCi0JCQkgICAgICAgYm8sIC8q IGRzdCAqLworCWVtaXRfcmVwb3J0X3BlcmZfY291bnQoaWJiLAorCQkJICAgICAgIGJ1ZiwgLyog ZHN0ICovCiAJCQkgICAgICAgMCwgLyogZHN0IG9mZnNldCBpbiBieXRlcyAqLwogCQkJICAgICAg IDB4ZGVhZGJlZWYpOyAvKiByZXBvcnQgSUQgKi8KIAotCWludGVsX2JhdGNoYnVmZmVyX2ZsdXNo X3dpdGhfY29udGV4dChiYXRjaCwgY29udGV4dCk7CisJaW50ZWxfYmJfZmx1c2hfcmVuZGVyX3dp dGhfY29udGV4dChpYmIsIGN0eF9pZCk7CisJaW50ZWxfYmJfc3luYyhpYmIpOwogCi0JcmV0ID0g ZHJtX2ludGVsX2JvX21hcChibywgZmFsc2UgLyogd3JpdGUgZW5hYmxlICovKTsKLQlpZ3RfYXNz ZXJ0X2VxKHJldCwgMCk7Ci0KLQlyZXBvcnQzMiA9IGJvLT52aXJ0dWFsOworCWludGVsX2J1Zl9j cHVfbWFwKGJ1ZiwgZmFsc2UpOworCXJlcG9ydDMyID0gYnVmLT5wdHI7CiAJZHVtcF9yZXBvcnQo cmVwb3J0MzIsIDY0LCAibWktcnBjIik7CiAJaWd0X2Fzc2VydF9lcShyZXBvcnQzMlswXSwgMHhk ZWFkYmVlZik7IC8qIHJlcG9ydCBJRCAqLwogCWlndF9hc3NlcnRfbmVxKHJlcG9ydDMyWzFdLCAw KTsgLyogdGltZXN0YW1wICovCkBAIC0zMDc2LDE3ICszMDE3LDE3IEBAIHRlc3RfbWlfcnBjKHZv aWQpCiAJaWd0X2Fzc2VydF9uZXEocmVwb3J0MzJbNjNdLCAweDgwODA4MDgwKTsgLyogZW5kIG9m IHJlcG9ydCAqLwogCWlndF9hc3NlcnRfZXEocmVwb3J0MzJbNjRdLCAweDgwODA4MDgwKTsgLyog YWZ0ZXIgMjU2IGJ5dGUgcmVwb3J0ICovCiAKLQlkcm1faW50ZWxfYm9fdW5tYXAoYm8pOwotCWRy bV9pbnRlbF9ib191bnJlZmVyZW5jZShibyk7Ci0JaW50ZWxfYmF0Y2hidWZmZXJfZnJlZShiYXRj aCk7Ci0JZHJtX2ludGVsX2dlbV9jb250ZXh0X2Rlc3Ryb3koY29udGV4dCk7Ci0JZHJtX2ludGVs X2J1Zm1ncl9kZXN0cm95KGJ1Zm1ncik7CisJaW50ZWxfYnVmX3VubWFwKGJ1Zik7CisJaW50ZWxf YnVmX2Rlc3Ryb3koYnVmKTsKKwlpbnRlbF9iYl9kZXN0cm95KGliYik7CisJZ2VtX2NvbnRleHRf ZGVzdHJveShkcm1fZmQsIGN0eF9pZCk7CisJYnVmX29wc19kZXN0cm95KGJvcHMpOwogCV9fcGVy Zl9jbG9zZShzdHJlYW1fZmQpOwogfQogCiBzdGF0aWMgdm9pZAotZW1pdF9zdGFsbF90aW1lc3Rh bXBfYW5kX3JwYyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAotCQkJICAgICBkcm1f aW50ZWxfYm8gKmRzdCwKK2VtaXRfc3RhbGxfdGltZXN0YW1wX2FuZF9ycGMoc3RydWN0IGludGVs X2JiICppYmIsCisJCQkgICAgIHN0cnVjdCBpbnRlbF9idWYgKmRzdCwKIAkJCSAgICAgaW50IHRp bWVzdGFtcF9vZmZzZXQsCiAJCQkgICAgIGludCByZXBvcnRfZHN0X29mZnNldCwKIAkJCSAgICAg dWludDMyX3QgcmVwb3J0X2lkKQpAQCAtMzA5NSwyNyArMzAzNiwyMSBAQCBlbWl0X3N0YWxsX3Rp bWVzdGFtcF9hbmRfcnBjKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCiAJCQkJICAg UElQRV9DT05UUk9MX1JFTkRFUl9UQVJHRVRfRkxVU0ggfAogCQkJCSAgIFBJUEVfQ09OVFJPTF9X UklURV9USU1FU1RBTVApOwogCi0JaWYgKGludGVsX2dlbihkZXZpZCkgPj0gOCkgewotCQlCRUdJ Tl9CQVRDSCg1LCAxKTsKLQkJT1VUX0JBVENIKEdGWF9PUF9QSVBFX0NPTlRST0wgfCAoNiAtIDIp KTsKLQkJT1VUX0JBVENIKHBpcGVfY3RsX2ZsYWdzKTsKLQkJT1VUX1JFTE9DKGRzdCwgSTkxNV9H RU1fRE9NQUlOX0lOU1RSVUNUSU9OLCBJOTE1X0dFTV9ET01BSU5fSU5TVFJVQ1RJT04sCi0JCQkg IHRpbWVzdGFtcF9vZmZzZXQpOwotCQlPVVRfQkFUQ0goMCk7IC8qIGltbSBsb3dlciAqLwotCQlP VVRfQkFUQ0goMCk7IC8qIGltbSB1cHBlciAqLwotCQlBRFZBTkNFX0JBVENIKCk7Ci0JfSBlbHNl IHsKLQkJQkVHSU5fQkFUQ0goNSwgMSk7Ci0JCU9VVF9CQVRDSChHRlhfT1BfUElQRV9DT05UUk9M IHwgKDUgLSAyKSk7Ci0JCU9VVF9CQVRDSChwaXBlX2N0bF9mbGFncyk7Ci0JCU9VVF9SRUxPQyhk c3QsIEk5MTVfR0VNX0RPTUFJTl9JTlNUUlVDVElPTiwgSTkxNV9HRU1fRE9NQUlOX0lOU1RSVUNU SU9OLAotCQkJICB0aW1lc3RhbXBfb2Zmc2V0KTsKLQkJT1VUX0JBVENIKDApOyAvKiBpbW0gbG93 ZXIgKi8KLQkJT1VUX0JBVENIKDApOyAvKiBpbW0gdXBwZXIgKi8KLQkJQURWQU5DRV9CQVRDSCgp OwotCX0KKwlpbnRlbF9iYl9hZGRfaW50ZWxfYnVmKGliYiwgZHN0LCB0cnVlKTsKKworCWlmIChp bnRlbF9nZW4oZGV2aWQpID49IDgpCisJCWludGVsX2JiX291dChpYmIsIEdGWF9PUF9QSVBFX0NP TlRST0wgfCAoNiAtIDIpKTsKKwllbHNlCisJCWludGVsX2JiX291dChpYmIsIEdGWF9PUF9QSVBF X0NPTlRST0wgfCAoNSAtIDIpKTsKKworCWludGVsX2JiX291dChpYmIsIHBpcGVfY3RsX2ZsYWdz KTsKKwlpbnRlbF9iYl9lbWl0X3JlbG9jKGliYiwgZHN0LT5oYW5kbGUsCisJCQkgICAgSTkxNV9H RU1fRE9NQUlOX0lOU1RSVUNUSU9OLCBJOTE1X0dFTV9ET01BSU5fSU5TVFJVQ1RJT04sCisJCQkg ICAgdGltZXN0YW1wX29mZnNldCwgZHN0LT5hZGRyLm9mZnNldCk7CisJaW50ZWxfYmJfb3V0KGli YiwgMCk7IC8qIGltbSBsb3dlciAqLworCWludGVsX2JiX291dChpYmIsIDApOyAvKiBpbW0gdXBw ZXIgKi8KIAotCWVtaXRfcmVwb3J0X3BlcmZfY291bnQoYmF0Y2gsIGRzdCwgcmVwb3J0X2RzdF9v ZmZzZXQsIHJlcG9ydF9pZCk7CisJZW1pdF9yZXBvcnRfcGVyZl9jb3VudChpYmIsIGRzdCwgcmVw b3J0X2RzdF9vZmZzZXQsIHJlcG9ydF9pZCk7CiB9CiAKIC8qIFRlc3RzIHRoZSBJTlRFTF9wZXJm b3JtYW5jZV9xdWVyeSB1c2UgY2FzZSB3aGVyZSBhbiB1bnByaXZpbGVnZWQgcHJvY2VzcwpAQCAt MzE1NiwxMSArMzA5MSwxMCBAQCBoc3dfdGVzdF9zaW5nbGVfY3R4X2NvdW50ZXJzKHZvaWQpCiAJ d3JpdGVfdTY0X2ZpbGUoIi9wcm9jL3N5cy9kZXYvaTkxNS9wZXJmX3N0cmVhbV9wYXJhbm9pZCIs IDEpOwogCiAJaWd0X2ZvcmsoY2hpbGQsIDEpIHsKLQkJZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdy OwotCQlkcm1faW50ZWxfY29udGV4dCAqY29udGV4dDAsICpjb250ZXh0MTsKLQkJc3RydWN0IGlu dGVsX2JhdGNoYnVmZmVyICpiYXRjaDsKLQkJc3RydWN0IGlndF9idWYgc3JjWzNdLCBkc3RbM107 Ci0JCWRybV9pbnRlbF9ibyAqYm87CisJCXN0cnVjdCBidWZfb3BzICpib3BzOworCQlzdHJ1Y3Qg aW50ZWxfYnVmIHNyY1szXSwgZHN0WzNdLCAqZHN0X2J1ZjsKKwkJc3RydWN0IGludGVsX2JiICpp YmIwLCAqaWJiMTsKKwkJdWludDMyX3QgY29udGV4dDBfaWQsIGNvbnRleHQxX2lkOwogCQl1aW50 MzJfdCAqcmVwb3J0MF8zMiwgKnJlcG9ydDFfMzI7CiAJCXVpbnQ2NF90IHRpbWVzdGFtcDBfNjQs IHRpbWVzdGFtcDFfNjQ7CiAJCXVpbnQzMl90IGRlbHRhX3RzNjQsIGRlbHRhX29hMzI7CkBAIC0z MTY5LDI2ICszMTAzLDI0IEBAIGhzd190ZXN0X3NpbmdsZV9jdHhfY291bnRlcnModm9pZCkKIAkJ aW50IG5fc2FtcGxlc193cml0dGVuOwogCQlpbnQgd2lkdGggPSA4MDA7CiAJCWludCBoZWlnaHQg PSA2MDA7Ci0JCXVpbnQzMl90IGN0eF9pZCA9IDB4ZmZmZmZmZmY7IC8qIGludmFsaWQgaWQgKi8K LQkJaW50IHJldDsKIAogCQlpZ3RfZHJvcF9yb290KCk7CiAKLQkJYnVmbWdyID0gZHJtX2ludGVs X2J1Zm1ncl9nZW1faW5pdChkcm1fZmQsIDQwOTYpOwotCQlkcm1faW50ZWxfYnVmbWdyX2dlbV9l bmFibGVfcmV1c2UoYnVmbWdyKTsKKwkJYm9wcyA9IGJ1Zl9vcHNfY3JlYXRlKGRybV9mZCk7CiAK IAkJZm9yIChpbnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHNyYyk7IGkrKykgewotCQkJc2NyYXRj aF9idWZfaW5pdChidWZtZ3IsICZzcmNbaV0sIHdpZHRoLCBoZWlnaHQsIDB4ZmYwMDAwZmYpOwot CQkJc2NyYXRjaF9idWZfaW5pdChidWZtZ3IsICZkc3RbaV0sIHdpZHRoLCBoZWlnaHQsIDB4MDBm ZjAwZmYpOworCQkJc2NyYXRjaF9idWZfaW5pdChib3BzLCAmc3JjW2ldLCB3aWR0aCwgaGVpZ2h0 LCAweGZmMDAwMGZmKTsKKwkJCXNjcmF0Y2hfYnVmX2luaXQoYm9wcywgJmRzdFtpXSwgd2lkdGgs IGhlaWdodCwgMHgwMGZmMDBmZik7CiAJCX0KIAotCQliYXRjaCA9IGludGVsX2JhdGNoYnVmZmVy X2FsbG9jKGJ1Zm1nciwgZGV2aWQpOwotCi0JCWNvbnRleHQwID0gZHJtX2ludGVsX2dlbV9jb250 ZXh0X2NyZWF0ZShidWZtZ3IpOwotCQlpZ3RfYXNzZXJ0KGNvbnRleHQwKTsKLQotCQljb250ZXh0 MSA9IGRybV9pbnRlbF9nZW1fY29udGV4dF9jcmVhdGUoYnVmbWdyKTsKLQkJaWd0X2Fzc2VydChj b250ZXh0MSk7CisJCS8qCisJCSAqIFdlIGN1cnJlbnRseSBjYWNoZSBhZGRyZXNzZXMgZm9yIGJ1 ZmZlcnMgd2l0aGluCisJCSAqIGludGVsX2JiLCBzbyB1c2Ugc2VwYXJhdGUgYmF0Y2hlcyBmb3Ig ZGlmZmVyZW50IGNvbnRleHRzCisJCSAqLworCQlpYmIwID0gaW50ZWxfYmJfY3JlYXRlKGRybV9m ZCwgQkFUQ0hfU1opOworCQlpYmIxID0gaW50ZWxfYmJfY3JlYXRlKGRybV9mZCwgQkFUQ0hfU1op OworCQljb250ZXh0MF9pZCA9IGdlbV9jb250ZXh0X2NyZWF0ZShkcm1fZmQpOworCQljb250ZXh0 MV9pZCA9IGdlbV9jb250ZXh0X2NyZWF0ZShkcm1fZmQpOwogCiAJCWlndF9kZWJ1Zygic3VibWl0 dGluZyB3YXJtIHVwIHJlbmRlcl9jb3B5XG4iKTsKIApAQCAtMzIxMiwzNCArMzE0NCwzMiBAQCBo c3dfdGVzdF9zaW5nbGVfY3R4X2NvdW50ZXJzKHZvaWQpCiAJCSAqIHVwIHBpbm5pbmcgdGhlIGNv bnRleHQgc2luY2UgdGhlcmUgd29uJ3QgZXZlciBiZSBhIHBpbm5pbmcKIAkJICogaG9vayBjYWxs YmFjay4KIAkJICovCi0JCXJlbmRlcl9jb3B5KGJhdGNoLAotCQkJICAgIGNvbnRleHQwLAorCQly ZW5kZXJfY29weShpYmIwLAorCQkJICAgIGNvbnRleHQwX2lkLAogCQkJICAgICZzcmNbMF0sIDAs IDAsIHdpZHRoLCBoZWlnaHQsCiAJCQkgICAgJmRzdFswXSwgMCwgMCk7CiAKLQkJcmV0ID0gZHJt X2ludGVsX2dlbV9jb250ZXh0X2dldF9pZChjb250ZXh0MCwgJmN0eF9pZCk7Ci0JCWlndF9hc3Nl cnRfZXEocmV0LCAwKTsKLQkJaWd0X2Fzc2VydF9uZXEoY3R4X2lkLCAweGZmZmZmZmZmKTsKLQkJ cHJvcGVydGllc1sxXSA9IGN0eF9pZDsKKwkJcHJvcGVydGllc1sxXSA9IGNvbnRleHQwX2lkOwog Ci0JCWludGVsX2JhdGNoYnVmZmVyX2ZsdXNoX3dpdGhfY29udGV4dChiYXRjaCwgY29udGV4dDAp OworCQlpbnRlbF9iYl9mbHVzaF9yZW5kZXJfd2l0aF9jb250ZXh0KGliYjAsIGNvbnRleHQwX2lk KTsKKwkJaW50ZWxfYmJfc3luYyhpYmIwKTsKIAotCQlzY3JhdGNoX2J1Zl9tZW1zZXQoc3JjWzBd LmJvLCB3aWR0aCwgaGVpZ2h0LCAweGZmMDAwMGZmKTsKLQkJc2NyYXRjaF9idWZfbWVtc2V0KGRz dFswXS5ibywgd2lkdGgsIGhlaWdodCwgMHgwMGZmMDBmZik7CisJCXNjcmF0Y2hfYnVmX21lbXNl dCgmc3JjWzBdLCB3aWR0aCwgaGVpZ2h0LCAweGZmMDAwMGZmKTsKKwkJc2NyYXRjaF9idWZfbWVt c2V0KCZkc3RbMF0sIHdpZHRoLCBoZWlnaHQsIDB4MDBmZjAwZmYpOwogCiAJCWlndF9kZWJ1Zygi b3BlbmluZyBpOTE1LXBlcmYgc3RyZWFtXG4iKTsKIAkJc3RyZWFtX2ZkID0gX19wZXJmX29wZW4o ZHJtX2ZkLCAmcGFyYW0sIGZhbHNlKTsKIAotCQlibyA9IGRybV9pbnRlbF9ib19hbGxvYyhidWZt Z3IsICJtaV9ycGMgZGVzdCBibyIsIDQwOTYsIDY0KTsKKwkJZHN0X2J1ZiA9IGludGVsX2J1Zl9j cmVhdGUoYm9wcywgNDA5NiwgMSwgOCwgNjQsCisJCQkJCSAgIEk5MTVfVElMSU5HX05PTkUsCisJ CQkJCSAgIEk5MTVfQ09NUFJFU1NJT05fTk9ORSk7CiAKLQkJcmV0ID0gZHJtX2ludGVsX2JvX21h cChibywgdHJ1ZSAvKiB3cml0ZSBlbmFibGUgKi8pOwotCQlpZ3RfYXNzZXJ0X2VxKHJldCwgMCk7 CisJCWJ1Zl9tYXAoZHJtX2ZkLCBkc3RfYnVmLCB0cnVlIC8qIHdyaXRlIGVuYWJsZSAqLyk7CisJ CW1lbXNldChkc3RfYnVmLT5wdHIsIDB4ODAsIDQwOTYpOworCQlpbnRlbF9idWZfdW5tYXAoZHN0 X2J1Zik7CiAKLQkJbWVtc2V0KGJvLT52aXJ0dWFsLCAweDgwLCA0MDk2KTsKLQkJZHJtX2ludGVs X2JvX3VubWFwKGJvKTsKLQotCQllbWl0X3N0YWxsX3RpbWVzdGFtcF9hbmRfcnBjKGJhdGNoLAot CQkJCQkgICAgIGJvLAorCQllbWl0X3N0YWxsX3RpbWVzdGFtcF9hbmRfcnBjKGliYjAsCisJCQkJ CSAgICAgZHN0X2J1ZiwKIAkJCQkJICAgICA1MTIgLyogdGltZXN0YW1wIG9mZnNldCAqLywKIAkJ CQkJICAgICAwLCAvKiByZXBvcnQgZHN0IG9mZnNldCAqLwogCQkJCQkgICAgIDB4ZGVhZGJlZWYp OyAvKiByZXBvcnQgaWQgKi8KQEAgLTMyNDksNDUgKzMxNzksNDUgQEAgaHN3X3Rlc3Rfc2luZ2xl X2N0eF9jb3VudGVycyh2b2lkKQogCQkgKiB0aGF0IHRoZSBQSVBFX0NPTlRST0wgKyBNSV9SUEMg Y29tbWFuZHMgd2lsbCBiZSBpbiBhCiAJCSAqIHNlcGFyYXRlIGJhdGNoIGZyb20gdGhlIGNvcHku CiAJCSAqLwotCQlpbnRlbF9iYXRjaGJ1ZmZlcl9mbHVzaF93aXRoX2NvbnRleHQoYmF0Y2gsIGNv bnRleHQwKTsKKwkJaW50ZWxfYmJfZmx1c2hfcmVuZGVyX3dpdGhfY29udGV4dChpYmIwLCBjb250 ZXh0MF9pZCk7CiAKLQkJcmVuZGVyX2NvcHkoYmF0Y2gsCi0JCQkgICAgY29udGV4dDAsCisJCXJl bmRlcl9jb3B5KGliYjAsCisJCQkgICAgY29udGV4dDBfaWQsCiAJCQkgICAgJnNyY1swXSwgMCwg MCwgd2lkdGgsIGhlaWdodCwKIAkJCSAgICAmZHN0WzBdLCAwLCAwKTsKIAogCQkvKiBBbm90aGVy IHJlZHVuZGFudCBmbHVzaCB0byBjbGFyaWZ5IGJhdGNoIGJvIGlzIGZyZWUgdG8gcmV1c2UgKi8K LQkJaW50ZWxfYmF0Y2hidWZmZXJfZmx1c2hfd2l0aF9jb250ZXh0KGJhdGNoLCBjb250ZXh0MCk7 CisJCWludGVsX2JiX2ZsdXNoX3JlbmRlcl93aXRoX2NvbnRleHQoaWJiMCwgY29udGV4dDBfaWQp OwogCiAJCS8qIHN1Ym1pdCB0d28gY29waWVzIG9uIHRoZSBvdGhlciBjb250ZXh0IHRvIGF2b2lk IGEgZmFsc2UKIAkJICogcG9zaXRpdmUgaW4gY2FzZSB0aGUgZHJpdmVyIHNvbWVob3cgZW5kZWQg dXAgZmlsdGVyaW5nIGZvcgogCQkgKiBjb250ZXh0MQogCQkgKi8KLQkJcmVuZGVyX2NvcHkoYmF0 Y2gsCi0JCQkgICAgY29udGV4dDEsCisJCXJlbmRlcl9jb3B5KGliYjEsCisJCQkgICAgY29udGV4 dDFfaWQsCiAJCQkgICAgJnNyY1sxXSwgMCwgMCwgd2lkdGgsIGhlaWdodCwKIAkJCSAgICAmZHN0 WzFdLCAwLCAwKTsKIAotCQlyZW5kZXJfY29weShiYXRjaCwKLQkJCSAgICBjb250ZXh0MSwKKwkJ cmVuZGVyX2NvcHkoaWJiMSwKKwkJCSAgICBjb250ZXh0MV9pZCwKIAkJCSAgICAmc3JjWzJdLCAw LCAwLCB3aWR0aCwgaGVpZ2h0LAogCQkJICAgICZkc3RbMl0sIDAsIDApOwogCiAJCS8qIEFuZCBh bm90aGVyICovCi0JCWludGVsX2JhdGNoYnVmZmVyX2ZsdXNoX3dpdGhfY29udGV4dChiYXRjaCwg Y29udGV4dDEpOworCQlpbnRlbF9iYl9mbHVzaF9yZW5kZXJfd2l0aF9jb250ZXh0KGliYjEsIGNv bnRleHQxX2lkKTsKIAotCQllbWl0X3N0YWxsX3RpbWVzdGFtcF9hbmRfcnBjKGJhdGNoLAotCQkJ CQkgICAgIGJvLAorCQllbWl0X3N0YWxsX3RpbWVzdGFtcF9hbmRfcnBjKGliYjAsCisJCQkJCSAg ICAgZHN0X2J1ZiwKIAkJCQkJICAgICA1MjAgLyogdGltZXN0YW1wIG9mZnNldCAqLywKIAkJCQkJ ICAgICAyNTYsIC8qIHJlcG9ydCBkc3Qgb2Zmc2V0ICovCiAJCQkJCSAgICAgMHhiZWVmYmVlZik7 IC8qIHJlcG9ydCBpZCAqLwogCi0JCWludGVsX2JhdGNoYnVmZmVyX2ZsdXNoX3dpdGhfY29udGV4 dChiYXRjaCwgY29udGV4dDApOworCQlpbnRlbF9iYl9mbHVzaF9yZW5kZXJfd2l0aF9jb250ZXh0 KGliYjAsIGNvbnRleHQwX2lkKTsKKwkJaW50ZWxfYmJfc3luYyhpYmIwKTsKIAotCQlyZXQgPSBk cm1faW50ZWxfYm9fbWFwKGJvLCBmYWxzZSAvKiB3cml0ZSBlbmFibGUgKi8pOwotCQlpZ3RfYXNz ZXJ0X2VxKHJldCwgMCk7CisJCWludGVsX2J1Zl9jcHVfbWFwKGRzdF9idWYsIGZhbHNlIC8qIHdy aXRlIGVuYWJsZSAqLyk7CiAKLQkJcmVwb3J0MF8zMiA9IGJvLT52aXJ0dWFsOworCQlyZXBvcnQw XzMyID0gZHN0X2J1Zi0+cHRyOwogCQlpZ3RfYXNzZXJ0X2VxKHJlcG9ydDBfMzJbMF0sIDB4ZGVh ZGJlZWYpOyAvKiByZXBvcnQgSUQgKi8KIAkJaWd0X2Fzc2VydF9uZXEocmVwb3J0MF8zMlsxXSwg MCk7IC8qIHRpbWVzdGFtcCAqLwogCkBAIC0zMzA3LDggKzMyMzcsOCBAQCBoc3dfdGVzdF9zaW5n bGVfY3R4X2NvdW50ZXJzKHZvaWQpCiAJCWlndF9kZWJ1ZygidGltZXN0YW1wMzIgMCA9ICV1XG4i LCByZXBvcnQwXzMyWzFdKTsKIAkJaWd0X2RlYnVnKCJ0aW1lc3RhbXAzMiAxID0gJXVcbiIsIHJl cG9ydDFfMzJbMV0pOwogCi0JCXRpbWVzdGFtcDBfNjQgPSAqKHVpbnQ2NF90ICopKCgodWludDhf dCAqKWJvLT52aXJ0dWFsKSArIDUxMik7Ci0JCXRpbWVzdGFtcDFfNjQgPSAqKHVpbnQ2NF90ICop KCgodWludDhfdCAqKWJvLT52aXJ0dWFsKSArIDUyMCk7CisJCXRpbWVzdGFtcDBfNjQgPSAqKHVp bnQ2NF90ICopKCgodWludDhfdCAqKWRzdF9idWYtPnB0cikgKyA1MTIpOworCQl0aW1lc3RhbXAx XzY0ID0gKih1aW50NjRfdCAqKSgoKHVpbnQ4X3QgKilkc3RfYnVmLT5wdHIpICsgNTIwKTsKIAog CQlpZ3RfZGVidWcoInRpbWVzdGFtcDY0IDAgPSAlIlBSSXU2NCJcbiIsIHRpbWVzdGFtcDBfNjQp OwogCQlpZ3RfZGVidWcoInRpbWVzdGFtcDY0IDEgPSAlIlBSSXU2NCJcbiIsIHRpbWVzdGFtcDFf NjQpOwpAQCAtMzMzNiwxNiArMzI2NiwxNyBAQCBoc3dfdGVzdF9zaW5nbGVfY3R4X2NvdW50ZXJz KHZvaWQpCiAJCWlndF9hc3NlcnQoZGVsdGFfZGVsdGEgPD0gMzIwKTsKIAogCQlmb3IgKGludCBp ID0gMDsgaSA8IEFSUkFZX1NJWkUoc3JjKTsgaSsrKSB7Ci0JCQlkcm1faW50ZWxfYm9fdW5yZWZl cmVuY2Uoc3JjW2ldLmJvKTsKLQkJCWRybV9pbnRlbF9ib191bnJlZmVyZW5jZShkc3RbaV0uYm8p OworCQkJaW50ZWxfYnVmX2Nsb3NlKGJvcHMsICZzcmNbaV0pOworCQkJaW50ZWxfYnVmX2Nsb3Nl KGJvcHMsICZkc3RbaV0pOwogCQl9CiAKLQkJZHJtX2ludGVsX2JvX3VubWFwKGJvKTsKLQkJZHJt X2ludGVsX2JvX3VucmVmZXJlbmNlKGJvKTsKLQkJaW50ZWxfYmF0Y2hidWZmZXJfZnJlZShiYXRj aCk7Ci0JCWRybV9pbnRlbF9nZW1fY29udGV4dF9kZXN0cm95KGNvbnRleHQwKTsKLQkJZHJtX2lu dGVsX2dlbV9jb250ZXh0X2Rlc3Ryb3koY29udGV4dDEpOwotCQlkcm1faW50ZWxfYnVmbWdyX2Rl c3Ryb3koYnVmbWdyKTsKKwkJaW50ZWxfYnVmX3VubWFwKGRzdF9idWYpOworCQlpbnRlbF9idWZf ZGVzdHJveShkc3RfYnVmKTsKKwkJaW50ZWxfYmJfZGVzdHJveShpYmIwKTsKKwkJaW50ZWxfYmJf ZGVzdHJveShpYmIxKTsKKwkJZ2VtX2NvbnRleHRfZGVzdHJveShkcm1fZmQsIGNvbnRleHQwX2lk KTsKKwkJZ2VtX2NvbnRleHRfZGVzdHJveShkcm1fZmQsIGNvbnRleHQxX2lkKTsKKwkJYnVmX29w c19kZXN0cm95KGJvcHMpOwogCQlfX3BlcmZfY2xvc2Uoc3RyZWFtX2ZkKTsKIAl9CiAKQEAgLTM0 MDYsMTEgKzMzMzcsMTAgQEAgZ2VuOF90ZXN0X3NpbmdsZV9jdHhfcmVuZGVyX3RhcmdldF93cml0 ZXNfYV9jb3VudGVyKHZvaWQpCiAKIAkJaWd0X2ZvcmtfaGVscGVyKCZjaGlsZCkgewogCQkJc3Ry dWN0IGRybV9pOTE1X3BlcmZfcmVjb3JkX2hlYWRlciAqaGVhZGVyOwotCQkJZHJtX2ludGVsX2J1 Zm1nciAqYnVmbWdyOwotCQkJZHJtX2ludGVsX2NvbnRleHQgKmNvbnRleHQwLCAqY29udGV4dDE7 Ci0JCQlzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoOwotCQkJc3RydWN0IGlndF9idWYg c3JjWzNdLCBkc3RbM107Ci0JCQlkcm1faW50ZWxfYm8gKmJvOworCQkJc3RydWN0IGJ1Zl9vcHMg KmJvcHM7CisJCQlzdHJ1Y3QgaW50ZWxfYmIgKmliYjAsICppYmIxOworCQkJc3RydWN0IGludGVs X2J1ZiBzcmNbM10sIGRzdFszXSwgKmRzdF9idWY7CisJCQl1aW50MzJfdCBjb250ZXh0MF9pZCwg Y29udGV4dDFfaWQ7CiAJCQl1aW50MzJfdCAqcmVwb3J0MF8zMiwgKnJlcG9ydDFfMzI7CiAJCQl1 aW50MzJfdCAqcHJldiwgKmxwcmV2ID0gTlVMTDsKIAkJCXVpbnQ2NF90IHRpbWVzdGFtcDBfNjQs IHRpbWVzdGFtcDFfNjQ7CkBAIC0zNDI4LDIxICszMzU4LDE3IEBAIGdlbjhfdGVzdF9zaW5nbGVf Y3R4X3JlbmRlcl90YXJnZXRfd3JpdGVzX2FfY291bnRlcih2b2lkKQogCQkJCS5mb3JtYXQgPSB0 ZXN0X3NldC0+cGVyZl9vYV9mb3JtYXQKIAkJCX07CiAKLQkJCWJ1Zm1nciA9IGRybV9pbnRlbF9i dWZtZ3JfZ2VtX2luaXQoZHJtX2ZkLCA0MDk2KTsKLQkJCWRybV9pbnRlbF9idWZtZ3JfZ2VtX2Vu YWJsZV9yZXVzZShidWZtZ3IpOworCQkJYm9wcyA9IGJ1Zl9vcHNfY3JlYXRlKGRybV9mZCk7CiAK IAkJCWZvciAoaW50IGkgPSAwOyBpIDwgQVJSQVlfU0laRShzcmMpOyBpKyspIHsKLQkJCQlzY3Jh dGNoX2J1Zl9pbml0KGJ1Zm1nciwgJnNyY1tpXSwgd2lkdGgsIGhlaWdodCwgMHhmZjAwMDBmZik7 Ci0JCQkJc2NyYXRjaF9idWZfaW5pdChidWZtZ3IsICZkc3RbaV0sIHdpZHRoLCBoZWlnaHQsIDB4 MDBmZjAwZmYpOworCQkJCXNjcmF0Y2hfYnVmX2luaXQoYm9wcywgJnNyY1tpXSwgd2lkdGgsIGhl aWdodCwgMHhmZjAwMDBmZik7CisJCQkJc2NyYXRjaF9idWZfaW5pdChib3BzLCAmZHN0W2ldLCB3 aWR0aCwgaGVpZ2h0LCAweDAwZmYwMGZmKTsKIAkJCX0KIAotCQkJYmF0Y2ggPSBpbnRlbF9iYXRj aGJ1ZmZlcl9hbGxvYyhidWZtZ3IsIGRldmlkKTsKLQotCQkJY29udGV4dDAgPSBkcm1faW50ZWxf Z2VtX2NvbnRleHRfY3JlYXRlKGJ1Zm1ncik7Ci0JCQlpZ3RfYXNzZXJ0KGNvbnRleHQwKTsKLQot CQkJY29udGV4dDEgPSBkcm1faW50ZWxfZ2VtX2NvbnRleHRfY3JlYXRlKGJ1Zm1ncik7Ci0JCQlp Z3RfYXNzZXJ0KGNvbnRleHQxKTsKKwkJCWliYjAgPSBpbnRlbF9iYl9jcmVhdGUoZHJtX2ZkLCBC QVRDSF9TWik7CisJCQlpYmIxID0gaW50ZWxfYmJfY3JlYXRlKGRybV9mZCwgQkFUQ0hfU1opOwor CQkJY29udGV4dDBfaWQgPSBnZW1fY29udGV4dF9jcmVhdGUoZHJtX2ZkKTsKKwkJCWNvbnRleHQx X2lkID0gZ2VtX2NvbnRleHRfY3JlYXRlKGRybV9mZCk7CiAKIAkJCWlndF9kZWJ1Zygic3VibWl0 dGluZyB3YXJtIHVwIHJlbmRlcl9jb3B5XG4iKTsKIApAQCAtMzQ2NiwzMiArMzM5MiwzMCBAQCBn ZW44X3Rlc3Rfc2luZ2xlX2N0eF9yZW5kZXJfdGFyZ2V0X3dyaXRlc19hX2NvdW50ZXIodm9pZCkK IAkJCSAqIHVwIHBpbm5pbmcgdGhlIGNvbnRleHQgc2luY2UgdGhlcmUgd29uJ3QgZXZlciBiZSBh IHBpbm5pbmcKIAkJCSAqIGhvb2sgY2FsbGJhY2suCiAJCQkgKi8KLQkJCXJlbmRlcl9jb3B5KGJh dGNoLAotCQkJCSAgICBjb250ZXh0MCwKKwkJCXJlbmRlcl9jb3B5KGliYjAsCisJCQkJICAgIGNv bnRleHQwX2lkLAogCQkJCSAgICAmc3JjWzBdLCAwLCAwLCB3aWR0aCwgaGVpZ2h0LAogCQkJCSAg ICAmZHN0WzBdLCAwLCAwKTsKKwkJCWludGVsX2JiX3N5bmMoaWJiMCk7CiAKLQkJCXJldCA9IGRy bV9pbnRlbF9nZW1fY29udGV4dF9nZXRfaWQoY29udGV4dDAsICZjdHhfaWQpOwotCQkJaWd0X2Fz c2VydF9lcShyZXQsIDApOwotCQkJaWd0X2Fzc2VydF9uZXEoY3R4X2lkLCAweGZmZmZmZmZmKTsK LQkJCXByb3BlcnRpZXNbMV0gPSBjdHhfaWQ7CisJCQlwcm9wZXJ0aWVzWzFdID0gY29udGV4dDBf aWQ7CiAKLQkJCXNjcmF0Y2hfYnVmX21lbXNldChzcmNbMF0uYm8sIHdpZHRoLCBoZWlnaHQsIDB4 ZmYwMDAwZmYpOwotCQkJc2NyYXRjaF9idWZfbWVtc2V0KGRzdFswXS5ibywgd2lkdGgsIGhlaWdo dCwgMHgwMGZmMDBmZik7CisJCQlzY3JhdGNoX2J1Zl9tZW1zZXQoJnNyY1swXSwgd2lkdGgsIGhl aWdodCwgMHhmZjAwMDBmZik7CisJCQlzY3JhdGNoX2J1Zl9tZW1zZXQoJmRzdFswXSwgd2lkdGgs IGhlaWdodCwgMHgwMGZmMDBmZik7CiAKIAkJCWlndF9kZWJ1Zygib3BlbmluZyBpOTE1LXBlcmYg c3RyZWFtXG4iKTsKIAkJCXN0cmVhbV9mZCA9IF9fcGVyZl9vcGVuKGRybV9mZCwgJnBhcmFtLCBm YWxzZSk7CiAKLQkJCWJvID0gZHJtX2ludGVsX2JvX2FsbG9jKGJ1Zm1nciwgIm1pX3JwYyBkZXN0 IGJvIiwgNDA5NiwgNjQpOworCQkJZHN0X2J1ZiA9IGludGVsX2J1Zl9jcmVhdGUoYm9wcywgNDA5 NiwgMSwgOCwgNjQsCisJCQkJCQkgICBJOTE1X1RJTElOR19OT05FLAorCQkJCQkJICAgSTkxNV9D T01QUkVTU0lPTl9OT05FKTsKIAotCQkJcmV0ID0gZHJtX2ludGVsX2JvX21hcChibywgdHJ1ZSAv KiB3cml0ZSBlbmFibGUgKi8pOwotCQkJaWd0X2Fzc2VydF9lcShyZXQsIDApOworCQkJYnVmX21h cChkcm1fZmQsIGRzdF9idWYsIHRydWUpOworCQkJbWVtc2V0KGRzdF9idWYtPnB0ciwgMHg4MCwg NDA5Nik7CisJCQlpbnRlbF9idWZfdW5tYXAoZHN0X2J1Zik7CiAKLQkJCW1lbXNldChiby0+dmly dHVhbCwgMHg4MCwgNDA5Nik7Ci0JCQlkcm1faW50ZWxfYm9fdW5tYXAoYm8pOwotCi0JCQllbWl0 X3N0YWxsX3RpbWVzdGFtcF9hbmRfcnBjKGJhdGNoLAotCQkJCQkJICAgICBibywKKwkJCWVtaXRf c3RhbGxfdGltZXN0YW1wX2FuZF9ycGMoaWJiMCwKKwkJCQkJCSAgICAgZHN0X2J1ZiwKIAkJCQkJ CSAgICAgNTEyIC8qIHRpbWVzdGFtcCBvZmZzZXQgKi8sCiAJCQkJCQkgICAgIDAsIC8qIHJlcG9y dCBkc3Qgb2Zmc2V0ICovCiAJCQkJCQkgICAgIDB4ZGVhZGJlZWYpOyAvKiByZXBvcnQgaWQgKi8K QEAgLTM1MDEsNDkgKzM0MjUsNDYgQEAgZ2VuOF90ZXN0X3NpbmdsZV9jdHhfcmVuZGVyX3Rhcmdl dF93cml0ZXNfYV9jb3VudGVyKHZvaWQpCiAJCQkgKiB0aGF0IHRoZSBQSVBFX0NPTlRST0wgKyBN SV9SUEMgY29tbWFuZHMgd2lsbCBiZSBpbiBhCiAJCQkgKiBzZXBhcmF0ZSBiYXRjaCBmcm9tIHRo ZSBjb3B5LgogCQkJICovCi0JCQlpbnRlbF9iYXRjaGJ1ZmZlcl9mbHVzaF93aXRoX2NvbnRleHQo YmF0Y2gsIGNvbnRleHQwKTsKKwkJCWludGVsX2JiX2ZsdXNoX3JlbmRlcl93aXRoX2NvbnRleHQo aWJiMCwgY29udGV4dDBfaWQpOwogCi0JCQlyZW5kZXJfY29weShiYXRjaCwKLQkJCQkgICAgY29u dGV4dDAsCisJCQlyZW5kZXJfY29weShpYmIwLAorCQkJCSAgICBjb250ZXh0MF9pZCwKIAkJCQkg ICAgJnNyY1swXSwgMCwgMCwgd2lkdGgsIGhlaWdodCwKIAkJCQkgICAgJmRzdFswXSwgMCwgMCk7 CiAKIAkJCS8qIEFub3RoZXIgcmVkdW5kYW50IGZsdXNoIHRvIGNsYXJpZnkgYmF0Y2ggYm8gaXMg ZnJlZSB0byByZXVzZSAqLwotCQkJaW50ZWxfYmF0Y2hidWZmZXJfZmx1c2hfd2l0aF9jb250ZXh0 KGJhdGNoLCBjb250ZXh0MCk7CisJCQlpbnRlbF9iYl9mbHVzaF9yZW5kZXJfd2l0aF9jb250ZXh0 KGliYjAsIGNvbnRleHQwX2lkKTsKIAogCQkJLyogc3VibWl0IHR3byBjb3BpZXMgb24gdGhlIG90 aGVyIGNvbnRleHQgdG8gYXZvaWQgYSBmYWxzZQogCQkJICogcG9zaXRpdmUgaW4gY2FzZSB0aGUg ZHJpdmVyIHNvbWVob3cgZW5kZWQgdXAgZmlsdGVyaW5nIGZvcgogCQkJICogY29udGV4dDEKIAkJ CSAqLwotCQkJcmVuZGVyX2NvcHkoYmF0Y2gsCi0JCQkJICAgIGNvbnRleHQxLAorCQkJcmVuZGVy X2NvcHkoaWJiMSwKKwkJCQkgICAgY29udGV4dDFfaWQsCiAJCQkJICAgICZzcmNbMV0sIDAsIDAs IHdpZHRoLCBoZWlnaHQsCiAJCQkJICAgICZkc3RbMV0sIDAsIDApOwogCi0JCQlyZXQgPSBkcm1f aW50ZWxfZ2VtX2NvbnRleHRfZ2V0X2lkKGNvbnRleHQxLCAmY3R4MV9pZCk7Ci0JCQlpZ3RfYXNz ZXJ0X2VxKHJldCwgMCk7Ci0JCQlpZ3RfYXNzZXJ0X25lcShjdHgxX2lkLCAweGZmZmZmZmZmKTsK LQotCQkJcmVuZGVyX2NvcHkoYmF0Y2gsCi0JCQkJICAgIGNvbnRleHQxLAorCQkJcmVuZGVyX2Nv cHkoaWJiMSwKKwkJCQkgICAgY29udGV4dDFfaWQsCiAJCQkJICAgICZzcmNbMl0sIDAsIDAsIHdp ZHRoLCBoZWlnaHQsCiAJCQkJICAgICZkc3RbMl0sIDAsIDApOwogCiAJCQkvKiBBbmQgYW5vdGhl ciAqLwotCQkJaW50ZWxfYmF0Y2hidWZmZXJfZmx1c2hfd2l0aF9jb250ZXh0KGJhdGNoLCBjb250 ZXh0MSk7CisJCQlpbnRlbF9iYl9mbHVzaF9yZW5kZXJfd2l0aF9jb250ZXh0KGliYjEsIGNvbnRl eHQxX2lkKTsKIAotCQkJZW1pdF9zdGFsbF90aW1lc3RhbXBfYW5kX3JwYyhiYXRjaCwKLQkJCQkJ CSAgICAgYm8sCisJCQllbWl0X3N0YWxsX3RpbWVzdGFtcF9hbmRfcnBjKGliYjEsCisJCQkJCQkg ICAgIGRzdF9idWYsCiAJCQkJCQkgICAgIDUyMCAvKiB0aW1lc3RhbXAgb2Zmc2V0ICovLAogCQkJ CQkJICAgICAyNTYsIC8qIHJlcG9ydCBkc3Qgb2Zmc2V0ICovCiAJCQkJCQkgICAgIDB4YmVlZmJl ZWYpOyAvKiByZXBvcnQgaWQgKi8KIAotCQkJaW50ZWxfYmF0Y2hidWZmZXJfZmx1c2hfd2l0aF9j b250ZXh0KGJhdGNoLCBjb250ZXh0MSk7CisJCQlpbnRlbF9iYl9mbHVzaF9yZW5kZXJfd2l0aF9j b250ZXh0KGliYjEsIGNvbnRleHQxX2lkKTsKKwkJCWludGVsX2JiX3N5bmMoaWJiMSk7CisJCQlp bnRlbF9iYl9zeW5jKGliYjApOwogCi0JCQlyZXQgPSBkcm1faW50ZWxfYm9fbWFwKGJvLCBmYWxz ZSAvKiB3cml0ZSBlbmFibGUgKi8pOwotCQkJaWd0X2Fzc2VydF9lcShyZXQsIDApOworCQkJaW50 ZWxfYnVmX2NwdV9tYXAoZHN0X2J1ZiwgZmFsc2UgLyogd3JpdGUgZW5hYmxlICovKTsKIAotCQkJ cmVwb3J0MF8zMiA9IGJvLT52aXJ0dWFsOworCQkJcmVwb3J0MF8zMiA9IGRzdF9idWYtPnB0cjsK IAkJCWlndF9hc3NlcnRfZXEocmVwb3J0MF8zMlswXSwgMHhkZWFkYmVlZik7IC8qIHJlcG9ydCBJ RCAqLwogCQkJaWd0X2Fzc2VydF9uZXEocmVwb3J0MF8zMlsxXSwgMCk7IC8qIHRpbWVzdGFtcCAq LwogCQkJcHJldiA9IHJlcG9ydDBfMzI7CkBAIC0zNTU1LDYgKzM0NzYsNyBAQCBnZW44X3Rlc3Rf c2luZ2xlX2N0eF9yZW5kZXJfdGFyZ2V0X3dyaXRlc19hX2NvdW50ZXIodm9pZCkKIAkJCWlndF9h c3NlcnRfZXEocmVwb3J0MV8zMlswXSwgMHhiZWVmYmVlZik7IC8qIHJlcG9ydCBJRCAqLwogCQkJ aWd0X2Fzc2VydF9uZXEocmVwb3J0MV8zMlsxXSwgMCk7IC8qIHRpbWVzdGFtcCAqLwogCQkJY3R4 MV9pZCA9IHJlcG9ydDFfMzJbMl07CisJCQlpZ3RfZGVidWcoIkNUWDEgSUQ6ICV1XG4iLCBjdHgx X2lkKTsKIAkJCWR1bXBfcmVwb3J0KHJlcG9ydDFfMzIsIDY0LCAicmVwb3J0MV8zMiIpOwogCiAJ CQltZW1zZXQoYWNjdW11bGF0b3IuZGVsdGFzLCAwLCBzaXplb2YoYWNjdW11bGF0b3IuZGVsdGFz KSk7CkBAIC0zNTY5LDggKzM0OTEsOCBAQCBnZW44X3Rlc3Rfc2luZ2xlX2N0eF9yZW5kZXJfdGFy Z2V0X3dyaXRlc19hX2NvdW50ZXIodm9pZCkKIAkJCWlndF9kZWJ1ZygiY3R4X2lkIDAgPSAldVxu IiwgcmVwb3J0MF8zMlsyXSk7CiAJCQlpZ3RfZGVidWcoImN0eF9pZCAxID0gJXVcbiIsIHJlcG9y dDFfMzJbMl0pOwogCi0JCQl0aW1lc3RhbXAwXzY0ID0gKih1aW50NjRfdCAqKSgoKHVpbnQ4X3Qg Kiliby0+dmlydHVhbCkgKyA1MTIpOwotCQkJdGltZXN0YW1wMV82NCA9ICoodWludDY0X3QgKiko KCh1aW50OF90ICopYm8tPnZpcnR1YWwpICsgNTIwKTsKKwkJCXRpbWVzdGFtcDBfNjQgPSAqKHVp bnQ2NF90ICopKCgodWludDhfdCAqKWRzdF9idWYtPnB0cikgKyA1MTIpOworCQkJdGltZXN0YW1w MV82NCA9ICoodWludDY0X3QgKikoKCh1aW50OF90ICopZHN0X2J1Zi0+cHRyKSArIDUyMCk7CiAK IAkJCWlndF9kZWJ1ZygidHNfdGltZXN0YW1wNjQgMCA9ICUiUFJJdTY0IlxuIiwgdGltZXN0YW1w MF82NCk7CiAJCQlpZ3RfZGVidWcoInRzX3RpbWVzdGFtcDY0IDEgPSAlIlBSSXU2NCJcbiIsIHRp bWVzdGFtcDFfNjQpOwpAQCAtMzc1OCwyNyArMzY4MCwyNiBAQCBnZW44X3Rlc3Rfc2luZ2xlX2N0 eF9yZW5kZXJfdGFyZ2V0X3dyaXRlc19hX2NvdW50ZXIodm9pZCkKIAkJCQkgIHdpZHRoLCBoZWln aHQpOwogCQkJYWNjdW11bGF0b3JfcHJpbnQoJmFjY3VtdWxhdG9yLCAiZmlsdGVyZWQiKTsKIAot CQkJcmV0ID0gZHJtX2ludGVsX2JvX21hcChzcmNbMF0uYm8sIGZhbHNlIC8qIHdyaXRlIGVuYWJs ZSAqLyk7Ci0JCQlpZ3RfYXNzZXJ0X2VxKHJldCwgMCk7Ci0JCQlyZXQgPSBkcm1faW50ZWxfYm9f bWFwKGRzdFswXS5ibywgZmFsc2UgLyogd3JpdGUgZW5hYmxlICovKTsKLQkJCWlndF9hc3NlcnRf ZXEocmV0LCAwKTsKKwkJCWludGVsX2J1Zl9jcHVfbWFwKCZzcmNbMF0sIGZhbHNlIC8qIHdyaXRl IGVuYWJsZSAqLyk7CisJCQlpbnRlbF9idWZfY3B1X21hcCgmZHN0WzBdLCBmYWxzZSAvKiB3cml0 ZSBlbmFibGUgKi8pOwogCi0JCQlyZXQgPSBtZW1jbXAoc3JjWzBdLmJvLT52aXJ0dWFsLCBkc3Rb MF0uYm8tPnZpcnR1YWwsIDQgKiB3aWR0aCAqIGhlaWdodCk7Ci0JCQlkcm1faW50ZWxfYm9fdW5t YXAoc3JjWzBdLmJvKTsKLQkJCWRybV9pbnRlbF9ib191bm1hcChkc3RbMF0uYm8pOworCQkJcmV0 ID0gbWVtY21wKHNyY1swXS5wdHIsIGRzdFswXS5wdHIsIDQgKiB3aWR0aCAqIGhlaWdodCk7CisJ CQlpbnRlbF9idWZfdW5tYXAoJnNyY1swXSk7CisJCQlpbnRlbF9idWZfdW5tYXAoJmRzdFswXSk7 CiAKIGFnYWluOgogCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHNyYyk7IGkrKykg ewotCQkJCWRybV9pbnRlbF9ib191bnJlZmVyZW5jZShzcmNbaV0uYm8pOwotCQkJCWRybV9pbnRl bF9ib191bnJlZmVyZW5jZShkc3RbaV0uYm8pOworCQkJCWludGVsX2J1Zl9jbG9zZShib3BzLCAm c3JjW2ldKTsKKwkJCQlpbnRlbF9idWZfY2xvc2UoYm9wcywgJmRzdFtpXSk7CiAJCQl9CiAKLQkJ CWRybV9pbnRlbF9ib191bm1hcChibyk7Ci0JCQlkcm1faW50ZWxfYm9fdW5yZWZlcmVuY2UoYm8p OwotCQkJaW50ZWxfYmF0Y2hidWZmZXJfZnJlZShiYXRjaCk7Ci0JCQlkcm1faW50ZWxfZ2VtX2Nv bnRleHRfZGVzdHJveShjb250ZXh0MCk7Ci0JCQlkcm1faW50ZWxfZ2VtX2NvbnRleHRfZGVzdHJv eShjb250ZXh0MSk7Ci0JCQlkcm1faW50ZWxfYnVmbWdyX2Rlc3Ryb3koYnVmbWdyKTsKKwkJCWlu dGVsX2J1Zl91bm1hcChkc3RfYnVmKTsKKwkJCWludGVsX2J1Zl9kZXN0cm95KGRzdF9idWYpOwor CQkJaW50ZWxfYmJfZGVzdHJveShpYmIwKTsKKwkJCWludGVsX2JiX2Rlc3Ryb3koaWJiMSk7CisJ CQlnZW1fY29udGV4dF9kZXN0cm95KGRybV9mZCwgY29udGV4dDBfaWQpOworCQkJZ2VtX2NvbnRl eHRfZGVzdHJveShkcm1fZmQsIGNvbnRleHQxX2lkKTsKKwkJCWJ1Zl9vcHNfZGVzdHJveShib3Bz KTsKIAkJCV9fcGVyZl9jbG9zZShzdHJlYW1fZmQpOwogCQkJZ2VtX3F1aWVzY2VudF9ncHUoZHJt X2ZkKTsKIApAQCAtMzgyNSwxMSArMzc0NiwxMCBAQCBzdGF0aWMgdm9pZCBnZW4xMl9zaW5nbGVf Y3R4X2hlbHBlcih2b2lkKQogCQkubnVtX3Byb3BlcnRpZXMgPSBBUlJBWV9TSVpFKHByb3BlcnRp ZXMpIC8gMiwKIAkJLnByb3BlcnRpZXNfcHRyID0gdG9fdXNlcl9wb2ludGVyKHByb3BlcnRpZXMp LAogCX07Ci0JZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyOwotCWRybV9pbnRlbF9jb250ZXh0ICpj b250ZXh0MCwgKmNvbnRleHQxOwotCXN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2g7Ci0J c3RydWN0IGlndF9idWYgc3JjWzNdLCBkc3RbM107Ci0JZHJtX2ludGVsX2JvICpibzsKKwlzdHJ1 Y3QgYnVmX29wcyAqYm9wczsKKwlzdHJ1Y3QgaW50ZWxfYmIgKmliYjAsICppYmIxOworCXN0cnVj dCBpbnRlbF9idWYgc3JjWzNdLCBkc3RbM10sICpkc3RfYnVmOworCXVpbnQzMl90IGNvbnRleHQw X2lkLCBjb250ZXh0MV9pZDsKIAl1aW50MzJfdCAqcmVwb3J0MF8zMiwgKnJlcG9ydDFfMzIsICpy ZXBvcnQyXzMyLCAqcmVwb3J0M18zMjsKIAl1aW50NjRfdCB0aW1lc3RhbXAwXzY0LCB0aW1lc3Rh bXAxXzY0OwogCXVpbnQzMl90IGRlbHRhX3RzNjQsIGRlbHRhX29hMzI7CkBAIC0zODQ1LDIxICsz NzY1LDE3IEBAIHN0YXRpYyB2b2lkIGdlbjEyX3NpbmdsZV9jdHhfaGVscGVyKHZvaWQpCiAJCS5m b3JtYXQgPSB0ZXN0X3NldC0+cGVyZl9vYV9mb3JtYXQKIAl9OwogCi0JYnVmbWdyID0gZHJtX2lu dGVsX2J1Zm1ncl9nZW1faW5pdChkcm1fZmQsIDQwOTYpOwotCWRybV9pbnRlbF9idWZtZ3JfZ2Vt X2VuYWJsZV9yZXVzZShidWZtZ3IpOworCWJvcHMgPSBidWZfb3BzX2NyZWF0ZShkcm1fZmQpOwog CiAJZm9yIChpbnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHNyYyk7IGkrKykgewotCQlzY3JhdGNo X2J1Zl9pbml0KGJ1Zm1nciwgJnNyY1tpXSwgd2lkdGgsIGhlaWdodCwgMHhmZjAwMDBmZik7Ci0J CXNjcmF0Y2hfYnVmX2luaXQoYnVmbWdyLCAmZHN0W2ldLCB3aWR0aCwgaGVpZ2h0LCAweDAwZmYw MGZmKTsKKwkJc2NyYXRjaF9idWZfaW5pdChib3BzLCAmc3JjW2ldLCB3aWR0aCwgaGVpZ2h0LCAw eGZmMDAwMGZmKTsKKwkJc2NyYXRjaF9idWZfaW5pdChib3BzLCAmZHN0W2ldLCB3aWR0aCwgaGVp Z2h0LCAweDAwZmYwMGZmKTsKIAl9CiAKLQliYXRjaCA9IGludGVsX2JhdGNoYnVmZmVyX2FsbG9j KGJ1Zm1nciwgZGV2aWQpOwotCi0JY29udGV4dDAgPSBkcm1faW50ZWxfZ2VtX2NvbnRleHRfY3Jl YXRlKGJ1Zm1ncik7Ci0JaWd0X2Fzc2VydChjb250ZXh0MCk7Ci0KLQljb250ZXh0MSA9IGRybV9p bnRlbF9nZW1fY29udGV4dF9jcmVhdGUoYnVmbWdyKTsKLQlpZ3RfYXNzZXJ0KGNvbnRleHQxKTsK KwlpYmIwID0gaW50ZWxfYmJfY3JlYXRlKGRybV9mZCwgQkFUQ0hfU1opOworCWliYjEgPSBpbnRl bF9iYl9jcmVhdGUoZHJtX2ZkLCBCQVRDSF9TWik7CisJY29udGV4dDBfaWQgPSBnZW1fY29udGV4 dF9jcmVhdGUoZHJtX2ZkKTsKKwljb250ZXh0MV9pZCA9IGdlbV9jb250ZXh0X2NyZWF0ZShkcm1f ZmQpOwogCiAJaWd0X2RlYnVnKCJzdWJtaXR0aW5nIHdhcm0gdXAgcmVuZGVyX2NvcHlcbiIpOwog CkBAIC0zODgzLDQ0ICszNzk5LDQyIEBAIHN0YXRpYyB2b2lkIGdlbjEyX3NpbmdsZV9jdHhfaGVs cGVyKHZvaWQpCiAJICogdXAgcGlubmluZyB0aGUgY29udGV4dCBzaW5jZSB0aGVyZSB3b24ndCBl dmVyIGJlIGEgcGlubmluZwogCSAqIGhvb2sgY2FsbGJhY2suCiAJICovCi0JcmVuZGVyX2NvcHko YmF0Y2gsIGNvbnRleHQwLAorCXJlbmRlcl9jb3B5KGliYjAsIGNvbnRleHQwX2lkLAogCQkgICAg JnNyY1swXSwgMCwgMCwgd2lkdGgsIGhlaWdodCwKIAkJICAgICZkc3RbMF0sIDAsIDApOwogCiAJ LyogSW5pdGlhbGl6ZSB0aGUgY29udGV4dCBwYXJhbWV0ZXIgdG8gdGhlIHBlcmYgb3BlbiBpb2N0 bCBoZXJlICovCi0JcmV0ID0gZHJtX2ludGVsX2dlbV9jb250ZXh0X2dldF9pZChjb250ZXh0MCwg JmN0eDBfaWQpOwotCWlndF9hc3NlcnRfZXEocmV0LCAwKTsKLQlpZ3RfYXNzZXJ0X25lcShjdHgw X2lkLCAweGZmZmZmZmZmKTsKLQlwcm9wZXJ0aWVzWzFdID0gY3R4MF9pZDsKKwlwcm9wZXJ0aWVz WzFdID0gY29udGV4dDBfaWQ7CiAKIAlpZ3RfZGVidWcoIm9wZW5pbmcgaTkxNS1wZXJmIHN0cmVh bVxuIik7CiAJc3RyZWFtX2ZkID0gX19wZXJmX29wZW4oZHJtX2ZkLCAmcGFyYW0sIGZhbHNlKTsK IAotCWJvID0gZHJtX2ludGVsX2JvX2FsbG9jKGJ1Zm1nciwgIm1pX3JwYyBkZXN0IGJvIiwgNDA5 NiwgNjQpOworCWRzdF9idWYgPSBpbnRlbF9idWZfY3JlYXRlKGJvcHMsIDQwOTYsIDEsIDgsIDY0 LAorCQkJCSAgIEk5MTVfVElMSU5HX05PTkUsCisJCQkJICAgSTkxNV9DT01QUkVTU0lPTl9OT05F KTsKIAogCS8qIFNldCB3cml0ZSBkb21haW4gdG8gY3B1IGJyaWVmbHkgdG8gZmlsbCB0aGUgYnVm ZmVyIHdpdGggODBzICovCi0JcmV0ID0gZHJtX2ludGVsX2JvX21hcChibywgdHJ1ZSk7Ci0JaWd0 X2Fzc2VydF9lcShyZXQsIDApOwotCW1lbXNldChiby0+dmlydHVhbCwgMHg4MCwgMjA0OCk7Ci0J bWVtc2V0KGJvLT52aXJ0dWFsICsgMjA0OCwgMCwgMjA0OCk7Ci0JZHJtX2ludGVsX2JvX3VubWFw KGJvKTsKKwlidWZfbWFwKGRybV9mZCwgZHN0X2J1ZiwgdHJ1ZSAvKiB3cml0ZSBlbmFibGUgKi8p OworCW1lbXNldChkc3RfYnVmLT5wdHIsIDB4ODAsIDIwNDgpOworCW1lbXNldCgodWludDhfdCAq KSBkc3RfYnVmLT5wdHIgKyAyMDQ4LCAwLCAyMDQ4KTsKKwlpbnRlbF9idWZfdW5tYXAoZHN0X2J1 Zik7CiAKIAkvKiBTdWJtaXQgYW4gbWktcnBjIHRvIGNvbnRleHQwIGJlZm9yZSBtZWFzdXJhYmxl IHdvcmsgKi8KICNkZWZpbmUgQk9fVElNRVNUQU1QX09GRlNFVDAgMTAyNAogI2RlZmluZSBCT19S RVBPUlRfT0ZGU0VUMCAwCiAjZGVmaW5lIEJPX1JFUE9SVF9JRDAgMHhkZWFkYmVlZgotCWVtaXRf c3RhbGxfdGltZXN0YW1wX2FuZF9ycGMoYmF0Y2gsCi0JCQkJICAgICBibywKKwllbWl0X3N0YWxs X3RpbWVzdGFtcF9hbmRfcnBjKGliYjAsCisJCQkJICAgICBkc3RfYnVmLAogCQkJCSAgICAgQk9f VElNRVNUQU1QX09GRlNFVDAsCiAJCQkJICAgICBCT19SRVBPUlRfT0ZGU0VUMCwKIAkJCQkgICAg IEJPX1JFUE9SVF9JRDApOwotCWludGVsX2JhdGNoYnVmZmVyX2ZsdXNoX3dpdGhfY29udGV4dChi YXRjaCwgY29udGV4dDApOworCWludGVsX2JiX2ZsdXNoX3JlbmRlcl93aXRoX2NvbnRleHQoaWJi MCwgY29udGV4dDBfaWQpOwogCiAJLyogVGhpcyBpcyB0aGUgd29yay9jb250ZXh0IHRoYXQgaXMg bWVhc3VyZWQgZm9yIGNvdW50ZXIgaW5jcmVtZW50cyAqLwotCXJlbmRlcl9jb3B5KGJhdGNoLCBj b250ZXh0MCwKKwlyZW5kZXJfY29weShpYmIwLCBjb250ZXh0MF9pZCwKIAkJICAgICZzcmNbMF0s IDAsIDAsIHdpZHRoLCBoZWlnaHQsCiAJCSAgICAmZHN0WzBdLCAwLCAwKTsKLQlpbnRlbF9iYXRj aGJ1ZmZlcl9mbHVzaF93aXRoX2NvbnRleHQoYmF0Y2gsIGNvbnRleHQwKTsKKwlpbnRlbF9iYl9m bHVzaF9yZW5kZXJfd2l0aF9jb250ZXh0KGliYjAsIGNvbnRleHQwX2lkKTsKIAogCS8qIFN1Ym1p dCBhbiBtaS1ycGMgdG8gY29udGV4dDEgYmVmb3JlIHdvcmsKIAkgKgpAQCAtMzkzMSw1NCArMzg0 NSw1MSBAQCBzdGF0aWMgdm9pZCBnZW4xMl9zaW5nbGVfY3R4X2hlbHBlcih2b2lkKQogI2RlZmlu ZSBCT19USU1FU1RBTVBfT0ZGU0VUMiAxMDQwCiAjZGVmaW5lIEJPX1JFUE9SVF9PRkZTRVQyIDUx MgogI2RlZmluZSBCT19SRVBPUlRfSUQyIDB4MDBjMGZmZWUKLQllbWl0X3N0YWxsX3RpbWVzdGFt cF9hbmRfcnBjKGJhdGNoLAotCQkJCSAgICAgYm8sCisJZW1pdF9zdGFsbF90aW1lc3RhbXBfYW5k X3JwYyhpYmIxLAorCQkJCSAgICAgZHN0X2J1ZiwKIAkJCQkgICAgIEJPX1RJTUVTVEFNUF9PRkZT RVQyLAogCQkJCSAgICAgQk9fUkVQT1JUX09GRlNFVDIsCiAJCQkJICAgICBCT19SRVBPUlRfSUQy KTsKLQlpbnRlbF9iYXRjaGJ1ZmZlcl9mbHVzaF93aXRoX2NvbnRleHQoYmF0Y2gsIGNvbnRleHQx KTsKKwlpbnRlbF9iYl9mbHVzaF9yZW5kZXJfd2l0aF9jb250ZXh0KGliYjEsIGNvbnRleHQxX2lk KTsKIAogCS8qIFN1Ym1pdCB0d28gY29waWVzIG9uIHRoZSBvdGhlciBjb250ZXh0IHRvIGF2b2lk IGEgZmFsc2UKIAkgKiBwb3NpdGl2ZSBpbiBjYXNlIHRoZSBkcml2ZXIgc29tZWhvdyBlbmRlZCB1 cCBmaWx0ZXJpbmcgZm9yCiAJICogY29udGV4dDEKIAkgKi8KLQlyZW5kZXJfY29weShiYXRjaCwg Y29udGV4dDEsCisJcmVuZGVyX2NvcHkoaWJiMSwgY29udGV4dDFfaWQsCiAJCSAgICAmc3JjWzFd LCAwLCAwLCB3aWR0aCwgaGVpZ2h0LAogCQkgICAgJmRzdFsxXSwgMCwgMCk7Ci0JcmV0ID0gZHJt X2ludGVsX2dlbV9jb250ZXh0X2dldF9pZChjb250ZXh0MSwgJmN0eDFfaWQpOwotCWlndF9hc3Nl cnRfZXEocmV0LCAwKTsKLQlpZ3RfYXNzZXJ0X25lcShjdHgxX2lkLCAweGZmZmZmZmZmKTsKIAot CXJlbmRlcl9jb3B5KGJhdGNoLCBjb250ZXh0MSwKKwlyZW5kZXJfY29weShpYmIxLCBjb250ZXh0 MV9pZCwKIAkJICAgICZzcmNbMl0sIDAsIDAsIHdpZHRoLCBoZWlnaHQsCiAJCSAgICAmZHN0WzJd LCAwLCAwKTsKLQlpbnRlbF9iYXRjaGJ1ZmZlcl9mbHVzaF93aXRoX2NvbnRleHQoYmF0Y2gsIGNv bnRleHQxKTsKKwlpbnRlbF9iYl9mbHVzaF9yZW5kZXJfd2l0aF9jb250ZXh0KGliYjEsIGNvbnRl eHQxX2lkKTsKIAogCS8qIFN1Ym1pdCBhbiBtaS1ycGMgdG8gY29udGV4dDEgYWZ0ZXIgYWxsIHdv cmsgKi8KICNkZWZpbmUgQk9fVElNRVNUQU1QX09GRlNFVDMgMTA0OAogI2RlZmluZSBCT19SRVBP UlRfT0ZGU0VUMyA3NjgKICNkZWZpbmUgQk9fUkVQT1JUX0lEMyAweDAxYzBmZmVlCi0JZW1pdF9z dGFsbF90aW1lc3RhbXBfYW5kX3JwYyhiYXRjaCwKLQkJCQkgICAgIGJvLAorCWVtaXRfc3RhbGxf dGltZXN0YW1wX2FuZF9ycGMoaWJiMSwKKwkJCQkgICAgIGRzdF9idWYsCiAJCQkJICAgICBCT19U SU1FU1RBTVBfT0ZGU0VUMywKIAkJCQkgICAgIEJPX1JFUE9SVF9PRkZTRVQzLAogCQkJCSAgICAg Qk9fUkVQT1JUX0lEMyk7Ci0JaW50ZWxfYmF0Y2hidWZmZXJfZmx1c2hfd2l0aF9jb250ZXh0KGJh dGNoLCBjb250ZXh0MSk7CisJaW50ZWxfYmJfZmx1c2hfcmVuZGVyX3dpdGhfY29udGV4dChpYmIx LCBjb250ZXh0MV9pZCk7CiAKIAkvKiBTdWJtaXQgYW4gbWktcnBjIHRvIGNvbnRleHQwIGFmdGVy IGFsbCBtZWFzdXJhYmxlIHdvcmsgKi8KICNkZWZpbmUgQk9fVElNRVNUQU1QX09GRlNFVDEgMTAz MgogI2RlZmluZSBCT19SRVBPUlRfT0ZGU0VUMSAyNTYKICNkZWZpbmUgQk9fUkVQT1JUX0lEMSAw eGJlZWZiZWVmCi0JZW1pdF9zdGFsbF90aW1lc3RhbXBfYW5kX3JwYyhiYXRjaCwKLQkJCQkgICAg IGJvLAorCWVtaXRfc3RhbGxfdGltZXN0YW1wX2FuZF9ycGMoaWJiMCwKKwkJCQkgICAgIGRzdF9i dWYsCiAJCQkJICAgICBCT19USU1FU1RBTVBfT0ZGU0VUMSwKIAkJCQkgICAgIEJPX1JFUE9SVF9P RkZTRVQxLAogCQkJCSAgICAgQk9fUkVQT1JUX0lEMSk7Ci0JaW50ZWxfYmF0Y2hidWZmZXJfZmx1 c2hfd2l0aF9jb250ZXh0KGJhdGNoLCBjb250ZXh0MCk7CisJaW50ZWxfYmJfZmx1c2hfcmVuZGVy X3dpdGhfY29udGV4dChpYmIwLCBjb250ZXh0MF9pZCk7CisJaW50ZWxfYmJfc3luYyhpYmIwKTsK KwlpbnRlbF9iYl9zeW5jKGliYjEpOwogCi0JLyogU2V0IHdyaXRlIGRvbWFpbiB0byBub25lICov Ci0JcmV0ID0gZHJtX2ludGVsX2JvX21hcChibywgZmFsc2UpOwotCWlndF9hc3NlcnRfZXEocmV0 LCAwKTsKKwlpbnRlbF9idWZfY3B1X21hcChkc3RfYnVmLCBmYWxzZSk7CiAKIAkvKiBTYW5pdHkg Y2hlY2sgcmVwb3J0cwogCSAqIHJlcG9ydFhfMzJbMF06IHJlcG9ydCBpZCBwYXNzZWQgd2l0aCBt aS1ycGMKQEAgLTM5OTAsNyArMzkwMSw3IEBAIHN0YXRpYyB2b2lkIGdlbjEyX3NpbmdsZV9jdHhf aGVscGVyKHZvaWQpCiAJICogcmVwb3J0Ml8zMjogc3RhcnQgb2Ygb3RoZXIgd29yawogCSAqIHJl cG9ydDNfMzI6IGVuZCBvZiBvdGhlciB3b3JrCiAJICovCi0JcmVwb3J0MF8zMiA9IGJvLT52aXJ0 dWFsOworCXJlcG9ydDBfMzIgPSBkc3RfYnVmLT5wdHI7CiAJaWd0X2Fzc2VydF9lcShyZXBvcnQw XzMyWzBdLCAweGRlYWRiZWVmKTsKIAlpZ3RfYXNzZXJ0X25lcShyZXBvcnQwXzMyWzFdLCAwKTsK IAljdHgwX2lkID0gcmVwb3J0MF8zMlsyXTsKQEAgLTQwMDEsNiArMzkxMiw3IEBAIHN0YXRpYyB2 b2lkIGdlbjEyX3NpbmdsZV9jdHhfaGVscGVyKHZvaWQpCiAJaWd0X2Fzc2VydF9lcShyZXBvcnQx XzMyWzBdLCAweGJlZWZiZWVmKTsKIAlpZ3RfYXNzZXJ0X25lcShyZXBvcnQxXzMyWzFdLCAwKTsK IAljdHgxX2lkID0gcmVwb3J0MV8zMlsyXTsKKwlpZ3RfZGVidWcoIkNUWCBJRDE6ICV1XG4iLCBj dHgxX2lkKTsKIAlkdW1wX3JlcG9ydChyZXBvcnQxXzMyLCA2NCwgInJlcG9ydDFfMzIiKTsKIAog CS8qIFZlcmlmeSB0aGF0IGNvdW50ZXJzIGluIGNvbnRleHQxIGFyZSBhbGwgemVyb2VzICovCkBA IC00MDA5LDcgKzM5MjEsNyBAQCBzdGF0aWMgdm9pZCBnZW4xMl9zaW5nbGVfY3R4X2hlbHBlcih2 b2lkKQogCWlndF9hc3NlcnRfbmVxKHJlcG9ydDJfMzJbMV0sIDApOwogCWR1bXBfcmVwb3J0KHJl cG9ydDJfMzIsIDY0LCAicmVwb3J0Ml8zMiIpOwogCWlndF9hc3NlcnRfZXEoMCwgbWVtY21wKCZy ZXBvcnQyXzMyWzRdLAotCQkJCWJvLT52aXJ0dWFsICsgMjA0OCwKKwkJCQkodWludDhfdCAqKSBk c3RfYnVmLT5wdHIgKyAyMDQ4LAogCQkJCTI0MCkpOwogCiAJcmVwb3J0M18zMiA9IHJlcG9ydDBf MzIgKyAxOTI7CkBAIC00MDE3LDcgKzM5MjksNyBAQCBzdGF0aWMgdm9pZCBnZW4xMl9zaW5nbGVf Y3R4X2hlbHBlcih2b2lkKQogCWlndF9hc3NlcnRfbmVxKHJlcG9ydDNfMzJbMV0sIDApOwogCWR1 bXBfcmVwb3J0KHJlcG9ydDNfMzIsIDY0LCAicmVwb3J0M18zMiIpOwogCWlndF9hc3NlcnRfZXEo MCwgbWVtY21wKCZyZXBvcnQzXzMyWzRdLAotCQkJCWJvLT52aXJ0dWFsICsgMjA0OCwKKwkJCQko dWludDhfdCAqKSBkc3RfYnVmLT5wdHIgKyAyMDQ4LAogCQkJCTI0MCkpOwogCiAJLyogQWNjdW11 bGF0ZSBkZWx0YXMgZm9yIGNvdW50ZXJzIC0gQTAsIEEyMSBhbmQgQTI2ICovCkBAIC00MDM3LDgg KzM5NDksOCBAQCBzdGF0aWMgdm9pZCBnZW4xMl9zaW5nbGVfY3R4X2hlbHBlcih2b2lkKQogCSAq IHRoZSBPQSByZXBvcnQgdGltZXN0YW1wcyBzaG91bGQgYmUgYWxtb3N0IGlkZW50aWNhbCBidXQK IAkgKiBhbGxvdyBhIDUwMCBuYW5vc2Vjb25kcyBtYXJnaW4uCiAJICovCi0JdGltZXN0YW1wMF82 NCA9ICoodWludDY0X3QgKikoKCh1aW50OF90ICopYm8tPnZpcnR1YWwpICsgQk9fVElNRVNUQU1Q X09GRlNFVDApOwotCXRpbWVzdGFtcDFfNjQgPSAqKHVpbnQ2NF90ICopKCgodWludDhfdCAqKWJv LT52aXJ0dWFsKSArIEJPX1RJTUVTVEFNUF9PRkZTRVQxKTsKKwl0aW1lc3RhbXAwXzY0ID0gKih1 aW50NjRfdCAqKSgoKHVpbnQ4X3QgKilkc3RfYnVmLT5wdHIpICsgQk9fVElNRVNUQU1QX09GRlNF VDApOworCXRpbWVzdGFtcDFfNjQgPSAqKHVpbnQ2NF90ICopKCgodWludDhfdCAqKWRzdF9idWYt PnB0cikgKyBCT19USU1FU1RBTVBfT0ZGU0VUMSk7CiAKIAlpZ3RfZGVidWcoInRzX3RpbWVzdGFt cDY0IDAgPSAlIlBSSXU2NCJcbiIsIHRpbWVzdGFtcDBfNjQpOwogCWlndF9kZWJ1ZygidHNfdGlt ZXN0YW1wNjQgMSA9ICUiUFJJdTY0IlxuIiwgdGltZXN0YW1wMV82NCk7CkBAIC00MDczLDIwICsz OTg1LDE4IEBAIHN0YXRpYyB2b2lkIGdlbjEyX3NpbmdsZV9jdHhfaGVscGVyKHZvaWQpCiAJLyog VmVyaWZ5IHRoYXQgdGhlIHdvcmsgYWN0dWFsbHkgaGFwcGVuZWQgYnkgY29tcGFyaW5nIHRoZSBz cmMKIAkgKiBhbmQgZHN0IGJ1ZmZlcnMKIAkgKi8KLQlyZXQgPSBkcm1faW50ZWxfYm9fbWFwKHNy Y1swXS5ibywgZmFsc2UpOwotCWlndF9hc3NlcnRfZXEocmV0LCAwKTsKLQlyZXQgPSBkcm1faW50 ZWxfYm9fbWFwKGRzdFswXS5ibywgZmFsc2UpOwotCWlndF9hc3NlcnRfZXEocmV0LCAwKTsKKwlp bnRlbF9idWZfY3B1X21hcCgmc3JjWzBdLCBmYWxzZSk7CisJaW50ZWxfYnVmX2NwdV9tYXAoJmRz dFswXSwgZmFsc2UpOworCisJcmV0ID0gbWVtY21wKHNyY1swXS5wdHIsIGRzdFswXS5wdHIsIDQg KiB3aWR0aCAqIGhlaWdodCk7CisJaW50ZWxfYnVmX3VubWFwKCZzcmNbMF0pOworCWludGVsX2J1 Zl91bm1hcCgmZHN0WzBdKTsKIAotCXJldCA9IG1lbWNtcChzcmNbMF0uYm8tPnZpcnR1YWwsIGRz dFswXS5iby0+dmlydHVhbCwgNCAqIHdpZHRoICogaGVpZ2h0KTsKIAlpZiAocmV0ICE9IDApIHsK IAkJYWNjdW11bGF0b3JfcHJpbnQoJmFjY3VtdWxhdG9yLCAidG90YWwiKTsKIAkJZXhpdChFQUdB SU4pOwogCX0KIAotCWRybV9pbnRlbF9ib191bm1hcChzcmNbMF0uYm8pOwotCWRybV9pbnRlbF9i b191bm1hcChkc3RbMF0uYm8pOwotCiAJLyogQ2hlY2sgdGhhdCB0aGlzIHRlc3QgcGFzc2VkLiBU aGUgdGVzdCBtZWFzdXJlcyB0aGUgbnVtYmVyIG9mIDJ4MgogCSAqIHNhbXBsZXMgd3JpdHRlbiB0 byB0aGUgcmVuZGVyIHRhcmdldCB1c2luZyB0aGUgY291bnRlciBBMjYuIEZvcgogCSAqIE9BUiwg dGhpcyBjb3VudGVyIHdpbGwgb25seSBoYXZlIGluY3JlbWVudHMgcmVsZXZhbnQgdG8gdGhpcyBz cGVjaWZpYwpAQCAtNDA5NiwxNiArNDAwNiwxNyBAQCBzdGF0aWMgdm9pZCBnZW4xMl9zaW5nbGVf Y3R4X2hlbHBlcih2b2lkKQogCiAJLyogQ2xlYW4gdXAgKi8KIAlmb3IgKGludCBpID0gMDsgaSA8 IEFSUkFZX1NJWkUoc3JjKTsgaSsrKSB7Ci0JCWRybV9pbnRlbF9ib191bnJlZmVyZW5jZShzcmNb aV0uYm8pOwotCQlkcm1faW50ZWxfYm9fdW5yZWZlcmVuY2UoZHN0W2ldLmJvKTsKKwkJaW50ZWxf YnVmX2Nsb3NlKGJvcHMsICZzcmNbaV0pOworCQlpbnRlbF9idWZfY2xvc2UoYm9wcywgJmRzdFtp XSk7CiAJfQogCi0JZHJtX2ludGVsX2JvX3VubWFwKGJvKTsKLQlkcm1faW50ZWxfYm9fdW5yZWZl cmVuY2UoYm8pOwotCWludGVsX2JhdGNoYnVmZmVyX2ZyZWUoYmF0Y2gpOwotCWRybV9pbnRlbF9n ZW1fY29udGV4dF9kZXN0cm95KGNvbnRleHQwKTsKLQlkcm1faW50ZWxfZ2VtX2NvbnRleHRfZGVz dHJveShjb250ZXh0MSk7Ci0JZHJtX2ludGVsX2J1Zm1ncl9kZXN0cm95KGJ1Zm1ncik7CisJaW50 ZWxfYnVmX3VubWFwKGRzdF9idWYpOworCWludGVsX2J1Zl9kZXN0cm95KGRzdF9idWYpOworCWlu dGVsX2JiX2Rlc3Ryb3koaWJiMCk7CisJaW50ZWxfYmJfZGVzdHJveShpYmIxKTsKKwlnZW1fY29u dGV4dF9kZXN0cm95KGRybV9mZCwgY29udGV4dDBfaWQpOworCWdlbV9jb250ZXh0X2Rlc3Ryb3ko ZHJtX2ZkLCBjb250ZXh0MV9pZCk7CisJYnVmX29wc19kZXN0cm95KGJvcHMpOwogCV9fcGVyZl9j bG9zZShzdHJlYW1fZmQpOwogfQogCi0tIAoyLjI2LjAKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaWd0LWRldgo=