From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from 3.mo2.mail-out.ovh.net (3.mo2.mail-out.ovh.net [46.105.58.226]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5012189358 for ; Sun, 7 Apr 2019 22:48:17 +0000 (UTC) Received: from player797.ha.ovh.net (unknown [10.109.143.238]) by mo2.mail-out.ovh.net (Postfix) with ESMTP id DFD3717D712 for ; Mon, 8 Apr 2019 00:38:14 +0200 (CEST) From: Andi Shyti Date: Mon, 8 Apr 2019 01:37:50 +0300 Message-Id: <20190407223754.6940-3-andi@etezian.org> In-Reply-To: <20190407223754.6940-1-andi@etezian.org> References: <20190407223754.6940-1-andi@etezian.org> MIME-Version: 1.0 Subject: [igt-dev] [PATCH v18 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 X3RvcG9sb2d5LmMgfCAyNTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWIv aTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmggfCAgNjYgKysrKysrKysrCiBsaWIvaWd0LmggICAg ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogbGliL2lndF9ndC5oICAgICAgICAgICAgICAgICAg IHwgICAyICsKIGxpYi9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICB8ICAgMSArCiA2IGZpbGVz IGNoYW5nZWQsIDMyMiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2k5MTUv Z2VtX2VuZ2luZV90b3BvbG9neS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2k5MTUvZ2VtX2Vu Z2luZV90b3BvbG9neS5oCgpkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLnNvdXJjZXMgYi9saWIv TWFrZWZpbGUuc291cmNlcwppbmRleCBlMDAzNDdmOTQ1YzUuLjQxMzMxYzJmMmI4MCAxMDA2NDQK LS0tIGEvbGliL01ha2VmaWxlLnNvdXJjZXMKKysrIGIvbGliL01ha2VmaWxlLnNvdXJjZXMKQEAg LTEzLDYgKzEzLDggQEAgbGliX3NvdXJjZV9saXN0ID0JIAlcCiAJaTkxNS9nZW1fcmluZy5jCVwK IAlpOTE1L2dlbV9tbWFuLmMJXAogCWk5MTUvZ2VtX21tYW4uaAlcCisJaTkxNS9nZW1fZW5naW5l X3RvcG9sb2d5LmMJXAorCWk5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oCVwKIAlpOTE1XzNkLmgJ CVwKIAlpOTE1X3JlZy5oCQlcCiAJaTkxNV9wY2lpZHMuaAkJXApkaWZmIC0tZ2l0IGEvbGliL2k5 MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jIGIvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjE3OTc3MmIxZmM5Ci0t LSAvZGV2L251bGwKKysrIGIvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jCkBAIC0wLDAg KzEsMjUwIEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KKyAq 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 Z2luZXMgKmVuZ2luZXMgPQorCQkJKHN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcyAq KSBwYXJhbS0+dmFsdWU7CisJaW50IGkgPSAwOworCisJZm9yICh0eXBlb2YoZW5naW5lcy0+Y2xh c3NfaW5zdGFuY2VbMF0pICpwID0KKwkgICAgICZlbmdpbmVzLT5jbGFzc19pbnN0YW5jZVswXTsK KwkgICAgIGkgPCBlZC0+bmVuZ2luZXM7IGkrKywgcCsrKSB7CisJCXAtPmVuZ2luZV9jbGFzcyA9 IGVkLT5lbmdpbmVzW2ldLmNsYXNzOworCQlwLT5lbmdpbmVfaW5zdGFuY2UgPSBlZC0+ZW5naW5l c1tpXS5pbnN0YW5jZTsKKwl9CisKKwlwYXJhbS0+c2l6ZSA9IG9mZnNldG9mKHR5cGVvZigqZW5n aW5lcyksIGNsYXNzX2luc3RhbmNlW2ldKTsKKwllbmdpbmVzLT5leHRlbnNpb25zID0gMDsKKwor CWdlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgcGFyYW0pOworfQorCitzdGF0aWMgdm9pZCBpbml0 X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUyLAorCQkJaW50IGNsYXNz LCBpbnQgaW5zdGFuY2UsIHVpbnQ2NF90IGZsYWdzKQoreworCWNvbnN0IHN0cnVjdCBpbnRlbF9l eGVjdXRpb25fZW5naW5lMiAqX19lMjsKKwlzdGF0aWMgY29uc3QgY2hhciAqdW5rbm93bl9uYW1l ID0gInVua25vd24iLAorCQkJICAqdmlydHVhbF9uYW1lID0gInZpcnR1YWwiOworCisJZTItPmNs YXNzICAgID0gY2xhc3M7CisJZTItPmluc3RhbmNlID0gaW5zdGFuY2U7CisJZTItPmZsYWdzICAg ID0gZmxhZ3M7CisKKwkvKiBlbmdpbmUgaXMgYSB2aXJ0dWFsIGVuZ2luZSAqLworCWlmIChjbGFz cyA9PSBJOTE1X0VOR0lORV9DTEFTU19JTlZBTElEKSB7CisJCWUyLT5uYW1lID0gdmlydHVhbF9u YW1lOworCQllMi0+aXNfdmlydHVhbCA9IHRydWU7CisJCXJldHVybjsKKwl9CisKKwlfX2Zvcl9l YWNoX3N0YXRpY19lbmdpbmUoX19lMikKKwkJaWYgKF9fZTItPmNsYXNzID09IGNsYXNzICYmIF9f ZTItPmluc3RhbmNlID09IGluc3RhbmNlKQorCQkJYnJlYWs7CisKKwlpZiAoX19lMi0+bmFtZSkg eworCQllMi0+bmFtZSA9IF9fZTItPm5hbWU7CisJfSBlbHNlIHsKKwkJaWd0X3dhcm4oImZvdW5k IHVua25vd24gZW5naW5lICglZCwgJWQpIiwgY2xhc3MsIGluc3RhbmNlKTsKKwkJZTItPm5hbWUg PSB1bmtub3duX25hbWU7CisJfQorCisJLyoganVzdCB0byByZW1hcmsgaXQgKi8KKwllMi0+aXNf dmlydHVhbCA9IGZhbHNlOworfQorCitzdGF0aWMgdm9pZCBxdWVyeV9lbmdpbmVfbGlzdChpbnQg ZmQsIHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAqZWQpCit7CisJdWludDhfdCBidWZmW1NJWkVP Rl9RVUVSWV0gPSB7IH07CisJc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2VuZ2luZV9pbmZvICpxdWVy eV9lbmdpbmUgPQorCQkJKHN0cnVjdCBkcm1faTkxNV9xdWVyeV9lbmdpbmVfaW5mbyAqKSBidWZm OworCWludCBpOworCisJcXVlcnlfZW5naW5lcyhmZCwgcXVlcnlfZW5naW5lLCBTSVpFT0ZfUVVF UlkpOworCisJZm9yIChpID0gMDsgaSA8IHF1ZXJ5X2VuZ2luZS0+bnVtX2VuZ2luZXM7IGkrKykK KwkJaW5pdF9lbmdpbmUoJmVkLT5lbmdpbmVzW2ldLAorCQkJICAgIHF1ZXJ5X2VuZ2luZS0+ZW5n aW5lc1tpXS5lbmdpbmVfY2xhc3MsCisJCQkgICAgcXVlcnlfZW5naW5lLT5lbmdpbmVzW2ldLmVu Z2luZV9pbnN0YW5jZSwgaSk7CisKKwllZC0+bmVuZ2luZXMgPSBxdWVyeV9lbmdpbmUtPm51bV9l bmdpbmVzOworfQorCitzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIKKyppbnRlbF9nZXRf Y3VycmVudF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCkKK3sKKwlpZiAoIWVk LT5uKQorCQllZC0+Y3VycmVudF9lbmdpbmUgPSAmZWQtPmVuZ2luZXNbMF07CisJZWxzZSBpZiAo ZWQtPm4gPj0gZWQtPm5lbmdpbmVzKQorCQllZC0+Y3VycmVudF9lbmdpbmUgPSBOVUxMOworCisJ cmV0dXJuIGVkLT5jdXJyZW50X2VuZ2luZTsKK30KKwordm9pZCBpbnRlbF9uZXh0X2VuZ2luZShz dHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgKmVkKQoreworCWlmIChlZC0+biArIDEgPCBlZC0+bmVu Z2luZXMpIHsKKwkJZWQtPm4rKzsKKwkJZWQtPmN1cnJlbnRfZW5naW5lID0gJmVkLT5lbmdpbmVz W2VkLT5uXTsKKwl9IGVsc2UgeworCQllZC0+Y3VycmVudF9lbmdpbmUgPSBOVUxMOworCX0KK30K Kworc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyCisqaW50ZWxfZ2V0X2N1cnJlbnRfcGh5 c2ljYWxfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAqZWQpCit7CisJc3RydWN0IGlu dGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplOworCisJZm9yIChlID0gaW50ZWxfZ2V0X2N1cnJlbnRf ZW5naW5lKGVkKTsKKwkgICAgIGUgJiYgZS0+aXNfdmlydHVhbDsKKwkgICAgIGludGVsX25leHRf ZW5naW5lKGVkKSkKKwkJOworCisJcmV0dXJuIGU7Cit9CisKK3N0cnVjdCBpbnRlbF9lbmdpbmVf ZGF0YSBpbnRlbF9pbml0X2VuZ2luZV9saXN0KGludCBmZCwgdWludDMyX3QgY3R4X2lkKQorewor CUk5MTVfREVGSU5FX0NPTlRFWFRfUEFSQU1fRU5HSU5FUyhlbmdpbmVzLCBHRU1fTUFYX0VOR0lO RVMpOworCXN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSBlbmdpbmVfZGF0YSA9IHsgfTsKKwlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gcGFyYW0gPSB7CisJCS5wYXJhbSA9IEk5MTVf Q09OVEVYVF9QQVJBTV9FTkdJTkVTLAorCQkuY3R4X2lkID0gY3R4X2lkLAorCQkuc2l6ZSA9IFNJ WkVPRl9DVFhfUEFSQU0sCisJCS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcigmZW5naW5lcyksCisJ fTsKKwlpbnQgaTsKKwl1bnNpZ25lZCBpbnQgbmVuZ2luZXM7CisKKwlpZiAoaWd0X29ubHlfbGlz dF9zdWJ0ZXN0cygpIHx8IF9fZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZkLCAmcGFyYW0pKSB7CisJ CS8qIGlmIGtlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IGVuZ2luZS9jb250ZXh0IG1hcHBpbmcgKi8K KwkJY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplMjsKKworCQlpZ3RfZGVi dWcoInVzaW5nIHByZS1hbGxvY2F0ZWQgZW5naW5lIGxpc3RcbiIpOworCisJCV9fZm9yX2VhY2hf c3RhdGljX2VuZ2luZShlMikgeworCQkJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpf X2UyID0KKwkJCQkmZW5naW5lX2RhdGEuZW5naW5lc1tlbmdpbmVfZGF0YS5uZW5naW5lc107CisK KwkJCWlmICghaWd0X29ubHlfbGlzdF9zdWJ0ZXN0cygpKSB7CisJCQkJX19lMi0+ZmxhZ3MgPSBn ZW1fY2xhc3NfaW5zdGFuY2VfdG9fZWJfZmxhZ3MoZmQsCisJCQkJCQllMi0+Y2xhc3MsIGUyLT5p bnN0YW5jZSk7CisKKwkJCQlpZiAoIWdlbV9oYXNfcmluZyhmZCwgX19lMi0+ZmxhZ3MpKQorCQkJ CQljb250aW51ZTsKKwkJCX0KKworCQkJX19lMi0+bmFtZSAgICAgICA9IGUyLT5uYW1lOworCQkJ X19lMi0+aW5zdGFuY2UgICA9IGUyLT5pbnN0YW5jZTsKKwkJCV9fZTItPmNsYXNzICAgICAgPSBl Mi0+Y2xhc3M7CisJCQlfX2UyLT5pc192aXJ0dWFsID0gZmFsc2U7CisKKwkJCWVuZ2luZV9kYXRh Lm5lbmdpbmVzKys7CisJCX0KKwkJcmV0dXJuIGVuZ2luZV9kYXRhOworCX0KKworCW5lbmdpbmVz ID0gcGFyYW0uc2l6ZSA+IHNpemVvZihzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMp ID8KKwkJICAgKHBhcmFtLnNpemUgLSBzaXplb2Yoc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9l bmdpbmVzKSkgLworCQkgICBzaXplb2YoZW5naW5lcy5jbGFzc19pbnN0YW5jZVswXSkgOgorCQkg ICAwOworCisJaWd0X2Fzc2VydF9mKG5lbmdpbmVzIDw9IEdFTV9NQVhfRU5HSU5FUywgInVuc3Vw cG9ydGVkIGVuZ2luZSBjb3VudFxuIik7CisKKwlpZiAoIXBhcmFtLnNpemUpIHsKKwkJLyogZWxz ZSBpZiBjb250ZXh0IGRvZXNuJ3QgaGF2ZSBtYXBwZWQgZW5naW5lcyAqLworCQlxdWVyeV9lbmdp bmVfbGlzdChmZCwgJmVuZ2luZV9kYXRhKTsKKwkJY3R4X21hcF9lbmdpbmVzKGZkLCAmZW5naW5l X2RhdGEsICZwYXJhbSk7CisKKwl9IGVsc2UgeworCQkvKiBjb250ZXh0IGhhcyBhIGxpc3Qgb2Yg bWFwcGVkIGVuZ2luZXMgKi8KKworCQlmb3IgKGkgPSAwOyBpIDwgbmVuZ2luZXM7IGkrKykKKwkJ CWluaXRfZW5naW5lKCZlbmdpbmVfZGF0YS5lbmdpbmVzW2ldLAorCQkJCSAgICBlbmdpbmVzLmNs YXNzX2luc3RhbmNlW2ldLmVuZ2luZV9jbGFzcywKKwkJCQkgICAgZW5naW5lcy5jbGFzc19pbnN0 YW5jZVtpXS5lbmdpbmVfaW5zdGFuY2UsCisJCQkJICAgIGkpOworCisJCWVuZ2luZV9kYXRhLm5l bmdpbmVzID0gaTsKKwl9CisKKwlyZXR1cm4gZW5naW5lX2RhdGE7Cit9CisKK2Jvb2wgZ2VtX2hh c19lbmdpbmVfdG9wb2xvZ3koaW50IGZkKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4 dF9wYXJhbSBwYXJhbSA9IHsKKwkJLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVMs CisJfTsKKworCXJldHVybiAhX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZwYXJhbSk7Cit9 CmRpZmYgLS1naXQgYS9saWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmggYi9saWIvaTkxNS9n ZW1fZW5naW5lX3RvcG9sb2d5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi5iMDI4NWI4MGY2NzMKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvaTkxNS9nZW1fZW5naW5l X3RvcG9sb2d5LmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE5IElu dGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJl ZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBz b2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJl IiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNs dWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9k aWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBz ZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9t IHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBm b2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBh bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3Jh cGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlv bnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1Q TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9O SU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlS SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisg KiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9U SEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBU SEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRX QVJFLgorICovCisKKyNpZm5kZWYgR0VNX0VOR0lORV9UT1BPTE9HWV9ICisjZGVmaW5lIEdFTV9F TkdJTkVfVE9QT0xPR1lfSAorCisjaW5jbHVkZSAiaWd0X2d0LmgiCisjaW5jbHVkZSAiaTkxNV9k cm0uaCIKKworI2RlZmluZSBHRU1fTUFYX0VOR0lORVMJCUk5MTVfRVhFQ19SSU5HX01BU0sgKyAx CisKK3N0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSB7CisJdWludDMyX3QgbmVuZ2luZXM7CisJdWlu dDMyX3QgbjsKKwlpbnQgZXJyb3I7CisJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpj dXJyZW50X2VuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgZW5naW5lc1tH RU1fTUFYX0VOR0lORVNdOworfTsKKworYm9vbCBnZW1faGFzX2VuZ2luZV90b3BvbG9neShpbnQg ZmQpOworc3RydWN0IGludGVsX2VuZ2luZV9kYXRhIGludGVsX2luaXRfZW5naW5lX2xpc3QoaW50 IGZkLCB1aW50MzJfdCBjdHhfaWQpOworCisvKiBpdGVyYXRpb24gZnVuY3Rpb25zICovCitzdHJ1 Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIKKyppbnRlbF9nZXRfY3VycmVudF9lbmdpbmUoc3Ry dWN0IGludGVsX2VuZ2luZV9kYXRhICplZCk7CisKK3N0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5n aW5lMgorKmludGVsX2dldF9jdXJyZW50X3BoeXNpY2FsX2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5n aW5lX2RhdGEgKmVkKTsKKwordm9pZCBpbnRlbF9uZXh0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5n aW5lX2RhdGEgKmVkKTsKKworI2RlZmluZSBfX2Zvcl9lYWNoX3N0YXRpY19lbmdpbmUoZV9fKSBc CisJZm9yICgoZV9fKSA9IGludGVsX2V4ZWN1dGlvbl9lbmdpbmVzMjsgKGVfXyktPm5hbWU7IChl X18pKyspCisKKyNkZWZpbmUgZm9yX2VhY2hfY29udGV4dF9lbmdpbmUoZmRfXywgY3R4X18sIGVf XykgXAorCWZvciAoc3RydWN0IGludGVsX2VuZ2luZV9kYXRhIGlfXyA9IGludGVsX2luaXRfZW5n aW5lX2xpc3QoZmRfXywgY3R4X18pOyBcCisJICAgICAoKGVfXykgPSBpbnRlbF9nZXRfY3VycmVu dF9lbmdpbmUoJmlfXykpOyBcCisJICAgICBpbnRlbF9uZXh0X2VuZ2luZSgmaV9fKSkKKworLyog bmVlZHMgdG8gcmVwbGFjZSAiZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lIiB3aGVuIGNvbmZsaWN0 cyBhcmUgZml4ZWQgKi8KKyNkZWZpbmUgX19mb3JfZWFjaF9waHlzaWNhbF9lbmdpbmUoZmRfXywg ZV9fKSBcCisJZm9yIChzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgaV9fID0gaW50ZWxfaW5pdF9l bmdpbmVfbGlzdChmZF9fLCAwKTsgXAorCSAgICAgKChlX18pID0gaW50ZWxfZ2V0X2N1cnJlbnRf cGh5c2ljYWxfZW5naW5lKCZpX18pKTsgXAorCSAgICAgaW50ZWxfbmV4dF9lbmdpbmUoJmlfXykp CisKKyNlbmRpZiAvKiBHRU1fRU5HSU5FX1RPUE9MT0dZX0ggKi8KZGlmZiAtLWdpdCBhL2xpYi9p Z3QuaCBiL2xpYi9pZ3QuaAppbmRleCA2NjU0YTY1OWMwNjIuLjAzZjE5Y2EyZGZiNiAxMDA2NDQK LS0tIGEvbGliL2lndC5oCisrKyBiL2xpYi9pZ3QuaApAQCAtNTMsNSArNTMsNiBAQAogI2luY2x1 ZGUgIm1lZGlhX3NwaW4uaCIKICNpbmNsdWRlICJyZW5kZXJjb3B5LmgiCiAjaW5jbHVkZSAiaTkx NS9nZW1fbW1hbi5oIgorI2luY2x1ZGUgImk5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oIgogCiAj ZW5kaWYgLyogSUdUX0ggKi8KZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZ3QuaCBiL2xpYi9pZ3RfZ3Qu aAppbmRleCA0NzVjMGIzYzNjYzYuLjUyYjJmMWVhOTVhNSAxMDA2NDQKLS0tIGEvbGliL2lndF9n dC5oCisrKyBiL2xpYi9pZ3RfZ3QuaApAQCAtOTUsNiArOTUsOCBAQCBleHRlcm4gY29uc3Qgc3Ry dWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyIHsKIAljb25zdCBjaGFyICpuYW1lOwogCWludCBj bGFzczsKIAlpbnQgaW5zdGFuY2U7CisJdWludDY0X3QgZmxhZ3M7CisJYm9vbCBpc192aXJ0dWFs OwogfSBpbnRlbF9leGVjdXRpb25fZW5naW5lczJbXTsKIAogdW5zaWduZWQgaW50CmRpZmYgLS1n aXQgYS9saWIvbWVzb24uYnVpbGQgYi9saWIvbWVzb24uYnVpbGQKaW5kZXggODlkZTA2ZTY5MjRh Li45M2MwMWRhYTQyMjIgMTAwNjQ0Ci0tLSBhL2xpYi9tZXNvbi5idWlsZAorKysgYi9saWIvbWVz b24uYnVpbGQKQEAgLTUsNiArNSw3IEBAIGxpYl9zb3VyY2VzID0gWwogCSdpOTE1L2dlbV9zdWJt aXNzaW9uLmMnLAogCSdpOTE1L2dlbV9yaW5nLmMnLAogCSdpOTE1L2dlbV9tbWFuLmMnLAorCSdp OTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuYycsCiAJJ2lndF9jb2xvcl9lbmNvZGluZy5jJywKIAkn aWd0X2RlYnVnZnMuYycsCiAJJ2lndF9kZXZpY2UuYycsCi0tIAoyLjIwLjEKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0 CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==