From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3BF996E058 for ; Fri, 15 Feb 2019 00:49:07 +0000 (UTC) Date: Thu, 14 Feb 2019 16:49:01 -0800 Message-Id: <20190215004901.29158-1-antonio.argenziano@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v4] tests/i915/gem_exec_schedule.c: Switch to gem_sync and gem_read List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Antonio Argenziano via igt-dev Reply-To: Antonio Argenziano Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org List-ID: dXNlIElPQ1RMcyBnZW1fcmVhZCBmb3IgcmVhZGluZyBhbmQsIGdlbV9zeW5jIHRvIHdhaXQgb24g YSBiYXRjaCwgdGhpcwp3aWxsIGhlbHAgdGVzdGluZyBwbGF0Zm9ybXMgdGhhdCBtaWdodCBub3Qg ZXhwb3NlIGd0dCBtYXBwaW5nLgoKdjI6CgktIHVzZSBhIGxvY2FsIGhlbHBlciBmb3IgcmVhZGlu ZyBmcm9tIEJPcy4gKENocmlzKQoJLSBBbHdheXMgc3luYyBiZWZvcmUgcmVhZGluZy4gKENocmlz KQoKdjM6CgktIEJldHRlciBoZWxwZXIgbmFtaW5nLiAoQ2hyaXMpCgktIFN0YXJ0IHJlYWQgZnJv bSBhY3R1YWwgb2Zmc2V0LiAoQ2hyaXMpCgp2NDoKCS0gQWx3YXlzIHVzZSBieXRlIHNpemUgaW4g aGVscGVyLiAoQ2hyaXMpCgpTaWduZWQtb2ZmLWJ5OiBBbnRvbmlvIEFyZ2Vuemlhbm8gPGFudG9u aW8uYXJnZW56aWFub0BpbnRlbC5jb20+CgpDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13 aWxzb24uY28udWs+Ci0tLQogdGVzdHMvaTkxNS9nZW1fZXhlY19zY2hlZHVsZS5jIHwgMTMwICsr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDYyIGluc2Vy dGlvbnMoKyksIDY4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX2V4 ZWNfc2NoZWR1bGUuYyBiL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfc2NoZWR1bGUuYwppbmRleCAwMGY5 NTI4YS4uMWZmMDkzNWUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfc2NoZWR1bGUu YworKysgYi90ZXN0cy9pOTE1L2dlbV9leGVjX3NjaGVkdWxlLmMKQEAgLTQ5LDYgKzQ5LDI0IEBA CiAKIElHVF9URVNUX0RFU0NSSVBUSU9OKCJDaGVjayB0aGF0IHdlIGNhbiBjb250cm9sIHRoZSBv cmRlciBvZiBleGVjdXRpb24iKTsKIAorc3RhdGljIGlubGluZQordWludDMyX3QgX19zeW5jX3Jl YWRfdTMyKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBvZmZzZXQpCit7CisJdWlu dDMyX3QgdmFsdWU7CisKKwlnZW1fc3luYyhmZCwgaGFuZGxlKTsgLyogTm8gd3JpdGUgaGF6YXJk IGxpZXMhICovCisJZ2VtX3JlYWQoZmQsIGhhbmRsZSwgb2Zmc2V0LCAmdmFsdWUsIHNpemVvZih2 YWx1ZSkpOworCisJcmV0dXJuIHZhbHVlOworfQorCitzdGF0aWMgaW5saW5lCit2b2lkIF9fc3lu Y19yZWFkX3UzMl9jb3VudChpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDMyX3QgKmRzdCwg dWludDY0X3Qgc2l6ZSkKK3sKKwlnZW1fc3luYyhmZCwgaGFuZGxlKTsgLyogTm8gd3JpdGUgaGF6 YXJkIGxpZXMhICovCisJZ2VtX3JlYWQoZmQsIGhhbmRsZSwgMCwgZHN0LCBzaXplKTsKK30KKwog c3RhdGljIHVpbnQzMl90IF9fc3RvcmVfZHdvcmQoaW50IGZkLCB1aW50MzJfdCBjdHgsIHVuc2ln bmVkIHJpbmcsCiAJCQkgICAgICB1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IG9mZnNldCwgdWlu dDMyX3QgdmFsdWUsCiAJCQkgICAgICB1aW50MzJfdCBjb3JrLCB1bnNpZ25lZCB3cml0ZV9kb21h aW4pCkBAIC0xNTIsNyArMTcwLDcgQEAgc3RhdGljIHZvaWQgZmlmbyhpbnQgZmQsIHVuc2lnbmVk IHJpbmcpCiB7CiAJSUdUX0NPUktfSEFORExFKGNvcmspOwogCXVpbnQzMl90IHNjcmF0Y2gsIHBs dWc7Ci0JdWludDMyX3QgKnB0cjsKKwl1aW50MzJfdCByZXN1bHQ7CiAKIAlzY3JhdGNoID0gZ2Vt X2NyZWF0ZShmZCwgNDA5Nik7CiAKQEAgLTE2NSwxMyArMTgzLDEwIEBAIHN0YXRpYyB2b2lkIGZp Zm8oaW50IGZkLCB1bnNpZ25lZCByaW5nKQogCXVucGx1Z19zaG93X3F1ZXVlKGZkLCAmY29yaywg cmluZyk7CiAJZ2VtX2Nsb3NlKGZkLCBwbHVnKTsKIAotCXB0ciA9IGdlbV9tbWFwX19ndHQoZmQs IHNjcmF0Y2gsIDQwOTYsIFBST1RfUkVBRCk7Ci0JZ2VtX3NldF9kb21haW4oZmQsIHNjcmF0Y2gs IC8qIG5vIHdyaXRlIGhhemFyZCBsaWVzISAqLwotCQkJSTkxNV9HRU1fRE9NQUlOX0dUVCwgSTkx NV9HRU1fRE9NQUlOX0dUVCk7CisJcmVzdWx0ID0gIF9fc3luY19yZWFkX3UzMihmZCwgc2NyYXRj aCwgMCk7CiAJZ2VtX2Nsb3NlKGZkLCBzY3JhdGNoKTsKIAotCWlndF9hc3NlcnRfZXFfdTMyKHB0 clswXSwgMik7Ci0JbXVubWFwKHB0ciwgNDA5Nik7CisJaWd0X2Fzc2VydF9lcV91MzIocmVzdWx0 LCAyKTsKIH0KIAogc3RhdGljIHZvaWQgaW5kZXBlbmRlbnQoaW50IGZkLCB1bnNpZ25lZCBpbnQg ZW5naW5lKQpAQCAtMjQ5LDcgKzI2NCw3IEBAIHN0YXRpYyB2b2lkIHNtb2tldGVzdChpbnQgZmQs IHVuc2lnbmVkIHJpbmcsIHVuc2lnbmVkIHRpbWVvdXQpCiAJdW5zaWduZWQgbmVuZ2luZTsKIAl1 bnNpZ25lZCBlbmdpbmU7CiAJdWludDMyX3Qgc2NyYXRjaDsKLQl1aW50MzJfdCAqcHRyOworCXVp bnQzMl90IHJlc3VsdFsyICogbmNwdXNdOwogCiAJbmVuZ2luZSA9IDA7CiAJaWYgKHJpbmcgPT0g QUxMX0VOR0lORVMpIHsKQEAgLTI4NywyMiArMzAyLDE5IEBAIHN0YXRpYyB2b2lkIHNtb2tldGVz dChpbnQgZmQsIHVuc2lnbmVkIHJpbmcsIHVuc2lnbmVkIHRpbWVvdXQpCiAJfQogCWlndF93YWl0 Y2hpbGRyZW4oKTsKIAotCXB0ciA9IGdlbV9tbWFwX19ndHQoZmQsIHNjcmF0Y2gsIDQwOTYsIFBS T1RfUkVBRCk7Ci0JZ2VtX3NldF9kb21haW4oZmQsIHNjcmF0Y2gsIC8qIG5vIHdyaXRlIGhhemFy ZCBsaWVzISAqLwotCQkJSTkxNV9HRU1fRE9NQUlOX0dUVCwgSTkxNV9HRU1fRE9NQUlOX0dUVCk7 CisJX19zeW5jX3JlYWRfdTMyX2NvdW50KGZkLCBzY3JhdGNoLCByZXN1bHQsIHNpemVvZihyZXN1 bHQpKTsKIAlnZW1fY2xvc2UoZmQsIHNjcmF0Y2gpOwogCiAJZm9yICh1bnNpZ25lZCBuID0gMDsg biA8IG5jcHVzOyBuKyspIHsKLQkJaWd0X2Fzc2VydF9lcV91MzIocHRyWzIqbl0sIH5uKTsKKwkJ aWd0X2Fzc2VydF9lcV91MzIocmVzdWx0WzIgKiBuXSwgfm4pOwogCQkvKgogCQkgKiBOb3RlIHRo aXMgY291bnQgaXMgYXBwcm94aW1hdGUgZHVlIHRvIHVuY29uc3RyYWluZWQKIAkJICogb3JkZXJp bmcgb2YgdGhlIGR3b3JkIHdyaXRlcyBiZXR3ZWVuIGVuZ2luZXMuCiAJCSAqCiAJCSAqIFRha2Ug dGhlIHJlc3VsdCB3aXRoIGEgcGluY2ggb2Ygc2FsdC4KIAkJICovCi0JCWlndF9pbmZvKCJDaGls ZFslZF0gY29tcGxldGVkICV1IGN5Y2xlc1xuIiwgIG4sIHB0clsyKm4rMV0pOworCQlpZ3RfaW5m bygiQ2hpbGRbJWRdIGNvbXBsZXRlZCAldSBjeWNsZXNcbiIsICBuLCByZXN1bHRbKDIgKiBuKSAr IDFdKTsKIAl9Ci0JbXVubWFwKHB0ciwgNDA5Nik7CiB9CiAKIHN0YXRpYyB2b2lkIHJlb3JkZXIo aW50IGZkLCB1bnNpZ25lZCByaW5nLCB1bnNpZ25lZCBmbGFncykKQEAgLTMxMCw3ICszMjIsNyBA QCBzdGF0aWMgdm9pZCByZW9yZGVyKGludCBmZCwgdW5zaWduZWQgcmluZywgdW5zaWduZWQgZmxh Z3MpCiB7CiAJSUdUX0NPUktfSEFORExFKGNvcmspOwogCXVpbnQzMl90IHNjcmF0Y2gsIHBsdWc7 Ci0JdWludDMyX3QgKnB0cjsKKwl1aW50MzJfdCByZXN1bHQ7CiAJdWludDMyX3QgY3R4WzJdOwog CiAJY3R4W0xPXSA9IGdlbV9jb250ZXh0X2NyZWF0ZShmZCk7CkBAIC0zMzQsMjMgKzM0NiwyMCBA QCBzdGF0aWMgdm9pZCByZW9yZGVyKGludCBmZCwgdW5zaWduZWQgcmluZywgdW5zaWduZWQgZmxh Z3MpCiAJZ2VtX2NvbnRleHRfZGVzdHJveShmZCwgY3R4W0xPXSk7CiAJZ2VtX2NvbnRleHRfZGVz dHJveShmZCwgY3R4W0hJXSk7CiAKLQlwdHIgPSBnZW1fbW1hcF9fZ3R0KGZkLCBzY3JhdGNoLCA0 MDk2LCBQUk9UX1JFQUQpOwotCWdlbV9zZXRfZG9tYWluKGZkLCBzY3JhdGNoLCAvKiBubyB3cml0 ZSBoYXphcmQgbGllcyEgKi8KLQkJCUk5MTVfR0VNX0RPTUFJTl9HVFQsIEk5MTVfR0VNX0RPTUFJ Tl9HVFQpOworCXJlc3VsdCA9ICBfX3N5bmNfcmVhZF91MzIoZmQsIHNjcmF0Y2gsIDApOwogCWdl bV9jbG9zZShmZCwgc2NyYXRjaCk7CiAKIAlpZiAoZmxhZ3MgJiBFUVVBTCkgLyogZXF1YWwgcHJp b3JpdHksIHJlc3VsdCB3aWxsIGJlIGZpZm8gKi8KLQkJaWd0X2Fzc2VydF9lcV91MzIocHRyWzBd LCBjdHhbSEldKTsKKwkJaWd0X2Fzc2VydF9lcV91MzIocmVzdWx0LCBjdHhbSEldKTsKIAllbHNl Ci0JCWlndF9hc3NlcnRfZXFfdTMyKHB0clswXSwgY3R4W0xPXSk7Ci0JbXVubWFwKHB0ciwgNDA5 Nik7CisJCWlndF9hc3NlcnRfZXFfdTMyKHJlc3VsdCwgY3R4W0xPXSk7CiB9CiAKIHN0YXRpYyB2 b2lkIHByb21vdGlvbihpbnQgZmQsIHVuc2lnbmVkIHJpbmcpCiB7CiAJSUdUX0NPUktfSEFORExF KGNvcmspOwogCXVpbnQzMl90IHJlc3VsdCwgZGVwOwotCXVpbnQzMl90ICpwdHI7CisJdWludDMy X3QgcmVzdWx0X3JlYWQsIGRlcF9yZWFkOwogCXVpbnQzMl90IGN0eFszXTsKIAl1aW50MzJfdCBw bHVnOwogCkBAIC0zODksMjEgKzM5OCwxNCBAQCBzdGF0aWMgdm9pZCBwcm9tb3Rpb24oaW50IGZk LCB1bnNpZ25lZCByaW5nKQogCWdlbV9jb250ZXh0X2Rlc3Ryb3koZmQsIGN0eFtMT10pOwogCWdl bV9jb250ZXh0X2Rlc3Ryb3koZmQsIGN0eFtISV0pOwogCi0JcHRyID0gZ2VtX21tYXBfX2d0dChm ZCwgZGVwLCA0MDk2LCBQUk9UX1JFQUQpOwotCWdlbV9zZXRfZG9tYWluKGZkLCBkZXAsIC8qIG5v IHdyaXRlIGhhemFyZCBsaWVzISAqLwotCQkJSTkxNV9HRU1fRE9NQUlOX0dUVCwgSTkxNV9HRU1f RE9NQUlOX0dUVCk7CisJZGVwX3JlYWQgPSBfX3N5bmNfcmVhZF91MzIoZmQsIGRlcCwgMCk7CiAJ Z2VtX2Nsb3NlKGZkLCBkZXApOwogCi0JaWd0X2Fzc2VydF9lcV91MzIocHRyWzBdLCBjdHhbSEld KTsKLQltdW5tYXAocHRyLCA0MDk2KTsKLQotCXB0ciA9IGdlbV9tbWFwX19ndHQoZmQsIHJlc3Vs dCwgNDA5NiwgUFJPVF9SRUFEKTsKLQlnZW1fc2V0X2RvbWFpbihmZCwgcmVzdWx0LCAvKiBubyB3 cml0ZSBoYXphcmQgbGllcyEgKi8KLQkJCUk5MTVfR0VNX0RPTUFJTl9HVFQsIEk5MTVfR0VNX0RP TUFJTl9HVFQpOworCXJlc3VsdF9yZWFkID0gX19zeW5jX3JlYWRfdTMyKGZkLCByZXN1bHQsIDAp OwogCWdlbV9jbG9zZShmZCwgcmVzdWx0KTsKIAotCWlndF9hc3NlcnRfZXFfdTMyKHB0clswXSwg Y3R4W05PSVNFXSk7Ci0JbXVubWFwKHB0ciwgNDA5Nik7CisJaWd0X2Fzc2VydF9lcV91MzIoZGVw X3JlYWQsIGN0eFtISV0pOworCWlndF9hc3NlcnRfZXFfdTMyKHJlc3VsdF9yZWFkLCBjdHhbTk9J U0VdKTsKIH0KIAogI2RlZmluZSBORVdfQ1RYICgweDEgPDwgMCkKQEAgLTQxMSw3ICs0MTMsNyBA QCBzdGF0aWMgdm9pZCBwcm9tb3Rpb24oaW50IGZkLCB1bnNpZ25lZCByaW5nKQogc3RhdGljIHZv aWQgcHJlZW1wdChpbnQgZmQsIHVuc2lnbmVkIHJpbmcsIHVuc2lnbmVkIGZsYWdzKQogewogCXVp bnQzMl90IHJlc3VsdCA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOwotCXVpbnQzMl90ICpwdHIgPSBn ZW1fbW1hcF9fZ3R0KGZkLCByZXN1bHQsIDQwOTYsIFBST1RfUkVBRCk7CisJdWludDMyX3QgcmVz dWx0X3JlYWQ7CiAJaWd0X3NwaW5fdCAqc3BpbltNQVhfRUxTUF9RTEVOXTsKIAl1aW50MzJfdCBj dHhbMl07CiAJaWd0X2hhbmdfdCBoYW5nOwpAQCAtNDM4LDggKzQ0MCw4IEBAIHN0YXRpYyB2b2lk IHByZWVtcHQoaW50IGZkLCB1bnNpZ25lZCByaW5nLCB1bnNpZ25lZCBmbGFncykKIAogCQlzdG9y ZV9kd29yZChmZCwgY3R4W0hJXSwgcmluZywgcmVzdWx0LCAwLCBuICsgMSwgMCwgSTkxNV9HRU1f RE9NQUlOX1JFTkRFUik7CiAKLQkJZ2VtX3NldF9kb21haW4oZmQsIHJlc3VsdCwgSTkxNV9HRU1f RE9NQUlOX0dUVCwgMCk7Ci0JCWlndF9hc3NlcnRfZXFfdTMyKHB0clswXSwgbiArIDEpOworCQly ZXN1bHRfcmVhZCA9IF9fc3luY19yZWFkX3UzMihmZCwgcmVzdWx0LCAwKTsKKwkJaWd0X2Fzc2Vy dF9lcV91MzIocmVzdWx0X3JlYWQsIG4gKyAxKTsKIAkJaWd0X2Fzc2VydChnZW1fYm9fYnVzeShm ZCwgc3BpblswXS0+aGFuZGxlKSk7CiAJfQogCkBAIC00NTIsNyArNDU0LDYgQEAgc3RhdGljIHZv aWQgcHJlZW1wdChpbnQgZmQsIHVuc2lnbmVkIHJpbmcsIHVuc2lnbmVkIGZsYWdzKQogCWdlbV9j b250ZXh0X2Rlc3Ryb3koZmQsIGN0eFtMT10pOwogCWdlbV9jb250ZXh0X2Rlc3Ryb3koZmQsIGN0 eFtISV0pOwogCi0JbXVubWFwKHB0ciwgNDA5Nik7CiAJZ2VtX2Nsb3NlKGZkLCByZXN1bHQpOwog fQogCkBAIC00OTMsNyArNDk0LDcgQEAgc3RhdGljIHZvaWQgX19wcmVlbXB0X290aGVyKGludCBm ZCwKIAkJCSAgICB1bnNpZ25lZCBmbGFncykKIHsKIAl1aW50MzJfdCByZXN1bHQgPSBnZW1fY3Jl YXRlKGZkLCA0MDk2KTsKLQl1aW50MzJfdCAqcHRyID0gZ2VtX21tYXBfX2d0dChmZCwgcmVzdWx0 LCA0MDk2LCBQUk9UX1JFQUQpOworCXVpbnQzMl90IHJlc3VsdF9yZWFkWzQwOTYgLyBzaXplb2Yo dWludDMyX3QpXTsKIAl1bnNpZ25lZCBpbnQgbiwgaSwgb3RoZXI7CiAKIAluID0gMDsKQEAgLTUx OSwxMCArNTIwLDExIEBAIHN0YXRpYyB2b2lkIF9fcHJlZW1wdF9vdGhlcihpbnQgZmQsCiAJZ2Vt X3NldF9kb21haW4oZmQsIHJlc3VsdCwgSTkxNV9HRU1fRE9NQUlOX0dUVCwgMCk7CiAKIAluKys7 CisKKwlfX3N5bmNfcmVhZF91MzJfY291bnQoZmQsIHJlc3VsdCwgcmVzdWx0X3JlYWQsIHNpemVv ZihyZXN1bHRfcmVhZCkpOwogCWZvciAoaSA9IDA7IGkgPD0gbjsgaSsrKQotCQlpZ3RfYXNzZXJ0 X2VxX3UzMihwdHJbaV0sIGkpOworCQlpZ3RfYXNzZXJ0X2VxX3UzMihyZXN1bHRfcmVhZFtpXSwg aSk7CiAKLQltdW5tYXAocHRyLCA0MDk2KTsKIAlnZW1fY2xvc2UoZmQsIHJlc3VsdCk7CiB9CiAK QEAgLTU3MCw3ICs1NzIsNyBAQCBzdGF0aWMgdm9pZCBfX3ByZWVtcHRfcXVldWUoaW50IGZkLAog CQkJICAgIHVuc2lnbmVkIGRlcHRoLCB1bnNpZ25lZCBmbGFncykKIHsKIAl1aW50MzJfdCByZXN1 bHQgPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsKLQl1aW50MzJfdCAqcHRyID0gZ2VtX21tYXBfX2d0 dChmZCwgcmVzdWx0LCA0MDk2LCBQUk9UX1JFQUQpOworCXVpbnQzMl90IHJlc3VsdF9yZWFkWzQw OTYgLyBzaXplb2YodWludDMyX3QpXTsKIAlpZ3Rfc3Bpbl90ICphYm92ZSA9IE5VTEwsICpiZWxv dyA9IE5VTEw7CiAJdW5zaWduZWQgaW50IG90aGVyLCBuLCBpOwogCWludCBwcmlvID0gTUFYX1BS SU87CkBAIC02MjgsOSArNjMwLDExIEBAIHN0YXRpYyB2b2lkIF9fcHJlZW1wdF9xdWV1ZShpbnQg ZmQsCiAKIAlnZW1fc2V0X2RvbWFpbihmZCwgcmVzdWx0LCBJOTE1X0dFTV9ET01BSU5fR1RULCAw KTsKIAorCV9fc3luY19yZWFkX3UzMl9jb3VudChmZCwgcmVzdWx0LCByZXN1bHRfcmVhZCwgc2l6 ZW9mKHJlc3VsdF9yZWFkKSk7CisKIAluKys7CiAJZm9yIChpID0gMDsgaSA8PSBuOyBpKyspCi0J CWlndF9hc3NlcnRfZXFfdTMyKHB0cltpXSwgaSk7CisJCWlndF9hc3NlcnRfZXFfdTMyKHJlc3Vs dF9yZWFkW2ldLCBpKTsKIAogCWlmIChiZWxvdykgewogCQlpZ3RfYXNzZXJ0KGdlbV9ib19idXN5 KGZkLCBiZWxvdy0+aGFuZGxlKSk7CkBAIC02NDEsNyArNjQ1LDYgQEAgc3RhdGljIHZvaWQgX19w cmVlbXB0X3F1ZXVlKGludCBmZCwKIAlnZW1fY29udGV4dF9kZXN0cm95KGZkLCBjdHhbTk9JU0Vd KTsKIAlnZW1fY29udGV4dF9kZXN0cm95KGZkLCBjdHhbSEldKTsKIAotCW11bm1hcChwdHIsIDQw OTYpOwogCWdlbV9jbG9zZShmZCwgcmVzdWx0KTsKIH0KIApAQCAtNjU4LDcgKzY2MSw3IEBAIHN0 YXRpYyB2b2lkIHByZWVtcHRfcXVldWUoaW50IGZkLCB1bnNpZ25lZCByaW5nLCB1bnNpZ25lZCBp bnQgZmxhZ3MpCiBzdGF0aWMgdm9pZCBwcmVlbXB0X3NlbGYoaW50IGZkLCB1bnNpZ25lZCByaW5n KQogewogCXVpbnQzMl90IHJlc3VsdCA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOwotCXVpbnQzMl90 ICpwdHIgPSBnZW1fbW1hcF9fZ3R0KGZkLCByZXN1bHQsIDQwOTYsIFBST1RfUkVBRCk7CisJdWlu dDMyX3QgcmVzdWx0X3JlYWRbNDA5NiAvIHNpemVvZih1aW50MzJfdCldOwogCWlndF9zcGluX3Qg KnNwaW5bTUFYX0VMU1BfUUxFTl07CiAJdW5zaWduZWQgaW50IG90aGVyOwogCXVuc2lnbmVkIGlu dCBuLCBpOwpAQCAtNjk5LDE0ICs3MDIsMTUgQEAgc3RhdGljIHZvaWQgcHJlZW1wdF9zZWxmKGlu dCBmZCwgdW5zaWduZWQgcmluZykKIAkJaWd0X3NwaW5fYmF0Y2hfZnJlZShmZCwgc3BpbltpXSk7 CiAJfQogCisJX19zeW5jX3JlYWRfdTMyX2NvdW50KGZkLCByZXN1bHQsIHJlc3VsdF9yZWFkLCBz aXplb2YocmVzdWx0X3JlYWQpKTsKKwogCW4rKzsKIAlmb3IgKGkgPSAwOyBpIDw9IG47IGkrKykK LQkJaWd0X2Fzc2VydF9lcV91MzIocHRyW2ldLCBpKTsKKwkJaWd0X2Fzc2VydF9lcV91MzIocmVz dWx0X3JlYWRbaV0sIGkpOwogCiAJZ2VtX2NvbnRleHRfZGVzdHJveShmZCwgY3R4W05PSVNFXSk7 CiAJZ2VtX2NvbnRleHRfZGVzdHJveShmZCwgY3R4W0hJXSk7CiAKLQltdW5tYXAocHRyLCA0MDk2 KTsKIAlnZW1fY2xvc2UoZmQsIHJlc3VsdCk7CiB9CiAKQEAgLTc1NSw4ICs3NTksOCBAQCBzdGF0 aWMgdm9pZCBkZWVwKGludCBmZCwgdW5zaWduZWQgcmluZykKIAl1bnNpZ25lZCBpbnQgbnJlcTsK IAl1aW50MzJfdCBwbHVnOwogCXVpbnQzMl90IHJlc3VsdCwgZGVwW1hTXTsKKwl1aW50MzJfdCBy ZXN1bHRfcmVhZFtzaXplIC8gc2l6ZW9mKHVpbnQzMl90KV0sIGRlcF9yZWFkW3NpemUgLyBzaXpl b2YodWludDMyX3QpXTsKIAl1aW50MzJfdCBleHBlY3RlZCA9IDA7Ci0JdWludDMyX3QgKnB0cjsK IAl1aW50MzJfdCAqY3R4OwogCWludCBkZXBfbnJlcTsKIAlpbnQgbjsKQEAgLTg3OSwyNSArODgz LDE5IEBAIHN0YXRpYyB2b2lkIGRlZXAoaW50IGZkLCB1bnNpZ25lZCByaW5nKQogCQlnZW1fY29u dGV4dF9kZXN0cm95KGZkLCBjdHhbbl0pOwogCiAJZm9yIChpbnQgbSA9IDA7IG0gPCBYUzsgbSsr KSB7Ci0JCXB0ciA9IGdlbV9tbWFwX19ndHQoZmQsIGRlcFttXSwgc2l6ZSwgUFJPVF9SRUFEKTsK LQkJZ2VtX3NldF9kb21haW4oZmQsIGRlcFttXSwgLyogbm8gd3JpdGUgaGF6YXJkIGxpZXMhICov Ci0JCQkJSTkxNV9HRU1fRE9NQUlOX0dUVCwgSTkxNV9HRU1fRE9NQUlOX0dUVCk7CisJCV9fc3lu Y19yZWFkX3UzMl9jb3VudChmZCwgZGVwW21dLCBkZXBfcmVhZCwgc2l6ZW9mKGRlcF9yZWFkKSk7 CiAJCWdlbV9jbG9zZShmZCwgZGVwW21dKTsKIAogCQlmb3IgKG4gPSAwOyBuIDwgZGVwX25yZXE7 IG4rKykKLQkJCWlndF9hc3NlcnRfZXFfdTMyKHB0cltuXSwgY3R4W24gJSBNQVhfQ09OVEVYVFNd KTsKLQkJbXVubWFwKHB0ciwgc2l6ZSk7CisJCQlpZ3RfYXNzZXJ0X2VxX3UzMihkZXBfcmVhZFtu XSwgY3R4W24gJSBNQVhfQ09OVEVYVFNdKTsKIAl9CiAKLQlwdHIgPSBnZW1fbW1hcF9fZ3R0KGZk LCByZXN1bHQsIHNpemUsIFBST1RfUkVBRCk7Ci0JZ2VtX3NldF9kb21haW4oZmQsIHJlc3VsdCwg Lyogbm8gd3JpdGUgaGF6YXJkIGxpZXMhICovCi0JCQlJOTE1X0dFTV9ET01BSU5fR1RULCBJOTE1 X0dFTV9ET01BSU5fR1RUKTsKKwlfX3N5bmNfcmVhZF91MzJfY291bnQoZmQsIHJlc3VsdCwgcmVz dWx0X3JlYWQsIHNpemVvZihyZXN1bHRfcmVhZCkpOwogCWdlbV9jbG9zZShmZCwgcmVzdWx0KTsK IAogCS8qIE5vIHJlb3JkZXJpbmcgZHVlIHRvIFBJIG9uIGFsbCBjb250ZXh0cyBiZWNhdXNlIG9m IHRoZSBjb21tb24gZGVwICovCiAJZm9yIChpbnQgbSA9IDA7IG0gPCBYUzsgbSsrKQotCQlpZ3Rf YXNzZXJ0X2VxX3UzMihwdHJbbV0sIGV4cGVjdGVkKTsKLQltdW5tYXAocHRyLCBzaXplKTsKKwkJ aWd0X2Fzc2VydF9lcV91MzIocmVzdWx0X3JlYWRbbV0sIGV4cGVjdGVkKTsKIAogCWZyZWUoY3R4 KTsKICN1bmRlZiBYUwpAQCAtOTIzLDcgKzkyMSw3IEBAIHN0YXRpYyB2b2lkIHdpZGUoaW50IGZk LCB1bnNpZ25lZCByaW5nKQogCUlHVF9DT1JLX0hBTkRMRShjb3JrKTsKIAl1aW50MzJfdCBwbHVn OwogCXVpbnQzMl90IHJlc3VsdDsKLQl1aW50MzJfdCAqcHRyOworCXVpbnQzMl90IHJlc3VsdF9y ZWFkWzQqTUFYX0NPTlRFWFRTXTsKIAl1aW50MzJfdCAqY3R4OwogCXVuc2lnbmVkIGludCBjb3Vu dDsKIApAQCAtOTUyLDEyICs5NTAsOSBAQCBzdGF0aWMgdm9pZCB3aWRlKGludCBmZCwgdW5zaWdu ZWQgcmluZykKIAlmb3IgKGludCBuID0gMDsgbiA8IE1BWF9DT05URVhUUzsgbisrKQogCQlnZW1f Y29udGV4dF9kZXN0cm95KGZkLCBjdHhbbl0pOwogCi0JcHRyID0gZ2VtX21tYXBfX2d0dChmZCwg cmVzdWx0LCA0Kk1BWF9DT05URVhUUywgUFJPVF9SRUFEKTsKLQlnZW1fc2V0X2RvbWFpbihmZCwg cmVzdWx0LCAvKiBubyB3cml0ZSBoYXphcmQgbGllcyEgKi8KLQkJCUk5MTVfR0VNX0RPTUFJTl9H VFQsIEk5MTVfR0VNX0RPTUFJTl9HVFQpOworCV9fc3luY19yZWFkX3UzMl9jb3VudChmZCwgcmVz dWx0LCByZXN1bHRfcmVhZCwgc2l6ZW9mKHJlc3VsdF9yZWFkKSk7CiAJZm9yIChpbnQgbiA9IDA7 IG4gPCBNQVhfQ09OVEVYVFM7IG4rKykKLQkJaWd0X2Fzc2VydF9lcV91MzIocHRyW25dLCBjdHhb bl0pOwotCW11bm1hcChwdHIsIDQqTUFYX0NPTlRFWFRTKTsKKwkJaWd0X2Fzc2VydF9lcV91MzIo cmVzdWx0X3JlYWRbbl0sIGN0eFtuXSk7CiAKIAlnZW1fY2xvc2UoZmQsIHJlc3VsdCk7CiAJZnJl ZShjdHgpOwpAQCAtOTczLDcgKzk2OCw4IEBAIHN0YXRpYyB2b2lkIHJlb3JkZXJfd2lkZShpbnQg ZmQsIHVuc2lnbmVkIHJpbmcpCiAJdW5zaWduZWQgaW50IHJpbmdfc2l6ZSA9IGdlbV9tZWFzdXJl X3JpbmdfaW5mbGlnaHQoZmQsIHJpbmcsIE1FQVNVUkVfUklOR19ORVdfQ1RYKTsKIAlJR1RfQ09S S19IQU5ETEUoY29yayk7CiAJdWludDMyX3QgcmVzdWx0LCB0YXJnZXQsIHBsdWc7Ci0JdWludDMy X3QgKmZvdW5kLCAqZXhwZWN0ZWQ7CisJdWludDMyX3QgcmVzdWx0X3JlYWRbMTAyNF07CisJdWlu dDMyX3QgKmV4cGVjdGVkOwogCiAJcmVzdWx0ID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7CiAJdGFy Z2V0ID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7CkBAIC0xMDUzLDEyICsxMDQ5LDEwIEBAIHN0YXRp YyB2b2lkIHJlb3JkZXJfd2lkZShpbnQgZmQsIHVuc2lnbmVkIHJpbmcpCiAJdW5wbHVnX3Nob3df cXVldWUoZmQsICZjb3JrLCByaW5nKTsKIAlnZW1fY2xvc2UoZmQsIHBsdWcpOwogCi0JZm91bmQg PSBnZW1fbW1hcF9fZ3R0KGZkLCByZXN1bHQsIDQwOTYsIFBST1RfUkVBRCk7Ci0JZ2VtX3NldF9k b21haW4oZmQsIHJlc3VsdCwgLyogbm8gd3JpdGUgaGF6YXJkIGxpZXMhICovCi0JCQlJOTE1X0dF TV9ET01BSU5fR1RULCBJOTE1X0dFTV9ET01BSU5fR1RUKTsKKwlfX3N5bmNfcmVhZF91MzJfY291 bnQoZmQsIHJlc3VsdCwgcmVzdWx0X3JlYWQsIHNpemVvZihyZXN1bHRfcmVhZCkpOwogCWZvciAo aW50IG4gPSAwOyBuIDwgMTAyNDsgbisrKQotCQlpZ3RfYXNzZXJ0X2VxX3UzMihmb3VuZFtuXSwg ZXhwZWN0ZWRbbl0pOwotCW11bm1hcChmb3VuZCwgNDA5Nik7CisJCWlndF9hc3NlcnRfZXFfdTMy KHJlc3VsdF9yZWFkW25dLCBleHBlY3RlZFtuXSk7CisKIAltdW5tYXAoZXhwZWN0ZWQsIDQwOTYp OwogCiAJZ2VtX2Nsb3NlKGZkLCByZXN1bHQpOwotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3Qt ZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=