From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 997F489D7D for ; Thu, 21 Mar 2019 01:00:27 +0000 (UTC) From: Andi Shyti Date: Thu, 21 Mar 2019 03:00:14 +0200 Message-Id: <20190321010015.1317-5-andi.shyti@intel.com> In-Reply-To: <20190321010015.1317-1-andi.shyti@intel.com> References: <20190321010015.1317-1-andi.shyti@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH v14 4/5] 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 YXJyYXkgYW5kCnN0b3JlZCBvbmx5IGFmdGVyIGNoZWNraW5nIHRoZWlyIHByZXNlbmNlLgoKRXh0 ZW5kIHRoZSAnZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlJyBzbyB0aGF0IGl0IGNhbiBs b29wCnVzaW5nIHRoZSBuZXcgJ2ludGVsX2luaXRfZW5naW5lX2xpc3QoKScuCgpVcGRhdGUgYWNj b3JkaW5nbHkgdGVzdHMvcGVyZl9wbXUuYywgdGhhdCB1c2VzIHRoZQonZm9yX2VhY2hfZW5naW5l X2NsYXNzX2luc3RhbmNlKCknIGxvb3AuCgpTaWduZWQtb2ZmLWJ5OiBBbmRpIFNoeXRpIDxhbmRp LnNoeXRpQGludGVsLmNvbT4KLS0tCiBsaWIvTWFrZWZpbGUuc291cmNlcyAgICAgICAgICAgfCAg IDIgKwogbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jIHwgMTg0ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwogbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oIHwgIDM4 ICsrKysrKysKIGxpYi9pZ3RfZ3QuaCAgICAgICAgICAgICAgICAgICB8ICAxMCArLQogbGliL21l c29uLmJ1aWxkICAgICAgICAgICAgICAgIHwgICAxICsKIHRlc3RzL3BlcmZfcG11LmMgICAgICAg ICAgICAgICB8ICAgOCArLQogNiBmaWxlcyBjaGFuZ2VkLCAyMzYgaW5zZXJ0aW9ucygrKSwgNyBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvaTkxNS9nZW1fZW5naW5lX3RvcG9s b2d5LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmgK CmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUuc291cmNlcyBiL2xpYi9NYWtlZmlsZS5zb3VyY2Vz CmluZGV4IGNmMjcyMDk4MTcwNy4uNzU3YmQ3YTE3ZWJlIDEwMDY0NAotLS0gYS9saWIvTWFrZWZp bGUuc291cmNlcworKysgYi9saWIvTWFrZWZpbGUuc291cmNlcwpAQCAtMTMsNiArMTMsOCBAQCBs aWJfc291cmNlX2xpc3QgPQkgCVwKIAlpOTE1L2dlbV9yaW5nLmMJXAogCWk5MTUvZ2VtX21tYW4u YwlcCiAJaTkxNS9nZW1fbW1hbi5oCVwKKwlpOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuYwlcCisJ aTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmgJXAogCWk5MTVfM2QuaAkJXAogCWk5MTVfcmVnLmgJ CVwKIAlpOTE1X3BjaWlkcy5oCQlcCmRpZmYgLS1naXQgYS9saWIvaTkxNS9nZW1fZW5naW5lX3Rv cG9sb2d5LmMgYi9saWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43OTFhZjg3Nzc5NTYKLS0tIC9kZXYvbnVsbAorKysg Yi9saWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmMKQEAgLTAsMCArMSwxODQgQEAKKy8qCisg KiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24g aXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmlu ZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv biBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0 aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJp Z2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1 YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBk byBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFi b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGlu ZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVz IG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhF IFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJ TkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8g VEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisg KiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJ TSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBP RiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBP UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVB TElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaW5jbHVkZSAiZHJtdGVzdC5oIgor I2luY2x1ZGUgImlvY3RsX3dyYXBwZXJzLmgiCisKKyNpbmNsdWRlICJpOTE1L2dlbV9lbmdpbmVf dG9wb2xvZ3kuaCIKKworI2RlZmluZSBTSVpFT0ZfQ1RYX1BBUkFNCW9mZnNldG9mKHN0cnVjdCBp OTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcywgXAorCQkJCQljbGFzc19pbnN0YW5jZVtJOTE1X0VY RUNfUklOR19NQVNLICsgMV0pCisjZGVmaW5lIFNJWkVPRl9RVUVSWQkJb2Zmc2V0b2Yoc3RydWN0 IGRybV9pOTE1X3F1ZXJ5X2VuZ2luZV9pbmZvLCBcCisJCQkJCWVuZ2luZXNbSTkxNV9FWEVDX1JJ TkdfTUFTSyArIDFdKQorCitzdGF0aWMgaW50IF9fZ2VtX3F1ZXJ5KGludCBmZCwgc3RydWN0IGRy bV9pOTE1X3F1ZXJ5ICpxKQoreworCWludCBlcnIgPSAwOworCisJaWYgKGlndF9pb2N0bChmZCwg RFJNX0lPQ1RMX0k5MTVfUVVFUlksIHEpKQorCQllcnIgPSAtZXJybm87CisKKwllcnJubyA9IDA7 CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIHZvaWQgZ2VtX3F1ZXJ5KGludCBmZCwgc3RydWN0 IGRybV9pOTE1X3F1ZXJ5ICpxKQoreworCWlndF9hc3NlcnRfZXEoX19nZW1fcXVlcnkoZmQsIHEp LCAwKTsKK30KKworc3RhdGljIHZvaWQgcXVlcnlfZW5naW5lcyhpbnQgZmQsCisJCQkgIHN0cnVj dCBkcm1faTkxNV9xdWVyeV9lbmdpbmVfaW5mbyAqcXVlcnlfZW5naW5lcykKK3sKKwlzdHJ1Y3Qg ZHJtX2k5MTVfcXVlcnlfaXRlbSBpdGVtID0geyB9OworCXN0cnVjdCBkcm1faTkxNV9xdWVyeSBx dWVyeSA9IHsgfTsKKworCWl0ZW0ucXVlcnlfaWQgPSBEUk1fSTkxNV9RVUVSWV9FTkdJTkVfSU5G TzsKKwlxdWVyeS5pdGVtc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJml0ZW0pOworCXF1ZXJ5Lm51 bV9pdGVtcyA9IDE7CisJaXRlbS5sZW5ndGggPSBTSVpFT0ZfUVVFUlk7CisKKwlpdGVtLmRhdGFf cHRyID0gdG9fdXNlcl9wb2ludGVyKHF1ZXJ5X2VuZ2luZXMpOworCisJZ2VtX3F1ZXJ5KGZkLCAm cXVlcnkpOworfQorCitzdGF0aWMgdm9pZCBjdHhfbWFwX2VuZ2luZXMoaW50IGZkLCBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2RhdGEgKmVkLAorCQkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4 dF9wYXJhbSAqY3R4X3BhcmFtKQoreworCXN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5l cyAqY3R4X2VuZ2luZSA9CisJCQkoc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzKikg Y3R4X3BhcmFtLT52YWx1ZTsKKwlpbnQgaSA9IDA7CisKKwlmb3IgKHR5cGVvZihjdHhfZW5naW5l LT5jbGFzc19pbnN0YW5jZVswXSkgKnAgPQorCQkJJmN0eF9lbmdpbmUtPmNsYXNzX2luc3RhbmNl WzBdOworCQkJCQkJaSA8IGVkLT5uZW5naW5lczsgaSsrLCBwKyspIHsKKwkJcC0+ZW5naW5lX2Ns YXNzID0gZWQtPmVuZ2luZXNbaV0uY2xhc3M7CisJCXAtPmVuZ2luZV9pbnN0YW5jZSA9IGVkLT5l bmdpbmVzW2ldLmluc3RhbmNlOworCX0KKworCWN0eF9wYXJhbS0+c2l6ZSA9IG9mZnNldG9mKHR5 cGVvZigqY3R4X2VuZ2luZSksIGNsYXNzX2luc3RhbmNlW2ldKTsKKworCWdlbV9jb250ZXh0X3Nl dF9wYXJhbShmZCwgY3R4X3BhcmFtKTsKK30KKworc3RhdGljIHZvaWQgaW5pdF9lbmdpbmUoc3Ry dWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplMiwgY29uc3QgY2hhciAqbmFtZSwKKwkJCXVp bnQxNl90IGNsYXNzLCB1aW50MTZfdCBpbnN0YW5jZSwgdWludDhfdCBmbGFncykKK3sKKwlzdGF0 aWMgY29uc3QgY2hhciAqdW5rX25hbWUgPSAidW5rIjsKKworCWUyLT5jbGFzcyAgICA9IGNsYXNz OworCWUyLT5pbnN0YW5jZSA9IGluc3RhbmNlOworCWUyLT5mbGFncyAgICA9IGZsYWdzOworCisJ aWYgKG5hbWUpIHsKKwkJZTItPm5hbWUgPSBuYW1lOworCX0gZWxzZSB7CisJCWNvbnN0IHN0cnVj dCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqX19lMjsKKworCQlfX2Zvcl9lYWNoX2VuZ2luZV9j bGFzc19pbnN0YW5jZShfX2UyKQorCQkJaWYgKF9fZTItPmNsYXNzID09IGNsYXNzICYmIF9fZTIt Pmluc3RhbmNlID09IGluc3RhbmNlKQorCQkJCWJyZWFrOworCisJCWUyLT5uYW1lID0gX19lMi0+ bmFtZSA/IF9fZTItPm5hbWUgOiB1bmtfbmFtZTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIHF1ZXJ5 X2VuZ2luZV9saXN0KGludCBmZCwgc3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCkKK3sKKwl1 aW50OF90IHF1ZXJ5X2J1ZmZlcltTSVpFT0ZfUVVFUlldID0geyB9OworCXN0cnVjdCBkcm1faTkx NV9xdWVyeV9lbmdpbmVfaW5mbyAqcXVlcnlfZW5naW5lID0KKwkJCShzdHJ1Y3QgZHJtX2k5MTVf cXVlcnlfZW5naW5lX2luZm8gKikgcXVlcnlfYnVmZmVyOworCWludCBpOworCisJcXVlcnlfZW5n aW5lcyhmZCwgcXVlcnlfZW5naW5lKTsKKworCWZvciAoaSA9IDA7IGkgPCBxdWVyeV9lbmdpbmUt Pm51bV9lbmdpbmVzOyBpKyspCisJCWluaXRfZW5naW5lKCZlZC0+ZW5naW5lc1tpXSwgTlVMTCwK KwkJCSAgIHF1ZXJ5X2VuZ2luZS0+ZW5naW5lc1tpXS5lbmdpbmVfY2xhc3MsCisJCQkgICBxdWVy eV9lbmdpbmUtPmVuZ2luZXNbaV0uZW5naW5lX2luc3RhbmNlLCBpKTsKKworCWVkLT5uZW5naW5l cyA9IHF1ZXJ5X2VuZ2luZS0+bnVtX2VuZ2luZXM7Cit9CisKK3N0cnVjdCBpbnRlbF9lbmdpbmVf ZGF0YSBpbnRlbF9pbml0X2VuZ2luZV9saXN0KGludCBmZCwgdWludDMyX3QgY3R4X2lkKQorewor CXN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSBlbmdpbmVfZGF0YTsKKwl1aW50OF90IGJ1ZmZbU0la RU9GX0NUWF9QQVJBTV0gPSB7IH07CisKKwlzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2lu ZXMgKmVuZ2luZXMgPQorCQkoc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzICopIGJ1 ZmY7CisKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gcGFyYW0gPSB7CisJCS5w YXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTLAorCQkuY3R4X2lkID0gY3R4X2lkLAor CQkuc2l6ZSA9IFNJWkVPRl9DVFhfUEFSQU0sCisJCS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcihl bmdpbmVzKSwKKwl9OworCisJaW50IGk7CisKKwlpZiAoX19nZW1fY29udGV4dF9nZXRfcGFyYW0o ZmQsICZwYXJhbSkpIHsKKwkJLyogaWYga2VybmVsIGRvZXMgbm90IHN1cHBvcnQgZW5naW5lL2Nv bnRleHQgbWFwcGluZyAqLworCQljb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIg KmUyOworCisJCWlndF9kZWJ1ZygidXNpbmcgcHJlLWFsbG9jYXRlZCBlbmdpbmUgbGlzdFxuIik7 CisKKwkJX19mb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UoZTIpIHsKKwkJCXVpbnQ2NF90 IGZsYWdzOworCisJCQlpZiAoIWdlbV9oYXNfZW5naW5lKGZkLCBlMi0+Y2xhc3MsIGUyLT5pbnN0 YW5jZSkpCisJCQkJY29udGludWU7CisKKwkJCWZsYWdzID0gZ2VtX2NsYXNzX2luc3RhbmNlX3Rv X2ViX2ZsYWdzKGZkLCBlMi0+Y2xhc3MsCisJCQkJCQkJICAgICAgIGUyLT5pbnN0YW5jZSk7CisK KwkJCWluaXRfZW5naW5lKCZlbmdpbmVfZGF0YS5lbmdpbmVzW2VuZ2luZV9kYXRhLm5lbmdpbmVz XSwKKwkJCQkgICAgZTItPm5hbWUsIGUyLT5jbGFzcywgZTItPmluc3RhbmNlLCBmbGFncyk7CisK KwkJCWVuZ2luZV9kYXRhLm5lbmdpbmVzKys7CisJCX0KKworCX0gZWxzZSBpZiAoIXBhcmFtLnNp emUpIHsKKwkJLyogZWxzZSBpZiBjb250ZXh0IGRvZXNuJ3QgaGF2ZSBtYXBwZWQgZW5naW5lcyAq LworCQlxdWVyeV9lbmdpbmVfbGlzdChmZCwgJmVuZ2luZV9kYXRhKTsKKwkJY3R4X21hcF9lbmdp bmVzKGZkLCAmZW5naW5lX2RhdGEsICZwYXJhbSk7CisKKwl9IGVsc2UgeworCQkvKiBjb250ZXh0 IGhhcyBhIGxpc3Qgb2YgbWFwcGVkIGVuZ2luZXMgKi8KKworCQl1aW50OF90IG5lbmdpbmVzID0g KHBhcmFtLnNpemUgLQorCQkJCXNpemVvZihzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2lu ZXMpKSAvCisJCQkJc2l6ZW9mKGVuZ2luZXMtPmNsYXNzX2luc3RhbmNlWzBdKTsKKworCQlmb3Ig KGkgPSAwOyBpIDwgbmVuZ2luZXM7IGkrKykKKwkJCWluaXRfZW5naW5lKCZlbmdpbmVfZGF0YS5l bmdpbmVzW2ldLCBOVUxMLAorCQkJCSAgICBlbmdpbmVzLT5jbGFzc19pbnN0YW5jZVtpXS5lbmdp bmVfY2xhc3MsCisJCQkJICAgIGVuZ2luZXMtPmNsYXNzX2luc3RhbmNlW2ldLmVuZ2luZV9pbnN0 YW5jZSwKKwkJCQkgICAgaSk7CisKKwkJZW5naW5lX2RhdGEubmVuZ2luZXMgPSBpOworCX0KKwor CXJldHVybiBlbmdpbmVfZGF0YTsKK30KZGlmZiAtLWdpdCBhL2xpYi9pOTE1L2dlbV9lbmdpbmVf dG9wb2xvZ3kuaCBiL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjMxZmEzZGNhYTQ4YwotLS0gL2Rldi9udWxsCisr KyBiL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuaApAQCAtMCwwICsxLDM4IEBACisvKgor ICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9u IGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5p bmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRp b24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdp dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSBy aWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBz dWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRv IHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8g ZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBh Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRp bmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGll cyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRI RSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL SU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP IFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAor ICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xB SU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g T0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0Yg T1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERF QUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKi8KKworI2lmbmRlZiBHRU1fRU5HSU5FX1RP UE9MT0dZX0gKKyNkZWZpbmUgR0VNX0VOR0lORV9UT1BPTE9HWV9ICisKKyNpbmNsdWRlICJpOTE1 X2RybS5oIgorI2luY2x1ZGUgImlndF9ndC5oIgorCitzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEg eworCXVpbnQzMl90IG5lbmdpbmVzOworCXVpbnQzMl90IG47CisJc3RydWN0IGludGVsX2V4ZWN1 dGlvbl9lbmdpbmUyIGVuZ2luZXNbSTkxNV9FWEVDX1JJTkdfTUFTSyArIDFdOworfTsKKworc3Ry dWN0IGludGVsX2VuZ2luZV9kYXRhIGludGVsX2luaXRfZW5naW5lX2xpc3QoaW50IGZkLCB1aW50 MzJfdCBjdHhfaWQpOworCisjZW5kaWYgLyogR0VNX0VOR0lORV9UT1BPTE9HWV9IICovCmRpZmYg LS1naXQgYS9saWIvaWd0X2d0LmggYi9saWIvaWd0X2d0LmgKaW5kZXggNDc1YzBiM2MzY2M2Li44 NGVhNGFmNTM5MmQgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfZ3QuaAorKysgYi9saWIvaWd0X2d0LmgK QEAgLTk1LDYgKzk1LDcgQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5n aW5lMiB7CiAJY29uc3QgY2hhciAqbmFtZTsKIAlpbnQgY2xhc3M7CiAJaW50IGluc3RhbmNlOwor CXVpbnQ2NF90IGZsYWdzOwogfSBpbnRlbF9leGVjdXRpb25fZW5naW5lczJbXTsKIAogdW5zaWdu ZWQgaW50CkBAIC0xMTcsOCArMTE4LDExIEBAIHZvaWQgZ2VtX3JlcXVpcmVfZW5naW5lKGludCBn ZW1fZmQsCiAjZGVmaW5lIF9fZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKGVfXykgXAog CWZvciAoKGVfXykgPSBpbnRlbF9leGVjdXRpb25fZW5naW5lczI7IChlX18pLT5uYW1lOyAoZV9f KSsrKQogCi0jZGVmaW5lIGZvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShmZF9fLCBlX18p IFwKLQlmb3IgKChlX18pID0gaW50ZWxfZXhlY3V0aW9uX2VuZ2luZXMyOyAoZV9fKS0+bmFtZTsg KGVfXykrKykgXAotCQlmb3JfaWYgKGdlbV9oYXNfZW5naW5lKChmZF9fKSwgKGVfXyktPmNsYXNz LCAoZV9fKS0+aW5zdGFuY2UpKQorI2luY2x1ZGUgImk5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5o IgorCisjZGVmaW5lIGZvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShmZF9fLCBjdHhfXywg ZV9fKSBcCisJZm9yIChzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgaV9fID0gaW50ZWxfaW5pdF9l bmdpbmVfbGlzdChmZF9fLCBjdHhfXyk7IFwKKwkJKChlX18pID0gKGlfXy5uIDwgaV9fLm5lbmdp bmVzKSA/ICZpX18uZW5naW5lc1tpX18ubl0gOiBOVUxMKTsgXAorCQkJaV9fLm4rKykKIAogI2Vu ZGlmIC8qIElHVF9HVF9IICovCmRpZmYgLS1naXQgYS9saWIvbWVzb24uYnVpbGQgYi9saWIvbWVz b24uYnVpbGQKaW5kZXggMGViNTU4NWQ3MmI5Li4zY2M1MmY5N2M4YmYgMTAwNjQ0Ci0tLSBhL2xp Yi9tZXNvbi5idWlsZAorKysgYi9saWIvbWVzb24uYnVpbGQKQEAgLTUsNiArNSw3IEBAIGxpYl9z b3VyY2VzID0gWwogCSdpOTE1L2dlbV9zdWJtaXNzaW9uLmMnLAogCSdpOTE1L2dlbV9yaW5nLmMn LAogCSdpOTE1L2dlbV9tbWFuLmMnLAorCSdpOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuYycsCiAJ J2lndF9jb2xvcl9lbmNvZGluZy5jJywKIAknaWd0X2RlYnVnZnMuYycsCiAJJ2lndF9kZXZpY2Uu YycsCmRpZmYgLS1naXQgYS90ZXN0cy9wZXJmX3BtdS5jIGIvdGVzdHMvcGVyZl9wbXUuYwppbmRl eCA0ZjU1MmJjMmFlMjguLmM5YzYzNDA1Y2RkZSAxMDA2NDQKLS0tIGEvdGVzdHMvcGVyZl9wbXUu YworKysgYi90ZXN0cy9wZXJmX3BtdS5jCkBAIC00MzQsNyArNDM0LDcgQEAgYnVzeV9jaGVja19h bGwoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAog CiAJaSA9IDA7CiAJZmRbMF0gPSAtMTsKLQlmb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2Uo Z2VtX2ZkLCBlXykgeworCWZvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShnZW1fZmQsIDAs IGVfKSB7CiAJCWlmIChlID09IGVfKQogCQkJYnVzeV9pZHggPSBpOwogCkBAIC00OTcsNyArNDk3 LDcgQEAgbW9zdF9idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZTIgKmUsCiAJdW5zaWduZWQgaW50IGlkbGVfaWR4LCBpOwogCiAJaSA9 IDA7Ci0JZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKGdlbV9mZCwgZV8pIHsKKwlmb3Jf ZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UoZ2VtX2ZkLCAwLCBlXykgewogCQlpZiAoZSA9PSBl XykKIAkJCWlkbGVfaWR4ID0gaTsKIAkJZWxzZSBpZiAoc3BpbikKQEAgLTU1NCw3ICs1NTQsNyBA QCBhbGxfYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29uc3QgdW5zaWduZWQgaW50IG51bV9l bmdpbmVzLAogCXVuc2lnbmVkIGludCBpOwogCiAJaSA9IDA7Ci0JZm9yX2VhY2hfZW5naW5lX2Ns YXNzX2luc3RhbmNlKGdlbV9mZCwgZSkgeworCWZvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5j ZShnZW1fZmQsIDAsIGUpIHsKIAkJaWYgKHNwaW4pCiAJCQlfX3N1Ym1pdF9zcGluX2JhdGNoKGdl bV9mZCwgc3BpbiwgZSwgNjQpOwogCQllbHNlCkBAIC0xNjgzLDcgKzE2ODMsNyBAQCBpZ3RfbWFp bgogCQlpZ3RfcmVxdWlyZV9nZW0oZmQpOwogCQlpZ3RfcmVxdWlyZShpOTE1X3R5cGVfaWQoKSA+ IDApOwogCi0JCWZvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShmZCwgZSkKKwkJZm9yX2Vh Y2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKGZkLCAwLCBlKQogCQkJbnVtX2VuZ2luZXMrKzsKIAl9 CiAKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2