From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from 12.mo6.mail-out.ovh.net (12.mo6.mail-out.ovh.net [178.32.125.228]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8641B6E5CB for ; Fri, 5 Apr 2019 01:25:34 +0000 (UTC) Received: from player693.ha.ovh.net (unknown [10.109.143.220]) by mo6.mail-out.ovh.net (Postfix) with ESMTP id 37FE01BBCFF for ; Fri, 5 Apr 2019 03:08:13 +0200 (CEST) From: Andi Shyti Date: Fri, 5 Apr 2019 04:07:34 +0300 Message-Id: <20190405010737.19111-5-andi@etezian.org> In-Reply-To: <20190405010737.19111-1-andi@etezian.org> References: <20190405010737.19111-1-andi@etezian.org> MIME-Version: 1.0 Subject: [igt-dev] [PATCH v17 4/7] 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 X3RvcG9sb2d5LmMgfCAyNTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWIv aTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmggfCAgNjYgKysrKysrKysrCiBsaWIvaWd0LmggICAg ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogbGliL2lndF9ndC5oICAgICAgICAgICAgICAgICAg IHwgICAyICsKIGxpYi9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICB8ICAgMSArCiA2IGZpbGVz IGNoYW5nZWQsIDMyOCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2k5MTUv Z2VtX2VuZ2luZV90b3BvbG9neS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2k5MTUvZ2VtX2Vu Z2luZV90b3BvbG9neS5oCgpkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLnNvdXJjZXMgYi9saWIv TWFrZWZpbGUuc291cmNlcwppbmRleCBlMDAzNDdmOTQ1YzUuLjQxMzMxYzJmMmI4MCAxMDA2NDQK LS0tIGEvbGliL01ha2VmaWxlLnNvdXJjZXMKKysrIGIvbGliL01ha2VmaWxlLnNvdXJjZXMKQEAg LTEzLDYgKzEzLDggQEAgbGliX3NvdXJjZV9saXN0ID0JIAlcCiAJaTkxNS9nZW1fcmluZy5jCVwK IAlpOTE1L2dlbV9tbWFuLmMJXAogCWk5MTUvZ2VtX21tYW4uaAlcCisJaTkxNS9nZW1fZW5naW5l X3RvcG9sb2d5LmMJXAorCWk5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oCVwKIAlpOTE1XzNkLmgJ CVwKIAlpOTE1X3JlZy5oCQlcCiAJaTkxNV9wY2lpZHMuaAkJXApkaWZmIC0tZ2l0IGEvbGliL2k5 MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jIGIvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTFlZTFjODJiZDY1Ci0t LSAvZGV2L251bGwKKysrIGIvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jCkBAIC0wLDAg KzEsMjU2IEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KKyAq CisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55 IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lh dGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4g dGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0 YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNo LCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBT b2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBp cyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25z OgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24g bm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVk ZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3 YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVU IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBO TyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElB QkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhF UiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisg KiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUg VVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKi8KKworI2luY2x1 ZGUgImRybXRlc3QuaCIKKyNpbmNsdWRlICJpb2N0bF93cmFwcGVycy5oIgorCisjaW5jbHVkZSAi aTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmgiCisKKy8qCisgKiBMaW1pdCB3aGF0IHdlIHN1cHBv cnQgZm9yIHNpbXBsaWNpdHkgZHVlIGxpbWl0YXRpb24gaW4gaG93IG11Y2ggd2UKKyAqIGNhbiBh ZGRyZXNzIHZpYSBleGVjYnVmMi4KKyAqLworI2RlZmluZSBTSVpFT0ZfQ1RYX1BBUkFNCW9mZnNl dG9mKHN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcywgXAorCQkJCQljbGFzc19pbnN0 YW5jZVtHRU1fTUFYX0VOR0lORVNdKQorI2RlZmluZSBTSVpFT0ZfUVVFUlkJCW9mZnNldG9mKHN0 cnVjdCBkcm1faTkxNV9xdWVyeV9lbmdpbmVfaW5mbywgXAorCQkJCQllbmdpbmVzW0dFTV9NQVhf RU5HSU5FU10pCisKK3N0YXRpYyBpbnQgX19nZW1fcXVlcnkoaW50IGZkLCBzdHJ1Y3QgZHJtX2k5 MTVfcXVlcnkgKnEpCit7CisJaW50IGVyciA9IDA7CisKKwlpZiAoaWd0X2lvY3RsKGZkLCBEUk1f SU9DVExfSTkxNV9RVUVSWSwgcSkpCisJCWVyciA9IC1lcnJubzsKKworCWVycm5vID0gMDsKKwly ZXR1cm4gZXJyOworfQorCitzdGF0aWMgdm9pZCBnZW1fcXVlcnkoaW50IGZkLCBzdHJ1Y3QgZHJt X2k5MTVfcXVlcnkgKnEpCit7CisJaWd0X2Fzc2VydF9lcShfX2dlbV9xdWVyeShmZCwgcSksIDAp OworfQorCitzdGF0aWMgdm9pZCBxdWVyeV9lbmdpbmVzKGludCBmZCwKKwkJCSAgc3RydWN0IGRy bV9pOTE1X3F1ZXJ5X2VuZ2luZV9pbmZvICpxdWVyeV9lbmdpbmVzLAorCQkJICBpbnQgbGVuZ3Ro KQoreworCXN0cnVjdCBkcm1faTkxNV9xdWVyeV9pdGVtIGl0ZW0gPSB7IH07CisJc3RydWN0IGRy bV9pOTE1X3F1ZXJ5IHF1ZXJ5ID0geyB9OworCisJaXRlbS5xdWVyeV9pZCA9IERSTV9JOTE1X1FV RVJZX0VOR0lORV9JTkZPOworCXF1ZXJ5Lml0ZW1zX3B0ciA9IHRvX3VzZXJfcG9pbnRlcigmaXRl bSk7CisJcXVlcnkubnVtX2l0ZW1zID0gMTsKKwlpdGVtLmxlbmd0aCA9IGxlbmd0aDsKKworCWl0 ZW0uZGF0YV9wdHIgPSB0b191c2VyX3BvaW50ZXIocXVlcnlfZW5naW5lcyk7CisKKwlnZW1fcXVl cnkoZmQsICZxdWVyeSk7Cit9CisKK3N0YXRpYyB2b2lkIGN0eF9tYXBfZW5naW5lcyhpbnQgZmQs IHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAqZWQsCisJCQkgICAgc3RydWN0IGRybV9pOTE1X2dl bV9jb250ZXh0X3BhcmFtICpwYXJhbSkKK3sKKwlzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2Vu Z2luZXMgKmVuZ2luZXMgPQorCQkJKHN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcyop IHBhcmFtLT52YWx1ZTsKKwlpbnQgaSA9IDA7CisKKwlmb3IgKHR5cGVvZihlbmdpbmVzLT5jbGFz c19pbnN0YW5jZVswXSkgKnAgPQorCQkJJmVuZ2luZXMtPmNsYXNzX2luc3RhbmNlWzBdOworCQkJ CQkJaSA8IGVkLT5uZW5naW5lczsgaSsrLCBwKyspIHsKKwkJcC0+ZW5naW5lX2NsYXNzID0gZWQt PmVuZ2luZXNbaV0uY2xhc3M7CisJCXAtPmVuZ2luZV9pbnN0YW5jZSA9IGVkLT5lbmdpbmVzW2ld Lmluc3RhbmNlOworCX0KKworCXBhcmFtLT5zaXplID0gb2Zmc2V0b2YodHlwZW9mKCplbmdpbmVz KSwgY2xhc3NfaW5zdGFuY2VbaV0pOworCWVuZ2luZXMtPmV4dGVuc2lvbnMgPSAwOworCisJZ2Vt X2NvbnRleHRfc2V0X3BhcmFtKGZkLCBwYXJhbSk7Cit9CisKK3N0YXRpYyB2b2lkIGluaXRfZW5n aW5lKHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZTIsCisJCQlpbnQgY2xhc3MsIGlu dCBpbnN0YW5jZSwgdWludDY0X3QgZmxhZ3MpCit7CisJY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1 dGlvbl9lbmdpbmUyICpfX2UyOworCXN0YXRpYyBjb25zdCBjaGFyICp1bmtub3duX25hbWUgPSAi dW5rbm93biIsCisJCQkgICp2aXJ0dWFsX25hbWUgPSAidmlydHVhbCI7CisKKwllMi0+Y2xhc3Mg ICAgPSBjbGFzczsKKwllMi0+aW5zdGFuY2UgPSBpbnN0YW5jZTsKKwllMi0+ZmxhZ3MgICAgPSBm bGFnczsKKworCS8qIGVuZ2luZSBpcyBhIHZpcnR1YWwgZW5naW5lICovCisJaWYgKGNsYXNzID09 IEk5MTVfRU5HSU5FX0NMQVNTX0lOVkFMSUQpIHsKKwkJZTItPm5hbWUgPSB2aXJ0dWFsX25hbWU7 CisJCWUyLT5pc192aXJ0dWFsID0gdHJ1ZTsKKwkJcmV0dXJuOworCX0KKworCV9fZm9yX2VhY2hf c3RhdGljX2VuZ2luZShfX2UyKQorCQlpZiAoX19lMi0+Y2xhc3MgPT0gY2xhc3MgJiYgX19lMi0+ aW5zdGFuY2UgPT0gaW5zdGFuY2UpCisJCQlicmVhazsKKworCWlmIChfX2UyLT5uYW1lKSB7CisJ CWUyLT5uYW1lID0gX19lMi0+bmFtZTsKKwl9IGVsc2UgeworCQlpZ3Rfd2FybigiZm91bmQgdW5r bm93biBlbmdpbmUgKCVkLCAlZCkiLCBjbGFzcywgaW5zdGFuY2UpOworCQllMi0+bmFtZSA9IHVu a25vd25fbmFtZTsKKwl9CisKKwkvKiBqdXN0IHRvIHJlbWFyayBpdCAqLworCWUyLT5pc192aXJ0 dWFsID0gZmFsc2U7Cit9CisKK3N0YXRpYyB2b2lkIHF1ZXJ5X2VuZ2luZV9saXN0KGludCBmZCwg c3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCkKK3sKKwl1aW50OF90IGJ1ZmZbU0laRU9GX1FV RVJZXSA9IHsgfTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZW5naW5lX2luZm8gKnF1ZXJ5X2Vu Z2luZSA9CisJCQkoc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2VuZ2luZV9pbmZvICopIGJ1ZmY7CisJ aW50IGk7CisKKwlxdWVyeV9lbmdpbmVzKGZkLCBxdWVyeV9lbmdpbmUsIFNJWkVPRl9RVUVSWSk7 CisKKwlmb3IgKGkgPSAwOyBpIDwgcXVlcnlfZW5naW5lLT5udW1fZW5naW5lczsgaSsrKQorCQlp bml0X2VuZ2luZSgmZWQtPmVuZ2luZXNbaV0sCisJCQkgICAgcXVlcnlfZW5naW5lLT5lbmdpbmVz W2ldLmVuZ2luZV9jbGFzcywKKwkJCSAgICBxdWVyeV9lbmdpbmUtPmVuZ2luZXNbaV0uZW5naW5l X2luc3RhbmNlLCBpKTsKKworCWVkLT5uZW5naW5lcyA9IHF1ZXJ5X2VuZ2luZS0+bnVtX2VuZ2lu ZXM7Cit9CisKK3N0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMgorKmludGVsX2dldF9jdXJy ZW50X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgKmVkKQoreworCWlmICghZWQtPm4p CisJCWVkLT5jdXJyZW50X2VuZ2luZSA9ICZlZC0+ZW5naW5lc1swXTsKKwllbHNlIGlmIChlZC0+ biA+PSBlZC0+bmVuZ2luZXMpCisJCWVkLT5jdXJyZW50X2VuZ2luZSA9IE5VTEw7CisKKwlyZXR1 cm4gZWQtPmN1cnJlbnRfZW5naW5lOworfQorCit2b2lkIGludGVsX25leHRfZW5naW5lKHN0cnVj dCBpbnRlbF9lbmdpbmVfZGF0YSAqZWQpCit7CisJaWYgKGVkLT5uICsgMSA8IGVkLT5uZW5naW5l cykgeworCQllZC0+bisrOworCQllZC0+Y3VycmVudF9lbmdpbmUgPSAmZWQtPmVuZ2luZXNbZWQt Pm5dOworCX0gZWxzZSB7CisJCWVkLT5jdXJyZW50X2VuZ2luZSA9IE5VTEw7CisJfQorfQorCitz dHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIKKyppbnRlbF9nZXRfY3VycmVudF9waHlzaWNh bF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCkKK3sKKwlzdHJ1Y3QgaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZTIgKmU7CisKKwlpZiAoZWQtPm4gPj0gZWQtPm5lbmdpbmVzKQorCQly ZXR1cm4gTlVMTDsKKworCWlmIChpZ3Rfb25seV9saXN0X3N1YnRlc3RzKCkpCisJCWludGVsX25l eHRfZW5naW5lKGVkKTsKKwllbHNlCisJCWZvciAoZSA9IGludGVsX2dldF9jdXJyZW50X2VuZ2lu ZShlZCk7CisJCSAgICAgZSAmJiBlLT5pc192aXJ0dWFsOworCQkgICAgIGludGVsX25leHRfZW5n aW5lKGVkKSkKKwkJCTsKKworCXJldHVybiBlOworfQorCitzdHJ1Y3QgaW50ZWxfZW5naW5lX2Rh dGEgaW50ZWxfaW5pdF9lbmdpbmVfbGlzdChpbnQgZmQsIHVpbnQzMl90IGN0eF9pZCkKK3sKKwlJ OTE1X0RFRklORV9DT05URVhUX1BBUkFNX0VOR0lORVMoZW5naW5lcywgR0VNX01BWF9FTkdJTkVT KTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgZW5naW5lX2RhdGEgPSB7IH07CisJc3RydWN0 IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIHBhcmFtID0geworCQkucGFyYW0gPSBJOTE1X0NP TlRFWFRfUEFSQU1fRU5HSU5FUywKKwkJLmN0eF9pZCA9IGN0eF9pZCwKKwkJLnNpemUgPSBTSVpF T0ZfQ1RYX1BBUkFNLAorCQkudmFsdWUgPSB0b191c2VyX3BvaW50ZXIoJmVuZ2luZXMpLAorCX07 CisJaW50IGk7CisJdW5zaWduZWQgaW50IG5lbmdpbmVzOworCisJaWYgKGlndF9vbmx5X2xpc3Rf c3VidGVzdHMoKSB8fCBfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJnBhcmFtKSkgeworCQkv KiBpZiBrZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCBlbmdpbmUvY29udGV4dCBtYXBwaW5nICovCisJ CWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZTI7CisKKwkJaWd0X2RlYnVn KCJ1c2luZyBwcmUtYWxsb2NhdGVkIGVuZ2luZSBsaXN0XG4iKTsKKworCQlfX2Zvcl9lYWNoX3N0 YXRpY19lbmdpbmUoZTIpIHsKKwkJCXN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqX19l MiA9CisJCQkJJmVuZ2luZV9kYXRhLmVuZ2luZXNbZW5naW5lX2RhdGEubmVuZ2luZXNdOworCisJ CQlpZiAoIWlndF9vbmx5X2xpc3Rfc3VidGVzdHMoKSkgeworCQkJCV9fZTItPmZsYWdzID0gZ2Vt X2NsYXNzX2luc3RhbmNlX3RvX2ViX2ZsYWdzKGZkLAorCQkJCQkJZTItPmNsYXNzLCBlMi0+aW5z dGFuY2UpOworCisJCQkJaWYgKCFnZW1faGFzX3JpbmcoZmQsIF9fZTItPmZsYWdzKSkKKwkJCQkJ Y29udGludWU7CisJCQl9CisKKwkJCV9fZTItPm5hbWUgICAgICAgPSBlMi0+bmFtZTsKKwkJCV9f ZTItPmluc3RhbmNlICAgPSBlMi0+aW5zdGFuY2U7CisJCQlfX2UyLT5jbGFzcyAgICAgID0gZTIt PmNsYXNzOworCQkJX19lMi0+aXNfdmlydHVhbCA9IGZhbHNlOworCisJCQllbmdpbmVfZGF0YS5u ZW5naW5lcysrOworCQl9CisJCXJldHVybiBlbmdpbmVfZGF0YTsKKwl9CisKKwluZW5naW5lcyA9 IHBhcmFtLnNpemUgPiBzaXplb2Yoc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzKSA/ CisJCSAgIChwYXJhbS5zaXplIC0gc2l6ZW9mKHN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5n aW5lcykpIC8KKwkJICAgc2l6ZW9mKGVuZ2luZXMuY2xhc3NfaW5zdGFuY2VbMF0pIDoKKwkJICAg MDsKKworCWlndF9hc3NlcnRfZihuZW5naW5lcyA8PSBHRU1fTUFYX0VOR0lORVMsICJ1bnN1cHBv cnRlZCBlbmdpbmUgY291bnRcbiIpOworCisJaWYgKCFwYXJhbS5zaXplKSB7CisJCS8qIGVsc2Ug aWYgY29udGV4dCBkb2Vzbid0IGhhdmUgbWFwcGVkIGVuZ2luZXMgKi8KKwkJcXVlcnlfZW5naW5l X2xpc3QoZmQsICZlbmdpbmVfZGF0YSk7CisJCWN0eF9tYXBfZW5naW5lcyhmZCwgJmVuZ2luZV9k YXRhLCAmcGFyYW0pOworCisJfSBlbHNlIHsKKwkJLyogY29udGV4dCBoYXMgYSBsaXN0IG9mIG1h cHBlZCBlbmdpbmVzICovCisKKwkJZm9yIChpID0gMDsgaSA8IG5lbmdpbmVzOyBpKyspCisJCQlp bml0X2VuZ2luZSgmZW5naW5lX2RhdGEuZW5naW5lc1tpXSwKKwkJCQkgICAgZW5naW5lcy5jbGFz c19pbnN0YW5jZVtpXS5lbmdpbmVfY2xhc3MsCisJCQkJICAgIGVuZ2luZXMuY2xhc3NfaW5zdGFu Y2VbaV0uZW5naW5lX2luc3RhbmNlLAorCQkJCSAgICBpKTsKKworCQllbmdpbmVfZGF0YS5uZW5n aW5lcyA9IGk7CisJfQorCisJcmV0dXJuIGVuZ2luZV9kYXRhOworfQorCitib29sIGdlbV9oYXNf ZW5naW5lX3RvcG9sb2d5KGludCBmZCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRf cGFyYW0gcGFyYW0gPSB7CisJCS5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTLAor CX07CisKKwlyZXR1cm4gIV9fZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZkLCAmcGFyYW0pOworfQpk aWZmIC0tZ2l0IGEvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oIGIvbGliL2k5MTUvZ2Vt X2VuZ2luZV90b3BvbG9neS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uYjAyODViODBmNjczCi0tLSAvZGV2L251bGwKKysrIGIvbGliL2k5MTUvZ2VtX2VuZ2luZV90 b3BvbG9neS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRl bCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg b2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29m dHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIp LAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk aW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlm eSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2Vs bCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0 aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5k IHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBo KSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25z IG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJ RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklO RlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklH SFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICog TElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF UldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FS RS4KKyAqLworCisjaWZuZGVmIEdFTV9FTkdJTkVfVE9QT0xPR1lfSAorI2RlZmluZSBHRU1fRU5H SU5FX1RPUE9MT0dZX0gKKworI2luY2x1ZGUgImlndF9ndC5oIgorI2luY2x1ZGUgImk5MTVfZHJt LmgiCisKKyNkZWZpbmUgR0VNX01BWF9FTkdJTkVTCQlJOTE1X0VYRUNfUklOR19NQVNLICsgMQor CitzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgeworCXVpbnQzMl90IG5lbmdpbmVzOworCXVpbnQz Ml90IG47CisJaW50IGVycm9yOworCXN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqY3Vy cmVudF9lbmdpbmU7CisJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyIGVuZ2luZXNbR0VN X01BWF9FTkdJTkVTXTsKK307CisKK2Jvb2wgZ2VtX2hhc19lbmdpbmVfdG9wb2xvZ3koaW50IGZk KTsKK3N0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSBpbnRlbF9pbml0X2VuZ2luZV9saXN0KGludCBm ZCwgdWludDMyX3QgY3R4X2lkKTsKKworLyogaXRlcmF0aW9uIGZ1bmN0aW9ucyAqLworc3RydWN0 IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyCisqaW50ZWxfZ2V0X2N1cnJlbnRfZW5naW5lKHN0cnVj dCBpbnRlbF9lbmdpbmVfZGF0YSAqZWQpOworCitzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2lu ZTIKKyppbnRlbF9nZXRfY3VycmVudF9waHlzaWNhbF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2lu ZV9kYXRhICplZCk7CisKK3ZvaWQgaW50ZWxfbmV4dF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2lu ZV9kYXRhICplZCk7CisKKyNkZWZpbmUgX19mb3JfZWFjaF9zdGF0aWNfZW5naW5lKGVfXykgXAor CWZvciAoKGVfXykgPSBpbnRlbF9leGVjdXRpb25fZW5naW5lczI7IChlX18pLT5uYW1lOyAoZV9f KSsrKQorCisjZGVmaW5lIGZvcl9lYWNoX2NvbnRleHRfZW5naW5lKGZkX18sIGN0eF9fLCBlX18p IFwKKwlmb3IgKHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSBpX18gPSBpbnRlbF9pbml0X2VuZ2lu ZV9saXN0KGZkX18sIGN0eF9fKTsgXAorCSAgICAgKChlX18pID0gaW50ZWxfZ2V0X2N1cnJlbnRf ZW5naW5lKCZpX18pKTsgXAorCSAgICAgaW50ZWxfbmV4dF9lbmdpbmUoJmlfXykpCisKKy8qIG5l ZWRzIHRvIHJlcGxhY2UgImZvcl9lYWNoX3BoeXNpY2FsX2VuZ2luZSIgd2hlbiBjb25mbGljdHMg YXJlIGZpeGVkICovCisjZGVmaW5lIF9fZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGZkX18sIGVf XykgXAorCWZvciAoc3RydWN0IGludGVsX2VuZ2luZV9kYXRhIGlfXyA9IGludGVsX2luaXRfZW5n aW5lX2xpc3QoZmRfXywgMCk7IFwKKwkgICAgICgoZV9fKSA9IGludGVsX2dldF9jdXJyZW50X3Bo eXNpY2FsX2VuZ2luZSgmaV9fKSk7IFwKKwkgICAgIGludGVsX25leHRfZW5naW5lKCZpX18pKQor CisjZW5kaWYgLyogR0VNX0VOR0lORV9UT1BPTE9HWV9IICovCmRpZmYgLS1naXQgYS9saWIvaWd0 LmggYi9saWIvaWd0LmgKaW5kZXggNjY1NGE2NTljMDYyLi4wM2YxOWNhMmRmYjYgMTAwNjQ0Ci0t LSBhL2xpYi9pZ3QuaAorKysgYi9saWIvaWd0LmgKQEAgLTUzLDUgKzUzLDYgQEAKICNpbmNsdWRl ICJtZWRpYV9zcGluLmgiCiAjaW5jbHVkZSAicmVuZGVyY29weS5oIgogI2luY2x1ZGUgImk5MTUv Z2VtX21tYW4uaCIKKyNpbmNsdWRlICJpOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuaCIKIAogI2Vu ZGlmIC8qIElHVF9IICovCmRpZmYgLS1naXQgYS9saWIvaWd0X2d0LmggYi9saWIvaWd0X2d0LmgK aW5kZXggNDc1YzBiM2MzY2M2Li41MmIyZjFlYTk1YTUgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfZ3Qu aAorKysgYi9saWIvaWd0X2d0LmgKQEAgLTk1LDYgKzk1LDggQEAgZXh0ZXJuIGNvbnN0IHN0cnVj dCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiB7CiAJY29uc3QgY2hhciAqbmFtZTsKIAlpbnQgY2xh c3M7CiAJaW50IGluc3RhbmNlOworCXVpbnQ2NF90IGZsYWdzOworCWJvb2wgaXNfdmlydHVhbDsK IH0gaW50ZWxfZXhlY3V0aW9uX2VuZ2luZXMyW107CiAKIHVuc2lnbmVkIGludApkaWZmIC0tZ2l0 IGEvbGliL21lc29uLmJ1aWxkIGIvbGliL21lc29uLmJ1aWxkCmluZGV4IDg5ZGUwNmU2OTI0YS4u OTNjMDFkYWE0MjIyIDEwMDY0NAotLS0gYS9saWIvbWVzb24uYnVpbGQKKysrIGIvbGliL21lc29u LmJ1aWxkCkBAIC01LDYgKzUsNyBAQCBsaWJfc291cmNlcyA9IFsKIAknaTkxNS9nZW1fc3VibWlz c2lvbi5jJywKIAknaTkxNS9nZW1fcmluZy5jJywKIAknaTkxNS9nZW1fbW1hbi5jJywKKwknaTkx NS9nZW1fZW5naW5lX3RvcG9sb2d5LmMnLAogCSdpZ3RfY29sb3JfZW5jb2RpbmcuYycsCiAJJ2ln dF9kZWJ1Z2ZzLmMnLAogCSdpZ3RfZGV2aWNlLmMnLAotLSAKMi4yMC4xCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdApp Z3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=