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 B151B6E02D for ; Wed, 12 May 2021 05:40:42 +0000 (UTC) From: Andrzej Turko Date: Wed, 12 May 2021 07:40:10 +0200 Message-Id: <20210512054010.5756-3-andrzej.turko@linux.intel.com> In-Reply-To: <20210512054010.5756-2-andrzej.turko@linux.intel.com> References: <20210512054010.5756-2-andrzej.turko@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 2/2] tests/i915/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: V2l0aCByZWxvY2F0aW9ucyBkaXNhYmxlZCBvbiBuZXdlciBnZW5lcmF0aW9ucwp0ZXN0cyBtdXN0 IGFzc2lnbiBhZGRyZXNzZXMgdG8gb2JqZWN0cyBieQp0aGVtc2VsdmVzIGluc3RlYWQgb2YgcmVs eWluZyBvbiB0aGUgZHJpdmVyLgoKU2lnbmVkLW9mZi1ieTogQW5kcnplaiBUdXJrbyA8YW5kcnpl ai50dXJrb0BsaW51eC5pbnRlbC5jb20+CkNjOiBaYmlnbmlldyBLZW1wY3p5xYRza2kgPHpiaWdu aWV3LmtlbXBjenluc2tpQGludGVsLmNvbT4KLS0tCiB0ZXN0cy9pOTE1L2dlbV9leGVjX3N0b3Jl LmMgfCAxOTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCiAxIGZpbGUgY2hh bmdlZCwgMTQ1IGluc2VydGlvbnMoKyksIDQ5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rl c3RzL2k5MTUvZ2VtX2V4ZWNfc3RvcmUuYyBiL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfc3RvcmUuYwpp bmRleCA3NzFlZTE2OTAuLjY3N2NmOGI5ZiAxMDA2NDQKLS0tIGEvdGVzdHMvaTkxNS9nZW1fZXhl Y19zdG9yZS5jCisrKyBiL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfc3RvcmUuYwpAQCAtMzYsNiArMzYs OSBAQAogCiAjZGVmaW5lIEVOR0lORV9NQVNLICAoSTkxNV9FWEVDX1JJTkdfTUFTSyB8IEk5MTVf RVhFQ19CU0RfTUFTSykKIAorLyogV2l0aG91dCBhbGlnbm1lbnQgZGV0ZWN0aW9uIHdlIGFzc3Vt ZSB0aGUgd29yc3QtY2FzZSBzY2VuYXJpby4gKi8KKyNkZWZpbmUgQUxJR05NRU5UICgxIDw8IDIx KQorCiBzdGF0aWMgdm9pZCBzdG9yZV9kd29yZChpbnQgZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9l eGVjdXRpb25fZW5naW5lMiAqZSkKIHsKIAljb25zdCB1bnNpZ25lZCBpbnQgZ2VuID0gaW50ZWxf Z2VuKGludGVsX2dldF9kcm1fZGV2aWQoZmQpKTsKQEAgLTQzLDcgKzQ2LDkgQEAgc3RhdGljIHZv aWQgc3RvcmVfZHdvcmQoaW50IGZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2lu ZTIgKmUpCiAJc3RydWN0IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9uX2VudHJ5IHJlbG9jOwogCXN0 cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZjsKIAl1aW50MzJfdCBiYXRjaFsx Nl07CisJdWludDY0X3QgYWhuZDsKIAlpbnQgaTsKKwlib29sIGRvX3JlbG9jcyA9IGdlbV9oYXNf cmVsb2NhdGlvbnMoZmQpOwogCiAJaW50ZWxfZGV0ZWN0X2FuZF9jbGVhcl9taXNzZWRfaW50ZXJy dXB0cyhmZCk7CiAJbWVtc2V0KCZleGVjYnVmLCAwLCBzaXplb2YoZXhlY2J1ZikpOwpAQCAtNTMs NDMgKzU4LDY0IEBAIHN0YXRpYyB2b2lkIHN0b3JlX2R3b3JkKGludCBmZCwgY29uc3Qgc3RydWN0 IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogCWlmIChnZW4gPiAzICYmIGdlbiA8IDYpCiAJ CWV4ZWNidWYuZmxhZ3MgfD0gSTkxNV9FWEVDX1NFQ1VSRTsKIAorCWFobmQgPSBpbnRlbF9hbGxv Y2F0b3Jfb3BlbihmZCwgMCwgSU5URUxfQUxMT0NBVE9SX1NJTVBMRSk7CisKIAltZW1zZXQob2Jq LCAwLCBzaXplb2Yob2JqKSk7CiAJb2JqWzBdLmhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIDQwOTYp OwogCW9ialsxXS5oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsKIAotCW1lbXNldCgmcmVs b2MsIDAsIHNpemVvZihyZWxvYykpOwotCXJlbG9jLnRhcmdldF9oYW5kbGUgPSBvYmpbMF0uaGFu ZGxlOwotCXJlbG9jLnByZXN1bWVkX29mZnNldCA9IDA7Ci0JcmVsb2Mub2Zmc2V0ID0gc2l6ZW9m KHVpbnQzMl90KTsKLQlyZWxvYy5kZWx0YSA9IDA7Ci0JcmVsb2MucmVhZF9kb21haW5zID0gSTkx NV9HRU1fRE9NQUlOX0lOU1RSVUNUSU9OOwotCXJlbG9jLndyaXRlX2RvbWFpbiA9IEk5MTVfR0VN X0RPTUFJTl9JTlNUUlVDVElPTjsKLQlvYmpbMV0ucmVsb2NzX3B0ciA9IHRvX3VzZXJfcG9pbnRl cigmcmVsb2MpOwotCW9ialsxXS5yZWxvY2F0aW9uX2NvdW50ID0gMTsKKwlpZiAoZG9fcmVsb2Nz KSB7CisJCW1lbXNldCgmcmVsb2MsIDAsIHNpemVvZihyZWxvYykpOworCQlyZWxvYy50YXJnZXRf aGFuZGxlID0gb2JqWzBdLmhhbmRsZTsKKwkJcmVsb2MucHJlc3VtZWRfb2Zmc2V0ID0gb2JqWzBd Lm9mZnNldDsKKwkJcmVsb2Mub2Zmc2V0ID0gc2l6ZW9mKHVpbnQzMl90KTsKKwkJcmVsb2MuZGVs dGEgPSAwOworCQlyZWxvYy5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fSU5TVFJVQ1RJ T047CisJCXJlbG9jLndyaXRlX2RvbWFpbiA9IEk5MTVfR0VNX0RPTUFJTl9JTlNUUlVDVElPTjsK KwkJb2JqWzFdLnJlbG9jc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJnJlbG9jKTsKKwkJb2JqWzFd LnJlbG9jYXRpb25fY291bnQgPSAxOworCX0gZWxzZSB7CisJCW9ialswXS5vZmZzZXQgPSBpbnRl bF9hbGxvY2F0b3JfYWxsb2MoYWhuZCwgb2JqWzBdLmhhbmRsZSwKKwkJCQkJCSAgICAgIDQwOTYs IEFMSUdOTUVOVCk7CisJCW9ialswXS5vZmZzZXQgPSBDQU5PTklDQUwob2JqWzBdLm9mZnNldCk7 CisJCW9ialswXS5mbGFncyB8PSBFWEVDX09CSkVDVF9TVVBQT1JUU180OEJfQUREUkVTUyB8CisJ CQkJRVhFQ19PQkpFQ1RfUElOTkVEIHwgRVhFQ19PQkpFQ1RfV1JJVEU7CisKKwkJb2JqWzFdLm9m ZnNldCA9IGludGVsX2FsbG9jYXRvcl9hbGxvYyhhaG5kLCBvYmpbMV0uaGFuZGxlLAorCQkJCQkJ ICAgICAgNDA5NiwgQUxJR05NRU5UKTsKKwkJb2JqWzFdLm9mZnNldCA9IENBTk9OSUNBTChvYmpb MV0ub2Zmc2V0KTsKKwkJb2JqWzFdLmZsYWdzIHw9IEVYRUNfT0JKRUNUX1NVUFBPUlRTXzQ4Ql9B RERSRVNTIHwKKwkJCQlFWEVDX09CSkVDVF9QSU5ORUQ7CisJfQogCiAJaSA9IDA7CiAJYmF0Y2hb aV0gPSBNSV9TVE9SRV9EV09SRF9JTU0gfCAoZ2VuIDwgNiA/IDEgPDwgMjIgOiAwKTsKIAlpZiAo Z2VuID49IDgpIHsKLQkJYmF0Y2hbKytpXSA9IDA7Ci0JCWJhdGNoWysraV0gPSAwOworCQliYXRj aFsrK2ldID0gb2JqWzBdLm9mZnNldDsKKwkJYmF0Y2hbKytpXSA9IG9ialswXS5vZmZzZXQgPj4g MzI7CiAJfSBlbHNlIGlmIChnZW4gPj0gNCkgewogCQliYXRjaFsrK2ldID0gMDsKLQkJYmF0Y2hb KytpXSA9IDA7CisJCWJhdGNoWysraV0gPSBvYmpbMF0ub2Zmc2V0OwogCQlyZWxvYy5vZmZzZXQg Kz0gc2l6ZW9mKHVpbnQzMl90KTsKIAl9IGVsc2UgewogCQliYXRjaFtpXS0tOwotCQliYXRjaFsr K2ldID0gMDsKKwkJYmF0Y2hbKytpXSA9IG9ialswXS5vZmZzZXQ7CiAJfQogCWJhdGNoWysraV0g PSAweGMwZmZlZTsKIAliYXRjaFsrK2ldID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsKIAlnZW1fd3Jp dGUoZmQsIG9ialsxXS5oYW5kbGUsIDAsIGJhdGNoLCBzaXplb2YoYmF0Y2gpKTsKKwogCWdlbV9l eGVjYnVmKGZkLCAmZXhlY2J1Zik7CisKIAlnZW1fY2xvc2UoZmQsIG9ialsxXS5oYW5kbGUpOwor CWludGVsX2FsbG9jYXRvcl9mcmVlKGFobmQsIG9ialsxXS5oYW5kbGUpOwogCiAJZ2VtX3JlYWQo ZmQsIG9ialswXS5oYW5kbGUsIDAsIGJhdGNoLCBzaXplb2YoYmF0Y2gpKTsKIAlnZW1fY2xvc2Uo ZmQsIG9ialswXS5oYW5kbGUpOworCWludGVsX2FsbG9jYXRvcl9mcmVlKGFobmQsIG9ialswXS5o YW5kbGUpOwogCWlndF9hc3NlcnRfZXEoKmJhdGNoLCAweGMwZmZlZSk7CiAJaWd0X2Fzc2VydF9l cShpbnRlbF9kZXRlY3RfYW5kX2NsZWFyX21pc3NlZF9pbnRlcnJ1cHRzKGZkKSwgMCk7CisJaW50 ZWxfYWxsb2NhdG9yX2Nsb3NlKGFobmQpOwogfQogCiAjZGVmaW5lIFBBR0VTIDEKQEAgLTEwMiw3 ICsxMjgsOSBAQCBzdGF0aWMgdm9pZCBzdG9yZV9jYWNoZWxpbmVzKGludCBmZCwgY29uc3Qgc3Ry dWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhl Y2J1ZmZlcjIgZXhlY2J1ZjsKICNkZWZpbmUgTkNBQ0hFTElORVMgKDQwOTYvNjQpCiAJdWludDMy X3QgKmJhdGNoOworCXVpbnQ2NF90IGFobmQsIHJlbG9jX3ZhbHVlOwogCWludCBpOworCWJvb2wg ZG9fcmVsb2NzID0gZ2VtX2hhc19yZWxvY2F0aW9ucyhmZCk7CiAKIAlyZWxvYyA9IGNhbGxvYyhO Q0FDSEVMSU5FUywgc2l6ZW9mKCpyZWxvYykpOwogCWlndF9hc3NlcnQocmVsb2MpOwpAQCAtMTE0 LDM2ICsxNDIsNTggQEAgc3RhdGljIHZvaWQgc3RvcmVfY2FjaGVsaW5lcyhpbnQgZmQsIGNvbnN0 IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAlpZiAoZ2VuID4gMyAmJiBnZW4g PCA2KQogCQlleGVjYnVmLmZsYWdzIHw9IEk5MTVfRVhFQ19TRUNVUkU7CiAKKwlhaG5kID0gaW50 ZWxfYWxsb2NhdG9yX29wZW4oZmQsIDAsIElOVEVMX0FMTE9DQVRPUl9TSU1QTEUpOwogCW9iaiA9 IGNhbGxvYyhleGVjYnVmLmJ1ZmZlcl9jb3VudCwgc2l6ZW9mKCpvYmopKTsKIAlpZ3RfYXNzZXJ0 KG9iaik7Ci0JZm9yIChpID0gMDsgaSA8IGV4ZWNidWYuYnVmZmVyX2NvdW50OyBpKyspCisJZm9y IChpID0gMDsgaSA8IGV4ZWNidWYuYnVmZmVyX2NvdW50OyBpKyspIHsKIAkJb2JqW2ldLmhhbmRs ZSA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOwotCW9ialtpLTFdLnJlbG9jc19wdHIgPSB0b191c2Vy X3BvaW50ZXIocmVsb2MpOwotCW9ialtpLTFdLnJlbG9jYXRpb25fY291bnQgPSBOQ0FDSEVMSU5F UzsKKworCQlpZiAoIWRvX3JlbG9jcykgeworCQkJb2JqW2ldLm9mZnNldCA9IGludGVsX2FsbG9j YXRvcl9hbGxvYyhhaG5kLCBvYmpbaV0uaGFuZGxlLAorCQkJCQkJCSAgICAgIDQwOTYsIEFMSUdO TUVOVCk7CisJCQlvYmpbaV0ub2Zmc2V0ID0gQ0FOT05JQ0FMKG9ialtpXS5vZmZzZXQpOworCQkJ b2JqW2ldLmZsYWdzID0gRVhFQ19PQkpFQ1RfU1VQUE9SVFNfNDhCX0FERFJFU1MgfAorCQkJCSAg ICAgICBFWEVDX09CSkVDVF9QSU5ORUQ7CisJCQlpZiAoaSArIDEgPCBleGVjYnVmLmJ1ZmZlcl9j b3VudCkKKwkJCQlvYmpbaV0uZmxhZ3MgfD0gRVhFQ19PQkpFQ1RfV1JJVEU7CisJCX0KKwl9CisJ aWYgKGRvX3JlbG9jcykgeworCQlvYmpbaS0xXS5yZWxvY3NfcHRyID0gdG9fdXNlcl9wb2ludGVy KHJlbG9jKTsKKwkJb2JqW2ktMV0ucmVsb2NhdGlvbl9jb3VudCA9IE5DQUNIRUxJTkVTOworCX0K IAlleGVjYnVmLmJ1ZmZlcnNfcHRyID0gdG9fdXNlcl9wb2ludGVyKG9iaik7CiAKIAliYXRjaCA9 IGdlbV9tbWFwX19jcHUoZmQsIG9ialtpLTFdLmhhbmRsZSwgMCwgNDA5NiwgUFJPVF9XUklURSk7 CiAKIAlpID0gMDsKIAlmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgTkNBQ0hFTElORVM7IG4rKykg eworCiAJCXJlbG9jW25dLnRhcmdldF9oYW5kbGUgPSBvYmpbbiAlIChleGVjYnVmLmJ1ZmZlcl9j b3VudC0xKV0uaGFuZGxlOwotCQlyZWxvY1tuXS5wcmVzdW1lZF9vZmZzZXQgPSAtMTsKLQkJcmVs b2Nbbl0ub2Zmc2V0ID0gKGkgKyAxKSpzaXplb2YodWludDMyX3QpOwogCQlyZWxvY1tuXS5kZWx0 YSA9IDQgKiAobiAqIDE2ICsgbiAlIDE2KTsKLQkJcmVsb2Nbbl0ucmVhZF9kb21haW5zID0gSTkx NV9HRU1fRE9NQUlOX0lOU1RSVUNUSU9OOwotCQlyZWxvY1tuXS53cml0ZV9kb21haW4gPSBJOTE1 X0dFTV9ET01BSU5fSU5TVFJVQ1RJT047CisKKwkJaWYgKGRvX3JlbG9jcykgeworCQkJcmVsb2Nb bl0ucHJlc3VtZWRfb2Zmc2V0ID0gLTE7CisJCQlyZWxvY1tuXS5vZmZzZXQgPSAoaSArIDEpKnNp emVvZih1aW50MzJfdCk7CisJCQlyZWxvY1tuXS5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01B SU5fSU5TVFJVQ1RJT047CisJCQlyZWxvY1tuXS53cml0ZV9kb21haW4gPSBJOTE1X0dFTV9ET01B SU5fSU5TVFJVQ1RJT047CisJCQlyZWxvY192YWx1ZSA9IDA7CisJCX0gZWxzZSB7CisJCQlyZWxv Y192YWx1ZSA9IG9ialtuICUgKGV4ZWNidWYuYnVmZmVyX2NvdW50LTEpXS5vZmZzZXQgKworCQkJ CSAgICAgIHJlbG9jW25dLmRlbHRhOworCQl9CiAKIAkJYmF0Y2hbaV0gPSBNSV9TVE9SRV9EV09S RF9JTU0gfCAoZ2VuIDwgNiA/IDEgPDwgMjIgOiAwKTsKIAkJaWYgKGdlbiA+PSA4KSB7Ci0JCQli YXRjaFsrK2ldID0gMDsKLQkJCWJhdGNoWysraV0gPSAwOworCQkJYmF0Y2hbKytpXSA9IHJlbG9j X3ZhbHVlOworCQkJYmF0Y2hbKytpXSA9IHJlbG9jX3ZhbHVlID4+IDMyOwogCQl9IGVsc2UgaWYg KGdlbiA+PSA0KSB7CiAJCQliYXRjaFsrK2ldID0gMDsKLQkJCWJhdGNoWysraV0gPSAwOworCQkJ YmF0Y2hbKytpXSA9IHJlbG9jX3ZhbHVlOwogCQkJcmVsb2Nbbl0ub2Zmc2V0ICs9IHNpemVvZih1 aW50MzJfdCk7CiAJCX0gZWxzZSB7CiAJCQliYXRjaFtpXS0tOwotCQkJYmF0Y2hbKytpXSA9IDA7 CisJCQliYXRjaFsrK2ldID0gcmVsb2NfdmFsdWU7CiAJCX0KIAkJYmF0Y2hbKytpXSA9IG4gfCB+ biA8PCAxNjsKIAkJaSsrOwpAQCAtMTYzLDExICsyMTMsMTQgQEAgc3RhdGljIHZvaWQgc3RvcmVf Y2FjaGVsaW5lcyhpbnQgZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAq ZSwKIAl9CiAJZnJlZShyZWxvYyk7CiAKLQlmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgZXhlY2J1 Zi5idWZmZXJfY291bnQ7IG4rKykKKwlmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgZXhlY2J1Zi5i dWZmZXJfY291bnQ7IG4rKykgewogCQlnZW1fY2xvc2UoZmQsIG9ialtuXS5oYW5kbGUpOworCQlp bnRlbF9hbGxvY2F0b3JfZnJlZShhaG5kLCBvYmpbbl0uaGFuZGxlKTsKKwl9CiAJZnJlZShvYmop OwogCiAJaWd0X2Fzc2VydF9lcShpbnRlbF9kZXRlY3RfYW5kX2NsZWFyX21pc3NlZF9pbnRlcnJ1 cHRzKGZkKSwgMCk7CisJaW50ZWxfYWxsb2NhdG9yX2Nsb3NlKGFobmQpOwogfQogCiBzdGF0aWMg dm9pZCBzdG9yZV9hbGwoaW50IGZkKQpAQCAtMTc5LDEwICsyMzIsMTEgQEAgc3RhdGljIHZvaWQg c3RvcmVfYWxsKGludCBmZCkKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGV4ZWNi dWY7CiAJdW5zaWduZWQgKmVuZ2luZXMsICpwZXJtdXRlZDsKIAl1aW50MzJfdCBiYXRjaFsxNl07 Ci0JdWludDY0X3Qgb2Zmc2V0OworCXVpbnQ2NF90IG9mZnNldCwgYWhuZCwgcmVsb2NfdmFsdWU7 CiAJdW5zaWduZWQgbmVuZ2luZTsKLQlpbnQgdmFsdWU7CisJaW50IHZhbHVlLCBhZGRyZXNzOwog CWludCBpLCBqOworCWJvb2wgZG9fcmVsb2NzID0gZ2VtX2hhc19yZWxvY2F0aW9ucyhmZCk7CiAK IAluZW5naW5lID0gMDsKIAlfX2Zvcl9lYWNoX3BoeXNpY2FsX2VuZ2luZShmZCwgZW5naW5lKSB7 CkBAIC0yMDcsMjQgKzI2MSw0MyBAQCBzdGF0aWMgdm9pZCBzdG9yZV9hbGwoaW50IGZkKQogCWlm IChnZW4gPCA2KQogCQlleGVjYnVmLmZsYWdzIHw9IEk5MTVfRVhFQ19TRUNVUkU7CiAKKwlhaG5k ID0gaW50ZWxfYWxsb2NhdG9yX29wZW4oZmQsIDAsIElOVEVMX0FMTE9DQVRPUl9TSU1QTEUpOwor CiAJbWVtc2V0KG9iaiwgMCwgc2l6ZW9mKG9iaikpOwogCW9ialswXS5oYW5kbGUgPSBnZW1fY3Jl YXRlKGZkLCBuZW5naW5lKnNpemVvZih1aW50MzJfdCkpOwogCW9ialsxXS5oYW5kbGUgPSBnZW1f Y3JlYXRlKGZkLCAyKm5lbmdpbmUqc2l6ZW9mKGJhdGNoKSk7Ci0Jb2JqWzFdLnJlbG9jYXRpb25f Y291bnQgPSAxOworCisJaWYgKGRvX3JlbG9jcykgeworCQlvYmpbMV0ucmVsb2NhdGlvbl9jb3Vu dCA9IDE7CisJfSBlbHNlIHsKKwkJb2JqWzBdLm9mZnNldCA9IGludGVsX2FsbG9jYXRvcl9hbGxv YyhhaG5kLCBvYmpbMF0uaGFuZGxlLAorCQkJCQkJICAgICAgbmVuZ2luZSpzaXplb2YodWludDMy X3QpLAorCQkJCQkJICAgICAgQUxJR05NRU5UKTsKKwkJb2JqWzBdLm9mZnNldCA9IENBTk9OSUNB TChvYmpbMF0ub2Zmc2V0KTsKKwkJb2JqWzBdLmZsYWdzIHw9IEVYRUNfT0JKRUNUX1NVUFBPUlRT XzQ4Ql9BRERSRVNTIHwKKwkJCQlFWEVDX09CSkVDVF9QSU5ORUQgfCBFWEVDX09CSkVDVF9XUklU RTsKKworCQlvYmpbMV0ub2Zmc2V0ID0gaW50ZWxfYWxsb2NhdG9yX2FsbG9jKGFobmQsIG9ialsx XS5oYW5kbGUsCisJCQkJCQkgICAgICAyKm5lbmdpbmUqc2l6ZW9mKGJhdGNoKSwKKwkJCQkJCSAg ICAgIEFMSUdOTUVOVCk7CisJCW9ialsxXS5vZmZzZXQgPSBDQU5PTklDQUwob2JqWzFdLm9mZnNl dCk7CisJCW9ialsxXS5mbGFncyB8PSBFWEVDX09CSkVDVF9TVVBQT1JUU180OEJfQUREUkVTUyB8 CisJCQkJRVhFQ19PQkpFQ1RfUElOTkVEOworCX0KIAogCW9mZnNldCA9IHNpemVvZih1aW50MzJf dCk7CiAJaSA9IDA7CiAJYmF0Y2hbaV0gPSBNSV9TVE9SRV9EV09SRF9JTU0gfCAoZ2VuIDwgNiA/ IDEgPDwgMjIgOiAwKTsKIAlpZiAoZ2VuID49IDgpIHsKLQkJYmF0Y2hbKytpXSA9IDA7CisJCWJh dGNoW2FkZHJlc3MgPSArK2ldID0gMDsKIAkJYmF0Y2hbKytpXSA9IDA7CiAJfSBlbHNlIGlmIChn ZW4gPj0gNCkgewogCQliYXRjaFsrK2ldID0gMDsKLQkJYmF0Y2hbKytpXSA9IDA7CisJCWJhdGNo W2FkZHJlc3MgPSArK2ldID0gMDsKIAkJb2Zmc2V0ICs9IHNpemVvZih1aW50MzJfdCk7CiAJfSBl bHNlIHsKIAkJYmF0Y2hbaV0tLTsKLQkJYmF0Y2hbKytpXSA9IDA7CisJCWJhdGNoW2FkZHJlc3Mg PSArK2ldID0gMDsKIAl9CiAJYmF0Y2hbdmFsdWUgPSArK2ldID0gMHhjMGZmZWU7CiAJYmF0Y2hb KytpXSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7CkBAIC0yMzksMzAgKzMxMiw0NSBAQCBzdGF0aWMg dm9pZCBzdG9yZV9hbGwoaW50IGZkKQogCQlleGVjYnVmLmZsYWdzIHw9IGVuZ2luZS0+ZmxhZ3M7 CiAKIAkJaiA9IDIqbmVuZ2luZTsKLQkJcmVsb2Nbal0udGFyZ2V0X2hhbmRsZSA9IG9ialswXS5o YW5kbGU7Ci0JCXJlbG9jW2pdLnByZXN1bWVkX29mZnNldCA9IH4wOwotCQlyZWxvY1tqXS5vZmZz ZXQgPSBqKnNpemVvZihiYXRjaCkgKyBvZmZzZXQ7Ci0JCXJlbG9jW2pdLmRlbHRhID0gbmVuZ2lu ZSpzaXplb2YodWludDMyX3QpOwotCQlyZWxvY1tqXS5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9E T01BSU5fSU5TVFJVQ1RJT047Ci0JCXJlbG9jW2pdLndyaXRlX2RvbWFpbiA9IEk5MTVfR0VNX0RP TUFJTl9JTlNUUlVDVElPTjsKLQkJb2JqWzFdLnJlbG9jc19wdHIgPSB0b191c2VyX3BvaW50ZXIo JnJlbG9jW2pdKTsKLQorCQlpZiAoZG9fcmVsb2NzKSB7CisJCQlyZWxvY1tqXS50YXJnZXRfaGFu ZGxlID0gb2JqWzBdLmhhbmRsZTsKKwkJCXJlbG9jW2pdLnByZXN1bWVkX29mZnNldCA9IH4wOwor CQkJcmVsb2Nbal0ub2Zmc2V0ID0gaipzaXplb2YoYmF0Y2gpICsgb2Zmc2V0OworCQkJcmVsb2Nb al0uZGVsdGEgPSBuZW5naW5lKnNpemVvZih1aW50MzJfdCk7CisJCQlyZWxvY1tqXS5yZWFkX2Rv bWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fSU5TVFJVQ1RJT047CisJCQlyZWxvY1tqXS53cml0ZV9k b21haW4gPSBJOTE1X0dFTV9ET01BSU5fSU5TVFJVQ1RJT047CisJCQlvYmpbMV0ucmVsb2NzX3B0 ciA9IHRvX3VzZXJfcG9pbnRlcigmcmVsb2Nbal0pOworCQl9IGVsc2UgeworCQkJcmVsb2NfdmFs dWUgPSBvYmpbMF0ub2Zmc2V0ICsgbmVuZ2luZSpzaXplb2YodWludDMyX3QpOworCQkJLyogSWYg dGhlcmUgaXMgbm8gcmVsb2NhdGlvbiBzdXBwb3J0LCB3ZSBhc3N1bWUgZ2VuID49IDguICovCisJ CQliYXRjaFthZGRyZXNzXSA9IHJlbG9jX3ZhbHVlOworCQkJYmF0Y2hbYWRkcmVzcyArIDFdID0g cmVsb2NfdmFsdWUgPj4gMzI7CisJCX0KIAkJYmF0Y2hbdmFsdWVdID0gMHhkZWFkYmVlZjsKKwog CQlnZW1fd3JpdGUoZmQsIG9ialsxXS5oYW5kbGUsIGoqc2l6ZW9mKGJhdGNoKSwKIAkJCSAgYmF0 Y2gsIHNpemVvZihiYXRjaCkpOwogCQlleGVjYnVmLmJhdGNoX3N0YXJ0X29mZnNldCA9IGoqc2l6 ZW9mKGJhdGNoKTsKIAkJZ2VtX2V4ZWNidWYoZmQsICZleGVjYnVmKTsKIAogCQlqID0gMipuZW5n aW5lICsgMTsKLQkJcmVsb2Nbal0udGFyZ2V0X2hhbmRsZSA9IG9ialswXS5oYW5kbGU7Ci0JCXJl bG9jW2pdLnByZXN1bWVkX29mZnNldCA9IH4wOwotCQlyZWxvY1tqXS5vZmZzZXQgPSBqKnNpemVv ZihiYXRjaCkgKyBvZmZzZXQ7Ci0JCXJlbG9jW2pdLmRlbHRhID0gbmVuZ2luZSpzaXplb2YodWlu dDMyX3QpOwotCQlyZWxvY1tqXS5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fSU5TVFJV Q1RJT047Ci0JCXJlbG9jW2pdLndyaXRlX2RvbWFpbiA9IEk5MTVfR0VNX0RPTUFJTl9JTlNUUlVD VElPTjsKLQkJb2JqWzFdLnJlbG9jc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJnJlbG9jW2pdKTsK LQorCQlpZiAoZG9fcmVsb2NzKSB7CisJCQlyZWxvY1tqXS50YXJnZXRfaGFuZGxlID0gb2JqWzBd LmhhbmRsZTsKKwkJCXJlbG9jW2pdLnByZXN1bWVkX29mZnNldCA9IH4wOworCQkJcmVsb2Nbal0u b2Zmc2V0ID0gaipzaXplb2YoYmF0Y2gpICsgb2Zmc2V0OworCQkJcmVsb2Nbal0uZGVsdGEgPSBu ZW5naW5lKnNpemVvZih1aW50MzJfdCk7CisJCQlyZWxvY1tqXS5yZWFkX2RvbWFpbnMgPSBJOTE1 X0dFTV9ET01BSU5fSU5TVFJVQ1RJT047CisJCQlyZWxvY1tqXS53cml0ZV9kb21haW4gPSBJOTE1 X0dFTV9ET01BSU5fSU5TVFJVQ1RJT047CisJCQlvYmpbMV0ucmVsb2NzX3B0ciA9IHRvX3VzZXJf cG9pbnRlcigmcmVsb2Nbal0pOworCQl9IGVsc2UgeworCQkJcmVsb2NfdmFsdWUgPSBvYmpbMF0u b2Zmc2V0ICsgbmVuZ2luZSpzaXplb2YodWludDMyX3QpOworCQkJYmF0Y2hbYWRkcmVzc10gPSBy ZWxvY192YWx1ZTsKKwkJCS8qIElmIHRoZXJlIGlzIG5vIHJlbG9jYXRpb24gc3VwcG9ydCwgd2Ug YXNzdW1lIGdlbiA+PSA4LiAqLworCQkJYmF0Y2hbYWRkcmVzc10gPSByZWxvY192YWx1ZTsKKwkJ CWJhdGNoW2FkZHJlc3MgKyAxXSA9IHJlbG9jX3ZhbHVlID4+IDMyOworCQl9CiAJCWJhdGNoW3Zh bHVlXSA9IG5lbmdpbmU7CisKIAkJZ2VtX3dyaXRlKGZkLCBvYmpbMV0uaGFuZGxlLCBqKnNpemVv ZihiYXRjaCksCiAJCQkgIGJhdGNoLCBzaXplb2YoYmF0Y2gpKTsKIAkJZXhlY2J1Zi5iYXRjaF9z dGFydF9vZmZzZXQgPSBqKnNpemVvZihiYXRjaCk7CkBAIC0yNzMsMzAgKzM2MSwzOCBAQCBzdGF0 aWMgdm9pZCBzdG9yZV9hbGwoaW50IGZkKQogCWdlbV9zeW5jKGZkLCBvYmpbMV0uaGFuZGxlKTsK IAogCWZvciAoaSA9IDA7IGkgPCBuZW5naW5lOyBpKyspIHsKLQkJb2JqWzFdLnJlbG9jc19wdHIg PSB0b191c2VyX3BvaW50ZXIoJnJlbG9jWzIqaV0pOwogCQlleGVjYnVmLmJhdGNoX3N0YXJ0X29m ZnNldCA9IDIqaSpzaXplb2YoYmF0Y2gpOwogCQltZW1jcHkocGVybXV0ZWQsIGVuZ2luZXMsIG5l bmdpbmUqc2l6ZW9mKGVuZ2luZXNbMF0pKTsKIAkJaWd0X3Blcm11dGVfYXJyYXkocGVybXV0ZWQs IG5lbmdpbmUsIGlndF9leGNoYW5nZV9pbnQpOworCQlpZiAoZG9fcmVsb2NzKQorCQkJb2JqWzFd LnJlbG9jc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJnJlbG9jWzIqaV0pOworCiAJCWZvciAoaiA9 IDA7IGogPCBuZW5naW5lOyBqKyspIHsKIAkJCWV4ZWNidWYuZmxhZ3MgJj0gfkVOR0lORV9NQVNL OwogCQkJZXhlY2J1Zi5mbGFncyB8PSBwZXJtdXRlZFtqXTsKIAkJCWdlbV9leGVjYnVmKGZkLCAm ZXhlY2J1Zik7CiAJCX0KLQkJb2JqWzFdLnJlbG9jc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJnJl bG9jWzIqaSsxXSk7CisKIAkJZXhlY2J1Zi5iYXRjaF9zdGFydF9vZmZzZXQgPSAoMippKzEpKnNp emVvZihiYXRjaCk7CiAJCWV4ZWNidWYuZmxhZ3MgJj0gfkVOR0lORV9NQVNLOwogCQlleGVjYnVm LmZsYWdzIHw9IGVuZ2luZXNbaV07CisJCWlmIChkb19yZWxvY3MpCisJCQlvYmpbMV0ucmVsb2Nz X3B0ciA9IHRvX3VzZXJfcG9pbnRlcigmcmVsb2NbMippKzFdKTsKKwogCQlnZW1fZXhlY2J1Zihm ZCwgJmV4ZWNidWYpOwogCX0KIAlnZW1fY2xvc2UoZmQsIG9ialsxXS5oYW5kbGUpOworCWludGVs X2FsbG9jYXRvcl9mcmVlKGFobmQsIG9ialsxXS5oYW5kbGUpOwogCiAJZ2VtX3JlYWQoZmQsIG9i alswXS5oYW5kbGUsIDAsIGVuZ2luZXMsIG5lbmdpbmUqc2l6ZW9mKGVuZ2luZXNbMF0pKTsKIAln ZW1fY2xvc2UoZmQsIG9ialswXS5oYW5kbGUpOworCWludGVsX2FsbG9jYXRvcl9mcmVlKGFobmQs IG9ialswXS5oYW5kbGUpOwogCiAJZm9yIChpID0gMDsgaSA8IG5lbmdpbmU7IGkrKykKIAkJaWd0 X2Fzc2VydF9lcV91MzIoZW5naW5lc1tpXSwgaSk7CiAJaWd0X2Fzc2VydF9lcShpbnRlbF9kZXRl Y3RfYW5kX2NsZWFyX21pc3NlZF9pbnRlcnJ1cHRzKGZkKSwgMCk7CiAKKwlpbnRlbF9hbGxvY2F0 b3JfY2xvc2UoYWhuZCk7CiAJZnJlZShwZXJtdXRlZCk7CiAJZnJlZShlbmdpbmVzKTsKIAlmcmVl KHJlbG9jKTsKLS0gCjIuMjUuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3Qt ZGV2Cg==