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 3F4C86E7C9 for ; Mon, 13 May 2019 17:56:21 +0000 (UTC) From: Andi Shyti Date: Mon, 13 May 2019 20:56:01 +0300 Message-Id: <20190513175613.2507-3-andi.shyti@intel.com> In-Reply-To: <20190513175613.2507-1-andi.shyti@intel.com> References: <20190513175613.2507-1-andi.shyti@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH v24 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 dGVsLmNvbT4KLS0tCiBsaWIvTWFrZWZpbGUuc291cmNlcyAgICAgICAgICAgfCAgIDIgKwogbGli L2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jIHwgMjgyICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwogbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oIHwgIDc5ICsrKysrKysr KwogbGliL2lndC5oICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGxpYi9pZ3RfZ3QuaCAg ICAgICAgICAgICAgICAgICB8ICAgMiArCiBsaWIvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAg fCAgIDEgKwogNiBmaWxlcyBjaGFuZ2VkLCAzNjcgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUg MTAwNjQ0IGxpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGxpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuaAoKZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmls ZS5zb3VyY2VzIGIvbGliL01ha2VmaWxlLnNvdXJjZXMKaW5kZXggOTc2ODU4MjM4OTRiLi5lZjk2 YmQwOWQwNDkgMTAwNjQ0Ci0tLSBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzCisrKyBiL2xpYi9NYWtl ZmlsZS5zb3VyY2VzCkBAIC0xMyw2ICsxMyw4IEBAIGxpYl9zb3VyY2VfbGlzdCA9CSAJXAogCWk5 MTUvZ2VtX3JpbmcuYwlcCiAJaTkxNS9nZW1fbW1hbi5jCVwKIAlpOTE1L2dlbV9tbWFuLmgJXAor CWk5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jCVwKKwlpOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3ku aAlcCiAJaTkxNV8zZC5oCQlcCiAJaTkxNV9yZWcuaAkJXAogCWk5MTVfcGNpaWRzLmgJCVwKZGlm ZiAtLWdpdCBhL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuYyBiL2xpYi9pOTE1L2dlbV9l bmdpbmVfdG9wb2xvZ3kuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LjdhNGExNzYwNWQzMgotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9w b2xvZ3kuYwpAQCAtMCwwICsxLDI4MiBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVs IENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0 d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks CisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5 LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxs IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo ZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs b3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg dGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgp IHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg b2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElF RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G UklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdI VCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBM SUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVS V0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg U09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJF LgorICovCisKKyNpbmNsdWRlICJkcm10ZXN0LmgiCisjaW5jbHVkZSAiaW9jdGxfd3JhcHBlcnMu aCIKKworI2luY2x1ZGUgImk5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oIgorCisjZGVmaW5lIERF RklORV9DT05URVhUX1BBUkFNKGVfXywgcF9fLCBjX18sIE5fXykgXAorCQlJOTE1X0RFRklORV9D T05URVhUX1BBUkFNX0VOR0lORVMoZV9fLCBOX18pOyBcCisJCXN0cnVjdCBkcm1faTkxNV9nZW1f Y29udGV4dF9wYXJhbSBwX18gPSB7IFwKKwkJCS5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9F TkdJTkVTLCBcCisJCQkuY3R4X2lkID0gY19fLCBcCisJCQkuc2l6ZSA9IFNJWkVPRl9DVFhfUEFS QU0sIFwKKwkJCS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcigmZV9fKSwgXAorCQl9CisKK3N0YXRp YyBpbnQgX19nZW1fcXVlcnkoaW50IGZkLCBzdHJ1Y3QgZHJtX2k5MTVfcXVlcnkgKnEpCit7CisJ aW50IGVyciA9IDA7CisKKwlpZiAoaWd0X2lvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9RVUVSWSwg cSkpCisJCWVyciA9IC1lcnJubzsKKworCWVycm5vID0gMDsKKwlyZXR1cm4gZXJyOworfQorCitz dGF0aWMgdm9pZCBnZW1fcXVlcnkoaW50IGZkLCBzdHJ1Y3QgZHJtX2k5MTVfcXVlcnkgKnEpCit7 CisJaWd0X2Fzc2VydF9lcShfX2dlbV9xdWVyeShmZCwgcSksIDApOworfQorCitzdGF0aWMgdm9p ZCBxdWVyeV9lbmdpbmVzKGludCBmZCwKKwkJCSAgc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2VuZ2lu ZV9pbmZvICpxdWVyeV9lbmdpbmVzLAorCQkJICBpbnQgbGVuZ3RoKQoreworCXN0cnVjdCBkcm1f aTkxNV9xdWVyeV9pdGVtIGl0ZW0gPSB7IH07CisJc3RydWN0IGRybV9pOTE1X3F1ZXJ5IHF1ZXJ5 ID0geyB9OworCisJaXRlbS5xdWVyeV9pZCA9IERSTV9JOTE1X1FVRVJZX0VOR0lORV9JTkZPOwor CXF1ZXJ5Lml0ZW1zX3B0ciA9IHRvX3VzZXJfcG9pbnRlcigmaXRlbSk7CisJcXVlcnkubnVtX2l0 ZW1zID0gMTsKKwlpdGVtLmxlbmd0aCA9IGxlbmd0aDsKKworCWl0ZW0uZGF0YV9wdHIgPSB0b191 c2VyX3BvaW50ZXIocXVlcnlfZW5naW5lcyk7CisKKwlnZW1fcXVlcnkoZmQsICZxdWVyeSk7Cit9 CisKK3N0YXRpYyB2b2lkIGN0eF9tYXBfZW5naW5lcyhpbnQgZmQsIHN0cnVjdCBpbnRlbF9lbmdp bmVfZGF0YSAqZWQsCisJCQkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtICpw YXJhbSkKK3sKKwlzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMgKmVuZ2luZXMgPQor CQkJKHN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcyAqKSBwYXJhbS0+dmFsdWU7CisJ aW50IGkgPSAwOworCisJZm9yICh0eXBlb2YoZW5naW5lcy0+ZW5naW5lc1swXSkgKnAgPQorCSAg ICAgJmVuZ2luZXMtPmVuZ2luZXNbMF07CisJICAgICBpIDwgZWQtPm5lbmdpbmVzOyBpKyssIHAr KykgeworCQlwLT5lbmdpbmVfY2xhc3MgPSBlZC0+ZW5naW5lc1tpXS5jbGFzczsKKwkJcC0+ZW5n aW5lX2luc3RhbmNlID0gZWQtPmVuZ2luZXNbaV0uaW5zdGFuY2U7CisJfQorCisJcGFyYW0tPnNp emUgPSBvZmZzZXRvZih0eXBlb2YoKmVuZ2luZXMpLCBlbmdpbmVzW2ldKTsKKwllbmdpbmVzLT5l eHRlbnNpb25zID0gMDsKKworCWdlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgcGFyYW0pOworfQor CitzdGF0aWMgdm9pZCBpbml0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIg KmUyLAorCQkJaW50IGNsYXNzLCBpbnQgaW5zdGFuY2UsIHVpbnQ2NF90IGZsYWdzKQoreworCWNv bnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqX19lMjsKKwlzdGF0aWMgY29uc3Qg Y2hhciAqdW5rbm93bl9uYW1lID0gInVua25vd24iLAorCQkJICAqdmlydHVhbF9uYW1lID0gInZp cnR1YWwiOworCisJZTItPmNsYXNzICAgID0gY2xhc3M7CisJZTItPmluc3RhbmNlID0gaW5zdGFu Y2U7CisJZTItPmZsYWdzICAgID0gZmxhZ3M7CisKKwkvKiBlbmdpbmUgaXMgYSB2aXJ0dWFsIGVu Z2luZSAqLworCWlmIChjbGFzcyA9PSBJOTE1X0VOR0lORV9DTEFTU19JTlZBTElEKSB7CisJCWUy LT5uYW1lID0gdmlydHVhbF9uYW1lOworCQllMi0+aXNfdmlydHVhbCA9IHRydWU7CisJCXJldHVy bjsKKwl9CisKKwlfX2Zvcl9lYWNoX3N0YXRpY19lbmdpbmUoX19lMikKKwkJaWYgKF9fZTItPmNs YXNzID09IGNsYXNzICYmIF9fZTItPmluc3RhbmNlID09IGluc3RhbmNlKQorCQkJYnJlYWs7CisK KwlpZiAoX19lMi0+bmFtZSkgeworCQllMi0+bmFtZSA9IF9fZTItPm5hbWU7CisJfSBlbHNlIHsK KwkJaWd0X3dhcm4oImZvdW5kIHVua25vd24gZW5naW5lICglZCwgJWQpIiwgY2xhc3MsIGluc3Rh bmNlKTsKKwkJZTItPm5hbWUgPSB1bmtub3duX25hbWU7CisJfQorCisJLyoganVzdCB0byByZW1h cmsgaXQgKi8KKwllMi0+aXNfdmlydHVhbCA9IGZhbHNlOworfQorCitzdGF0aWMgdm9pZCBxdWVy eV9lbmdpbmVfbGlzdChpbnQgZmQsIHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAqZWQpCit7CisJ dWludDhfdCBidWZmW1NJWkVPRl9RVUVSWV0gPSB7IH07CisJc3RydWN0IGRybV9pOTE1X3F1ZXJ5 X2VuZ2luZV9pbmZvICpxdWVyeV9lbmdpbmUgPQorCQkJKHN0cnVjdCBkcm1faTkxNV9xdWVyeV9l bmdpbmVfaW5mbyAqKSBidWZmOworCWludCBpOworCisJcXVlcnlfZW5naW5lcyhmZCwgcXVlcnlf ZW5naW5lLCBTSVpFT0ZfUVVFUlkpOworCisJZm9yIChpID0gMDsgaSA8IHF1ZXJ5X2VuZ2luZS0+ bnVtX2VuZ2luZXM7IGkrKykKKwkJaW5pdF9lbmdpbmUoJmVkLT5lbmdpbmVzW2ldLAorCQkJICAg IHF1ZXJ5X2VuZ2luZS0+ZW5naW5lc1tpXS5lbmdpbmUuZW5naW5lX2NsYXNzLAorCQkJICAgIHF1 ZXJ5X2VuZ2luZS0+ZW5naW5lc1tpXS5lbmdpbmUuZW5naW5lX2luc3RhbmNlLCBpKTsKKworCWVk LT5uZW5naW5lcyA9IHF1ZXJ5X2VuZ2luZS0+bnVtX2VuZ2luZXM7Cit9CisKK3N0cnVjdCBpbnRl bF9leGVjdXRpb25fZW5naW5lMiAqCitpbnRlbF9nZXRfY3VycmVudF9lbmdpbmUoc3RydWN0IGlu dGVsX2VuZ2luZV9kYXRhICplZCkKK3sKKwlpZiAoIWVkLT5uKQorCQllZC0+Y3VycmVudF9lbmdp bmUgPSAmZWQtPmVuZ2luZXNbMF07CisJZWxzZSBpZiAoZWQtPm4gPj0gZWQtPm5lbmdpbmVzKQor CQllZC0+Y3VycmVudF9lbmdpbmUgPSBOVUxMOworCisJcmV0dXJuIGVkLT5jdXJyZW50X2VuZ2lu ZTsKK30KKwordm9pZCBpbnRlbF9uZXh0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEg KmVkKQoreworCWlmIChlZC0+biArIDEgPCBlZC0+bmVuZ2luZXMpIHsKKwkJZWQtPm4rKzsKKwkJ ZWQtPmN1cnJlbnRfZW5naW5lID0gJmVkLT5lbmdpbmVzW2VkLT5uXTsKKwl9IGVsc2UgeworCQll ZC0+biA9IGVkLT5uZW5naW5lczsKKwkJZWQtPmN1cnJlbnRfZW5naW5lID0gTlVMTDsKKwl9Cit9 CisKK3N0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqCitpbnRlbF9nZXRfY3VycmVudF9w aHlzaWNhbF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCkKK3sKKwlzdHJ1Y3Qg aW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmU7CisKKwlmb3IgKGUgPSBpbnRlbF9nZXRfY3VycmVu dF9lbmdpbmUoZWQpOworCSAgICAgZSAmJiBlLT5pc192aXJ0dWFsOworCSAgICAgaW50ZWxfbmV4 dF9lbmdpbmUoZWQpKQorCQk7CisKKwlyZXR1cm4gZTsKK30KKworc3RhdGljIGludCBnZW1fdG9w b2xvZ3lfZ2V0X3BhcmFtKGludCBmZCwKKwkJCQkgIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4 dF9wYXJhbSAqcCkKK3sKKwlpZiAoaWd0X29ubHlfbGlzdF9zdWJ0ZXN0cygpKQorCQlyZXR1cm4g LUVOT0RFVjsKKworCWlmIChfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgcCkpCisJCXJldHVy biAtMTsgLyogdXNpbmcgZGVmYXVsdCBlbmdpbmUgbWFwICovCisKKwlpZiAoIXAtPnNpemUpCisJ CXJldHVybiAwOworCisJcC0+c2l6ZSA9IChwLT5zaXplIC0gc2l6ZW9mKHN0cnVjdCBpOTE1X2Nv bnRleHRfcGFyYW1fZW5naW5lcykpIC8KKwkJICAob2Zmc2V0b2Yoc3RydWN0IGk5MTVfY29udGV4 dF9wYXJhbV9lbmdpbmVzLAorCQkJICAgIGVuZ2luZXNbMV0pIC0KKwkJICBzaXplb2Yoc3RydWN0 IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzKSk7CisKKwlpZ3RfYXNzZXJ0X2YocC0+c2l6ZSA8 PSBHRU1fTUFYX0VOR0lORVMsICJ1bnN1cHBvcnRlZCBlbmdpbmUgY291bnRcbiIpOworCisJcmV0 dXJuIDA7Cit9CisKK3N0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSBpbnRlbF9pbml0X2VuZ2luZV9s aXN0KGludCBmZCwgdWludDMyX3QgY3R4X2lkKQoreworCURFRklORV9DT05URVhUX1BBUkFNKGVu Z2luZXMsIHBhcmFtLCBjdHhfaWQsIEdFTV9NQVhfRU5HSU5FUyk7CisJc3RydWN0IGludGVsX2Vu Z2luZV9kYXRhIGVuZ2luZV9kYXRhID0geyB9OworCWludCBpOworCisJaWYgKGdlbV90b3BvbG9n eV9nZXRfcGFyYW0oZmQsICZwYXJhbSkpIHsKKwkJLyogaWYga2VybmVsIGRvZXMgbm90IHN1cHBv cnQgZW5naW5lL2NvbnRleHQgbWFwcGluZyAqLworCQljb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0 aW9uX2VuZ2luZTIgKmUyOworCisJCWlndF9kZWJ1ZygidXNpbmcgcHJlLWFsbG9jYXRlZCBlbmdp bmUgbGlzdFxuIik7CisKKwkJX19mb3JfZWFjaF9zdGF0aWNfZW5naW5lKGUyKSB7CisJCQlzdHJ1 Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKl9fZTIgPQorCQkJCSZlbmdpbmVfZGF0YS5lbmdp bmVzW2VuZ2luZV9kYXRhLm5lbmdpbmVzXTsKKworCQkJaWYgKCFpZ3Rfb25seV9saXN0X3N1YnRl c3RzKCkpIHsKKwkJCQlfX2UyLT5mbGFncyA9IGdlbV9jbGFzc19pbnN0YW5jZV90b19lYl9mbGFn cyhmZCwKKwkJCQkJCWUyLT5jbGFzcywgZTItPmluc3RhbmNlKTsKKworCQkJCWlmICghZ2VtX2hh c19yaW5nKGZkLCBfX2UyLT5mbGFncykpCisJCQkJCWNvbnRpbnVlOworCQkJfSBlbHNlIHsKKwkJ CQlfX2UyLT5mbGFncyA9IC0xOyAvKiAweGZmZi4uLiAqLworCQkJfQorCisJCQlfX2UyLT5uYW1l ICAgICAgID0gZTItPm5hbWU7CisJCQlfX2UyLT5pbnN0YW5jZSAgID0gZTItPmluc3RhbmNlOwor CQkJX19lMi0+Y2xhc3MgICAgICA9IGUyLT5jbGFzczsKKwkJCV9fZTItPmlzX3ZpcnR1YWwgPSBm YWxzZTsKKworCQkJZW5naW5lX2RhdGEubmVuZ2luZXMrKzsKKwkJfQorCQlyZXR1cm4gZW5naW5l X2RhdGE7CisJfQorCisJaWYgKCFwYXJhbS5zaXplKSB7CisJCXF1ZXJ5X2VuZ2luZV9saXN0KGZk LCAmZW5naW5lX2RhdGEpOworCQljdHhfbWFwX2VuZ2luZXMoZmQsICZlbmdpbmVfZGF0YSwgJnBh cmFtKTsKKwl9IGVsc2UgeworCQlmb3IgKGkgPSAwOyBpIDwgcGFyYW0uc2l6ZTsgaSsrKQorCQkJ aW5pdF9lbmdpbmUoJmVuZ2luZV9kYXRhLmVuZ2luZXNbaV0sCisJCQkJICAgIGVuZ2luZXMuZW5n aW5lc1tpXS5lbmdpbmVfY2xhc3MsCisJCQkJICAgIGVuZ2luZXMuZW5naW5lc1tpXS5lbmdpbmVf aW5zdGFuY2UsCisJCQkJICAgIGkpOworCisJCWVuZ2luZV9kYXRhLm5lbmdpbmVzID0gaTsKKwl9 CisKKwlyZXR1cm4gZW5naW5lX2RhdGE7Cit9CisKK2ludCBnZW1fY29udGV4dF9sb29rdXBfZW5n aW5lKGludCBmZCwgdWludDY0X3QgZW5naW5lLCB1aW50MzJfdCBjdHhfaWQsCisJCQkgICAgICBz dHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCit7CisJREVGSU5FX0NPTlRFWFRfUEFS QU0oZW5naW5lcywgcGFyYW0sIGN0eF9pZCwgR0VNX01BWF9FTkdJTkVTKTsKKworCWlmICghZSB8 fCBnZW1fdG9wb2xvZ3lfZ2V0X3BhcmFtKGZkLCAmcGFyYW0pIHx8ICFwYXJhbS5zaXplKQorCQly ZXR1cm4gLUVJTlZBTDsKKworCWUtPmNsYXNzID0gZW5naW5lcy5lbmdpbmVzW2VuZ2luZV0uZW5n aW5lX2NsYXNzOworCWUtPmluc3RhbmNlID0gZW5naW5lcy5lbmdpbmVzW2VuZ2luZV0uZW5naW5l X2luc3RhbmNlOworCisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgZ2VtX2NvbnRleHRfc2V0X2FsbF9l bmdpbmVzKGludCBmZCwgdWludDMyX3QgY3R4KQoreworCURFRklORV9DT05URVhUX1BBUkFNKGVu Z2luZXMsIHBhcmFtLCBjdHgsIEdFTV9NQVhfRU5HSU5FUyk7CisJc3RydWN0IGludGVsX2VuZ2lu ZV9kYXRhIGVuZ2luZV9kYXRhID0geyB9OworCisJaWYgKCFnZW1fdG9wb2xvZ3lfZ2V0X3BhcmFt KGZkLCAmcGFyYW0pICYmICFwYXJhbS5zaXplKSB7CisJCXF1ZXJ5X2VuZ2luZV9saXN0KGZkLCAm ZW5naW5lX2RhdGEpOworCQljdHhfbWFwX2VuZ2luZXMoZmQsICZlbmdpbmVfZGF0YSwgJnBhcmFt KTsKKwl9Cit9CisKK2Jvb2wgZ2VtX2hhc19lbmdpbmVfdG9wb2xvZ3koaW50IGZkKQoreworCXN0 cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSBwYXJhbSA9IHsKKwkJLnBhcmFtID0gSTkx NV9DT05URVhUX1BBUkFNX0VOR0lORVMsCisJfTsKKworCXJldHVybiAhX19nZW1fY29udGV4dF9n ZXRfcGFyYW0oZmQsICZwYXJhbSk7Cit9CmRpZmYgLS1naXQgYS9saWIvaTkxNS9nZW1fZW5naW5l X3RvcG9sb2d5LmggYi9saWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iNDAyMDRiMTUwNjgKLS0tIC9kZXYvbnVsbAor KysgYi9saWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmgKQEAgLTAsMCArMSw3OSBAQAorLyoK KyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lv biBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWlu aW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0 aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3 aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUg cmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwg c3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0 byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRv IGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUg YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVk aW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3Bp ZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBU SEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg S0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBU TyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwK KyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENM QUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9O IE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9G IE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBE RUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNpZm5kZWYgR0VNX0VOR0lORV9U T1BPTE9HWV9ICisjZGVmaW5lIEdFTV9FTkdJTkVfVE9QT0xPR1lfSAorCisjaW5jbHVkZSAiaWd0 X2d0LmgiCisjaW5jbHVkZSAiaTkxNV9kcm0uaCIKKworLyoKKyAqIExpbWl0IHdoYXQgd2Ugc3Vw cG9ydCBmb3Igc2ltcGxpY2l0eSBkdWUgbGltaXRhdGlvbiBpbiBob3cgbXVjaCB3ZQorICogY2Fu IGFkZHJlc3MgdmlhIGV4ZWNidWYyLgorICovCisjZGVmaW5lIFNJWkVPRl9DVFhfUEFSQU0Jb2Zm c2V0b2Yoc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzLCBcCisJCQkJCSBlbmdpbmVz W0dFTV9NQVhfRU5HSU5FU10pCisjZGVmaW5lIFNJWkVPRl9RVUVSWQkJb2Zmc2V0b2Yoc3RydWN0 IGRybV9pOTE1X3F1ZXJ5X2VuZ2luZV9pbmZvLCBcCisJCQkJCSBlbmdpbmVzW0dFTV9NQVhfRU5H SU5FU10pCisKKyNkZWZpbmUgR0VNX01BWF9FTkdJTkVTCQlJOTE1X0VYRUNfUklOR19NQVNLICsg MQorCitzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgeworCXVpbnQzMl90IG5lbmdpbmVzOworCXVp bnQzMl90IG47CisJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpjdXJyZW50X2VuZ2lu ZTsKKwlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgZW5naW5lc1tHRU1fTUFYX0VOR0lO RVNdOworfTsKKworYm9vbCBnZW1faGFzX2VuZ2luZV90b3BvbG9neShpbnQgZmQpOworc3RydWN0 IGludGVsX2VuZ2luZV9kYXRhIGludGVsX2luaXRfZW5naW5lX2xpc3QoaW50IGZkLCB1aW50MzJf dCBjdHhfaWQpOworCisvKiBpdGVyYXRpb24gZnVuY3Rpb25zICovCitzdHJ1Y3QgaW50ZWxfZXhl Y3V0aW9uX2VuZ2luZTIgKgoraW50ZWxfZ2V0X2N1cnJlbnRfZW5naW5lKHN0cnVjdCBpbnRlbF9l bmdpbmVfZGF0YSAqZWQpOworCitzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKgoraW50 ZWxfZ2V0X2N1cnJlbnRfcGh5c2ljYWxfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAq ZWQpOworCit2b2lkIGludGVsX25leHRfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAq ZWQpOworCitpbnQgZ2VtX2NvbnRleHRfbG9va3VwX2VuZ2luZShpbnQgZmQsIHVpbnQ2NF90IGVu Z2luZSwgdWludDMyX3QgY3R4X2lkLAorCQkJICAgICAgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9l bmdpbmUyICplKTsKKwordm9pZCBnZW1fY29udGV4dF9zZXRfYWxsX2VuZ2luZXMoaW50IGZkLCB1 aW50MzJfdCBjdHgpOworCisjZGVmaW5lIF9fZm9yX2VhY2hfc3RhdGljX2VuZ2luZShlX18pIFwK Kwlmb3IgKChlX18pID0gaW50ZWxfZXhlY3V0aW9uX2VuZ2luZXMyOyAoZV9fKS0+bmFtZTsgKGVf XykrKykKKworI2RlZmluZSBmb3JfZWFjaF9jb250ZXh0X2VuZ2luZShmZF9fLCBjdHhfXywgZV9f KSBcCisJZm9yIChzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgaV9fID0gaW50ZWxfaW5pdF9lbmdp bmVfbGlzdChmZF9fLCBjdHhfXyk7IFwKKwkgICAgICgoZV9fKSA9IGludGVsX2dldF9jdXJyZW50 X2VuZ2luZSgmaV9fKSk7IFwKKwkgICAgIGludGVsX25leHRfZW5naW5lKCZpX18pKQorCisvKiBu ZWVkcyB0byByZXBsYWNlICJmb3JfZWFjaF9waHlzaWNhbF9lbmdpbmUiIHdoZW4gY29uZmxpY3Rz IGFyZSBmaXhlZCAqLworI2RlZmluZSBfX2Zvcl9lYWNoX3BoeXNpY2FsX2VuZ2luZShmZF9fLCBl X18pIFwKKwlmb3IgKHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSBpX18gPSBpbnRlbF9pbml0X2Vu Z2luZV9saXN0KGZkX18sIDApOyBcCisJICAgICAoKGVfXykgPSBpbnRlbF9nZXRfY3VycmVudF9w aHlzaWNhbF9lbmdpbmUoJmlfXykpOyBcCisJICAgICBpbnRlbF9uZXh0X2VuZ2luZSgmaV9fKSkK KworI2VuZGlmIC8qIEdFTV9FTkdJTkVfVE9QT0xPR1lfSCAqLwpkaWZmIC0tZ2l0IGEvbGliL2ln dC5oIGIvbGliL2lndC5oCmluZGV4IDU4NTJkNTU3MWY4Yi4uYTNkM2VkYzJkNWFjIDEwMDY0NAot LS0gYS9saWIvaWd0LmgKKysrIGIvbGliL2lndC5oCkBAIC01NCw1ICs1NCw2IEBACiAjaW5jbHVk ZSAibWVkaWFfc3Bpbi5oIgogI2luY2x1ZGUgInJlbmRlcmNvcHkuaCIKICNpbmNsdWRlICJpOTE1 L2dlbV9tbWFuLmgiCisjaW5jbHVkZSAiaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmgiCiAKICNl bmRpZiAvKiBJR1RfSCAqLwpkaWZmIC0tZ2l0IGEvbGliL2lndF9ndC5oIGIvbGliL2lndF9ndC5o CmluZGV4IDQ3NWMwYjNjM2NjNi4uNTJiMmYxZWE5NWE1IDEwMDY0NAotLS0gYS9saWIvaWd0X2d0 LmgKKysrIGIvbGliL2lndF9ndC5oCkBAIC05NSw2ICs5NSw4IEBAIGV4dGVybiBjb25zdCBzdHJ1 Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgewogCWNvbnN0IGNoYXIgKm5hbWU7CiAJaW50IGNs YXNzOwogCWludCBpbnN0YW5jZTsKKwl1aW50NjRfdCBmbGFnczsKKwlib29sIGlzX3ZpcnR1YWw7 CiB9IGludGVsX2V4ZWN1dGlvbl9lbmdpbmVzMltdOwogCiB1bnNpZ25lZCBpbnQKZGlmZiAtLWdp dCBhL2xpYi9tZXNvbi5idWlsZCBiL2xpYi9tZXNvbi5idWlsZAppbmRleCA4MDczNjg2ODY3ZDQu LmI2ZDhlNmNhNWE3ZSAxMDA2NDQKLS0tIGEvbGliL21lc29uLmJ1aWxkCisrKyBiL2xpYi9tZXNv bi5idWlsZApAQCAtNSw2ICs1LDcgQEAgbGliX3NvdXJjZXMgPSBbCiAJJ2k5MTUvZ2VtX3N1Ym1p c3Npb24uYycsCiAJJ2k5MTUvZ2VtX3JpbmcuYycsCiAJJ2k5MTUvZ2VtX21tYW4uYycsCisJJ2k5 MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jJywKIAknaWd0X2NvbG9yX2VuY29kaW5nLmMnLAogCSdp Z3RfZGVidWdmcy5jJywKIAknaWd0X2RldmljZS5jJywKLS0gCjIuMjAuMQoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QK aWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2