From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id F115789E33 for ; Mon, 10 Aug 2020 09:48:30 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Mon, 10 Aug 2020 11:47:02 +0200 Message-Id: <20200810094710.28930-23-zbigniew.kempczynski@intel.com> In-Reply-To: <20200810094710.28930-1-zbigniew.kempczynski@intel.com> References: <20200810094710.28930-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v27 22/30] tests/gem_stress: 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: VXNlIGludGVsX2JiIC8gaW50ZWxfYnVmIHRvIHJlbW92ZSBsaWJkcm0gZGVwZW5kZW5jeS4KClNp Z25lZC1vZmYtYnk6IFpiaWduaWV3IEtlbXBjennFhHNraSA8emJpZ25pZXcua2VtcGN6eW5za2lA aW50ZWwuY29tPgpDYzogRG9taW5payBHcnplZ29yemVrIDxkb21pbmlrLmdyemVnb3J6ZWtAaW50 ZWwuY29tPgpDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0tLQog dGVzdHMvaTkxNS9nZW1fc3RyZXNzLmMgfCAyNDQgKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEyOSBpbnNlcnRpb25zKCspLCAxMTUgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fc3RyZXNzLmMgYi90ZXN0cy9p OTE1L2dlbV9zdHJlc3MuYwppbmRleCA1MDI0NWI5My4uMGQ1MTM3MDkgMTAwNjQ0Ci0tLSBhL3Rl c3RzL2k5MTUvZ2VtX3N0cmVzcy5jCisrKyBiL3Rlc3RzL2k5MTUvZ2VtX3N0cmVzcy5jCkBAIC02 Miw4ICs2Miw2IEBACiAKICNpbmNsdWRlIDxkcm0uaD4KIAotI2luY2x1ZGUgImludGVsX2J1Zm1n ci5oIgotCiBJR1RfVEVTVF9ERVNDUklQVElPTigiR2VuZXJhbCBnZW0gY29oZXJlbmN5IHRlc3Qu Iik7CiAKICNkZWZpbmUgQ01EX1BPTFlfU1RJUFBMRV9PRkZTRVQgICAgICAgMHg3OTA2CkBAIC04 NCwxMyArODIsMTMgQEAgSUdUX1RFU1RfREVTQ1JJUFRJT04oIkdlbmVyYWwgZ2VtIGNvaGVyZW5j eSB0ZXN0LiIpOwogICogICBmaXJzdCBvbmUgKHRvIGNoZWNrIGNvbnNpc3RlbmN5IG9mIHRoZSBr ZXJuZWwgcmVjb3ZlcnkgcGF0aHMpCiAgKi8KIAotZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyOwot c3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaDsKK3N0cnVjdCBidWZfb3BzICpib3BzOwor c3RydWN0IGludGVsX2JiICppYmI7CiBpbnQgZHJtX2ZkOwogaW50IGRldmlkOwogaW50IG51bV9m ZW5jZXM7CiAKLWRybV9pbnRlbF9ibyAqYnVzeV9ibzsKK3N0cnVjdCBpbnRlbF9idWYgYnVzeV9i bzsKIAogc3RydWN0IG9wdGlvbl9zdHJ1Y3QgewogICAgIHVuc2lnbmVkIHNjcmF0Y2hfYnVmX3Np emU7CkBAIC0xMzYsNyArMTM0LDcgQEAgc3RydWN0IG9wdGlvbl9zdHJ1Y3Qgb3B0aW9ucyA9IHsK IAkuY2hlY2tfcmVuZGVyX2NweWZuID0gMCwKIH07CiAKLXN0YXRpYyBzdHJ1Y3QgaWd0X2J1ZiBi dWZmZXJzWzJdW01BWF9CVUZTXTsKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfYnVmIGJ1ZmZlcnNbMl1b TUFYX0JVRlNdOwogLyogdGlsZSBpIGlzIGF0IGxvZ2ljYWwgcG9zaXRpb24gdGlsZV9wZXJtdXRh dGlvbltpXSAqLwogc3RhdGljIHVuc2lnbmVkICp0aWxlX3Blcm11dGF0aW9uOwogc3RhdGljIHVu c2lnbmVkIG51bV9idWZmZXJzID0gMDsKQEAgLTE1MiwxNiArMTUwLDE2IEBAIHN0cnVjdCB7CiAJ dW5zaWduZWQgbWF4X2ZhaWxlZF9yZWFkczsKIH0gc3RhdHM7CiAKLXN0YXRpYyB2b2lkIHRpbGUy eHkoc3RydWN0IGlndF9idWYgKmJ1ZiwgdW5zaWduZWQgdGlsZSwgdW5zaWduZWQgKngsIHVuc2ln bmVkICp5KQorc3RhdGljIHZvaWQgdGlsZTJ4eShzdHJ1Y3QgaW50ZWxfYnVmICpidWYsIHVuc2ln bmVkIHRpbGUsIHVuc2lnbmVkICp4LCB1bnNpZ25lZCAqeSkKIHsKLQlpZ3RfYXNzZXJ0KHRpbGUg PCBidWYtPm51bV90aWxlcyk7CisJaWd0X2Fzc2VydCh0aWxlIDwgb3B0aW9ucy50aWxlc19wZXJf YnVmKTsKIAkqeCA9ICh0aWxlKm9wdGlvbnMudGlsZV9zaXplKSAlIChidWYtPnN1cmZhY2VbMF0u c3RyaWRlL3NpemVvZih1aW50MzJfdCkpOwogCSp5ID0gKCh0aWxlKm9wdGlvbnMudGlsZV9zaXpl KSAvIChidWYtPnN1cmZhY2VbMF0uc3RyaWRlL3NpemVvZih1aW50MzJfdCkpKSAqIG9wdGlvbnMu dGlsZV9zaXplOwogfQogCi1zdGF0aWMgdm9pZCBlbWl0X2JsdChkcm1faW50ZWxfYm8gKnNyY19i bywgdWludDMyX3Qgc3JjX3RpbGluZywgdW5zaWduZWQgc3JjX3BpdGNoLAorc3RhdGljIHZvaWQg ZW1pdF9ibHQoc3RydWN0IGludGVsX2J1ZiAqc3JjLCB1aW50MzJfdCBzcmNfdGlsaW5nLCB1bnNp Z25lZCBzcmNfcGl0Y2gsCiAJCSAgICAgdW5zaWduZWQgc3JjX3gsIHVuc2lnbmVkIHNyY195LCB1 bnNpZ25lZCB3LCB1bnNpZ25lZCBoLAotCQkgICAgIGRybV9pbnRlbF9ibyAqZHN0X2JvLCB1aW50 MzJfdCBkc3RfdGlsaW5nLCB1bnNpZ25lZCBkc3RfcGl0Y2gsCisJCSAgICAgc3RydWN0IGludGVs X2J1ZiAqZHN0LCB1aW50MzJfdCBkc3RfdGlsaW5nLCB1bnNpZ25lZCBkc3RfcGl0Y2gsCiAJCSAg ICAgdW5zaWduZWQgZHN0X3gsIHVuc2lnbmVkIGRzdF95KQogewogCXVpbnQzMl90IGNtZF9iaXRz ID0gMDsKQEAgLTE3NywyNCArMTc1LDI2IEBAIHN0YXRpYyB2b2lkIGVtaXRfYmx0KGRybV9pbnRl bF9ibyAqc3JjX2JvLCB1aW50MzJfdCBzcmNfdGlsaW5nLCB1bnNpZ25lZCBzcmNfcGl0CiAJfQog CiAJLyogY29weSBsb3dlciBoYWxmIHRvIHVwcGVyIGhhbGYgKi8KLQlCTElUX0NPUFlfQkFUQ0hf U1RBUlQoY21kX2JpdHMpOwotCU9VVF9CQVRDSCgoMyA8PCAyNCkgfCAvKiAzMiBiaXRzICovCi0J CSAgKDB4Y2MgPDwgMTYpIHwgLyogY29weSBST1AgKi8KLQkJICBkc3RfcGl0Y2gpOwotCU9VVF9C QVRDSChkc3RfeSA8PCAxNiB8IGRzdF94KTsKLQlPVVRfQkFUQ0goKGRzdF95K2gpIDw8IDE2IHwg KGRzdF94K3cpKTsKLQlPVVRfUkVMT0NfRkVOQ0VEKGRzdF9ibywgSTkxNV9HRU1fRE9NQUlOX1JF TkRFUiwgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiwgMCk7Ci0JT1VUX0JBVENIKHNyY195IDw8IDE2 IHwgc3JjX3gpOwotCU9VVF9CQVRDSChzcmNfcGl0Y2gpOwotCU9VVF9SRUxPQ19GRU5DRUQoc3Jj X2JvLCBJOTE1X0dFTV9ET01BSU5fUkVOREVSLCAwLCAwKTsKLQlBRFZBTkNFX0JBVENIKCk7Ci0K LQlpZiAoYmF0Y2gtPmdlbiA+PSA2KSB7Ci0JCUJFR0lOX0JBVENIKDMsIDApOwotCQlPVVRfQkFU Q0goWFlfU0VUVVBfQ0xJUF9CTFRfQ01EKTsKLQkJT1VUX0JBVENIKDApOwotCQlPVVRfQkFUQ0go MCk7Ci0JCUFEVkFOQ0VfQkFUQ0goKTsKKwlpbnRlbF9iYl9ibGl0X3N0YXJ0KGliYiwgY21kX2Jp dHMpOworCWludGVsX2JiX291dChpYmIsICgzIDw8IDI0KSB8IC8qIDMyIGJpdHMgKi8KKwkJICAg ICAoMHhjYyA8PCAxNikgfCAvKiBjb3B5IFJPUCAqLworCQkgICAgIGRzdF9waXRjaCk7CisJaW50 ZWxfYmJfb3V0KGliYiwgZHN0X3kgPDwgMTYgfCBkc3RfeCk7CisJaW50ZWxfYmJfb3V0KGliYiwg KGRzdF95K2gpIDw8IDE2IHwgKGRzdF94K3cpKTsKKwlpbnRlbF9iYl9lbWl0X3JlbG9jX2ZlbmNl ZChpYmIsIGRzdC0+aGFuZGxlLAorCQkJCSAgIEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIsCisJCQkJ ICAgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiwKKwkJCQkgICAwLCBkc3QtPmFkZHIub2Zmc2V0KTsK KwlpbnRlbF9iYl9vdXQoaWJiLCBzcmNfeSA8PCAxNiB8IHNyY194KTsKKwlpbnRlbF9iYl9vdXQo aWJiLCBzcmNfcGl0Y2gpOworCWludGVsX2JiX2VtaXRfcmVsb2NfZmVuY2VkKGliYiwgc3JjLT5o YW5kbGUsCisJCQkJICAgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiwgMCwKKwkJCQkgICAwLCBzcmMt PmFkZHIub2Zmc2V0KTsKKworCWlmIChpYmItPmdlbiA+PSA2KSB7CisJCWludGVsX2JiX291dChp YmIsIFhZX1NFVFVQX0NMSVBfQkxUX0NNRCk7CisJCWludGVsX2JiX291dChpYmIsIDApOworCQlp bnRlbF9iYl9vdXQoaWJiLCAwKTsKIAl9CiB9CiAKQEAgLTIwNywxOSArMjA3LDI1IEBAIHN0YXRp YyB2b2lkIGtlZXBfZ3B1X2J1c3kodm9pZCkKIAl0bXAgPSAxIDw8IGdwdV9idXN5X2xvYWQ7CiAJ aWd0X2Fzc2VydF9sdGUodG1wLCAxMDI0KTsKIAotCWVtaXRfYmx0KGJ1c3lfYm8sIDAsIDQwOTYs IDAsIDAsIHRtcCwgMTI4LAotCQkgYnVzeV9ibywgMCwgNDA5NiwgMCwgMTI4KTsKKwllbWl0X2Js dCgmYnVzeV9ibywgMCwgNDA5NiwgMCwgMCwgdG1wLCAxMjgsCisJCSAmYnVzeV9ibywgMCwgNDA5 NiwgMCwgMTI4KTsKIH0KIAotc3RhdGljIHZvaWQgc2V0X3RvX2NwdV9kb21haW4oc3RydWN0IGln dF9idWYgKmJ1ZiwgaW50IHdyaXRpbmcpCitzdGF0aWMgdm9pZCBzZXRfdG9fY3B1X2RvbWFpbihz dHJ1Y3QgaW50ZWxfYnVmICpidWYsIGludCB3cml0aW5nKQogewotCWdlbV9zZXRfZG9tYWluKGRy bV9mZCwgYnVmLT5iby0+aGFuZGxlLCBJOTE1X0dFTV9ET01BSU5fQ1BVLAorCWdlbV9zZXRfZG9t YWluKGRybV9mZCwgYnVmLT5oYW5kbGUsIEk5MTVfR0VNX0RPTUFJTl9DUFUsCiAJCSAgICAgICB3 cml0aW5nID8gSTkxNV9HRU1fRE9NQUlOX0NQVSA6IDApOwogfQogCitzdGF0aWMgdm9pZCBzZXRf dG9fZ3R0X2RvbWFpbihzdHJ1Y3QgaW50ZWxfYnVmICpidWYsIGludCB3cml0aW5nKQoreworCWdl bV9zZXRfZG9tYWluKGRybV9mZCwgYnVmLT5oYW5kbGUsIEk5MTVfR0VNX0RPTUFJTl9HVFQsCisJ CSAgICAgICB3cml0aW5nID8gSTkxNV9HRU1fRE9NQUlOX0dUVCA6IDApOworfQorCiBzdGF0aWMg dW5zaWduZWQgaW50IGNvcHlmdW5jX3NlcSA9IDA7Ci1zdGF0aWMgdm9pZCAoKmNvcHlmdW5jKShz dHJ1Y3QgaWd0X2J1ZiAqc3JjLCB1bnNpZ25lZCBzcmNfeCwgdW5zaWduZWQgc3JjX3ksCi0JCQlz dHJ1Y3QgaWd0X2J1ZiAqZHN0LCB1bnNpZ25lZCBkc3RfeCwgdW5zaWduZWQgZHN0X3ksCitzdGF0 aWMgdm9pZCAoKmNvcHlmdW5jKShzdHJ1Y3QgaW50ZWxfYnVmICpzcmMsIHVuc2lnbmVkIHNyY194 LCB1bnNpZ25lZCBzcmNfeSwKKwkJCXN0cnVjdCBpbnRlbF9idWYgKmRzdCwgdW5zaWduZWQgZHN0 X3gsIHVuc2lnbmVkIGRzdF95LAogCQkJdW5zaWduZWQgbG9naWNhbF90aWxlX25vKTsKIAogLyog c3RyaWRlLCB4LCB5IGluIHVuaXRzIG9mIHVpbnQzMl90ISAqLwpAQCAtMjU0LDUxICsyNjAsNTMg QEAgc3RhdGljIHZvaWQgY3B1Y3B5MmQodWludDMyX3QgKnNyYywgdW5zaWduZWQgc3JjX3N0cmlk ZSwgdW5zaWduZWQgc3JjX3gsIHVuc2lnbmUKIAkJc3RhdHMubnVtX2ZhaWxlZCsrOwogfQogCi1z dGF0aWMgdm9pZCBjcHVfY29weWZ1bmMoc3RydWN0IGlndF9idWYgKnNyYywgdW5zaWduZWQgc3Jj X3gsIHVuc2lnbmVkIHNyY195LAotCQkJIHN0cnVjdCBpZ3RfYnVmICpkc3QsIHVuc2lnbmVkIGRz dF94LCB1bnNpZ25lZCBkc3RfeSwKK3N0YXRpYyB2b2lkIGNwdV9jb3B5ZnVuYyhzdHJ1Y3QgaW50 ZWxfYnVmICpzcmMsIHVuc2lnbmVkIHNyY194LCB1bnNpZ25lZCBzcmNfeSwKKwkJCSBzdHJ1Y3Qg aW50ZWxfYnVmICpkc3QsIHVuc2lnbmVkIGRzdF94LCB1bnNpZ25lZCBkc3RfeSwKIAkJCSB1bnNp Z25lZCBsb2dpY2FsX3RpbGVfbm8pCiB7Ci0JaWd0X2Fzc2VydChiYXRjaC0+cHRyID09IGJhdGNo LT5idWZmZXIpOworCWlndF9hc3NlcnQoc3JjLT5wdHIpOworCWlndF9hc3NlcnQoZHN0LT5wdHIp OwogCiAJaWYgKG9wdGlvbnMuZHVjdHRhcGUpCi0JCWRybV9pbnRlbF9ib193YWl0X3JlbmRlcmlu Zyhkc3QtPmJvKTsKKwkJc2V0X3RvX2d0dF9kb21haW4oZHN0LCAxKTsKIAogCWlmIChvcHRpb25z LnVzZV9jcHVfbWFwcykgewogCQlzZXRfdG9fY3B1X2RvbWFpbihzcmMsIDApOwogCQlzZXRfdG9f Y3B1X2RvbWFpbihkc3QsIDEpOwogCX0KIAotCWNwdWNweTJkKHNyYy0+ZGF0YSwgc3JjLT5zdXJm YWNlWzBdLnN0cmlkZS9zaXplb2YodWludDMyX3QpLCBzcmNfeCwKLQkJIHNyY195LAotCQkgZHN0 LT5kYXRhLCBkc3QtPnN1cmZhY2VbMF0uc3RyaWRlL3NpemVvZih1aW50MzJfdCksIGRzdF94LAot CQkgZHN0X3ksCisJY3B1Y3B5MmQoc3JjLT5wdHIsIHNyYy0+c3VyZmFjZVswXS5zdHJpZGUvc2l6 ZW9mKHVpbnQzMl90KSwgc3JjX3gsIHNyY195LAorCQkgZHN0LT5wdHIsIGRzdC0+c3VyZmFjZVsw XS5zdHJpZGUvc2l6ZW9mKHVpbnQzMl90KSwgZHN0X3gsIGRzdF95LAogCQkgbG9naWNhbF90aWxl X25vKTsKIH0KIAotc3RhdGljIHZvaWQgcHJ3X2NvcHlmdW5jKHN0cnVjdCBpZ3RfYnVmICpzcmMs IHVuc2lnbmVkIHNyY194LCB1bnNpZ25lZCBzcmNfeSwKLQkJCSBzdHJ1Y3QgaWd0X2J1ZiAqZHN0 LCB1bnNpZ25lZCBkc3RfeCwgdW5zaWduZWQgZHN0X3ksCitzdGF0aWMgdm9pZCBwcndfY29weWZ1 bmMoc3RydWN0IGludGVsX2J1ZiAqc3JjLCB1bnNpZ25lZCBzcmNfeCwgdW5zaWduZWQgc3JjX3ks CisJCQkgc3RydWN0IGludGVsX2J1ZiAqZHN0LCB1bnNpZ25lZCBkc3RfeCwgdW5zaWduZWQgZHN0 X3ksCiAJCQkgdW5zaWduZWQgbG9naWNhbF90aWxlX25vKQogewogCXVpbnQzMl90IHRtcF90aWxl W29wdGlvbnMudGlsZV9zaXplKm9wdGlvbnMudGlsZV9zaXplXTsKIAlpbnQgaTsKIAotCWlndF9h c3NlcnQoYmF0Y2gtPnB0ciA9PSBiYXRjaC0+YnVmZmVyKTsKKwlpZ3RfYXNzZXJ0KHNyYy0+cHRy KTsKKwlpZ3RfYXNzZXJ0KGRzdC0+cHRyKTsKKworCWlndF9pbmZvKCJwcndcbiIpOwogCiAJaWYg KG9wdGlvbnMuZHVjdHRhcGUpCi0JCWRybV9pbnRlbF9ib193YWl0X3JlbmRlcmluZyhkc3QtPmJv KTsKKwkJc2V0X3RvX2d0dF9kb21haW4oZHN0LCAxKTsKIAogCWlmIChzcmMtPnRpbGluZyA9PSBJ OTE1X1RJTElOR19OT05FKSB7CiAJCWZvciAoaSA9IDA7IGkgPCBvcHRpb25zLnRpbGVfc2l6ZTsg aSsrKSB7CiAJCQl1bnNpZ25lZCBvZnMgPSBzcmNfeCpzaXplb2YodWludDMyX3QpICsgc3JjLT5z dXJmYWNlWzBdLnN0cmlkZSooc3JjX3kgKyBpKTsKLQkJCWRybV9pbnRlbF9ib19nZXRfc3ViZGF0 YShzcmMtPmJvLCBvZnMsCi0JCQkJCQkgb3B0aW9ucy50aWxlX3NpemUqc2l6ZW9mKHVpbnQzMl90 KSwKLQkJCQkJCSB0bXBfdGlsZSArIG9wdGlvbnMudGlsZV9zaXplKmkpOworCQkJZ2VtX3JlYWQo ZHJtX2ZkLCBzcmMtPmhhbmRsZSwgb2ZzLAorCQkJCSB0bXBfdGlsZSArIG9wdGlvbnMudGlsZV9z aXplKmksCisJCQkJIG9wdGlvbnMudGlsZV9zaXplKnNpemVvZih1aW50MzJfdCkpOwogCQl9CiAJ fSBlbHNlIHsKIAkJaWYgKG9wdGlvbnMudXNlX2NwdV9tYXBzKQogCQkJc2V0X3RvX2NwdV9kb21h aW4oc3JjLCAwKTsKIAotCQljcHVjcHkyZChzcmMtPmRhdGEsIHNyYy0+c3VyZmFjZVswXS5zdHJp ZGUvc2l6ZW9mKHVpbnQzMl90KSwKKwkJY3B1Y3B5MmQoc3JjLT5wdHIsIHNyYy0+c3VyZmFjZVsw XS5zdHJpZGUvc2l6ZW9mKHVpbnQzMl90KSwKIAkJCSBzcmNfeCwgc3JjX3ksCiAJCQkgdG1wX3Rp bGUsIG9wdGlvbnMudGlsZV9zaXplLCAwLCAwLCBsb2dpY2FsX3RpbGVfbm8pOwogCX0KQEAgLTMw NiwyMyArMzE0LDIzIEBAIHN0YXRpYyB2b2lkIHByd19jb3B5ZnVuYyhzdHJ1Y3QgaWd0X2J1ZiAq c3JjLCB1bnNpZ25lZCBzcmNfeCwgdW5zaWduZWQgc3JjX3ksCiAJaWYgKGRzdC0+dGlsaW5nID09 IEk5MTVfVElMSU5HX05PTkUpIHsKIAkJZm9yIChpID0gMDsgaSA8IG9wdGlvbnMudGlsZV9zaXpl OyBpKyspIHsKIAkJCXVuc2lnbmVkIG9mcyA9IGRzdF94KnNpemVvZih1aW50MzJfdCkgKyBkc3Qt PnN1cmZhY2VbMF0uc3RyaWRlKihkc3RfeSArIGkpOwotCQkJZHJtX2ludGVsX2JvX3N1YmRhdGEo ZHN0LT5ibywgb2ZzLAotCQkJCQkgICAgIG9wdGlvbnMudGlsZV9zaXplKnNpemVvZih1aW50MzJf dCksCi0JCQkJCSAgICAgdG1wX3RpbGUgKyBvcHRpb25zLnRpbGVfc2l6ZSppKTsKKwkJCWdlbV93 cml0ZShkcm1fZmQsIGRzdC0+aGFuZGxlLCBvZnMsCisJCQkJICB0bXBfdGlsZSArIG9wdGlvbnMu dGlsZV9zaXplKmksCisJCQkJICBvcHRpb25zLnRpbGVfc2l6ZSpzaXplb2YodWludDMyX3QpKTsK IAkJfQogCX0gZWxzZSB7CiAJCWlmIChvcHRpb25zLnVzZV9jcHVfbWFwcykKIAkJCXNldF90b19j cHVfZG9tYWluKGRzdCwgMSk7CiAKIAkJY3B1Y3B5MmQodG1wX3RpbGUsIG9wdGlvbnMudGlsZV9z aXplLCAwLCAwLAotCQkJIGRzdC0+ZGF0YSwgZHN0LT5zdXJmYWNlWzBdLnN0cmlkZS9zaXplb2Yo dWludDMyX3QpLAorCQkJIGRzdC0+cHRyLCBkc3QtPnN1cmZhY2VbMF0uc3RyaWRlL3NpemVvZih1 aW50MzJfdCksCiAJCQkgZHN0X3gsIGRzdF95LAogCQkJIGxvZ2ljYWxfdGlsZV9ubyk7CiAJfQog fQogCi1zdGF0aWMgdm9pZCBibGl0dGVyX2NvcHlmdW5jKHN0cnVjdCBpZ3RfYnVmICpzcmMsIHVu c2lnbmVkIHNyY194LCB1bnNpZ25lZCBzcmNfeSwKLQkJCSAgICAgc3RydWN0IGlndF9idWYgKmRz dCwgdW5zaWduZWQgZHN0X3gsIHVuc2lnbmVkIGRzdF95LAorc3RhdGljIHZvaWQgYmxpdHRlcl9j b3B5ZnVuYyhzdHJ1Y3QgaW50ZWxfYnVmICpzcmMsIHVuc2lnbmVkIHNyY194LCB1bnNpZ25lZCBz cmNfeSwKKwkJCSAgICAgc3RydWN0IGludGVsX2J1ZiAqZHN0LCB1bnNpZ25lZCBkc3RfeCwgdW5z aWduZWQgZHN0X3ksCiAJCQkgICAgIHVuc2lnbmVkIGxvZ2ljYWxfdGlsZV9ubykKIHsKIAlzdGF0 aWMgdW5zaWduZWQga2VlcF9ncHVfYnVzeV9jb3VudGVyID0gMDsKQEAgLTMzMSw5ICszMzksOSBA QCBzdGF0aWMgdm9pZCBibGl0dGVyX2NvcHlmdW5jKHN0cnVjdCBpZ3RfYnVmICpzcmMsIHVuc2ln bmVkIHNyY194LCB1bnNpZ25lZCBzcmNfeQogCWlmIChrZWVwX2dwdV9idXN5X2NvdW50ZXIgJiAx ICYmICFmZW5jZV9zdG9ybSkKIAkJa2VlcF9ncHVfYnVzeSgpOwogCi0JZW1pdF9ibHQoc3JjLT5i bywgc3JjLT50aWxpbmcsIHNyYy0+c3VyZmFjZVswXS5zdHJpZGUsIHNyY194LCBzcmNfeSwKKwll bWl0X2JsdChzcmMsIHNyYy0+dGlsaW5nLCBzcmMtPnN1cmZhY2VbMF0uc3RyaWRlLCBzcmNfeCwg c3JjX3ksCiAJCSBvcHRpb25zLnRpbGVfc2l6ZSwgb3B0aW9ucy50aWxlX3NpemUsCi0JCSBkc3Qt PmJvLCBkc3QtPnRpbGluZywgZHN0LT5zdXJmYWNlWzBdLnN0cmlkZSwgZHN0X3gsIGRzdF95KTsK KwkJIGRzdCwgZHN0LT50aWxpbmcsIGRzdC0+c3VyZmFjZVswXS5zdHJpZGUsIGRzdF94LCBkc3Rf eSk7CiAKIAlpZiAoIShrZWVwX2dwdV9idXN5X2NvdW50ZXIgJiAxKSAmJiAhZmVuY2Vfc3Rvcm0p CiAJCWtlZXBfZ3B1X2J1c3koKTsKQEAgLTM0NywxMiArMzU1LDEyIEBAIHN0YXRpYyB2b2lkIGJs aXR0ZXJfY29weWZ1bmMoc3RydWN0IGlndF9idWYgKnNyYywgdW5zaWduZWQgc3JjX3gsIHVuc2ln bmVkIHNyY195CiAKIAlpZiAoZmVuY2Vfc3Rvcm0gPD0gMSkgewogCQlmZW5jZV9zdG9ybSA9IDA7 Ci0JCWludGVsX2JhdGNoYnVmZmVyX2ZsdXNoKGJhdGNoKTsKKwkJaW50ZWxfYmJfZmx1c2hfYmxp dChpYmIpOwogCX0KIH0KIAotc3RhdGljIHZvaWQgcmVuZGVyX2NvcHlmdW5jKHN0cnVjdCBpZ3Rf YnVmICpzcmMsIHVuc2lnbmVkIHNyY194LCB1bnNpZ25lZCBzcmNfeSwKLQkJCSAgICBzdHJ1Y3Qg aWd0X2J1ZiAqZHN0LCB1bnNpZ25lZCBkc3RfeCwgdW5zaWduZWQgZHN0X3ksCitzdGF0aWMgdm9p ZCByZW5kZXJfY29weWZ1bmMoc3RydWN0IGludGVsX2J1ZiAqc3JjLCB1bnNpZ25lZCBzcmNfeCwg dW5zaWduZWQgc3JjX3ksCisJCQkgICAgc3RydWN0IGludGVsX2J1ZiAqZHN0LCB1bnNpZ25lZCBk c3RfeCwgdW5zaWduZWQgZHN0X3ksCiAJCQkgICAgdW5zaWduZWQgbG9naWNhbF90aWxlX25vKQog ewogCXN0YXRpYyB1bnNpZ25lZCBrZWVwX2dwdV9idXN5X2NvdW50ZXIgPSAwOwpAQCAtMzY3LDgg KzM3NSw5IEBAIHN0YXRpYyB2b2lkIHJlbmRlcl9jb3B5ZnVuYyhzdHJ1Y3QgaWd0X2J1ZiAqc3Jj LCB1bnNpZ25lZCBzcmNfeCwgdW5zaWduZWQgc3JjX3ksCiAJCSAqIEZsdXNoIG91dHN0YW5kaW5n IGJsdHMgc28gdGhhdCB0aGV5IGRvbid0IGVuZCB1cCBvbgogCQkgKiB0aGUgcmVuZGVyIHJpbmcg d2hlbiB0aGF0J3Mgbm90IGFsbG93ZWQgKGdlbjYrKS4KIAkJICovCi0JCWludGVsX2JhdGNoYnVm ZmVyX2ZsdXNoKGJhdGNoKTsKLQkJcmVuZGVyY29weShiYXRjaCwgTlVMTCwgc3JjLCBzcmNfeCwg c3JjX3ksCisJCWludGVsX2JiX2ZsdXNoX2JsaXQoaWJiKTsKKworCQlyZW5kZXJjb3B5KGliYiwg MCwgc3JjLCBzcmNfeCwgc3JjX3ksCiAJCSAgICAgb3B0aW9ucy50aWxlX3NpemUsIG9wdGlvbnMu dGlsZV9zaXplLAogCQkgICAgIGRzdCwgZHN0X3gsIGRzdF95KTsKIAl9IGVsc2UKQEAgLTM3OSw3 ICszODgsNyBAQCBzdGF0aWMgdm9pZCByZW5kZXJfY29weWZ1bmMoc3RydWN0IGlndF9idWYgKnNy YywgdW5zaWduZWQgc3JjX3gsIHVuc2lnbmVkIHNyY195LAogCQlrZWVwX2dwdV9idXN5KCk7CiAK IAlrZWVwX2dwdV9idXN5X2NvdW50ZXIrKzsKLQlpbnRlbF9iYXRjaGJ1ZmZlcl9mbHVzaChiYXRj aCk7CisJaW50ZWxfYmJfZmx1c2hfYmxpdChpYmIpOwogfQogCiBzdGF0aWMgdm9pZCBuZXh0X2Nv cHlmdW5jKGludCB0aWxlKQpAQCAtNDQ0LDcgKzQ1Myw3IEBAIHN0YXRpYyB2b2lkIGZhbl9vdXQo dm9pZCkKIAkJCXNldF90b19jcHVfZG9tYWluKCZidWZmZXJzW2N1cnJlbnRfc2V0XVtidWZfaWR4 XSwgMSk7CiAKIAkJY3B1Y3B5MmQodG1wX3RpbGUsIG9wdGlvbnMudGlsZV9zaXplLCAwLCAwLAot CQkJIGJ1ZmZlcnNbY3VycmVudF9zZXRdW2J1Zl9pZHhdLmRhdGEsCisJCQkgYnVmZmVyc1tjdXJy ZW50X3NldF1bYnVmX2lkeF0ucHRyLAogCQkJIGJ1ZmZlcnNbY3VycmVudF9zZXRdW2J1Zl9pZHhd LnN1cmZhY2VbMF0uc3RyaWRlIC8gc2l6ZW9mKHVpbnQzMl90KSwKIAkJCSB4LCB5LCBpKTsKIAl9 CkBAIC00NjgsNyArNDc3LDcgQEAgc3RhdGljIHZvaWQgZmFuX2luX2FuZF9jaGVjayh2b2lkKQog CQlpZiAob3B0aW9ucy51c2VfY3B1X21hcHMpCiAJCQlzZXRfdG9fY3B1X2RvbWFpbigmYnVmZmVy c1tjdXJyZW50X3NldF1bYnVmX2lkeF0sIDApOwogCi0JCWNwdWNweTJkKGJ1ZmZlcnNbY3VycmVu dF9zZXRdW2J1Zl9pZHhdLmRhdGEsCisJCWNwdWNweTJkKGJ1ZmZlcnNbY3VycmVudF9zZXRdW2J1 Zl9pZHhdLnB0ciwKIAkJCSBidWZmZXJzW2N1cnJlbnRfc2V0XVtidWZfaWR4XS5zdXJmYWNlWzBd LnN0cmlkZSAvIHNpemVvZih1aW50MzJfdCksCiAJCQkgeCwgeSwKIAkJCSB0bXBfdGlsZSwgb3B0 aW9ucy50aWxlX3NpemUsIDAsIDAsCkBAIC00NzYsNjEgKzQ4NSw1OSBAQCBzdGF0aWMgdm9pZCBm YW5faW5fYW5kX2NoZWNrKHZvaWQpCiAJfQogfQogCi1zdGF0aWMgdm9pZCBzYW5pdGl6ZV9zdHJp ZGUoc3RydWN0IGlndF9idWYgKmJ1ZikKK3N0YXRpYyB2b2lkIHNhbml0aXplX3N0cmlkZShzdHJ1 Y3QgaW50ZWxfYnVmICpidWYpCiB7CiAKLQlpZiAoaWd0X2J1Zl9oZWlnaHQoYnVmKSA+IG9wdGlv bnMubWF4X2RpbWVuc2lvbikKKwlpZiAoaW50ZWxfYnVmX2hlaWdodChidWYpID4gb3B0aW9ucy5t YXhfZGltZW5zaW9uKQogCQlidWYtPnN1cmZhY2VbMF0uc3RyaWRlID0gYnVmLT5zdXJmYWNlWzBd LnNpemUgLyBvcHRpb25zLm1heF9kaW1lbnNpb247CiAKLQlpZiAoaWd0X2J1Zl9oZWlnaHQoYnVm KSA8IG9wdGlvbnMudGlsZV9zaXplKQorCWlmIChpbnRlbF9idWZfaGVpZ2h0KGJ1ZikgPCBvcHRp b25zLnRpbGVfc2l6ZSkKIAkJYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSA9IGJ1Zi0+c3VyZmFjZVsw XS5zaXplIC8gb3B0aW9ucy50aWxlX3NpemU7CiAKLQlpZiAoaWd0X2J1Zl93aWR0aChidWYpIDwg b3B0aW9ucy50aWxlX3NpemUpCisJaWYgKGludGVsX2J1Zl93aWR0aChidWYpIDwgb3B0aW9ucy50 aWxlX3NpemUpCiAJCWJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUgPSBvcHRpb25zLnRpbGVfc2l6ZSAq IHNpemVvZih1aW50MzJfdCk7CiAKIAlpZ3RfYXNzZXJ0KGJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUg PD0gODE5Mik7Ci0JaWd0X2Fzc2VydChpZ3RfYnVmX3dpZHRoKGJ1ZikgPD0gb3B0aW9ucy5tYXhf ZGltZW5zaW9uKTsKLQlpZ3RfYXNzZXJ0KGlndF9idWZfaGVpZ2h0KGJ1ZikgPD0gb3B0aW9ucy5t YXhfZGltZW5zaW9uKTsKKwlpZ3RfYXNzZXJ0KGludGVsX2J1Zl93aWR0aChidWYpIDw9IG9wdGlv bnMubWF4X2RpbWVuc2lvbik7CisJaWd0X2Fzc2VydChpbnRlbF9idWZfaGVpZ2h0KGJ1ZikgPD0g b3B0aW9ucy5tYXhfZGltZW5zaW9uKTsKIAotCWlndF9hc3NlcnQoaWd0X2J1Zl93aWR0aChidWYp ID49IG9wdGlvbnMudGlsZV9zaXplKTsKLQlpZ3RfYXNzZXJ0KGlndF9idWZfaGVpZ2h0KGJ1Zikg Pj0gb3B0aW9ucy50aWxlX3NpemUpOworCWlndF9hc3NlcnQoaW50ZWxfYnVmX3dpZHRoKGJ1Zikg Pj0gb3B0aW9ucy50aWxlX3NpemUpOworCWlndF9hc3NlcnQoaW50ZWxfYnVmX2hlaWdodChidWYp ID49IG9wdGlvbnMudGlsZV9zaXplKTsKIAogfQogCi1zdGF0aWMgdm9pZCBpbml0X2J1ZmZlcihz dHJ1Y3QgaWd0X2J1ZiAqYnVmLCB1bnNpZ25lZCBzaXplKQorc3RhdGljIHZvaWQgaW5pdF9idWZm ZXIoc3RydWN0IGludGVsX2J1ZiAqYnVmLCB1bnNpZ25lZCBzaXplKQogewotCW1lbXNldChidWYs IDAsIHNpemVvZigqYnVmKSk7CisJdWludDMyX3Qgc3RyaWRlLCB3aWR0aCwgaGVpZ2h0LCBicHA7 CisKKwlzdHJpZGUgPSA0MDk2OworCWJwcCA9IDMyOworCXdpZHRoID0gc3RyaWRlIC8gKGJwcCAv IDgpOworCWhlaWdodCA9IHNpemUgLyBzdHJpZGU7CiAKLQlidWYtPmJvID0gZHJtX2ludGVsX2Jv X2FsbG9jKGJ1Zm1nciwgInRpbGVkIGJvIiwgc2l6ZSwgNDA5Nik7Ci0JYnVmLT5zdXJmYWNlWzBd LnNpemUgPSBzaXplOwotCWlndF9hc3NlcnQoYnVmLT5ibyk7Ci0JYnVmLT50aWxpbmcgPSBJOTE1 X1RJTElOR19OT05FOwotCWJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUgPSA0MDk2OwotCWJ1Zi0+YnBw ID0gMzI7CisJaW50ZWxfYnVmX2luaXQoYm9wcywgYnVmLCB3aWR0aCwgaGVpZ2h0LCBicHAsIDAs CisJCSAgICAgICBJOTE1X1RJTElOR19OT05FLCBJOTE1X0NPTVBSRVNTSU9OX05PTkUpOwogCiAJ c2FuaXRpemVfc3RyaWRlKGJ1Zik7CiAKIAlpZiAob3B0aW9ucy5ub19odykKLQkJYnVmLT5kYXRh ID0gbWFsbG9jKHNpemUpOworCQlidWYtPnB0ciA9IG1hbGxvYyhzaXplKTsKIAllbHNlIHsKIAkJ aWYgKG9wdGlvbnMudXNlX2NwdV9tYXBzKQotCQkJZHJtX2ludGVsX2JvX21hcChidWYtPmJvLCAx KTsKKwkJCWludGVsX2J1Zl9jcHVfbWFwKGJ1ZiwgdHJ1ZSk7CiAJCWVsc2UKLQkJCWRybV9pbnRl bF9nZW1fYm9fbWFwX2d0dChidWYtPmJvKTsKLQkJYnVmLT5kYXRhID0gYnVmLT5iby0+dmlydHVh bDsKKwkJCWludGVsX2J1Zl9kZXZpY2VfbWFwKGJ1ZiwgdHJ1ZSk7CiAJfQotCi0JYnVmLT5udW1f dGlsZXMgPSBvcHRpb25zLnRpbGVzX3Blcl9idWY7CiB9CiAKIHN0YXRpYyB2b2lkIGV4Y2hhbmdl X2J1Zih2b2lkICphcnJheSwgdW5zaWduZWQgaSwgdW5zaWduZWQgaikKIHsKLQlzdHJ1Y3QgaWd0 X2J1ZiAqYnVmX2FyciwgdG1wOworCXN0cnVjdCBpbnRlbF9idWYgKmJ1Zl9hcnIsIHRtcDsKIAli dWZfYXJyID0gYXJyYXk7CiAKLQltZW1jcHkoJnRtcCwgJmJ1Zl9hcnJbaV0sIHNpemVvZihzdHJ1 Y3QgaWd0X2J1ZikpOwotCW1lbWNweSgmYnVmX2FycltpXSwgJmJ1Zl9hcnJbal0sIHNpemVvZihz dHJ1Y3QgaWd0X2J1ZikpOwotCW1lbWNweSgmYnVmX2FycltqXSwgJnRtcCwgc2l6ZW9mKHN0cnVj dCBpZ3RfYnVmKSk7CisJbWVtY3B5KCZ0bXAsICZidWZfYXJyW2ldLCBzaXplb2Yoc3RydWN0IGlu dGVsX2J1ZikpOworCW1lbWNweSgmYnVmX2FycltpXSwgJmJ1Zl9hcnJbal0sIHNpemVvZihzdHJ1 Y3QgaW50ZWxfYnVmKSk7CisJbWVtY3B5KCZidWZfYXJyW2pdLCAmdG1wLCBzaXplb2Yoc3RydWN0 IGludGVsX2J1ZikpOwogfQogCiAKQEAgLTU3Nyw3ICs1ODQsNyBAQCBzdGF0aWMgdm9pZCBpbml0 X3NldCh1bnNpZ25lZCBzZXQpCiAKIAkJc2FuaXRpemVfc3RyaWRlKCZidWZmZXJzW3NldF1baV0p OwogCi0JCWdlbV9zZXRfdGlsaW5nKGRybV9mZCwgYnVmZmVyc1tzZXRdW2ldLmJvLT5oYW5kbGUs CisJCWdlbV9zZXRfdGlsaW5nKGRybV9mZCwgYnVmZmVyc1tzZXRdW2ldLmhhbmRsZSwKIAkJCSAg ICAgICBidWZmZXJzW3NldF1baV0udGlsaW5nLAogCQkJICAgICAgIGJ1ZmZlcnNbc2V0XVtpXS5z dXJmYWNlWzBdLnN0cmlkZSk7CiAKQEAgLTU5OCw4ICs2MDUsOSBAQCBzdGF0aWMgdm9pZCBjb3B5 X3RpbGVzKHVuc2lnbmVkICpwZXJtdXRhdGlvbikKIHsKIAl1bnNpZ25lZCBzcmNfdGlsZSwgc3Jj X2J1Zl9pZHgsIHNyY194LCBzcmNfeTsKIAl1bnNpZ25lZCBkc3RfdGlsZSwgZHN0X2J1Zl9pZHgs IGRzdF94LCBkc3RfeTsKLQlzdHJ1Y3QgaWd0X2J1ZiAqc3JjX2J1ZiwgKmRzdF9idWY7CisJc3Ry dWN0IGludGVsX2J1ZiAqc3JjX2J1ZiwgKmRzdF9idWY7CiAJaW50IGksIGlkeDsKKwogCWZvciAo aSA9IDA7IGkgPCBudW1fdG90YWxfdGlsZXM7IGkrKykgewogCQkvKiB0aWxlX3Blcm11dGF0aW9u IGlzIGluZGVwZW5kZW50IG9mIGN1cnJlbnRfcGVybXV0YXRpb24sIHNvCiAJCSAqIGFidXNlIGl0 IHRvIHJhbmRvbWl6ZSB0aGUgb3JkZXIgb2YgdGhlIHNyYyBib3MgKi8KQEAgLTYyMCwxMCArNjI4 LDEwIEBAIHN0YXRpYyB2b2lkIGNvcHlfdGlsZXModW5zaWduZWQgKnBlcm11dGF0aW9uKQogCQkJ aWd0X2luZm8oImNvcHlpbmcgdGlsZSAlaSBmcm9tICVpICglaSwgJWkpIHRvICVpICglaSwgJWkp IiwgaSwgdGlsZV9wZXJtdXRhdGlvbltpXSwgc3JjX2J1Zl9pZHgsIHNyY190aWxlLCBwZXJtdXRh dGlvbltpZHhdLCBkc3RfYnVmX2lkeCwgZHN0X3RpbGUpOwogCiAJCWlmIChvcHRpb25zLm5vX2h3 KSB7Ci0JCQljcHVjcHkyZChzcmNfYnVmLT5kYXRhLAorCQkJY3B1Y3B5MmQoc3JjX2J1Zi0+cHRy LAogCQkJCSBzcmNfYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSAvIHNpemVvZih1aW50MzJfdCksCiAJ CQkJIHNyY194LCBzcmNfeSwKLQkJCQkgZHN0X2J1Zi0+ZGF0YSwKKwkJCQkgZHN0X2J1Zi0+cHRy LAogCQkJCSBkc3RfYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSAvIHNpemVvZih1aW50MzJfdCksCiAJ CQkJIGRzdF94LCBkc3RfeSwKIAkJCQkgaSk7CkBAIC02MzUsNyArNjQzLDcgQEAgc3RhdGljIHZv aWQgY29weV90aWxlcyh1bnNpZ25lZCAqcGVybXV0YXRpb24pCiAJCX0KIAl9CiAKLQlpbnRlbF9i YXRjaGJ1ZmZlcl9mbHVzaChiYXRjaCk7CisJaW50ZWxfYmJfZmx1c2hfYmxpdChpYmIpOwogfQog CiBzdGF0aWMgdm9pZCBzYW5pdGl6ZV90aWxlc19wZXJfYnVmKHZvaWQpCkBAIC03NTcsNiArNzY1 LDcgQEAgc3RhdGljIHZvaWQgaW5pdCh2b2lkKQogewogCWludCBpOwogCXVuc2lnbmVkIHRtcDsK Kwl1aW50MzJfdCBzdHJpZGUsIHdpZHRoLCBoZWlnaHQsIGJwcDsKIAogCWlmIChvcHRpb25zLm51 bV9idWZmZXJzID09IDApIHsKIAkJdG1wID0gZ2VtX2FwZXJ0dXJlX3NpemUoZHJtX2ZkKTsKQEAg LTc2NywyMiArNzc2LDI1IEBAIHN0YXRpYyB2b2lkIGluaXQodm9pZCkKIAl9IGVsc2UKIAkJbnVt X2J1ZmZlcnMgPSBvcHRpb25zLm51bV9idWZmZXJzOwogCi0JYnVmbWdyID0gZHJtX2ludGVsX2J1 Zm1ncl9nZW1faW5pdChkcm1fZmQsIDQwOTYpOwotCWRybV9pbnRlbF9idWZtZ3JfZ2VtX2VuYWJs ZV9yZXVzZShidWZtZ3IpOwotCWRybV9pbnRlbF9idWZtZ3JfZ2VtX2VuYWJsZV9mZW5jZWRfcmVs b2NzKGJ1Zm1ncik7CiAJbnVtX2ZlbmNlcyA9IGdlbV9hdmFpbGFibGVfZmVuY2VzKGRybV9mZCk7 CiAJaWd0X2Fzc2VydF9sdCg0LCBudW1fZmVuY2VzKTsKLQliYXRjaCA9IGludGVsX2JhdGNoYnVm ZmVyX2FsbG9jKGJ1Zm1nciwgZGV2aWQpOwogCi0JYnVzeV9ibyA9IGRybV9pbnRlbF9ib19hbGxv YyhidWZtZ3IsICJ0aWxlZCBibyIsIEJVU1lfQlVGX1NJWkUsIDQwOTYpOwotCWlmIChvcHRpb25z LmZvcmNlZF90aWxpbmcgPj0gMCkKLQkJZ2VtX3NldF90aWxpbmcoZHJtX2ZkLCBidXN5X2JvLT5o YW5kbGUsIG9wdGlvbnMuZm9yY2VkX3RpbGluZywgNDA5Nik7CisJYm9wcyA9IGJ1Zl9vcHNfY3Jl YXRlKGRybV9mZCk7CisJaWJiID0gaW50ZWxfYmJfY3JlYXRlKGRybV9mZCwgNDA5Nik7CisKKwlz dHJpZGUgPSA0MDk2OworCWJwcCA9IDMyOworCXdpZHRoID0gc3RyaWRlIC8gKGJwcCAvIDgpOwor CWhlaWdodCA9IEJVU1lfQlVGX1NJWkUgLyBzdHJpZGU7CisJaW50ZWxfYnVmX2luaXQoYm9wcywg JmJ1c3lfYm8sCisJCSAgICAgICB3aWR0aCwgaGVpZ2h0LCBicHAsIDAsIG9wdGlvbnMuZm9yY2Vk X3RpbGluZywKKwkJICAgICAgIEk5MTVfQ09NUFJFU1NJT05fTk9ORSk7CiAKIAlmb3IgKGkgPSAw OyBpIDwgbnVtX2J1ZmZlcnM7IGkrKykgewogCQlpbml0X2J1ZmZlcigmYnVmZmVyc1swXVtpXSwg b3B0aW9ucy5zY3JhdGNoX2J1Zl9zaXplKTsKIAkJaW5pdF9idWZmZXIoJmJ1ZmZlcnNbMV1baV0s IG9wdGlvbnMuc2NyYXRjaF9idWZfc2l6ZSk7CiAKLQkJbnVtX3RvdGFsX3RpbGVzICs9IGJ1ZmZl cnNbMF1baV0ubnVtX3RpbGVzOworCQludW1fdG90YWxfdGlsZXMgKz0gb3B0aW9ucy50aWxlc19w ZXJfYnVmOwogCX0KIAljdXJyZW50X3NldCA9IDA7CiAKQEAgLTc5Miw3ICs4MDQsNyBAQCBzdGF0 aWMgdm9pZCBpbml0KHZvaWQpCiAKIHN0YXRpYyB2b2lkIGNoZWNrX3JlbmRlcl9jb3B5ZnVuYyh2 b2lkKQogewotCXN0cnVjdCBpZ3RfYnVmIHNyYywgZHN0OworCXN0cnVjdCBpbnRlbF9idWYgc3Jj LCBkc3Q7CiAJdWludDMyX3QgKnB0cjsKIAlpbnQgaSwgaiwgcGFzczsKIApAQCAtODAzLDE3ICs4 MTUsMTggQEAgc3RhdGljIHZvaWQgY2hlY2tfcmVuZGVyX2NvcHlmdW5jKHZvaWQpCiAJaW5pdF9i dWZmZXIoJmRzdCwgb3B0aW9ucy5zY3JhdGNoX2J1Zl9zaXplKTsKIAogCWZvciAocGFzcyA9IDA7 IHBhc3MgPCAxNjsgcGFzcysrKSB7Ci0JCWludCBzeCA9IHJhbmRvbSgpICUgKGlndF9idWZfd2lk dGgoJnNyYyktb3B0aW9ucy50aWxlX3NpemUpOwotCQlpbnQgc3kgPSByYW5kb20oKSAlIChpZ3Rf YnVmX2hlaWdodCgmc3JjKS1vcHRpb25zLnRpbGVfc2l6ZSk7Ci0JCWludCBkeCA9IHJhbmRvbSgp ICUgKGlndF9idWZfd2lkdGgoJmRzdCktb3B0aW9ucy50aWxlX3NpemUpOwotCQlpbnQgZHkgPSBy YW5kb20oKSAlIChpZ3RfYnVmX2hlaWdodCgmZHN0KS1vcHRpb25zLnRpbGVfc2l6ZSk7CisJCWlu dCBzeCA9IHJhbmRvbSgpICUgKGludGVsX2J1Zl93aWR0aCgmc3JjKS1vcHRpb25zLnRpbGVfc2l6 ZSk7CisJCWludCBzeSA9IHJhbmRvbSgpICUgKGludGVsX2J1Zl9oZWlnaHQoJnNyYyktb3B0aW9u cy50aWxlX3NpemUpOworCQlpbnQgZHggPSByYW5kb20oKSAlIChpbnRlbF9idWZfd2lkdGgoJmRz dCktb3B0aW9ucy50aWxlX3NpemUpOworCQlpbnQgZHkgPSByYW5kb20oKSAlIChpbnRlbF9idWZf aGVpZ2h0KCZkc3QpLW9wdGlvbnMudGlsZV9zaXplKTsKIAogCQlpZiAob3B0aW9ucy51c2VfY3B1 X21hcHMpCiAJCQlzZXRfdG9fY3B1X2RvbWFpbigmc3JjLCAxKTsKIAotCQltZW1zZXQoc3JjLmRh dGEsIDB4ZmYsIG9wdGlvbnMuc2NyYXRjaF9idWZfc2l6ZSk7CisJCW1lbXNldChzcmMucHRyLCAw eGZmLCBvcHRpb25zLnNjcmF0Y2hfYnVmX3NpemUpOwogCQlmb3IgKGogPSAwOyBqIDwgb3B0aW9u cy50aWxlX3NpemU7IGorKykgewotCQkJcHRyID0gKHVpbnQzMl90KikoKGNoYXIgKilzcmMuZGF0 YSArIHN4KjQgKyAoc3kraikgKiBzcmMuc3VyZmFjZVswXS5zdHJpZGUpOworCQkJcHRyID0gKHVp bnQzMl90KikoKGNoYXIgKilzcmMucHRyICsgc3gqNCArCisJCQkJCSAgKHN5K2opICogc3JjLnN1 cmZhY2VbMF0uc3RyaWRlKTsKIAkJCWZvciAoaSA9IDA7IGkgPCBvcHRpb25zLnRpbGVfc2l6ZTsg aSsrKQogCQkJCXB0cltpXSA9IGogKiBvcHRpb25zLnRpbGVfc2l6ZSArIGk7CiAJCX0KQEAgLTgy NCw3ICs4MzcsOCBAQCBzdGF0aWMgdm9pZCBjaGVja19yZW5kZXJfY29weWZ1bmModm9pZCkKIAkJ CXNldF90b19jcHVfZG9tYWluKCZkc3QsIDApOwogCiAJCWZvciAoaiA9IDA7IGogPCBvcHRpb25z LnRpbGVfc2l6ZTsgaisrKSB7Ci0JCQlwdHIgPSAodWludDMyX3QqKSgoY2hhciAqKWRzdC5kYXRh ICsgZHgqNCArIChkeStqKSAqIGRzdC5zdXJmYWNlWzBdLnN0cmlkZSk7CisJCQlwdHIgPSAodWlu dDMyX3QqKSgoY2hhciAqKWRzdC5wdHIgKyBkeCo0ICsKKwkJCQkJICAoZHkraikgKiBkc3Quc3Vy ZmFjZVswXS5zdHJpZGUpOwogCQkJZm9yIChpID0gMDsgaSA8IG9wdGlvbnMudGlsZV9zaXplOyBp KyspCiAJCQkJaWYgKHB0cltpXSAhPSBqICogb3B0aW9ucy50aWxlX3NpemUgKyBpKSB7CiAJCQkJ CWlndF9pbmZvKCJyZW5kZXIgY29weWZ1bmMgbWlzbWF0Y2ggYXQgKCVkLCAlZCk6IGZvdW5kICVk LCBleHBlY3RlZCAlZFxuIiwgaSwgaiwgcHRyW2ldLCBqICogb3B0aW9ucy50aWxlX3NpemUgKyBp KTsKQEAgLTkwOSw4ICs5MjMsOCBAQCBpZ3Rfc2ltcGxlX21haW5fYXJncygiZHM6ZzpjOnQ6cmJ1 eG1vOmZwOiIsCiAKIAlpZ3RfaW5mbygibnVtIGZhaWxlZCB0aWxlcyAldSwgbWF4IGluY29oZXJl bnQgYnl0ZXMgJXpkXG4iLCBzdGF0cy5udW1fZmFpbGVkLCBzdGF0cy5tYXhfZmFpbGVkX3JlYWRz ICogc2l6ZW9mKHVpbnQzMl90KSk7CiAKLQlpbnRlbF9iYXRjaGJ1ZmZlcl9mcmVlKGJhdGNoKTsK LQlkcm1faW50ZWxfYnVmbWdyX2Rlc3Ryb3koYnVmbWdyKTsKKwlpbnRlbF9iYl9kZXN0cm95KGli Yik7CisJYnVmX29wc19kZXN0cm95KGJvcHMpOwogCiAJY2xvc2UoZHJtX2ZkKTsKIAotLSAKMi4y Ni4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3Qt ZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK