From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from 2.mo4.mail-out.ovh.net (2.mo4.mail-out.ovh.net [46.105.72.36]) by gabe.freedesktop.org (Postfix) with ESMTPS id 58AA38934B for ; Fri, 12 Apr 2019 05:22:22 +0000 (UTC) Received: from player759.ha.ovh.net (unknown [10.109.159.159]) by mo4.mail-out.ovh.net (Postfix) with ESMTP id 069961E07A0 for ; Fri, 12 Apr 2019 02:32:30 +0200 (CEST) From: Andi Shyti Date: Fri, 12 Apr 2019 03:32:06 +0300 Message-Id: <20190412003210.18762-3-andi@etezian.org> In-Reply-To: <20190412003210.18762-1-andi@etezian.org> References: <20190412003210.18762-1-andi@etezian.org> MIME-Version: 1.0 Subject: [igt-dev] [PATCH v20 2/6] lib/i915: add gem_engine_topology library and for_each loop definition 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: RnJvbTogQW5kaSBTaHl0aSA8YW5kaS5zaHl0aUBpbnRlbC5jb20+CgpUaGUgZ2VtX2VuZ2luZV90 b3BvbG9neSBsaWJyYXJ5IGlzIGEgc2V0IG9mIGZ1bmN0aW9ucyB0aGF0CmludGVyZmFjZSB3aXRo IHRoZSBxdWVyeSBhbmQgZ2V0cGFyYW0vc2V0cGFyYW0gaW9jdGxzLgoKVGhlIGxpYnJhcnkncyBh Y2Nlc3MgcG9pbnQgaXMgdGhlICdpbnRlbF9pbml0X2VuZ2luZV9saXN0KCknCmZ1bmN0aW9uIHRo YXQsIGV2ZXJ5dGltZSBpcyBjYWxsZWQsIGdlbmVyYXRlcyB0aGUgbGlzdCBvZiBhY3RpdmUKZW5n aW5lcyBhbmQgcmV0dXJucyB0aGVtIGluIGEgJ3N0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YScuIFRo ZQpzdHJ1Y3R1cmUgY29udGFpbnMgb25seSB0aGUgZW5naW5lcyB0aGF0IGFyZSBhY3RpdmVseSBw cmVzZW50IGluCnRoZSBHUFUuCgpUaGUgZnVuY3Rpb24gY2FuIHdvcmsgaW4gYm90aCB0aGUgY2Fz ZXMgdGhhdCB0aGUgcXVlcnkgYW5kCmdldHBhcmFtIGlvY3RscyBhcmUgaW1wbGVtZW50ZWQgb3Ig bm90IGJ5IHRoZSBydW5uaW5nIGtlcm5lbC4gSW4KY2FzZSB0aGV5IGFyZSBpbXBsZW1lbnRlZCwg YSBxdWVyeSBpcyBtYWRlIHRvIHRoZSBkcml2ZXIgdG8gZmV0Y2gKdGhlIGxpc3Qgb2YgYWN0aXZl IGVuZ2luZXMuIEluIGNhc2UgdGhleSBhcmUgbm90IGltcGxlbWVudGVkLCB0aGUKbGlzdCBpcyB0 YWtlbiBmcm9tIHRoZSAnaW50ZWxfZXhlY3V0aW9uX2VuZ2luZXMyJyBhcnJheSBhbmQKc3RvcmVk IG9ubHkgYWZ0ZXIgY2hlY2tpbmcgdGhlaXIgcHJlc2VuY2UuCgpUaGUgZ2VtX2VuZ2luZV90b3Bv bG9neSBsaWJyYXJ5IHByb3ZpZGVzIHNvbWUgaXRlcmF0aW9uIGhlbHBlcnM6CgogLSBpbnRlbF9n ZXRfY3VycmVudF9lbmdpbmUoKTogcHJvdmlkZXMgdGhlIGN1cnJlbnQgZW5naW5lIGluIHRoZQog ICBpdGVyYXRpb24uCgogLSBpbnRlbF9nZXRfY3VycmVudF9waHlzaWNhbF9lbmdpbmUoKTogcHJv dmlkZXMgdGhlIGN1cnJlbnQKICAgcGh5c2ljYWwgZW5naW5lLCBpZiB0aGUgY3VycmVudCBlbmdp bmUgaXMgYSB2aXJ0dWFsIGVuZ2luZSwKICAgaXQgbW92ZXMgZm9yd2FyZCB1bnRpbCBpdCBmaW5k cyBhIHBoeXNpY2FsIGVuZ2luZS4KCiAtIGludGVsX25leHRfZW5naW5lKCkgaXQganVzdCBpbmNy ZW1lbnRzIHRoZSBjb3VudGVyIHNvIHRoYXQgaXQKICAgcG9pbnRzIHRvIHRoZSBuZXh0IGVuZ2lu ZS4KCkV4dGVuZCB0aGUgJ2Zvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZScgc28gdGhhdCBp dCBjYW4gbG9vcAp1c2luZyB0aGUgbmV3ICdpbnRlbF9pbml0X2VuZ2luZV9saXN0KCknIGFuZCBy ZW5hbWUgaXQgdG8KJ2Zvcl9lYWNoX2NvbnRleHRfZW5naW5lJy4KCk1vdmUgJ19fZm9yX2VhY2hf ZW5naW5lX2NsYXNzX2luc3RhbmNlJyB0byBnZW1fZW5naW5lX3RvcG9sb2d5LmgKYW5kIHJlbmFt ZSBpdCB0byAnX19mb3JfZWFjaF9zdGF0aWNfZW5naW5lJy4KClVwZGF0ZSBhY2NvcmRpbmdseSB0 ZXN0cy9wZXJmX3BtdS5jIHRvIHVzZSBjb3JyZWN0bHkgdGhlIG5ldwpmb3JfZWFjaCBsb29wcy4K ClNpZ25lZC1vZmYtYnk6IEFuZGkgU2h5dGkgPGFuZGkuc2h5dGlAaW50ZWwuY29tPgotLS0KIGxp Yi9NYWtlZmlsZS5zb3VyY2VzICAgICAgICAgICB8ICAgMiArCiBsaWIvaTkxNS9nZW1fZW5naW5l X3RvcG9sb2d5LmMgfCAyOTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWIv aTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmggfCAgODAgKysrKysrKysrCiBsaWIvaWd0LmggICAg ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogbGliL2lndF9ndC5oICAgICAgICAgICAgICAgICAg IHwgICAyICsKIGxpYi9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICB8ICAgMSArCiA2IGZpbGVz IGNoYW5nZWQsIDM4NCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2k5MTUv Z2VtX2VuZ2luZV90b3BvbG9neS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2k5MTUvZ2VtX2Vu Z2luZV90b3BvbG9neS5oCgpkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLnNvdXJjZXMgYi9saWIv TWFrZWZpbGUuc291cmNlcwppbmRleCBhMWQyNTM1MTEwMzAuLjA4MjA0OWJmN2M2YSAxMDA2NDQK LS0tIGEvbGliL01ha2VmaWxlLnNvdXJjZXMKKysrIGIvbGliL01ha2VmaWxlLnNvdXJjZXMKQEAg LTEzLDYgKzEzLDggQEAgbGliX3NvdXJjZV9saXN0ID0JIAlcCiAJaTkxNS9nZW1fcmluZy5jCVwK IAlpOTE1L2dlbV9tbWFuLmMJXAogCWk5MTUvZ2VtX21tYW4uaAlcCisJaTkxNS9nZW1fZW5naW5l X3RvcG9sb2d5LmMJXAorCWk5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oCVwKIAlpOTE1XzNkLmgJ CVwKIAlpOTE1X3JlZy5oCQlcCiAJaTkxNV9wY2lpZHMuaAkJXApkaWZmIC0tZ2l0IGEvbGliL2k5 MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jIGIvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMmM4MjJlMGQ2M2JhCi0t LSAvZGV2L251bGwKKysrIGIvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jCkBAIC0wLDAg KzEsMjk4IEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KKyAq CisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55 IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lh dGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4g dGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0 YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNo LCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBT b2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBp cyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25z OgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24g bm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVk ZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3 YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVU IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBO TyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElB QkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhF UiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisg KiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUg VVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKi8KKworI2luY2x1 ZGUgImRybXRlc3QuaCIKKyNpbmNsdWRlICJpb2N0bF93cmFwcGVycy5oIgorCisjaW5jbHVkZSAi aTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmgiCisKKyNkZWZpbmUgREVGSU5FX0NPTlRFWFRfUEFS QU0oZV9fLCBwX18sIGNfXywgTl9fKSBcCisJCUk5MTVfREVGSU5FX0NPTlRFWFRfUEFSQU1fRU5H SU5FUyhlX18sIE5fXyk7IFwKKwkJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIHBf XyA9IHsgXAorCQkJLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVMsIFwKKwkJCS5j dHhfaWQgPSBjX18sIFwKKwkJCS5zaXplID0gU0laRU9GX0NUWF9QQVJBTSwgXAorCQkJLnZhbHVl ID0gdG9fdXNlcl9wb2ludGVyKCZlX18pLCBcCisJCX0KKworc3RhdGljIGludCBfX2dlbV9xdWVy eShpbnQgZmQsIHN0cnVjdCBkcm1faTkxNV9xdWVyeSAqcSkKK3sKKwlpbnQgZXJyID0gMDsKKwor CWlmIChpZ3RfaW9jdGwoZmQsIERSTV9JT0NUTF9JOTE1X1FVRVJZLCBxKSkKKwkJZXJyID0gLWVy cm5vOworCisJZXJybm8gPSAwOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyB2b2lkIGdlbV9x dWVyeShpbnQgZmQsIHN0cnVjdCBkcm1faTkxNV9xdWVyeSAqcSkKK3sKKwlpZ3RfYXNzZXJ0X2Vx KF9fZ2VtX3F1ZXJ5KGZkLCBxKSwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIHF1ZXJ5X2VuZ2luZXMo aW50IGZkLAorCQkJICBzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZW5naW5lX2luZm8gKnF1ZXJ5X2Vu Z2luZXMsCisJCQkgIGludCBsZW5ndGgpCit7CisJc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2l0ZW0g aXRlbSA9IHsgfTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcXVlcnkgcXVlcnkgPSB7IH07CisKKwlpdGVt LnF1ZXJ5X2lkID0gRFJNX0k5MTVfUVVFUllfRU5HSU5FX0lORk87CisJcXVlcnkuaXRlbXNfcHRy ID0gdG9fdXNlcl9wb2ludGVyKCZpdGVtKTsKKwlxdWVyeS5udW1faXRlbXMgPSAxOworCWl0ZW0u bGVuZ3RoID0gbGVuZ3RoOworCisJaXRlbS5kYXRhX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihxdWVy eV9lbmdpbmVzKTsKKworCWdlbV9xdWVyeShmZCwgJnF1ZXJ5KTsKK30KKworc3RhdGljIHZvaWQg Y3R4X21hcF9lbmdpbmVzKGludCBmZCwgc3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCwKKwkJ CSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gKnBhcmFtKQoreworCXN0cnVj dCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcyAqZW5naW5lcyA9CisJCQkoc3RydWN0IGk5MTVf Y29udGV4dF9wYXJhbV9lbmdpbmVzICopIHBhcmFtLT52YWx1ZTsKKwlpbnQgaSA9IDA7CisKKwlm b3IgKHR5cGVvZihlbmdpbmVzLT5jbGFzc19pbnN0YW5jZVswXSkgKnAgPQorCSAgICAgJmVuZ2lu ZXMtPmNsYXNzX2luc3RhbmNlWzBdOworCSAgICAgaSA8IGVkLT5uZW5naW5lczsgaSsrLCBwKysp IHsKKwkJcC0+ZW5naW5lX2NsYXNzID0gZWQtPmVuZ2luZXNbaV0uY2xhc3M7CisJCXAtPmVuZ2lu ZV9pbnN0YW5jZSA9IGVkLT5lbmdpbmVzW2ldLmluc3RhbmNlOworCX0KKworCXBhcmFtLT5zaXpl ID0gb2Zmc2V0b2YodHlwZW9mKCplbmdpbmVzKSwgY2xhc3NfaW5zdGFuY2VbaV0pOworCWVuZ2lu ZXMtPmV4dGVuc2lvbnMgPSAwOworCisJZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZkLCBwYXJhbSk7 Cit9CisKK3N0YXRpYyB2b2lkIGluaXRfZW5naW5lKHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5n aW5lMiAqZTIsCisJCQlpbnQgY2xhc3MsIGludCBpbnN0YW5jZSwgdWludDY0X3QgZmxhZ3MpCit7 CisJY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpfX2UyOworCXN0YXRpYyBj b25zdCBjaGFyICp1bmtub3duX25hbWUgPSAidW5rbm93biIsCisJCQkgICp2aXJ0dWFsX25hbWUg PSAidmlydHVhbCI7CisKKwllMi0+Y2xhc3MgICAgPSBjbGFzczsKKwllMi0+aW5zdGFuY2UgPSBp bnN0YW5jZTsKKwllMi0+ZmxhZ3MgICAgPSBmbGFnczsKKworCS8qIGVuZ2luZSBpcyBhIHZpcnR1 YWwgZW5naW5lICovCisJaWYgKGNsYXNzID09IEk5MTVfRU5HSU5FX0NMQVNTX0lOVkFMSUQpIHsK KwkJZTItPm5hbWUgPSB2aXJ0dWFsX25hbWU7CisJCWUyLT5pc192aXJ0dWFsID0gdHJ1ZTsKKwkJ cmV0dXJuOworCX0KKworCV9fZm9yX2VhY2hfc3RhdGljX2VuZ2luZShfX2UyKQorCQlpZiAoX19l Mi0+Y2xhc3MgPT0gY2xhc3MgJiYgX19lMi0+aW5zdGFuY2UgPT0gaW5zdGFuY2UpCisJCQlicmVh azsKKworCWlmIChfX2UyLT5uYW1lKSB7CisJCWUyLT5uYW1lID0gX19lMi0+bmFtZTsKKwl9IGVs c2UgeworCQlpZ3Rfd2FybigiZm91bmQgdW5rbm93biBlbmdpbmUgKCVkLCAlZCkiLCBjbGFzcywg aW5zdGFuY2UpOworCQllMi0+bmFtZSA9IHVua25vd25fbmFtZTsKKwl9CisKKwkvKiBqdXN0IHRv IHJlbWFyayBpdCAqLworCWUyLT5pc192aXJ0dWFsID0gZmFsc2U7Cit9CisKK3N0YXRpYyB2b2lk IHF1ZXJ5X2VuZ2luZV9saXN0KGludCBmZCwgc3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCkK K3sKKwl1aW50OF90IGJ1ZmZbU0laRU9GX1FVRVJZXSA9IHsgfTsKKwlzdHJ1Y3QgZHJtX2k5MTVf cXVlcnlfZW5naW5lX2luZm8gKnF1ZXJ5X2VuZ2luZSA9CisJCQkoc3RydWN0IGRybV9pOTE1X3F1 ZXJ5X2VuZ2luZV9pbmZvICopIGJ1ZmY7CisJaW50IGk7CisKKwlxdWVyeV9lbmdpbmVzKGZkLCBx dWVyeV9lbmdpbmUsIFNJWkVPRl9RVUVSWSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgcXVlcnlfZW5n aW5lLT5udW1fZW5naW5lczsgaSsrKQorCQlpbml0X2VuZ2luZSgmZWQtPmVuZ2luZXNbaV0sCisJ CQkgICAgcXVlcnlfZW5naW5lLT5lbmdpbmVzW2ldLmVuZ2luZV9jbGFzcywKKwkJCSAgICBxdWVy eV9lbmdpbmUtPmVuZ2luZXNbaV0uZW5naW5lX2luc3RhbmNlLCBpKTsKKworCWVkLT5uZW5naW5l cyA9IHF1ZXJ5X2VuZ2luZS0+bnVtX2VuZ2luZXM7Cit9CisKK3N0cnVjdCBpbnRlbF9leGVjdXRp b25fZW5naW5lMiAqCitpbnRlbF9nZXRfY3VycmVudF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2lu ZV9kYXRhICplZCkKK3sKKwlpZiAoIWVkLT5uKQorCQllZC0+Y3VycmVudF9lbmdpbmUgPSAmZWQt PmVuZ2luZXNbMF07CisJZWxzZSBpZiAoZWQtPm4gPj0gZWQtPm5lbmdpbmVzKQorCQllZC0+Y3Vy cmVudF9lbmdpbmUgPSBOVUxMOworCisJcmV0dXJuIGVkLT5jdXJyZW50X2VuZ2luZTsKK30KKwor dm9pZCBpbnRlbF9uZXh0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgKmVkKQorewor CWlmIChlZC0+biArIDEgPCBlZC0+bmVuZ2luZXMpIHsKKwkJZWQtPm4rKzsKKwkJZWQtPmN1cnJl bnRfZW5naW5lID0gJmVkLT5lbmdpbmVzW2VkLT5uXTsKKwl9IGVsc2UgeworCQllZC0+biA9IGVk LT5uZW5naW5lczsKKwkJZWQtPmN1cnJlbnRfZW5naW5lID0gTlVMTDsKKwl9Cit9CisKK3N0cnVj dCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqCitpbnRlbF9nZXRfY3VycmVudF9waHlzaWNhbF9l bmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCkKK3sKKwlzdHJ1Y3QgaW50ZWxfZXhl Y3V0aW9uX2VuZ2luZTIgKmU7CisKKwlmb3IgKGUgPSBpbnRlbF9nZXRfY3VycmVudF9lbmdpbmUo ZWQpOworCSAgICAgZSAmJiBlLT5pc192aXJ0dWFsOworCSAgICAgaW50ZWxfbmV4dF9lbmdpbmUo ZWQpKQorCQk7CisKKwlyZXR1cm4gZTsKK30KKworc3RhdGljIGludCBnZW1fdG9wb2xvZ3lfZ2V0 X3BhcmFtKGludCBmZCwKKwkJCQkgIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSAq cCkKK3sKKwlpbnQgbmVuZ2luZXM7CisJaW50IHJldDsKKworCWlmIChpZ3Rfb25seV9saXN0X3N1 YnRlc3RzKCkpCisJCXJldHVybiAtRU5PREVWOworCisJcmV0ID0gX19nZW1fY29udGV4dF9nZXRf cGFyYW0oZmQsIHApOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwluZW5naW5lcyA9IHAt PnNpemUgPiBzaXplb2Yoc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzKSA/CisJCSAg IChwLT5zaXplIC0gc2l6ZW9mKHN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcykpIC8K KwkJICAgKDIgKiBzaXplb2YoX191MTYpKSA6CisJCSAgIDA7CisKKwlpZ3RfYXNzZXJ0X2YobmVu Z2luZXMgPD0gR0VNX01BWF9FTkdJTkVTLCAidW5zdXBwb3J0ZWQgZW5naW5lIGNvdW50XG4iKTsK KworCXJldHVybiBuZW5naW5lczsKK30KKworc3RydWN0IGludGVsX2VuZ2luZV9kYXRhIGludGVs X2luaXRfZW5naW5lX2xpc3QoaW50IGZkLCB1aW50MzJfdCBjdHhfaWQpCit7CisJREVGSU5FX0NP TlRFWFRfUEFSQU0oZW5naW5lcywgcGFyYW0sIGN0eF9pZCwgR0VNX01BWF9FTkdJTkVTKTsKKwlz dHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgZW5naW5lX2RhdGEgPSB7IH07CisJaW50IG5lbmdpbmVz ID0gZ2VtX3RvcG9sb2d5X2dldF9wYXJhbShmZCwgJnBhcmFtKTsKKwlpbnQgaTsKKworCWlmIChu ZW5naW5lcyA8IDApIHsKKwkJLyogaWYga2VybmVsIGRvZXMgbm90IHN1cHBvcnQgZW5naW5lL2Nv bnRleHQgbWFwcGluZyAqLworCQljb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIg KmUyOworCisJCWlndF9kZWJ1ZygidXNpbmcgcHJlLWFsbG9jYXRlZCBlbmdpbmUgbGlzdFxuIik7 CisKKwkJX19mb3JfZWFjaF9zdGF0aWNfZW5naW5lKGUyKSB7CisJCQlzdHJ1Y3QgaW50ZWxfZXhl Y3V0aW9uX2VuZ2luZTIgKl9fZTIgPQorCQkJCSZlbmdpbmVfZGF0YS5lbmdpbmVzW2VuZ2luZV9k YXRhLm5lbmdpbmVzXTsKKworCQkJaWYgKCFpZ3Rfb25seV9saXN0X3N1YnRlc3RzKCkpIHsKKwkJ CQlfX2UyLT5mbGFncyA9IGdlbV9jbGFzc19pbnN0YW5jZV90b19lYl9mbGFncyhmZCwKKwkJCQkJ CWUyLT5jbGFzcywgZTItPmluc3RhbmNlKTsKKworCQkJCWlmICghZ2VtX2hhc19yaW5nKGZkLCBf X2UyLT5mbGFncykpCisJCQkJCWNvbnRpbnVlOworCQkJfSBlbHNlIHsKKwkJCQlfX2UyLT5mbGFn cyA9IC0xOyAvKiAweGZmZi4uLiAqLworCQkJfQorCisJCQlfX2UyLT5uYW1lICAgICAgID0gZTIt Pm5hbWU7CisJCQlfX2UyLT5pbnN0YW5jZSAgID0gZTItPmluc3RhbmNlOworCQkJX19lMi0+Y2xh c3MgICAgICA9IGUyLT5jbGFzczsKKwkJCV9fZTItPmlzX3ZpcnR1YWwgPSBmYWxzZTsKKworCQkJ ZW5naW5lX2RhdGEubmVuZ2luZXMrKzsKKwkJfQorCQlyZXR1cm4gZW5naW5lX2RhdGE7CisJfQor CisJaWYgKCFwYXJhbS5zaXplKSB7CisJCXF1ZXJ5X2VuZ2luZV9saXN0KGZkLCAmZW5naW5lX2Rh dGEpOworCQljdHhfbWFwX2VuZ2luZXMoZmQsICZlbmdpbmVfZGF0YSwgJnBhcmFtKTsKKwl9IGVs c2UgeworCQlmb3IgKGkgPSAwOyBpIDwgbmVuZ2luZXM7IGkrKykKKwkJCWluaXRfZW5naW5lKCZl bmdpbmVfZGF0YS5lbmdpbmVzW2ldLAorCQkJCSAgICBlbmdpbmVzLmNsYXNzX2luc3RhbmNlW2ld LmVuZ2luZV9jbGFzcywKKwkJCQkgICAgZW5naW5lcy5jbGFzc19pbnN0YW5jZVtpXS5lbmdpbmVf aW5zdGFuY2UsCisJCQkJICAgIGkpOworCisJCWVuZ2luZV9kYXRhLm5lbmdpbmVzID0gaTsKKwl9 CisKKwlyZXR1cm4gZW5naW5lX2RhdGE7Cit9CisKK2ludCBnZW1fY3R4X2dldF9lbmdpbmUoaW50 IGZkLCB1aW50MzJfdCBlbmdpbmUsIHVpbnQzMl90IGN0eF9pZCwKKwkJICAgICAgIHN0cnVjdCBp bnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKK3sKKwlERUZJTkVfQ09OVEVYVF9QQVJBTShlbmdp bmVzLCBwYXJhbSwgY3R4X2lkLCBHRU1fTUFYX0VOR0lORVMpOworCWludCBuZW5naW5lcyA9IGdl bV90b3BvbG9neV9nZXRfcGFyYW0oZmQsICZwYXJhbSk7CisKKwlpZiAobmVuZ2luZXMgPCAwKQor CQlyZXR1cm4gbmVuZ2luZXM7CisKKwlpZiAoIXBhcmFtLnNpemUgfHwgIW5lbmdpbmVzKQorCQly ZXR1cm4gLUVJTlZBTDsKKworCWUtPmNsYXNzID0gZW5naW5lcy5jbGFzc19pbnN0YW5jZVtlbmdp bmVdLmVuZ2luZV9jbGFzczsKKwllLT5pbnN0YW5jZSA9IGVuZ2luZXMuY2xhc3NfaW5zdGFuY2Vb ZW5naW5lXS5lbmdpbmVfaW5zdGFuY2U7CisKKwlyZXR1cm4gMDsKK30KKworaW50NjRfdCBnZW1f bWFwX2FsbF9lbmdpbmVzKGludCBmZCkKK3sKKwlERUZJTkVfQ09OVEVYVF9QQVJBTShlbmdpbmVz LCBwYXJhbSwgMCwgR0VNX01BWF9FTkdJTkVTKTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEg ZW5naW5lX2RhdGEgPSB7IH07CisKKwlnZW1fcmVxdWlyZV9jb250ZXh0cyhmZCk7CisJcGFyYW0u Y3R4X2lkID0gZ2VtX2NvbnRleHRfY3JlYXRlKGZkKTsKKworCWlmIChnZW1fdG9wb2xvZ3lfZ2V0 X3BhcmFtKGZkLCAmcGFyYW0pID4gMCAmJiAhcGFyYW0uc2l6ZSkgeworCQlxdWVyeV9lbmdpbmVf bGlzdChmZCwgJmVuZ2luZV9kYXRhKTsKKwkJY3R4X21hcF9lbmdpbmVzKGZkLCAmZW5naW5lX2Rh dGEsICZwYXJhbSk7CisJfQorCisJcmV0dXJuIHBhcmFtLmN0eF9pZDsKK30KKwordm9pZCBnZW1f dW5tYXBfZW5naW5lcyhpbnQgZmQsIHVpbnQzMl90IGN0eCkKK3sKKwlnZW1fY29udGV4dF9kZXN0 cm95KGZkLCBjdHgpOworfQorCitib29sIGdlbV9oYXNfZW5naW5lX3RvcG9sb2d5KGludCBmZCkK K3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gcGFyYW0gPSB7CisJCS5wYXJh bSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTLAorCX07CisKKwlyZXR1cm4gIV9fZ2VtX2Nv bnRleHRfZ2V0X3BhcmFtKGZkLCAmcGFyYW0pOworfQpkaWZmIC0tZ2l0IGEvbGliL2k5MTUvZ2Vt X2VuZ2luZV90b3BvbG9neS5oIGIvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmQ0MzRlNzc1YmIzCi0tLSAvZGV2 L251bGwKKysrIGIvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oCkBAIC0wLDAgKzEsODAg QEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBl cm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29u IG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9j dW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29m dHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgor ICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3Ry aWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJl LCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5p c2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgor ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ug KGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBh bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisg KgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkg T0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJ TUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5U IFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9S IEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFO IEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00s IE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1Ig T1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaWZuZGVmIEdFTV9F TkdJTkVfVE9QT0xPR1lfSAorI2RlZmluZSBHRU1fRU5HSU5FX1RPUE9MT0dZX0gKKworI2luY2x1 ZGUgImlndF9ndC5oIgorI2luY2x1ZGUgImk5MTVfZHJtLmgiCisKKy8qCisgKiBMaW1pdCB3aGF0 IHdlIHN1cHBvcnQgZm9yIHNpbXBsaWNpdHkgZHVlIGxpbWl0YXRpb24gaW4gaG93IG11Y2ggd2UK KyAqIGNhbiBhZGRyZXNzIHZpYSBleGVjYnVmMi4KKyAqLworI2RlZmluZSBTSVpFT0ZfQ1RYX1BB UkFNCW9mZnNldG9mKHN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcywgXAorCQkJCQlj bGFzc19pbnN0YW5jZVtHRU1fTUFYX0VOR0lORVNdKQorI2RlZmluZSBTSVpFT0ZfUVVFUlkJCW9m ZnNldG9mKHN0cnVjdCBkcm1faTkxNV9xdWVyeV9lbmdpbmVfaW5mbywgXAorCQkJCQllbmdpbmVz W0dFTV9NQVhfRU5HSU5FU10pCisKKyNkZWZpbmUgR0VNX01BWF9FTkdJTkVTCQlJOTE1X0VYRUNf UklOR19NQVNLICsgMQorCitzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgeworCXVpbnQzMl90IG5l bmdpbmVzOworCXVpbnQzMl90IG47CisJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpj dXJyZW50X2VuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgZW5naW5lc1tH RU1fTUFYX0VOR0lORVNdOworfTsKKworYm9vbCBnZW1faGFzX2VuZ2luZV90b3BvbG9neShpbnQg ZmQpOworc3RydWN0IGludGVsX2VuZ2luZV9kYXRhIGludGVsX2luaXRfZW5naW5lX2xpc3QoaW50 IGZkLCB1aW50MzJfdCBjdHhfaWQpOworCisvKiBpdGVyYXRpb24gZnVuY3Rpb25zICovCitzdHJ1 Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKgoraW50ZWxfZ2V0X2N1cnJlbnRfZW5naW5lKHN0 cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAqZWQpOworCitzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2Vu Z2luZTIgKgoraW50ZWxfZ2V0X2N1cnJlbnRfcGh5c2ljYWxfZW5naW5lKHN0cnVjdCBpbnRlbF9l bmdpbmVfZGF0YSAqZWQpOworCit2b2lkIGludGVsX25leHRfZW5naW5lKHN0cnVjdCBpbnRlbF9l bmdpbmVfZGF0YSAqZWQpOworCitpbnQgZ2VtX2N0eF9nZXRfZW5naW5lKGludCBmZCwgdWludDMy X3QgZW5naW5lLCB1aW50MzJfdCBjdHhfaWQsCisJCSAgICAgICBzdHJ1Y3QgaW50ZWxfZXhlY3V0 aW9uX2VuZ2luZTIgKmUpOworCitpbnQ2NF90IGdlbV9tYXBfYWxsX2VuZ2luZXMoaW50IGZkKTsK K3ZvaWQgZ2VtX3VubWFwX2VuZ2luZXMoaW50IGZkLCB1aW50MzJfdCBjdHgpOworCisjZGVmaW5l IF9fZm9yX2VhY2hfc3RhdGljX2VuZ2luZShlX18pIFwKKwlmb3IgKChlX18pID0gaW50ZWxfZXhl Y3V0aW9uX2VuZ2luZXMyOyAoZV9fKS0+bmFtZTsgKGVfXykrKykKKworI2RlZmluZSBmb3JfZWFj aF9jb250ZXh0X2VuZ2luZShmZF9fLCBjdHhfXywgZV9fKSBcCisJZm9yIChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2RhdGEgaV9fID0gaW50ZWxfaW5pdF9lbmdpbmVfbGlzdChmZF9fLCBjdHhfXyk7IFwK KwkgICAgICgoZV9fKSA9IGludGVsX2dldF9jdXJyZW50X2VuZ2luZSgmaV9fKSk7IFwKKwkgICAg IGludGVsX25leHRfZW5naW5lKCZpX18pKQorCisvKiBuZWVkcyB0byByZXBsYWNlICJmb3JfZWFj aF9waHlzaWNhbF9lbmdpbmUiIHdoZW4gY29uZmxpY3RzIGFyZSBmaXhlZCAqLworI2RlZmluZSBf X2Zvcl9lYWNoX3BoeXNpY2FsX2VuZ2luZShmZF9fLCBlX18pIFwKKwlmb3IgKHN0cnVjdCBpbnRl bF9lbmdpbmVfZGF0YSBpX18gPSBpbnRlbF9pbml0X2VuZ2luZV9saXN0KGZkX18sIDApOyBcCisJ ICAgICAoKGVfXykgPSBpbnRlbF9nZXRfY3VycmVudF9waHlzaWNhbF9lbmdpbmUoJmlfXykpOyBc CisJICAgICBpbnRlbF9uZXh0X2VuZ2luZSgmaV9fKSkKKworI2VuZGlmIC8qIEdFTV9FTkdJTkVf VE9QT0xPR1lfSCAqLwpkaWZmIC0tZ2l0IGEvbGliL2lndC5oIGIvbGliL2lndC5oCmluZGV4IDY2 NTRhNjU5YzA2Mi4uMDNmMTljYTJkZmI2IDEwMDY0NAotLS0gYS9saWIvaWd0LmgKKysrIGIvbGli L2lndC5oCkBAIC01Myw1ICs1Myw2IEBACiAjaW5jbHVkZSAibWVkaWFfc3Bpbi5oIgogI2luY2x1 ZGUgInJlbmRlcmNvcHkuaCIKICNpbmNsdWRlICJpOTE1L2dlbV9tbWFuLmgiCisjaW5jbHVkZSAi aTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmgiCiAKICNlbmRpZiAvKiBJR1RfSCAqLwpkaWZmIC0t Z2l0IGEvbGliL2lndF9ndC5oIGIvbGliL2lndF9ndC5oCmluZGV4IDQ3NWMwYjNjM2NjNi4uNTJi MmYxZWE5NWE1IDEwMDY0NAotLS0gYS9saWIvaWd0X2d0LmgKKysrIGIvbGliL2lndF9ndC5oCkBA IC05NSw2ICs5NSw4IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2lu ZTIgewogCWNvbnN0IGNoYXIgKm5hbWU7CiAJaW50IGNsYXNzOwogCWludCBpbnN0YW5jZTsKKwl1 aW50NjRfdCBmbGFnczsKKwlib29sIGlzX3ZpcnR1YWw7CiB9IGludGVsX2V4ZWN1dGlvbl9lbmdp bmVzMltdOwogCiB1bnNpZ25lZCBpbnQKZGlmZiAtLWdpdCBhL2xpYi9tZXNvbi5idWlsZCBiL2xp Yi9tZXNvbi5idWlsZAppbmRleCBhODQ2MjkzMzA3Y2IuLmU1NWU1MTI0MDNkOSAxMDA2NDQKLS0t IGEvbGliL21lc29uLmJ1aWxkCisrKyBiL2xpYi9tZXNvbi5idWlsZApAQCAtNSw2ICs1LDcgQEAg bGliX3NvdXJjZXMgPSBbCiAJJ2k5MTUvZ2VtX3N1Ym1pc3Npb24uYycsCiAJJ2k5MTUvZ2VtX3Jp bmcuYycsCiAJJ2k5MTUvZ2VtX21tYW4uYycsCisJJ2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5j JywKIAknaWd0X2NvbG9yX2VuY29kaW5nLmMnLAogCSdpZ3RfZGVidWdmcy5jJywKIAknaWd0X2Rl dmljZS5jJywKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3Qt ZGV2