From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from 7.mo4.mail-out.ovh.net (7.mo4.mail-out.ovh.net [178.33.253.54]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9064489415 for ; Tue, 16 Apr 2019 23:17:25 +0000 (UTC) Received: from player695.ha.ovh.net (unknown [10.109.159.69]) by mo4.mail-out.ovh.net (Postfix) with ESMTP id 1F19A1E40BA for ; Wed, 17 Apr 2019 01:10:44 +0200 (CEST) From: Andi Shyti Date: Wed, 17 Apr 2019 02:10:19 +0300 Message-Id: <20190416231023.18086-3-andi@etezian.org> In-Reply-To: <20190416231023.18086-1-andi@etezian.org> References: <20190416231023.18086-1-andi@etezian.org> MIME-Version: 1.0 Subject: [igt-dev] [PATCH v22 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 X3RvcG9sb2d5LmMgfCAyODIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWIv aTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmggfCAgNzkgKysrKysrKysrCiBsaWIvaWd0LmggICAg ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogbGliL2lndF9ndC5oICAgICAgICAgICAgICAgICAg IHwgICAyICsKIGxpYi9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICB8ICAgMSArCiA2IGZpbGVz IGNoYW5nZWQsIDM2NyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2k5MTUv Z2VtX2VuZ2luZV90b3BvbG9neS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2k5MTUvZ2VtX2Vu Z2luZV90b3BvbG9neS5oCgpkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLnNvdXJjZXMgYi9saWIv TWFrZWZpbGUuc291cmNlcwppbmRleCBhMWQyNTM1MTEwMzAuLjA4MjA0OWJmN2M2YSAxMDA2NDQK LS0tIGEvbGliL01ha2VmaWxlLnNvdXJjZXMKKysrIGIvbGliL01ha2VmaWxlLnNvdXJjZXMKQEAg LTEzLDYgKzEzLDggQEAgbGliX3NvdXJjZV9saXN0ID0JIAlcCiAJaTkxNS9nZW1fcmluZy5jCVwK IAlpOTE1L2dlbV9tbWFuLmMJXAogCWk5MTUvZ2VtX21tYW4uaAlcCisJaTkxNS9nZW1fZW5naW5l X3RvcG9sb2d5LmMJXAorCWk5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oCVwKIAlpOTE1XzNkLmgJ CVwKIAlpOTE1X3JlZy5oCQlcCiAJaTkxNV9wY2lpZHMuaAkJXApkaWZmIC0tZ2l0IGEvbGliL2k5 MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jIGIvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZGIxOTZjYTk0ODIyCi0t 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 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 cCkKK3sKKwlpZiAoaWd0X29ubHlfbGlzdF9zdWJ0ZXN0cygpKQorCQlyZXR1cm4gLUVOT0RFVjsK KworCWlmIChfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgcCkpCisJCXJldHVybiAtMTsgLyog dXNpbmcgZGVmYXVsdCBlbmdpbmUgbWFwICovCisKKwlpZiAoIXAtPnNpemUpCisJCXJldHVybiAw OworCisJcC0+c2l6ZSA9IChwLT5zaXplIC0gc2l6ZW9mKHN0cnVjdCBpOTE1X2NvbnRleHRfcGFy YW1fZW5naW5lcykpIC8KKwkJICAob2Zmc2V0b2Yoc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9l bmdpbmVzLAorCQkJICAgIGNsYXNzX2luc3RhbmNlWzFdKSAtCisJCSAgc2l6ZW9mKHN0cnVjdCBp OTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcykpOworCisJaWd0X2Fzc2VydF9mKHAtPnNpemUgPD0g R0VNX01BWF9FTkdJTkVTLCAidW5zdXBwb3J0ZWQgZW5naW5lIGNvdW50XG4iKTsKKworCXJldHVy biAwOworfQorCitzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgaW50ZWxfaW5pdF9lbmdpbmVfbGlz dChpbnQgZmQsIHVpbnQzMl90IGN0eF9pZCkKK3sKKwlERUZJTkVfQ09OVEVYVF9QQVJBTShlbmdp bmVzLCBwYXJhbSwgY3R4X2lkLCBHRU1fTUFYX0VOR0lORVMpOworCXN0cnVjdCBpbnRlbF9lbmdp bmVfZGF0YSBlbmdpbmVfZGF0YSA9IHsgfTsKKwlpbnQgaTsKKworCWlmIChnZW1fdG9wb2xvZ3lf Z2V0X3BhcmFtKGZkLCAmcGFyYW0pKSB7CisJCS8qIGlmIGtlcm5lbCBkb2VzIG5vdCBzdXBwb3J0 IGVuZ2luZS9jb250ZXh0IG1hcHBpbmcgKi8KKwkJY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlv bl9lbmdpbmUyICplMjsKKworCQlpZ3RfZGVidWcoInVzaW5nIHByZS1hbGxvY2F0ZWQgZW5naW5l IGxpc3RcbiIpOworCisJCV9fZm9yX2VhY2hfc3RhdGljX2VuZ2luZShlMikgeworCQkJc3RydWN0 IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpfX2UyID0KKwkJCQkmZW5naW5lX2RhdGEuZW5naW5l c1tlbmdpbmVfZGF0YS5uZW5naW5lc107CisKKwkJCWlmICghaWd0X29ubHlfbGlzdF9zdWJ0ZXN0 cygpKSB7CisJCQkJX19lMi0+ZmxhZ3MgPSBnZW1fY2xhc3NfaW5zdGFuY2VfdG9fZWJfZmxhZ3Mo ZmQsCisJCQkJCQllMi0+Y2xhc3MsIGUyLT5pbnN0YW5jZSk7CisKKwkJCQlpZiAoIWdlbV9oYXNf cmluZyhmZCwgX19lMi0+ZmxhZ3MpKQorCQkJCQljb250aW51ZTsKKwkJCX0gZWxzZSB7CisJCQkJ X19lMi0+ZmxhZ3MgPSAtMTsgLyogMHhmZmYuLi4gKi8KKwkJCX0KKworCQkJX19lMi0+bmFtZSAg ICAgICA9IGUyLT5uYW1lOworCQkJX19lMi0+aW5zdGFuY2UgICA9IGUyLT5pbnN0YW5jZTsKKwkJ CV9fZTItPmNsYXNzICAgICAgPSBlMi0+Y2xhc3M7CisJCQlfX2UyLT5pc192aXJ0dWFsID0gZmFs c2U7CisKKwkJCWVuZ2luZV9kYXRhLm5lbmdpbmVzKys7CisJCX0KKwkJcmV0dXJuIGVuZ2luZV9k YXRhOworCX0KKworCWlmICghcGFyYW0uc2l6ZSkgeworCQlxdWVyeV9lbmdpbmVfbGlzdChmZCwg JmVuZ2luZV9kYXRhKTsKKwkJY3R4X21hcF9lbmdpbmVzKGZkLCAmZW5naW5lX2RhdGEsICZwYXJh bSk7CisJfSBlbHNlIHsKKwkJZm9yIChpID0gMDsgaSA8IHBhcmFtLnNpemU7IGkrKykKKwkJCWlu aXRfZW5naW5lKCZlbmdpbmVfZGF0YS5lbmdpbmVzW2ldLAorCQkJCSAgICBlbmdpbmVzLmNsYXNz X2luc3RhbmNlW2ldLmVuZ2luZV9jbGFzcywKKwkJCQkgICAgZW5naW5lcy5jbGFzc19pbnN0YW5j ZVtpXS5lbmdpbmVfaW5zdGFuY2UsCisJCQkJICAgIGkpOworCisJCWVuZ2luZV9kYXRhLm5lbmdp bmVzID0gaTsKKwl9CisKKwlyZXR1cm4gZW5naW5lX2RhdGE7Cit9CisKK2ludCBnZW1fY29udGV4 dF9sb29rdXBfZW5naW5lKGludCBmZCwgdWludDY0X3QgZW5naW5lLCB1aW50MzJfdCBjdHhfaWQs CisJCQkgICAgICBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCit7CisJREVGSU5F X0NPTlRFWFRfUEFSQU0oZW5naW5lcywgcGFyYW0sIGN0eF9pZCwgR0VNX01BWF9FTkdJTkVTKTsK KworCWlmICghZSB8fCBnZW1fdG9wb2xvZ3lfZ2V0X3BhcmFtKGZkLCAmcGFyYW0pIHx8ICFwYXJh bS5zaXplKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWUtPmNsYXNzID0gZW5naW5lcy5jbGFzc19p bnN0YW5jZVtlbmdpbmVdLmVuZ2luZV9jbGFzczsKKwllLT5pbnN0YW5jZSA9IGVuZ2luZXMuY2xh c3NfaW5zdGFuY2VbZW5naW5lXS5lbmdpbmVfaW5zdGFuY2U7CisKKwlyZXR1cm4gMDsKK30KKwor dm9pZCBnZW1fY29udGV4dF9zZXRfYWxsX2VuZ2luZXMoaW50IGZkLCB1aW50MzJfdCBjdHgpCit7 CisJREVGSU5FX0NPTlRFWFRfUEFSQU0oZW5naW5lcywgcGFyYW0sIGN0eCwgR0VNX01BWF9FTkdJ TkVTKTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgZW5naW5lX2RhdGEgPSB7IH07CisKKwlp ZiAoIWdlbV90b3BvbG9neV9nZXRfcGFyYW0oZmQsICZwYXJhbSkgJiYgIXBhcmFtLnNpemUpIHsK KwkJcXVlcnlfZW5naW5lX2xpc3QoZmQsICZlbmdpbmVfZGF0YSk7CisJCWN0eF9tYXBfZW5naW5l cyhmZCwgJmVuZ2luZV9kYXRhLCAmcGFyYW0pOworCX0KK30KKworYm9vbCBnZW1faGFzX2VuZ2lu ZV90b3BvbG9neShpbnQgZmQpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFt IHBhcmFtID0geworCQkucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fRU5HSU5FUywKKwl9Owor CisJcmV0dXJuICFfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJnBhcmFtKTsKK30KZGlmZiAt LWdpdCBhL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuaCBiL2xpYi9pOTE1L2dlbV9lbmdp bmVfdG9wb2xvZ3kuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjEw ZWM5MjQ1YWVhZQotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xv Z3kuaApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29y cG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJl IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAq IHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3 aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l cmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29w aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisg KiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz IHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hh bGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0 aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMi LCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJ TkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ TElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5H RU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhP TERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJ TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF LCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU V0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisg Ki8KKworI2lmbmRlZiBHRU1fRU5HSU5FX1RPUE9MT0dZX0gKKyNkZWZpbmUgR0VNX0VOR0lORV9U T1BPTE9HWV9ICisKKyNpbmNsdWRlICJpZ3RfZ3QuaCIKKyNpbmNsdWRlICJpOTE1X2RybS5oIgor CisvKgorICogTGltaXQgd2hhdCB3ZSBzdXBwb3J0IGZvciBzaW1wbGljaXR5IGR1ZSBsaW1pdGF0 aW9uIGluIGhvdyBtdWNoIHdlCisgKiBjYW4gYWRkcmVzcyB2aWEgZXhlY2J1ZjIuCisgKi8KKyNk ZWZpbmUgU0laRU9GX0NUWF9QQVJBTQlvZmZzZXRvZihzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFt X2VuZ2luZXMsIFwKKwkJCQkJY2xhc3NfaW5zdGFuY2VbR0VNX01BWF9FTkdJTkVTXSkKKyNkZWZp bmUgU0laRU9GX1FVRVJZCQlvZmZzZXRvZihzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZW5naW5lX2lu Zm8sIFwKKwkJCQkJZW5naW5lc1tHRU1fTUFYX0VOR0lORVNdKQorCisjZGVmaW5lIEdFTV9NQVhf RU5HSU5FUwkJSTkxNV9FWEVDX1JJTkdfTUFTSyArIDEKKworc3RydWN0IGludGVsX2VuZ2luZV9k YXRhIHsKKwl1aW50MzJfdCBuZW5naW5lczsKKwl1aW50MzJfdCBuOworCXN0cnVjdCBpbnRlbF9l eGVjdXRpb25fZW5naW5lMiAqY3VycmVudF9lbmdpbmU7CisJc3RydWN0IGludGVsX2V4ZWN1dGlv bl9lbmdpbmUyIGVuZ2luZXNbR0VNX01BWF9FTkdJTkVTXTsKK307CisKK2Jvb2wgZ2VtX2hhc19l bmdpbmVfdG9wb2xvZ3koaW50IGZkKTsKK3N0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSBpbnRlbF9p bml0X2VuZ2luZV9saXN0KGludCBmZCwgdWludDMyX3QgY3R4X2lkKTsKKworLyogaXRlcmF0aW9u IGZ1bmN0aW9ucyAqLworc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICoKK2ludGVsX2dl dF9jdXJyZW50X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgKmVkKTsKKworc3RydWN0 IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICoKK2ludGVsX2dldF9jdXJyZW50X3BoeXNpY2FsX2Vu Z2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgKmVkKTsKKwordm9pZCBpbnRlbF9uZXh0X2Vu Z2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgKmVkKTsKKworaW50IGdlbV9jb250ZXh0X2xv b2t1cF9lbmdpbmUoaW50IGZkLCB1aW50NjRfdCBlbmdpbmUsIHVpbnQzMl90IGN0eF9pZCwKKwkJ CSAgICAgIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSk7CisKK3ZvaWQgZ2VtX2Nv bnRleHRfc2V0X2FsbF9lbmdpbmVzKGludCBmZCwgdWludDMyX3QgY3R4KTsKKworI2RlZmluZSBf X2Zvcl9lYWNoX3N0YXRpY19lbmdpbmUoZV9fKSBcCisJZm9yICgoZV9fKSA9IGludGVsX2V4ZWN1 dGlvbl9lbmdpbmVzMjsgKGVfXyktPm5hbWU7IChlX18pKyspCisKKyNkZWZpbmUgZm9yX2VhY2hf Y29udGV4dF9lbmdpbmUoZmRfXywgY3R4X18sIGVfXykgXAorCWZvciAoc3RydWN0IGludGVsX2Vu Z2luZV9kYXRhIGlfXyA9IGludGVsX2luaXRfZW5naW5lX2xpc3QoZmRfXywgY3R4X18pOyBcCisJ ICAgICAoKGVfXykgPSBpbnRlbF9nZXRfY3VycmVudF9lbmdpbmUoJmlfXykpOyBcCisJICAgICBp bnRlbF9uZXh0X2VuZ2luZSgmaV9fKSkKKworLyogbmVlZHMgdG8gcmVwbGFjZSAiZm9yX2VhY2hf cGh5c2ljYWxfZW5naW5lIiB3aGVuIGNvbmZsaWN0cyBhcmUgZml4ZWQgKi8KKyNkZWZpbmUgX19m b3JfZWFjaF9waHlzaWNhbF9lbmdpbmUoZmRfXywgZV9fKSBcCisJZm9yIChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2RhdGEgaV9fID0gaW50ZWxfaW5pdF9lbmdpbmVfbGlzdChmZF9fLCAwKTsgXAorCSAg ICAgKChlX18pID0gaW50ZWxfZ2V0X2N1cnJlbnRfcGh5c2ljYWxfZW5naW5lKCZpX18pKTsgXAor CSAgICAgaW50ZWxfbmV4dF9lbmdpbmUoJmlfXykpCisKKyNlbmRpZiAvKiBHRU1fRU5HSU5FX1RP UE9MT0dZX0ggKi8KZGlmZiAtLWdpdCBhL2xpYi9pZ3QuaCBiL2xpYi9pZ3QuaAppbmRleCA2NjU0 YTY1OWMwNjIuLjAzZjE5Y2EyZGZiNiAxMDA2NDQKLS0tIGEvbGliL2lndC5oCisrKyBiL2xpYi9p Z3QuaApAQCAtNTMsNSArNTMsNiBAQAogI2luY2x1ZGUgIm1lZGlhX3NwaW4uaCIKICNpbmNsdWRl ICJyZW5kZXJjb3B5LmgiCiAjaW5jbHVkZSAiaTkxNS9nZW1fbW1hbi5oIgorI2luY2x1ZGUgImk5 MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oIgogCiAjZW5kaWYgLyogSUdUX0ggKi8KZGlmZiAtLWdp dCBhL2xpYi9pZ3RfZ3QuaCBiL2xpYi9pZ3RfZ3QuaAppbmRleCA0NzVjMGIzYzNjYzYuLjUyYjJm MWVhOTVhNSAxMDA2NDQKLS0tIGEvbGliL2lndF9ndC5oCisrKyBiL2xpYi9pZ3RfZ3QuaApAQCAt OTUsNiArOTUsOCBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUy IHsKIAljb25zdCBjaGFyICpuYW1lOwogCWludCBjbGFzczsKIAlpbnQgaW5zdGFuY2U7CisJdWlu dDY0X3QgZmxhZ3M7CisJYm9vbCBpc192aXJ0dWFsOwogfSBpbnRlbF9leGVjdXRpb25fZW5naW5l czJbXTsKIAogdW5zaWduZWQgaW50CmRpZmYgLS1naXQgYS9saWIvbWVzb24uYnVpbGQgYi9saWIv bWVzb24uYnVpbGQKaW5kZXggYTg0NjI5MzMwN2NiLi5lNTVlNTEyNDAzZDkgMTAwNjQ0Ci0tLSBh L2xpYi9tZXNvbi5idWlsZAorKysgYi9saWIvbWVzb24uYnVpbGQKQEAgLTUsNiArNSw3IEBAIGxp Yl9zb3VyY2VzID0gWwogCSdpOTE1L2dlbV9zdWJtaXNzaW9uLmMnLAogCSdpOTE1L2dlbV9yaW5n LmMnLAogCSdpOTE1L2dlbV9tbWFuLmMnLAorCSdpOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuYycs CiAJJ2lndF9jb2xvcl9lbmNvZGluZy5jJywKIAknaWd0X2RlYnVnZnMuYycsCiAJJ2lndF9kZXZp Y2UuYycsCi0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRl dg==