From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Wed, 22 May 2019 14:50:52 +0100 Message-Id: <20190522135104.26930-3-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20190522135104.26930-1-tvrtko.ursulin@linux.intel.com> References: <20190522135104.26930-1-tvrtko.ursulin@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [CI i-g-t 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: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org 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 ClNpZ25lZC1vZmYtYnk6IEFuZGkgU2h5dGkgPGFuZGkuc2h5dGlAaW50ZWwuY29tPgpSZXZpZXdl ZC1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KLS0tCiBsaWIv TWFrZWZpbGUuc291cmNlcyAgICAgICAgICAgfCAgIDIgKwogbGliL2k5MTUvZ2VtX2VuZ2luZV90 b3BvbG9neS5jIHwgMjk4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogbGliL2k5 MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oIHwgIDcwICsrKysrKysrCiBsaWIvaWd0LmggICAgICAg ICAgICAgICAgICAgICAgfCAgIDEgKwogbGliL2lndF9ndC5oICAgICAgICAgICAgICAgICAgIHwg ICAyICsKIGxpYi9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICB8ICAgMSArCiA2IGZpbGVzIGNo YW5nZWQsIDM3NCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2k5MTUvZ2Vt X2VuZ2luZV90b3BvbG9neS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2k5MTUvZ2VtX2VuZ2lu ZV90b3BvbG9neS5oCgpkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLnNvdXJjZXMgYi9saWIvTWFr ZWZpbGUuc291cmNlcwppbmRleCA5NzY4NTgyMzg5NGIuLmVmOTZiZDA5ZDA0OSAxMDA2NDQKLS0t IGEvbGliL01ha2VmaWxlLnNvdXJjZXMKKysrIGIvbGliL01ha2VmaWxlLnNvdXJjZXMKQEAgLTEz LDYgKzEzLDggQEAgbGliX3NvdXJjZV9saXN0ID0JIAlcCiAJaTkxNS9nZW1fcmluZy5jCVwKIAlp OTE1L2dlbV9tbWFuLmMJXAogCWk5MTUvZ2VtX21tYW4uaAlcCisJaTkxNS9nZW1fZW5naW5lX3Rv cG9sb2d5LmMJXAorCWk5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oCVwKIAlpOTE1XzNkLmgJCVwK IAlpOTE1X3JlZy5oCQlcCiAJaTkxNV9wY2lpZHMuaAkJXApkaWZmIC0tZ2l0IGEvbGliL2k5MTUv Z2VtX2VuZ2luZV90b3BvbG9neS5jIGIvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZGQyNmZhZTAwODUzCi0tLSAv ZGV2L251bGwKKysrIGIvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jCkBAIC0wLDAgKzEs Mjk4IEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisg KiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBl cnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVk IGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhl IFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRp b24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBk aXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0 d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBm dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgor ICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90 aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQg aW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJl LgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJB TlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5P VCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBF VkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJ TiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBG Uk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNF IE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKi8KKworI2luY2x1ZGUg ImRybXRlc3QuaCIKKyNpbmNsdWRlICJpb2N0bF93cmFwcGVycy5oIgorCisjaW5jbHVkZSAiaTkx NS9nZW1fZW5naW5lX3RvcG9sb2d5LmgiCisKKy8qCisgKiBMaW1pdCB3aGF0IHdlIHN1cHBvcnQg Zm9yIHNpbXBsaWNpdHkgZHVlIGxpbWl0YXRpb24gaW4gaG93IG11Y2ggd2UKKyAqIGNhbiBhZGRy ZXNzIHZpYSBleGVjYnVmMi4KKyAqLworI2RlZmluZSBTSVpFT0ZfQ1RYX1BBUkFNCW9mZnNldG9m KHN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcywgXAorCQkJCQkgZW5naW5lc1tHRU1f TUFYX0VOR0lORVNdKQorI2RlZmluZSBTSVpFT0ZfUVVFUlkJCW9mZnNldG9mKHN0cnVjdCBkcm1f aTkxNV9xdWVyeV9lbmdpbmVfaW5mbywgXAorCQkJCQkgZW5naW5lc1tHRU1fTUFYX0VOR0lORVNd KQorCisjZGVmaW5lIERFRklORV9DT05URVhUX0VOR0lORVNfUEFSQU0oZV9fLCBwX18sIGNfXywg Tl9fKSBcCisJCUk5MTVfREVGSU5FX0NPTlRFWFRfUEFSQU1fRU5HSU5FUyhlX18sIE5fXyk7IFwK KwkJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIHBfXyA9IHsgXAorCQkJLnBhcmFt ID0gSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVMsIFwKKwkJCS5jdHhfaWQgPSBjX18sIFwKKwkJ CS5zaXplID0gU0laRU9GX0NUWF9QQVJBTSwgXAorCQkJLnZhbHVlID0gdG9fdXNlcl9wb2ludGVy KCZlX18pLCBcCisJCX0KKworc3RhdGljIGludCBfX2dlbV9xdWVyeShpbnQgZmQsIHN0cnVjdCBk cm1faTkxNV9xdWVyeSAqcSkKK3sKKwlpbnQgZXJyID0gMDsKKworCWlmIChpZ3RfaW9jdGwoZmQs IERSTV9JT0NUTF9JOTE1X1FVRVJZLCBxKSkKKwkJZXJyID0gLWVycm5vOworCisJZXJybm8gPSAw OworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyB2b2lkIGdlbV9xdWVyeShpbnQgZmQsIHN0cnVj dCBkcm1faTkxNV9xdWVyeSAqcSkKK3sKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX3F1ZXJ5KGZkLCBx KSwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIHF1ZXJ5X2VuZ2luZXMoaW50IGZkLAorCQkJICBzdHJ1 Y3QgZHJtX2k5MTVfcXVlcnlfZW5naW5lX2luZm8gKnF1ZXJ5X2VuZ2luZXMsCisJCQkgIGludCBs ZW5ndGgpCit7CisJc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2l0ZW0gaXRlbSA9IHsgfTsKKwlzdHJ1 Y3QgZHJtX2k5MTVfcXVlcnkgcXVlcnkgPSB7IH07CisKKwlpdGVtLnF1ZXJ5X2lkID0gRFJNX0k5 MTVfUVVFUllfRU5HSU5FX0lORk87CisJcXVlcnkuaXRlbXNfcHRyID0gdG9fdXNlcl9wb2ludGVy KCZpdGVtKTsKKwlxdWVyeS5udW1faXRlbXMgPSAxOworCWl0ZW0ubGVuZ3RoID0gbGVuZ3RoOwor CisJaXRlbS5kYXRhX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihxdWVyeV9lbmdpbmVzKTsKKworCWdl bV9xdWVyeShmZCwgJnF1ZXJ5KTsKK30KKworc3RhdGljIHZvaWQgY3R4X21hcF9lbmdpbmVzKGlu dCBmZCwgc3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCwKKwkJCSAgICBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2NvbnRleHRfcGFyYW0gKnBhcmFtKQoreworCXN0cnVjdCBpOTE1X2NvbnRleHRfcGFy YW1fZW5naW5lcyAqZW5naW5lcyA9CisJCQkoc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdp bmVzICopIHBhcmFtLT52YWx1ZTsKKwlpbnQgaSA9IDA7CisKKwlmb3IgKHR5cGVvZihlbmdpbmVz LT5lbmdpbmVzWzBdKSAqcCA9CisJICAgICAmZW5naW5lcy0+ZW5naW5lc1swXTsKKwkgICAgIGkg PCBlZC0+bmVuZ2luZXM7IGkrKywgcCsrKSB7CisJCXAtPmVuZ2luZV9jbGFzcyA9IGVkLT5lbmdp bmVzW2ldLmNsYXNzOworCQlwLT5lbmdpbmVfaW5zdGFuY2UgPSBlZC0+ZW5naW5lc1tpXS5pbnN0 YW5jZTsKKwl9CisKKwlwYXJhbS0+c2l6ZSA9IG9mZnNldG9mKHR5cGVvZigqZW5naW5lcyksIGVu Z2luZXNbaV0pOworCWVuZ2luZXMtPmV4dGVuc2lvbnMgPSAwOworCisJZ2VtX2NvbnRleHRfc2V0 X3BhcmFtKGZkLCBwYXJhbSk7Cit9CisKK3N0YXRpYyB2b2lkIGluaXRfZW5naW5lKHN0cnVjdCBp bnRlbF9leGVjdXRpb25fZW5naW5lMiAqZTIsCisJCQlpbnQgY2xhc3MsIGludCBpbnN0YW5jZSwg dWludDY0X3QgZmxhZ3MpCit7CisJY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUy ICpfX2UyOworCXN0YXRpYyBjb25zdCBjaGFyICp1bmtub3duX25hbWUgPSAidW5rbm93biIsCisJ CQkgICp2aXJ0dWFsX25hbWUgPSAidmlydHVhbCI7CisKKwllMi0+Y2xhc3MgICAgPSBjbGFzczsK KwllMi0+aW5zdGFuY2UgPSBpbnN0YW5jZTsKKwllMi0+ZmxhZ3MgICAgPSBmbGFnczsKKworCS8q IGVuZ2luZSBpcyBhIHZpcnR1YWwgZW5naW5lICovCisJaWYgKGNsYXNzID09IEk5MTVfRU5HSU5F X0NMQVNTX0lOVkFMSUQgJiYKKwkgICAgaW5zdGFuY2UgPT0gSTkxNV9FTkdJTkVfQ0xBU1NfSU5W QUxJRF9WSVJUVUFMKSB7CisJCWUyLT5uYW1lID0gdmlydHVhbF9uYW1lOworCQllMi0+aXNfdmly dHVhbCA9IHRydWU7CisJCXJldHVybjsKKwl9CisKKwlfX2Zvcl9lYWNoX3N0YXRpY19lbmdpbmUo X19lMikKKwkJaWYgKF9fZTItPmNsYXNzID09IGNsYXNzICYmIF9fZTItPmluc3RhbmNlID09IGlu c3RhbmNlKQorCQkJYnJlYWs7CisKKwlpZiAoX19lMi0+bmFtZSkgeworCQllMi0+bmFtZSA9IF9f ZTItPm5hbWU7CisJfSBlbHNlIHsKKwkJaWd0X3dhcm4oImZvdW5kIHVua25vd24gZW5naW5lICgl ZCwgJWQpIiwgY2xhc3MsIGluc3RhbmNlKTsKKwkJZTItPm5hbWUgPSB1bmtub3duX25hbWU7CisJ CWUyLT5mbGFncyA9IC0xOworCX0KKworCS8qIGp1c3QgdG8gcmVtYXJrIGl0ICovCisJZTItPmlz X3ZpcnR1YWwgPSBmYWxzZTsKK30KKworc3RhdGljIHZvaWQgcXVlcnlfZW5naW5lX2xpc3QoaW50 IGZkLCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgKmVkKQoreworCXVpbnQ4X3QgYnVmZltTSVpF T0ZfUVVFUlldID0geyB9OworCXN0cnVjdCBkcm1faTkxNV9xdWVyeV9lbmdpbmVfaW5mbyAqcXVl cnlfZW5naW5lID0KKwkJCShzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZW5naW5lX2luZm8gKikgYnVm ZjsKKwlpbnQgaTsKKworCXF1ZXJ5X2VuZ2luZXMoZmQsIHF1ZXJ5X2VuZ2luZSwgU0laRU9GX1FV RVJZKTsKKworCWZvciAoaSA9IDA7IGkgPCBxdWVyeV9lbmdpbmUtPm51bV9lbmdpbmVzOyBpKysp CisJCWluaXRfZW5naW5lKCZlZC0+ZW5naW5lc1tpXSwKKwkJCSAgICBxdWVyeV9lbmdpbmUtPmVu Z2luZXNbaV0uZW5naW5lLmVuZ2luZV9jbGFzcywKKwkJCSAgICBxdWVyeV9lbmdpbmUtPmVuZ2lu ZXNbaV0uZW5naW5lLmVuZ2luZV9pbnN0YW5jZSwgaSk7CisKKwllZC0+bmVuZ2luZXMgPSBxdWVy eV9lbmdpbmUtPm51bV9lbmdpbmVzOworfQorCitzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2lu ZTIgKgoraW50ZWxfZ2V0X2N1cnJlbnRfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAq ZWQpCit7CisJaWYgKCFlZC0+bikKKwkJZWQtPmN1cnJlbnRfZW5naW5lID0gJmVkLT5lbmdpbmVz WzBdOworCWVsc2UgaWYgKGVkLT5uID49IGVkLT5uZW5naW5lcykKKwkJZWQtPmN1cnJlbnRfZW5n aW5lID0gTlVMTDsKKworCXJldHVybiBlZC0+Y3VycmVudF9lbmdpbmU7Cit9CisKK3ZvaWQgaW50 ZWxfbmV4dF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCkKK3sKKwlpZiAoZWQt Pm4gKyAxIDwgZWQtPm5lbmdpbmVzKSB7CisJCWVkLT5uKys7CisJCWVkLT5jdXJyZW50X2VuZ2lu ZSA9ICZlZC0+ZW5naW5lc1tlZC0+bl07CisJfSBlbHNlIHsKKwkJZWQtPm4gPSBlZC0+bmVuZ2lu ZXM7CisJCWVkLT5jdXJyZW50X2VuZ2luZSA9IE5VTEw7CisJfQorfQorCitzdHJ1Y3QgaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZTIgKgoraW50ZWxfZ2V0X2N1cnJlbnRfcGh5c2ljYWxfZW5naW5lKHN0 cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAqZWQpCit7CisJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9l bmdpbmUyICplOworCisJZm9yIChlID0gaW50ZWxfZ2V0X2N1cnJlbnRfZW5naW5lKGVkKTsKKwkg ICAgIGUgJiYgZS0+aXNfdmlydHVhbDsKKwkgICAgIGludGVsX25leHRfZW5naW5lKGVkKSkKKwkJ OworCisJcmV0dXJuIGU7Cit9CisKK3N0YXRpYyBpbnQgZ2VtX3RvcG9sb2d5X2dldF9wYXJhbShp bnQgZmQsCisJCQkJICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gKnApCit7CisJ aWYgKGlndF9vbmx5X2xpc3Rfc3VidGVzdHMoKSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlpZiAo X19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsIHApKQorCQlyZXR1cm4gLTE7IC8qIHVzaW5nIGRl ZmF1bHQgZW5naW5lIG1hcCAqLworCisJaWYgKCFwLT5zaXplKQorCQlyZXR1cm4gMDsKKworCS8q IHNpemUgd2lsbCBzdG9yZSB0aGUgZW5naW5lIGNvdW50ICovCisJcC0+c2l6ZSA9IChwLT5zaXpl IC0gc2l6ZW9mKHN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcykpIC8KKwkJICAob2Zm c2V0b2Yoc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzLAorCQkJICAgIGVuZ2luZXNb MV0pIC0KKwkJICBzaXplb2Yoc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzKSk7CisK KwlpZ3RfYXNzZXJ0X2YocC0+c2l6ZSA8PSBHRU1fTUFYX0VOR0lORVMsICJ1bnN1cHBvcnRlZCBl bmdpbmUgY291bnRcbiIpOworCisJcmV0dXJuIDA7Cit9CisKK3N0cnVjdCBpbnRlbF9lbmdpbmVf ZGF0YSBpbnRlbF9pbml0X2VuZ2luZV9saXN0KGludCBmZCwgdWludDMyX3QgY3R4X2lkKQorewor CURFRklORV9DT05URVhUX0VOR0lORVNfUEFSQU0oZW5naW5lcywgcGFyYW0sIGN0eF9pZCwgR0VN X01BWF9FTkdJTkVTKTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgZW5naW5lX2RhdGEgPSB7 IH07CisJaW50IGk7CisKKwlpZiAoZ2VtX3RvcG9sb2d5X2dldF9wYXJhbShmZCwgJnBhcmFtKSkg eworCQkvKiBpZiBrZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCBlbmdpbmUvY29udGV4dCBtYXBwaW5n ICovCisJCWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZTI7CisKKwkJaWd0 X2RlYnVnKCJ1c2luZyBwcmUtYWxsb2NhdGVkIGVuZ2luZSBsaXN0XG4iKTsKKworCQlfX2Zvcl9l YWNoX3N0YXRpY19lbmdpbmUoZTIpIHsKKwkJCXN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5l MiAqX19lMiA9CisJCQkJJmVuZ2luZV9kYXRhLmVuZ2luZXNbZW5naW5lX2RhdGEubmVuZ2luZXNd OworCisJCQlpZiAoIWlndF9vbmx5X2xpc3Rfc3VidGVzdHMoKSkgeworCQkJCV9fZTItPmZsYWdz ID0gZ2VtX2NsYXNzX2luc3RhbmNlX3RvX2ViX2ZsYWdzKGZkLAorCQkJCQkJZTItPmNsYXNzLCBl Mi0+aW5zdGFuY2UpOworCisJCQkJaWYgKCFnZW1faGFzX3JpbmcoZmQsIF9fZTItPmZsYWdzKSkK KwkJCQkJY29udGludWU7CisJCQl9IGVsc2UgeworCQkJCV9fZTItPmZsYWdzID0gLTE7IC8qIDB4 ZmZmLi4uICovCisJCQl9CisKKwkJCV9fZTItPm5hbWUgICAgICAgPSBlMi0+bmFtZTsKKwkJCV9f ZTItPmluc3RhbmNlICAgPSBlMi0+aW5zdGFuY2U7CisJCQlfX2UyLT5jbGFzcyAgICAgID0gZTIt PmNsYXNzOworCQkJX19lMi0+aXNfdmlydHVhbCA9IGZhbHNlOworCisJCQllbmdpbmVfZGF0YS5u ZW5naW5lcysrOworCQl9CisJCXJldHVybiBlbmdpbmVfZGF0YTsKKwl9CisKKwlpZiAoIXBhcmFt LnNpemUpIHsKKwkJcXVlcnlfZW5naW5lX2xpc3QoZmQsICZlbmdpbmVfZGF0YSk7CisJCWN0eF9t YXBfZW5naW5lcyhmZCwgJmVuZ2luZV9kYXRhLCAmcGFyYW0pOworCX0gZWxzZSB7CisJCS8qIHBh cmFtLnNpemUgY29udGFpbnMgdGhlIGVuZ2luZSBjb3VudCAqLworCQlmb3IgKGkgPSAwOyBpIDwg cGFyYW0uc2l6ZTsgaSsrKQorCQkJaW5pdF9lbmdpbmUoJmVuZ2luZV9kYXRhLmVuZ2luZXNbaV0s CisJCQkJICAgIGVuZ2luZXMuZW5naW5lc1tpXS5lbmdpbmVfY2xhc3MsCisJCQkJICAgIGVuZ2lu ZXMuZW5naW5lc1tpXS5lbmdpbmVfaW5zdGFuY2UsCisJCQkJICAgIGkpOworCisJCWVuZ2luZV9k YXRhLm5lbmdpbmVzID0gaTsKKwl9CisKKwlyZXR1cm4gZW5naW5lX2RhdGE7Cit9CisKK2ludCBn ZW1fY29udGV4dF9sb29rdXBfZW5naW5lKGludCBmZCwgdWludDY0X3QgZW5naW5lLCB1aW50MzJf dCBjdHhfaWQsCisJCQkgICAgICBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCit7 CisJREVGSU5FX0NPTlRFWFRfRU5HSU5FU19QQVJBTShlbmdpbmVzLCBwYXJhbSwgY3R4X2lkLCBH RU1fTUFYX0VOR0lORVMpOworCisJLyogYSBiaXQgcGFyYW5vaWMgKi8KKwlpZ3RfYXNzZXJ0KGUp OworCisJaWYgKGdlbV90b3BvbG9neV9nZXRfcGFyYW0oZmQsICZwYXJhbSkgfHwgIXBhcmFtLnNp emUpCisJCXJldHVybiAtRUlOVkFMOworCisJZS0+Y2xhc3MgPSBlbmdpbmVzLmVuZ2luZXNbZW5n aW5lXS5lbmdpbmVfY2xhc3M7CisJZS0+aW5zdGFuY2UgPSBlbmdpbmVzLmVuZ2luZXNbZW5naW5l XS5lbmdpbmVfaW5zdGFuY2U7CisKKwlyZXR1cm4gMDsKK30KKwordm9pZCBnZW1fY29udGV4dF9z ZXRfYWxsX2VuZ2luZXMoaW50IGZkLCB1aW50MzJfdCBjdHgpCit7CisJREVGSU5FX0NPTlRFWFRf RU5HSU5FU19QQVJBTShlbmdpbmVzLCBwYXJhbSwgY3R4LCBHRU1fTUFYX0VOR0lORVMpOworCXN0 cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSBlbmdpbmVfZGF0YSA9IHsgfTsKKworCWlmICghZ2VtX3Rv cG9sb2d5X2dldF9wYXJhbShmZCwgJnBhcmFtKSAmJiAhcGFyYW0uc2l6ZSkgeworCQlxdWVyeV9l bmdpbmVfbGlzdChmZCwgJmVuZ2luZV9kYXRhKTsKKwkJY3R4X21hcF9lbmdpbmVzKGZkLCAmZW5n aW5lX2RhdGEsICZwYXJhbSk7CisJfQorfQorCitib29sIGdlbV9oYXNfZW5naW5lX3RvcG9sb2d5 KGludCBmZCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gcGFyYW0gPSB7 CisJCS5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTLAorCX07CisKKwlyZXR1cm4g IV9fZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZkLCAmcGFyYW0pOworfQpkaWZmIC0tZ2l0IGEvbGli L2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oIGIvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9n eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjQxNWZkMWUzNzli Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oCkBAIC0w LDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgor ICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh bnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29j aWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBp biB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGlt aXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxp c2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhl IFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJl IGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlv bnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lv biBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNs dWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29m dHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQg V0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBC VVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICog RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElO IE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBM SUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVU SEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcK KyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRI RSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaWZu ZGVmIEdFTV9FTkdJTkVfVE9QT0xPR1lfSAorI2RlZmluZSBHRU1fRU5HSU5FX1RPUE9MT0dZX0gK KworI2luY2x1ZGUgImlndF9ndC5oIgorI2luY2x1ZGUgImk5MTVfZHJtLmgiCisKKyNkZWZpbmUg R0VNX01BWF9FTkdJTkVTCQlJOTE1X0VYRUNfUklOR19NQVNLICsgMQorCitzdHJ1Y3QgaW50ZWxf ZW5naW5lX2RhdGEgeworCXVpbnQzMl90IG5lbmdpbmVzOworCXVpbnQzMl90IG47CisJc3RydWN0 IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpjdXJyZW50X2VuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZTIgZW5naW5lc1tHRU1fTUFYX0VOR0lORVNdOworfTsKKworYm9vbCBn ZW1faGFzX2VuZ2luZV90b3BvbG9neShpbnQgZmQpOworc3RydWN0IGludGVsX2VuZ2luZV9kYXRh IGludGVsX2luaXRfZW5naW5lX2xpc3QoaW50IGZkLCB1aW50MzJfdCBjdHhfaWQpOworCisvKiBp dGVyYXRpb24gZnVuY3Rpb25zICovCitzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKgor aW50ZWxfZ2V0X2N1cnJlbnRfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAqZWQpOwor CitzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKgoraW50ZWxfZ2V0X2N1cnJlbnRfcGh5 c2ljYWxfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAqZWQpOworCit2b2lkIGludGVs X25leHRfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAqZWQpOworCitpbnQgZ2VtX2Nv bnRleHRfbG9va3VwX2VuZ2luZShpbnQgZmQsIHVpbnQ2NF90IGVuZ2luZSwgdWludDMyX3QgY3R4 X2lkLAorCQkJICAgICAgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKTsKKwordm9p ZCBnZW1fY29udGV4dF9zZXRfYWxsX2VuZ2luZXMoaW50IGZkLCB1aW50MzJfdCBjdHgpOworCisj ZGVmaW5lIF9fZm9yX2VhY2hfc3RhdGljX2VuZ2luZShlX18pIFwKKwlmb3IgKChlX18pID0gaW50 ZWxfZXhlY3V0aW9uX2VuZ2luZXMyOyAoZV9fKS0+bmFtZTsgKGVfXykrKykKKworI2RlZmluZSBm b3JfZWFjaF9jb250ZXh0X2VuZ2luZShmZF9fLCBjdHhfXywgZV9fKSBcCisJZm9yIChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2RhdGEgaV9fID0gaW50ZWxfaW5pdF9lbmdpbmVfbGlzdChmZF9fLCBjdHhf Xyk7IFwKKwkgICAgICgoZV9fKSA9IGludGVsX2dldF9jdXJyZW50X2VuZ2luZSgmaV9fKSk7IFwK KwkgICAgIGludGVsX25leHRfZW5naW5lKCZpX18pKQorCisvKiBuZWVkcyB0byByZXBsYWNlICJm b3JfZWFjaF9waHlzaWNhbF9lbmdpbmUiIHdoZW4gY29uZmxpY3RzIGFyZSBmaXhlZCAqLworI2Rl ZmluZSBfX2Zvcl9lYWNoX3BoeXNpY2FsX2VuZ2luZShmZF9fLCBlX18pIFwKKwlmb3IgKHN0cnVj dCBpbnRlbF9lbmdpbmVfZGF0YSBpX18gPSBpbnRlbF9pbml0X2VuZ2luZV9saXN0KGZkX18sIDAp OyBcCisJICAgICAoKGVfXykgPSBpbnRlbF9nZXRfY3VycmVudF9waHlzaWNhbF9lbmdpbmUoJmlf XykpOyBcCisJICAgICBpbnRlbF9uZXh0X2VuZ2luZSgmaV9fKSkKKworI2VuZGlmIC8qIEdFTV9F TkdJTkVfVE9QT0xPR1lfSCAqLwpkaWZmIC0tZ2l0IGEvbGliL2lndC5oIGIvbGliL2lndC5oCmlu ZGV4IDJhZTQzYzMwZmY2MS4uODJjZGQ1N2E0ZGViIDEwMDY0NAotLS0gYS9saWIvaWd0LmgKKysr IGIvbGliL2lndC5oCkBAIC01NCw1ICs1NCw2IEBACiAjaW5jbHVkZSAibWVkaWFfc3Bpbi5oIgog I2luY2x1ZGUgInJlbmRlcmNvcHkuaCIKICNpbmNsdWRlICJpOTE1L2dlbV9tbWFuLmgiCisjaW5j bHVkZSAiaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmgiCiAKICNlbmRpZiAvKiBJR1RfSCAqLwpk aWZmIC0tZ2l0IGEvbGliL2lndF9ndC5oIGIvbGliL2lndF9ndC5oCmluZGV4IDQ3NWMwYjNjM2Nj Ni4uNTJiMmYxZWE5NWE1IDEwMDY0NAotLS0gYS9saWIvaWd0X2d0LmgKKysrIGIvbGliL2lndF9n dC5oCkBAIC05NSw2ICs5NSw4IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9u X2VuZ2luZTIgewogCWNvbnN0IGNoYXIgKm5hbWU7CiAJaW50IGNsYXNzOwogCWludCBpbnN0YW5j ZTsKKwl1aW50NjRfdCBmbGFnczsKKwlib29sIGlzX3ZpcnR1YWw7CiB9IGludGVsX2V4ZWN1dGlv bl9lbmdpbmVzMltdOwogCiB1bnNpZ25lZCBpbnQKZGlmZiAtLWdpdCBhL2xpYi9tZXNvbi5idWls ZCBiL2xpYi9tZXNvbi5idWlsZAppbmRleCA4MDczNjg2ODY3ZDQuLmI2ZDhlNmNhNWE3ZSAxMDA2 NDQKLS0tIGEvbGliL21lc29uLmJ1aWxkCisrKyBiL2xpYi9tZXNvbi5idWlsZApAQCAtNSw2ICs1 LDcgQEAgbGliX3NvdXJjZXMgPSBbCiAJJ2k5MTUvZ2VtX3N1Ym1pc3Npb24uYycsCiAJJ2k5MTUv Z2VtX3JpbmcuYycsCiAJJ2k5MTUvZ2VtX21tYW4uYycsCisJJ2k5MTUvZ2VtX2VuZ2luZV90b3Bv bG9neS5jJywKIAknaWd0X2NvbG9yX2VuY29kaW5nLmMnLAogCSdpZ3RfZGVidWdmcy5jJywKIAkn aWd0X2RldmljZS5jJywKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4