From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from 4.mo5.mail-out.ovh.net (4.mo5.mail-out.ovh.net [178.33.111.247]) by gabe.freedesktop.org (Postfix) with ESMTPS id ECB1089337 for ; Mon, 13 May 2019 02:02:15 +0000 (UTC) Received: from player789.ha.ovh.net (unknown [10.109.143.189]) by mo5.mail-out.ovh.net (Postfix) with ESMTP id BEDD123222F for ; Mon, 13 May 2019 02:45:44 +0200 (CEST) From: Andi Shyti Date: Mon, 13 May 2019 03:44:56 +0300 Message-Id: <20190513004508.8042-3-andi@etezian.org> In-Reply-To: <20190513004508.8042-1-andi@etezian.org> References: <20190513004508.8042-1-andi@etezian.org> MIME-Version: 1.0 Subject: [igt-dev] [PATCH v23 02/14] 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 X3RvcG9sb2d5LmMgfCAyODIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWIv aTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmggfCAgNzkgKysrKysrKysrCiBsaWIvaWd0LmggICAg ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogbGliL2lndF9ndC5oICAgICAgICAgICAgICAgICAg IHwgICAyICsKIGxpYi9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICB8ICAgMSArCiA2IGZpbGVz IGNoYW5nZWQsIDM2NyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2k5MTUv Z2VtX2VuZ2luZV90b3BvbG9neS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2k5MTUvZ2VtX2Vu Z2luZV90b3BvbG9neS5oCgpkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLnNvdXJjZXMgYi9saWIv TWFrZWZpbGUuc291cmNlcwppbmRleCA5NzY4NTgyMzg5NGIuLmVmOTZiZDA5ZDA0OSAxMDA2NDQK LS0tIGEvbGliL01ha2VmaWxlLnNvdXJjZXMKKysrIGIvbGliL01ha2VmaWxlLnNvdXJjZXMKQEAg LTEzLDYgKzEzLDggQEAgbGliX3NvdXJjZV9saXN0ID0JIAlcCiAJaTkxNS9nZW1fcmluZy5jCVwK IAlpOTE1L2dlbV9tbWFuLmMJXAogCWk5MTUvZ2VtX21tYW4uaAlcCisJaTkxNS9nZW1fZW5naW5l X3RvcG9sb2d5LmMJXAorCWk5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oCVwKIAlpOTE1XzNkLmgJ CVwKIAlpOTE1X3JlZy5oCQlcCiAJaTkxNV9wY2lpZHMuaAkJXApkaWZmIC0tZ2l0IGEvbGliL2k5 MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jIGIvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2E0YTE3NjA1ZDMyCi0t LSAvZGV2L251bGwKKysrIGIvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jCkBAIC0wLDAg KzEsMjgyIEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KKyAq 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 b3IgKHR5cGVvZihlbmdpbmVzLT5lbmdpbmVzWzBdKSAqcCA9CisJICAgICAmZW5naW5lcy0+ZW5n aW5lc1swXTsKKwkgICAgIGkgPCBlZC0+bmVuZ2luZXM7IGkrKywgcCsrKSB7CisJCXAtPmVuZ2lu ZV9jbGFzcyA9IGVkLT5lbmdpbmVzW2ldLmNsYXNzOworCQlwLT5lbmdpbmVfaW5zdGFuY2UgPSBl ZC0+ZW5naW5lc1tpXS5pbnN0YW5jZTsKKwl9CisKKwlwYXJhbS0+c2l6ZSA9IG9mZnNldG9mKHR5 cGVvZigqZW5naW5lcyksIGVuZ2luZXNbaV0pOworCWVuZ2luZXMtPmV4dGVuc2lvbnMgPSAwOwor CisJZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZkLCBwYXJhbSk7Cit9CisKK3N0YXRpYyB2b2lkIGlu aXRfZW5naW5lKHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZTIsCisJCQlpbnQgY2xh c3MsIGludCBpbnN0YW5jZSwgdWludDY0X3QgZmxhZ3MpCit7CisJY29uc3Qgc3RydWN0IGludGVs X2V4ZWN1dGlvbl9lbmdpbmUyICpfX2UyOworCXN0YXRpYyBjb25zdCBjaGFyICp1bmtub3duX25h bWUgPSAidW5rbm93biIsCisJCQkgICp2aXJ0dWFsX25hbWUgPSAidmlydHVhbCI7CisKKwllMi0+ Y2xhc3MgICAgPSBjbGFzczsKKwllMi0+aW5zdGFuY2UgPSBpbnN0YW5jZTsKKwllMi0+ZmxhZ3Mg ICAgPSBmbGFnczsKKworCS8qIGVuZ2luZSBpcyBhIHZpcnR1YWwgZW5naW5lICovCisJaWYgKGNs YXNzID09IEk5MTVfRU5HSU5FX0NMQVNTX0lOVkFMSUQpIHsKKwkJZTItPm5hbWUgPSB2aXJ0dWFs X25hbWU7CisJCWUyLT5pc192aXJ0dWFsID0gdHJ1ZTsKKwkJcmV0dXJuOworCX0KKworCV9fZm9y X2VhY2hfc3RhdGljX2VuZ2luZShfX2UyKQorCQlpZiAoX19lMi0+Y2xhc3MgPT0gY2xhc3MgJiYg X19lMi0+aW5zdGFuY2UgPT0gaW5zdGFuY2UpCisJCQlicmVhazsKKworCWlmIChfX2UyLT5uYW1l KSB7CisJCWUyLT5uYW1lID0gX19lMi0+bmFtZTsKKwl9IGVsc2UgeworCQlpZ3Rfd2FybigiZm91 bmQgdW5rbm93biBlbmdpbmUgKCVkLCAlZCkiLCBjbGFzcywgaW5zdGFuY2UpOworCQllMi0+bmFt ZSA9IHVua25vd25fbmFtZTsKKwl9CisKKwkvKiBqdXN0IHRvIHJlbWFyayBpdCAqLworCWUyLT5p c192aXJ0dWFsID0gZmFsc2U7Cit9CisKK3N0YXRpYyB2b2lkIHF1ZXJ5X2VuZ2luZV9saXN0KGlu dCBmZCwgc3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCkKK3sKKwl1aW50OF90IGJ1ZmZbU0la RU9GX1FVRVJZXSA9IHsgfTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZW5naW5lX2luZm8gKnF1 ZXJ5X2VuZ2luZSA9CisJCQkoc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2VuZ2luZV9pbmZvICopIGJ1 ZmY7CisJaW50IGk7CisKKwlxdWVyeV9lbmdpbmVzKGZkLCBxdWVyeV9lbmdpbmUsIFNJWkVPRl9R VUVSWSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgcXVlcnlfZW5naW5lLT5udW1fZW5naW5lczsgaSsr KQorCQlpbml0X2VuZ2luZSgmZWQtPmVuZ2luZXNbaV0sCisJCQkgICAgcXVlcnlfZW5naW5lLT5l bmdpbmVzW2ldLmVuZ2luZS5lbmdpbmVfY2xhc3MsCisJCQkgICAgcXVlcnlfZW5naW5lLT5lbmdp bmVzW2ldLmVuZ2luZS5lbmdpbmVfaW5zdGFuY2UsIGkpOworCisJZWQtPm5lbmdpbmVzID0gcXVl cnlfZW5naW5lLT5udW1fZW5naW5lczsKK30KKworc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdp bmUyICoKK2ludGVsX2dldF9jdXJyZW50X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEg KmVkKQoreworCWlmICghZWQtPm4pCisJCWVkLT5jdXJyZW50X2VuZ2luZSA9ICZlZC0+ZW5naW5l c1swXTsKKwllbHNlIGlmIChlZC0+biA+PSBlZC0+bmVuZ2luZXMpCisJCWVkLT5jdXJyZW50X2Vu Z2luZSA9IE5VTEw7CisKKwlyZXR1cm4gZWQtPmN1cnJlbnRfZW5naW5lOworfQorCit2b2lkIGlu dGVsX25leHRfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAqZWQpCit7CisJaWYgKGVk LT5uICsgMSA8IGVkLT5uZW5naW5lcykgeworCQllZC0+bisrOworCQllZC0+Y3VycmVudF9lbmdp bmUgPSAmZWQtPmVuZ2luZXNbZWQtPm5dOworCX0gZWxzZSB7CisJCWVkLT5uID0gZWQtPm5lbmdp bmVzOworCQllZC0+Y3VycmVudF9lbmdpbmUgPSBOVUxMOworCX0KK30KKworc3RydWN0IGludGVs X2V4ZWN1dGlvbl9lbmdpbmUyICoKK2ludGVsX2dldF9jdXJyZW50X3BoeXNpY2FsX2VuZ2luZShz dHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgKmVkKQoreworCXN0cnVjdCBpbnRlbF9leGVjdXRpb25f ZW5naW5lMiAqZTsKKworCWZvciAoZSA9IGludGVsX2dldF9jdXJyZW50X2VuZ2luZShlZCk7CisJ ICAgICBlICYmIGUtPmlzX3ZpcnR1YWw7CisJICAgICBpbnRlbF9uZXh0X2VuZ2luZShlZCkpCisJ CTsKKworCXJldHVybiBlOworfQorCitzdGF0aWMgaW50IGdlbV90b3BvbG9neV9nZXRfcGFyYW0o aW50IGZkLAorCQkJCSAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtICpwKQorewor CWlmIChpZ3Rfb25seV9saXN0X3N1YnRlc3RzKCkpCisJCXJldHVybiAtRU5PREVWOworCisJaWYg KF9fZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZkLCBwKSkKKwkJcmV0dXJuIC0xOyAvKiB1c2luZyBk ZWZhdWx0IGVuZ2luZSBtYXAgKi8KKworCWlmICghcC0+c2l6ZSkKKwkJcmV0dXJuIDA7CisKKwlw LT5zaXplID0gKHAtPnNpemUgLSBzaXplb2Yoc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdp bmVzKSkgLworCQkgIChvZmZzZXRvZihzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMs CisJCQkgICAgZW5naW5lc1sxXSkgLQorCQkgIHNpemVvZihzdHJ1Y3QgaTkxNV9jb250ZXh0X3Bh cmFtX2VuZ2luZXMpKTsKKworCWlndF9hc3NlcnRfZihwLT5zaXplIDw9IEdFTV9NQVhfRU5HSU5F UywgInVuc3VwcG9ydGVkIGVuZ2luZSBjb3VudFxuIik7CisKKwlyZXR1cm4gMDsKK30KKworc3Ry dWN0IGludGVsX2VuZ2luZV9kYXRhIGludGVsX2luaXRfZW5naW5lX2xpc3QoaW50IGZkLCB1aW50 MzJfdCBjdHhfaWQpCit7CisJREVGSU5FX0NPTlRFWFRfUEFSQU0oZW5naW5lcywgcGFyYW0sIGN0 eF9pZCwgR0VNX01BWF9FTkdJTkVTKTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgZW5naW5l X2RhdGEgPSB7IH07CisJaW50IGk7CisKKwlpZiAoZ2VtX3RvcG9sb2d5X2dldF9wYXJhbShmZCwg JnBhcmFtKSkgeworCQkvKiBpZiBrZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCBlbmdpbmUvY29udGV4 dCBtYXBwaW5nICovCisJCWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZTI7 CisKKwkJaWd0X2RlYnVnKCJ1c2luZyBwcmUtYWxsb2NhdGVkIGVuZ2luZSBsaXN0XG4iKTsKKwor CQlfX2Zvcl9lYWNoX3N0YXRpY19lbmdpbmUoZTIpIHsKKwkJCXN0cnVjdCBpbnRlbF9leGVjdXRp b25fZW5naW5lMiAqX19lMiA9CisJCQkJJmVuZ2luZV9kYXRhLmVuZ2luZXNbZW5naW5lX2RhdGEu bmVuZ2luZXNdOworCisJCQlpZiAoIWlndF9vbmx5X2xpc3Rfc3VidGVzdHMoKSkgeworCQkJCV9f ZTItPmZsYWdzID0gZ2VtX2NsYXNzX2luc3RhbmNlX3RvX2ViX2ZsYWdzKGZkLAorCQkJCQkJZTIt PmNsYXNzLCBlMi0+aW5zdGFuY2UpOworCisJCQkJaWYgKCFnZW1faGFzX3JpbmcoZmQsIF9fZTIt PmZsYWdzKSkKKwkJCQkJY29udGludWU7CisJCQl9IGVsc2UgeworCQkJCV9fZTItPmZsYWdzID0g LTE7IC8qIDB4ZmZmLi4uICovCisJCQl9CisKKwkJCV9fZTItPm5hbWUgICAgICAgPSBlMi0+bmFt ZTsKKwkJCV9fZTItPmluc3RhbmNlICAgPSBlMi0+aW5zdGFuY2U7CisJCQlfX2UyLT5jbGFzcyAg ICAgID0gZTItPmNsYXNzOworCQkJX19lMi0+aXNfdmlydHVhbCA9IGZhbHNlOworCisJCQllbmdp bmVfZGF0YS5uZW5naW5lcysrOworCQl9CisJCXJldHVybiBlbmdpbmVfZGF0YTsKKwl9CisKKwlp ZiAoIXBhcmFtLnNpemUpIHsKKwkJcXVlcnlfZW5naW5lX2xpc3QoZmQsICZlbmdpbmVfZGF0YSk7 CisJCWN0eF9tYXBfZW5naW5lcyhmZCwgJmVuZ2luZV9kYXRhLCAmcGFyYW0pOworCX0gZWxzZSB7 CisJCWZvciAoaSA9IDA7IGkgPCBwYXJhbS5zaXplOyBpKyspCisJCQlpbml0X2VuZ2luZSgmZW5n aW5lX2RhdGEuZW5naW5lc1tpXSwKKwkJCQkgICAgZW5naW5lcy5lbmdpbmVzW2ldLmVuZ2luZV9j bGFzcywKKwkJCQkgICAgZW5naW5lcy5lbmdpbmVzW2ldLmVuZ2luZV9pbnN0YW5jZSwKKwkJCQkg ICAgaSk7CisKKwkJZW5naW5lX2RhdGEubmVuZ2luZXMgPSBpOworCX0KKworCXJldHVybiBlbmdp bmVfZGF0YTsKK30KKworaW50IGdlbV9jb250ZXh0X2xvb2t1cF9lbmdpbmUoaW50IGZkLCB1aW50 NjRfdCBlbmdpbmUsIHVpbnQzMl90IGN0eF9pZCwKKwkJCSAgICAgIHN0cnVjdCBpbnRlbF9leGVj dXRpb25fZW5naW5lMiAqZSkKK3sKKwlERUZJTkVfQ09OVEVYVF9QQVJBTShlbmdpbmVzLCBwYXJh bSwgY3R4X2lkLCBHRU1fTUFYX0VOR0lORVMpOworCisJaWYgKCFlIHx8IGdlbV90b3BvbG9neV9n ZXRfcGFyYW0oZmQsICZwYXJhbSkgfHwgIXBhcmFtLnNpemUpCisJCXJldHVybiAtRUlOVkFMOwor CisJZS0+Y2xhc3MgPSBlbmdpbmVzLmVuZ2luZXNbZW5naW5lXS5lbmdpbmVfY2xhc3M7CisJZS0+ aW5zdGFuY2UgPSBlbmdpbmVzLmVuZ2luZXNbZW5naW5lXS5lbmdpbmVfaW5zdGFuY2U7CisKKwly ZXR1cm4gMDsKK30KKwordm9pZCBnZW1fY29udGV4dF9zZXRfYWxsX2VuZ2luZXMoaW50IGZkLCB1 aW50MzJfdCBjdHgpCit7CisJREVGSU5FX0NPTlRFWFRfUEFSQU0oZW5naW5lcywgcGFyYW0sIGN0 eCwgR0VNX01BWF9FTkdJTkVTKTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgZW5naW5lX2Rh dGEgPSB7IH07CisKKwlpZiAoIWdlbV90b3BvbG9neV9nZXRfcGFyYW0oZmQsICZwYXJhbSkgJiYg IXBhcmFtLnNpemUpIHsKKwkJcXVlcnlfZW5naW5lX2xpc3QoZmQsICZlbmdpbmVfZGF0YSk7CisJ CWN0eF9tYXBfZW5naW5lcyhmZCwgJmVuZ2luZV9kYXRhLCAmcGFyYW0pOworCX0KK30KKworYm9v bCBnZW1faGFzX2VuZ2luZV90b3BvbG9neShpbnQgZmQpCit7CisJc3RydWN0IGRybV9pOTE1X2dl bV9jb250ZXh0X3BhcmFtIHBhcmFtID0geworCQkucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1f RU5HSU5FUywKKwl9OworCisJcmV0dXJuICFfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJnBh cmFtKTsKK30KZGlmZiAtLWdpdCBhL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuaCBiL2xp Yi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLmI0MDIwNGIxNTA2OAotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9pOTE1L2dl bV9lbmdpbmVfdG9wb2xvZ3kuaApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IMKp IDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBv ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAi U29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp b24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBj b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICog YW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z IHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQg bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAq IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlh bCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9S CisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT IE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF IEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMg T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1Ig T1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP UlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBU SEUgU09GVFdBUkUuCisgKi8KKworI2lmbmRlZiBHRU1fRU5HSU5FX1RPUE9MT0dZX0gKKyNkZWZp bmUgR0VNX0VOR0lORV9UT1BPTE9HWV9ICisKKyNpbmNsdWRlICJpZ3RfZ3QuaCIKKyNpbmNsdWRl ICJpOTE1X2RybS5oIgorCisvKgorICogTGltaXQgd2hhdCB3ZSBzdXBwb3J0IGZvciBzaW1wbGlj aXR5IGR1ZSBsaW1pdGF0aW9uIGluIGhvdyBtdWNoIHdlCisgKiBjYW4gYWRkcmVzcyB2aWEgZXhl Y2J1ZjIuCisgKi8KKyNkZWZpbmUgU0laRU9GX0NUWF9QQVJBTQlvZmZzZXRvZihzdHJ1Y3QgaTkx NV9jb250ZXh0X3BhcmFtX2VuZ2luZXMsIFwKKwkJCQkJIGVuZ2luZXNbR0VNX01BWF9FTkdJTkVT XSkKKyNkZWZpbmUgU0laRU9GX1FVRVJZCQlvZmZzZXRvZihzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlf ZW5naW5lX2luZm8sIFwKKwkJCQkJIGVuZ2luZXNbR0VNX01BWF9FTkdJTkVTXSkKKworI2RlZmlu ZSBHRU1fTUFYX0VOR0lORVMJCUk5MTVfRVhFQ19SSU5HX01BU0sgKyAxCisKK3N0cnVjdCBpbnRl bF9lbmdpbmVfZGF0YSB7CisJdWludDMyX3QgbmVuZ2luZXM7CisJdWludDMyX3QgbjsKKwlzdHJ1 Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmN1cnJlbnRfZW5naW5lOworCXN0cnVjdCBpbnRl bF9leGVjdXRpb25fZW5naW5lMiBlbmdpbmVzW0dFTV9NQVhfRU5HSU5FU107Cit9OworCitib29s IGdlbV9oYXNfZW5naW5lX3RvcG9sb2d5KGludCBmZCk7CitzdHJ1Y3QgaW50ZWxfZW5naW5lX2Rh dGEgaW50ZWxfaW5pdF9lbmdpbmVfbGlzdChpbnQgZmQsIHVpbnQzMl90IGN0eF9pZCk7CisKKy8q IGl0ZXJhdGlvbiBmdW5jdGlvbnMgKi8KK3N0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAq CitpbnRlbF9nZXRfY3VycmVudF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCk7 CisKK3N0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqCitpbnRlbF9nZXRfY3VycmVudF9w aHlzaWNhbF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCk7CisKK3ZvaWQgaW50 ZWxfbmV4dF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCk7CisKK2ludCBnZW1f Y29udGV4dF9sb29rdXBfZW5naW5lKGludCBmZCwgdWludDY0X3QgZW5naW5lLCB1aW50MzJfdCBj dHhfaWQsCisJCQkgICAgICBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpOworCit2 b2lkIGdlbV9jb250ZXh0X3NldF9hbGxfZW5naW5lcyhpbnQgZmQsIHVpbnQzMl90IGN0eCk7CisK KyNkZWZpbmUgX19mb3JfZWFjaF9zdGF0aWNfZW5naW5lKGVfXykgXAorCWZvciAoKGVfXykgPSBp bnRlbF9leGVjdXRpb25fZW5naW5lczI7IChlX18pLT5uYW1lOyAoZV9fKSsrKQorCisjZGVmaW5l IGZvcl9lYWNoX2NvbnRleHRfZW5naW5lKGZkX18sIGN0eF9fLCBlX18pIFwKKwlmb3IgKHN0cnVj dCBpbnRlbF9lbmdpbmVfZGF0YSBpX18gPSBpbnRlbF9pbml0X2VuZ2luZV9saXN0KGZkX18sIGN0 eF9fKTsgXAorCSAgICAgKChlX18pID0gaW50ZWxfZ2V0X2N1cnJlbnRfZW5naW5lKCZpX18pKTsg XAorCSAgICAgaW50ZWxfbmV4dF9lbmdpbmUoJmlfXykpCisKKy8qIG5lZWRzIHRvIHJlcGxhY2Ug ImZvcl9lYWNoX3BoeXNpY2FsX2VuZ2luZSIgd2hlbiBjb25mbGljdHMgYXJlIGZpeGVkICovCisj ZGVmaW5lIF9fZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGZkX18sIGVfXykgXAorCWZvciAoc3Ry dWN0IGludGVsX2VuZ2luZV9kYXRhIGlfXyA9IGludGVsX2luaXRfZW5naW5lX2xpc3QoZmRfXywg MCk7IFwKKwkgICAgICgoZV9fKSA9IGludGVsX2dldF9jdXJyZW50X3BoeXNpY2FsX2VuZ2luZSgm aV9fKSk7IFwKKwkgICAgIGludGVsX25leHRfZW5naW5lKCZpX18pKQorCisjZW5kaWYgLyogR0VN X0VOR0lORV9UT1BPTE9HWV9IICovCmRpZmYgLS1naXQgYS9saWIvaWd0LmggYi9saWIvaWd0LmgK aW5kZXggNTg1MmQ1NTcxZjhiLi5hM2QzZWRjMmQ1YWMgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3QuaAor KysgYi9saWIvaWd0LmgKQEAgLTU0LDUgKzU0LDYgQEAKICNpbmNsdWRlICJtZWRpYV9zcGluLmgi CiAjaW5jbHVkZSAicmVuZGVyY29weS5oIgogI2luY2x1ZGUgImk5MTUvZ2VtX21tYW4uaCIKKyNp bmNsdWRlICJpOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuaCIKIAogI2VuZGlmIC8qIElHVF9IICov CmRpZmYgLS1naXQgYS9saWIvaWd0X2d0LmggYi9saWIvaWd0X2d0LmgKaW5kZXggNDc1YzBiM2Mz Y2M2Li41MmIyZjFlYTk1YTUgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfZ3QuaAorKysgYi9saWIvaWd0 X2d0LmgKQEAgLTk1LDYgKzk1LDggQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRp b25fZW5naW5lMiB7CiAJY29uc3QgY2hhciAqbmFtZTsKIAlpbnQgY2xhc3M7CiAJaW50IGluc3Rh bmNlOworCXVpbnQ2NF90IGZsYWdzOworCWJvb2wgaXNfdmlydHVhbDsKIH0gaW50ZWxfZXhlY3V0 aW9uX2VuZ2luZXMyW107CiAKIHVuc2lnbmVkIGludApkaWZmIC0tZ2l0IGEvbGliL21lc29uLmJ1 aWxkIGIvbGliL21lc29uLmJ1aWxkCmluZGV4IDc4NmU3YTI2NGY5Ny4uNzM3NWY5OGJjNjY4IDEw MDY0NAotLS0gYS9saWIvbWVzb24uYnVpbGQKKysrIGIvbGliL21lc29uLmJ1aWxkCkBAIC01LDYg KzUsNyBAQCBsaWJfc291cmNlcyA9IFsKIAknaTkxNS9nZW1fc3VibWlzc2lvbi5jJywKIAknaTkx NS9nZW1fcmluZy5jJywKIAknaTkxNS9nZW1fbW1hbi5jJywKKwknaTkxNS9nZW1fZW5naW5lX3Rv cG9sb2d5LmMnLAogCSdpZ3RfY29sb3JfZW5jb2RpbmcuYycsCiAJJ2lndF9kZWJ1Z2ZzLmMnLAog CSdpZ3RfZGV2aWNlLmMnLAotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2lndC1kZXY=