From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0492889FA7 for ; Tue, 12 Mar 2019 17:17:39 +0000 (UTC) From: Andi Shyti Date: Tue, 12 Mar 2019 19:17:24 +0200 Message-Id: <20190312171728.3352-3-andi.shyti@intel.com> In-Reply-To: <20190312171728.3352-1-andi.shyti@intel.com> References: <20190312171728.3352-1-andi.shyti@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH v11 2/6] lib/i915: add gem_engine_topology library 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 Cc: Andi Shyti List-ID: VGhlIGdlbV9lbmdpbmVfdG9wb2xvZ3kgbGlicmFyeSBpcyBhIHNldCBvZiBmdW5jdGlvbnMgdGhh dAppbnRlcmZhY2Ugd2l0aCB0aGUgcXVlcnkgYW5kIGdldHBhcmFtL3NldHBhcmFtIGlvY3Rscy4K ClRoZSBsaWJyYXJ5J3MgdGhyZWUgbWFpbiBhY2Nlc3MgcG9pbnRzIGFyZToKCiAtIGdldF9hY3Rp dmVfZW5naW5lcygpCiAtIF9fZ2VtX3ByZXBhcmVfY29udGV4dF9lbmdpbmVzKCkKIC0gaWd0X3Jl cXVpcmVfZ2VtX2VuZ2luZV9saXN0KCkKClRoZSBmaXJzdCB0d28gZnVuY3Rpb25zIGFyZSBzaW1p bGFyLCB3aXRoIHRoZSBkaWZmZXJlbmNlIHRoYXQgdGhlCidnZW1fc2V0X2NvbnRleHRfZ2V0X2Vu Z2luZXMoKScgc2V0cyB0aGUgZW5naW5lIGJlZm9yZSByZXR1cm5pbmcKdGhlIGVuZ2luZSBsaXN0 IGluIGEgJ2ludGVsX2V4ZWN1dGlvbl9lbmdpbmUyJyB0eXBlIGFycmF5LgpBbm90aGVyIGltcHJv dGFudCBkaWZmZXJlbmNlIGlzIHRoYXQgdGhlIGZpcnN0IGZ1bmN0aW9uIHdvcmtzCm9ubHkgd2l0 aCB0aGUgZ2V0cGFyYW0vc2V0cGFyYW0gYW5kIHF1ZXJ5IGlvY3RscyBhcmUgaW1wbGVtZW50ZWQK YW5kIGl0IHJldHVybiAnTlVMTCcgaW4gdGhlIG90aGVyIGNhc2UuCkl0IGNhbiBiZSBhbHNvIHVz ZWQgdG8gY2hlY2sgd2hldGhlciB0aGUgY3VycmVudCBrZXJuZWwgY29udGFpbnMKdGhlIG5ldyBB UEkuCgonX19nZW1fcHJlcGFyZV9jb250ZXh0X2VuZ2luZXMoKScgZnVuY3Rpb24sIGF0IHRoZSBm aXJzdCBjYWxsCmdlbmVyYXRlcyB0aGUgYXJyYXkgb2YgYWN0aXZlIGVuZ2luZXMgKGVpdGhlciBw aHlzaWNhbCBvcgp2aXJ0dWFsKSBjYWxsZWQgJ2ludGVsX2FjdGl2ZV9lbmdpbmVzMicuCklmIHRo ZSBkcml2ZXIgY2Fubm90IGJlIHF1ZXJpZWQsIHRoZSAnaW50ZWxfYWN0aXZlX2VuZ2luZXMyJwph cnJheSBwb2ludHMgdG8gdGhlIGV4aXNpdGluZyAnaW50ZWxfZXhlY3V0aW9uX2VuZ2luZXMyJyB3 aGljaApoYXMgYmVlbiBwcmV2aW91c2x5IGRlZmluZWQuCgpUaGUgdmFsdWUgb2YgdGhlICdpbnRl bF9hY3RpdmVfZW5naW5lczInIHdpbGwgYmUgdXNlZCBpbiBmdXJ0aGVyCmNhbGxzIHRvIGNoZWNr IHdoZXRoZXIgdGhlIGFib3ZlIG1lbnRpb25lZCBpb2N0bHMgYXJlIGltcGxlbWVudGVkCndpdGhv dXQgdGhlIG5lZWQgdG8gY2FsbCBnZXRwYXJhbSgpLgoKVGhlICdpZ3RfcmVxdWlyZV9nZW1fZW5n aW5lX2xpc3QoKScgY2F1c2VzIHRoZSB0ZXN0IHRvIGZhaWwgaW4KY2FzZSB0aGUgcmVxdWlyZWQg aW9jdGxzIGFyZSBub3QgaW1wbGVtZW50ZWQuCgpTaWduZWQtb2ZmLWJ5OiBBbmRpIFNoeXRpIDxh bmRpLnNoeXRpQGludGVsLmNvbT4KLS0tCkhpIFR2cnRrbywKCnRoZSBvbmx5IHRoaW5nIEkgbGVm dCB1bnRvdWNoZWQgaGVyZSBpcyB0aGUgZml4ZWQgU0laRU9GX1FVRVJZLApldmVuIHRob3VnaCB0 aGUgcXVlcnkgaW9jdGwgZG9lc24ndCBoYXZlIGFueSBsaW1pdGF0aW9uIG9uIHF1ZXJ5CnNpemUu IFRoZSByZWFzb24gaXMgYmVjYXVzZSB3ZSd2ZSBiZWVuIGRpc2N1c3Npbmcgd2l0aCBDaHJpcwpz ZXR0aW5nIGEgZml4ZWQgc2l6ZSB0byBwcmlvcml0aXNlIHN0YWNrIGFsbG9jYXRpb24gb3ZlciBo ZWFwCmFsbG9jYXRpb24gc28gdGhhdCBJIGNoYW5nZWQgaXQgdG8gdGhlIHdheSBpcyBkb25lIG5v dyBmcm9tIHRoZQp3YXkgeW91IHJlY29tbWVuZGVkIGF0IHRoZSBiZWdpbm5pbmcgKGFscmVhZHkp LgoKQW5kaQoKIGxpYi9NYWtlZmlsZS5zb3VyY2VzICAgICAgICAgICB8ICAgMiArCiBsaWIvaTkx NS9nZW1fZW5naW5lX3RvcG9sb2d5LmMgfCAxOTMgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiBsaWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmggfCAgMzMgKysrKysrCiBsaWIv aWd0X2d0LmMgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGxpYi9pZ3RfZ3QuaCAgICAgICAg ICAgICAgICAgICB8ICAgMiArLQogbGliL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgIHwgICAx ICsKIDYgZmlsZXMgY2hhbmdlZCwgMjMxIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBj cmVhdGUgbW9kZSAxMDA2NDQgbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oCgpkaWZmIC0tZ2l0IGEv bGliL01ha2VmaWxlLnNvdXJjZXMgYi9saWIvTWFrZWZpbGUuc291cmNlcwppbmRleCBjZjI3MjA5 ODE3MDcuLjc1N2JkN2ExN2ViZSAxMDA2NDQKLS0tIGEvbGliL01ha2VmaWxlLnNvdXJjZXMKKysr IGIvbGliL01ha2VmaWxlLnNvdXJjZXMKQEAgLTEzLDYgKzEzLDggQEAgbGliX3NvdXJjZV9saXN0 ID0JIAlcCiAJaTkxNS9nZW1fcmluZy5jCVwKIAlpOTE1L2dlbV9tbWFuLmMJXAogCWk5MTUvZ2Vt X21tYW4uaAlcCisJaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmMJXAorCWk5MTUvZ2VtX2VuZ2lu ZV90b3BvbG9neS5oCVwKIAlpOTE1XzNkLmgJCVwKIAlpOTE1X3JlZy5oCQlcCiAJaTkxNV9wY2lp ZHMuaAkJXApkaWZmIC0tZ2l0IGEvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jIGIvbGli L2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uNmQ2Y2I4NWIwYTI2Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL2k5MTUvZ2Vt X2VuZ2luZV90b3BvbG9neS5jCkBAIC0wLDAgKzEsMTkzIEBACisvKgorICogQ29weXJpZ2h0IMKp IDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBv ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAi U29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp b24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBj b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICog YW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z IHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQg bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAq IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlh bCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9S CisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT IE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF IEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMg T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1Ig T1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP UlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBU SEUgU09GVFdBUkUuCisgKi8KKworI2luY2x1ZGUgImRybXRlc3QuaCIKKyNpbmNsdWRlICJpZ3Rf Z3QuaCIKKyNpbmNsdWRlICJpb2N0bF93cmFwcGVycy5oIgorCisjaW5jbHVkZSAiaTkxNS9nZW1f ZW5naW5lX3RvcG9sb2d5LmgiCisKKyNkZWZpbmUgU0laRU9GX0NUWF9QQVJBTQlvZmZzZXRvZihz dHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMsIFwKKwkJCQkJY2xhc3NfaW5zdGFuY2Vb STkxNV9FWEVDX1JJTkdfTUFTSyArIDFdKQorI2RlZmluZSBTSVpFT0ZfUVVFUlkJCW9mZnNldG9m KHN0cnVjdCBkcm1faTkxNV9xdWVyeV9lbmdpbmVfaW5mbywgXAorCQkJCQllbmdpbmVzW0k5MTVf RVhFQ19SSU5HX01BU0sgKyAxXSkKKworc3RhdGljIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5n aW5lMiAqaW50ZWxfYWN0aXZlX2VuZ2luZXMyOworc3RhdGljIGJvb2wgY3R4X2lzX3NldDsKKwor c3RhdGljIGludCBfX2dlbV9xdWVyeShpbnQgZmQsIHN0cnVjdCBkcm1faTkxNV9xdWVyeSAqcSkK K3sKKwlpbnQgZXJyID0gMDsKKworCWlmIChpZ3RfaW9jdGwoZmQsIERSTV9JT0NUTF9JOTE1X1FV RVJZLCBxKSkKKwkJZXJyID0gLWVycm5vOworCisJZXJybm8gPSAwOworCXJldHVybiBlcnI7Cit9 CisKK3N0YXRpYyB2b2lkIGdlbV9xdWVyeShpbnQgZmQsIHN0cnVjdCBkcm1faTkxNV9xdWVyeSAq cSkKK3sKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX3F1ZXJ5KGZkLCBxKSwgMCk7Cit9CisKK3N0YXRp YyB2b2lkIHF1ZXJ5X2VuZ2luZXMoaW50IGZkLAorCQkJICBzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlf ZW5naW5lX2luZm8gKnF1ZXJ5X2VuZ2luZXMpCit7CisJc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2l0 ZW0gaXRlbSA9IHsgfTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcXVlcnkgcXVlcnkgPSB7IH07CisKKwlp dGVtLnF1ZXJ5X2lkID0gRFJNX0k5MTVfUVVFUllfRU5HSU5FX0lORk87CisJcXVlcnkuaXRlbXNf cHRyID0gdG9fdXNlcl9wb2ludGVyKCZpdGVtKTsKKwlxdWVyeS5udW1faXRlbXMgPSAxOworCWl0 ZW0ubGVuZ3RoID0gU0laRU9GX1FVRVJZOworCisJaXRlbS5kYXRhX3B0ciA9IHRvX3VzZXJfcG9p bnRlcihxdWVyeV9lbmdpbmVzKTsKKworCWdlbV9xdWVyeShmZCwgJnF1ZXJ5KTsKK30KKworc3Rh dGljIHZvaWQgc2V0X2N0eF9wYXJhbV9lbmdpbmVzKGludCBmZCwgdWludDMyX3QgY3R4X2lkKQor eworCXN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcyAqY3R4X2VuZ2luZTsKKwlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gY3R4X3BhcmFtOworCWNvbnN0IHN0cnVjdCBp bnRlbF9leGVjdXRpb25fZW5naW5lMiAqZTI7CisJdWludDhfdCBidWZmW1NJWkVPRl9DVFhfUEFS QU1dID0geyB9OworCWludCBpOworCisJaWYgKGN0eF9pc19zZXQpCisJCXJldHVybjsKKworCWN0 eF9lbmdpbmUgPSAoc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzICopIGJ1ZmY7CisK KwljdHhfcGFyYW0uY3R4X2lkID0gY3R4X2lkOworCWN0eF9wYXJhbS5wYXJhbSA9IEk5MTVfQ09O VEVYVF9QQVJBTV9FTkdJTkVTOworCisJY3R4X2VuZ2luZS0+ZXh0ZW5zaW9ucyA9IDA7CisJZm9y IChpID0gMCwgZTIgPSBpbnRlbF9hY3RpdmVfZW5naW5lczI7IGUyLT5uYW1lOyBpKyssIGUyKysp IHsKKwkJY3R4X2VuZ2luZS0+Y2xhc3NfaW5zdGFuY2VbaV0uZW5naW5lX2NsYXNzID0gZTItPmNs YXNzOworCQljdHhfZW5naW5lLT5jbGFzc19pbnN0YW5jZVtpXS5lbmdpbmVfaW5zdGFuY2UgPSBl Mi0+aW5zdGFuY2U7CisJfQorCisJY3R4X3BhcmFtLnNpemUgPSBvZmZzZXRvZih0eXBlb2YoKmN0 eF9lbmdpbmUpLCBjbGFzc19pbnN0YW5jZVtpICsgMV0pOworCWN0eF9wYXJhbS52YWx1ZSA9IHRv X3VzZXJfcG9pbnRlcihjdHhfZW5naW5lKTsKKworCWdlbV9jb250ZXh0X3NldF9wYXJhbShmZCwg JmN0eF9wYXJhbSk7CisKKwljdHhfaXNfc2V0ID0gdHJ1ZTsKK30KKworLyoKKyAqIEluaXRpYWxp emVzIHRoZSBsaXN0IG9mIGVuZ2luZXMuCisgKgorICogUmV0dXJuczoKKyAqCisgKiAgLSAwIGlu IGNhc2Ugb2Ygc3VjY2VzcyBhbmQgdGhlIGdldC9zZXRfcGFyYW0gaW9jdGxzIGFyZSBpbXBsZW1l bnRlZAorICogIC0gLUVOT0RFViBpbiBjYXNlIG9mIHN1Y2Nlc3MgYnV0IEk5MTVfQ09OVEVYVF9Q QVJBTV9FTkdJTkVTIGlzIG5vdAorICogICAgaW1wbGVtZW50ZWQgaW4gRFJNX0lPQ1RMX0k5MTVf R0VNX0NPTlRFWFRfR0VUUEFSQU0gaW9jdGwuCisgKi8KK3N0YXRpYyBpbnQgaW5pdF9lbmdpbmVf bGlzdChpbnQgZmQpCit7CisJY29uc3QgY2hhciAqY2xhc3NfbmFtZXNbXSA9IHsgInJjcyIsICJi Y3MiLCAidmNzIiwgInZlY3MiIH07CisJc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2VuZ2luZV9pbmZv ICpxdWVyeV9lbmdpbmU7CisJdW5zaWduZWQgY2hhciBxdWVyeV9idWZmZXJbU0laRU9GX1FVRVJZ XSA9IHsgfTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gY3R4X3BhcmFtID0g eworCQkucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fRU5HSU5FUywKKwl9OworCWludCBpOwor CisJLyogdGhlIGxpc3QgaXMgYWxyZWFkeSBpbml0aWFsaXplZCAqLworCWlmIChpbnRlbF9hY3Rp dmVfZW5naW5lczIpCisJCXJldHVybiAwOworCisJLyoKKwkgKiBXZSBjaGVjayBmaXJzdCB3aGV0 aGVyIHRoZSBJOTE1X0NPTlRFWFRfUEFSQU1fRU5HSU5FUyBwYXJhbWV0ZXIgaXMKKwkgKiBzdXBw b3J0ZWQgYnkgdGhlIHJ1bm5pbmcga2VybmVsLiBJZiBub3QsIF9fZ2VtX2NvbnRleHRfZ2V0X3Bh cmFtKCkKKwkgKiB3aWxsIHJldHVybiAtRUlOVkFMIHdoaWNoLCBhdCB0aGlzIHBvaW50LCBpcyBu b3QgbmVjZXNzYXJpbHkgYQorCSAqIGZhaWx1cmUgYnV0IGl0IG1lYW5zIHRoYXQgd2UgbmVlZCB0 byBmYWxsIGJlY2sgdG8gcG9sbGluZyB0aGUgZW5naW5lcworCSAqIGRpcmVjdGx5IGZyb20gaW50 ZWxfZXhlY3V0aW9uX2VuZ2luZXMyW10uCisJICoKKwkgKiBXZSB3aWxsIHJldHVybiAtRU5PREVW IHdpdGggdGhlIG1lYW5pbmcgb2YgbWlzc2luZyBpbnRlcmZhY2UKKwkgKi8KKwlpZiAoX19nZW1f Y29udGV4dF9nZXRfcGFyYW0oZmQsICZjdHhfcGFyYW0pKQorCQlyZXR1cm4gLUVOT0RFVjsKKwor CXF1ZXJ5X2VuZ2luZSA9IChzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZW5naW5lX2luZm8gKikgcXVl cnlfYnVmZmVyOworCXF1ZXJ5X2VuZ2luZXMoZmQsIHF1ZXJ5X2VuZ2luZSk7CisKKwlpbnRlbF9h Y3RpdmVfZW5naW5lczIgPSBtYWxsb2MoKHF1ZXJ5X2VuZ2luZS0+bnVtX2VuZ2luZXMgKyAxKSAq CisJCQkJICAgICAgIHNpemVvZigqaW50ZWxfYWN0aXZlX2VuZ2luZXMyKSk7CisJaWd0X2Fzc2Vy dChpbnRlbF9hY3RpdmVfZW5naW5lczIpOworCisJZm9yIChpID0gMDsgaSA8IHF1ZXJ5X2VuZ2lu ZS0+bnVtX2VuZ2luZXM7IGkrKykgeworCQljaGFyICpuYW1lOworCQlfX3UxNiBjbGFzcyA9IHF1 ZXJ5X2VuZ2luZS0+ZW5naW5lc1tpXS5lbmdpbmVfY2xhc3M7CisJCV9fdTE2IGluc3RhbmNlID0g cXVlcnlfZW5naW5lLT5lbmdpbmVzW2ldLmVuZ2luZV9pbnN0YW5jZTsKKworCQlpbnRlbF9hY3Rp dmVfZW5naW5lczJbaV0uY2xhc3MgPSBjbGFzczsKKwkJaW50ZWxfYWN0aXZlX2VuZ2luZXMyW2ld Lmluc3RhbmNlID0gaW5zdGFuY2U7CisKKwkJLyogaWYgd2UgZG9uJ3QgcmVjb2duaXNlIHRoZSBj bGFzcywgdGhlbiB3ZSBtYXJrIGl0IGFzICJ1bmsiICovCisJCWlmIChjbGFzcyA+PSBBUlJBWV9T SVpFKGNsYXNzX25hbWVzKSkKKwkJCWlndF9hc3NlcnQoYXNwcmludGYoJm5hbWUsICJ1bmstJWQ6 JWQiLAorCQkJCQkgICAgY2xhc3MsIGluc3RhbmNlKSA+IDApOworCQllbHNlCisJCQlpZ3RfYXNz ZXJ0KGFzcHJpbnRmKCZuYW1lLCAiJXMlZCIsCisJCQkJCSAgICBjbGFzc19uYW1lc1tjbGFzc10s IGluc3RhbmNlKSA+IDApOworCisJCWludGVsX2FjdGl2ZV9lbmdpbmVzMltpXS5uYW1lID0gbmFt ZTsKKwl9CisKKwkvKiBOVUxMIHZhbHVlIHNlbnRpbmVsICovCisJaW50ZWxfYWN0aXZlX2VuZ2lu ZXMyW2ldLm5hbWUgPSBOVUxMOworCisJcmV0dXJuIDA7Cit9CisKK3N0cnVjdCBpbnRlbF9leGVj dXRpb25fZW5naW5lMiAqZ2V0X2FjdGl2ZV9lbmdpbmVzKGludCBmZCkKK3sKKwlpZiAoaW5pdF9l bmdpbmVfbGlzdChmZCkpCisJCXJldHVybiBOVUxMOworCisJcmV0dXJuIGludGVsX2FjdGl2ZV9l bmdpbmVzMjsKK30KKworc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpfX2dlbV9wcmVw YXJlX2NvbnRleHRfZW5naW5lcyhpbnQgZmQsCisJCQkJCQkJICAgIHVpbnQzMl90IGN0eF9pZCkK K3sKKwlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmFjdGl2ZV9lbmdpbmVzID0gZ2V0 X2FjdGl2ZV9lbmdpbmVzKGZkKTsKKworCWlmICghYWN0aXZlX2VuZ2luZXMpIHsKKwkJaWd0X2Rl YnVnKCJ1c2luZyBwcmUtYWxsb2NhdGVkIGVuZ2luZSBsaXN0XG4iKTsKKwkJcmV0dXJuIGludGVs X2V4ZWN1dGlvbl9lbmdpbmVzMjsKKwl9CisKKwlzZXRfY3R4X3BhcmFtX2VuZ2luZXMoZmQsIGN0 eF9pZCk7CisKKwlyZXR1cm4gaW50ZWxfYWN0aXZlX2VuZ2luZXMyOworfQorCit2b2lkIGlndF9y ZXF1aXJlX2dlbV9lbmdpbmVfbGlzdChpbnQgZmQpCit7CisJaWd0X3JlcXVpcmUoIWluaXRfZW5n aW5lX2xpc3QoZmQpKTsKK30KZGlmZiAtLWdpdCBhL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xv Z3kuaCBiL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLjg4ZTkwMjYxMGFkOAotLS0gL2Rldi9udWxsCisrKyBiL2xp Yi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuaApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29w eXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhl cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQor ICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls ZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMg dG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNl bnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p dCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28s IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBj b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhl IG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBz dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZU V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF WFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhF IEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB TUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4g Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdT CisgKiBJTiBUSEUgU09GVFdBUkUuCisgKi8KKworI2lmbmRlZiBHRU1fRU5HSU5FX1RPUE9MT0dZ X0gKKyNkZWZpbmUgR0VNX0VOR0lORV9UT1BPTE9HWV9ICisKK3N0cnVjdCBpbnRlbF9leGVjdXRp b25fZW5naW5lMiAqZ2V0X2FjdGl2ZV9lbmdpbmVzKGludCBmZCk7CitzdHJ1Y3QgaW50ZWxfZXhl Y3V0aW9uX2VuZ2luZTIgKl9fZ2VtX3ByZXBhcmVfY29udGV4dF9lbmdpbmVzKGludCBmZCwKKwkJ CQkJCQkgICAgdWludDMyX3QgY3R4X2lkKTsKKwordm9pZCBpZ3RfcmVxdWlyZV9nZW1fZW5naW5l X2xpc3QoaW50IGZkKTsKKworI2VuZGlmIC8qIEdFTV9FTkdJTkVfVE9QT0xPR1lfSCAqLwpkaWZm IC0tZ2l0IGEvbGliL2lndF9ndC5jIGIvbGliL2lndF9ndC5jCmluZGV4IGM5OGE3NTUzYjdmZS4u NTRjNzFlNWU3MTg2IDEwMDY0NAotLS0gYS9saWIvaWd0X2d0LmMKKysrIGIvbGliL2lndF9ndC5j CkBAIC01NzcsNyArNTc3LDcgQEAgYm9vbCBnZW1fY2FuX3N0b3JlX2R3b3JkKGludCBmZCwgdW5z aWduZWQgaW50IGVuZ2luZSkKIAlyZXR1cm4gdHJ1ZTsKIH0KIAotY29uc3Qgc3RydWN0IGludGVs X2V4ZWN1dGlvbl9lbmdpbmUyIGludGVsX2V4ZWN1dGlvbl9lbmdpbmVzMltdID0geworc3RydWN0 IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyIGludGVsX2V4ZWN1dGlvbl9lbmdpbmVzMltdID0gewog CXsgInJjczAiLCBJOTE1X0VOR0lORV9DTEFTU19SRU5ERVIsIDAgfSwKIAl7ICJiY3MwIiwgSTkx NV9FTkdJTkVfQ0xBU1NfQ09QWSwgMCB9LAogCXsgInZjczAiLCBJOTE1X0VOR0lORV9DTEFTU19W SURFTywgMCB9LApkaWZmIC0tZ2l0IGEvbGliL2lndF9ndC5oIGIvbGliL2lndF9ndC5oCmluZGV4 IDU0ZTk1ZGE5ODA4NC4uZjRiZDZjMjJhODFhIDEwMDY0NAotLS0gYS9saWIvaWd0X2d0LmgKKysr IGIvbGliL2lndF9ndC5oCkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgZ2VtX3JpbmdfaGFzX3BoeXNp Y2FsX2VuZ2luZShpbnQgZmQsIHVuc2lnbmVkIGludCByaW5nKTsKIAogYm9vbCBnZW1fY2FuX3N0 b3JlX2R3b3JkKGludCBmZCwgdW5zaWduZWQgaW50IGVuZ2luZSk7CiAKLWV4dGVybiBjb25zdCBz dHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgeworZXh0ZXJuIHN0cnVjdCBpbnRlbF9leGVj dXRpb25fZW5naW5lMiB7CiAJY29uc3QgY2hhciAqbmFtZTsKIAlpbnQgY2xhc3M7CiAJaW50IGlu c3RhbmNlOwpkaWZmIC0tZ2l0IGEvbGliL21lc29uLmJ1aWxkIGIvbGliL21lc29uLmJ1aWxkCmlu ZGV4IDBlYjU1ODVkNzJiOS4uM2NjNTJmOTdjOGJmIDEwMDY0NAotLS0gYS9saWIvbWVzb24uYnVp bGQKKysrIGIvbGliL21lc29uLmJ1aWxkCkBAIC01LDYgKzUsNyBAQCBsaWJfc291cmNlcyA9IFsK IAknaTkxNS9nZW1fc3VibWlzc2lvbi5jJywKIAknaTkxNS9nZW1fcmluZy5jJywKIAknaTkxNS9n ZW1fbW1hbi5jJywKKwknaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmMnLAogCSdpZ3RfY29sb3Jf ZW5jb2RpbmcuYycsCiAJJ2lndF9kZWJ1Z2ZzLmMnLAogCSdpZ3RfZGV2aWNlLmMnLAotLSAKMi4y MC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3Qt ZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=