From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8625489E63 for ; Thu, 21 Mar 2019 16:05:39 +0000 (UTC) From: Andi Shyti Date: Thu, 21 Mar 2019 18:05:27 +0200 Message-Id: <20190321160528.4131-5-andi.shyti@intel.com> In-Reply-To: <20190321160528.4131-1-andi.shyti@intel.com> References: <20190321160528.4131-1-andi.shyti@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH v15 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 YXJyYXkgYW5kCnN0b3JlZCBvbmx5IGFmdGVyIGNoZWNraW5nIHRoZWlyIHByZXNlbmNlLgoKVGhl IGdlbV9lbmdpbmVfdG9wb2xvZ3kgbGlicmFyeSBwcm92aWRlcyBzb21lIGl0ZXJhdGlvbiBoZWxw ZXJzOgoKIC0gaW50ZWxfZ2V0X2N1cnJlbnRfZW5naW5lKCk6IHByb3ZpZGVzIHRoZSBjdXJyZW50 IGVuZ2luZSBpbiB0aGUKICAgaXRlcmF0aW9uLgoKIC0gaW50ZWxfZ2V0X2N1cnJlbnRfcGh5c2lj YWxfZW5naW5lKCk6IHByb3ZpZGVzIHRoZSBjdXJyZW50CiAgIHBoeXNpY2FsIGVuZ2luZSwgaWYg dGhlIGN1cnJlbnQgZW5naW5lIGlzIGEgdmlydHVhbCBlbmdpbmUsCiAgIGl0IG1vdmVzIGZvcndh cmQgdW50aWwgaXQgZmluZHMgYSBwaHlzaWNhbCBlbmdpbmUuCgogLSBpbnRlbF9uZXh0X2VuZ2lu ZSgpIGl0IGp1c3QgaW5jcmVtZW50cyB0aGUgY291bnRlciBzbyB0aGF0IGl0CiAgIHBvaW50cyB0 byB0aGUgbmV4dCBlbmdpbmUuCgpFeHRlbmQgdGhlICdmb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5z dGFuY2UnIHNvIHRoYXQgaXQgY2FuIGxvb3AKdXNpbmcgdGhlIG5ldyAnaW50ZWxfaW5pdF9lbmdp bmVfbGlzdCgpJyBhbmQgcmVuYW1lIGl0IHRvCidmb3JfZWFjaF9jb250ZXh0X2VuZ2luZScuCgpN b3ZlICdfX2Zvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZScgdG8gZ2VtX2VuZ2luZV90b3Bv bG9neS5oCmFuZCByZW5hbWUgaXQgdG8gJ19fZm9yX2VhY2hfc3RhdGljX2VuZ2luZScuCgpVcGRh dGUgYWNjb3JkaW5nbHkgdGVzdHMvcGVyZl9wbXUuYyB0byB1c2UgY29ycmVjdGx5IHRoZSBuZXcK Zm9yX2VhY2ggbG9wcHMuCgpTaWduZWQtb2ZmLWJ5OiBBbmRpIFNoeXRpIDxhbmRpLnNoeXRpQGlu dGVsLmNvbT4KLS0tCiBsaWIvTWFrZWZpbGUuc291cmNlcyAgICAgICAgICAgfCAgIDIgKwogbGli L2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jIHwgMjIyICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwogbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oIHwgIDYzICsrKysrKysr KysKIGxpYi9pZ3QuaCAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBsaWIvaWd0X2d0Lmgg ICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIGxpYi9tZXNvbi5idWlsZCAgICAgICAgICAgICAg ICB8ICAgMSArCiB0ZXN0cy9wZXJmX3BtdS5jICAgICAgICAgICAgICAgfCAgMTIgKy0KIDcgZmls ZXMgY2hhbmdlZCwgMjk2IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IGxpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IGxpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuaAoKZGlmZiAtLWdpdCBhL2xpYi9NYWtl ZmlsZS5zb3VyY2VzIGIvbGliL01ha2VmaWxlLnNvdXJjZXMKaW5kZXggY2YyNzIwOTgxNzA3Li43 NTdiZDdhMTdlYmUgMTAwNjQ0Ci0tLSBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzCisrKyBiL2xpYi9N YWtlZmlsZS5zb3VyY2VzCkBAIC0xMyw2ICsxMyw4IEBAIGxpYl9zb3VyY2VfbGlzdCA9CSAJXAog CWk5MTUvZ2VtX3JpbmcuYwlcCiAJaTkxNS9nZW1fbW1hbi5jCVwKIAlpOTE1L2dlbV9tbWFuLmgJ XAorCWk5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jCVwKKwlpOTE1L2dlbV9lbmdpbmVfdG9wb2xv Z3kuaAlcCiAJaTkxNV8zZC5oCQlcCiAJaTkxNV9yZWcuaAkJXAogCWk5MTVfcGNpaWRzLmgJCVwK ZGlmZiAtLWdpdCBhL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuYyBiL2xpYi9pOTE1L2dl bV9lbmdpbmVfdG9wb2xvZ3kuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLjExNDRjNDlhMTk5MwotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9pOTE1L2dlbV9lbmdpbmVf dG9wb2xvZ3kuYwpAQCAtMCwwICsxLDIyMiBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE5IElu dGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJl ZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBz b2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJl IiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNs dWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9k aWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBz ZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9t IHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBm b2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBh bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3Jh cGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlv bnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1Q TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9O SU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlS SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisg KiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9U SEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBU SEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRX QVJFLgorICovCisKKyNpbmNsdWRlICJkcm10ZXN0LmgiCisjaW5jbHVkZSAiaW9jdGxfd3JhcHBl cnMuaCIKKworI2luY2x1ZGUgImk5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oIgorCisjZGVmaW5l IFNJWkVPRl9DVFhfUEFSQU0Jb2Zmc2V0b2Yoc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdp bmVzLCBcCisJCQkJCWNsYXNzX2luc3RhbmNlW0k5MTVfRVhFQ19SSU5HX01BU0sgKyAxXSkKKyNk ZWZpbmUgU0laRU9GX1FVRVJZCQlvZmZzZXRvZihzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZW5naW5l X2luZm8sIFwKKwkJCQkJZW5naW5lc1tJOTE1X0VYRUNfUklOR19NQVNLICsgMV0pCisKK3N0YXRp YyBpbnQgX19nZW1fcXVlcnkoaW50IGZkLCBzdHJ1Y3QgZHJtX2k5MTVfcXVlcnkgKnEpCit7CisJ aW50IGVyciA9IDA7CisKKwlpZiAoaWd0X2lvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9RVUVSWSwg cSkpCisJCWVyciA9IC1lcnJubzsKKworCWVycm5vID0gMDsKKwlyZXR1cm4gZXJyOworfQorCitz dGF0aWMgdm9pZCBnZW1fcXVlcnkoaW50IGZkLCBzdHJ1Y3QgZHJtX2k5MTVfcXVlcnkgKnEpCit7 CisJaWd0X2Fzc2VydF9lcShfX2dlbV9xdWVyeShmZCwgcSksIDApOworfQorCitzdGF0aWMgdm9p ZCBxdWVyeV9lbmdpbmVzKGludCBmZCwKKwkJCSAgc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2VuZ2lu ZV9pbmZvICpxdWVyeV9lbmdpbmVzLAorCQkJICBpbnQgbGVuZ3RoKQoreworCXN0cnVjdCBkcm1f aTkxNV9xdWVyeV9pdGVtIGl0ZW0gPSB7IH07CisJc3RydWN0IGRybV9pOTE1X3F1ZXJ5IHF1ZXJ5 ID0geyB9OworCisJaXRlbS5xdWVyeV9pZCA9IERSTV9JOTE1X1FVRVJZX0VOR0lORV9JTkZPOwor CXF1ZXJ5Lml0ZW1zX3B0ciA9IHRvX3VzZXJfcG9pbnRlcigmaXRlbSk7CisJcXVlcnkubnVtX2l0 ZW1zID0gMTsKKwlpdGVtLmxlbmd0aCA9IGxlbmd0aDsKKworCWl0ZW0uZGF0YV9wdHIgPSB0b191 c2VyX3BvaW50ZXIocXVlcnlfZW5naW5lcyk7CisKKwlnZW1fcXVlcnkoZmQsICZxdWVyeSk7Cit9 CisKK3N0YXRpYyB2b2lkIGN0eF9tYXBfZW5naW5lcyhpbnQgZmQsIHN0cnVjdCBpbnRlbF9lbmdp bmVfZGF0YSAqZWQsCisJCQkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtICpj dHhfcGFyYW0pCit7CisJc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzICpjdHhfZW5n aW5lID0KKwkJCShzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMqKSBjdHhfcGFyYW0t PnZhbHVlOworCWludCBpID0gMDsKKworCWZvciAodHlwZW9mKGN0eF9lbmdpbmUtPmNsYXNzX2lu c3RhbmNlWzBdKSAqcCA9CisJCQkmY3R4X2VuZ2luZS0+Y2xhc3NfaW5zdGFuY2VbMF07CisJCQkJ CQlpIDwgZWQtPm5lbmdpbmVzOyBpKyssIHArKykgeworCQlwLT5lbmdpbmVfY2xhc3MgPSBlZC0+ ZW5naW5lc1tpXS5jbGFzczsKKwkJcC0+ZW5naW5lX2luc3RhbmNlID0gZWQtPmVuZ2luZXNbaV0u aW5zdGFuY2U7CisJfQorCisJY3R4X3BhcmFtLT5zaXplID0gb2Zmc2V0b2YodHlwZW9mKCpjdHhf ZW5naW5lKSwgY2xhc3NfaW5zdGFuY2VbaV0pOworCisJZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZk LCBjdHhfcGFyYW0pOworfQorCitzdGF0aWMgdm9pZCBpbml0X2VuZ2luZShzdHJ1Y3QgaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZTIgKmUyLCBjb25zdCBjaGFyICpuYW1lLAorCQkJdWludDE2X3QgY2xh c3MsIHVpbnQxNl90IGluc3RhbmNlLCB1aW50NjRfdCBmbGFncykKK3sKKwlzdGF0aWMgY29uc3Qg Y2hhciAqdW5rbm93bl9uYW1lID0gInVua25vd24iLAorCQkJICAqdmlydHVhbF9uYW1lID0gInZp cnR1YWwiOworCisJZTItPmNsYXNzICAgID0gY2xhc3M7CisJZTItPmluc3RhbmNlID0gaW5zdGFu Y2U7CisJZTItPmZsYWdzICAgID0gZmxhZ3M7CisKKwlpZiAoY2xhc3MgPCAwICYmIGluc3RhbmNl IDwgMCkgeworCQllMi0+bmFtZSA9IHZpcnR1YWxfbmFtZTsKKwl9IGVsc2UgeworCQljb25zdCBz dHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKl9fZTI7CisKKwkJX19mb3JfZWFjaF9zdGF0 aWNfZW5naW5lKF9fZTIpCisJCQlpZiAoX19lMi0+Y2xhc3MgPT0gY2xhc3MgJiYgX19lMi0+aW5z dGFuY2UgPT0gaW5zdGFuY2UpCisJCQkJYnJlYWs7CisKKwkJZTItPm5hbWUgPSBfX2UyLT5uYW1l ID8gX19lMi0+bmFtZSA6IHVua25vd25fbmFtZTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIHF1ZXJ5 X2VuZ2luZV9saXN0KGludCBmZCwgc3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCkKK3sKKwl1 aW50OF90IHF1ZXJ5X2J1ZmZlcltTSVpFT0ZfUVVFUlldID0geyB9OworCXN0cnVjdCBkcm1faTkx NV9xdWVyeV9lbmdpbmVfaW5mbyAqcXVlcnlfZW5naW5lID0KKwkJCShzdHJ1Y3QgZHJtX2k5MTVf cXVlcnlfZW5naW5lX2luZm8gKikgcXVlcnlfYnVmZmVyOworCWludCBpOworCisJcXVlcnlfZW5n aW5lcyhmZCwgcXVlcnlfZW5naW5lLCBTSVpFT0ZfUVVFUlkpOworCisJZm9yIChpID0gMDsgaSA8 IHF1ZXJ5X2VuZ2luZS0+bnVtX2VuZ2luZXM7IGkrKykKKwkJaW5pdF9lbmdpbmUoJmVkLT5lbmdp bmVzW2ldLCBOVUxMLAorCQkJICAgcXVlcnlfZW5naW5lLT5lbmdpbmVzW2ldLmVuZ2luZV9jbGFz cywKKwkJCSAgIHF1ZXJ5X2VuZ2luZS0+ZW5naW5lc1tpXS5lbmdpbmVfaW5zdGFuY2UsIGkpOwor CisJZWQtPm5lbmdpbmVzID0gcXVlcnlfZW5naW5lLT5udW1fZW5naW5lczsKK30KKworc3RydWN0 IGludGVsX2VuZ2luZV9kYXRhIGludGVsX2luaXRfZW5naW5lX2xpc3QoaW50IGZkLCB1aW50MzJf dCBjdHhfaWQpCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9kYXRhIGVuZ2luZV9kYXRhID0geyB9 OworCXVpbnQ4X3QgYnVmZltTSVpFT0ZfQ1RYX1BBUkFNXSA9IHsgfTsKKworCXN0cnVjdCBpOTE1 X2NvbnRleHRfcGFyYW1fZW5naW5lcyAqZW5naW5lcyA9CisJCShzdHJ1Y3QgaTkxNV9jb250ZXh0 X3BhcmFtX2VuZ2luZXMgKikgYnVmZjsKKworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9w YXJhbSBwYXJhbSA9IHsKKwkJLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVMsCisJ CS5jdHhfaWQgPSBjdHhfaWQsCisJCS5zaXplID0gU0laRU9GX0NUWF9QQVJBTSwKKwkJLnZhbHVl ID0gdG9fdXNlcl9wb2ludGVyKGVuZ2luZXMpLAorCX07CisKKwlpbnQgaSwgcmV0OworCXVuc2ln bmVkIGludCBuZW5naW5lczsKKworCXJldCA9IF9fZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZkLCAm cGFyYW0pOworCisJbmVuZ2luZXMgPSBwYXJhbS5zaXplID4gc2l6ZW9mKHN0cnVjdCBpOTE1X2Nv bnRleHRfcGFyYW1fZW5naW5lcykgPworCQkgICAocGFyYW0uc2l6ZSAtIHNpemVvZihzdHJ1Y3Qg aTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMpKSAvCisJCSAgIHNpemVvZihlbmdpbmVzLT5jbGFz c19pbnN0YW5jZVswXSkgOgorCQkgICAwOworCisJaWYgKG5lbmdpbmVzID4gSTkxNV9FWEVDX1JJ TkdfTUFTSyArIDEpIHsKKwkJZW5naW5lX2RhdGEuZXJyb3IgPSByZXQgPyByZXQgOiAtRUlOVkFM OworCQlyZXR1cm4gZW5naW5lX2RhdGE7CisJfQorCisJaWYgKF9fZ2VtX2NvbnRleHRfZ2V0X3Bh cmFtKGZkLCAmcGFyYW0pKSB7CisJCS8qIGlmIGtlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IGVuZ2lu ZS9jb250ZXh0IG1hcHBpbmcgKi8KKwkJY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdp bmUyICplMjsKKworCQlpZ3RfZGVidWcoInVzaW5nIHByZS1hbGxvY2F0ZWQgZW5naW5lIGxpc3Rc biIpOworCisJCV9fZm9yX2VhY2hfc3RhdGljX2VuZ2luZShlMikgeworCQkJc3RydWN0IGludGVs X2V4ZWN1dGlvbl9lbmdpbmUyICpfX2UyOworCisJCQlfX2UyID0gJmVuZ2luZV9kYXRhLmVuZ2lu ZXNbZW5naW5lX2RhdGEubmVuZ2luZXNdOworCQkJX19lMi0+ZmxhZ3MgPSBnZW1fY2xhc3NfaW5z dGFuY2VfdG9fZWJfZmxhZ3MoZmQsCisJCQkJCQllMi0+Y2xhc3MsIGUyLT5pbnN0YW5jZSk7CisK KwkJCWlmICghZ2VtX2hhc19yaW5nKGZkLCBfX2UyLT5mbGFncykpCisJCQkJY29udGludWU7CisK KwkJCV9fZTItPm5hbWUgPSBlMi0+bmFtZTsKKwkJCV9fZTItPmluc3RhbmNlID0gZTItPmluc3Rh bmNlOworCQkJX19lMi0+Y2xhc3MgPSBlMi0+Y2xhc3M7CisJCQllbmdpbmVfZGF0YS5uZW5naW5l cysrOworCQl9CisKKwl9IGVsc2UgaWYgKCFwYXJhbS5zaXplKSB7CisJCS8qIGVsc2UgaWYgY29u dGV4dCBkb2Vzbid0IGhhdmUgbWFwcGVkIGVuZ2luZXMgKi8KKwkJcXVlcnlfZW5naW5lX2xpc3Qo ZmQsICZlbmdpbmVfZGF0YSk7CisJCWN0eF9tYXBfZW5naW5lcyhmZCwgJmVuZ2luZV9kYXRhLCAm cGFyYW0pOworCisJfSBlbHNlIHsKKwkJLyogY29udGV4dCBoYXMgYSBsaXN0IG9mIG1hcHBlZCBl bmdpbmVzICovCisKKwkJZm9yIChpID0gMDsgaSA8IG5lbmdpbmVzOyBpKyspCisJCQlpbml0X2Vu Z2luZSgmZW5naW5lX2RhdGEuZW5naW5lc1tpXSwgTlVMTCwKKwkJCQkgICAgZW5naW5lcy0+Y2xh c3NfaW5zdGFuY2VbaV0uZW5naW5lX2NsYXNzLAorCQkJCSAgICBlbmdpbmVzLT5jbGFzc19pbnN0 YW5jZVtpXS5lbmdpbmVfaW5zdGFuY2UsCisJCQkJICAgIGkpOworCisJCWVuZ2luZV9kYXRhLm5l bmdpbmVzID0gaTsKKwl9CisKKwlyZXR1cm4gZW5naW5lX2RhdGE7Cit9CisKK3N0cnVjdCBpbnRl bF9leGVjdXRpb25fZW5naW5lMgorCSppbnRlbF9nZXRfY3VycmVudF9lbmdpbmUoc3RydWN0IGlu dGVsX2VuZ2luZV9kYXRhICplZCkKK3sKKwlyZXR1cm4gKGVkLT5uIDwgZWQtPm5lbmdpbmVzKSAm JiAhZWQtPmVycm9yID8KKwkJJmVkLT5lbmdpbmVzW2VkLT5uXSA6CisJCU5VTEw7Cit9CisKK3Zv aWQgaW50ZWxfbmV4dF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCkKK3sKKwll ZC0+bisrOworfQorCitzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIKKwkqaW50ZWxfZ2V0 X2N1cnJlbnRfcGh5c2ljYWxfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAqZWQpCit7 CisJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplOworCisJZm9yIChlID0gaW50ZWxf Z2V0X2N1cnJlbnRfZW5naW5lKGVkKTsKKwkgICAgIGUgJiYgIUlTX1BIWVNJQ0FMX0VOR0lORShl KTsKKwkgICAgIGludGVsX25leHRfZW5naW5lKGVkKSkKKwkJOworCisJcmV0dXJuIGU7Cit9CmRp ZmYgLS1naXQgYS9saWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmggYi9saWIvaTkxNS9nZW1f ZW5naW5lX3RvcG9sb2d5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw Li5mNjYyYTQ2MDFlY2QKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvaTkxNS9nZW1fZW5naW5lX3Rv cG9sb2d5LmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVs IENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0 d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks CisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5 LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxs IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo ZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs b3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg dGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgp IHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg b2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElF RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G UklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdI VCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBM SUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVS V0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg U09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJF LgorICovCisKKyNpZm5kZWYgR0VNX0VOR0lORV9UT1BPTE9HWV9ICisjZGVmaW5lIEdFTV9FTkdJ TkVfVE9QT0xPR1lfSAorCisjaW5jbHVkZSAiaWd0X2d0LmgiCisjaW5jbHVkZSAiaTkxNV9kcm0u aCIKKworc3RydWN0IGludGVsX2VuZ2luZV9kYXRhIHsKKwl1aW50MzJfdCBuZW5naW5lczsKKwl1 aW50MzJfdCBuOworCWludCBlcnJvcjsKKwlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIg ZW5naW5lc1tJOTE1X0VYRUNfUklOR19NQVNLICsgMV07Cit9OworCitzdHJ1Y3QgaW50ZWxfZW5n aW5lX2RhdGEgaW50ZWxfaW5pdF9lbmdpbmVfbGlzdChpbnQgZmQsIHVpbnQzMl90IGN0eF9pZCk7 CisKKy8qIGl0ZXJhdGlvbiBmdW5jdGlvbnMgKi8KK3N0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5n aW5lMgorCSppbnRlbF9nZXRfY3VycmVudF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9kYXRh ICplZCk7CitzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIKKwkqaW50ZWxfZ2V0X2N1cnJl bnRfcGh5c2ljYWxfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAqZWQpOwordm9pZCBp bnRlbF9uZXh0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgKmVkKTsKKworI2RlZmlu ZSBJU19QSFlTSUNBTF9FTkdJTkUoZTIpICgoZTItPmNsYXNzID49IDApICYmIChlMi0+aW5zdGFu Y2UgPj0gMCkpCisKKy8qIG5lZWRzIHRvIHJlcGxhY2UgIl9fZm9yX2VhY2hfZW5naW5lX2NsYXNz X2luc3RhbmNlIiB3aGVuIGNvbmZsaWN0cyBhcmUgZml4ZWQgKi8KKyNkZWZpbmUgX19mb3JfZWFj aF9zdGF0aWNfZW5naW5lKGVfXykgXAorCWZvciAoKGVfXykgPSBpbnRlbF9leGVjdXRpb25fZW5n aW5lczI7IChlX18pLT5uYW1lOyAoZV9fKSsrKQorCisjZGVmaW5lIGZvcl9lYWNoX2NvbnRleHRf ZW5naW5lKGZkX18sIGN0eF9fLCBlX18pIFwKKwlmb3IgKHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0 YSBpX18gPSBpbnRlbF9pbml0X2VuZ2luZV9saXN0KGZkX18sIGN0eF9fKTsgXAorCSAgICAgKChl X18pID0gaW50ZWxfZ2V0X2N1cnJlbnRfZW5naW5lKCZpX18pKTsgXAorCSAgICAgaW50ZWxfbmV4 dF9lbmdpbmUoJmlfXykpCisKKy8qIG5lZWRzIHRvIHJlcGxhY2UgImZvcl9lYWNoX3BoeXNpY2Fs X2VuZ2luZSIgd2hlbiBjb25mbGljdHMgYXJlIGZpeGVkICovCisjZGVmaW5lIF9fZm9yX2VhY2hf cGh5c2ljYWxfZW5naW5lX18oZmRfXywgZV9fKSBcCisJZm9yIChzdHJ1Y3QgaW50ZWxfZW5naW5l X2RhdGEgaV9fID0gaW50ZWxfaW5pdF9lbmdpbmVfbGlzdChmZF9fLCAwKTsgXAorCSAgICAgKChl X18pID0gaW50ZWxfZ2V0X2N1cnJlbnRfcGh5c2ljYWxfZW5naW5lKCZpX18pKTsgXAorCSAgICAg aW50ZWxfbmV4dF9lbmdpbmUoJmlfXykpCisKKyNlbmRpZiAvKiBHRU1fRU5HSU5FX1RPUE9MT0dZ X0ggKi8KZGlmZiAtLWdpdCBhL2xpYi9pZ3QuaCBiL2xpYi9pZ3QuaAppbmRleCA2NjU0YTY1OWMw NjIuLjAzZjE5Y2EyZGZiNiAxMDA2NDQKLS0tIGEvbGliL2lndC5oCisrKyBiL2xpYi9pZ3QuaApA QCAtNTMsNSArNTMsNiBAQAogI2luY2x1ZGUgIm1lZGlhX3NwaW4uaCIKICNpbmNsdWRlICJyZW5k ZXJjb3B5LmgiCiAjaW5jbHVkZSAiaTkxNS9nZW1fbW1hbi5oIgorI2luY2x1ZGUgImk5MTUvZ2Vt X2VuZ2luZV90b3BvbG9neS5oIgogCiAjZW5kaWYgLyogSUdUX0ggKi8KZGlmZiAtLWdpdCBhL2xp Yi9pZ3RfZ3QuaCBiL2xpYi9pZ3RfZ3QuaAppbmRleCA0NzVjMGIzYzNjYzYuLjJhNzAzMmQ0YjI2 MiAxMDA2NDQKLS0tIGEvbGliL2lndF9ndC5oCisrKyBiL2xpYi9pZ3RfZ3QuaApAQCAtOTUsNiAr OTUsNyBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyIHsKIAlj b25zdCBjaGFyICpuYW1lOwogCWludCBjbGFzczsKIAlpbnQgaW5zdGFuY2U7CisJdWludDY0X3Qg ZmxhZ3M7CiB9IGludGVsX2V4ZWN1dGlvbl9lbmdpbmVzMltdOwogCiB1bnNpZ25lZCBpbnQKQEAg LTExNCwxMSArMTE1LDQgQEAgdm9pZCBnZW1fcmVxdWlyZV9lbmdpbmUoaW50IGdlbV9mZCwKIAlp Z3RfcmVxdWlyZShnZW1faGFzX2VuZ2luZShnZW1fZmQsIGNsYXNzLCBpbnN0YW5jZSkpOwogfQog Ci0jZGVmaW5lIF9fZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKGVfXykgXAotCWZvciAo KGVfXykgPSBpbnRlbF9leGVjdXRpb25fZW5naW5lczI7IChlX18pLT5uYW1lOyAoZV9fKSsrKQot Ci0jZGVmaW5lIGZvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShmZF9fLCBlX18pIFwKLQlm b3IgKChlX18pID0gaW50ZWxfZXhlY3V0aW9uX2VuZ2luZXMyOyAoZV9fKS0+bmFtZTsgKGVfXykr KykgXAotCQlmb3JfaWYgKGdlbV9oYXNfZW5naW5lKChmZF9fKSwgKGVfXyktPmNsYXNzLCAoZV9f KS0+aW5zdGFuY2UpKQotCiAjZW5kaWYgLyogSUdUX0dUX0ggKi8KZGlmZiAtLWdpdCBhL2xpYi9t ZXNvbi5idWlsZCBiL2xpYi9tZXNvbi5idWlsZAppbmRleCAwZWI1NTg1ZDcyYjkuLjNjYzUyZjk3 YzhiZiAxMDA2NDQKLS0tIGEvbGliL21lc29uLmJ1aWxkCisrKyBiL2xpYi9tZXNvbi5idWlsZApA QCAtNSw2ICs1LDcgQEAgbGliX3NvdXJjZXMgPSBbCiAJJ2k5MTUvZ2VtX3N1Ym1pc3Npb24uYycs CiAJJ2k5MTUvZ2VtX3JpbmcuYycsCiAJJ2k5MTUvZ2VtX21tYW4uYycsCisJJ2k5MTUvZ2VtX2Vu Z2luZV90b3BvbG9neS5jJywKIAknaWd0X2NvbG9yX2VuY29kaW5nLmMnLAogCSdpZ3RfZGVidWdm cy5jJywKIAknaWd0X2RldmljZS5jJywKZGlmZiAtLWdpdCBhL3Rlc3RzL3BlcmZfcG11LmMgYi90 ZXN0cy9wZXJmX3BtdS5jCmluZGV4IDRmNTUyYmMyYWUyOC4uMGUxMGJjZmQxNjkzIDEwMDY0NAot LS0gYS90ZXN0cy9wZXJmX3BtdS5jCisrKyBiL3Rlc3RzL3BlcmZfcG11LmMKQEAgLTQzNCw3ICs0 MzQsNyBAQCBidXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhl Y3V0aW9uX2VuZ2luZTIgKmUsCiAKIAlpID0gMDsKIAlmZFswXSA9IC0xOwotCWZvcl9lYWNoX2Vu Z2luZV9jbGFzc19pbnN0YW5jZShnZW1fZmQsIGVfKSB7CisJZm9yX2VhY2hfY29udGV4dF9lbmdp bmUoZ2VtX2ZkLCAwLCBlXykgewogCQlpZiAoZSA9PSBlXykKIAkJCWJ1c3lfaWR4ID0gaTsKIApA QCAtNDk3LDcgKzQ5Nyw3IEBAIG1vc3RfYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29uc3Qg c3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCXVuc2lnbmVkIGludCBpZGxlX2lk eCwgaTsKIAogCWkgPSAwOwotCWZvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShnZW1fZmQs IGVfKSB7CisJZm9yX2VhY2hfY29udGV4dF9lbmdpbmUoZ2VtX2ZkLCAwLCBlXykgewogCQlpZiAo ZSA9PSBlXykKIAkJCWlkbGVfaWR4ID0gaTsKIAkJZWxzZSBpZiAoc3BpbikKQEAgLTU1NCw3ICs1 NTQsNyBAQCBhbGxfYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29uc3QgdW5zaWduZWQgaW50 IG51bV9lbmdpbmVzLAogCXVuc2lnbmVkIGludCBpOwogCiAJaSA9IDA7Ci0JZm9yX2VhY2hfZW5n aW5lX2NsYXNzX2luc3RhbmNlKGdlbV9mZCwgZSkgeworCWZvcl9lYWNoX2NvbnRleHRfZW5naW5l KGdlbV9mZCwgMCwgZSkgewogCQlpZiAoc3BpbikKIAkJCV9fc3VibWl0X3NwaW5fYmF0Y2goZ2Vt X2ZkLCBzcGluLCBlLCA2NCk7CiAJCWVsc2UKQEAgLTE2ODMsNyArMTY4Myw3IEBAIGlndF9tYWlu CiAJCWlndF9yZXF1aXJlX2dlbShmZCk7CiAJCWlndF9yZXF1aXJlKGk5MTVfdHlwZV9pZCgpID4g MCk7CiAKLQkJZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKGZkLCBlKQorCQlmb3JfZWFj aF9jb250ZXh0X2VuZ2luZShmZCwgMCwgZSkKIAkJCW51bV9lbmdpbmVzKys7CiAJfQogCkBAIC0x NjkzLDcgKzE2OTMsNyBAQCBpZ3RfbWFpbgogCWlndF9zdWJ0ZXN0KCJpbnZhbGlkLWluaXQiKQog CQlpbnZhbGlkX2luaXQoKTsKIAotCV9fZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKGUp IHsKKwlfX2Zvcl9lYWNoX3N0YXRpY19lbmdpbmUoZSkgewogCQljb25zdCB1bnNpZ25lZCBpbnQg cGN0W10gPSB7IDIsIDUwLCA5OCB9OwogCiAJCS8qKgpAQCAtMTg5Nyw3ICsxODk3LDcgQEAgaWd0 X21haW4KIAkJCWdlbV9xdWllc2NlbnRfZ3B1KGZkKTsKIAkJfQogCi0JCV9fZm9yX2VhY2hfZW5n aW5lX2NsYXNzX2luc3RhbmNlKGUpIHsKKwkJX19mb3JfZWFjaF9zdGF0aWNfZW5naW5lKGUpIHsK IAkJCWlndF9zdWJ0ZXN0X2dyb3VwIHsKIAkJCQlpZ3RfZml4dHVyZSB7CiAJCQkJCWdlbV9yZXF1 aXJlX2VuZ2luZShyZW5kZXJfZmQsCi0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaWd0LWRldg==