From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id E91306E7FE for ; Thu, 28 Mar 2019 19:22:14 +0000 (UTC) From: Andi Shyti Date: Thu, 28 Mar 2019 21:22:02 +0200 Message-Id: <20190328192206.1591-5-andi.shyti@intel.com> In-Reply-To: <20190328192206.1591-1-andi.shyti@intel.com> References: <20190328192206.1591-1-andi.shyti@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH v16 4/8] 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 dGVsLmNvbT4KLS0tCiBsaWIvTWFrZWZpbGUuc291cmNlcyAgICAgICAgICAgfCAgIDIgKwogbGli L2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jIHwgMjUyICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwogbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oIHwgIDY1ICsrKysrKysr KwogbGliL2lndC5oICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGxpYi9pZ3RfZ3QuaCAg ICAgICAgICAgICAgICAgICB8ICAgMiArCiBsaWIvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAg fCAgIDEgKwogNiBmaWxlcyBjaGFuZ2VkLCAzMjMgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUg MTAwNjQ0IGxpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGxpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuaAoKZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmls ZS5zb3VyY2VzIGIvbGliL01ha2VmaWxlLnNvdXJjZXMKaW5kZXggZTAwMzQ3Zjk0NWM1Li40MTMz MWMyZjJiODAgMTAwNjQ0Ci0tLSBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzCisrKyBiL2xpYi9NYWtl ZmlsZS5zb3VyY2VzCkBAIC0xMyw2ICsxMyw4IEBAIGxpYl9zb3VyY2VfbGlzdCA9CSAJXAogCWk5 MTUvZ2VtX3JpbmcuYwlcCiAJaTkxNS9nZW1fbW1hbi5jCVwKIAlpOTE1L2dlbV9tbWFuLmgJXAor CWk5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jCVwKKwlpOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3ku aAlcCiAJaTkxNV8zZC5oCQlcCiAJaTkxNV9yZWcuaAkJXAogCWk5MTVfcGNpaWRzLmgJCVwKZGlm ZiAtLWdpdCBhL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuYyBiL2xpYi9pOTE1L2dlbV9l bmdpbmVfdG9wb2xvZ3kuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LjRkMjcyMzdiY2Y2NAotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9w b2xvZ3kuYwpAQCAtMCwwICsxLDI1MiBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVs IENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0 d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks CisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5 LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxs IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo ZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs b3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg dGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgp IHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg b2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElF RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G UklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdI VCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBM SUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVS V0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg U09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJF LgorICovCisKKyNpbmNsdWRlICJkcm10ZXN0LmgiCisjaW5jbHVkZSAiaW9jdGxfd3JhcHBlcnMu aCIKKworI2luY2x1ZGUgImk5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oIgorCisvKgorICogTGlt aXQgd2hhdCB3ZSBzdXBwb3J0IGZvciBzaW1wbGljaXR5IGR1ZSBsaW1pdGF0aW9uIGluIGhvdyBt dWNoIHdlCisgKiBjYW4gYWRkcmVzcyB2aWEgZXhlY2J1ZjIuCisgKi8KKyNkZWZpbmUgR0VNX01B WF9FTkdJTkVTCQlJOTE1X0VYRUNfUklOR19NQVNLICsgMQorCisjZGVmaW5lIFNJWkVPRl9DVFhf UEFSQU0Jb2Zmc2V0b2Yoc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzLCBcCisJCQkJ CWNsYXNzX2luc3RhbmNlW0dFTV9NQVhfRU5HSU5FU10pCisjZGVmaW5lIFNJWkVPRl9RVUVSWQkJ b2Zmc2V0b2Yoc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2VuZ2luZV9pbmZvLCBcCisJCQkJCWVuZ2lu ZXNbR0VNX01BWF9FTkdJTkVTXSkKKworc3RhdGljIGludCBfX2dlbV9xdWVyeShpbnQgZmQsIHN0 cnVjdCBkcm1faTkxNV9xdWVyeSAqcSkKK3sKKwlpbnQgZXJyID0gMDsKKworCWlmIChpZ3RfaW9j dGwoZmQsIERSTV9JT0NUTF9JOTE1X1FVRVJZLCBxKSkKKwkJZXJyID0gLWVycm5vOworCisJZXJy bm8gPSAwOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyB2b2lkIGdlbV9xdWVyeShpbnQgZmQs IHN0cnVjdCBkcm1faTkxNV9xdWVyeSAqcSkKK3sKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX3F1ZXJ5 KGZkLCBxKSwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIHF1ZXJ5X2VuZ2luZXMoaW50IGZkLAorCQkJ ICBzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZW5naW5lX2luZm8gKnF1ZXJ5X2VuZ2luZXMsCisJCQkg IGludCBsZW5ndGgpCit7CisJc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2l0ZW0gaXRlbSA9IHsgfTsK KwlzdHJ1Y3QgZHJtX2k5MTVfcXVlcnkgcXVlcnkgPSB7IH07CisKKwlpdGVtLnF1ZXJ5X2lkID0g RFJNX0k5MTVfUVVFUllfRU5HSU5FX0lORk87CisJcXVlcnkuaXRlbXNfcHRyID0gdG9fdXNlcl9w b2ludGVyKCZpdGVtKTsKKwlxdWVyeS5udW1faXRlbXMgPSAxOworCWl0ZW0ubGVuZ3RoID0gbGVu Z3RoOworCisJaXRlbS5kYXRhX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihxdWVyeV9lbmdpbmVzKTsK KworCWdlbV9xdWVyeShmZCwgJnF1ZXJ5KTsKK30KKworc3RhdGljIHZvaWQgY3R4X21hcF9lbmdp bmVzKGludCBmZCwgc3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCwKKwkJCSAgICBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gKnBhcmFtKQoreworCXN0cnVjdCBpOTE1X2NvbnRl eHRfcGFyYW1fZW5naW5lcyAqZW5naW5lcyA9CisJCQkoc3RydWN0IGk5MTVfY29udGV4dF9wYXJh bV9lbmdpbmVzKikgcGFyYW0tPnZhbHVlOworCWludCBpID0gMDsKKworCWZvciAodHlwZW9mKGVu Z2luZXMtPmNsYXNzX2luc3RhbmNlWzBdKSAqcCA9CisJCQkmZW5naW5lcy0+Y2xhc3NfaW5zdGFu Y2VbMF07CisJCQkJCQlpIDwgZWQtPm5lbmdpbmVzOyBpKyssIHArKykgeworCQlwLT5lbmdpbmVf Y2xhc3MgPSBlZC0+ZW5naW5lc1tpXS5jbGFzczsKKwkJcC0+ZW5naW5lX2luc3RhbmNlID0gZWQt PmVuZ2luZXNbaV0uaW5zdGFuY2U7CisJfQorCisJcGFyYW0tPnNpemUgPSBvZmZzZXRvZih0eXBl b2YoKmVuZ2luZXMpLCBjbGFzc19pbnN0YW5jZVtpXSk7CisJZW5naW5lcy0+ZXh0ZW5zaW9ucyA9 IDA7CisKKwlnZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsIHBhcmFtKTsKK30KKworc3RhdGljIHZv aWQgaW5pdF9lbmdpbmUoc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplMiwKKwkJCWlu dCBjbGFzcywgaW50IGluc3RhbmNlLCB1aW50NjRfdCBmbGFncykKK3sKKwljb25zdCBzdHJ1Y3Qg aW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKl9fZTI7CisJc3RhdGljIGNvbnN0IGNoYXIgKnVua25v d25fbmFtZSA9ICJ1bmtub3duIiwKKwkJCSAgKnZpcnR1YWxfbmFtZSA9ICJ2aXJ0dWFsIjsKKwor CWUyLT5jbGFzcyAgICA9IGNsYXNzOworCWUyLT5pbnN0YW5jZSA9IGluc3RhbmNlOworCWUyLT5m bGFncyAgICA9IGZsYWdzOworCisJLyogZW5naW5lIGlzIGEgdmlydHVhbCBlbmdpbmUgKi8KKwlp ZiAoY2xhc3MgPT0gSTkxNV9FTkdJTkVfQ0xBU1NfSU5WQUxJRCkgeworCQllMi0+bmFtZSA9IHZp cnR1YWxfbmFtZTsKKwkJZTItPmlzX3ZpcnR1YWwgPSB0cnVlOworCQlyZXR1cm47CisJfQorCisJ X19mb3JfZWFjaF9zdGF0aWNfZW5naW5lKF9fZTIpCisJCWlmIChfX2UyLT5jbGFzcyA9PSBjbGFz cyAmJiBfX2UyLT5pbnN0YW5jZSA9PSBpbnN0YW5jZSkKKwkJCWJyZWFrOworCisJaWYgKF9fZTIt Pm5hbWUpIHsKKwkJZTItPm5hbWUgPSBfX2UyLT5uYW1lOworCX0gZWxzZSB7CisJCWlndF93YXJu KCJmb3VuZCB1bmtub3duIGVuZ2luZSAoJWQsICVkKSIsIGNsYXNzLCBpbnN0YW5jZSk7CisJCWUy LT5uYW1lID0gdW5rbm93bl9uYW1lOworCX0KKworCS8qIGp1c3QgdG8gcmVtYXJrIGl0ICovCisJ ZTItPmlzX3ZpcnR1YWwgPSBmYWxzZTsKK30KKworc3RhdGljIHZvaWQgcXVlcnlfZW5naW5lX2xp c3QoaW50IGZkLCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgKmVkKQoreworCXVpbnQ4X3QgYnVm ZltTSVpFT0ZfUVVFUlldID0geyB9OworCXN0cnVjdCBkcm1faTkxNV9xdWVyeV9lbmdpbmVfaW5m byAqcXVlcnlfZW5naW5lID0KKwkJCShzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZW5naW5lX2luZm8g KikgYnVmZjsKKwlpbnQgaTsKKworCXF1ZXJ5X2VuZ2luZXMoZmQsIHF1ZXJ5X2VuZ2luZSwgU0la RU9GX1FVRVJZKTsKKworCWZvciAoaSA9IDA7IGkgPCBxdWVyeV9lbmdpbmUtPm51bV9lbmdpbmVz OyBpKyspCisJCWluaXRfZW5naW5lKCZlZC0+ZW5naW5lc1tpXSwKKwkJCSAgICBxdWVyeV9lbmdp bmUtPmVuZ2luZXNbaV0uZW5naW5lX2NsYXNzLAorCQkJICAgIHF1ZXJ5X2VuZ2luZS0+ZW5naW5l c1tpXS5lbmdpbmVfaW5zdGFuY2UsIGkpOworCisJZWQtPm5lbmdpbmVzID0gcXVlcnlfZW5naW5l LT5udW1fZW5naW5lczsKK30KKworc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyCisqaW50 ZWxfZ2V0X2N1cnJlbnRfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAqZWQpCit7CisJ cmV0dXJuIGVkLT5jdXJyZW50X2VuZ2luZTsKK30KKwordm9pZCBpbnRlbF9uZXh0X2VuZ2luZShz dHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgKmVkKQoreworCWlmIChlZC0+biArIDEgPCBlZC0+bmVu Z2luZXMpIHsKKwkJZWQtPm4rKzsKKwkJZWQtPmN1cnJlbnRfZW5naW5lID0gJmVkLT5lbmdpbmVz W2VkLT5uXTsKKwl9IGVsc2UgeworCQllZC0+Y3VycmVudF9lbmdpbmUgPSBOVUxMOworCX0KK30K Kworc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyCisqaW50ZWxfZ2V0X2N1cnJlbnRfcGh5 c2ljYWxfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAqZWQpCit7CisJc3RydWN0IGlu dGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplOworCisJZm9yIChlID0gaW50ZWxfZ2V0X2N1cnJlbnRf ZW5naW5lKGVkKTsKKwkgICAgIGUgJiYgZS0+aXNfdmlydHVhbDsKKwkgICAgIGludGVsX25leHRf ZW5naW5lKGVkKSkKKwkJOworCisJZWQtPmN1cnJlbnRfcGh5c19lbmdpbmUgPSBlOworCisJcmV0 dXJuIGU7Cit9CisKK3N0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSBpbnRlbF9pbml0X2VuZ2luZV9s aXN0KGludCBmZCwgdWludDMyX3QgY3R4X2lkKQoreworCUk5MTVfREVGSU5FX0NPTlRFWFRfUEFS QU1fRU5HSU5FUyhlbmdpbmVzLCBHRU1fTUFYX0VOR0lORVMpOworCXN0cnVjdCBpbnRlbF9lbmdp bmVfZGF0YSBlbmdpbmVfZGF0YSA9IHsgfTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRf cGFyYW0gcGFyYW0gPSB7CisJCS5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTLAor CQkuY3R4X2lkID0gY3R4X2lkLAorCQkuc2l6ZSA9IFNJWkVPRl9DVFhfUEFSQU0sCisJCS52YWx1 ZSA9IHRvX3VzZXJfcG9pbnRlcigmZW5naW5lcyksCisJfTsKKwlpbnQgaTsKKwl1bnNpZ25lZCBp bnQgbmVuZ2luZXM7CisKKwlpZihfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJnBhcmFtKSkg eworCQkvKiBpZiBrZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCBlbmdpbmUvY29udGV4dCBtYXBwaW5n ICovCisJCWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZTI7CisKKwkJaWd0 X2RlYnVnKCJ1c2luZyBwcmUtYWxsb2NhdGVkIGVuZ2luZSBsaXN0XG4iKTsKKworCQlfX2Zvcl9l YWNoX3N0YXRpY19lbmdpbmUoZTIpIHsKKwkJCXN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5l MiAqX19lMjsKKworCQkJX19lMiA9ICZlbmdpbmVfZGF0YS5lbmdpbmVzW2VuZ2luZV9kYXRhLm5l bmdpbmVzXTsKKwkJCV9fZTItPmZsYWdzID0gZ2VtX2NsYXNzX2luc3RhbmNlX3RvX2ViX2ZsYWdz KGZkLAorCQkJCQkJZTItPmNsYXNzLCBlMi0+aW5zdGFuY2UpOworCisJCQlpZiAoIWdlbV9oYXNf cmluZyhmZCwgX19lMi0+ZmxhZ3MpKQorCQkJCWNvbnRpbnVlOworCisJCQlfX2UyLT5uYW1lICAg ICAgID0gZTItPm5hbWU7CisJCQlfX2UyLT5pbnN0YW5jZSAgID0gZTItPmluc3RhbmNlOworCQkJ X19lMi0+Y2xhc3MgICAgICA9IGUyLT5jbGFzczsKKwkJCV9fZTItPmlzX3ZpcnR1YWwgPSBmYWxz ZTsKKworCQkJZW5naW5lX2RhdGEubmVuZ2luZXMrKzsKKwkJfQorCQlnb3RvIGV4aXQ7CisJfQor CisJbmVuZ2luZXMgPSBwYXJhbS5zaXplID4gc2l6ZW9mKHN0cnVjdCBpOTE1X2NvbnRleHRfcGFy YW1fZW5naW5lcykgPworCQkgICAocGFyYW0uc2l6ZSAtIHNpemVvZihzdHJ1Y3QgaTkxNV9jb250 ZXh0X3BhcmFtX2VuZ2luZXMpKSAvCisJCSAgIHNpemVvZihlbmdpbmVzLmNsYXNzX2luc3RhbmNl WzBdKSA6CisJCSAgIDA7CisKKwlpZ3RfYXNzZXJ0X2YobmVuZ2luZXMgPCBHRU1fTUFYX0VOR0lO RVMsICJ1bnN1cHBvcnRlZCBlbmdpbmUgY291bnRcbiIpOworCisJaWYgKCFwYXJhbS5zaXplKSB7 CisJCS8qIGVsc2UgaWYgY29udGV4dCBkb2Vzbid0IGhhdmUgbWFwcGVkIGVuZ2luZXMgKi8KKwkJ cXVlcnlfZW5naW5lX2xpc3QoZmQsICZlbmdpbmVfZGF0YSk7CisJCWN0eF9tYXBfZW5naW5lcyhm ZCwgJmVuZ2luZV9kYXRhLCAmcGFyYW0pOworCisJfSBlbHNlIHsKKwkJLyogY29udGV4dCBoYXMg YSBsaXN0IG9mIG1hcHBlZCBlbmdpbmVzICovCisKKwkJZm9yIChpID0gMDsgaSA8IG5lbmdpbmVz OyBpKyspCisJCQlpbml0X2VuZ2luZSgmZW5naW5lX2RhdGEuZW5naW5lc1tpXSwKKwkJCQkgICAg ZW5naW5lcy5jbGFzc19pbnN0YW5jZVtpXS5lbmdpbmVfY2xhc3MsCisJCQkJICAgIGVuZ2luZXMu Y2xhc3NfaW5zdGFuY2VbaV0uZW5naW5lX2luc3RhbmNlLAorCQkJCSAgICBpKTsKKworCQllbmdp bmVfZGF0YS5uZW5naW5lcyA9IGk7CisJfQorCitleGl0OgorCWVuZ2luZV9kYXRhLmN1cnJlbnRf ZW5naW5lID0gJmVuZ2luZV9kYXRhLmVuZ2luZXNbMF07CisJZW5naW5lX2RhdGEuY3VycmVudF9w aHlzX2VuZ2luZSA9CisJCWludGVsX2dldF9jdXJyZW50X3BoeXNpY2FsX2VuZ2luZSgmZW5naW5l X2RhdGEpOworCisJcmV0dXJuIGVuZ2luZV9kYXRhOworfQorCitib29sIGdlbV9oYXNfZW5naW5l X3RvcG9sb2d5KGludCBmZCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0g cGFyYW0gPSB7CisJCS5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTLAorCX07CisK KwlyZXR1cm4gIV9fZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZkLCAmcGFyYW0pOworfQpkaWZmIC0t Z2l0IGEvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oIGIvbGliL2k5MTUvZ2VtX2VuZ2lu ZV90b3BvbG9neS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDMy NzU3MzdhZGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9n eS5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jw b3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hh cmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUg YW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICog dG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdp dGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVy Z2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3Bp ZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAq IFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5n IGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg cGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFs bCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo ZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElO Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF TUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9M REVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklM SVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0Us IEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAq LworCisjaWZuZGVmIEdFTV9FTkdJTkVfVE9QT0xPR1lfSAorI2RlZmluZSBHRU1fRU5HSU5FX1RP UE9MT0dZX0gKKworI2luY2x1ZGUgImlndF9ndC5oIgorI2luY2x1ZGUgImk5MTVfZHJtLmgiCisK K3N0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSB7CisJdWludDMyX3QgbmVuZ2luZXM7CisJdWludDMy X3QgbjsKKwlpbnQgZXJyb3I7CisJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpjdXJy ZW50X2VuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmN1cnJlbnRfcGh5 c19lbmdpbmU7CisJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyIGVuZ2luZXNbSTkxNV9F WEVDX1JJTkdfTUFTSyArIDFdOworfTsKKworYm9vbCBnZW1faGFzX2VuZ2luZV90b3BvbG9neShp bnQgZmQpOworc3RydWN0IGludGVsX2VuZ2luZV9kYXRhIGludGVsX2luaXRfZW5naW5lX2xpc3Qo aW50IGZkLCB1aW50MzJfdCBjdHhfaWQpOworCisvKiBpdGVyYXRpb24gZnVuY3Rpb25zICovCitz dHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIKKyppbnRlbF9nZXRfY3VycmVudF9lbmdpbmUo c3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCk7CisKK3N0cnVjdCBpbnRlbF9leGVjdXRpb25f ZW5naW5lMgorKmludGVsX2dldF9jdXJyZW50X3BoeXNpY2FsX2VuZ2luZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2RhdGEgKmVkKTsKKwordm9pZCBpbnRlbF9uZXh0X2VuZ2luZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2RhdGEgKmVkKTsKKworI2RlZmluZSBfX2Zvcl9lYWNoX3N0YXRpY19lbmdpbmUoZV9f KSBcCisJZm9yICgoZV9fKSA9IGludGVsX2V4ZWN1dGlvbl9lbmdpbmVzMjsgKGVfXyktPm5hbWU7 IChlX18pKyspCisKKyNkZWZpbmUgZm9yX2VhY2hfY29udGV4dF9lbmdpbmUoZmRfXywgY3R4X18s IGVfXykgXAorCWZvciAoc3RydWN0IGludGVsX2VuZ2luZV9kYXRhIGlfXyA9IGludGVsX2luaXRf ZW5naW5lX2xpc3QoZmRfXywgY3R4X18pOyBcCisJICAgICAoKGVfXykgPSBpbnRlbF9nZXRfY3Vy cmVudF9lbmdpbmUoJmlfXykpOyBcCisJICAgICBpbnRlbF9uZXh0X2VuZ2luZSgmaV9fKSkKKwor LyogbmVlZHMgdG8gcmVwbGFjZSAiZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lIiB3aGVuIGNvbmZs aWN0cyBhcmUgZml4ZWQgKi8KKyNkZWZpbmUgX19mb3JfZWFjaF9waHlzaWNhbF9lbmdpbmUoZmRf XywgZV9fKSBcCisJZm9yIChzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgaV9fID0gaW50ZWxfaW5p dF9lbmdpbmVfbGlzdChmZF9fLCAwKTsgXAorCSAgICAgKChlX18pID0gaW50ZWxfZ2V0X2N1cnJl bnRfcGh5c2ljYWxfZW5naW5lKCZpX18pKTsgXAorCSAgICAgaW50ZWxfbmV4dF9lbmdpbmUoJmlf XykpCisKKyNlbmRpZiAvKiBHRU1fRU5HSU5FX1RPUE9MT0dZX0ggKi8KZGlmZiAtLWdpdCBhL2xp Yi9pZ3QuaCBiL2xpYi9pZ3QuaAppbmRleCA2NjU0YTY1OWMwNjIuLjAzZjE5Y2EyZGZiNiAxMDA2 NDQKLS0tIGEvbGliL2lndC5oCisrKyBiL2xpYi9pZ3QuaApAQCAtNTMsNSArNTMsNiBAQAogI2lu Y2x1ZGUgIm1lZGlhX3NwaW4uaCIKICNpbmNsdWRlICJyZW5kZXJjb3B5LmgiCiAjaW5jbHVkZSAi aTkxNS9nZW1fbW1hbi5oIgorI2luY2x1ZGUgImk5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oIgog CiAjZW5kaWYgLyogSUdUX0ggKi8KZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZ3QuaCBiL2xpYi9pZ3Rf Z3QuaAppbmRleCA0NzVjMGIzYzNjYzYuLjUyYjJmMWVhOTVhNSAxMDA2NDQKLS0tIGEvbGliL2ln dF9ndC5oCisrKyBiL2xpYi9pZ3RfZ3QuaApAQCAtOTUsNiArOTUsOCBAQCBleHRlcm4gY29uc3Qg c3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyIHsKIAljb25zdCBjaGFyICpuYW1lOwogCWlu dCBjbGFzczsKIAlpbnQgaW5zdGFuY2U7CisJdWludDY0X3QgZmxhZ3M7CisJYm9vbCBpc192aXJ0 dWFsOwogfSBpbnRlbF9leGVjdXRpb25fZW5naW5lczJbXTsKIAogdW5zaWduZWQgaW50CmRpZmYg LS1naXQgYS9saWIvbWVzb24uYnVpbGQgYi9saWIvbWVzb24uYnVpbGQKaW5kZXggODlkZTA2ZTY5 MjRhLi45M2MwMWRhYTQyMjIgMTAwNjQ0Ci0tLSBhL2xpYi9tZXNvbi5idWlsZAorKysgYi9saWIv bWVzb24uYnVpbGQKQEAgLTUsNiArNSw3IEBAIGxpYl9zb3VyY2VzID0gWwogCSdpOTE1L2dlbV9z dWJtaXNzaW9uLmMnLAogCSdpOTE1L2dlbV9yaW5nLmMnLAogCSdpOTE1L2dlbV9tbWFuLmMnLAor CSdpOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuYycsCiAJJ2lndF9jb2xvcl9lbmNvZGluZy5jJywK IAknaWd0X2RlYnVnZnMuYycsCiAJJ2lndF9kZXZpY2UuYycsCi0tIAoyLjIwLjEKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBs aXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==