From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id C03FC6E2E8 for ; Thu, 4 Jun 2020 10:10:35 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Thu, 4 Jun 2020 12:10:30 +0200 Message-Id: <20200604101030.24969-1-zbigniew.kempczynski@intel.com> In-Reply-To: <20200604100353.24552-1-zbigniew.kempczynski@intel.com> References: <20200604100353.24552-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v2 3/4] tests/i915_pm_sseu: remove libdrm dependency 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: UmVtb3ZlIGFsbCAibG9jYWxpemVkIiBmdW5jdGlvbnMgaW4gbWVkaWEgc3BpbiBhbmQgbGliZHJt IHVzYWdlCmluIHRoZSB0ZXN0LgoKU2lnbmVkLW9mZi1ieTogWmJpZ25pZXcgS2VtcGN6ecWEc2tp IDx6Ymlnbmlldy5rZW1wY3p5bnNraUBpbnRlbC5jb20+CkNjOiBDaHJpcyBXaWxzb24gPGNocmlz QGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBsaWIvbWVkaWFfc3Bpbi5jICAgICAgICAgIHwgNDY5 ICsrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBsaWIvbWVkaWFfc3Bpbi5o ICAgICAgICAgIHwgICA4ICstCiB0ZXN0cy9pOTE1L2k5MTVfcG1fc3NldS5jIHwgIDczICsrKy0t LQogMyBmaWxlcyBjaGFuZ2VkLCA5OCBpbnNlcnRpb25zKCspLCA0NTIgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvbGliL21lZGlhX3NwaW4uYyBiL2xpYi9tZWRpYV9zcGluLmMKaW5kZXggZDNk MGMyNzguLjZlODFhMTNkIDEwMDY0NAotLS0gYS9saWIvbWVkaWFfc3Bpbi5jCisrKyBiL2xpYi9t ZWRpYV9zcGluLmMKQEAgLTI0LDE1ICsyNCwxMyBAQAogICogCUplZmYgTWNHZWUgPGplZmYubWNn ZWVAaW50ZWwuY29tPgogICovCiAKLSNpbmNsdWRlIDxpbnRlbF9idWZtZ3IuaD4KICNpbmNsdWRl IDxpOTE1X2RybS5oPgogI2luY2x1ZGUgImludGVsX3JlZy5oIgogI2luY2x1ZGUgImRybXRlc3Qu aCIKICNpbmNsdWRlICJpbnRlbF9iYXRjaGJ1ZmZlci5oIgogI2luY2x1ZGUgImludGVsX2NoaXBz ZXQuaCIKLSNpbmNsdWRlICJnZW43X21lZGlhLmgiCi0jaW5jbHVkZSAiZ2VuOF9tZWRpYS5oIgog I2luY2x1ZGUgIm1lZGlhX3NwaW4uaCIKKyNpbmNsdWRlICJncHVfY21kcy5oIgogCiBzdGF0aWMg Y29uc3QgdWludDMyX3Qgc3Bpbl9rZXJuZWxbXVs0XSA9IHsKIAl7IDB4MDA2MDAwMDEsIDB4MjA4 MDAyMDgsIDB4MDA4ZDAwMDAsIDB4MDAwMDAwMDAgfSwgLyogbW92ICg4KXI0LjA8MT46dWQgcjAu MDw4Ozg7MT46dWQgKi8KQEAgLTY3LDYgKzY1LDcgQEAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHNw aW5fa2VybmVsW11bNF0gPSB7CiAgKgogICovCiAKKyNkZWZpbmUgUEFHRV9TSVpFIDQwOTYKICNk ZWZpbmUgQkFUQ0hfU1RBVEVfU1BMSVQgMjA0OAogLyogVkZFIFNUQVRFIHBhcmFtcyAqLwogI2Rl ZmluZSBUSFJFQURTIDAKQEAgLTgwLDQ1NSArNzksMTEzIEBAIHN0YXRpYyBjb25zdCB1aW50MzJf dCBzcGluX2tlcm5lbFtdWzRdID0gewogI2RlZmluZSB4b2Zmc2V0IDAKICNkZWZpbmUgeW9mZnNl dCAwCiAKLXN0YXRpYyB2b2lkCi1nZW43X3JlbmRlcl9mbHVzaChzdHJ1Y3QgaW50ZWxfYmF0Y2hi dWZmZXIgKmJhdGNoLCB1aW50MzJfdCBiYXRjaF9lbmQpCi17Ci0JaW50IHJldDsKLQotCXJldCA9 IGRybV9pbnRlbF9ib19zdWJkYXRhKGJhdGNoLT5ibywgMCwgNDA5NiwgYmF0Y2gtPmJ1ZmZlcik7 Ci0JaWYgKHJldCA9PSAwKQotCQlyZXQgPSBkcm1faW50ZWxfYm9fbXJiX2V4ZWMoYmF0Y2gtPmJv LCBiYXRjaF9lbmQsCi0JCQkJCSAgICBOVUxMLCAwLCAwLCAwKTsKLQlpZ3RfYXNzZXJ0KHJldCA9 PSAwKTsKLX0KLQogc3RhdGljIHVpbnQzMl90Ci1nZW43X2ZpbGxfa2VybmVsKHN0cnVjdCBpbnRl bF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCi0JCSBjb25zdCB1aW50MzJfdCBrZXJuZWxbXVs0XSwgc2l6 ZV90IHNpemUpCi17Ci0JdWludDMyX3Qgb2Zmc2V0OwotCi0Jb2Zmc2V0ID0gaW50ZWxfYmF0Y2hi dWZmZXJfY29weV9kYXRhKGJhdGNoLCBrZXJuZWwsIHNpemUsIDY0KTsKLQotCXJldHVybiBvZmZz ZXQ7Ci19Ci0KLXN0YXRpYyB1aW50MzJfdAotZ2VuN19maWxsX3N1cmZhY2Vfc3RhdGUoc3RydWN0 IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKLQkJCWNvbnN0IHN0cnVjdCBpZ3RfYnVmICpidWYs Ci0JCQl1aW50MzJfdCBmb3JtYXQsCi0JCQlpbnQgaXNfZHN0KQotewotCXN0cnVjdCBnZW43X3N1 cmZhY2Vfc3RhdGUgKnNzOwotCXVpbnQzMl90IHdyaXRlX2RvbWFpbiwgcmVhZF9kb21haW4sIG9m ZnNldDsKLQlpbnQgcmV0OwotCi0JaWYgKGlzX2RzdCkgewotCQl3cml0ZV9kb21haW4gPSByZWFk X2RvbWFpbiA9IEk5MTVfR0VNX0RPTUFJTl9SRU5ERVI7Ci0JfSBlbHNlIHsKLQkJd3JpdGVfZG9t YWluID0gMDsKLQkJcmVhZF9kb21haW4gPSBJOTE1X0dFTV9ET01BSU5fU0FNUExFUjsKLQl9Ci0K LQlzcyA9IGludGVsX2JhdGNoYnVmZmVyX3N1YmRhdGFfYWxsb2MoYmF0Y2gsIHNpemVvZigqc3Mp LCA2NCk7Ci0Jb2Zmc2V0ID0gaW50ZWxfYmF0Y2hidWZmZXJfc3ViZGF0YV9vZmZzZXQoYmF0Y2gs IHNzKTsKLQotCXNzLT5zczAuc3VyZmFjZV90eXBlID0gU1VSRkFDRV8yRDsKLQlzcy0+c3MwLnN1 cmZhY2VfZm9ybWF0ID0gZm9ybWF0OwotCXNzLT5zczAucmVuZGVyX2NhY2hlX3JlYWRfd3JpdGUg PSAxOwotCi0JaWYgKGJ1Zi0+dGlsaW5nID09IEk5MTVfVElMSU5HX1gpCi0JCXNzLT5zczAudGls ZWRfbW9kZSA9IDI7Ci0JZWxzZSBpZiAoYnVmLT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWSkKLQkJ c3MtPnNzMC50aWxlZF9tb2RlID0gMzsKLQotCXNzLT5zczEuYmFzZV9hZGRyID0gYnVmLT5iby0+ b2Zmc2V0OwotCXJldCA9IGRybV9pbnRlbF9ib19lbWl0X3JlbG9jKGJhdGNoLT5ibywKLQkJCQlp bnRlbF9iYXRjaGJ1ZmZlcl9zdWJkYXRhX29mZnNldChiYXRjaCwgc3MpICsgNCwKLQkJCQlidWYt PmJvLCAwLAotCQkJCXJlYWRfZG9tYWluLCB3cml0ZV9kb21haW4pOwotCWlndF9hc3NlcnQocmV0 ID09IDApOwotCi0Jc3MtPnNzMi5oZWlnaHQgPSBpZ3RfYnVmX2hlaWdodChidWYpIC0gMTsKLQlz cy0+c3MyLndpZHRoICA9IGlndF9idWZfd2lkdGgoYnVmKSAtIDE7Ci0KLQlzcy0+c3MzLnBpdGNo ICA9IGJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUgLSAxOwotCi0Jc3MtPnNzNy5zaGFkZXJfY2hhbmVs X3NlbGVjdF9yID0gNDsKLQlzcy0+c3M3LnNoYWRlcl9jaGFuZWxfc2VsZWN0X2cgPSA1OwotCXNz LT5zczcuc2hhZGVyX2NoYW5lbF9zZWxlY3RfYiA9IDY7Ci0Jc3MtPnNzNy5zaGFkZXJfY2hhbmVs X3NlbGVjdF9hID0gNzsKLQotCXJldHVybiBvZmZzZXQ7Ci19Ci0KLXN0YXRpYyB1aW50MzJfdAot Z2VuOF9maWxsX3N1cmZhY2Vfc3RhdGUoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwK LQkJCWNvbnN0IHN0cnVjdCBpZ3RfYnVmICpidWYsCi0JCQl1aW50MzJfdCBmb3JtYXQsCi0JCQlp bnQgaXNfZHN0KQotewotCXN0cnVjdCBnZW44X3N1cmZhY2Vfc3RhdGUgKnNzOwotCXVpbnQzMl90 IHdyaXRlX2RvbWFpbiwgcmVhZF9kb21haW4sIG9mZnNldDsKLQlpbnQgcmV0OwotCi0JaWYgKGlz X2RzdCkgewotCQl3cml0ZV9kb21haW4gPSByZWFkX2RvbWFpbiA9IEk5MTVfR0VNX0RPTUFJTl9S RU5ERVI7Ci0JfSBlbHNlIHsKLQkJd3JpdGVfZG9tYWluID0gMDsKLQkJcmVhZF9kb21haW4gPSBJ OTE1X0dFTV9ET01BSU5fU0FNUExFUjsKLQl9Ci0KLQlzcyA9IGludGVsX2JhdGNoYnVmZmVyX3N1 YmRhdGFfYWxsb2MoYmF0Y2gsIHNpemVvZigqc3MpLCA2NCk7Ci0Jb2Zmc2V0ID0gaW50ZWxfYmF0 Y2hidWZmZXJfc3ViZGF0YV9vZmZzZXQoYmF0Y2gsIHNzKTsKLQotCXNzLT5zczAuc3VyZmFjZV90 eXBlID0gU1VSRkFDRV8yRDsKLQlzcy0+c3MwLnN1cmZhY2VfZm9ybWF0ID0gZm9ybWF0OwotCXNz LT5zczAucmVuZGVyX2NhY2hlX3JlYWRfd3JpdGUgPSAxOwotCXNzLT5zczAudmVydGljYWxfYWxp Z25tZW50ID0gMTsgLyogYWxpZ24gNCAqLwotCXNzLT5zczAuaG9yaXpvbnRhbF9hbGlnbm1lbnQg PSAxOyAvKiBhbGlnbiA0ICovCi0KLQlpZiAoYnVmLT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWCkK LQkJc3MtPnNzMC50aWxlZF9tb2RlID0gMjsKLQllbHNlIGlmIChidWYtPnRpbGluZyA9PSBJOTE1 X1RJTElOR19ZKQotCQlzcy0+c3MwLnRpbGVkX21vZGUgPSAzOwotCi0Jc3MtPnNzOC5iYXNlX2Fk ZHIgPSBidWYtPmJvLT5vZmZzZXQ7Ci0KLQlyZXQgPSBkcm1faW50ZWxfYm9fZW1pdF9yZWxvYyhi YXRjaC0+Ym8sCi0JCQkJaW50ZWxfYmF0Y2hidWZmZXJfc3ViZGF0YV9vZmZzZXQoYmF0Y2gsIHNz KSArIDggKiA0LAotCQkJCWJ1Zi0+Ym8sIDAsIHJlYWRfZG9tYWluLCB3cml0ZV9kb21haW4pOwot CWlndF9hc3NlcnQocmV0ID09IDApOwotCi0Jc3MtPnNzMi5oZWlnaHQgPSBpZ3RfYnVmX2hlaWdo dChidWYpIC0gMTsKLQlzcy0+c3MyLndpZHRoICA9IGlndF9idWZfd2lkdGgoYnVmKSAtIDE7Ci0J c3MtPnNzMy5waXRjaCAgPSBidWYtPnN1cmZhY2VbMF0uc3RyaWRlIC0gMTsKLQotCXNzLT5zczcu c2hhZGVyX2NoYW5lbF9zZWxlY3RfciA9IDQ7Ci0Jc3MtPnNzNy5zaGFkZXJfY2hhbmVsX3NlbGVj dF9nID0gNTsKLQlzcy0+c3M3LnNoYWRlcl9jaGFuZWxfc2VsZWN0X2IgPSA2OwotCXNzLT5zczcu c2hhZGVyX2NoYW5lbF9zZWxlY3RfYSA9IDc7Ci0KLQlyZXR1cm4gb2Zmc2V0OwotfQotCi1zdGF0 aWMgdWludDMyX3QKLWdlbjhfc3Bpbl9jdXJiZV9idWZmZXJfZGF0YShzdHJ1Y3QgaW50ZWxfYmF0 Y2hidWZmZXIgKmJhdGNoLAotCQkJICAgIHVpbnQzMl90IGl0ZXJzKQorZ2VuOF9zcGluX2N1cmJl X2J1ZmZlcl9kYXRhKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50MzJfdCBpdGVycykKIHsKIAl1 aW50MzJfdCAqY3VyYmVfYnVmZmVyOwogCXVpbnQzMl90IG9mZnNldDsKIAotCWN1cmJlX2J1ZmZl ciA9IGludGVsX2JhdGNoYnVmZmVyX3N1YmRhdGFfYWxsb2MoYmF0Y2gsIDY0LCA2NCk7Ci0Jb2Zm c2V0ID0gaW50ZWxfYmF0Y2hidWZmZXJfc3ViZGF0YV9vZmZzZXQoYmF0Y2gsIGN1cmJlX2J1ZmZl cik7Ci0JKmN1cmJlX2J1ZmZlciA9IGl0ZXJzOwotCi0JcmV0dXJuIG9mZnNldDsKLX0KLQotc3Rh dGljIHVpbnQzMl90Ci1nZW43X2ZpbGxfYmluZGluZ190YWJsZShzdHJ1Y3QgaW50ZWxfYmF0Y2hi dWZmZXIgKmJhdGNoLAotCQkJY29uc3Qgc3RydWN0IGlndF9idWYgKmRzdCkKLXsKLQl1aW50MzJf dCAqYmluZGluZ190YWJsZSwgb2Zmc2V0OwotCi0JYmluZGluZ190YWJsZSA9IGludGVsX2JhdGNo YnVmZmVyX3N1YmRhdGFfYWxsb2MoYmF0Y2gsIDMyLCA2NCk7Ci0Jb2Zmc2V0ID0gaW50ZWxfYmF0 Y2hidWZmZXJfc3ViZGF0YV9vZmZzZXQoYmF0Y2gsIGJpbmRpbmdfdGFibGUpOwotCWlmIChJU19H RU43KGJhdGNoLT5kZXZpZCkpCi0JCWJpbmRpbmdfdGFibGVbMF0gPSBnZW43X2ZpbGxfc3VyZmFj ZV9zdGF0ZShiYXRjaCwgZHN0LAotCQkJCQkJU1VSRkFDRUZPUk1BVF9SOF9VTk9STSwgMSk7Ci0J ZWxzZQotCQliaW5kaW5nX3RhYmxlWzBdID0gZ2VuOF9maWxsX3N1cmZhY2Vfc3RhdGUoYmF0Y2gs IGRzdCwKLQkJCQkJCVNVUkZBQ0VGT1JNQVRfUjhfVU5PUk0sIDEpOwotCi0JcmV0dXJuIG9mZnNl dDsKLX0KLQotc3RhdGljIHVpbnQzMl90Ci1nZW44X2ZpbGxfaW50ZXJmYWNlX2Rlc2NyaXB0b3Io c3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKLQkJCSAgICAgICBjb25zdCBzdHJ1Y3Qg aWd0X2J1ZiAqZHN0LAotCQkJICAgICAgIGNvbnN0IHVpbnQzMl90IGtlcm5lbFtdWzRdLAotCQkJ ICAgICAgIHNpemVfdCBzaXplKQotewotCXN0cnVjdCBnZW44X2ludGVyZmFjZV9kZXNjcmlwdG9y X2RhdGEgKmlkZDsKLQl1aW50MzJfdCBvZmZzZXQ7Ci0JdWludDMyX3QgYmluZGluZ190YWJsZV9v ZmZzZXQsIGtlcm5lbF9vZmZzZXQ7Ci0KLQliaW5kaW5nX3RhYmxlX29mZnNldCA9IGdlbjdfZmls bF9iaW5kaW5nX3RhYmxlKGJhdGNoLCBkc3QpOwotCWtlcm5lbF9vZmZzZXQgPSBnZW43X2ZpbGxf a2VybmVsKGJhdGNoLCBrZXJuZWwsIHNpemUpOwotCi0JaWRkID0gaW50ZWxfYmF0Y2hidWZmZXJf c3ViZGF0YV9hbGxvYyhiYXRjaCwgc2l6ZW9mKCppZGQpLCA2NCk7Ci0Jb2Zmc2V0ID0gaW50ZWxf YmF0Y2hidWZmZXJfc3ViZGF0YV9vZmZzZXQoYmF0Y2gsIGlkZCk7CisJaW50ZWxfYmJfcHRyX2Fs aWduKGliYiwgNjQpOworCWN1cmJlX2J1ZmZlciA9IGludGVsX2JiX3B0cihpYmIpOworCW9mZnNl dCA9IGludGVsX2JiX29mZnNldChpYmIpOwogCi0JaWRkLT5kZXNjMC5rZXJuZWxfc3RhcnRfcG9p bnRlciA9IChrZXJuZWxfb2Zmc2V0ID4+IDYpOwotCi0JaWRkLT5kZXNjMi5zaW5nbGVfcHJvZ3Jh bV9mbG93ID0gMTsKLQlpZGQtPmRlc2MyLmZsb2F0aW5nX3BvaW50X21vZGUgPSBHRU44X0ZMT0FU SU5HX1BPSU5UX0lFRUVfNzU0OwotCi0JaWRkLT5kZXNjMy5zYW1wbGVyX2NvdW50ID0gMDsgICAg ICAvKiAwIHNhbXBsZXJzIHVzZWQgKi8KLQlpZGQtPmRlc2MzLnNhbXBsZXJfc3RhdGVfcG9pbnRl ciA9IDA7Ci0KLQlpZGQtPmRlc2M0LmJpbmRpbmdfdGFibGVfZW50cnlfY291bnQgPSAwOwotCWlk ZC0+ZGVzYzQuYmluZGluZ190YWJsZV9wb2ludGVyID0gKGJpbmRpbmdfdGFibGVfb2Zmc2V0ID4+ IDUpOwotCi0JaWRkLT5kZXNjNS5jb25zdGFudF91cmJfZW50cnlfcmVhZF9vZmZzZXQgPSAwOwot CWlkZC0+ZGVzYzUuY29uc3RhbnRfdXJiX2VudHJ5X3JlYWRfbGVuZ3RoID0gMTsgLyogZ3JmIDEg Ki8KLQotCWlkZC0+ZGVzYzYubnVtX3RocmVhZHNfaW5fdGcgPSAxOworCSpjdXJiZV9idWZmZXIg PSBpdGVyczsKKwlpbnRlbF9iYl9wdHJfYWRkKGliYiwgNjQpOwogCiAJcmV0dXJuIG9mZnNldDsK IH0KIAotc3RhdGljIHZvaWQKLWdlbjhfZW1pdF9zdGF0ZV9iYXNlX2FkZHJlc3Moc3RydWN0IGlu dGVsX2JhdGNoYnVmZmVyICpiYXRjaCkKLXsKLQlPVVRfQkFUQ0goR0VOOF9TVEFURV9CQVNFX0FE RFJFU1MgfCAoMTYgLSAyKSk7Ci0KLQkvKiBnZW5lcmFsICovCi0JT1VUX0JBVENIKDAgfCBCQVNF X0FERFJFU1NfTU9ESUZZKTsKLQlPVVRfQkFUQ0goMCk7Ci0KLQkvKiBzdGF0ZWxlc3MgZGF0YSBw b3J0ICovCi0JT1VUX0JBVENIKDAgfCBCQVNFX0FERFJFU1NfTU9ESUZZKTsKLQotCS8qIHN1cmZh Y2UgKi8KLQlPVVRfUkVMT0MoYmF0Y2gtPmJvLCBJOTE1X0dFTV9ET01BSU5fU0FNUExFUiwgMCwg QkFTRV9BRERSRVNTX01PRElGWSk7Ci0KLQkvKiBkeW5hbWljICovCi0JT1VUX1JFTE9DKGJhdGNo LT5ibywKLQkJICBJOTE1X0dFTV9ET01BSU5fUkVOREVSIHwgSTkxNV9HRU1fRE9NQUlOX0lOU1RS VUNUSU9OLAotCQkgIDAsIEJBU0VfQUREUkVTU19NT0RJRlkpOwotCi0JLyogaW5kaXJlY3QgKi8K LQlPVVRfQkFUQ0goMCk7Ci0JT1VUX0JBVENIKDApOwotCi0JLyogaW5zdHJ1Y3Rpb24gKi8KLQlP VVRfUkVMT0MoYmF0Y2gtPmJvLCBJOTE1X0dFTV9ET01BSU5fSU5TVFJVQ1RJT04sIDAsCi0JCSAg QkFTRV9BRERSRVNTX01PRElGWSk7Ci0KLQkvKiBnZW5lcmFsIHN0YXRlIGJ1ZmZlciBzaXplICov Ci0JT1VUX0JBVENIKDB4ZmZmZmYwMDAgfCAxKTsKLQkvKiBkeW5hbWljIHN0YXRlIGJ1ZmZlciBz aXplICovCi0JT1VUX0JBVENIKDEgPDwgMTIgfCAxKTsKLQkvKiBpbmRpcmVjdCBvYmplY3QgYnVm ZmVyIHNpemUgKi8KLQlPVVRfQkFUQ0goMHhmZmZmZjAwMCB8IDEpOwotCS8qIGluc3RydWN0aW9u IGJ1ZmZlciBzaXplLCBtdXN0IHNldCBtb2RpZnkgZW5hYmxlIGJpdCwgb3RoZXJ3aXNlIGl0IG1h eQotCSAqIHJlc3VsdCBpbiBHUFUgaGFuZwotCSAqLwotCU9VVF9CQVRDSCgxIDw8IDEyIHwgMSk7 Ci19Ci0KLXN0YXRpYyB2b2lkCi1nZW44X2VtaXRfdmZlX3N0YXRlKHN0cnVjdCBpbnRlbF9iYXRj aGJ1ZmZlciAqYmF0Y2gsIHVpbnQzMl90IHRocmVhZHMsCi0JCSAgICB1aW50MzJfdCB1cmJfZW50 cmllcywgdWludDMyX3QgdXJiX3NpemUsCi0JCSAgICB1aW50MzJfdCBjdXJiZV9zaXplKQotewot CU9VVF9CQVRDSChHRU43X01FRElBX1ZGRV9TVEFURSB8ICg5IC0gMikpOwotCi0JLyogc2NyYXRj aCBidWZmZXIgKi8KLQlPVVRfQkFUQ0goMCk7Ci0JT1VUX0JBVENIKDApOwotCi0JLyogbnVtYmVy IG9mIHRocmVhZHMgJiB1cmIgZW50cmllcyAqLwotCU9VVF9CQVRDSCh0aHJlYWRzIDw8IDE2IHwK LQkJdXJiX2VudHJpZXMgPDwgOCk7Ci0KLQlPVVRfQkFUQ0goMCk7Ci0KLQkvKiB1cmIgZW50cnkg c2l6ZSAmIGN1cmJlIHNpemUgKi8KLQlPVVRfQkFUQ0godXJiX3NpemUgPDwgMTYgfAotCQljdXJi ZV9zaXplKTsKLQotCS8qIHNjb3JlYm9hcmQgKi8KLQlPVVRfQkFUQ0goMCk7Ci0JT1VUX0JBVENI KDApOwotCU9VVF9CQVRDSCgwKTsKLX0KLQotc3RhdGljIHZvaWQKLWdlbjdfZW1pdF9jdXJiZV9s b2FkKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsIHVpbnQzMl90IGN1cmJlX2J1ZmZl cikKLXsKLQlPVVRfQkFUQ0goR0VON19NRURJQV9DVVJCRV9MT0FEIHwgKDQgLSAyKSk7Ci0JT1VU X0JBVENIKDApOwotCS8qIGN1cmJlIHRvdGFsIGRhdGEgbGVuZ3RoICovCi0JT1VUX0JBVENIKDY0 KTsKLQkvKiBjdXJiZSBkYXRhIHN0YXJ0IGFkZHJlc3MsIGlzIHJlbGF0aXZlIHRvIHRoZSBkeW5h bWljcyBiYXNlIGFkZHJlc3MgKi8KLQlPVVRfQkFUQ0goY3VyYmVfYnVmZmVyKTsKLX0KLQotc3Rh dGljIHZvaWQKLWdlbjdfZW1pdF9pbnRlcmZhY2VfZGVzY3JpcHRvcl9sb2FkKHN0cnVjdCBpbnRl bF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCi0JCQkJICAgIHVpbnQzMl90IGludGVyZmFjZV9kZXNjcmlw dG9yKQotewotCU9VVF9CQVRDSChHRU43X01FRElBX0lOVEVSRkFDRV9ERVNDUklQVE9SX0xPQUQg fCAoNCAtIDIpKTsKLQlPVVRfQkFUQ0goMCk7Ci0JLyogaW50ZXJmYWNlIGRlc2NyaXB0b3IgZGF0 YSBsZW5ndGggKi8KLQlpZiAoSVNfR0VONyhiYXRjaC0+ZGV2aWQpKQotCQlPVVRfQkFUQ0goc2l6 ZW9mKHN0cnVjdCBnZW43X2ludGVyZmFjZV9kZXNjcmlwdG9yX2RhdGEpKTsKLQllbHNlCi0JCU9V VF9CQVRDSChzaXplb2Yoc3RydWN0IGdlbjhfaW50ZXJmYWNlX2Rlc2NyaXB0b3JfZGF0YSkpOwot CS8qIGludGVyZmFjZSBkZXNjcmlwdG9yIGFkZHJlc3MsIGlzIHJlbGF0aXZlIHRvIHRoZSBkeW5h bWljcyBiYXNlCi0JICogYWRkcmVzcwotCSAqLwotCU9VVF9CQVRDSChpbnRlcmZhY2VfZGVzY3Jp cHRvcik7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nZW44X2VtaXRfbWVkaWFfc3RhdGVfZmx1c2goc3Ry dWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCkKLXsKLQlPVVRfQkFUQ0goR0VOOF9NRURJQV9T VEFURV9GTFVTSCB8ICgyIC0gMikpOwotCU9VVF9CQVRDSCgwKTsKLX0KLQotc3RhdGljIHZvaWQK LWdlbl9lbWl0X21lZGlhX29iamVjdChzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAot CQkgICAgICB1bnNpZ25lZCBpbnQgeG9mZiwgdW5zaWduZWQgaW50IHlvZmYpCi17Ci0JT1VUX0JB VENIKEdFTjdfTUVESUFfT0JKRUNUIHwgKDggLSAyKSk7Ci0KLQkvKiBpbnRlcmZhY2UgZGVzY3Jp cHRvciBvZmZzZXQgKi8KLQlPVVRfQkFUQ0goMCk7Ci0KLQkvKiB3aXRob3V0IGluZGlyZWN0IGRh dGEgKi8KLQlPVVRfQkFUQ0goMCk7Ci0JT1VUX0JBVENIKDApOwotCi0JLyogc2NvcmVib2FyZCAq LwotCU9VVF9CQVRDSCgwKTsKLQlPVVRfQkFUQ0goMCk7Ci0KLQkvKiBpbmxpbmUgZGF0YSAoeG9m ZnNldCwgeW9mZnNldCkgKi8KLQlPVVRfQkFUQ0goeG9mZik7Ci0JT1VUX0JBVENIKHlvZmYpOwot CWlmIChBVF9MRUFTVF9HRU4oYmF0Y2gtPmRldmlkLCA4KSAmJiAhSVNfQ0hFUlJZVklFVyhiYXRj aC0+ZGV2aWQpKQotCQlnZW44X2VtaXRfbWVkaWFfc3RhdGVfZmx1c2goYmF0Y2gpOwotfQotCi1z dGF0aWMgdm9pZAotZ2VuOV9lbWl0X3N0YXRlX2Jhc2VfYWRkcmVzcyhzdHJ1Y3QgaW50ZWxfYmF0 Y2hidWZmZXIgKmJhdGNoKQotewotCU9VVF9CQVRDSChHRU44X1NUQVRFX0JBU0VfQUREUkVTUyB8 ICgxOSAtIDIpKTsKLQotCS8qIGdlbmVyYWwgKi8KLQlPVVRfQkFUQ0goMCB8IEJBU0VfQUREUkVT U19NT0RJRlkpOwotCU9VVF9CQVRDSCgwKTsKLQotCS8qIHN0YXRlbGVzcyBkYXRhIHBvcnQgKi8K LQlPVVRfQkFUQ0goMCB8IEJBU0VfQUREUkVTU19NT0RJRlkpOwotCi0JLyogc3VyZmFjZSAqLwot CU9VVF9SRUxPQyhiYXRjaC0+Ym8sIEk5MTVfR0VNX0RPTUFJTl9TQU1QTEVSLCAwLCBCQVNFX0FE RFJFU1NfTU9ESUZZKTsKLQotCS8qIGR5bmFtaWMgKi8KLQlPVVRfUkVMT0MoYmF0Y2gtPmJvLAot CQkgIEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIgfCBJOTE1X0dFTV9ET01BSU5fSU5TVFJVQ1RJT04s Ci0JCSAgMCwgQkFTRV9BRERSRVNTX01PRElGWSk7Ci0KLQkvKiBpbmRpcmVjdCAqLwotCU9VVF9C QVRDSCgwKTsKLQlPVVRfQkFUQ0goMCk7Ci0KLQkvKiBpbnN0cnVjdGlvbiAqLwotCU9VVF9SRUxP QyhiYXRjaC0+Ym8sIEk5MTVfR0VNX0RPTUFJTl9JTlNUUlVDVElPTiwgMCwKLQkJICBCQVNFX0FE RFJFU1NfTU9ESUZZKTsKLQotCS8qIGdlbmVyYWwgc3RhdGUgYnVmZmVyIHNpemUgKi8KLQlPVVRf QkFUQ0goMHhmZmZmZjAwMCB8IDEpOwotCS8qIGR5bmFtaWMgc3RhdGUgYnVmZmVyIHNpemUgKi8K LQlPVVRfQkFUQ0goMSA8PCAxMiB8IDEpOwotCS8qIGluZGlyZWN0IG9iamVjdCBidWZmZXIgc2l6 ZSAqLwotCU9VVF9CQVRDSCgweGZmZmZmMDAwIHwgMSk7Ci0JLyogaW50cnVjdGlvbiBidWZmZXIg c2l6ZSwgbXVzdCBzZXQgbW9kaWZ5IGVuYWJsZSBiaXQsIG90aGVyd2lzZSBpdCBtYXkKLQkgKiBy ZXN1bHQgaW4gR1BVIGhhbmcKLQkgKi8KLQlPVVRfQkFUQ0goMSA8PCAxMiB8IDEpOwotCi0JLyog QmluZGxlc3Mgc3VyZmFjZSBzdGF0ZSBiYXNlIGFkZHJlc3MgKi8KLQlPVVRfQkFUQ0goMCB8IEJB U0VfQUREUkVTU19NT0RJRlkpOwotCU9VVF9CQVRDSCgwKTsKLQlPVVRfQkFUQ0goMHhmZmZmZjAw MCk7Ci19Ci0KIHZvaWQKLWdlbjhfbWVkaWFfc3BpbmZ1bmMoc3RydWN0IGludGVsX2JhdGNoYnVm ZmVyICpiYXRjaCwKLQkJICAgIGNvbnN0IHN0cnVjdCBpZ3RfYnVmICpkc3QsIHVpbnQzMl90IHNw aW5zKQorZ2VuOF9tZWRpYV9zcGluZnVuYyhpbnQgaTkxNSwgc3RydWN0IGludGVsX2J1ZiAqYnVm LCB1aW50MzJfdCBzcGlucykKIHsKKwlzdHJ1Y3QgaW50ZWxfYmIgKmliYjsKIAl1aW50MzJfdCBj dXJiZV9idWZmZXIsIGludGVyZmFjZV9kZXNjcmlwdG9yOwotCXVpbnQzMl90IGJhdGNoX2VuZDsK IAotCWludGVsX2JhdGNoYnVmZmVyX2ZsdXNoX3dpdGhfY29udGV4dChiYXRjaCwgTlVMTCk7CisJ aWJiID0gaW50ZWxfYmJfY3JlYXRlKGk5MTUsIFBBR0VfU0laRSk7CisJaW50ZWxfYmJfYWRkX29i amVjdChpYmIsIGJ1Zi0+aGFuZGxlLCAwLCB0cnVlKTsKIAogCS8qIHNldHVwIHN0YXRlcyAqLwot CWJhdGNoLT5wdHIgPSAmYmF0Y2gtPmJ1ZmZlcltCQVRDSF9TVEFURV9TUExJVF07CisJaW50ZWxf YmJfcHRyX3NldChpYmIsIEJBVENIX1NUQVRFX1NQTElUKTsKIAotCWN1cmJlX2J1ZmZlciA9IGdl bjhfc3Bpbl9jdXJiZV9idWZmZXJfZGF0YShiYXRjaCwgc3BpbnMpOwotCWludGVyZmFjZV9kZXNj cmlwdG9yID0gZ2VuOF9maWxsX2ludGVyZmFjZV9kZXNjcmlwdG9yKGJhdGNoLCBkc3QsCisJY3Vy YmVfYnVmZmVyID0gZ2VuOF9zcGluX2N1cmJlX2J1ZmZlcl9kYXRhKGliYiwgc3BpbnMpOworCWlu dGVyZmFjZV9kZXNjcmlwdG9yID0gZ2VuOF9maWxsX2ludGVyZmFjZV9kZXNjcmlwdG9yKGliYiwg YnVmLAogCQkJCQkgICAgICBzcGluX2tlcm5lbCwgc2l6ZW9mKHNwaW5fa2VybmVsKSk7Ci0JaWd0 X2Fzc2VydChiYXRjaC0+cHRyIDwgJmJhdGNoLT5idWZmZXJbNDA5NV0pOworCisJaW50ZWxfYmJf cHRyX3NldChpYmIsIDApOwogCiAJLyogbWVkaWEgcGlwZWxpbmUgKi8KLQliYXRjaC0+cHRyID0g YmF0Y2gtPmJ1ZmZlcjsKLQlPVVRfQkFUQ0goR0VOOF9QSVBFTElORV9TRUxFQ1QgfCBQSVBFTElO RV9TRUxFQ1RfTUVESUEpOwotCWdlbjhfZW1pdF9zdGF0ZV9iYXNlX2FkZHJlc3MoYmF0Y2gpOwor CWludGVsX2JiX291dChpYmIsIEdFTjhfUElQRUxJTkVfU0VMRUNUIHwgUElQRUxJTkVfU0VMRUNU X01FRElBKTsKKwlnZW44X2VtaXRfc3RhdGVfYmFzZV9hZGRyZXNzKGliYik7CiAKLQlnZW44X2Vt aXRfdmZlX3N0YXRlKGJhdGNoLCBUSFJFQURTLCBNRURJQV9VUkJfRU5UUklFUywKKwlnZW44X2Vt aXRfdmZlX3N0YXRlKGliYiwgVEhSRUFEUywgTUVESUFfVVJCX0VOVFJJRVMsCiAJCQkgICAgTUVE SUFfVVJCX1NJWkUsIE1FRElBX0NVUkJFX1NJWkUpOwogCi0JZ2VuN19lbWl0X2N1cmJlX2xvYWQo YmF0Y2gsIGN1cmJlX2J1ZmZlcik7CisJZ2VuN19lbWl0X2N1cmJlX2xvYWQoaWJiLCBjdXJiZV9i dWZmZXIpOwogCi0JZ2VuN19lbWl0X2ludGVyZmFjZV9kZXNjcmlwdG9yX2xvYWQoYmF0Y2gsIGlu dGVyZmFjZV9kZXNjcmlwdG9yKTsKKwlnZW43X2VtaXRfaW50ZXJmYWNlX2Rlc2NyaXB0b3JfbG9h ZChpYmIsIGludGVyZmFjZV9kZXNjcmlwdG9yKTsKIAotCWdlbl9lbWl0X21lZGlhX29iamVjdChi YXRjaCwgeG9mZnNldCwgeW9mZnNldCk7CisJZ2VuX2VtaXRfbWVkaWFfb2JqZWN0KGliYiwgeG9m ZnNldCwgeW9mZnNldCk7CiAKLQlPVVRfQkFUQ0goTUlfQkFUQ0hfQlVGRkVSX0VORCk7CisJaW50 ZWxfYmJfb3V0KGliYiwgTUlfQkFUQ0hfQlVGRkVSX0VORCk7CisJaW50ZWxfYmJfcHRyX2FsaWdu KGliYiwgMzIpOwogCi0JYmF0Y2hfZW5kID0gaW50ZWxfYmF0Y2hidWZmZXJfYWxpZ24oYmF0Y2gs IDgpOwotCWlndF9hc3NlcnQoYmF0Y2hfZW5kIDwgQkFUQ0hfU1RBVEVfU1BMSVQpOworCWludGVs X2JiX2V4ZWMoaWJiLCBpbnRlbF9iYl9vZmZzZXQoaWJiKSwKKwkJICAgICAgSTkxNV9FWEVDX0RF RkFVTFQgfCBJOTE1X0VYRUNfTk9fUkVMT0MsIGZhbHNlKTsKIAotCWdlbjdfcmVuZGVyX2ZsdXNo KGJhdGNoLCBiYXRjaF9lbmQpOwotCWludGVsX2JhdGNoYnVmZmVyX3Jlc2V0KGJhdGNoKTsKKwlp bnRlbF9iYl9vYmplY3Rfb2Zmc2V0X3RvX2J1ZihpYmIsIGJ1Zik7CisJaW50ZWxfYmJfZGVzdHJv eShpYmIpOwogfQogCi0KIHZvaWQKLWdlbjlfbWVkaWFfc3BpbmZ1bmMoc3RydWN0IGludGVsX2Jh dGNoYnVmZmVyICpiYXRjaCwKLQkJICAgIGNvbnN0IHN0cnVjdCBpZ3RfYnVmICpkc3QsIHVpbnQz Ml90IHNwaW5zKQorZ2VuOV9tZWRpYV9zcGluZnVuYyhpbnQgaTkxNSwgc3RydWN0IGludGVsX2J1 ZiAqYnVmLCB1aW50MzJfdCBzcGlucykKIHsKKwlzdHJ1Y3QgaW50ZWxfYmIgKmliYjsKIAl1aW50 MzJfdCBjdXJiZV9idWZmZXIsIGludGVyZmFjZV9kZXNjcmlwdG9yOwotCXVpbnQzMl90IGJhdGNo X2VuZDsKIAotCWludGVsX2JhdGNoYnVmZmVyX2ZsdXNoX3dpdGhfY29udGV4dChiYXRjaCwgTlVM TCk7CisJaWJiID0gaW50ZWxfYmJfY3JlYXRlKGk5MTUsIFBBR0VfU0laRSk7CisJaW50ZWxfYmJf YWRkX29iamVjdChpYmIsIGJ1Zi0+aGFuZGxlLCAwLCB0cnVlKTsKIAogCS8qIHNldHVwIHN0YXRl cyAqLwotCWJhdGNoLT5wdHIgPSAmYmF0Y2gtPmJ1ZmZlcltCQVRDSF9TVEFURV9TUExJVF07CisJ aW50ZWxfYmJfcHRyX3NldChpYmIsIEJBVENIX1NUQVRFX1NQTElUKTsKIAotCWN1cmJlX2J1ZmZl ciA9IGdlbjhfc3Bpbl9jdXJiZV9idWZmZXJfZGF0YShiYXRjaCwgc3BpbnMpOwotCWludGVyZmFj ZV9kZXNjcmlwdG9yID0gZ2VuOF9maWxsX2ludGVyZmFjZV9kZXNjcmlwdG9yKGJhdGNoLCBkc3Qs CisJY3VyYmVfYnVmZmVyID0gZ2VuOF9zcGluX2N1cmJlX2J1ZmZlcl9kYXRhKGliYiwgc3BpbnMp OworCWludGVyZmFjZV9kZXNjcmlwdG9yID0gZ2VuOF9maWxsX2ludGVyZmFjZV9kZXNjcmlwdG9y KGliYiwgYnVmLAogCQkJCQkgICAgICBzcGluX2tlcm5lbCwgc2l6ZW9mKHNwaW5fa2VybmVsKSk7 Ci0JaWd0X2Fzc2VydChiYXRjaC0+cHRyIDwgJmJhdGNoLT5idWZmZXJbNDA5NV0pOworCisJaW50 ZWxfYmJfcHRyX3NldChpYmIsIDApOwogCiAJLyogbWVkaWEgcGlwZWxpbmUgKi8KLQliYXRjaC0+ cHRyID0gYmF0Y2gtPmJ1ZmZlcjsKLQlPVVRfQkFUQ0goR0VOOF9QSVBFTElORV9TRUxFQ1QgfCBQ SVBFTElORV9TRUxFQ1RfTUVESUEgfAotCQkgIEdFTjlfRk9SQ0VfTUVESUFfQVdBS0VfRU5BQkxF IHwKLQkJICBHRU45X1NBTVBMRVJfRE9QX0dBVEVfRElTQUJMRSB8Ci0JCSAgR0VOOV9QSVBFTElO RV9TRUxFQ1RJT05fTUFTSyB8Ci0JCSAgR0VOOV9TQU1QTEVSX0RPUF9HQVRFX01BU0sgfAotCQkg IEdFTjlfRk9SQ0VfTUVESUFfQVdBS0VfTUFTSyk7Ci0JZ2VuOV9lbWl0X3N0YXRlX2Jhc2VfYWRk cmVzcyhiYXRjaCk7Ci0KLQlnZW44X2VtaXRfdmZlX3N0YXRlKGJhdGNoLCBUSFJFQURTLCBNRURJ QV9VUkJfRU5UUklFUywKKwlpbnRlbF9iYl9vdXQoaWJiLCBHRU44X1BJUEVMSU5FX1NFTEVDVCB8 IFBJUEVMSU5FX1NFTEVDVF9NRURJQSB8CisJCSAgICAgR0VOOV9GT1JDRV9NRURJQV9BV0FLRV9F TkFCTEUgfAorCQkgICAgIEdFTjlfU0FNUExFUl9ET1BfR0FURV9ESVNBQkxFIHwKKwkJICAgICBH RU45X1BJUEVMSU5FX1NFTEVDVElPTl9NQVNLIHwKKwkJICAgICBHRU45X1NBTVBMRVJfRE9QX0dB VEVfTUFTSyB8CisJCSAgICAgR0VOOV9GT1JDRV9NRURJQV9BV0FLRV9NQVNLKTsKKwlnZW45X2Vt aXRfc3RhdGVfYmFzZV9hZGRyZXNzKGliYik7CisKKwlnZW44X2VtaXRfdmZlX3N0YXRlKGliYiwg VEhSRUFEUywgTUVESUFfVVJCX0VOVFJJRVMsCiAJCQkgICAgTUVESUFfVVJCX1NJWkUsIE1FRElB X0NVUkJFX1NJWkUpOwogCi0JZ2VuN19lbWl0X2N1cmJlX2xvYWQoYmF0Y2gsIGN1cmJlX2J1ZmZl cik7CisJZ2VuN19lbWl0X2N1cmJlX2xvYWQoaWJiLCBjdXJiZV9idWZmZXIpOworCisJZ2VuN19l bWl0X2ludGVyZmFjZV9kZXNjcmlwdG9yX2xvYWQoaWJiLCBpbnRlcmZhY2VfZGVzY3JpcHRvcik7 CiAKLQlnZW43X2VtaXRfaW50ZXJmYWNlX2Rlc2NyaXB0b3JfbG9hZChiYXRjaCwgaW50ZXJmYWNl X2Rlc2NyaXB0b3IpOworCWdlbl9lbWl0X21lZGlhX29iamVjdChpYmIsIHhvZmZzZXQsIHlvZmZz ZXQpOwogCi0JZ2VuX2VtaXRfbWVkaWFfb2JqZWN0KGJhdGNoLCB4b2Zmc2V0LCB5b2Zmc2V0KTsK KwlpbnRlbF9iYl9vdXQoaWJiLCBHRU44X1BJUEVMSU5FX1NFTEVDVCB8IFBJUEVMSU5FX1NFTEVD VF9NRURJQSB8CisJCSAgICAgR0VOOV9GT1JDRV9NRURJQV9BV0FLRV9ESVNBQkxFIHwKKwkJICAg ICBHRU45X1NBTVBMRVJfRE9QX0dBVEVfRU5BQkxFIHwKKwkJICAgICBHRU45X1BJUEVMSU5FX1NF TEVDVElPTl9NQVNLIHwKKwkJICAgICBHRU45X1NBTVBMRVJfRE9QX0dBVEVfTUFTSyB8CisJCSAg ICAgR0VOOV9GT1JDRV9NRURJQV9BV0FLRV9NQVNLKTsKIAotCU9VVF9CQVRDSChHRU44X1BJUEVM SU5FX1NFTEVDVCB8IFBJUEVMSU5FX1NFTEVDVF9NRURJQSB8Ci0JCSAgR0VOOV9GT1JDRV9NRURJ QV9BV0FLRV9ESVNBQkxFIHwKLQkJICBHRU45X1NBTVBMRVJfRE9QX0dBVEVfRU5BQkxFIHwKLQkJ ICBHRU45X1BJUEVMSU5FX1NFTEVDVElPTl9NQVNLIHwKLQkJICBHRU45X1NBTVBMRVJfRE9QX0dB VEVfTUFTSyB8Ci0JCSAgR0VOOV9GT1JDRV9NRURJQV9BV0FLRV9NQVNLKTsKKwlpbnRlbF9iYl9v dXQoaWJiLCBNSV9CQVRDSF9CVUZGRVJfRU5EKTsKIAotCU9VVF9CQVRDSChNSV9CQVRDSF9CVUZG RVJfRU5EKTsKKwlpbnRlbF9iYl9wdHJfYWxpZ24oaWJiLCAzMik7CiAKLQliYXRjaF9lbmQgPSBp bnRlbF9iYXRjaGJ1ZmZlcl9hbGlnbihiYXRjaCwgOCk7Ci0JaWd0X2Fzc2VydChiYXRjaF9lbmQg PCBCQVRDSF9TVEFURV9TUExJVCk7CisJaW50ZWxfYmJfZXhlYyhpYmIsIGludGVsX2JiX29mZnNl dChpYmIpLAorCQkgICAgICBJOTE1X0VYRUNfREVGQVVMVCB8IEk5MTVfRVhFQ19OT19SRUxPQywg ZmFsc2UpOwogCi0JZ2VuN19yZW5kZXJfZmx1c2goYmF0Y2gsIGJhdGNoX2VuZCk7Ci0JaW50ZWxf YmF0Y2hidWZmZXJfcmVzZXQoYmF0Y2gpOworCWludGVsX2JiX29iamVjdF9vZmZzZXRfdG9fYnVm KGliYiwgYnVmKTsKKwlpbnRlbF9iYl9kZXN0cm95KGliYik7CiB9CmRpZmYgLS1naXQgYS9saWIv bWVkaWFfc3Bpbi5oIGIvbGliL21lZGlhX3NwaW4uaAppbmRleCA3NjhlY2NjMC4uNWUxNWUwMjEg MTAwNjQ0Ci0tLSBhL2xpYi9tZWRpYV9zcGluLmgKKysrIGIvbGliL21lZGlhX3NwaW4uaApAQCAt MjcsMTAgKzI3LDEwIEBACiAjaWZuZGVmIE1FRElBX1NQSU5fSAogI2RlZmluZSBNRURJQV9TUElO X0gKIAotdm9pZCBnZW44X21lZGlhX3NwaW5mdW5jKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAq YmF0Y2gsCi0JCQkgY29uc3Qgc3RydWN0IGlndF9idWYgKmRzdCwgdWludDMyX3Qgc3BpbnMpOwor c3RydWN0IGludGVsX2J1ZjsKIAotdm9pZCBnZW45X21lZGlhX3NwaW5mdW5jKHN0cnVjdCBpbnRl bF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCi0JCQkgY29uc3Qgc3RydWN0IGlndF9idWYgKmRzdCwgdWlu dDMyX3Qgc3BpbnMpOwordm9pZCBnZW44X21lZGlhX3NwaW5mdW5jKGludCBpOTE1LCBzdHJ1Y3Qg aW50ZWxfYnVmICpidWYsIHVpbnQzMl90IHNwaW5zKTsKKwordm9pZCBnZW45X21lZGlhX3NwaW5m dW5jKGludCBpOTE1LCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsIHVpbnQzMl90IHNwaW5zKTsKIAog I2VuZGlmIC8qIE1FRElBX1NQSU5fSCAqLwpkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9pOTE1X3Bt X3NzZXUuYyBiL3Rlc3RzL2k5MTUvaTkxNV9wbV9zc2V1LmMKaW5kZXggNDYxYzcwY2MuLjMwYjdj ZmVjIDEwMDY0NAotLS0gYS90ZXN0cy9pOTE1L2k5MTVfcG1fc3NldS5jCisrKyBiL3Rlc3RzL2k5 MTUvaTkxNV9wbV9zc2V1LmMKQEAgLTM0LDcgKzM0LDcgQEAKIAogI2luY2x1ZGUgImk5MTUvZ2Vt LmgiCiAjaW5jbHVkZSAiaWd0LmgiCi0jaW5jbHVkZSAiaW50ZWxfYnVmbWdyLmgiCisjaW5jbHVk ZSAiaW50ZWxfYnVmb3BzLmgiCiAKIElHVF9URVNUX0RFU0NSSVBUSU9OKCJUZXN0cyBzbGljZS9z dWJzbGljZS9FVSBwb3dlciBnYXRpbmcgZnVuY3Rpb25hbGl0eS5cbiIpOwogCkBAIC00MywxMCAr NDMsMTAgQEAgc3RhdGljIHN0cnVjdCB7CiAJaW50IGRybV9mZDsKIAlpbnQgZGV2aWQ7CiAJaW50 IGdlbjsKLQlkcm1faW50ZWxfYnVmbWdyICpidWZtZ3I7Ci0Jc3RydWN0IGludGVsX2JhdGNoYnVm ZmVyICpiYXRjaDsKKworCXN0cnVjdCBidWZfb3BzICpib3BzOworCXN0cnVjdCBpbnRlbF9idWYg YnVmOwogCWlndF9tZWRpYV9zcGluZnVuY190IHNwaW5mdW5jOwotCXN0cnVjdCBpZ3RfYnVmIGJ1 ZjsKIAl1aW50MzJfdCBzcGluc19wZXJfbXNlYzsKIH0gZ2VtOwogCkBAIC0yMTcsNiArMjE3LDcg QEAgZGJnX2luaXQodm9pZCkKIHsKIAlpZ3RfYXNzZXJ0KGdlbS5pbml0KTsKIAlkYmcuc3RhdHVz X2ZkID0gaWd0X2RlYnVnZnNfb3BlbihnZW0uZHJtX2ZkLCAiaTkxNV9zc2V1X3N0YXR1cyIsIE9f UkRPTkxZKTsKKwogCWlndF9za2lwX29uX2YoZGJnLnN0YXR1c19mZCA9PSAtMSwKIAkJICAgICAg ImRlYnVnZnMgZW50cnkgJ2k5MTVfc3NldV9zdGF0dXMnIG5vdCBmb3VuZFxuIik7CiAJZGJnLmlu aXQgPSAxOwpAQCAtMjMzLDExICsyMzQsOCBAQCBkYmdfZGVpbml0KHZvaWQpCiB9CiAKIHN0YXRp YyB2b2lkCi1nZW1fY2hlY2tfc3Bpbih1aW50MzJfdCBzcGlucykKK2dlbV9jaGVja19zcGluKHVp bnQzMl90ICpkYXRhLCB1aW50MzJfdCBzcGlucykKIHsKLQl1aW50MzJfdCAqZGF0YTsKLQotCWRh dGEgPSAodWludDMyX3QqKWdlbS5idWYuYm8tPnZpcnR1YWw7CiAJaWd0X2Fzc2VydF9lcV91MzIo KmRhdGEsIHNwaW5zKTsKIH0KIApAQCAtMjQ2LDggKzI0NCw4IEBAIGdlbV9nZXRfdGFyZ2V0X3Nw aW5zKGRvdWJsZSBkdCkKIHsKIAlzdHJ1Y3QgdGltZXNwZWMgdHN0YXJ0LCB0ZG9uZTsKIAlkb3Vi bGUgcHJldl9kdCwgY3VyX2R0OwotCXVpbnQzMl90IHNwaW5zOwotCWludCBpLCByZXQ7CisJdWlu dDMyX3Qgc3BpbnMsICpwdHI7CisJaW50IGk7CiAKIAkvKiBEb3VibGUgaW5jcmVtZW50cyB1bnRp bCB3ZSBib3VuZCB0aGUgdGFyZ2V0IHRpbWUgKi8KIAlwcmV2X2R0ID0gMC4wOwpAQCAtMjU1LDEz ICsyNTMsMTggQEAgZ2VtX2dldF90YXJnZXRfc3BpbnMoZG91YmxlIGR0KQogCQlzcGlucyA9IDEg PDwgaTsKIAkJY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZ0c3RhcnQpOwogCi0JCWdl bS5zcGluZnVuYyhnZW0uYmF0Y2gsICZnZW0uYnVmLCBzcGlucyk7Ci0JCXJldCA9IGRybV9pbnRl bF9ib19tYXAoZ2VtLmJ1Zi5ibywgMCk7Ci0JCWlndF9hc3NlcnRfZXEocmV0LCAwKTsKKwkJZ2Vt LnNwaW5mdW5jKGdlbS5kcm1fZmQsICZnZW0uYnVmLCBzcGlucyk7CisJCWdlbV9zZXRfZG9tYWlu KGdlbS5kcm1fZmQsIGdlbS5idWYuaGFuZGxlLAorCQkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9D UFUsIEk5MTVfR0VNX0RPTUFJTl9DUFUpOworCisJCXB0ciA9IGdlbV9tbWFwX19kZXZpY2VfY29o ZXJlbnQoZ2VtLmRybV9mZCwgZ2VtLmJ1Zi5oYW5kbGUsCisJCQkJCQkwLCBnZW0uYnVmLnNpemUs IFBST1RfUkVBRCk7CisKIAkJY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZ0ZG9uZSk7 CiAKLQkJZ2VtX2NoZWNrX3NwaW4oc3BpbnMpOwotCQlkcm1faW50ZWxfYm9fdW5tYXAoZ2VtLmJ1 Zi5ibyk7CisJCWdlbV9jaGVja19zcGluKHB0ciwgc3BpbnMpOworCisJCW11bm1hcChwdHIsIGdl bS5idWYuc2l6ZSk7CiAKIAkJY3VyX2R0ID0gdG9fZHQoJnRzdGFydCwgJnRkb25lKTsKIAkJaWYg KGN1cl9kdCA+IGR0KQpAQCAtMjkyLDI1ICsyOTUsMTIgQEAgZ2VtX2luaXQodm9pZCkKIAlnZW0u c3BpbmZ1bmMgPSBpZ3RfZ2V0X21lZGlhX3NwaW5mdW5jKGdlbS5kZXZpZCk7CiAJaWd0X3JlcXVp cmUoZ2VtLnNwaW5mdW5jKTsKIAotCWdlbS5idWZtZ3IgPSBkcm1faW50ZWxfYnVmbWdyX2dlbV9p bml0KGdlbS5kcm1fZmQsIDQwOTYpOwotCWlndF9hc3NlcnQoZ2VtLmJ1Zm1ncik7CisJZ2VtLmJv cHMgPSBidWZfb3BzX2NyZWF0ZShnZW0uZHJtX2ZkKTsKIAlnZW0uaW5pdCA9IDI7CiAKLQlkcm1f aW50ZWxfYnVmbWdyX2dlbV9lbmFibGVfcmV1c2UoZ2VtLmJ1Zm1ncik7Ci0KLQlnZW0uYmF0Y2gg PSBpbnRlbF9iYXRjaGJ1ZmZlcl9hbGxvYyhnZW0uYnVmbWdyLCBnZW0uZGV2aWQpOwotCWlndF9h c3NlcnQoZ2VtLmJhdGNoKTsKKwlpbnRlbF9idWZfaW5pdChnZW0uYm9wcywgJmdlbS5idWYsIDEs IDEsIDMyLCAwLCBJOTE1X1RJTElOR19OT05FLCAwKTsKIAlnZW0uaW5pdCA9IDM7CiAKLQlnZW0u YnVmLnN1cmZhY2VbMF0uc3RyaWRlID0gc2l6ZW9mKHVpbnQzMl90KTsKLQlnZW0uYnVmLnRpbGlu ZyA9IEk5MTVfVElMSU5HX05PTkU7Ci0JZ2VtLmJ1Zi5zdXJmYWNlWzBdLnNpemUgPSBnZW0uYnVm LnN1cmZhY2VbMF0uc3RyaWRlOwotCWdlbS5idWYuYm8gPSBkcm1faW50ZWxfYm9fYWxsb2MoZ2Vt LmJ1Zm1nciwgIiIsCi0JCQkJCWdlbS5idWYuc3VyZmFjZVswXS5zaXplLCA0MDk2KTsKLQlnZW0u YnVmLmJwcCA9IDMyOwotCWlndF9hc3NlcnQoZ2VtLmJ1Zi5ibyk7Ci0JZ2VtLmluaXQgPSA0Owot CiAJZ2VtLnNwaW5zX3Blcl9tc2VjID0gZ2VtX2dldF90YXJnZXRfc3BpbnMoMTAwKSAvIDEwMDsK IH0KIApAQCAtMzE5LDEzICszMDksMTAgQEAgZ2VtX2RlaW5pdCh2b2lkKQogewogCXN3aXRjaCAo Z2VtLmluaXQpCiAJewotCWNhc2UgNDoKLQkJZHJtX2ludGVsX2JvX3VubWFwKGdlbS5idWYuYm8p OwotCQlkcm1faW50ZWxfYm9fdW5yZWZlcmVuY2UoZ2VtLmJ1Zi5ibyk7CiAJY2FzZSAzOgotCQlp bnRlbF9iYXRjaGJ1ZmZlcl9mcmVlKGdlbS5iYXRjaCk7CisJCWludGVsX2J1Zl9jbG9zZShnZW0u Ym9wcywgJmdlbS5idWYpOwogCWNhc2UgMjoKLQkJZHJtX2ludGVsX2J1Zm1ncl9kZXN0cm95KGdl bS5idWZtZ3IpOworCQlidWZfb3BzX2Rlc3Ryb3koZ2VtLmJvcHMpOwogCWNhc2UgMToKIAkJY2xv c2UoZ2VtLmRybV9mZCk7CiAJfQpAQCAtMzU0LDcgKzM0MSw4IEBAIGZ1bGxfZW5hYmxlKHZvaWQp CiB7CiAJc3RydWN0IHN0YXR1cyBzdGF0OwogCWNvbnN0IGludCBzcGluX21zZWMgPSAxMDsKLQlp bnQgcmV0LCBzcGluczsKKwl1aW50MzJfdCAqcHRyOworCWludCBzcGluczsKIAogCS8qCiAJICog R2VuOSBTS0wgaXMgdGhlIGZpcnN0IGNhc2UgaW4gd2hpY2ggcmVuZGVyIHBvd2VyIGdhdGluZyBj YW4gbGVhdmUKQEAgLTM2NSwxNiArMzUzLDE3IEBAIGZ1bGxfZW5hYmxlKHZvaWQpCiAKIAlzcGlu cyA9IHNwaW5fbXNlYyAqIGdlbS5zcGluc19wZXJfbXNlYzsKIAotCWdlbS5zcGluZnVuYyhnZW0u YmF0Y2gsICZnZW0uYnVmLCBzcGlucyk7CisJZ2VtLnNwaW5mdW5jKGdlbS5kcm1fZmQsICZnZW0u YnVmLCBzcGlucyk7CiAKIAl1c2xlZXAoMjAwMCk7IC8qIDJtcyB3YWl0IHRvIG1ha2Ugc3VyZSBi YXRjaCBpcyBydW5uaW5nICovCiAJZGJnX2dldF9zdGF0dXMoJnN0YXQpOwogCi0JcmV0ID0gZHJt X2ludGVsX2JvX21hcChnZW0uYnVmLmJvLCAwKTsKLQlpZ3RfYXNzZXJ0X2VxKHJldCwgMCk7Ci0K LQlnZW1fY2hlY2tfc3BpbihzcGlucyk7Ci0JZHJtX2ludGVsX2JvX3VubWFwKGdlbS5idWYuYm8p OworCWdlbV9zZXRfZG9tYWluKGdlbS5kcm1fZmQsIGdlbS5idWYuaGFuZGxlLAorCQkgICAgICAg STkxNV9HRU1fRE9NQUlOX0NQVSwgSTkxNV9HRU1fRE9NQUlOX0NQVSk7CisJcHRyID0gZ2VtX21t YXBfX2RldmljZV9jb2hlcmVudChnZW0uZHJtX2ZkLCBnZW0uYnVmLmhhbmRsZSwKKwkJCQkJMCwg Z2VtLmJ1Zi5zaXplLCBQUk9UX1JFQUQpOworCWdlbV9jaGVja19zcGluKHB0ciwgc3BpbnMpOwor CW11bm1hcChwdHIsIGdlbS5idWYuc2l6ZSk7CiAKIAljaGVja19mdWxsX2VuYWJsZSgmc3RhdCk7 CiB9Ci0tIAoyLjI2LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=