From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH i-g-t 07/25] i915/gem_exec_nop: poll-sequential requires ordering between rings Date: Thu, 14 Mar 2019 14:19:21 +0000 Message-ID: <20190314141939.26246-7-chris@chris-wilson.co.uk> References: <20190314141939.26246-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190314141939.26246-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: igt-dev@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org SW4gb3JkZXIgdG8gY29ycmVjdGx5IHNlcmlhbGlzZSB0aGUgb3JkZXIgb2YgZXhlY3V0aW9uIGJl dHdlZW4gcmluZ3MsIHdlCm5lZWQgdG8gZmxhZyB0aGUgc2NyYXRjaCBhZGRyZXNzIGFzIGJlaW5n IHdyaXR0ZW4uIE1ha2UgaXQgc28uCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlz QGNocmlzLXdpbHNvbi5jby51az4KLS0tCiB0ZXN0cy9pOTE1L2dlbV9leGVjX25vcC5jIHwgMTUy ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiAxIGZpbGUgY2hhbmdlZCwg MTMzIGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5 MTUvZ2VtX2V4ZWNfbm9wLmMgYi90ZXN0cy9pOTE1L2dlbV9leGVjX25vcC5jCmluZGV4IDU5YTA4 YWQwOC4uYjkxYjRkMGY2IDEwMDY0NAotLS0gYS90ZXN0cy9pOTE1L2dlbV9leGVjX25vcC5jCisr KyBiL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfbm9wLmMKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMg ZG91YmxlIG5vcF9vbl9yaW5nKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1bnNpZ25lZCByaW5n X2lkLAogCXJldHVybiBlbGFwc2VkKCZzdGFydCwgJm5vdyk7CiB9CiAKLXN0YXRpYyB2b2lkIHBv bGxfcmluZyhpbnQgZmQsIHVuc2lnbmVkIHJpbmcsIGNvbnN0IGNoYXIgKm5hbWUsIGludCB0aW1l b3V0KQorc3RhdGljIHZvaWQgcG9sbF9yaW5nKGludCBmZCwgdW5zaWduZWQgZW5naW5lLCBjb25z dCBjaGFyICpuYW1lLCBpbnQgdGltZW91dCkKIHsKIAljb25zdCBpbnQgZ2VuID0gaW50ZWxfZ2Vu KGludGVsX2dldF9kcm1fZGV2aWQoZmQpKTsKIAljb25zdCB1aW50MzJfdCBNSV9BUkJfQ0hLID0g MHg1IDw8IDIzOwpAQCAtMTEyLDI5ICsxMTIsMTcgQEAgc3RhdGljIHZvaWQgcG9sbF9yaW5nKGlu dCBmZCwgdW5zaWduZWQgcmluZywgY29uc3QgY2hhciAqbmFtZSwgaW50IHRpbWVvdXQpCiAJc3Ry dWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqOwogCXN0cnVjdCBkcm1faTkxNV9nZW1f cmVsb2NhdGlvbl9lbnRyeSByZWxvY1s0XSwgKnI7CiAJdWludDMyX3QgKmJiZVsyXSwgKnN0YXRl LCAqYmF0Y2g7Ci0JdW5zaWduZWQgZW5naW5lc1sxNl0sIG5lbmdpbmUsIGZsYWdzOwogCXN0cnVj dCB0aW1lc3BlYyB0diA9IHt9OwogCXVuc2lnbmVkIGxvbmcgY3ljbGVzOworCXVuc2lnbmVkIGZs YWdzOwogCXVpbnQ2NF90IGVsYXBzZWQ7CiAKIAlmbGFncyA9IEk5MTVfRVhFQ19OT19SRUxPQzsK IAlpZiAoZ2VuID09IDQgfHwgZ2VuID09IDUpCiAJCWZsYWdzIHw9IEk5MTVfRVhFQ19TRUNVUkU7 CiAKLQluZW5naW5lID0gMDsKLQlpZiAocmluZyA9PSBBTExfRU5HSU5FUykgewotCQlmb3JfZWFj aF9waHlzaWNhbF9lbmdpbmUoZmQsIHJpbmcpIHsKLQkJCWlmICghZ2VtX2Nhbl9zdG9yZV9kd29y ZChmZCwgcmluZykpCi0JCQkJY29udGludWU7Ci0KLQkJCWVuZ2luZXNbbmVuZ2luZSsrXSA9IHJp bmc7Ci0JCX0KLQl9IGVsc2UgewotCQlnZW1fcmVxdWlyZV9yaW5nKGZkLCByaW5nKTsKLQkJaWd0 X3JlcXVpcmUoZ2VtX2Nhbl9zdG9yZV9kd29yZChmZCwgcmluZykpOwotCQllbmdpbmVzW25lbmdp bmUrK10gPSByaW5nOwotCX0KLQlpZ3RfcmVxdWlyZShuZW5naW5lKTsKKwlnZW1fcmVxdWlyZV9y aW5nKGZkLCBlbmdpbmUpOworCWlndF9yZXF1aXJlKGdlbV9jYW5fc3RvcmVfZHdvcmQoZmQsIGVu Z2luZSkpOwogCiAJbWVtc2V0KCZvYmosIDAsIHNpemVvZihvYmopKTsKIAlvYmouaGFuZGxlID0g Z2VtX2NyZWF0ZShmZCwgNDA5Nik7CkBAIC0xOTgsNyArMTg2LDcgQEAgc3RhdGljIHZvaWQgcG9s bF9yaW5nKGludCBmZCwgdW5zaWduZWQgcmluZywgY29uc3QgY2hhciAqbmFtZSwgaW50IHRpbWVv dXQpCiAJbWVtc2V0KCZleGVjYnVmLCAwLCBzaXplb2YoZXhlY2J1ZikpOwogCWV4ZWNidWYuYnVm ZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJm9iaik7CiAJZXhlY2J1Zi5idWZmZXJfY291bnQg PSAxOwotCWV4ZWNidWYuZmxhZ3MgPSBlbmdpbmVzWzBdOworCWV4ZWNidWYuZmxhZ3MgPSBlbmdp bmUgfCBmbGFnczsKIAogCWN5Y2xlcyA9IDA7CiAJZG8gewpAQCAtMjA4LDcgKzE5Niw2IEBAIHN0 YXRpYyB2b2lkIHBvbGxfcmluZyhpbnQgZmQsIHVuc2lnbmVkIHJpbmcsIGNvbnN0IGNoYXIgKm5h bWUsIGludCB0aW1lb3V0KQogCQlleGVjYnVmLmJhdGNoX3N0YXJ0X29mZnNldCA9CiAJCQkoYmJl W2lkeF0gLSBiYXRjaCkgKiBzaXplb2YoKmJhdGNoKSAtIDY0OwogCi0JCWV4ZWNidWYuZmxhZ3Mg PSBlbmdpbmVzW2N5Y2xlcyAlIG5lbmdpbmVdIHwgZmxhZ3M7CiAJCWdlbV9leGVjYnVmKGZkLCAm ZXhlY2J1Zik7CiAKIAkJKmJiZVshaWR4XSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7CkBAIC0yMjcs NiArMjE0LDEzMyBAQCBzdGF0aWMgdm9pZCBwb2xsX3JpbmcoaW50IGZkLCB1bnNpZ25lZCByaW5n LCBjb25zdCBjaGFyICpuYW1lLCBpbnQgdGltZW91dCkKIAlnZW1fY2xvc2UoZmQsIG9iai5oYW5k bGUpOwogfQogCitzdGF0aWMgdm9pZCBwb2xsX3NlcXVlbnRpYWwoaW50IGZkLCBjb25zdCBjaGFy ICpuYW1lLCBpbnQgdGltZW91dCkKK3sKKwljb25zdCBpbnQgZ2VuID0gaW50ZWxfZ2VuKGludGVs X2dldF9kcm1fZGV2aWQoZmQpKTsKKwljb25zdCB1aW50MzJfdCBNSV9BUkJfQ0hLID0gMHg1IDw8 IDIzOworCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZjsKKwlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmpbMl07CisJc3RydWN0IGRybV9pOTE1X2dlbV9y ZWxvY2F0aW9uX2VudHJ5IHJlbG9jWzRdLCAqcjsKKwl1aW50MzJfdCAqYmJlWzJdLCAqc3RhdGUs ICpiYXRjaDsKKwl1bnNpZ25lZCBlbmdpbmVzWzE2XSwgbmVuZ2luZSwgZW5naW5lLCBmbGFnczsK KwlzdHJ1Y3QgdGltZXNwZWMgdHYgPSB7fTsKKwl1bnNpZ25lZCBsb25nIGN5Y2xlczsKKwl1aW50 NjRfdCBlbGFwc2VkOworCWJvb2wgY2FjaGVkOworCisJZmxhZ3MgPSBJOTE1X0VYRUNfTk9fUkVM T0M7CisJaWYgKGdlbiA9PSA0IHx8IGdlbiA9PSA1KQorCQlmbGFncyB8PSBJOTE1X0VYRUNfU0VD VVJFOworCisJbmVuZ2luZSA9IDA7CisJZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGZkLCBlbmdp bmUpIHsKKwkJaWYgKCFnZW1fY2FuX3N0b3JlX2R3b3JkKGZkLCBlbmdpbmUpKQorCQkJY29udGlu dWU7CisKKwkJZW5naW5lc1tuZW5naW5lKytdID0gZW5naW5lOworCX0KKwlpZ3RfcmVxdWlyZShu ZW5naW5lKTsKKworCW1lbXNldChvYmosIDAsIHNpemVvZihvYmopKTsKKwlvYmpbMF0uaGFuZGxl ID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7CisJb2JqWzBdLmZsYWdzID0gRVhFQ19PQkpFQ1RfV1JJ VEU7CisJY2FjaGVkID0gX19nZW1fc2V0X2NhY2hpbmcoZmQsIG9ialswXS5oYW5kbGUsIDEpID09 IDA7CisJb2JqWzFdLmhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOworCW9ialsxXS5yZWxv Y3NfcHRyID0gdG9fdXNlcl9wb2ludGVyKHJlbG9jKTsKKwlvYmpbMV0ucmVsb2NhdGlvbl9jb3Vu dCA9IEFSUkFZX1NJWkUocmVsb2MpOworCisJciA9IG1lbXNldChyZWxvYywgMCwgc2l6ZW9mKHJl bG9jKSk7CisJYmF0Y2ggPSBnZW1fbW1hcF9fd2MoZmQsIG9ialsxXS5oYW5kbGUsIDAsIDQwOTYs IFBST1RfV1JJVEUpOworCisJZm9yICh1bnNpZ25lZCBpbnQgc3RhcnRfb2Zmc2V0ID0gMDsKKwkg ICAgIHN0YXJ0X29mZnNldCA8PSAxMjg7CisJICAgICBzdGFydF9vZmZzZXQgKz0gMTI4KSB7CisJ CXVpbnQzMl90ICpiID0gYmF0Y2ggKyBzdGFydF9vZmZzZXQgLyBzaXplb2YoKmJhdGNoKTsKKwor CQlyLT50YXJnZXRfaGFuZGxlID0gb2JqWzBdLmhhbmRsZTsKKwkJci0+b2Zmc2V0ID0gKGIgLSBi YXRjaCArIDEpICogc2l6ZW9mKHVpbnQzMl90KTsKKwkJci0+ZGVsdGEgPSAwOworCQlyLT5yZWFk X2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fUkVOREVSOworCQlyLT53cml0ZV9kb21haW4gPSBJ OTE1X0dFTV9ET01BSU5fUkVOREVSOworCisJCSpiID0gTUlfU1RPUkVfRFdPUkRfSU1NIHwgKGdl biA8IDYgPyAxIDw8IDIyIDogMCk7CisJCWlmIChnZW4gPj0gOCkgeworCQkJKisrYiA9IHItPmRl bHRhOworCQkJKisrYiA9IDA7CisJCX0gZWxzZSBpZiAoZ2VuID49IDQpIHsKKwkJCXItPm9mZnNl dCArPSBzaXplb2YodWludDMyX3QpOworCQkJKisrYiA9IDA7CisJCQkqKytiID0gci0+ZGVsdGE7 CisJCX0gZWxzZSB7CisJCQkqYiAtPSAxOworCQkJKisrYiA9IHItPmRlbHRhOworCQl9CisJCSor K2IgPSBzdGFydF9vZmZzZXQgIT0gMDsKKwkJcisrOworCisJCWIgPSBiYXRjaCArIChzdGFydF9v ZmZzZXQgKyA2NCkgLyBzaXplb2YoKmJhdGNoKTsKKwkJYmJlW3N0YXJ0X29mZnNldCAhPSAwXSA9 IGI7CisJCSpiKysgPSBNSV9BUkJfQ0hLOworCisJCXItPnRhcmdldF9oYW5kbGUgPSBvYmpbMV0u aGFuZGxlOworCQlyLT5vZmZzZXQgPSAoYiAtIGJhdGNoICsgMSkgKiBzaXplb2YodWludDMyX3Qp OworCQlyLT5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fQ09NTUFORDsKKwkJci0+ZGVs dGEgPSBzdGFydF9vZmZzZXQgKyA2NDsKKwkJaWYgKGdlbiA+PSA4KSB7CisJCQkqYisrID0gTUlf QkFUQ0hfQlVGRkVSX1NUQVJUIHwgMSA8PCA4IHwgMTsKKwkJCSpiKysgPSByLT5kZWx0YTsKKwkJ CSpiKysgPSAwOworCQl9IGVsc2UgaWYgKGdlbiA+PSA2KSB7CisJCQkqYisrID0gTUlfQkFUQ0hf QlVGRkVSX1NUQVJUIHwgMSA8PCA4OworCQkJKmIrKyA9IHItPmRlbHRhOworCQl9IGVsc2Ugewor CQkJKmIrKyA9IE1JX0JBVENIX0JVRkZFUl9TVEFSVCB8IDIgPDwgNjsKKwkJCWlmIChnZW4gPCA0 KQorCQkJCXItPmRlbHRhIHw9IDE7CisJCQkqYisrID0gci0+ZGVsdGE7CisJCX0KKwkJcisrOwor CX0KKwlpZ3RfYXNzZXJ0KHIgPT0gcmVsb2MgKyBBUlJBWV9TSVpFKHJlbG9jKSk7CisKKwlpZiAo Y2FjaGVkKQorCQlzdGF0ZSA9IGdlbV9tbWFwX19jcHUoZmQsIG9ialswXS5oYW5kbGUsIDAsIDQw OTYsIFBST1RfUkVBRCk7CisJZWxzZQorCQlzdGF0ZSA9IGdlbV9tbWFwX193YyhmZCwgb2JqWzBd LmhhbmRsZSwgMCwgNDA5NiwgUFJPVF9SRUFEKTsKKworCW1lbXNldCgmZXhlY2J1ZiwgMCwgc2l6 ZW9mKGV4ZWNidWYpKTsKKwlleGVjYnVmLmJ1ZmZlcnNfcHRyID0gdG9fdXNlcl9wb2ludGVyKG9i aik7CisJZXhlY2J1Zi5idWZmZXJfY291bnQgPSBBUlJBWV9TSVpFKG9iaik7CisKKwljeWNsZXMg PSAwOworCWRvIHsKKwkJdW5zaWduZWQgaW50IGlkeCA9ICsrY3ljbGVzICYgMTsKKworCQkqYmJl W2lkeF0gPSBNSV9BUkJfQ0hLOworCQlleGVjYnVmLmJhdGNoX3N0YXJ0X29mZnNldCA9CisJCQko YmJlW2lkeF0gLSBiYXRjaCkgKiBzaXplb2YoKmJhdGNoKSAtIDY0OworCisJCWV4ZWNidWYuZmxh Z3MgPSBlbmdpbmVzW2N5Y2xlcyAlIG5lbmdpbmVdIHwgZmxhZ3M7CisJCWdlbV9leGVjYnVmKGZk LCAmZXhlY2J1Zik7CisKKwkJKmJiZVshaWR4XSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7CisJCV9f c3luY19zeW5jaHJvbml6ZSgpOworCisJCXdoaWxlIChSRUFEX09OQ0UoKnN0YXRlKSAhPSBpZHgp CisJCQk7CisJfSB3aGlsZSAoKGVsYXBzZWQgPSBpZ3RfbnNlY19lbGFwc2VkKCZ0dikpID4+IDMw IDwgdGltZW91dCk7CisJKmJiZVtjeWNsZXMgJiAxXSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7CisJ Z2VtX3N5bmMoZmQsIG9ialsxXS5oYW5kbGUpOworCisJaWd0X2luZm8oIiVzIGNvbXBsZXRlZCAl bGQgY3ljbGVzOiAlLjNmIHVzXG4iLAorCQkgbmFtZSwgY3ljbGVzLCBlbGFwc2VkKjFlLTMvY3lj bGVzKTsKKworCW11bm1hcChzdGF0ZSwgNDA5Nik7CisJbXVubWFwKGJhdGNoLCA0MDk2KTsKKwln ZW1fY2xvc2UoZmQsIG9ialsxXS5oYW5kbGUpOworCWdlbV9jbG9zZShmZCwgb2JqWzBdLmhhbmRs ZSk7Cit9CisKIHN0YXRpYyB2b2lkIHNpbmdsZShpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwKIAkJ ICAgdW5zaWduZWQgcmluZ19pZCwgY29uc3QgY2hhciAqcmluZ19uYW1lKQogewpAQCAtODEzLDcg KzkyNyw3IEBAIGlndF9tYWluCiAJCX0KIAogCQlpZ3Rfc3VidGVzdCgicG9sbC1zZXF1ZW50aWFs IikKLQkJCXBvbGxfcmluZyhkZXZpY2UsIEFMTF9FTkdJTkVTLCAiU2VxdWVudGlhbCIsIDIwKTsK KwkJCXBvbGxfc2VxdWVudGlhbChkZXZpY2UsICJTZXF1ZW50aWFsIiwgMjApOwogCiAJCWlndF9z dWJ0ZXN0KCJoZWFkbGVzcyIpIHsKIAkJCS8qIFJlcXVpcmVzIG1hc3RlciBmb3IgY2hhbmdpbmcg ZGlzcGxheSBtb2RlcyAqLwotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZng= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Chris Wilson Date: Thu, 14 Mar 2019 14:19:21 +0000 Message-Id: <20190314141939.26246-7-chris@chris-wilson.co.uk> In-Reply-To: <20190314141939.26246-1-chris@chris-wilson.co.uk> References: <20190314141939.26246-1-chris@chris-wilson.co.uk> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 07/25] i915/gem_exec_nop: poll-sequential requires ordering between rings 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: intel-gfx@lists.freedesktop.org Cc: igt-dev@lists.freedesktop.org List-ID: SW4gb3JkZXIgdG8gY29ycmVjdGx5IHNlcmlhbGlzZSB0aGUgb3JkZXIgb2YgZXhlY3V0aW9uIGJl dHdlZW4gcmluZ3MsIHdlCm5lZWQgdG8gZmxhZyB0aGUgc2NyYXRjaCBhZGRyZXNzIGFzIGJlaW5n IHdyaXR0ZW4uIE1ha2UgaXQgc28uCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlz QGNocmlzLXdpbHNvbi5jby51az4KLS0tCiB0ZXN0cy9pOTE1L2dlbV9leGVjX25vcC5jIHwgMTUy ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiAxIGZpbGUgY2hhbmdlZCwg MTMzIGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5 MTUvZ2VtX2V4ZWNfbm9wLmMgYi90ZXN0cy9pOTE1L2dlbV9leGVjX25vcC5jCmluZGV4IDU5YTA4 YWQwOC4uYjkxYjRkMGY2IDEwMDY0NAotLS0gYS90ZXN0cy9pOTE1L2dlbV9leGVjX25vcC5jCisr KyBiL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfbm9wLmMKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMg ZG91YmxlIG5vcF9vbl9yaW5nKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1bnNpZ25lZCByaW5n X2lkLAogCXJldHVybiBlbGFwc2VkKCZzdGFydCwgJm5vdyk7CiB9CiAKLXN0YXRpYyB2b2lkIHBv bGxfcmluZyhpbnQgZmQsIHVuc2lnbmVkIHJpbmcsIGNvbnN0IGNoYXIgKm5hbWUsIGludCB0aW1l b3V0KQorc3RhdGljIHZvaWQgcG9sbF9yaW5nKGludCBmZCwgdW5zaWduZWQgZW5naW5lLCBjb25z dCBjaGFyICpuYW1lLCBpbnQgdGltZW91dCkKIHsKIAljb25zdCBpbnQgZ2VuID0gaW50ZWxfZ2Vu KGludGVsX2dldF9kcm1fZGV2aWQoZmQpKTsKIAljb25zdCB1aW50MzJfdCBNSV9BUkJfQ0hLID0g MHg1IDw8IDIzOwpAQCAtMTEyLDI5ICsxMTIsMTcgQEAgc3RhdGljIHZvaWQgcG9sbF9yaW5nKGlu dCBmZCwgdW5zaWduZWQgcmluZywgY29uc3QgY2hhciAqbmFtZSwgaW50IHRpbWVvdXQpCiAJc3Ry dWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqOwogCXN0cnVjdCBkcm1faTkxNV9nZW1f cmVsb2NhdGlvbl9lbnRyeSByZWxvY1s0XSwgKnI7CiAJdWludDMyX3QgKmJiZVsyXSwgKnN0YXRl LCAqYmF0Y2g7Ci0JdW5zaWduZWQgZW5naW5lc1sxNl0sIG5lbmdpbmUsIGZsYWdzOwogCXN0cnVj dCB0aW1lc3BlYyB0diA9IHt9OwogCXVuc2lnbmVkIGxvbmcgY3ljbGVzOworCXVuc2lnbmVkIGZs YWdzOwogCXVpbnQ2NF90IGVsYXBzZWQ7CiAKIAlmbGFncyA9IEk5MTVfRVhFQ19OT19SRUxPQzsK IAlpZiAoZ2VuID09IDQgfHwgZ2VuID09IDUpCiAJCWZsYWdzIHw9IEk5MTVfRVhFQ19TRUNVUkU7 CiAKLQluZW5naW5lID0gMDsKLQlpZiAocmluZyA9PSBBTExfRU5HSU5FUykgewotCQlmb3JfZWFj aF9waHlzaWNhbF9lbmdpbmUoZmQsIHJpbmcpIHsKLQkJCWlmICghZ2VtX2Nhbl9zdG9yZV9kd29y ZChmZCwgcmluZykpCi0JCQkJY29udGludWU7Ci0KLQkJCWVuZ2luZXNbbmVuZ2luZSsrXSA9IHJp bmc7Ci0JCX0KLQl9IGVsc2UgewotCQlnZW1fcmVxdWlyZV9yaW5nKGZkLCByaW5nKTsKLQkJaWd0 X3JlcXVpcmUoZ2VtX2Nhbl9zdG9yZV9kd29yZChmZCwgcmluZykpOwotCQllbmdpbmVzW25lbmdp bmUrK10gPSByaW5nOwotCX0KLQlpZ3RfcmVxdWlyZShuZW5naW5lKTsKKwlnZW1fcmVxdWlyZV9y aW5nKGZkLCBlbmdpbmUpOworCWlndF9yZXF1aXJlKGdlbV9jYW5fc3RvcmVfZHdvcmQoZmQsIGVu Z2luZSkpOwogCiAJbWVtc2V0KCZvYmosIDAsIHNpemVvZihvYmopKTsKIAlvYmouaGFuZGxlID0g Z2VtX2NyZWF0ZShmZCwgNDA5Nik7CkBAIC0xOTgsNyArMTg2LDcgQEAgc3RhdGljIHZvaWQgcG9s bF9yaW5nKGludCBmZCwgdW5zaWduZWQgcmluZywgY29uc3QgY2hhciAqbmFtZSwgaW50IHRpbWVv dXQpCiAJbWVtc2V0KCZleGVjYnVmLCAwLCBzaXplb2YoZXhlY2J1ZikpOwogCWV4ZWNidWYuYnVm ZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJm9iaik7CiAJZXhlY2J1Zi5idWZmZXJfY291bnQg PSAxOwotCWV4ZWNidWYuZmxhZ3MgPSBlbmdpbmVzWzBdOworCWV4ZWNidWYuZmxhZ3MgPSBlbmdp bmUgfCBmbGFnczsKIAogCWN5Y2xlcyA9IDA7CiAJZG8gewpAQCAtMjA4LDcgKzE5Niw2IEBAIHN0 YXRpYyB2b2lkIHBvbGxfcmluZyhpbnQgZmQsIHVuc2lnbmVkIHJpbmcsIGNvbnN0IGNoYXIgKm5h bWUsIGludCB0aW1lb3V0KQogCQlleGVjYnVmLmJhdGNoX3N0YXJ0X29mZnNldCA9CiAJCQkoYmJl W2lkeF0gLSBiYXRjaCkgKiBzaXplb2YoKmJhdGNoKSAtIDY0OwogCi0JCWV4ZWNidWYuZmxhZ3Mg PSBlbmdpbmVzW2N5Y2xlcyAlIG5lbmdpbmVdIHwgZmxhZ3M7CiAJCWdlbV9leGVjYnVmKGZkLCAm ZXhlY2J1Zik7CiAKIAkJKmJiZVshaWR4XSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7CkBAIC0yMjcs NiArMjE0LDEzMyBAQCBzdGF0aWMgdm9pZCBwb2xsX3JpbmcoaW50IGZkLCB1bnNpZ25lZCByaW5n LCBjb25zdCBjaGFyICpuYW1lLCBpbnQgdGltZW91dCkKIAlnZW1fY2xvc2UoZmQsIG9iai5oYW5k bGUpOwogfQogCitzdGF0aWMgdm9pZCBwb2xsX3NlcXVlbnRpYWwoaW50IGZkLCBjb25zdCBjaGFy ICpuYW1lLCBpbnQgdGltZW91dCkKK3sKKwljb25zdCBpbnQgZ2VuID0gaW50ZWxfZ2VuKGludGVs X2dldF9kcm1fZGV2aWQoZmQpKTsKKwljb25zdCB1aW50MzJfdCBNSV9BUkJfQ0hLID0gMHg1IDw8 IDIzOworCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZjsKKwlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmpbMl07CisJc3RydWN0IGRybV9pOTE1X2dlbV9y ZWxvY2F0aW9uX2VudHJ5IHJlbG9jWzRdLCAqcjsKKwl1aW50MzJfdCAqYmJlWzJdLCAqc3RhdGUs ICpiYXRjaDsKKwl1bnNpZ25lZCBlbmdpbmVzWzE2XSwgbmVuZ2luZSwgZW5naW5lLCBmbGFnczsK KwlzdHJ1Y3QgdGltZXNwZWMgdHYgPSB7fTsKKwl1bnNpZ25lZCBsb25nIGN5Y2xlczsKKwl1aW50 NjRfdCBlbGFwc2VkOworCWJvb2wgY2FjaGVkOworCisJZmxhZ3MgPSBJOTE1X0VYRUNfTk9fUkVM T0M7CisJaWYgKGdlbiA9PSA0IHx8IGdlbiA9PSA1KQorCQlmbGFncyB8PSBJOTE1X0VYRUNfU0VD VVJFOworCisJbmVuZ2luZSA9IDA7CisJZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGZkLCBlbmdp bmUpIHsKKwkJaWYgKCFnZW1fY2FuX3N0b3JlX2R3b3JkKGZkLCBlbmdpbmUpKQorCQkJY29udGlu dWU7CisKKwkJZW5naW5lc1tuZW5naW5lKytdID0gZW5naW5lOworCX0KKwlpZ3RfcmVxdWlyZShu ZW5naW5lKTsKKworCW1lbXNldChvYmosIDAsIHNpemVvZihvYmopKTsKKwlvYmpbMF0uaGFuZGxl ID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7CisJb2JqWzBdLmZsYWdzID0gRVhFQ19PQkpFQ1RfV1JJ VEU7CisJY2FjaGVkID0gX19nZW1fc2V0X2NhY2hpbmcoZmQsIG9ialswXS5oYW5kbGUsIDEpID09 IDA7CisJb2JqWzFdLmhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOworCW9ialsxXS5yZWxv Y3NfcHRyID0gdG9fdXNlcl9wb2ludGVyKHJlbG9jKTsKKwlvYmpbMV0ucmVsb2NhdGlvbl9jb3Vu dCA9IEFSUkFZX1NJWkUocmVsb2MpOworCisJciA9IG1lbXNldChyZWxvYywgMCwgc2l6ZW9mKHJl bG9jKSk7CisJYmF0Y2ggPSBnZW1fbW1hcF9fd2MoZmQsIG9ialsxXS5oYW5kbGUsIDAsIDQwOTYs IFBST1RfV1JJVEUpOworCisJZm9yICh1bnNpZ25lZCBpbnQgc3RhcnRfb2Zmc2V0ID0gMDsKKwkg ICAgIHN0YXJ0X29mZnNldCA8PSAxMjg7CisJICAgICBzdGFydF9vZmZzZXQgKz0gMTI4KSB7CisJ CXVpbnQzMl90ICpiID0gYmF0Y2ggKyBzdGFydF9vZmZzZXQgLyBzaXplb2YoKmJhdGNoKTsKKwor CQlyLT50YXJnZXRfaGFuZGxlID0gb2JqWzBdLmhhbmRsZTsKKwkJci0+b2Zmc2V0ID0gKGIgLSBi YXRjaCArIDEpICogc2l6ZW9mKHVpbnQzMl90KTsKKwkJci0+ZGVsdGEgPSAwOworCQlyLT5yZWFk X2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fUkVOREVSOworCQlyLT53cml0ZV9kb21haW4gPSBJ OTE1X0dFTV9ET01BSU5fUkVOREVSOworCisJCSpiID0gTUlfU1RPUkVfRFdPUkRfSU1NIHwgKGdl biA8IDYgPyAxIDw8IDIyIDogMCk7CisJCWlmIChnZW4gPj0gOCkgeworCQkJKisrYiA9IHItPmRl bHRhOworCQkJKisrYiA9IDA7CisJCX0gZWxzZSBpZiAoZ2VuID49IDQpIHsKKwkJCXItPm9mZnNl dCArPSBzaXplb2YodWludDMyX3QpOworCQkJKisrYiA9IDA7CisJCQkqKytiID0gci0+ZGVsdGE7 CisJCX0gZWxzZSB7CisJCQkqYiAtPSAxOworCQkJKisrYiA9IHItPmRlbHRhOworCQl9CisJCSor K2IgPSBzdGFydF9vZmZzZXQgIT0gMDsKKwkJcisrOworCisJCWIgPSBiYXRjaCArIChzdGFydF9v ZmZzZXQgKyA2NCkgLyBzaXplb2YoKmJhdGNoKTsKKwkJYmJlW3N0YXJ0X29mZnNldCAhPSAwXSA9 IGI7CisJCSpiKysgPSBNSV9BUkJfQ0hLOworCisJCXItPnRhcmdldF9oYW5kbGUgPSBvYmpbMV0u aGFuZGxlOworCQlyLT5vZmZzZXQgPSAoYiAtIGJhdGNoICsgMSkgKiBzaXplb2YodWludDMyX3Qp OworCQlyLT5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fQ09NTUFORDsKKwkJci0+ZGVs dGEgPSBzdGFydF9vZmZzZXQgKyA2NDsKKwkJaWYgKGdlbiA+PSA4KSB7CisJCQkqYisrID0gTUlf QkFUQ0hfQlVGRkVSX1NUQVJUIHwgMSA8PCA4IHwgMTsKKwkJCSpiKysgPSByLT5kZWx0YTsKKwkJ CSpiKysgPSAwOworCQl9IGVsc2UgaWYgKGdlbiA+PSA2KSB7CisJCQkqYisrID0gTUlfQkFUQ0hf QlVGRkVSX1NUQVJUIHwgMSA8PCA4OworCQkJKmIrKyA9IHItPmRlbHRhOworCQl9IGVsc2Ugewor CQkJKmIrKyA9IE1JX0JBVENIX0JVRkZFUl9TVEFSVCB8IDIgPDwgNjsKKwkJCWlmIChnZW4gPCA0 KQorCQkJCXItPmRlbHRhIHw9IDE7CisJCQkqYisrID0gci0+ZGVsdGE7CisJCX0KKwkJcisrOwor CX0KKwlpZ3RfYXNzZXJ0KHIgPT0gcmVsb2MgKyBBUlJBWV9TSVpFKHJlbG9jKSk7CisKKwlpZiAo Y2FjaGVkKQorCQlzdGF0ZSA9IGdlbV9tbWFwX19jcHUoZmQsIG9ialswXS5oYW5kbGUsIDAsIDQw OTYsIFBST1RfUkVBRCk7CisJZWxzZQorCQlzdGF0ZSA9IGdlbV9tbWFwX193YyhmZCwgb2JqWzBd LmhhbmRsZSwgMCwgNDA5NiwgUFJPVF9SRUFEKTsKKworCW1lbXNldCgmZXhlY2J1ZiwgMCwgc2l6 ZW9mKGV4ZWNidWYpKTsKKwlleGVjYnVmLmJ1ZmZlcnNfcHRyID0gdG9fdXNlcl9wb2ludGVyKG9i aik7CisJZXhlY2J1Zi5idWZmZXJfY291bnQgPSBBUlJBWV9TSVpFKG9iaik7CisKKwljeWNsZXMg PSAwOworCWRvIHsKKwkJdW5zaWduZWQgaW50IGlkeCA9ICsrY3ljbGVzICYgMTsKKworCQkqYmJl W2lkeF0gPSBNSV9BUkJfQ0hLOworCQlleGVjYnVmLmJhdGNoX3N0YXJ0X29mZnNldCA9CisJCQko YmJlW2lkeF0gLSBiYXRjaCkgKiBzaXplb2YoKmJhdGNoKSAtIDY0OworCisJCWV4ZWNidWYuZmxh Z3MgPSBlbmdpbmVzW2N5Y2xlcyAlIG5lbmdpbmVdIHwgZmxhZ3M7CisJCWdlbV9leGVjYnVmKGZk LCAmZXhlY2J1Zik7CisKKwkJKmJiZVshaWR4XSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7CisJCV9f c3luY19zeW5jaHJvbml6ZSgpOworCisJCXdoaWxlIChSRUFEX09OQ0UoKnN0YXRlKSAhPSBpZHgp CisJCQk7CisJfSB3aGlsZSAoKGVsYXBzZWQgPSBpZ3RfbnNlY19lbGFwc2VkKCZ0dikpID4+IDMw IDwgdGltZW91dCk7CisJKmJiZVtjeWNsZXMgJiAxXSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7CisJ Z2VtX3N5bmMoZmQsIG9ialsxXS5oYW5kbGUpOworCisJaWd0X2luZm8oIiVzIGNvbXBsZXRlZCAl bGQgY3ljbGVzOiAlLjNmIHVzXG4iLAorCQkgbmFtZSwgY3ljbGVzLCBlbGFwc2VkKjFlLTMvY3lj bGVzKTsKKworCW11bm1hcChzdGF0ZSwgNDA5Nik7CisJbXVubWFwKGJhdGNoLCA0MDk2KTsKKwln ZW1fY2xvc2UoZmQsIG9ialsxXS5oYW5kbGUpOworCWdlbV9jbG9zZShmZCwgb2JqWzBdLmhhbmRs ZSk7Cit9CisKIHN0YXRpYyB2b2lkIHNpbmdsZShpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwKIAkJ ICAgdW5zaWduZWQgcmluZ19pZCwgY29uc3QgY2hhciAqcmluZ19uYW1lKQogewpAQCAtODEzLDcg KzkyNyw3IEBAIGlndF9tYWluCiAJCX0KIAogCQlpZ3Rfc3VidGVzdCgicG9sbC1zZXF1ZW50aWFs IikKLQkJCXBvbGxfcmluZyhkZXZpY2UsIEFMTF9FTkdJTkVTLCAiU2VxdWVudGlhbCIsIDIwKTsK KwkJCXBvbGxfc2VxdWVudGlhbChkZXZpY2UsICJTZXF1ZW50aWFsIiwgMjApOwogCiAJCWlndF9z dWJ0ZXN0KCJoZWFkbGVzcyIpIHsKIAkJCS8qIFJlcXVpcmVzIG1hc3RlciBmb3IgY2hhbmdpbmcg ZGlzcGxheSBtb2RlcyAqLwotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2lndC1kZXY=