From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH v17 2/4] tests/gem_ctx_sseu: Dynamic (sub)slice programming tests Date: Thu, 15 Nov 2018 16:37:07 +0000 Message-ID: <20181115163707.9716-1-tvrtko.ursulin@linux.intel.com> References: <20181113143629.28101-3-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181113143629.28101-3-tvrtko.ursulin@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogTGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5AaW50ZWwuY29tPgoK VmVyaWZ5IHRoYXQgdGhlIHBlci1jb250ZXh0IGR5bmFtaWMgU1NFVSB1QVBJIHdvcmtzIGFzIGV4 cGVjdGVkLgoKdjI6IEFkZCBzdWJzbGljZSB0ZXN0cyAoTGlvbmVsKQogICAgVXNlIE1JX1NFVF9Q UkVESUNBVEUgZm9yIGZ1cnRoZXIgdmVyaWZpY2F0aW9uIHdoZW4gYXZhaWxhYmxlIChMaW9uZWwp Cgp2MzogUmVuYW1lIHRvIGdlbV9jdHhfcnBjcyAoTGlvbmVsKQoKdjQ6IFVwZGF0ZSBrZXJuZWwg QVBJIChMaW9uZWwpCiAgICBBZGQgMCB2YWx1ZSB0ZXN0IChMaW9uZWwpCiAgICBFeGVyY2lzZSBp bnZhbGlkIHZhbHVlcyAoTGlvbmVsKQoKdjU6IEFkZCBwZXJmIHRlc3RzIChMaW9uZWwpCgp2Njog QWRkIG5ldyBzeXNmcyBlbnRyeSB0ZXN0cyAoTGlvbmVsKQoKdjc6IFRlc3QgcnN2ZCBmaWVsZHMK ICAgIFVwZGF0ZSBmb3Iga2VybmVsIHNlcmllcyBjaGFuZ2VzCgp2ODogRHJvcCB0ZXN0X25vX3Nz ZXVfc3VwcG9ydCgpIHRlc3QgKEtlbHZpbikKICAgIERyb3AgZHJtX2ludGVsXyooKSBhcGlzIChD aHJpcykKCnY5OiBieSBDaHJpczoKICAgIERyb3AgYWxsIGRvX2lvY3RsL2RvX2lvY3RsX2Vycigp CiAgICBVc2UgZ2VtX2NvbnRleHRfW2dzXWV0X3BhcmFtKCkKICAgIFVzZSBnZW1fcmVhZCgpIGlu c3RlYWQgb2YgbWFwcGluZyBtZW1vcnkKICAgIGJ5IExpb25lbDoKICAgIFRlc3QgZHluYW1pYyBz c2V1IG9uL29mZiBtb3JlCgpUdnJ0a28gVXJzdWxpbjoKCnYxMDoKICogVmFyaW91cyBzdHlsZSB0 d2Vha3MgYW5kIHJlZmFjdG9yaW5ncy4KICogTmV3IHRlc3QgY292ZXJhZ2UuCgp2MTE6CiAqIENo YW5nZSBwbGF0Zm9ybSBzdXBwb3J0IHRvIGp1c3QgR2VuMTEuCiAqIFNpbXBsaWZ5IGF2YWlsYWJp bGl0eSB0ZXN0LiAoQ2hyaXMgV2lsc29uKQogKiBNb3JlIGludmFsaWQgcG9pbnRlciB0ZXN0cy4g KENocmlzIFdpbHNvbikKCnYxMjoKICogRml4IE1BUF9GSVhFRCB1c2UgKGRvaCEpLgogKiBGaXgg Z2V0L3NldCBjb3B5JnBhc3RlIGVycm9ycy4KICogRHJvcCBzdXBwb3J0ZWQgcGxhdGZvcm0gdGVz dC4gKENocmlzIFdpbHNvbikKICogQWRkIG1tYXBfX2d0dCB0ZXN0LiAoQ2hyaXMgV2lsc29uKQoK djEzOgogKiBDb21taXQgbWVzc2FnZSB0d2Vha3MuCiAqIEFkZGVkIHJlc2V0L2hhbmcvc3VzcGVu ZCB0ZXN0cy4gKENocmlzIFdpbHNvbikKICogQXNzZXJ0IHNwaW5uZXIgaXMgYnVzeS4gKENocmlz IFdpbHNvbikKICogUmVtb3ZlIHNvbWUgbW9yZSBBQkkgYXNzdW1wdGlvbnMuIChDaHJpcyBXaWxz b24pCgp2MTQ6CiAqIFVzZSBkZWZhdWx0IHJlc3VtZSB0aW1lLiAoQ2hyaXMgV2lsc29uKQogKiBU cmlnZ2VyIGhhbmcgYWZ0ZXIgcnBjcyByZWFkIGJhdGNoIGhhcyBiZWVuIHN1Ym1pdHRlZC4gKENo cmlzIFdpbHNvbikKCnYxNToKICogQWRqdXN0IGZvciB1QVBJIHJlc3RyaWN0aW9ucy4KCnYxNjoK ICogQnVpbGQgc3lzdGVtIGNoYW5nZXMuCgp2MTc6CiAqIFJlbW92ZSBhbGwgc3VidGVzdHMgd2hp Y2ggcmVhZCB0aGUgUlBDUyByZWdpc3Rlci4gKEpvb25hcyBMYWh0aW5lbikKClNpZ25lZC1vZmYt Ynk6IExpb25lbCBMYW5kd2VybGluIDxsaW9uZWwuZy5sYW5kd2VybGluQGludGVsLmNvbT4KU2ln bmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KUmV2 aWV3ZWQtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPiAjIHYxNAot LS0KIHRlc3RzL01ha2VmaWxlLmFtICAgICAgICAgIHwgICAxICsKIHRlc3RzL01ha2VmaWxlLnNv dXJjZXMgICAgIHwgICAzICsKIHRlc3RzL2k5MTUvZ2VtX2N0eF9wYXJhbS5jIHwgICA0ICstCiB0 ZXN0cy9pOTE1L2dlbV9jdHhfc3NldS5jICB8IDUzMiArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCiB0ZXN0cy9tZXNvbi5idWlsZCAgICAgICAgICB8ICAgOCArCiA1IGZpbGVz IGNoYW5nZWQsIDU0NyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgdGVzdHMvaTkxNS9nZW1fY3R4X3NzZXUuYwoKZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2Vm aWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KaW5kZXggM2QxY2UwYmMxYWY4Li43OTMzM2FjN2Ri MjYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL01ha2VmaWxlLmFtCisrKyBiL3Rlc3RzL01ha2VmaWxlLmFt CkBAIC0xMDksNiArMTA5LDcgQEAgZ2VtX2Nsb3NlX3JhY2VfQ0ZMQUdTID0gJChBTV9DRkxBR1Mp ICQoVEhSRUFEX0NGTEFHUykKIGdlbV9jbG9zZV9yYWNlX0xEQUREID0gJChMREFERCkgLWxwdGhy ZWFkCiBnZW1fY3R4X3RocmFzaF9DRkxBR1MgPSAkKEFNX0NGTEFHUykgJChUSFJFQURfQ0ZMQUdT KQogZ2VtX2N0eF90aHJhc2hfTERBREQgPSAkKExEQUREKSAtbHB0aHJlYWQKK2dlbV9jdHhfc3Nl dV9MREFERCA9ICQoTERBREQpICQodG9wX2J1aWxkZGlyKS9saWIvbGliaWd0X3BlcmYubGEKIGdl bV9leGVjX3BhcmFsbGVsX0NGTEFHUyA9ICQoQU1fQ0ZMQUdTKSAkKFRIUkVBRF9DRkxBR1MpCiBn ZW1fZXhlY19wYXJhbGxlbF9MREFERCA9ICQoTERBREQpIC1scHRocmVhZAogZ2VtX2ZlbmNlX3Ro cmFzaF9DRkxBR1MgPSAkKEFNX0NGTEFHUykgJChUSFJFQURfQ0ZMQUdTKQpkaWZmIC0tZ2l0IGEv dGVzdHMvTWFrZWZpbGUuc291cmNlcyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKaW5kZXggYzkx MDIxMGI5OTJmLi5mZDk5YmMxNWRhNjcgMTAwNjQ0Ci0tLSBhL3Rlc3RzL01ha2VmaWxlLnNvdXJj ZXMKKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwpAQCAtMTU5LDYgKzE1OSw5IEBAIGdlbV9j dHhfaXNvbGF0aW9uX1NPVVJDRVMgPSBpOTE1L2dlbV9jdHhfaXNvbGF0aW9uLmMKIFRFU1RTX3By b2dzICs9IGdlbV9jdHhfcGFyYW0KIGdlbV9jdHhfcGFyYW1fU09VUkNFUyA9IGk5MTUvZ2VtX2N0 eF9wYXJhbS5jCiAKK1RFU1RTX3Byb2dzICs9IGdlbV9jdHhfc3NldQorZ2VtX2N0eF9zc2V1X1NP VVJDRVMgPSBpOTE1L2dlbV9jdHhfc3NldS5jCisKIFRFU1RTX3Byb2dzICs9IGdlbV9jdHhfc3dp dGNoCiBnZW1fY3R4X3N3aXRjaF9TT1VSQ0VTID0gaTkxNS9nZW1fY3R4X3N3aXRjaC5jCiAKZGlm ZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX2N0eF9wYXJhbS5jIGIvdGVzdHMvaTkxNS9nZW1fY3R4 X3BhcmFtLmMKaW5kZXggYzQ2ZmQ3MDliMGQ3Li5hZjFhZmVhYTJmMmYgMTAwNjQ0Ci0tLSBhL3Rl c3RzL2k5MTUvZ2VtX2N0eF9wYXJhbS5jCisrKyBiL3Rlc3RzL2k5MTUvZ2VtX2N0eF9wYXJhbS5j CkBAIC0yOTQsMTEgKzI5NCwxMyBAQCBpZ3RfbWFpbgogCQkJc2V0X3ByaW9yaXR5KGZkKTsKIAl9 CiAKKwkvKiBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVSB0ZXN0cyBhcmUgbG9jYXRlZCBpbiBnZW1f Y3R4X3NzZXUuYyAqLworCiAJLyogTk9URTogVGhpcyB0ZXN0Y2FzZSBpbnRlbnRpb25hbGx5IHRl c3RzIGZvciB0aGUgbmV4dCBmcmVlIHBhcmFtZXRlcgogCSAqIHRvIGNhdGNoIEFCSSBleHRlbnNp b25zLiBEb24ndCAiZml4IiB0aGlzIHRlc3RjYXNlIHdpdGhvdXQgYWRkaW5nIGFsbAogCSAqIHRo ZSB0ZXN0cyBmb3IgdGhlIG5ldyBwYXJhbSBmaXJzdC4KIAkgKi8KLQlhcmcucGFyYW0gPSBJOTE1 X0NPTlRFWFRfUEFSQU1fUFJJT1JJVFkgKyAxOworCWFyZy5wYXJhbSA9IEk5MTVfQ09OVEVYVF9Q QVJBTV9TU0VVICsgMTsKIAogCWlndF9zdWJ0ZXN0KCJpbnZhbGlkLXBhcmFtLWdldCIpIHsKIAkJ YXJnLmN0eF9pZCA9IGN0eDsKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX2N0eF9zc2V1LmMg Yi90ZXN0cy9pOTE1L2dlbV9jdHhfc3NldS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uZTVkNjAzMGNjOWIzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvaTkxNS9n ZW1fY3R4X3NzZXUuYwpAQCAtMCwwICsxLDUzMiBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE3 LTIwMTggSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBv ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAi U29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp b24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBj b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICog YW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z IHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQg bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAq IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlh bCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9S CisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT IE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF IEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMg T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1Ig T1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP UlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBU SEUgU09GVFdBUkUuCisgKgorICogQXV0aG9yczoKKyAqICAgIExpb25lbCBMYW5kd2VybGluIDxs aW9uZWwuZy5sYW5kd2VybGluQGludGVsLmNvbT4KKyAqCisgKi8KKworI2luY2x1ZGUgImlndC5o IgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3Ry aW5nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRl IDxzaWduYWwuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNs dWRlIDxzeXMvbW1hbi5oPgorI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisKKyNpbmNsdWRlICJpZ3Rf ZHVtbXlsb2FkLmgiCisjaW5jbHVkZSAiaWd0X3BlcmYuaCIKKyNpbmNsdWRlICJpZ3Rfc3lzZnMu aCIKKyNpbmNsdWRlICJpb2N0bF93cmFwcGVycy5oIgorCitJR1RfVEVTVF9ERVNDUklQVElPTigi VGVzdCBjb250ZXh0IHJlbmRlciBwb3dlcmdhdGluZyBwcm9ncmFtbWluZy4iKTsKKworc3RhdGlj IHVuc2lnbmVkIGludCBfX2ludGVsX2dlbl9fLCBfX2ludGVsX2RldmlkX187CitzdGF0aWMgdWlu dDY0X3QgX19zbGljZV9tYXNrX18sIF9fc3Vic2xpY2VfbWFza19fOworc3RhdGljIHVuc2lnbmVk IGludCBfX3NsaWNlX2NvdW50X18sIF9fc3Vic2xpY2VfY291bnRfXzsKKworc3RhdGljIHVpbnQ2 NF90IG1hc2tfbWludXNfb25lKHVpbnQ2NF90IG1hc2spCit7CisJdW5zaWduZWQgaW50IGk7CisK Kwlmb3IgKGkgPSAwOyBpIDwgKHNpemVvZihtYXNrKSAqIDggLSAxKTsgaSsrKSB7CisJCWlmICgo MVVMTCA8PCBpKSAmIG1hc2spCisJCQlyZXR1cm4gbWFzayAmIH4oMVVMTCA8PCBpKTsKKwl9CisK KwlpZ3RfYXNzZXJ0KDApOworCXJldHVybiAwOworfQorCitzdGF0aWMgdWludDY0X3QgbWFza19w bHVzX29uZSh1aW50NjRfdCBtYXNrKQoreworCXVuc2lnbmVkIGludCBpOworCisJZm9yIChpID0g MDsgaSA8IChzaXplb2YobWFzaykgKiA4IC0gMSk7IGkrKykgeworCQlpZiAoKCgxVUxMIDw8IGkp ICYgbWFzaykgPT0gMCkKKwkJCXJldHVybiBtYXNrIHwgKDFVTEwgPDwgaSk7CisJfQorCisJaWd0 X2Fzc2VydCgwKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHVpbnQ2NF90IG1hc2tfbWludXMo dWludDY0X3QgbWFzaywgaW50IG4pCit7CisJdW5zaWduZWQgaW50IGk7CisKKwlmb3IgKGkgPSAw OyBpIDwgbjsgaSsrKQorCQltYXNrID0gbWFza19taW51c19vbmUobWFzayk7CisKKwlyZXR1cm4g bWFzazsKK30KKworc3RhdGljIHVpbnQ2NF90IG1hc2tfcGx1cyh1aW50NjRfdCBtYXNrLCBpbnQg bikKK3sKKwl1bnNpZ25lZCBpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspCisJCW1h c2sgPSBtYXNrX3BsdXNfb25lKG1hc2spOworCisJcmV0dXJuIG1hc2s7Cit9CisKK3N0YXRpYyBi b29sCitrZXJuZWxfaGFzX3Blcl9jb250ZXh0X3NzZXVfc3VwcG9ydChpbnQgZmQpCit7CisJc3Ry dWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3NzZXUgc3NldSA9IHsgfTsKKwlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gYXJnID0KKwkJeworCQkgIC5wYXJhbSA9IEk5MTVf Q09OVEVYVF9QQVJBTV9TU0VVLAorCQkgIC5zaXplID0gc2l6ZW9mKHNzZXUpLAorCQkgIC52YWx1 ZSA9IHRvX3VzZXJfcG9pbnRlcigmc3NldSksCisJCX07CisJaW50IHJldDsKKworCWlmIChfX2dl bV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFyZykpCisJCXJldHVybiBmYWxzZTsKKworCWFyZy52 YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcigmc3NldSk7CisKKwlyZXQgPSBfX2dlbV9jb250ZXh0X3Nl dF9wYXJhbShmZCwgJmFyZyk7CisKKwlpZ3RfYXNzZXJ0KHJldCA9PSAwIHx8IHJldCA9PSAtRU5P REVWIHx8IHJldCA9PSAtRUlOVkFMKTsKKworCXJldHVybiByZXQgPT0gMDsKK30KKworc3RhdGlj IGJvb2wgaGFzX2VuZ2luZShpbnQgZmQsIHVuc2lnbmVkIGludCBjbGFzcywgdW5zaWduZWQgaW50 IGluc3RhbmNlKQoreworCWludCBwbXUgPSBwZXJmX2k5MTVfb3BlbihJOTE1X1BNVV9FTkdJTkVf QlVTWShjbGFzcywgaW5zdGFuY2UpKTsKKworCWlmIChwbXUgPj0gMCkKKwkJY2xvc2UocG11KTsK KworCXJldHVybiBwbXUgPj0gMDsKK30KKworLyoKKyAqIFZlcmlmeSB0aGF0IGludmFsaWQgZW5n aW5lcyBhcmUgcmVqZWN0ZWQgYW5kIHZhbGlkIG9uZXMgYXJlIGFjY2VwdGVkLgorICovCitzdGF0 aWMgdm9pZCB0ZXN0X2VuZ2luZXMoaW50IGZkKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29u dGV4dF9wYXJhbV9zc2V1IHNzZXUgPSB7IH07CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0 X3BhcmFtIGFyZyA9CisJCXsgLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX1NTRVUsCisJCSAg LmN0eF9pZCA9IGdlbV9jb250ZXh0X2NyZWF0ZShmZCksCisJCSAgLnNpemUgPSBzaXplb2Yoc3Nl dSksCisJCSAgLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKCZzc2V1KSB9OworCXVuc2lnbmVkIGlu dCBjbGFzcywgaW5zdGFuY2U7CisJaW50IGxhc3Rfd2l0aF9lbmdpbmVzOworCisJLyogZ2V0X3Bh cmFtICovCisKKwlzc2V1Lmluc3RhbmNlID0gLTE7IC8qIEFzc3VtZWQgaW52YWxpZC4gKi8KKwlp Z3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVJTlZBTCk7 CisKKwlzc2V1LmNsYXNzID0gSTkxNV9FTkdJTkVfQ0xBU1NfSU5WQUxJRDsgLyogQm90aCBpbnZh bGlkLiAqLworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZhcmcp LCAtRUlOVkFMKTsKKworCXNzZXUuaW5zdGFuY2UgPSAwOyAvKiBDbGFzcyBpbnZhbGlkLiAqLwor CWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFM KTsKKwlzc2V1LmNsYXNzID0gSTkxNV9FTkdJTkVfQ0xBU1NfUkVOREVSOworCisJbGFzdF93aXRo X2VuZ2luZXMgPSAtMTsKKwlmb3IgKGNsYXNzID0gMDsgY2xhc3MgPCB+MDsgY2xhc3MrKykgewor CQlmb3IgKGluc3RhbmNlID0gMDsgaW5zdGFuY2UgPCB+MDsgaW5zdGFuY2UrKykgeworCQkJaW50 IHJldDsKKworCQkJc3NldS5jbGFzcyA9IGNsYXNzOworCQkJc3NldS5pbnN0YW5jZSA9IGluc3Rh bmNlOworCisJCQlyZXQgPSBfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFyZyk7CisKKwkJ CWlmIChoYXNfZW5naW5lKGZkLCBjbGFzcywgaW5zdGFuY2UpKSB7CisJCQkJaWd0X2Fzc2VydF9l cShyZXQsIDApOworCQkJCWxhc3Rfd2l0aF9lbmdpbmVzID0gY2xhc3M7CisJCQl9IGVsc2Ugewor CQkJCWlndF9hc3NlcnRfZXEocmV0LCAtRUlOVkFMKTsKKwkJCQlpZiAoaW5zdGFuY2UgPiA4KSAv KiBTa2lwIG92ZXIgc29tZSBpbnN0YW5jZSBob2xlcy4gKi8KKwkJCQkJYnJlYWs7CisJCQl9CisJ CX0KKworCQlpZiAoY2xhc3MgLSBsYXN0X3dpdGhfZW5naW5lcyA+IDgpIC8qIFNraXAgb3ZlciBz b21lIGNsYXNzIGhvbGVzLiAqLworCQkJYnJlYWs7CisJfQorCisJLyoKKwkgKiBHZXQgc29tZSBw cm9wZXIgdmFsdWVzIGJlZm9yZSB0cnlpbmcgdG8gcmVwcm9ncmFtIHRoZW0gb250bworCSAqIGFu IGludmFsaWQgZW5naW5lLgorCSAqLworCXNzZXUuY2xhc3MgPSAwOworCXNzZXUuaW5zdGFuY2Ug PSAwOworCWdlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFyZyk7CisKKwkvKiBzZXRfcGFyYW0g Ki8KKworCXNzZXUuaW5zdGFuY2UgPSAtMTsgLyogQXNzdW1lZCBpbnZhbGlkLiAqLworCWlndF9h c3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUlOVkFMKTsKKwor CXNzZXUuY2xhc3MgPSBJOTE1X0VOR0lORV9DTEFTU19JTlZBTElEOyAvKiBCb3RoIGludmFsaWQu ICovCisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1F SU5WQUwpOworCisJc3NldS5pbnN0YW5jZSA9IDA7IC8qIENsYXNzIGludmFsaWQuICovCisJaWd0 X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FSU5WQUwpOwor CisJbGFzdF93aXRoX2VuZ2luZXMgPSAtMTsKKwlmb3IgKGNsYXNzID0gMDsgY2xhc3MgPCB+MDsg Y2xhc3MrKykgeworCQlmb3IgKGluc3RhbmNlID0gMDsgaW5zdGFuY2UgPCB+MDsgaW5zdGFuY2Ur KykgeworCQkJaW50IHJldDsKKworCQkJc3NldS5jbGFzcyA9IGNsYXNzOworCQkJc3NldS5pbnN0 YW5jZSA9IGluc3RhbmNlOworCisJCQlyZXQgPSBfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwg JmFyZyk7CisKKwkJCWlmIChoYXNfZW5naW5lKGZkLCBjbGFzcywgaW5zdGFuY2UpKSB7CisJCQkJ aWd0X2Fzc2VydChyZXQgPT0gMCB8fCByZXQgPT0gLUVOT0RFVik7CisJCQkJbGFzdF93aXRoX2Vu Z2luZXMgPSBjbGFzczsKKwkJCX0gZWxzZSB7CisJCQkJaWd0X2Fzc2VydF9lcShyZXQsIC1FSU5W QUwpOworCQkJCWlmIChpbnN0YW5jZSA+IDgpIC8qIFNraXAgb3ZlciBzb21lIGluc3RhbmNlIGhv bGVzLiAqLworCQkJCQlicmVhazsKKwkJCX0KKwkJfQorCisJCWlmIChjbGFzcyAtIGxhc3Rfd2l0 aF9lbmdpbmVzID4gOCkgLyogU2tpcCBvdmVyIHNvbWUgY2xhc3MgaG9sZXMuICovCisJCQlicmVh azsKKwl9CisKKwlnZW1fY29udGV4dF9kZXN0cm95KGZkLCBhcmcuY3R4X2lkKTsKK30KKworLyoK KyAqIFZlcmlmeSB0aGF0IGludmFsaWQgYXJndW1lbnRzIGFyZSByZWplY3RlZC4KKyAqLworc3Rh dGljIHZvaWQKK3Rlc3RfaW52YWxpZF9hcmdzKGludCBmZCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2NvbnRleHRfcGFyYW0gYXJnID0KKwkJeyAucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1f U1NFVSwKKwkJICAuY3R4X2lkID0gZ2VtX2NvbnRleHRfY3JlYXRlKGZkKSwKKwkJfTsKKwlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSBzc2V1ID0geyB9OworCXVuc2lnbmVk IGNoYXIgKnBhZ2VbMl07CisJdW5zaWduZWQgY2hhciAqYWRkcjsKKwl1bnNpZ25lZCBpbnQgc3o7 CisKKwkvKiBnZXQgcGFyYW0gKi8KKworCS8qIEludmFsaWQgc2l6ZS4gKi8KKwlhcmcuc2l6ZSA9 IDE7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFyZyksIC1F SU5WQUwpOworCisJLyogUXVlcnkgc2l6ZS4gKi8KKwlhcmcuc2l6ZSA9IDA7CisJaWd0X2Fzc2Vy dF9lcShfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFyZyksIDApOworCXN6ID0gYXJnLnNp emU7CisKKwkvKiBCYWQgcG9pbnRlcnMuICovCisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0 X2dldF9wYXJhbShmZCwgJmFyZyksIC1FRkFVTFQpOworCWFyZy52YWx1ZSA9IC0xOworCWlndF9h c3NlcnRfZXEoX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZhcmcpLCAtRUZBVUxUKTsKKwlh cmcudmFsdWUgPSAxOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQs ICZhcmcpLCAtRUZBVUxUKTsKKworCS8qIFVubWFwcGVkLiAqLworCXBhZ2VbMF0gPSBtbWFwKDAs IDQwOTYsIFBST1RfV1JJVEUsIE1BUF9QUklWQVRFIHwgTUFQX0FOT04sIC0xLCAwKTsKKwlpZ3Rf YXNzZXJ0KHBhZ2VbMF0gIT0gTUFQX0ZBSUxFRCk7CisJbWVtc2V0KHBhZ2VbMF0sIDAsIHNpemVv Zihzc2V1KSk7CisJbXVubWFwKHBhZ2VbMF0sIDQwOTYpOworCWFyZy52YWx1ZSA9IHRvX3VzZXJf cG9pbnRlcihwYWdlWzBdKTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfZ2V0X3BhcmFt KGZkLCAmYXJnKSwgLUVGQVVMVCk7CisKKwkvKiBTdHJhZGRsZSBpbnRvIHVubWFwcGVkIGFyZWEu ICovCisJcGFnZVswXSA9IG1tYXAoMCwgODE5MiwgUFJPVF9XUklURSwgTUFQX1BSSVZBVEUgfCBN QVBfQU5PTiwgLTEsIDApOworCWlndF9hc3NlcnQocGFnZVswXSAhPSBNQVBfRkFJTEVEKTsKKwlt dW5tYXAocGFnZVswXSwgODE5Mik7CisJcGFnZVswXSA9IG1tYXAocGFnZVswXSwgNDA5NiwKKwkJ ICAgICAgIFBST1RfV1JJVEUsIE1BUF9QUklWQVRFIHwgTUFQX0FOT04gfCBNQVBfRklYRUQsIC0x LCAwKTsKKwlpZ3RfYXNzZXJ0KHBhZ2VbMF0gIT0gTUFQX0ZBSUxFRCk7CisJbWVtc2V0KHBhZ2Vb MF0sIDAsIHNpemVvZihzc2V1KSk7CisJcGFnZVsxXSA9IG1tYXAoKHZvaWQgKikoKHVuc2lnbmVk IGxvbmcpcGFnZVswXSArIDQwOTYpLCA0MDk2LAorCQkgICAgICAgUFJPVF9XUklURSwgTUFQX1BS SVZBVEUgfCBNQVBfQU5PTiB8IE1BUF9GSVhFRCwgLTEsIDApOworCWlndF9hc3NlcnQocGFnZVsx XSAhPSBNQVBfRkFJTEVEKTsKKwltZW1zZXQocGFnZVsxXSwgMCwgc2l6ZW9mKHNzZXUpKTsKKwlt dW5tYXAocGFnZVsxXSwgNDA5Nik7CisJYXJnLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKHBhZ2Vb MV0pIC0KKwkJICAgIHNpemVvZihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3Nl dSkgKyA0OworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZhcmcp LCAtRUZBVUxUKTsKKwltdW5tYXAocGFnZVswXSwgNDA5Nik7CisKKwkvKiBTdHJhZGRsZSBpbnRv IHJlYWQtb25seSBhcmVhLiAqLworCXBhZ2VbMF0gPSBtbWFwKDAsIDgxOTIsIFBST1RfV1JJVEUs IE1BUF9QUklWQVRFIHwgTUFQX0FOT04sIC0xLCAwKTsKKwlpZ3RfYXNzZXJ0KHBhZ2VbMF0gIT0g TUFQX0ZBSUxFRCk7CisJbXVubWFwKHBhZ2VbMF0sIDgxOTIpOworCXBhZ2VbMF0gPSBtbWFwKHBh Z2VbMF0sIDQwOTYsCisJCSAgICAgICBQUk9UX1dSSVRFLCBNQVBfUFJJVkFURSB8IE1BUF9BTk9O IHwgTUFQX0ZJWEVELCAtMSwgMCk7CisJaWd0X2Fzc2VydChwYWdlWzBdICE9IE1BUF9GQUlMRUQp OworCW1lbXNldChwYWdlWzBdLCAwLCBzaXplb2Yoc3NldSkpOworCXBhZ2VbMV0gPSBtbWFwKCh2 b2lkICopKCh1bnNpZ25lZCBsb25nKXBhZ2VbMF0gKyA0MDk2KSwgNDA5NiwKKwkJICAgICAgIFBS T1RfV1JJVEUsIE1BUF9QUklWQVRFIHwgTUFQX0FOT04gfCBNQVBfRklYRUQsIC0xLCAwKTsKKwlp Z3RfYXNzZXJ0KHBhZ2VbMV0gIT0gTUFQX0ZBSUxFRCk7CisJbWVtc2V0KHBhZ2VbMV0sIDAsIHNp emVvZihzc2V1KSk7CisJaWd0X2Fzc2VydChtcHJvdGVjdChwYWdlWzFdLCA0MDk2LCBQUk9UX1JF QUQpID09IDApOworCWFyZy52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcihwYWdlWzFdIC0gc2l6ZW9m KHNzZXUpICsgNCk7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwg JmFyZyksIC1FRkFVTFQpOworCW11bm1hcChwYWdlWzBdLCA0MDk2KTsKKwltdW5tYXAocGFnZVsx XSwgNDA5Nik7CisKKwkvKiBzZXQgcGFyYW0gKi8KKworCS8qIEludmFsaWQgc2l6ZXMuICovCisJ YXJnLnNpemUgPSAxOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQs ICZhcmcpLCAtRUlOVkFMKTsKKworCWFyZy5zaXplID0gMDsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2Vt X2NvbnRleHRfc2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVJTlZBTCk7CisJYXJnLnNpemUgPSBzejsK KworCS8qIEJhZCBwb2ludGVycy4gKi8KKwlhcmcudmFsdWUgPSAwOworCWlndF9hc3NlcnRfZXEo X19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAtRUZBVUxUKTsKKwlhcmcudmFsdWUg PSAtMTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZkLCAmYXJnKSwg LUVGQVVMVCk7CisJYXJnLnZhbHVlID0gMTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRf c2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVGQVVMVCk7CisKKwkvKiBHZXQgdmFsaWQgU1NFVS4gKi8K KwlhcmcudmFsdWUgPSB0b191c2VyX3BvaW50ZXIoJnNzZXUpOworCWlndF9hc3NlcnRfZXEoX19n ZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZhcmcpLCAwKTsKKworCS8qIFVubWFwcGVkLiAqLwor CXBhZ2VbMF0gPSBtbWFwKDAsIDQwOTYsIFBST1RfV1JJVEUsIE1BUF9QUklWQVRFIHwgTUFQX0FO T04sIC0xLCAwKTsKKwlpZ3RfYXNzZXJ0KHBhZ2VbMF0gIT0gTUFQX0ZBSUxFRCk7CisJbWVtY3B5 KHBhZ2VbMF0sICZzc2V1LCBzaXplb2Yoc3NldSkpOworCW11bm1hcChwYWdlWzBdLCA0MDk2KTsK KwlhcmcudmFsdWUgPSB0b191c2VyX3BvaW50ZXIocGFnZVswXSk7CisJaWd0X2Fzc2VydF9lcShf X2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FRkFVTFQpOworCisJLyogU3RyYWRk bGUgaW50byB1bm1hcHBlZCBhcmVhLiAqLworCXBhZ2VbMF0gPSBtbWFwKDAsIDgxOTIsIFBST1Rf V1JJVEUsIE1BUF9QUklWQVRFIHwgTUFQX0FOT04sIC0xLCAwKTsKKwlpZ3RfYXNzZXJ0KHBhZ2Vb MF0gIT0gTUFQX0ZBSUxFRCk7CisJbXVubWFwKHBhZ2VbMF0sIDgxOTIpOworCXBhZ2VbMF0gPSBt bWFwKHBhZ2VbMF0sIDQwOTYsCisJCSAgICAgICBQUk9UX1dSSVRFLCBNQVBfUFJJVkFURSB8IE1B UF9BTk9OIHwgTUFQX0ZJWEVELCAtMSwgMCk7CisJaWd0X2Fzc2VydChwYWdlWzBdICE9IE1BUF9G QUlMRUQpOworCXBhZ2VbMV0gPSBtbWFwKCh2b2lkICopKCh1bnNpZ25lZCBsb25nKXBhZ2VbMF0g KyA0MDk2KSwgNDA5NiwKKwkJICAgICAgIFBST1RfV1JJVEUsIE1BUF9QUklWQVRFIHwgTUFQX0FO T04gfCBNQVBfRklYRUQsIC0xLCAwKTsKKwlpZ3RfYXNzZXJ0KHBhZ2VbMV0gIT0gTUFQX0ZBSUxF RCk7CisJYWRkciA9IHBhZ2VbMV0gLSBzaXplb2Yoc3NldSkgKyA0OworCW1lbWNweShhZGRyLCAm c3NldSwgc2l6ZW9mKHNzZXUpKTsKKwltdW5tYXAocGFnZVsxXSwgNDA5Nik7CisJYXJnLnZhbHVl ID0gdG9fdXNlcl9wb2ludGVyKGFkZHIpOworCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9z ZXRfcGFyYW0oZmQsICZhcmcpLCAtRUZBVUxUKTsKKwltdW5tYXAocGFnZVswXSwgNDA5Nik7CisK KwlnZW1fY29udGV4dF9kZXN0cm95KGZkLCBhcmcuY3R4X2lkKTsKK30KKworLyoKKyAqIFZlcmlm eSB0aGF0IGdndHQgbWFwcGVkIGFyZWEgY2FuIGJlIHVzZWQgYXMgdGhlIHNzZXUgcG9pbnRlci4K KyAqLworc3RhdGljIHZvaWQKK3Rlc3RfZ2d0dF9hcmdzKGludCBmZCkKK3sKKwlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSAqc3NldTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X2NvbnRleHRfcGFyYW0gYXJnID0KKwkJeyAucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NF VSwKKwkJICAuY3R4X2lkID0gZ2VtX2NvbnRleHRfY3JlYXRlKGZkKSwKKwkJICAuc2l6ZSA9IHNp emVvZigqc3NldSksCisJCX07CisJdWludDMyX3QgYm87CisKKwlibyA9IGdlbV9jcmVhdGUoZmQs IDQwOTYpOworCWFyZy52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcihnZW1fbW1hcF9fZ3R0KGZkLCBi bywgNDA5NiwKKwkJCQkJCSAgUFJPVF9SRUFEIHwgUFJPVF9XUklURSkpOworCisJaWd0X2Fzc2Vy dF9lcShfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJmFyZyksIDApOworCWlndF9hc3NlcnRf ZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZhcmcpLCAwKTsKKworCW11bm1hcCgodm9p ZCAqKWFyZy52YWx1ZSwgNDA5Nik7CisJZ2VtX2Nsb3NlKGZkLCBibyk7CisJZ2VtX2NvbnRleHRf ZGVzdHJveShmZCwgYXJnLmN0eF9pZCk7Cit9CisKKy8qCisgKiBWZXJpZnkgdGhhdCBpbnZhbGlk IFNTRVUgdmFsdWVzIGFyZSByZWplY3RlZC4KKyAqLworc3RhdGljIHZvaWQKK3Rlc3RfaW52YWxp ZF9zc2V1KGludCBmZCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3Nl dSBkZXZpY2Vfc3NldSA9IHsgfTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1f c3NldSBzc2V1ID0geyB9OworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSBhcmcg PQorCQl7IC5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9TU0VVLAorCQkgIC5jdHhfaWQgPSBn ZW1fY29udGV4dF9jcmVhdGUoZmQpLAorCQkgIC5zaXplID0gc2l6ZW9mKHNzZXUpLAorCQl9Owor CXVuc2lnbmVkIGludCBpOworCisJLyogRmV0Y2ggdGhlIGRldmljZSBkZWZhdWx0cy4gKi8KKwlh cmcudmFsdWUgPSB0b191c2VyX3BvaW50ZXIoJmRldmljZV9zc2V1KTsKKwlnZW1fY29udGV4dF9n ZXRfcGFyYW0oZmQsICZhcmcpOworCisJYXJnLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKCZzc2V1 KTsKKworCS8qIFRyeSBhbGwgc2xpY2UgbWFza3Mga25vd24gdG8gYmUgaW52YWxpZC4gKi8KKwlz c2V1ID0gZGV2aWNlX3NzZXU7CisJZm9yIChpID0gMTsgaSA8PSAoOCAtIF9fc2xpY2VfY291bnRf Xyk7IGkrKykgeworCQlzc2V1LnNsaWNlX21hc2sgPSBtYXNrX3BsdXMoX19zbGljZV9tYXNrX18s IGkpOworCQlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZkLCAmYXJnKSwg LUVJTlZBTCk7CisJfQorCisJLyogMCBzbGljZXMuICovCisJc3NldS5zbGljZV9tYXNrID0gMDsK KwlpZ3RfYXNzZXJ0X2VxKC1FSU5WQUwsIF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZkLCAmYXJn KSk7CisKKwkvKiBUcnkgYWxsIHN1YnNsaWNlIG1hc2tzIGtub3duIHRvIGJlIGludmFsaWQuICov CisJc3NldSA9IGRldmljZV9zc2V1OworCWZvciAoaSA9IDE7IGkgPD0gKDggLSBfX3N1YnNsaWNl X2NvdW50X18pOyBpKyspIHsKKwkJc3NldS5zdWJzbGljZV9tYXNrID0gbWFza19wbHVzKF9fc3Vi c2xpY2VfbWFza19fLCBpKTsKKwkJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJh bShmZCwgJmFyZyksIC1FSU5WQUwpOworCX0KKworCS8qIDAgc3Vic2xpY2VzLiAqLworCXNzZXUu c3Vic2xpY2VfbWFzayA9IDA7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJh bShmZCwgJmFyZyksIC1FSU5WQUwpOworCisJLyogVHJ5IG51bWJlciBvZiBFVXMgc3VwZXJpb3Ig dG8gdGhlIG1heCBhdmFpbGFibGUuICovCisJc3NldSA9IGRldmljZV9zc2V1OworCXNzZXUubWlu X2V1c19wZXJfc3Vic2xpY2UgPSBkZXZpY2Vfc3NldS5tYXhfZXVzX3Blcl9zdWJzbGljZSArIDE7 CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FSU5W QUwpOworCisJc3NldSA9IGRldmljZV9zc2V1OworCXNzZXUubWF4X2V1c19wZXJfc3Vic2xpY2Ug PSBkZXZpY2Vfc3NldS5tYXhfZXVzX3Blcl9zdWJzbGljZSArIDE7CisJaWd0X2Fzc2VydF9lcShf X2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FSU5WQUwpOworCisJLyogVHJ5IHRv IHByb2dyYW0gMCBtYXggRVVzLiAqLworCXNzZXUgPSBkZXZpY2Vfc3NldTsKKwlzc2V1Lm1heF9l dXNfcGVyX3N1YnNsaWNlID0gMDsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3Bh cmFtKGZkLCAmYXJnKSwgLUVJTlZBTCk7CisKKwkvKiBNaW4gPiBtYXggKi8KKwlzc2V1ID0gZGV2 aWNlX3NzZXU7CisJc3NldS5taW5fZXVzX3Blcl9zdWJzbGljZSA9IHNzZXUubWF4X2V1c19wZXJf c3Vic2xpY2U7CisJc3NldS5tYXhfZXVzX3Blcl9zdWJzbGljZSA9IDE7CisJaWd0X2Fzc2VydF9l cShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FSU5WQUwpOworCisJaWYgKF9f aW50ZWxfZ2VuX18gIT0gMTEpCisJCWdvdG8gb3V0OworCisJLyogU3Vic2V0IG9mIHN1YnNsaWNl cyBidXQgc2xpY2UgbWFzayBncmVhdGVyIHRoYW4gb25lLiAqLworCWlmIChfX3NsaWNlX2NvdW50 X18gPiAxKSB7CisJCXNzZXUgPSBkZXZpY2Vfc3NldTsKKwkJc3NldS5zdWJzbGljZV9tYXNrID0g bWFza19taW51c19vbmUoc3NldS5zdWJzbGljZV9tYXNrKTsKKwkJaWd0X2Fzc2VydF9lcShfX2dl bV9jb250ZXh0X3NldF9wYXJhbShmZCwgJmFyZyksIC1FSU5WQUwpOworCX0KKworCS8qIE9kZCBz dWJzbGljZXMgYWJvdmUgZm91ci4gKi8KKwlzc2V1ID0gZGV2aWNlX3NzZXU7CisJc3NldS5zbGlj ZV9tYXNrID0gMHgxOworCXNzZXUuc3Vic2xpY2VfbWFzayA9IG1hc2tfbWludXNfb25lKHNzZXUu c3Vic2xpY2VfbWFzayk7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShm ZCwgJmFyZyksIC1FSU5WQUwpOworCisJLyogTW9yZSB0aGFuIGhhbGYgc3Vic2xpY2VzIHdpdGgg b25lIHNsaWNlLiAqLworCXNzZXUgPSBkZXZpY2Vfc3NldTsKKwlzc2V1LnNsaWNlX21hc2sgPSAw eDE7CisJc3NldS5zdWJzbGljZV9tYXNrID0gbWFza19taW51cyhzc2V1LnN1YnNsaWNlX21hc2ss CisJCQkJCV9fc3Vic2xpY2VfY291bnRfXyAvIDIgLSAxKTsKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2Vt X2NvbnRleHRfc2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVJTlZBTCk7CisKKwkvKiBWTUUgKi8KKwor CS8qIFNsaWNlIGNvdW50IGJldHdlZW4gb25lIGFuZCBtYXguICovCisJaWYgKF9fc2xpY2VfY291 bnRfXyA+IDIpIHsKKwkJc3NldSA9IGRldmljZV9zc2V1OworCQlzc2V1LnNsaWNlX21hc2sgPSBt YXNrX21pbnVzX29uZShzc2V1LnNsaWNlX21hc2spOworCQlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2Nv bnRleHRfc2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVJTlZBTCk7CisJfQorCisJLyogTGVzcyB0aGFu IGhhbGYgc3Vic2xpY2VzIHdpdGggb25lIHNsaWNlLiAqLworCXNzZXUgPSBkZXZpY2Vfc3NldTsK Kwlzc2V1LnNsaWNlX21hc2sgPSAweDE7CisJc3NldS5zdWJzbGljZV9tYXNrID0gbWFza19taW51 cyhzc2V1LnN1YnNsaWNlX21hc2ssCisJCQkJCV9fc3Vic2xpY2VfY291bnRfXyAvIDIgKyAxKTsK KwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZkLCAmYXJnKSwgLUVJTlZB TCk7CisKK291dDoKKwlnZW1fY29udGV4dF9kZXN0cm95KGZkLCBhcmcuY3R4X2lkKTsKK30KKwor aWd0X21haW4KK3sKKwlpbnQgZmQ7CisKKwlpZ3RfZml4dHVyZSB7CisJCWZkID0gZHJtX29wZW5f ZHJpdmVyKERSSVZFUl9JTlRFTCk7CisJCWlndF9yZXF1aXJlX2dlbShmZCk7CisKKwkJX19pbnRl bF9kZXZpZF9fID0gaW50ZWxfZ2V0X2RybV9kZXZpZChmZCk7CisJCV9faW50ZWxfZ2VuX18gPSBp bnRlbF9nZW4oX19pbnRlbF9kZXZpZF9fKTsKKworCQlpZ3RfcmVxdWlyZShrZXJuZWxfaGFzX3Bl cl9jb250ZXh0X3NzZXVfc3VwcG9ydChmZCkpOworCX0KKworCWlndF9zdWJ0ZXN0X2dyb3VwIHsK KwkJaWd0X2ZpeHR1cmUgeworCQkJZHJtX2k5MTVfZ2V0cGFyYW1fdCBncDsKKworCQkJZ3AucGFy YW0gPSBJOTE1X1BBUkFNX1NMSUNFX01BU0s7CisJCQlncC52YWx1ZSA9IChpbnQgKikgJl9fc2xp Y2VfbWFza19fOworCQkJZG9faW9jdGwoZmQsIERSTV9JT0NUTF9JOTE1X0dFVFBBUkFNLCAmZ3Ap OworCQkJX19zbGljZV9jb3VudF9fID0gX19idWlsdGluX3BvcGNvdW50KF9fc2xpY2VfbWFza19f KTsKKworCQkJZ3AucGFyYW0gPSBJOTE1X1BBUkFNX1NVQlNMSUNFX01BU0s7CisJCQlncC52YWx1 ZSA9IChpbnQgKikgJl9fc3Vic2xpY2VfbWFza19fOworCQkJZG9faW9jdGwoZmQsIERSTV9JT0NU TF9JOTE1X0dFVFBBUkFNLCAmZ3ApOworCQkJX19zdWJzbGljZV9jb3VudF9fID0KKwkJCQlfX2J1 aWx0aW5fcG9wY291bnQoX19zdWJzbGljZV9tYXNrX18pOworCQl9CisKKwkJaWd0X3N1YnRlc3Qo ImludmFsaWQtYXJncyIpCisJCQl0ZXN0X2ludmFsaWRfYXJncyhmZCk7CisKKwkJaWd0X3N1YnRl c3QoImludmFsaWQtc3NldSIpCisJCQl0ZXN0X2ludmFsaWRfc3NldShmZCk7CisKKwkJaWd0X3N1 YnRlc3QoImdndHQtYXJncyIpCisJCQl0ZXN0X2dndHRfYXJncyhmZCk7CisKKwkJaWd0X3N1YnRl c3QoImVuZ2luZXMiKQorCQkJdGVzdF9lbmdpbmVzKGZkKTsKKwl9CisKKwlpZ3RfZml4dHVyZSB7 CisJCWNsb3NlKGZkKTsKKwl9Cit9CmRpZmYgLS1naXQgYS90ZXN0cy9tZXNvbi5idWlsZCBiL3Rl c3RzL21lc29uLmJ1aWxkCmluZGV4IGVhY2RjMWE3MTJjYS4uMTk5MmIwNzQwZjM1IDEwMDY0NAot LS0gYS90ZXN0cy9tZXNvbi5idWlsZAorKysgYi90ZXN0cy9tZXNvbi5idWlsZApAQCAtMjgzLDYg KzI4MywxNCBAQCBmb3JlYWNoIHByb2cgOiBnZW1fcHJvZ3MgKyBnZW4zX3Byb2dzCiAJdGVzdF9s aXN0ICs9IHByb2cKIGVuZGZvcmVhY2gKIAordGVzdF9leGVjdXRhYmxlcyArPSBleGVjdXRhYmxl KCdnZW1fY3R4X3NzZXUnLAorCSAgIGpvaW5fcGF0aHMoJ2k5MTUnLCAnZ2VtX2N0eF9zc2V1LmMn KSwKKwkgICBkZXBlbmRlbmNpZXMgOiB0ZXN0X2RlcHMgKyBbIGxpYl9pZ3RfcGVyZiBdLAorCSAg IGluc3RhbGxfZGlyIDogbGliZXhlY2RpciwKKwkgICBpbnN0YWxsX3JwYXRoIDogbGliZXhlY2Rp cl9ycGF0aGRpciwKKwkgICBpbnN0YWxsIDogdHJ1ZSkKK3Rlc3RfcHJvZ3MgKz0gJ2dlbV9jdHhf c3NldScKKwogdGVzdF9leGVjdXRhYmxlcyArPSBleGVjdXRhYmxlKCdnZW1fZWlvJywKIAkgICBq b2luX3BhdGhzKCdpOTE1JywgJ2dlbV9laW8uYycpLAogCSAgIGRlcGVuZGVuY2llcyA6IHRlc3Rf ZGVwcyArIFsgcmVhbHRpbWUgXSwKLS0gCjIuMTkuMQoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==