From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id AE4D789A59 for ; Wed, 22 May 2019 13:38:42 +0000 (UTC) From: Andi Shyti Date: Wed, 22 May 2019 16:38:34 +0300 Message-Id: <20190522133834.2803-1-andi.shyti@intel.com> In-Reply-To: References: MIME-Version: 1.0 Subject: [igt-dev] [PATCH v25 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: VGhlIGdlbV9lbmdpbmVfdG9wb2xvZ3kgbGlicmFyeSBpcyBhIHNldCBvZiBmdW5jdGlvbnMgdGhh dAppbnRlcmZhY2Ugd2l0aCB0aGUgcXVlcnkgYW5kIGdldHBhcmFtL3NldHBhcmFtIGlvY3Rscy4K ClRoZSBsaWJyYXJ5J3MgYWNjZXNzIHBvaW50IGlzIHRoZSAnaW50ZWxfaW5pdF9lbmdpbmVfbGlz dCgpJwpmdW5jdGlvbiB0aGF0LCBldmVyeXRpbWUgaXMgY2FsbGVkLCBnZW5lcmF0ZXMgdGhlIGxp c3Qgb2YgYWN0aXZlCmVuZ2luZXMgYW5kIHJldHVybnMgdGhlbSBpbiBhICdzdHJ1Y3QgaW50ZWxf ZW5naW5lX2RhdGEnLiBUaGUKc3RydWN0dXJlIGNvbnRhaW5zIG9ubHkgdGhlIGVuZ2luZXMgdGhh dCBhcmUgYWN0aXZlbHkgcHJlc2VudCBpbgp0aGUgR1BVLgoKVGhlIGZ1bmN0aW9uIGNhbiB3b3Jr IGluIGJvdGggdGhlIGNhc2VzIHRoYXQgdGhlIHF1ZXJ5IGFuZApnZXRwYXJhbSBpb2N0bHMgYXJl IGltcGxlbWVudGVkIG9yIG5vdCBieSB0aGUgcnVubmluZyBrZXJuZWwuIEluCmNhc2UgdGhleSBh cmUgaW1wbGVtZW50ZWQsIGEgcXVlcnkgaXMgbWFkZSB0byB0aGUgZHJpdmVyIHRvIGZldGNoCnRo ZSBsaXN0IG9mIGFjdGl2ZSBlbmdpbmVzLiBJbiBjYXNlIHRoZXkgYXJlIG5vdCBpbXBsZW1lbnRl ZCwgdGhlCmxpc3QgaXMgdGFrZW4gZnJvbSB0aGUgJ2ludGVsX2V4ZWN1dGlvbl9lbmdpbmVzMicg YXJyYXkgYW5kCnN0b3JlZCBvbmx5IGFmdGVyIGNoZWNraW5nIHRoZWlyIHByZXNlbmNlLgoKVGhl IGdlbV9lbmdpbmVfdG9wb2xvZ3kgbGlicmFyeSBwcm92aWRlcyBzb21lIGl0ZXJhdGlvbiBoZWxw ZXJzOgoKIC0gaW50ZWxfZ2V0X2N1cnJlbnRfZW5naW5lKCk6IHByb3ZpZGVzIHRoZSBjdXJyZW50 IGVuZ2luZSBpbiB0aGUKICAgaXRlcmF0aW9uLgoKIC0gaW50ZWxfZ2V0X2N1cnJlbnRfcGh5c2lj YWxfZW5naW5lKCk6IHByb3ZpZGVzIHRoZSBjdXJyZW50CiAgIHBoeXNpY2FsIGVuZ2luZSwgaWYg dGhlIGN1cnJlbnQgZW5naW5lIGlzIGEgdmlydHVhbCBlbmdpbmUsCiAgIGl0IG1vdmVzIGZvcndh cmQgdW50aWwgaXQgZmluZHMgYSBwaHlzaWNhbCBlbmdpbmUuCgogLSBpbnRlbF9uZXh0X2VuZ2lu ZSgpIGl0IGp1c3QgaW5jcmVtZW50cyB0aGUgY291bnRlciBzbyB0aGF0IGl0CiAgIHBvaW50cyB0 byB0aGUgbmV4dCBlbmdpbmUuCgpFeHRlbmQgdGhlICdmb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5z dGFuY2UnIHNvIHRoYXQgaXQgY2FuIGxvb3AKdXNpbmcgdGhlIG5ldyAnaW50ZWxfaW5pdF9lbmdp bmVfbGlzdCgpJyBhbmQgcmVuYW1lIGl0IHRvCidmb3JfZWFjaF9jb250ZXh0X2VuZ2luZScuCgpN b3ZlICdfX2Zvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZScgdG8gZ2VtX2VuZ2luZV90b3Bv bG9neS5oCmFuZCByZW5hbWUgaXQgdG8gJ19fZm9yX2VhY2hfc3RhdGljX2VuZ2luZScuCgpVcGRh dGUgYWNjb3JkaW5nbHkgdGVzdHMvcGVyZl9wbXUuYyB0byB1c2UgY29ycmVjdGx5IHRoZSBuZXcK Zm9yX2VhY2ggbG9vcHMuCgpTaWduZWQtb2ZmLWJ5OiBBbmRpIFNoeXRpIDxhbmRpLnNoeXRpQGlu dGVsLmNvbT4KLS0tCkhpLAoKdGhpcyBjb21lcyBmcm9tIHRoZSBsYXN0IHJldmlld3MgZnJvbSBU dnJ0a28sIHRoYW5rcywgVHZydGtvIQoKY2hhbmdlcyBmcm9tIHBhdGNoIDI0OgotIFNJWkVPRl9D VFhfUEFSQU0gYW5kIFNJWkVPRl9RVUVSWSBkZWZpbmVzIGhhdmUgYmVlbiBtb3ZlZCBpbgogIHRo ZSAuYyBmaWxlIGZyb20gdGhlIC5oCgotIGFkZGVkIGNvbW1lbnQgdG8gc3BlY2lmeSB0aGF0IC5z aXplIGZyb20gInN0cnVjdAogIGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIiBjb250YWlucyB0 aGUgZW5naW5lIGNvdW50IGluc3RlYWQKICBvZiB0aGUgZGF0YSBzdHJ1Y3R1cmUgc2l6ZQoKLSB2 aXJ0dWFsIGVuZ2luZXMgbmVlZCB0byBiZSBjaGVja2VkIGFnYWluc3QKICAiY2xhc3MgPT0gSTkx NV9FTkdJTkVfQ0xBU1NfSU5WQUxJRCIgYW5kCiAgImluc3RhbmNlID09IEk5MTVfRU5HSU5FX0NM QVNTX0lOVkFMSURfVklSVFVBTCIKCi0gd2hlbiBhbiBlbmdpbmUgdW5rbm93biBpcyBmb3VuZCwg ZmxhZ3MgYXJlIHNldCB0byAtMS4KClRoYW5rcywKQW5kaQoKIGxpYi9NYWtlZmlsZS5zb3VyY2Vz ICAgICAgICAgICB8ICAgMiArCiBsaWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmMgfCAyOTgg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWIvaTkxNS9nZW1fZW5naW5lX3Rv cG9sb2d5LmggfCAgNzAgKysrKysrKysKIGxpYi9pZ3QuaCAgICAgICAgICAgICAgICAgICAgICB8 ICAgMSArCiBsaWIvaWd0X2d0LmggICAgICAgICAgICAgICAgICAgfCAgIDIgKwogbGliL21lc29u LmJ1aWxkICAgICAgICAgICAgICAgIHwgICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgMzc0IGluc2Vy dGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5 LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmgKCmRp ZmYgLS1naXQgYS9saWIvTWFrZWZpbGUuc291cmNlcyBiL2xpYi9NYWtlZmlsZS5zb3VyY2VzCmlu ZGV4IDk3Njg1ODIzODk0Yi4uZWY5NmJkMDlkMDQ5IDEwMDY0NAotLS0gYS9saWIvTWFrZWZpbGUu c291cmNlcworKysgYi9saWIvTWFrZWZpbGUuc291cmNlcwpAQCAtMTMsNiArMTMsOCBAQCBsaWJf c291cmNlX2xpc3QgPQkgCVwKIAlpOTE1L2dlbV9yaW5nLmMJXAogCWk5MTUvZ2VtX21tYW4uYwlc CiAJaTkxNS9nZW1fbW1hbi5oCVwKKwlpOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuYwlcCisJaTkx NS9nZW1fZW5naW5lX3RvcG9sb2d5LmgJXAogCWk5MTVfM2QuaAkJXAogCWk5MTVfcmVnLmgJCVwK IAlpOTE1X3BjaWlkcy5oCQlcCmRpZmYgLS1naXQgYS9saWIvaTkxNS9nZW1fZW5naW5lX3RvcG9s b2d5LmMgYi9saWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kZDI2ZmFlMDA4NTMKLS0tIC9kZXYvbnVsbAorKysgYi9s aWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmMKQEAgLTAsMCArMSwyOTggQEAKKy8qCisgKiBD b3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMg aGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBh CisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBm aWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91 dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0 cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1Ymxp Y2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVy bWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBz bywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3Zl IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0 aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9y IHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNP RlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs IEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBU SEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwg REFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBD T05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJ TiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElO R1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaW5jbHVkZSAiZHJtdGVzdC5oIgorI2lu Y2x1ZGUgImlvY3RsX3dyYXBwZXJzLmgiCisKKyNpbmNsdWRlICJpOTE1L2dlbV9lbmdpbmVfdG9w b2xvZ3kuaCIKKworLyoKKyAqIExpbWl0IHdoYXQgd2Ugc3VwcG9ydCBmb3Igc2ltcGxpY2l0eSBk dWUgbGltaXRhdGlvbiBpbiBob3cgbXVjaCB3ZQorICogY2FuIGFkZHJlc3MgdmlhIGV4ZWNidWYy LgorICovCisjZGVmaW5lIFNJWkVPRl9DVFhfUEFSQU0Jb2Zmc2V0b2Yoc3RydWN0IGk5MTVfY29u dGV4dF9wYXJhbV9lbmdpbmVzLCBcCisJCQkJCSBlbmdpbmVzW0dFTV9NQVhfRU5HSU5FU10pCisj ZGVmaW5lIFNJWkVPRl9RVUVSWQkJb2Zmc2V0b2Yoc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2VuZ2lu ZV9pbmZvLCBcCisJCQkJCSBlbmdpbmVzW0dFTV9NQVhfRU5HSU5FU10pCisKKyNkZWZpbmUgREVG SU5FX0NPTlRFWFRfRU5HSU5FU19QQVJBTShlX18sIHBfXywgY19fLCBOX18pIFwKKwkJSTkxNV9E RUZJTkVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTKGVfXywgTl9fKTsgXAorCQlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2NvbnRleHRfcGFyYW0gcF9fID0geyBcCisJCQkucGFyYW0gPSBJOTE1X0NPTlRFWFRf UEFSQU1fRU5HSU5FUywgXAorCQkJLmN0eF9pZCA9IGNfXywgXAorCQkJLnNpemUgPSBTSVpFT0Zf Q1RYX1BBUkFNLCBcCisJCQkudmFsdWUgPSB0b191c2VyX3BvaW50ZXIoJmVfXyksIFwKKwkJfQor CitzdGF0aWMgaW50IF9fZ2VtX3F1ZXJ5KGludCBmZCwgc3RydWN0IGRybV9pOTE1X3F1ZXJ5ICpx KQoreworCWludCBlcnIgPSAwOworCisJaWYgKGlndF9pb2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVf UVVFUlksIHEpKQorCQllcnIgPSAtZXJybm87CisKKwllcnJubyA9IDA7CisJcmV0dXJuIGVycjsK K30KKworc3RhdGljIHZvaWQgZ2VtX3F1ZXJ5KGludCBmZCwgc3RydWN0IGRybV9pOTE1X3F1ZXJ5 ICpxKQoreworCWlndF9hc3NlcnRfZXEoX19nZW1fcXVlcnkoZmQsIHEpLCAwKTsKK30KKworc3Rh dGljIHZvaWQgcXVlcnlfZW5naW5lcyhpbnQgZmQsCisJCQkgIHN0cnVjdCBkcm1faTkxNV9xdWVy eV9lbmdpbmVfaW5mbyAqcXVlcnlfZW5naW5lcywKKwkJCSAgaW50IGxlbmd0aCkKK3sKKwlzdHJ1 Y3QgZHJtX2k5MTVfcXVlcnlfaXRlbSBpdGVtID0geyB9OworCXN0cnVjdCBkcm1faTkxNV9xdWVy eSBxdWVyeSA9IHsgfTsKKworCWl0ZW0ucXVlcnlfaWQgPSBEUk1fSTkxNV9RVUVSWV9FTkdJTkVf SU5GTzsKKwlxdWVyeS5pdGVtc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJml0ZW0pOworCXF1ZXJ5 Lm51bV9pdGVtcyA9IDE7CisJaXRlbS5sZW5ndGggPSBsZW5ndGg7CisKKwlpdGVtLmRhdGFfcHRy ID0gdG9fdXNlcl9wb2ludGVyKHF1ZXJ5X2VuZ2luZXMpOworCisJZ2VtX3F1ZXJ5KGZkLCAmcXVl cnkpOworfQorCitzdGF0aWMgdm9pZCBjdHhfbWFwX2VuZ2luZXMoaW50IGZkLCBzdHJ1Y3QgaW50 ZWxfZW5naW5lX2RhdGEgKmVkLAorCQkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9w YXJhbSAqcGFyYW0pCit7CisJc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzICplbmdp bmVzID0KKwkJCShzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMgKikgcGFyYW0tPnZh bHVlOworCWludCBpID0gMDsKKworCWZvciAodHlwZW9mKGVuZ2luZXMtPmVuZ2luZXNbMF0pICpw ID0KKwkgICAgICZlbmdpbmVzLT5lbmdpbmVzWzBdOworCSAgICAgaSA8IGVkLT5uZW5naW5lczsg aSsrLCBwKyspIHsKKwkJcC0+ZW5naW5lX2NsYXNzID0gZWQtPmVuZ2luZXNbaV0uY2xhc3M7CisJ CXAtPmVuZ2luZV9pbnN0YW5jZSA9IGVkLT5lbmdpbmVzW2ldLmluc3RhbmNlOworCX0KKworCXBh cmFtLT5zaXplID0gb2Zmc2V0b2YodHlwZW9mKCplbmdpbmVzKSwgZW5naW5lc1tpXSk7CisJZW5n aW5lcy0+ZXh0ZW5zaW9ucyA9IDA7CisKKwlnZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsIHBhcmFt KTsKK30KKworc3RhdGljIHZvaWQgaW5pdF9lbmdpbmUoc3RydWN0IGludGVsX2V4ZWN1dGlvbl9l bmdpbmUyICplMiwKKwkJCWludCBjbGFzcywgaW50IGluc3RhbmNlLCB1aW50NjRfdCBmbGFncykK K3sKKwljb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKl9fZTI7CisJc3RhdGlj IGNvbnN0IGNoYXIgKnVua25vd25fbmFtZSA9ICJ1bmtub3duIiwKKwkJCSAgKnZpcnR1YWxfbmFt ZSA9ICJ2aXJ0dWFsIjsKKworCWUyLT5jbGFzcyAgICA9IGNsYXNzOworCWUyLT5pbnN0YW5jZSA9 IGluc3RhbmNlOworCWUyLT5mbGFncyAgICA9IGZsYWdzOworCisJLyogZW5naW5lIGlzIGEgdmly dHVhbCBlbmdpbmUgKi8KKwlpZiAoY2xhc3MgPT0gSTkxNV9FTkdJTkVfQ0xBU1NfSU5WQUxJRCAm JgorCSAgICBpbnN0YW5jZSA9PSBJOTE1X0VOR0lORV9DTEFTU19JTlZBTElEX1ZJUlRVQUwpIHsK KwkJZTItPm5hbWUgPSB2aXJ0dWFsX25hbWU7CisJCWUyLT5pc192aXJ0dWFsID0gdHJ1ZTsKKwkJ cmV0dXJuOworCX0KKworCV9fZm9yX2VhY2hfc3RhdGljX2VuZ2luZShfX2UyKQorCQlpZiAoX19l Mi0+Y2xhc3MgPT0gY2xhc3MgJiYgX19lMi0+aW5zdGFuY2UgPT0gaW5zdGFuY2UpCisJCQlicmVh azsKKworCWlmIChfX2UyLT5uYW1lKSB7CisJCWUyLT5uYW1lID0gX19lMi0+bmFtZTsKKwl9IGVs c2UgeworCQlpZ3Rfd2FybigiZm91bmQgdW5rbm93biBlbmdpbmUgKCVkLCAlZCkiLCBjbGFzcywg aW5zdGFuY2UpOworCQllMi0+bmFtZSA9IHVua25vd25fbmFtZTsKKwkJZTItPmZsYWdzID0gLTE7 CisJfQorCisJLyoganVzdCB0byByZW1hcmsgaXQgKi8KKwllMi0+aXNfdmlydHVhbCA9IGZhbHNl OworfQorCitzdGF0aWMgdm9pZCBxdWVyeV9lbmdpbmVfbGlzdChpbnQgZmQsIHN0cnVjdCBpbnRl bF9lbmdpbmVfZGF0YSAqZWQpCit7CisJdWludDhfdCBidWZmW1NJWkVPRl9RVUVSWV0gPSB7IH07 CisJc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2VuZ2luZV9pbmZvICpxdWVyeV9lbmdpbmUgPQorCQkJ KHN0cnVjdCBkcm1faTkxNV9xdWVyeV9lbmdpbmVfaW5mbyAqKSBidWZmOworCWludCBpOworCisJ cXVlcnlfZW5naW5lcyhmZCwgcXVlcnlfZW5naW5lLCBTSVpFT0ZfUVVFUlkpOworCisJZm9yIChp ID0gMDsgaSA8IHF1ZXJ5X2VuZ2luZS0+bnVtX2VuZ2luZXM7IGkrKykKKwkJaW5pdF9lbmdpbmUo JmVkLT5lbmdpbmVzW2ldLAorCQkJICAgIHF1ZXJ5X2VuZ2luZS0+ZW5naW5lc1tpXS5lbmdpbmUu ZW5naW5lX2NsYXNzLAorCQkJICAgIHF1ZXJ5X2VuZ2luZS0+ZW5naW5lc1tpXS5lbmdpbmUuZW5n aW5lX2luc3RhbmNlLCBpKTsKKworCWVkLT5uZW5naW5lcyA9IHF1ZXJ5X2VuZ2luZS0+bnVtX2Vu Z2luZXM7Cit9CisKK3N0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqCitpbnRlbF9nZXRf Y3VycmVudF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCkKK3sKKwlpZiAoIWVk LT5uKQorCQllZC0+Y3VycmVudF9lbmdpbmUgPSAmZWQtPmVuZ2luZXNbMF07CisJZWxzZSBpZiAo ZWQtPm4gPj0gZWQtPm5lbmdpbmVzKQorCQllZC0+Y3VycmVudF9lbmdpbmUgPSBOVUxMOworCisJ cmV0dXJuIGVkLT5jdXJyZW50X2VuZ2luZTsKK30KKwordm9pZCBpbnRlbF9uZXh0X2VuZ2luZShz dHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgKmVkKQoreworCWlmIChlZC0+biArIDEgPCBlZC0+bmVu Z2luZXMpIHsKKwkJZWQtPm4rKzsKKwkJZWQtPmN1cnJlbnRfZW5naW5lID0gJmVkLT5lbmdpbmVz W2VkLT5uXTsKKwl9IGVsc2UgeworCQllZC0+biA9IGVkLT5uZW5naW5lczsKKwkJZWQtPmN1cnJl bnRfZW5naW5lID0gTlVMTDsKKwl9Cit9CisKK3N0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5l MiAqCitpbnRlbF9nZXRfY3VycmVudF9waHlzaWNhbF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2lu ZV9kYXRhICplZCkKK3sKKwlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmU7CisKKwlm b3IgKGUgPSBpbnRlbF9nZXRfY3VycmVudF9lbmdpbmUoZWQpOworCSAgICAgZSAmJiBlLT5pc192 aXJ0dWFsOworCSAgICAgaW50ZWxfbmV4dF9lbmdpbmUoZWQpKQorCQk7CisKKwlyZXR1cm4gZTsK K30KKworc3RhdGljIGludCBnZW1fdG9wb2xvZ3lfZ2V0X3BhcmFtKGludCBmZCwKKwkJCQkgIHN0 cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSAqcCkKK3sKKwlpZiAoaWd0X29ubHlfbGlz dF9zdWJ0ZXN0cygpKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWlmIChfX2dlbV9jb250ZXh0X2dl dF9wYXJhbShmZCwgcCkpCisJCXJldHVybiAtMTsgLyogdXNpbmcgZGVmYXVsdCBlbmdpbmUgbWFw ICovCisKKwlpZiAoIXAtPnNpemUpCisJCXJldHVybiAwOworCisJLyogc2l6ZSB3aWxsIHN0b3Jl IHRoZSBlbmdpbmUgY291bnQgKi8KKwlwLT5zaXplID0gKHAtPnNpemUgLSBzaXplb2Yoc3RydWN0 IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzKSkgLworCQkgIChvZmZzZXRvZihzdHJ1Y3QgaTkx NV9jb250ZXh0X3BhcmFtX2VuZ2luZXMsCisJCQkgICAgZW5naW5lc1sxXSkgLQorCQkgIHNpemVv ZihzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMpKTsKKworCWlndF9hc3NlcnRfZihw LT5zaXplIDw9IEdFTV9NQVhfRU5HSU5FUywgInVuc3VwcG9ydGVkIGVuZ2luZSBjb3VudFxuIik7 CisKKwlyZXR1cm4gMDsKK30KKworc3RydWN0IGludGVsX2VuZ2luZV9kYXRhIGludGVsX2luaXRf ZW5naW5lX2xpc3QoaW50IGZkLCB1aW50MzJfdCBjdHhfaWQpCit7CisJREVGSU5FX0NPTlRFWFRf RU5HSU5FU19QQVJBTShlbmdpbmVzLCBwYXJhbSwgY3R4X2lkLCBHRU1fTUFYX0VOR0lORVMpOwor CXN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSBlbmdpbmVfZGF0YSA9IHsgfTsKKwlpbnQgaTsKKwor CWlmIChnZW1fdG9wb2xvZ3lfZ2V0X3BhcmFtKGZkLCAmcGFyYW0pKSB7CisJCS8qIGlmIGtlcm5l bCBkb2VzIG5vdCBzdXBwb3J0IGVuZ2luZS9jb250ZXh0IG1hcHBpbmcgKi8KKwkJY29uc3Qgc3Ry dWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplMjsKKworCQlpZ3RfZGVidWcoInVzaW5nIHBy ZS1hbGxvY2F0ZWQgZW5naW5lIGxpc3RcbiIpOworCisJCV9fZm9yX2VhY2hfc3RhdGljX2VuZ2lu ZShlMikgeworCQkJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpfX2UyID0KKwkJCQkm ZW5naW5lX2RhdGEuZW5naW5lc1tlbmdpbmVfZGF0YS5uZW5naW5lc107CisKKwkJCWlmICghaWd0 X29ubHlfbGlzdF9zdWJ0ZXN0cygpKSB7CisJCQkJX19lMi0+ZmxhZ3MgPSBnZW1fY2xhc3NfaW5z dGFuY2VfdG9fZWJfZmxhZ3MoZmQsCisJCQkJCQllMi0+Y2xhc3MsIGUyLT5pbnN0YW5jZSk7CisK KwkJCQlpZiAoIWdlbV9oYXNfcmluZyhmZCwgX19lMi0+ZmxhZ3MpKQorCQkJCQljb250aW51ZTsK KwkJCX0gZWxzZSB7CisJCQkJX19lMi0+ZmxhZ3MgPSAtMTsgLyogMHhmZmYuLi4gKi8KKwkJCX0K KworCQkJX19lMi0+bmFtZSAgICAgICA9IGUyLT5uYW1lOworCQkJX19lMi0+aW5zdGFuY2UgICA9 IGUyLT5pbnN0YW5jZTsKKwkJCV9fZTItPmNsYXNzICAgICAgPSBlMi0+Y2xhc3M7CisJCQlfX2Uy LT5pc192aXJ0dWFsID0gZmFsc2U7CisKKwkJCWVuZ2luZV9kYXRhLm5lbmdpbmVzKys7CisJCX0K KwkJcmV0dXJuIGVuZ2luZV9kYXRhOworCX0KKworCWlmICghcGFyYW0uc2l6ZSkgeworCQlxdWVy eV9lbmdpbmVfbGlzdChmZCwgJmVuZ2luZV9kYXRhKTsKKwkJY3R4X21hcF9lbmdpbmVzKGZkLCAm ZW5naW5lX2RhdGEsICZwYXJhbSk7CisJfSBlbHNlIHsKKwkJLyogcGFyYW0uc2l6ZSBjb250YWlu cyB0aGUgZW5naW5lIGNvdW50ICovCisJCWZvciAoaSA9IDA7IGkgPCBwYXJhbS5zaXplOyBpKysp CisJCQlpbml0X2VuZ2luZSgmZW5naW5lX2RhdGEuZW5naW5lc1tpXSwKKwkJCQkgICAgZW5naW5l cy5lbmdpbmVzW2ldLmVuZ2luZV9jbGFzcywKKwkJCQkgICAgZW5naW5lcy5lbmdpbmVzW2ldLmVu Z2luZV9pbnN0YW5jZSwKKwkJCQkgICAgaSk7CisKKwkJZW5naW5lX2RhdGEubmVuZ2luZXMgPSBp OworCX0KKworCXJldHVybiBlbmdpbmVfZGF0YTsKK30KKworaW50IGdlbV9jb250ZXh0X2xvb2t1 cF9lbmdpbmUoaW50IGZkLCB1aW50NjRfdCBlbmdpbmUsIHVpbnQzMl90IGN0eF9pZCwKKwkJCSAg ICAgIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKK3sKKwlERUZJTkVfQ09OVEVY VF9FTkdJTkVTX1BBUkFNKGVuZ2luZXMsIHBhcmFtLCBjdHhfaWQsIEdFTV9NQVhfRU5HSU5FUyk7 CisKKwkvKiBhIGJpdCBwYXJhbm9pYyAqLworCWlndF9hc3NlcnQoZSk7CisKKwlpZiAoZ2VtX3Rv cG9sb2d5X2dldF9wYXJhbShmZCwgJnBhcmFtKSB8fCAhcGFyYW0uc2l6ZSkKKwkJcmV0dXJuIC1F SU5WQUw7CisKKwllLT5jbGFzcyA9IGVuZ2luZXMuZW5naW5lc1tlbmdpbmVdLmVuZ2luZV9jbGFz czsKKwllLT5pbnN0YW5jZSA9IGVuZ2luZXMuZW5naW5lc1tlbmdpbmVdLmVuZ2luZV9pbnN0YW5j ZTsKKworCXJldHVybiAwOworfQorCit2b2lkIGdlbV9jb250ZXh0X3NldF9hbGxfZW5naW5lcyhp bnQgZmQsIHVpbnQzMl90IGN0eCkKK3sKKwlERUZJTkVfQ09OVEVYVF9FTkdJTkVTX1BBUkFNKGVu Z2luZXMsIHBhcmFtLCBjdHgsIEdFTV9NQVhfRU5HSU5FUyk7CisJc3RydWN0IGludGVsX2VuZ2lu ZV9kYXRhIGVuZ2luZV9kYXRhID0geyB9OworCisJaWYgKCFnZW1fdG9wb2xvZ3lfZ2V0X3BhcmFt KGZkLCAmcGFyYW0pICYmICFwYXJhbS5zaXplKSB7CisJCXF1ZXJ5X2VuZ2luZV9saXN0KGZkLCAm ZW5naW5lX2RhdGEpOworCQljdHhfbWFwX2VuZ2luZXMoZmQsICZlbmdpbmVfZGF0YSwgJnBhcmFt KTsKKwl9Cit9CisKK2Jvb2wgZ2VtX2hhc19lbmdpbmVfdG9wb2xvZ3koaW50IGZkKQoreworCXN0 cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSBwYXJhbSA9IHsKKwkJLnBhcmFtID0gSTkx NV9DT05URVhUX1BBUkFNX0VOR0lORVMsCisJfTsKKworCXJldHVybiAhX19nZW1fY29udGV4dF9n ZXRfcGFyYW0oZmQsICZwYXJhbSk7Cit9CmRpZmYgLS1naXQgYS9saWIvaTkxNS9nZW1fZW5naW5l X3RvcG9sb2d5LmggYi9saWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yNDE1ZmQxZTM3OWIKLS0tIC9kZXYvbnVsbAor KysgYi9saWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmgKQEAgLTAsMCArMSw3MCBAQAorLyoK KyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lv biBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWlu aW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0 aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3 aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUg cmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwg c3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0 byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRv IGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUg YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVk aW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3Bp ZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBU SEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg S0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBU TyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwK KyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENM QUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9O IE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9G IE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBE RUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNpZm5kZWYgR0VNX0VOR0lORV9U T1BPTE9HWV9ICisjZGVmaW5lIEdFTV9FTkdJTkVfVE9QT0xPR1lfSAorCisjaW5jbHVkZSAiaWd0 X2d0LmgiCisjaW5jbHVkZSAiaTkxNV9kcm0uaCIKKworI2RlZmluZSBHRU1fTUFYX0VOR0lORVMJ CUk5MTVfRVhFQ19SSU5HX01BU0sgKyAxCisKK3N0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSB7CisJ dWludDMyX3QgbmVuZ2luZXM7CisJdWludDMyX3QgbjsKKwlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9u X2VuZ2luZTIgKmN1cnJlbnRfZW5naW5lOworCXN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5l MiBlbmdpbmVzW0dFTV9NQVhfRU5HSU5FU107Cit9OworCitib29sIGdlbV9oYXNfZW5naW5lX3Rv cG9sb2d5KGludCBmZCk7CitzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgaW50ZWxfaW5pdF9lbmdp bmVfbGlzdChpbnQgZmQsIHVpbnQzMl90IGN0eF9pZCk7CisKKy8qIGl0ZXJhdGlvbiBmdW5jdGlv bnMgKi8KK3N0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqCitpbnRlbF9nZXRfY3VycmVu dF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCk7CisKK3N0cnVjdCBpbnRlbF9l eGVjdXRpb25fZW5naW5lMiAqCitpbnRlbF9nZXRfY3VycmVudF9waHlzaWNhbF9lbmdpbmUoc3Ry dWN0IGludGVsX2VuZ2luZV9kYXRhICplZCk7CisKK3ZvaWQgaW50ZWxfbmV4dF9lbmdpbmUoc3Ry dWN0IGludGVsX2VuZ2luZV9kYXRhICplZCk7CisKK2ludCBnZW1fY29udGV4dF9sb29rdXBfZW5n aW5lKGludCBmZCwgdWludDY0X3QgZW5naW5lLCB1aW50MzJfdCBjdHhfaWQsCisJCQkgICAgICBz dHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpOworCit2b2lkIGdlbV9jb250ZXh0X3Nl dF9hbGxfZW5naW5lcyhpbnQgZmQsIHVpbnQzMl90IGN0eCk7CisKKyNkZWZpbmUgX19mb3JfZWFj aF9zdGF0aWNfZW5naW5lKGVfXykgXAorCWZvciAoKGVfXykgPSBpbnRlbF9leGVjdXRpb25fZW5n aW5lczI7IChlX18pLT5uYW1lOyAoZV9fKSsrKQorCisjZGVmaW5lIGZvcl9lYWNoX2NvbnRleHRf ZW5naW5lKGZkX18sIGN0eF9fLCBlX18pIFwKKwlmb3IgKHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0 YSBpX18gPSBpbnRlbF9pbml0X2VuZ2luZV9saXN0KGZkX18sIGN0eF9fKTsgXAorCSAgICAgKChl X18pID0gaW50ZWxfZ2V0X2N1cnJlbnRfZW5naW5lKCZpX18pKTsgXAorCSAgICAgaW50ZWxfbmV4 dF9lbmdpbmUoJmlfXykpCisKKy8qIG5lZWRzIHRvIHJlcGxhY2UgImZvcl9lYWNoX3BoeXNpY2Fs X2VuZ2luZSIgd2hlbiBjb25mbGljdHMgYXJlIGZpeGVkICovCisjZGVmaW5lIF9fZm9yX2VhY2hf cGh5c2ljYWxfZW5naW5lKGZkX18sIGVfXykgXAorCWZvciAoc3RydWN0IGludGVsX2VuZ2luZV9k YXRhIGlfXyA9IGludGVsX2luaXRfZW5naW5lX2xpc3QoZmRfXywgMCk7IFwKKwkgICAgICgoZV9f KSA9IGludGVsX2dldF9jdXJyZW50X3BoeXNpY2FsX2VuZ2luZSgmaV9fKSk7IFwKKwkgICAgIGlu dGVsX25leHRfZW5naW5lKCZpX18pKQorCisjZW5kaWYgLyogR0VNX0VOR0lORV9UT1BPTE9HWV9I ICovCmRpZmYgLS1naXQgYS9saWIvaWd0LmggYi9saWIvaWd0LmgKaW5kZXggNTg1MmQ1NTcxZjhi Li5hM2QzZWRjMmQ1YWMgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3QuaAorKysgYi9saWIvaWd0LmgKQEAg LTU0LDUgKzU0LDYgQEAKICNpbmNsdWRlICJtZWRpYV9zcGluLmgiCiAjaW5jbHVkZSAicmVuZGVy Y29weS5oIgogI2luY2x1ZGUgImk5MTUvZ2VtX21tYW4uaCIKKyNpbmNsdWRlICJpOTE1L2dlbV9l bmdpbmVfdG9wb2xvZ3kuaCIKIAogI2VuZGlmIC8qIElHVF9IICovCmRpZmYgLS1naXQgYS9saWIv aWd0X2d0LmggYi9saWIvaWd0X2d0LmgKaW5kZXggNDc1YzBiM2MzY2M2Li41MmIyZjFlYTk1YTUg MTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfZ3QuaAorKysgYi9saWIvaWd0X2d0LmgKQEAgLTk1LDYgKzk1 LDggQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiB7CiAJY29u c3QgY2hhciAqbmFtZTsKIAlpbnQgY2xhc3M7CiAJaW50IGluc3RhbmNlOworCXVpbnQ2NF90IGZs YWdzOworCWJvb2wgaXNfdmlydHVhbDsKIH0gaW50ZWxfZXhlY3V0aW9uX2VuZ2luZXMyW107CiAK IHVuc2lnbmVkIGludApkaWZmIC0tZ2l0IGEvbGliL21lc29uLmJ1aWxkIGIvbGliL21lc29uLmJ1 aWxkCmluZGV4IDgwNzM2ODY4NjdkNC4uYjZkOGU2Y2E1YTdlIDEwMDY0NAotLS0gYS9saWIvbWVz b24uYnVpbGQKKysrIGIvbGliL21lc29uLmJ1aWxkCkBAIC01LDYgKzUsNyBAQCBsaWJfc291cmNl cyA9IFsKIAknaTkxNS9nZW1fc3VibWlzc2lvbi5jJywKIAknaTkxNS9nZW1fcmluZy5jJywKIAkn aTkxNS9nZW1fbW1hbi5jJywKKwknaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmMnLAogCSdpZ3Rf Y29sb3JfZW5jb2RpbmcuYycsCiAJJ2lndF9kZWJ1Z2ZzLmMnLAogCSdpZ3RfZGV2aWNlLmMnLAot LSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=