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 842ED725C3 for ; Mon, 26 Jul 2021 20:01:08 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Mon, 26 Jul 2021 21:59:54 +0200 Message-Id: <20210726200026.4815-21-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 20/52] tests/gem_exec_capture: 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 IHJlbG9jYXRpb25zIGRpc2FibGVkIG9uIG5ld2VyIGdlbmVyYXRpb25zIHRlc3RzIG11c3QgYXNz aWduIGFkZHJlc3Nlcwp0byBvYmplY3RzIGJ5IHRoZW1zZWx2ZXMgaW5zdGVhZCBvZiByZWx5aW5n IG9uIHRoZSBkcml2ZXIuCgpTaWduZWQtb2ZmLWJ5OiBBbmRyemVqIFR1cmtvIDxhbmRyemVqLnR1 cmtvQGxpbnV4LmludGVsLmNvbT4KQ2M6IFpiaWduaWV3IEtlbXBjennFhHNraSA8emJpZ25pZXcu a2VtcGN6eW5za2lAaW50ZWwuY29tPgotLS0KIHRlc3RzL2k5MTUvZ2VtX2V4ZWNfY2FwdHVyZS5j IHwgMTMxICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2Vk LCAxMDEgaW5zZXJ0aW9ucygrKSwgMzAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdGVzdHMv aTkxNS9nZW1fZXhlY19jYXB0dXJlLmMgYi90ZXN0cy9pOTE1L2dlbV9leGVjX2NhcHR1cmUuYwpp bmRleCBmNTljYjA5ZGEuLjZlODE3YzQ2YyAxMDA2NDQKLS0tIGEvdGVzdHMvaTkxNS9nZW1fZXhl Y19jYXB0dXJlLmMKKysrIGIvdGVzdHMvaTkxNS9nZW1fZXhlY19jYXB0dXJlLmMKQEAgLTMzLDYg KzMzLDggQEAKIAogSUdUX1RFU1RfREVTQ1JJUFRJT04oIkNoZWNrIHRoYXQgd2UgY2FwdHVyZSB0 aGUgdXNlciBzcGVjaWZpZWQgb2JqZWN0cyBvbiBhIGhhbmciKTsKIAorI2RlZmluZSBBTElHTk1F TlQgKDEgPDwgMTIpCisKIHN0YXRpYyB2b2lkIGNoZWNrX2Vycm9yX3N0YXRlKGludCBkaXIsIHN0 cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICpvYmopCiB7CiAJY2hhciAqZXJyb3IsICpz dHI7CkBAIC01Myw3ICs1NSw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrX2Vycm9yX3N0YXRlKGludCBk aXIsIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICpvYmopCiAJCWFkZHIgPSBoaTsK IAkJYWRkciA8PD0gMzI7CiAJCWFkZHIgfD0gbG87Ci0JCWlndF9hc3NlcnRfZXFfdTY0KGFkZHIs IG9iai0+b2Zmc2V0KTsKKwkJaWd0X2Fzc2VydF9lcV91NjQoYWRkciwgREVDQU5PTklDQUwob2Jq LT5vZmZzZXQpKTsKIAkJZm91bmQgPSB0cnVlOwogCX0KIApAQCAtNjEsOCArNjMsOCBAQCBzdGF0 aWMgdm9pZCBjaGVja19lcnJvcl9zdGF0ZShpbnQgZGlyLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4 ZWNfb2JqZWN0MiAqb2JqKQogCWlndF9hc3NlcnQoZm91bmQpOwogfQogCi1zdGF0aWMgdm9pZCBf X2NhcHR1cmUxKGludCBmZCwgaW50IGRpciwgY29uc3QgaW50ZWxfY3R4X3QgKmN0eCwKLQkJICAg ICAgIHVuc2lnbmVkIHJpbmcsIHVpbnQzMl90IHRhcmdldCkKK3N0YXRpYyB2b2lkIF9fY2FwdHVy ZTEoaW50IGZkLCBpbnQgZGlyLCB1aW50NjRfdCBhaG5kLCBjb25zdCBpbnRlbF9jdHhfdCAqY3R4 LAorCQkgICAgICAgdW5zaWduZWQgcmluZywgdWludDMyX3QgdGFyZ2V0LCB1aW50NjRfdCB0YXJn ZXRfc2l6ZSkKIHsKIAljb25zdCB1bnNpZ25lZCBpbnQgZ2VuID0gaW50ZWxfZ2VuKGludGVsX2dl dF9kcm1fZGV2aWQoZmQpKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmpb NF07CkBAIC03NCwzMiArNzYsNDYgQEAgc3RhdGljIHZvaWQgX19jYXB0dXJlMShpbnQgZmQsIGlu dCBkaXIsIGNvbnN0IGludGVsX2N0eF90ICpjdHgsCiAJc3RydWN0IGRybV9pOTE1X2dlbV9leGVj YnVmZmVyMiBleGVjYnVmOwogCXVpbnQzMl90ICpiYXRjaCwgKnNlcW5vOwogCWludCBpOworCWJv b2wgZG9fcmVsb2NzID0gZ2VtX2hhc19yZWxvY2F0aW9ucyhmZCk7CiAKIAltZW1zZXQob2JqLCAw LCBzaXplb2Yob2JqKSk7CiAJb2JqW1NDUkFUQ0hdLmhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIDQw OTYpOworCW9ialtTQ1JBVENIXS5mbGFncyA9IEVYRUNfT0JKRUNUX1dSSVRFOwogCW9ialtDQVBU VVJFXS5oYW5kbGUgPSB0YXJnZXQ7CiAJb2JqW0NBUFRVUkVdLmZsYWdzID0gRVhFQ19PQkpFQ1Rf Q0FQVFVSRTsKIAlvYmpbTk9DQVBUVVJFXS5oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsK IAogCW9ialtCQVRDSF0uaGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7Ci0Jb2JqW0JBVENI XS5yZWxvY3NfcHRyID0gKHVpbnRwdHJfdClyZWxvYzsKLQlvYmpbQkFUQ0hdLnJlbG9jYXRpb25f Y291bnQgPSBBUlJBWV9TSVpFKHJlbG9jKTsKKworCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsK KwkJb2JqW2ldLm9mZnNldCA9IGludGVsX2FsbG9jYXRvcl9hbGxvYyhhaG5kLCBvYmpbaV0uaGFu ZGxlLAorCQkJCQkJICAgICAgaSA9PSBDQVBUVVJFID8gdGFyZ2V0X3NpemUgOiA0MDk2LAorCQkJ CQkJICAgICAgQUxJR05NRU5UKTsKKwkJb2JqW2ldLm9mZnNldCA9IENBTk9OSUNBTChvYmpbaV0u b2Zmc2V0KTsKKwkJb2JqW2ldLmZsYWdzIHw9IEVYRUNfT0JKRUNUX1NVUFBPUlRTXzQ4Ql9BRERS RVNTIHwKKwkJCQkoZG9fcmVsb2NzID8gMCA6IEVYRUNfT0JKRUNUX1BJTk5FRCk7CisJfQogCiAJ bWVtc2V0KHJlbG9jLCAwLCBzaXplb2YocmVsb2MpKTsKIAlyZWxvY1swXS50YXJnZXRfaGFuZGxl ID0gb2JqW0JBVENIXS5oYW5kbGU7IC8qIHJlY3Vyc2UgKi8KLQlyZWxvY1swXS5wcmVzdW1lZF9v ZmZzZXQgPSAwOworCXJlbG9jWzBdLnByZXN1bWVkX29mZnNldCA9IG9ialtCQVRDSF0ub2Zmc2V0 OwogCXJlbG9jWzBdLm9mZnNldCA9IDUqc2l6ZW9mKHVpbnQzMl90KTsKIAlyZWxvY1swXS5kZWx0 YSA9IDA7CiAJcmVsb2NbMF0ucmVhZF9kb21haW5zID0gSTkxNV9HRU1fRE9NQUlOX0NPTU1BTkQ7 CiAJcmVsb2NbMF0ud3JpdGVfZG9tYWluID0gMDsKIAogCXJlbG9jWzFdLnRhcmdldF9oYW5kbGUg PSBvYmpbU0NSQVRDSF0uaGFuZGxlOyAvKiBicmVhZGNydW1iICovCi0JcmVsb2NbMV0ucHJlc3Vt ZWRfb2Zmc2V0ID0gMDsKKwlyZWxvY1sxXS5wcmVzdW1lZF9vZmZzZXQgPSBvYmpbU0NSQVRDSF0u b2Zmc2V0OwogCXJlbG9jWzFdLm9mZnNldCA9IHNpemVvZih1aW50MzJfdCk7CiAJcmVsb2NbMV0u ZGVsdGEgPSAwOwogCXJlbG9jWzFdLnJlYWRfZG9tYWlucyA9IEk5MTVfR0VNX0RPTUFJTl9SRU5E RVI7CiAJcmVsb2NbMV0ud3JpdGVfZG9tYWluID0gSTkxNV9HRU1fRE9NQUlOX1JFTkRFUjsKIAor CWlmIChkb19yZWxvY3MpIHsKKwkJb2JqW0JBVENIXS5yZWxvY3NfcHRyID0gKHVpbnRwdHJfdCly ZWxvYzsKKwkJb2JqW0JBVENIXS5yZWxvY2F0aW9uX2NvdW50ID0gQVJSQVlfU0laRShyZWxvYyk7 CisJfQorCiAJc2Vxbm8gPSBnZW1fbW1hcF9fd2MoZmQsIG9ialtTQ1JBVENIXS5oYW5kbGUsIDAs IDQwOTYsIFBST1RfUkVBRCk7CiAJZ2VtX3NldF9kb21haW4oZmQsIG9ialtTQ1JBVENIXS5oYW5k bGUsCiAJCQlJOTE1X0dFTV9ET01BSU5fR1RULCBJOTE1X0dFTV9ET01BSU5fR1RUKTsKQEAgLTEx MSw4ICsxMjcsOCBAQCBzdGF0aWMgdm9pZCBfX2NhcHR1cmUxKGludCBmZCwgaW50IGRpciwgY29u c3QgaW50ZWxfY3R4X3QgKmN0eCwKIAlpID0gMDsKIAliYXRjaFtpXSA9IE1JX1NUT1JFX0RXT1JE X0lNTSB8IChnZW4gPCA2ID8gMSA8PCAyMiA6IDApOwogCWlmIChnZW4gPj0gOCkgewotCQliYXRj aFsrK2ldID0gMDsKLQkJYmF0Y2hbKytpXSA9IDA7CisJCWJhdGNoWysraV0gPSBvYmpbU0NSQVRD SF0ub2Zmc2V0OworCQliYXRjaFsrK2ldID0gb2JqW1NDUkFUQ0hdLm9mZnNldCA+PiAzMjsKIAl9 IGVsc2UgaWYgKGdlbiA+PSA0KSB7CiAJCWJhdGNoWysraV0gPSAwOwogCQliYXRjaFsrK2ldID0g MDsKQEAgLTEyOCw4ICsxNDQsOCBAQCBzdGF0aWMgdm9pZCBfX2NhcHR1cmUxKGludCBmZCwgaW50 IGRpciwgY29uc3QgaW50ZWxfY3R4X3QgKmN0eCwKIAliYXRjaFsrK2ldID0gTUlfQkFUQ0hfQlVG RkVSX1NUQVJUOyAvKiBub3QgY3Jhc2hlZD8gdHJ5IGFnYWluISAqLwogCWlmIChnZW4gPj0gOCkg ewogCQliYXRjaFtpXSB8PSAxIDw8IDggfCAxOwotCQliYXRjaFsrK2ldID0gMDsKLQkJYmF0Y2hb KytpXSA9IDA7CisJCWJhdGNoWysraV0gPSBvYmpbQkFUQ0hdLm9mZnNldDsKKwkJYmF0Y2hbKytp XSA9IG9ialtCQVRDSF0ub2Zmc2V0ID4+IDMyOwogCX0gZWxzZSBpZiAoZ2VuID49IDYpIHsKIAkJ YmF0Y2hbaV0gfD0gMSA8PCA4OwogCQliYXRjaFsrK2ldID0gMDsKQEAgLTE2NSw2ICsxODEsOSBA QCBzdGF0aWMgdm9pZCBfX2NhcHR1cmUxKGludCBmZCwgaW50IGRpciwgY29uc3QgaW50ZWxfY3R4 X3QgKmN0eCwKIAogCWdlbV9zeW5jKGZkLCBvYmpbQkFUQ0hdLmhhbmRsZSk7CiAKKwlpbnRlbF9h bGxvY2F0b3JfZnJlZShhaG5kLCBvYmpbQkFUQ0hdLmhhbmRsZSk7CisJaW50ZWxfYWxsb2NhdG9y X2ZyZWUoYWhuZCwgb2JqW05PQ0FQVFVSRV0uaGFuZGxlKTsKKwlpbnRlbF9hbGxvY2F0b3JfZnJl ZShhaG5kLCBvYmpbU0NSQVRDSF0uaGFuZGxlKTsKIAlnZW1fY2xvc2UoZmQsIG9ialtCQVRDSF0u aGFuZGxlKTsKIAlnZW1fY2xvc2UoZmQsIG9ialtOT0NBUFRVUkVdLmhhbmRsZSk7CiAJZ2VtX2Ns b3NlKGZkLCBvYmpbU0NSQVRDSF0uaGFuZGxlKTsKQEAgLTE3MywxMCArMTkyLDE2IEBAIHN0YXRp YyB2b2lkIF9fY2FwdHVyZTEoaW50IGZkLCBpbnQgZGlyLCBjb25zdCBpbnRlbF9jdHhfdCAqY3R4 LAogc3RhdGljIHZvaWQgY2FwdHVyZShpbnQgZmQsIGludCBkaXIsIGNvbnN0IGludGVsX2N0eF90 ICpjdHgsIHVuc2lnbmVkIHJpbmcpCiB7CiAJdWludDMyX3QgaGFuZGxlOworCXVpbnQ2NF90IGFo bmQ7CiAKIAloYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsKLQlfX2NhcHR1cmUxKGZkLCBk aXIsIGN0eCwgcmluZywgaGFuZGxlKTsKKwlhaG5kID0gaW50ZWxfYWxsb2NhdG9yX29wZW4oZmQs IDAsIElOVEVMX0FMTE9DQVRPUl9TSU1QTEUpOworCisJX19jYXB0dXJlMShmZCwgZGlyLCBhaG5k LCBjdHgsIHJpbmcsIGhhbmRsZSwgNDA5Nik7CisKIAlnZW1fY2xvc2UoZmQsIGhhbmRsZSk7CisJ aW50ZWxfYWxsb2NhdG9yX2ZyZWUoYWhuZCwgaGFuZGxlKTsKKwlpbnRlbF9hbGxvY2F0b3JfY2xv c2UoYWhuZCk7CiB9CiAKIHN0YXRpYyBpbnQgY21wKGNvbnN0IHZvaWQgKkEsIGNvbnN0IHZvaWQg KkIpCkBAIC0xOTUsNyArMjIwLDcgQEAgc3RhdGljIGludCBjbXAoY29uc3Qgdm9pZCAqQSwgY29u c3Qgdm9pZCAqQikKIHN0YXRpYyBzdHJ1Y3Qgb2Zmc2V0IHsKIAl1aW50NjRfdCBhZGRyOwogCXVu c2lnbmVkIGxvbmcgaWR4OwotfSAqX19jYXB0dXJlTihpbnQgZmQsIGludCBkaXIsIHVuc2lnbmVk IHJpbmcsCit9ICpfX2NhcHR1cmVOKGludCBmZCwgaW50IGRpciwgdWludDY0X3QgYWhuZCwgdW5z aWduZWQgcmluZywKIAkgICAgICB1bnNpZ25lZCBpbnQgc2l6ZSwgaW50IGNvdW50LAogCSAgICAg IHVuc2lnbmVkIGludCBmbGFncykKICNkZWZpbmUgSU5DUkVNRU5UQUwgMHgxCkBAIC0yMDgsMTgg KzIzMywzMCBAQCBzdGF0aWMgc3RydWN0IG9mZnNldCB7CiAJdWludDMyX3QgKmJhdGNoLCAqc2Vx bm87CiAJc3RydWN0IG9mZnNldCAqb2Zmc2V0czsKIAlpbnQgaTsKKwlib29sIGRvX3JlbG9jcyA9 IGdlbV9oYXNfcmVsb2NhdGlvbnMoZmQpOwogCi0Jb2Zmc2V0cyA9IGNhbGxvYyhjb3VudCAsIHNp emVvZigqb2Zmc2V0cykpOworCW9mZnNldHMgPSBjYWxsb2MoY291bnQsIHNpemVvZigqb2Zmc2V0 cykpOwogCWlndF9hc3NlcnQob2Zmc2V0cyk7CiAKIAlvYmogPSBjYWxsb2MoY291bnQgKyAyLCBz aXplb2YoKm9iaikpOwogCWlndF9hc3NlcnQob2JqKTsKIAogCW9ialswXS5oYW5kbGUgPSBnZW1f Y3JlYXRlKGZkLCA0MDk2KTsKKwlvYmpbMF0ub2Zmc2V0ID0gaW50ZWxfYWxsb2NhdG9yX2FsbG9j KGFobmQsIG9ialswXS5oYW5kbGUsCisJCQkJCSAgICAgIDQwOTYsIEFMSUdOTUVOVCk7CisJb2Jq WzBdLm9mZnNldCA9IENBTk9OSUNBTChvYmpbMF0ub2Zmc2V0KTsKKwlvYmpbMF0uZmxhZ3MgPSBF WEVDX09CSkVDVF9XUklURSB8IEVYRUNfT0JKRUNUX1NVUFBPUlRTXzQ4Ql9BRERSRVNTIHwKKwkJ ICAgICAgIChkb19yZWxvY3MgPyAwIDogRVhFQ19PQkpFQ1RfUElOTkVEKTsKKwogCWZvciAoaSA9 IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAJCW9ialtpICsgMV0uaGFuZGxlID0gZ2VtX2NyZWF0ZShm ZCwgc2l6ZSk7Ci0JCW9ialtpICsgMV0uZmxhZ3MgPQotCQkJRVhFQ19PQkpFQ1RfQ0FQVFVSRSB8 IEVYRUNfT0JKRUNUX1NVUFBPUlRTXzQ4Ql9BRERSRVNTOworCQlvYmpbaSArIDFdLm9mZnNldCA9 IGludGVsX2FsbG9jYXRvcl9hbGxvYyhhaG5kLCBvYmpbaSArIDFdLmhhbmRsZSwKKwkJCQkJCQkg IHNpemUsIEFMSUdOTUVOVCk7CisJCW9ialtpICsgMV0ub2Zmc2V0ID0gQ0FOT05JQ0FMKG9ialtp ICsgMV0ub2Zmc2V0KTsKKwkJb2JqW2kgKyAxXS5mbGFncyA9IEVYRUNfT0JKRUNUX0NBUFRVUkUg fAorCQkJCSAgIEVYRUNfT0JKRUNUX1NVUFBPUlRTXzQ4Ql9BRERSRVNTIHwKKwkJCQkgICAoZG9f cmVsb2NzID8gMCA6IEVYRUNfT0JKRUNUX1BJTk5FRCk7CisKIAkJaWYgKGZsYWdzICYgSU5DUkVN RU5UQUwpIHsKIAkJCXVpbnQzMl90ICpwdHI7CiAKQEAgLTIzMiwyMyArMjY5LDMyIEBAIHN0YXRp YyBzdHJ1Y3Qgb2Zmc2V0IHsKIAl9CiAKIAlvYmpbY291bnQgKyAxXS5oYW5kbGUgPSBnZW1fY3Jl YXRlKGZkLCA0MDk2KTsKLQlvYmpbY291bnQgKyAxXS5yZWxvY3NfcHRyID0gKHVpbnRwdHJfdCly ZWxvYzsKLQlvYmpbY291bnQgKyAxXS5yZWxvY2F0aW9uX2NvdW50ID0gQVJSQVlfU0laRShyZWxv Yyk7CisJb2JqW2NvdW50ICsgMV0ub2Zmc2V0ID0gaW50ZWxfYWxsb2NhdG9yX2FsbG9jKGFobmQs IG9ialtjb3VudCArIDFdLmhhbmRsZSwKKwkJCQkJCSAgICAgIDQwOTYsIEFMSUdOTUVOVCk7CisJ b2JqW2NvdW50ICsgMV0ub2Zmc2V0ID0gQ0FOT05JQ0FMKG9ialtjb3VudCArIDFdLm9mZnNldCk7 CisJb2JqW2NvdW50ICsgMV0uZmxhZ3MgPSBFWEVDX09CSkVDVF9TVVBQT1JUU180OEJfQUREUkVT UyB8CisJCQkgICAgICAgKGRvX3JlbG9jcyA/IDAgOiBFWEVDX09CSkVDVF9QSU5ORUQpOwogCiAJ bWVtc2V0KHJlbG9jLCAwLCBzaXplb2YocmVsb2MpKTsKIAlyZWxvY1swXS50YXJnZXRfaGFuZGxl ID0gb2JqW2NvdW50ICsgMV0uaGFuZGxlOyAvKiByZWN1cnNlICovCi0JcmVsb2NbMF0ucHJlc3Vt ZWRfb2Zmc2V0ID0gMDsKKwlyZWxvY1swXS5wcmVzdW1lZF9vZmZzZXQgPSBvYmpbY291bnQgKyAx XS5vZmZzZXQ7CiAJcmVsb2NbMF0ub2Zmc2V0ID0gNSpzaXplb2YodWludDMyX3QpOwogCXJlbG9j WzBdLmRlbHRhID0gMDsKIAlyZWxvY1swXS5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5f Q09NTUFORDsKIAlyZWxvY1swXS53cml0ZV9kb21haW4gPSAwOwogCiAJcmVsb2NbMV0udGFyZ2V0 X2hhbmRsZSA9IG9ialswXS5oYW5kbGU7IC8qIGJyZWFkY3J1bWIgKi8KLQlyZWxvY1sxXS5wcmVz dW1lZF9vZmZzZXQgPSAwOworCXJlbG9jWzFdLnByZXN1bWVkX29mZnNldCA9IG9ialswXS5vZmZz ZXQ7CiAJcmVsb2NbMV0ub2Zmc2V0ID0gc2l6ZW9mKHVpbnQzMl90KTsKIAlyZWxvY1sxXS5kZWx0 YSA9IDA7CiAJcmVsb2NbMV0ucmVhZF9kb21haW5zID0gSTkxNV9HRU1fRE9NQUlOX1JFTkRFUjsK IAlyZWxvY1sxXS53cml0ZV9kb21haW4gPSBJOTE1X0dFTV9ET01BSU5fUkVOREVSOworCWlmIChk b19yZWxvY3MpIHsKKwkJb2JqW2NvdW50ICsgMV0ucmVsb2NzX3B0ciA9ICh1aW50cHRyX3QpcmVs b2M7CisJCW9ialtjb3VudCArIDFdLnJlbG9jYXRpb25fY291bnQgPSBBUlJBWV9TSVpFKHJlbG9j KTsKKwl9IGVsc2UgeworCQlleGVjYnVmLmZsYWdzID0gSTkxNV9FWEVDX05PX1JFTE9DOworCX0K IAogCXNlcW5vID0gZ2VtX21tYXBfX3djKGZkLCBvYmpbMF0uaGFuZGxlLCAwLCA0MDk2LCBQUk9U X1JFQUQpOwogCWdlbV9zZXRfZG9tYWluKGZkLCBvYmpbMF0uaGFuZGxlLApAQCAtMjYxLDggKzMw Nyw4IEBAIHN0YXRpYyBzdHJ1Y3Qgb2Zmc2V0IHsKIAlpID0gMDsKIAliYXRjaFtpXSA9IE1JX1NU T1JFX0RXT1JEX0lNTSB8IChnZW4gPCA2ID8gMSA8PCAyMiA6IDApOwogCWlmIChnZW4gPj0gOCkg ewotCQliYXRjaFsrK2ldID0gMDsKLQkJYmF0Y2hbKytpXSA9IDA7CisJCWJhdGNoWysraV0gPSBv YmpbMF0ub2Zmc2V0OworCQliYXRjaFsrK2ldID0gb2JqWzBdLm9mZnNldCA+PiAzMjsKIAl9IGVs c2UgaWYgKGdlbiA+PSA0KSB7CiAJCWJhdGNoWysraV0gPSAwOwogCQliYXRjaFsrK2ldID0gMDsK QEAgLTI3OCw4ICszMjQsOCBAQCBzdGF0aWMgc3RydWN0IG9mZnNldCB7CiAJYmF0Y2hbKytpXSA9 IE1JX0JBVENIX0JVRkZFUl9TVEFSVDsgLyogbm90IGNyYXNoZWQ/IHRyeSBhZ2FpbiEgKi8KIAlp ZiAoZ2VuID49IDgpIHsKIAkJYmF0Y2hbaV0gfD0gMSA8PCA4IHwgMTsKLQkJYmF0Y2hbKytpXSA9 IDA7Ci0JCWJhdGNoWysraV0gPSAwOworCQliYXRjaFsrK2ldID0gb2JqW2NvdW50ICsgMV0ub2Zm c2V0OworCQliYXRjaFsrK2ldID0gb2JqW2NvdW50ICsgMV0ub2Zmc2V0ID4+IDMyOwogCX0gZWxz ZSBpZiAoZ2VuID49IDYpIHsKIAkJYmF0Y2hbaV0gfD0gMSA8PCA4OwogCQliYXRjaFsrK2ldID0g MDsKQEAgLTMxNSwxMiArMzYxLDE2IEBAIHN0YXRpYyBzdHJ1Y3Qgb2Zmc2V0IHsKIAogCWdlbV9j bG9zZShmZCwgb2JqW2NvdW50ICsgMV0uaGFuZGxlKTsKIAlmb3IgKGkgPSAwOyBpIDwgY291bnQ7 IGkrKykgewotCQlvZmZzZXRzW2ldLmFkZHIgPSBvYmpbaSArIDFdLm9mZnNldDsKKwkJb2Zmc2V0 c1tpXS5hZGRyID0gREVDQU5PTklDQUwob2JqW2kgKyAxXS5vZmZzZXQpOwogCQlvZmZzZXRzW2ld LmlkeCA9IGk7CiAJCWdlbV9jbG9zZShmZCwgb2JqW2kgKyAxXS5oYW5kbGUpOworCQlpbnRlbF9h bGxvY2F0b3JfZnJlZShhaG5kLCBvYmpbaSArIDFdLmhhbmRsZSk7CiAJfQogCWdlbV9jbG9zZShm ZCwgb2JqWzBdLmhhbmRsZSk7CiAKKwlpbnRlbF9hbGxvY2F0b3JfZnJlZShhaG5kLCBvYmpbMF0u aGFuZGxlKTsKKwlpbnRlbF9hbGxvY2F0b3JfZnJlZShhaG5kLCBvYmpbY291bnQgKyAxXS5oYW5k bGUpOworCiAJcXNvcnQob2Zmc2V0cywgY291bnQsIHNpemVvZigqb2Zmc2V0cyksIGNtcCk7CiAJ aWd0X2Fzc2VydChvZmZzZXRzWzBdLmFkZHIgPD0gb2Zmc2V0c1tjb3VudC0xXS5hZGRyKTsKIAly ZXR1cm4gb2Zmc2V0czsKQEAgLTQxNCw3ICs0NjQsNyBAQCBhc2NpaTg1X2RlY29kZShjaGFyICpp biwgdWludDMyX3QgKipvdXQsIGJvb2wgaW5mbGF0ZSwgY2hhciAqKmVuZCkKIAogc3RhdGljIHZv aWQgbWFueShpbnQgZmQsIGludCBkaXIsIHVpbnQ2NF90IHNpemUsIHVuc2lnbmVkIGludCBmbGFn cykKIHsKLQl1aW50NjRfdCByYW0sIGd0dDsKKwl1aW50NjRfdCByYW0sIGd0dCwgYWhuZDsKIAl1 bnNpZ25lZCBsb25nIGNvdW50LCBibG9iczsKIAlzdHJ1Y3Qgb2Zmc2V0ICpvZmZzZXRzOwogCWNo YXIgKmVycm9yLCAqc3RyOwpAQCAtNDI4LDggKzQ3OCw5IEBAIHN0YXRpYyB2b2lkIG1hbnkoaW50 IGZkLCBpbnQgZGlyLCB1aW50NjRfdCBzaXplLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJaWd0X3Jl cXVpcmUoY291bnQgPiAxKTsKIAogCWludGVsX3JlcXVpcmVfbWVtb3J5KGNvdW50LCBzaXplLCBD SEVDS19SQU0pOworCWFobmQgPSBpbnRlbF9hbGxvY2F0b3Jfb3BlbihmZCwgMCwgSU5URUxfQUxM T0NBVE9SX1NJTVBMRSk7CiAKLQlvZmZzZXRzID0gX19jYXB0dXJlTihmZCwgZGlyLCAwLCBzaXpl LCBjb3VudCwgZmxhZ3MpOworCW9mZnNldHMgPSBfX2NhcHR1cmVOKGZkLCBkaXIsIGFobmQsIDAs IHNpemUsIGNvdW50LCBmbGFncyk7CiAKIAllcnJvciA9IGlndF9zeXNmc19nZXQoZGlyLCAiZXJy b3IiKTsKIAlpZ3Rfc3lzZnNfc2V0KGRpciwgImVycm9yIiwgIkJlZ29uZSEiKTsKQEAgLTQ5Niw2 ICs1NDcsNyBAQCBzdGF0aWMgdm9pZCBtYW55KGludCBmZCwgaW50IGRpciwgdWludDY0X3Qgc2l6 ZSwgdW5zaWduZWQgaW50IGZsYWdzKQogCiAJZnJlZShlcnJvcik7CiAJZnJlZShvZmZzZXRzKTsK KwlpbnRlbF9hbGxvY2F0b3JfY2xvc2UoYWhuZCk7CiB9CiAKIHN0YXRpYyB2b2lkIHByaW9pbnYo aW50IGZkLCBpbnQgZGlyLCBjb25zdCBpbnRlbF9jdHhfdCAqY3R4LApAQCAtNTEyLDEwICs1NjQs MTYgQEAgc3RhdGljIHZvaWQgcHJpb2ludihpbnQgZmQsIGludCBkaXIsIGNvbnN0IGludGVsX2N0 eF90ICpjdHgsCiAJCS5yc3ZkMSA9IGN0eC0+aWQsCiAJfTsKIAlpbnQ2NF90IHRpbWVvdXQgPSBO U0VDX1BFUl9TRUM7IC8qIDFzLCBmZWVsaW5nIGdlbmVyb3VzLCBibGFtZSBkZWJ1ZyAqLwotCXVp bnQ2NF90IHJhbSwgZ3R0LCBzaXplID0gNCA8PCAyMDsKKwl1aW50NjRfdCByYW0sIGd0dCwgYWhu ZCwgc2l6ZSA9IDQgPDwgMjA7CiAJdW5zaWduZWQgbG9uZyBjb3VudDsKIAlpbnQgbGlua1syXSwg ZHVtbXk7CiAKKwlpbnRlbF9hbGxvY2F0b3JfbXVsdGlwcm9jZXNzX3N0YXJ0KCk7CisJYWhuZCA9 IGludGVsX2FsbG9jYXRvcl9vcGVuKGZkLCAwLCBJTlRFTF9BTExPQ0FUT1JfU0lNUExFKTsKKwlv Ymoub2Zmc2V0ID0gaW50ZWxfYWxsb2NhdG9yX2FsbG9jKGFobmQsIG9iai5oYW5kbGUsIDQwOTYs IEFMSUdOTUVOVCk7CisJb2JqLm9mZnNldCA9IENBTk9OSUNBTChvYmoub2Zmc2V0KTsKKwlvYmou ZmxhZ3MgPSBFWEVDX09CSkVDVF9TVVBQT1JUU180OEJfQUREUkVTUzsKKwogCWlndF9yZXF1aXJl KGdlbV9zY2hlZHVsZXJfZW5hYmxlZChmZCkpOwogCWlndF9yZXF1aXJlKGlndF9wYXJhbXNfc2V0 KGZkLCAicmVzZXQiLCAiJXUiLCAtMSkpOyAvKiBlbmdpbmUgcmVzZXRzISAqLwogCWlndF9yZXF1 aXJlKGdlbV9ncHVfcmVzZXRfdHlwZShmZCkgPiAxKTsKQEAgLTU0NCw3ICs2MDIsMTMgQEAgc3Rh dGljIHZvaWQgcHJpb2ludihpbnQgZmQsIGludCBkaXIsIGNvbnN0IGludGVsX2N0eF90ICpjdHgs CiAJCWZkID0gZ2VtX3Jlb3Blbl9kcml2ZXIoZmQpOwogCQlpZ3RfZGVidWcoIlN1Ym1pdHRpbmcg bGFyZ2UgY2FwdHVyZSBbJWxkIHggJWRNaUIgb2JqZWN0c11cbiIsCiAJCQkgIGNvdW50LCAoaW50 KShzaXplID4+IDIwKSk7Ci0JCWZyZWUoX19jYXB0dXJlTihmZCwgZGlyLCByaW5nLCBzaXplLCBj b3VudCwgQVNZTkMpKTsKKworCQkvKiBSZW9wZW4gdGhlIGFsbG9jYXRvciBpbiB0aGUgbmV3IHBy b2Nlc3MuICovCisJCWFobmQgPSBpbnRlbF9hbGxvY2F0b3Jfb3BlbihmZCwgY2hpbGQgKyAxLCBJ TlRFTF9BTExPQ0FUT1JfU0lNUExFKTsKKworCQlmcmVlKF9fY2FwdHVyZU4oZmQsIGRpciwgYWhu ZCwgcmluZywgc2l6ZSwgY291bnQsIEFTWU5DKSk7CisJCWludGVsX2FsbG9jYXRvcl9jbG9zZShh aG5kKTsKKwogCQl3cml0ZShsaW5rWzFdLCAmZmQsIHNpemVvZihmZCkpOyAvKiB3YWtlIHRoZSBw YXJlbnQgdXAgKi8KIAkJaWd0X2ZvcmNlX2dwdV9yZXNldChmZCk7CiAJCXdyaXRlKGxpbmtbMV0s ICZmZCwgc2l6ZW9mKGZkKSk7IC8qIHdha2UgdGhlIHBhcmVudCB1cCAqLwpAQCAtNTY3LDE5ICs2 MzEsMjYgQEAgc3RhdGljIHZvaWQgcHJpb2ludihpbnQgZmQsIGludCBkaXIsIGNvbnN0IGludGVs X2N0eF90ICpjdHgsCiAJY2xvc2UobGlua1sxXSk7CiAKIAlnZW1fcXVpZXNjZW50X2dwdShmZCk7 CisJaW50ZWxfYWxsb2NhdG9yX2ZyZWUoYWhuZCwgb2JqLmhhbmRsZSk7CisJaW50ZWxfYWxsb2Nh dG9yX2Nsb3NlKGFobmQpOworCWludGVsX2FsbG9jYXRvcl9tdWx0aXByb2Nlc3Nfc3RvcCgpOwog fQogCiBzdGF0aWMgdm9pZCB1c2VycHRyKGludCBmZCwgaW50IGRpcikKIHsKIAl1aW50MzJfdCBo YW5kbGU7CisJdWludDY0X3QgYWhuZDsKIAl2b2lkICpwdHI7CiAKIAlpZ3RfYXNzZXJ0KHBvc2l4 X21lbWFsaWduKCZwdHIsIDQwOTYsIDQwOTYpID09IDApOwogCWlndF9yZXF1aXJlKF9fZ2VtX3Vz ZXJwdHIoZmQsIHB0ciwgNDA5NiwgMCwgMCwgJmhhbmRsZSkgPT0gMCk7CisJYWhuZCA9IGludGVs X2FsbG9jYXRvcl9vcGVuKGZkLCAwLCBJTlRFTF9BTExPQ0FUT1JfU0lNUExFKTsKIAotCV9fY2Fw dHVyZTEoZmQsIGRpciwgaW50ZWxfY3R4XzAoZmQpLCAwLCBoYW5kbGUpOworCV9fY2FwdHVyZTEo ZmQsIGRpciwgYWhuZCwgaW50ZWxfY3R4XzAoZmQpLCAwLCBoYW5kbGUsIDQwOTYpOwogCiAJZ2Vt X2Nsb3NlKGZkLCBoYW5kbGUpOworCWludGVsX2FsbG9jYXRvcl9mcmVlKGFobmQsIGhhbmRsZSk7 CisJaW50ZWxfYWxsb2NhdG9yX2Nsb3NlKGFobmQpOwogCWZyZWUocHRyKTsKIH0KIAotLSAKMi4y Ni4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3Qt ZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK