From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2599872EF6 for ; Mon, 26 Jul 2021 20:01:11 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Mon, 26 Jul 2021 21:59:56 +0200 Message-Id: <20210726200026.4815-23-zbigniew.kempczynski@intel.com> In-Reply-To: <20210726200026.4815-1-zbigniew.kempczynski@intel.com> References: <20210726200026.4815-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v3 22/52] tests/gem_exec_store: Support gens without relocations 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 List-ID: RnJvbTogQW5kcnplaiBUdXJrbyA8YW5kcnplai50dXJrb0BsaW51eC5pbnRlbC5jb20+CgpXaXRo IHJlbG9jYXRpb25zIGRpc2FibGVkIG9uIG5ld2VyIGdlbmVyYXRpb25zCnRlc3RzIG11c3QgYXNz aWduIGFkZHJlc3NlcyB0byBvYmplY3RzIGJ5CnRoZW1zZWx2ZXMgaW5zdGVhZCBvZiByZWx5aW5n IG9uIHRoZSBkcml2ZXIuCgpTaWduZWQtb2ZmLWJ5OiBBbmRyemVqIFR1cmtvIDxhbmRyemVqLnR1 cmtvQGxpbnV4LmludGVsLmNvbT4KQ2M6IFpiaWduaWV3IEtlbXBjennFhHNraSA8emJpZ25pZXcu a2VtcGN6eW5za2lAaW50ZWwuY29tPgotLS0KIHRlc3RzL2k5MTUvZ2VtX2V4ZWNfc3RvcmUuYyB8 IDEzNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2Vk LCAxMDYgaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdGVzdHMv aTkxNS9nZW1fZXhlY19zdG9yZS5jIGIvdGVzdHMvaTkxNS9nZW1fZXhlY19zdG9yZS5jCmluZGV4 IDA3OThmNjFkNy4uMzhjNTk1ZTM0IDEwMDY0NAotLS0gYS90ZXN0cy9pOTE1L2dlbV9leGVjX3N0 b3JlLmMKKysrIGIvdGVzdHMvaTkxNS9nZW1fZXhlY19zdG9yZS5jCkBAIC0zNyw2ICszNyw5IEBA CiAKICNkZWZpbmUgRU5HSU5FX01BU0sgIChJOTE1X0VYRUNfUklOR19NQVNLIHwgSTkxNV9FWEVD X0JTRF9NQVNLKQogCisvKiBXaXRob3V0IGFsaWdubWVudCBkZXRlY3Rpb24gd2UgYXNzdW1lIHRo ZSB3b3JzdC1jYXNlIHNjZW5hcmlvLiAqLworI2RlZmluZSBBTElHTk1FTlQgKDEgPDwgMjEpCisK IHN0YXRpYyB2b2lkIHN0b3JlX2R3b3JkKGludCBmZCwgY29uc3QgaW50ZWxfY3R4X3QgKmN0eCwK IAkJCWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIHsKQEAgLTQ1LDYg KzQ4LDcgQEAgc3RhdGljIHZvaWQgc3RvcmVfZHdvcmQoaW50IGZkLCBjb25zdCBpbnRlbF9jdHhf dCAqY3R4LAogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSByZWxvYzsKIAlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGV4ZWNidWY7CiAJdWludDMyX3QgYmF0Y2hb MTZdOworCXVpbnQ2NF90IGFobmQ7CiAJaW50IGk7CiAKIAlpbnRlbF9kZXRlY3RfYW5kX2NsZWFy X21pc3NlZF9pbnRlcnJ1cHRzKGZkKTsKQEAgLTU2LDQzICs2MCw2MyBAQCBzdGF0aWMgdm9pZCBz dG9yZV9kd29yZChpbnQgZmQsIGNvbnN0IGludGVsX2N0eF90ICpjdHgsCiAJCWV4ZWNidWYuZmxh Z3MgfD0gSTkxNV9FWEVDX1NFQ1VSRTsKIAlleGVjYnVmLnJzdmQxID0gY3R4LT5pZDsKIAorCWFo bmQgPSBpbnRlbF9hbGxvY2F0b3Jfb3BlbihmZCwgMCwgSU5URUxfQUxMT0NBVE9SX1NJTVBMRSk7 CisKIAltZW1zZXQob2JqLCAwLCBzaXplb2Yob2JqKSk7CiAJb2JqWzBdLmhhbmRsZSA9IGdlbV9j cmVhdGUoZmQsIDQwOTYpOworCW9ialswXS5vZmZzZXQgPSBpbnRlbF9hbGxvY2F0b3JfYWxsb2Mo YWhuZCwgb2JqWzBdLmhhbmRsZSwKKwkJCQkJICAgICAgNDA5NiwgQUxJR05NRU5UKTsKKwlvYmpb MF0ub2Zmc2V0ID0gQ0FOT05JQ0FMKG9ialswXS5vZmZzZXQpOworCW9ialswXS5mbGFncyA9IEVY RUNfT0JKRUNUX1NVUFBPUlRTXzQ4Ql9BRERSRVNTIHwgRVhFQ19PQkpFQ1RfV1JJVEU7CiAJb2Jq WzFdLmhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOworCW9ialsxXS5vZmZzZXQgPSBpbnRl bF9hbGxvY2F0b3JfYWxsb2MoYWhuZCwgb2JqWzFdLmhhbmRsZSwKKwkJCQkJICAgICAgNDA5Niwg QUxJR05NRU5UKTsKKwlvYmpbMV0ub2Zmc2V0ID0gQ0FOT05JQ0FMKG9ialsxXS5vZmZzZXQpOwor CW9ialsxXS5mbGFncyA9IEVYRUNfT0JKRUNUX1NVUFBPUlRTXzQ4Ql9BRERSRVNTOwogCiAJbWVt c2V0KCZyZWxvYywgMCwgc2l6ZW9mKHJlbG9jKSk7CiAJcmVsb2MudGFyZ2V0X2hhbmRsZSA9IG9i alswXS5oYW5kbGU7Ci0JcmVsb2MucHJlc3VtZWRfb2Zmc2V0ID0gMDsKKwlyZWxvYy5wcmVzdW1l ZF9vZmZzZXQgPSBvYmpbMF0ub2Zmc2V0OwogCXJlbG9jLm9mZnNldCA9IHNpemVvZih1aW50MzJf dCk7CiAJcmVsb2MuZGVsdGEgPSAwOwogCXJlbG9jLnJlYWRfZG9tYWlucyA9IEk5MTVfR0VNX0RP TUFJTl9JTlNUUlVDVElPTjsKIAlyZWxvYy53cml0ZV9kb21haW4gPSBJOTE1X0dFTV9ET01BSU5f SU5TVFJVQ1RJT047Ci0Jb2JqWzFdLnJlbG9jc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJnJlbG9j KTsKLQlvYmpbMV0ucmVsb2NhdGlvbl9jb3VudCA9IDE7CisKKwlpZiAoZ2VtX2hhc19yZWxvY2F0 aW9ucyhmZCkpIHsKKwkJb2JqWzFdLnJlbG9jc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJnJlbG9j KTsKKwkJb2JqWzFdLnJlbG9jYXRpb25fY291bnQgPSAxOworCX0gZWxzZSB7CisJCW9ialswXS5m bGFncyB8PSBFWEVDX09CSkVDVF9QSU5ORUQ7CisJCW9ialsxXS5mbGFncyB8PSBFWEVDX09CSkVD VF9QSU5ORUQ7CisJCWV4ZWNidWYuZmxhZ3MgfD0gSTkxNV9FWEVDX05PX1JFTE9DOworCX0KIAog CWkgPSAwOwogCWJhdGNoW2ldID0gTUlfU1RPUkVfRFdPUkRfSU1NIHwgKGdlbiA8IDYgPyAxIDw8 IDIyIDogMCk7CiAJaWYgKGdlbiA+PSA4KSB7Ci0JCWJhdGNoWysraV0gPSAwOwotCQliYXRjaFsr K2ldID0gMDsKKwkJYmF0Y2hbKytpXSA9IG9ialswXS5vZmZzZXQ7CisJCWJhdGNoWysraV0gPSBv YmpbMF0ub2Zmc2V0ID4+IDMyOwogCX0gZWxzZSBpZiAoZ2VuID49IDQpIHsKIAkJYmF0Y2hbKytp XSA9IDA7Ci0JCWJhdGNoWysraV0gPSAwOworCQliYXRjaFsrK2ldID0gb2JqWzBdLm9mZnNldDsK IAkJcmVsb2Mub2Zmc2V0ICs9IHNpemVvZih1aW50MzJfdCk7CiAJfSBlbHNlIHsKIAkJYmF0Y2hb aV0tLTsKLQkJYmF0Y2hbKytpXSA9IDA7CisJCWJhdGNoWysraV0gPSBvYmpbMF0ub2Zmc2V0Owog CX0KIAliYXRjaFsrK2ldID0gMHhjMGZmZWU7CiAJYmF0Y2hbKytpXSA9IE1JX0JBVENIX0JVRkZF Ul9FTkQ7CiAJZ2VtX3dyaXRlKGZkLCBvYmpbMV0uaGFuZGxlLCAwLCBiYXRjaCwgc2l6ZW9mKGJh dGNoKSk7CiAJZ2VtX2V4ZWNidWYoZmQsICZleGVjYnVmKTsKIAlnZW1fY2xvc2UoZmQsIG9ialsx XS5oYW5kbGUpOworCWludGVsX2FsbG9jYXRvcl9mcmVlKGFobmQsIG9ialsxXS5oYW5kbGUpOwog CiAJZ2VtX3JlYWQoZmQsIG9ialswXS5oYW5kbGUsIDAsIGJhdGNoLCBzaXplb2YoYmF0Y2gpKTsK IAlnZW1fY2xvc2UoZmQsIG9ialswXS5oYW5kbGUpOworCWludGVsX2FsbG9jYXRvcl9mcmVlKGFo bmQsIG9ialswXS5oYW5kbGUpOwogCWlndF9hc3NlcnRfZXEoKmJhdGNoLCAweGMwZmZlZSk7CiAJ aWd0X2Fzc2VydF9lcShpbnRlbF9kZXRlY3RfYW5kX2NsZWFyX21pc3NlZF9pbnRlcnJ1cHRzKGZk KSwgMCk7CisJaW50ZWxfYWxsb2NhdG9yX2Nsb3NlKGFobmQpOwogfQogCiAjZGVmaW5lIFBBR0VT IDEKQEAgLTEwNiw3ICsxMzAsOSBAQCBzdGF0aWMgdm9pZCBzdG9yZV9jYWNoZWxpbmVzKGludCBm ZCwgY29uc3QgaW50ZWxfY3R4X3QgKmN0eCwKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZm ZXIyIGV4ZWNidWY7CiAjZGVmaW5lIE5DQUNIRUxJTkVTICg0MDk2LzY0KQogCXVpbnQzMl90ICpi YXRjaDsKKwl1aW50NjRfdCBhaG5kLCByZWxvY192YWx1ZTsKIAlpbnQgaTsKKwlib29sIGRvX3Jl bG9jcyA9IGdlbV9oYXNfcmVsb2NhdGlvbnMoZmQpOwogCiAJcmVsb2MgPSBjYWxsb2MoTkNBQ0hF TElORVMsIHNpemVvZigqcmVsb2MpKTsKIAlpZ3RfYXNzZXJ0KHJlbG9jKTsKQEAgLTExOSwxMiAr MTQ1LDI1IEBAIHN0YXRpYyB2b2lkIHN0b3JlX2NhY2hlbGluZXMoaW50IGZkLCBjb25zdCBpbnRl bF9jdHhfdCAqY3R4LAogCQlleGVjYnVmLmZsYWdzIHw9IEk5MTVfRVhFQ19TRUNVUkU7CiAJZXhl Y2J1Zi5yc3ZkMSA9IGN0eC0+aWQ7CiAKKwlhaG5kID0gaW50ZWxfYWxsb2NhdG9yX29wZW4oZmQs IDAsIElOVEVMX0FMTE9DQVRPUl9TSU1QTEUpOwogCW9iaiA9IGNhbGxvYyhleGVjYnVmLmJ1ZmZl cl9jb3VudCwgc2l6ZW9mKCpvYmopKTsKIAlpZ3RfYXNzZXJ0KG9iaik7Ci0JZm9yIChpID0gMDsg aSA8IGV4ZWNidWYuYnVmZmVyX2NvdW50OyBpKyspCisJZm9yIChpID0gMDsgaSA8IGV4ZWNidWYu YnVmZmVyX2NvdW50OyBpKyspIHsKIAkJb2JqW2ldLmhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIDQw OTYpOwotCW9ialtpLTFdLnJlbG9jc19wdHIgPSB0b191c2VyX3BvaW50ZXIocmVsb2MpOwotCW9i altpLTFdLnJlbG9jYXRpb25fY291bnQgPSBOQ0FDSEVMSU5FUzsKKwkJb2JqW2ldLm9mZnNldCA9 IGludGVsX2FsbG9jYXRvcl9hbGxvYyhhaG5kLCBvYmpbaV0uaGFuZGxlLAorCQkJCQkJICAgICAg NDA5NiwgQUxJR05NRU5UKTsKKwkJb2JqW2ldLm9mZnNldCA9IENBTk9OSUNBTChvYmpbaV0ub2Zm c2V0KTsKKwkJb2JqW2ldLmZsYWdzID0gRVhFQ19PQkpFQ1RfU1VQUE9SVFNfNDhCX0FERFJFU1Mg fAorCQkJICAgICAgIChkb19yZWxvY3MgPyAwIDogRVhFQ19PQkpFQ1RfUElOTkVEKTsKKwkJaWYg KGkgKyAxIDwgZXhlY2J1Zi5idWZmZXJfY291bnQpCisJCQlvYmpbaV0uZmxhZ3MgfD0gRVhFQ19P QkpFQ1RfV1JJVEU7CisJfQorCWlmIChkb19yZWxvY3MpIHsKKwkJb2JqW2ktMV0ucmVsb2NzX3B0 ciA9IHRvX3VzZXJfcG9pbnRlcihyZWxvYyk7CisJCW9ialtpLTFdLnJlbG9jYXRpb25fY291bnQg PSBOQ0FDSEVMSU5FUzsKKwl9IGVsc2UgeworCQlleGVjYnVmLmZsYWdzIHw9IEk5MTVfRVhFQ19O T19SRUxPQzsKKwl9CiAJZXhlY2J1Zi5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihvYmop OwogCiAJYmF0Y2ggPSBnZW1fbW1hcF9fY3B1KGZkLCBvYmpbaS0xXS5oYW5kbGUsIDAsIDQwOTYs IFBST1RfV1JJVEUpOwpAQCAtMTMyLDIzICsxNzEsMjQgQEAgc3RhdGljIHZvaWQgc3RvcmVfY2Fj aGVsaW5lcyhpbnQgZmQsIGNvbnN0IGludGVsX2N0eF90ICpjdHgsCiAJaSA9IDA7CiAJZm9yICh1 bnNpZ25lZCBuID0gMDsgbiA8IE5DQUNIRUxJTkVTOyBuKyspIHsKIAkJcmVsb2Nbbl0udGFyZ2V0 X2hhbmRsZSA9IG9ialtuICUgKGV4ZWNidWYuYnVmZmVyX2NvdW50LTEpXS5oYW5kbGU7Ci0JCXJl bG9jW25dLnByZXN1bWVkX29mZnNldCA9IC0xOworCQlyZWxvY1tuXS5wcmVzdW1lZF9vZmZzZXQg PSBvYmpbbiAlIChleGVjYnVmLmJ1ZmZlcl9jb3VudC0xKV0ub2Zmc2V0OwogCQlyZWxvY1tuXS5v ZmZzZXQgPSAoaSArIDEpKnNpemVvZih1aW50MzJfdCk7CiAJCXJlbG9jW25dLmRlbHRhID0gNCAq IChuICogMTYgKyBuICUgMTYpOwogCQlyZWxvY1tuXS5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9E T01BSU5fSU5TVFJVQ1RJT047CiAJCXJlbG9jW25dLndyaXRlX2RvbWFpbiA9IEk5MTVfR0VNX0RP TUFJTl9JTlNUUlVDVElPTjsKKwkJcmVsb2NfdmFsdWUgPSBDQU5PTklDQUwocmVsb2Nbbl0ucHJl c3VtZWRfb2Zmc2V0ICsgcmVsb2Nbbl0uZGVsdGEpOwogCiAJCWJhdGNoW2ldID0gTUlfU1RPUkVf RFdPUkRfSU1NIHwgKGdlbiA8IDYgPyAxIDw8IDIyIDogMCk7CiAJCWlmIChnZW4gPj0gOCkgewot CQkJYmF0Y2hbKytpXSA9IDA7Ci0JCQliYXRjaFsrK2ldID0gMDsKKwkJCWJhdGNoWysraV0gPSBy ZWxvY192YWx1ZTsKKwkJCWJhdGNoWysraV0gPSByZWxvY192YWx1ZSA+PiAzMjsKIAkJfSBlbHNl IGlmIChnZW4gPj0gNCkgewogCQkJYmF0Y2hbKytpXSA9IDA7Ci0JCQliYXRjaFsrK2ldID0gMDsK KwkJCWJhdGNoWysraV0gPSByZWxvY192YWx1ZTsKIAkJCXJlbG9jW25dLm9mZnNldCArPSBzaXpl b2YodWludDMyX3QpOwogCQl9IGVsc2UgewogCQkJYmF0Y2hbaV0tLTsKLQkJCWJhdGNoWysraV0g PSAwOworCQkJYmF0Y2hbKytpXSA9IHJlbG9jX3ZhbHVlOwogCQl9CiAJCWJhdGNoWysraV0gPSBu IHwgfm4gPDwgMTY7CiAJCWkrKzsKQEAgLTE2OCwxMSArMjA4LDE0IEBAIHN0YXRpYyB2b2lkIHN0 b3JlX2NhY2hlbGluZXMoaW50IGZkLCBjb25zdCBpbnRlbF9jdHhfdCAqY3R4LAogCX0KIAlmcmVl KHJlbG9jKTsKIAotCWZvciAodW5zaWduZWQgbiA9IDA7IG4gPCBleGVjYnVmLmJ1ZmZlcl9jb3Vu dDsgbisrKQorCWZvciAodW5zaWduZWQgbiA9IDA7IG4gPCBleGVjYnVmLmJ1ZmZlcl9jb3VudDsg bisrKSB7CiAJCWdlbV9jbG9zZShmZCwgb2JqW25dLmhhbmRsZSk7CisJCWludGVsX2FsbG9jYXRv cl9mcmVlKGFobmQsIG9ialtuXS5oYW5kbGUpOworCX0KIAlmcmVlKG9iaik7CiAKIAlpZ3RfYXNz ZXJ0X2VxKGludGVsX2RldGVjdF9hbmRfY2xlYXJfbWlzc2VkX2ludGVycnVwdHMoZmQpLCAwKTsK KwlpbnRlbF9hbGxvY2F0b3JfY2xvc2UoYWhuZCk7CiB9CiAKIHN0YXRpYyB2b2lkIHN0b3JlX2Fs bChpbnQgZmQsIGNvbnN0IGludGVsX2N0eF90ICpjdHgpCkBAIC0xODQsMTAgKzIyNywxMSBAQCBz dGF0aWMgdm9pZCBzdG9yZV9hbGwoaW50IGZkLCBjb25zdCBpbnRlbF9jdHhfdCAqY3R4KQogCXN0 cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZjsKIAl1bnNpZ25lZCAqZW5naW5l cywgKnBlcm11dGVkOwogCXVpbnQzMl90IGJhdGNoWzE2XTsKLQl1aW50NjRfdCBvZmZzZXQ7CisJ dWludDY0X3Qgb2Zmc2V0LCBhaG5kLCByZWxvY192YWx1ZTsKIAl1bnNpZ25lZCBuZW5naW5lOwot CWludCB2YWx1ZTsKKwlpbnQgdmFsdWUsIGFkZHJlc3M7CiAJaW50IGksIGo7CisJYm9vbCBkb19y ZWxvY3MgPSBnZW1faGFzX3JlbG9jYXRpb25zKGZkKTsKIAogCW5lbmdpbmUgPSAwOwogCWZvcl9l YWNoX2N0eF9lbmdpbmUoZmQsIGN0eCwgZW5naW5lKSB7CkBAIC0yMTMsMjQgKzI1Nyw0MSBAQCBz dGF0aWMgdm9pZCBzdG9yZV9hbGwoaW50IGZkLCBjb25zdCBpbnRlbF9jdHhfdCAqY3R4KQogCQll eGVjYnVmLmZsYWdzIHw9IEk5MTVfRVhFQ19TRUNVUkU7CiAJZXhlY2J1Zi5yc3ZkMSA9IGN0eC0+ aWQ7CiAKKwlhaG5kID0gaW50ZWxfYWxsb2NhdG9yX29wZW4oZmQsIDAsIElOVEVMX0FMTE9DQVRP Ul9TSU1QTEUpOworCiAJbWVtc2V0KG9iaiwgMCwgc2l6ZW9mKG9iaikpOwogCW9ialswXS5oYW5k bGUgPSBnZW1fY3JlYXRlKGZkLCBuZW5naW5lKnNpemVvZih1aW50MzJfdCkpOworCW9ialswXS5v ZmZzZXQgPSBpbnRlbF9hbGxvY2F0b3JfYWxsb2MoYWhuZCwgb2JqWzBdLmhhbmRsZSwKKwkJCQkJ ICAgICAgbmVuZ2luZSpzaXplb2YodWludDMyX3QpLCBBTElHTk1FTlQpOworCW9ialswXS5mbGFn cyA9IEVYRUNfT0JKRUNUX1NVUFBPUlRTXzQ4Ql9BRERSRVNTIHwgRVhFQ19PQkpFQ1RfV1JJVEU7 CisJb2JqWzBdLm9mZnNldCA9IENBTk9OSUNBTChvYmpbMF0ub2Zmc2V0KTsKIAlvYmpbMV0uaGFu ZGxlID0gZ2VtX2NyZWF0ZShmZCwgMipuZW5naW5lKnNpemVvZihiYXRjaCkpOwotCW9ialsxXS5y ZWxvY2F0aW9uX2NvdW50ID0gMTsKKwlvYmpbMV0ub2Zmc2V0ID0gaW50ZWxfYWxsb2NhdG9yX2Fs bG9jKGFobmQsIG9ialsxXS5oYW5kbGUsCisJCQkJCSAgICAgIG5lbmdpbmUqc2l6ZW9mKHVpbnQz Ml90KSwgQUxJR05NRU5UKTsKKwlvYmpbMV0ub2Zmc2V0ID0gQ0FOT05JQ0FMKG9ialsxXS5vZmZz ZXQpOworCW9ialsxXS5mbGFncyB8PSBFWEVDX09CSkVDVF9TVVBQT1JUU180OEJfQUREUkVTUzsK KworCWlmIChkb19yZWxvY3MpIHsKKwkJb2JqWzFdLnJlbG9jYXRpb25fY291bnQgPSAxOworCX0g ZWxzZSB7CisJCW9ialswXS5mbGFncyB8PSBFWEVDX09CSkVDVF9QSU5ORUQ7CisJCW9ialsxXS5m bGFncyB8PSBFWEVDX09CSkVDVF9QSU5ORUQ7CisJCWV4ZWNidWYuZmxhZ3MgfD0gSTkxNV9FWEVD X05PX1JFTE9DOworCX0KIAogCW9mZnNldCA9IHNpemVvZih1aW50MzJfdCk7CiAJaSA9IDA7CiAJ YmF0Y2hbaV0gPSBNSV9TVE9SRV9EV09SRF9JTU0gfCAoZ2VuIDwgNiA/IDEgPDwgMjIgOiAwKTsK IAlpZiAoZ2VuID49IDgpIHsKLQkJYmF0Y2hbKytpXSA9IDA7CisJCWJhdGNoW2FkZHJlc3MgPSAr K2ldID0gMDsKIAkJYmF0Y2hbKytpXSA9IDA7CiAJfSBlbHNlIGlmIChnZW4gPj0gNCkgewogCQli YXRjaFsrK2ldID0gMDsKLQkJYmF0Y2hbKytpXSA9IDA7CisJCWJhdGNoW2FkZHJlc3MgPSArK2ld ID0gMDsKIAkJb2Zmc2V0ICs9IHNpemVvZih1aW50MzJfdCk7CiAJfSBlbHNlIHsKIAkJYmF0Y2hb aV0tLTsKLQkJYmF0Y2hbKytpXSA9IDA7CisJCWJhdGNoW2FkZHJlc3MgPSArK2ldID0gMDsKIAl9 CiAJYmF0Y2hbdmFsdWUgPSArK2ldID0gMHhjMGZmZWU7CiAJYmF0Y2hbKytpXSA9IE1JX0JBVENI X0JVRkZFUl9FTkQ7CkBAIC0yNDYsMTIgKzMwNywxNyBAQCBzdGF0aWMgdm9pZCBzdG9yZV9hbGwo aW50IGZkLCBjb25zdCBpbnRlbF9jdHhfdCAqY3R4KQogCiAJCWogPSAyKm5lbmdpbmU7CiAJCXJl bG9jW2pdLnRhcmdldF9oYW5kbGUgPSBvYmpbMF0uaGFuZGxlOwotCQlyZWxvY1tqXS5wcmVzdW1l ZF9vZmZzZXQgPSB+MDsKKwkJcmVsb2Nbal0ucHJlc3VtZWRfb2Zmc2V0ID0gb2JqWzBdLm9mZnNl dDsKIAkJcmVsb2Nbal0ub2Zmc2V0ID0gaipzaXplb2YoYmF0Y2gpICsgb2Zmc2V0OwogCQlyZWxv Y1tqXS5kZWx0YSA9IG5lbmdpbmUqc2l6ZW9mKHVpbnQzMl90KTsKIAkJcmVsb2Nbal0ucmVhZF9k b21haW5zID0gSTkxNV9HRU1fRE9NQUlOX0lOU1RSVUNUSU9OOwogCQlyZWxvY1tqXS53cml0ZV9k b21haW4gPSBJOTE1X0dFTV9ET01BSU5fSU5TVFJVQ1RJT047Ci0JCW9ialsxXS5yZWxvY3NfcHRy ID0gdG9fdXNlcl9wb2ludGVyKCZyZWxvY1tqXSk7CisJCXJlbG9jX3ZhbHVlID0gQ0FOT05JQ0FM KG9ialswXS5vZmZzZXQgKyBuZW5naW5lKnNpemVvZih1aW50MzJfdCkpOworCQliYXRjaFthZGRy ZXNzXSA9IHJlbG9jX3ZhbHVlOworCQlpZiAoZ2VuID49IDgpCisJCQliYXRjaFthZGRyZXNzICsg MV0gPSByZWxvY192YWx1ZSA+PiAzMjsKKwkJaWYgKGRvX3JlbG9jcykKKwkJCW9ialsxXS5yZWxv Y3NfcHRyID0gdG9fdXNlcl9wb2ludGVyKCZyZWxvY1tqXSk7CiAKIAkJYmF0Y2hbdmFsdWVdID0g MHhkZWFkYmVlZjsKIAkJZ2VtX3dyaXRlKGZkLCBvYmpbMV0uaGFuZGxlLCBqKnNpemVvZihiYXRj aCksCkBAIC0yNjEsMTIgKzMyNywxNyBAQCBzdGF0aWMgdm9pZCBzdG9yZV9hbGwoaW50IGZkLCBj b25zdCBpbnRlbF9jdHhfdCAqY3R4KQogCiAJCWogPSAyKm5lbmdpbmUgKyAxOwogCQlyZWxvY1tq XS50YXJnZXRfaGFuZGxlID0gb2JqWzBdLmhhbmRsZTsKLQkJcmVsb2Nbal0ucHJlc3VtZWRfb2Zm c2V0ID0gfjA7CisJCXJlbG9jW2pdLnByZXN1bWVkX29mZnNldCA9IG9ialswXS5vZmZzZXQ7CiAJ CXJlbG9jW2pdLm9mZnNldCA9IGoqc2l6ZW9mKGJhdGNoKSArIG9mZnNldDsKIAkJcmVsb2Nbal0u ZGVsdGEgPSBuZW5naW5lKnNpemVvZih1aW50MzJfdCk7CiAJCXJlbG9jW2pdLnJlYWRfZG9tYWlu cyA9IEk5MTVfR0VNX0RPTUFJTl9JTlNUUlVDVElPTjsKIAkJcmVsb2Nbal0ud3JpdGVfZG9tYWlu ID0gSTkxNV9HRU1fRE9NQUlOX0lOU1RSVUNUSU9OOwotCQlvYmpbMV0ucmVsb2NzX3B0ciA9IHRv X3VzZXJfcG9pbnRlcigmcmVsb2Nbal0pOworCQlyZWxvY192YWx1ZSA9IENBTk9OSUNBTChvYmpb MF0ub2Zmc2V0ICsgbmVuZ2luZSpzaXplb2YodWludDMyX3QpKTsKKwkJYmF0Y2hbYWRkcmVzc10g PSByZWxvY192YWx1ZTsKKwkJaWYgKGdlbiA+PSA4KQorCQkJYmF0Y2hbYWRkcmVzcyArIDFdID0g cmVsb2NfdmFsdWUgPj4gMzI7CisJCWlmIChkb19yZWxvY3MpCisJCQlvYmpbMV0ucmVsb2NzX3B0 ciA9IHRvX3VzZXJfcG9pbnRlcigmcmVsb2Nbal0pOwogCiAJCWJhdGNoW3ZhbHVlXSA9IG5lbmdp bmU7CiAJCWdlbV93cml0ZShmZCwgb2JqWzFdLmhhbmRsZSwgaipzaXplb2YoYmF0Y2gpLApAQCAt Mjc5LDMwICszNTAsMzcgQEAgc3RhdGljIHZvaWQgc3RvcmVfYWxsKGludCBmZCwgY29uc3QgaW50 ZWxfY3R4X3QgKmN0eCkKIAlnZW1fc3luYyhmZCwgb2JqWzFdLmhhbmRsZSk7CiAKIAlmb3IgKGkg PSAwOyBpIDwgbmVuZ2luZTsgaSsrKSB7Ci0JCW9ialsxXS5yZWxvY3NfcHRyID0gdG9fdXNlcl9w b2ludGVyKCZyZWxvY1syKmldKTsKIAkJZXhlY2J1Zi5iYXRjaF9zdGFydF9vZmZzZXQgPSAyKmkq c2l6ZW9mKGJhdGNoKTsKIAkJbWVtY3B5KHBlcm11dGVkLCBlbmdpbmVzLCBuZW5naW5lKnNpemVv ZihlbmdpbmVzWzBdKSk7CiAJCWlndF9wZXJtdXRlX2FycmF5KHBlcm11dGVkLCBuZW5naW5lLCBp Z3RfZXhjaGFuZ2VfaW50KTsKKwkJaWYgKGRvX3JlbG9jcykKKwkJCW9ialsxXS5yZWxvY3NfcHRy ID0gdG9fdXNlcl9wb2ludGVyKCZyZWxvY1syKmldKTsKKwogCQlmb3IgKGogPSAwOyBqIDwgbmVu Z2luZTsgaisrKSB7CiAJCQlleGVjYnVmLmZsYWdzICY9IH5FTkdJTkVfTUFTSzsKIAkJCWV4ZWNi dWYuZmxhZ3MgfD0gcGVybXV0ZWRbal07CiAJCQlnZW1fZXhlY2J1ZihmZCwgJmV4ZWNidWYpOwog CQl9Ci0JCW9ialsxXS5yZWxvY3NfcHRyID0gdG9fdXNlcl9wb2ludGVyKCZyZWxvY1syKmkrMV0p OwogCQlleGVjYnVmLmJhdGNoX3N0YXJ0X29mZnNldCA9ICgyKmkrMSkqc2l6ZW9mKGJhdGNoKTsK IAkJZXhlY2J1Zi5mbGFncyAmPSB+RU5HSU5FX01BU0s7CiAJCWV4ZWNidWYuZmxhZ3MgfD0gZW5n aW5lc1tpXTsKKwkJaWYgKGRvX3JlbG9jcykKKwkJCW9ialsxXS5yZWxvY3NfcHRyID0gdG9fdXNl cl9wb2ludGVyKCZyZWxvY1syKmkrMV0pOworCiAJCWdlbV9leGVjYnVmKGZkLCAmZXhlY2J1Zik7 CiAJfQogCWdlbV9jbG9zZShmZCwgb2JqWzFdLmhhbmRsZSk7CisJaW50ZWxfYWxsb2NhdG9yX2Zy ZWUoYWhuZCwgb2JqWzFdLmhhbmRsZSk7CiAKIAlnZW1fcmVhZChmZCwgb2JqWzBdLmhhbmRsZSwg MCwgZW5naW5lcywgbmVuZ2luZSpzaXplb2YoZW5naW5lc1swXSkpOwogCWdlbV9jbG9zZShmZCwg b2JqWzBdLmhhbmRsZSk7CisJaW50ZWxfYWxsb2NhdG9yX2ZyZWUoYWhuZCwgb2JqWzBdLmhhbmRs ZSk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbmVuZ2luZTsgaSsrKQogCQlpZ3RfYXNzZXJ0X2VxX3Uz MihlbmdpbmVzW2ldLCBpKTsKIAlpZ3RfYXNzZXJ0X2VxKGludGVsX2RldGVjdF9hbmRfY2xlYXJf bWlzc2VkX2ludGVycnVwdHMoZmQpLCAwKTsKIAorCWludGVsX2FsbG9jYXRvcl9jbG9zZShhaG5k KTsKIAlmcmVlKHBlcm11dGVkKTsKIAlmcmVlKGVuZ2luZXMpOwogCWZyZWUocmVsb2MpOwotLSAK Mi4yNi4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpp Z3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK