From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8CDA589B78 for ; Tue, 16 Apr 2019 15:11:35 +0000 (UTC) From: Andi Shyti Date: Tue, 16 Apr 2019 18:11:24 +0300 Message-Id: <20190416151128.2465-3-andi.shyti@intel.com> In-Reply-To: <20190416151128.2465-1-andi.shyti@intel.com> References: <20190416151128.2465-1-andi.shyti@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH v21 2/6] 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 L2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jIHwgMjkxICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwogbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oIHwgIDgwICsrKysrKysr KwogbGliL2lndC5oICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGxpYi9pZ3RfZ3QuaCAg ICAgICAgICAgICAgICAgICB8ICAgMiArCiBsaWIvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAg fCAgIDEgKwogNiBmaWxlcyBjaGFuZ2VkLCAzNzcgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUg MTAwNjQ0IGxpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGxpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuaAoKZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmls ZS5zb3VyY2VzIGIvbGliL01ha2VmaWxlLnNvdXJjZXMKaW5kZXggYTFkMjUzNTExMDMwLi4wODIw NDliZjdjNmEgMTAwNjQ0Ci0tLSBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzCisrKyBiL2xpYi9NYWtl ZmlsZS5zb3VyY2VzCkBAIC0xMyw2ICsxMyw4IEBAIGxpYl9zb3VyY2VfbGlzdCA9CSAJXAogCWk5 MTUvZ2VtX3JpbmcuYwlcCiAJaTkxNS9nZW1fbW1hbi5jCVwKIAlpOTE1L2dlbV9tbWFuLmgJXAor CWk5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jCVwKKwlpOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3ku aAlcCiAJaTkxNV8zZC5oCQlcCiAJaTkxNV9yZWcuaAkJXAogCWk5MTVfcGNpaWRzLmgJCVwKZGlm ZiAtLWdpdCBhL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuYyBiL2xpYi9pOTE1L2dlbV9l bmdpbmVfdG9wb2xvZ3kuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LjFjODllNDI1YjgxZAotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9w b2xvZ3kuYwpAQCAtMCwwICsxLDI5MSBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVs 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+Y2xhc3NfaW5zdGFuY2VbMF0pICpw ID0KKwkgICAgICZlbmdpbmVzLT5jbGFzc19pbnN0YW5jZVswXTsKKwkgICAgIGkgPCBlZC0+bmVu Z2luZXM7IGkrKywgcCsrKSB7CisJCXAtPmVuZ2luZV9jbGFzcyA9IGVkLT5lbmdpbmVzW2ldLmNs YXNzOworCQlwLT5lbmdpbmVfaW5zdGFuY2UgPSBlZC0+ZW5naW5lc1tpXS5pbnN0YW5jZTsKKwl9 CisKKwlwYXJhbS0+c2l6ZSA9IG9mZnNldG9mKHR5cGVvZigqZW5naW5lcyksIGNsYXNzX2luc3Rh bmNlW2ldKTsKKwllbmdpbmVzLT5leHRlbnNpb25zID0gMDsKKworCWdlbV9jb250ZXh0X3NldF9w YXJhbShmZCwgcGFyYW0pOworfQorCitzdGF0aWMgdm9pZCBpbml0X2VuZ2luZShzdHJ1Y3QgaW50 ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUyLAorCQkJaW50IGNsYXNzLCBpbnQgaW5zdGFuY2UsIHVp bnQ2NF90IGZsYWdzKQoreworCWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAq X19lMjsKKwlzdGF0aWMgY29uc3QgY2hhciAqdW5rbm93bl9uYW1lID0gInVua25vd24iLAorCQkJ ICAqdmlydHVhbF9uYW1lID0gInZpcnR1YWwiOworCisJZTItPmNsYXNzICAgID0gY2xhc3M7CisJ ZTItPmluc3RhbmNlID0gaW5zdGFuY2U7CisJZTItPmZsYWdzICAgID0gZmxhZ3M7CisKKwkvKiBl bmdpbmUgaXMgYSB2aXJ0dWFsIGVuZ2luZSAqLworCWlmIChjbGFzcyA9PSBJOTE1X0VOR0lORV9D TEFTU19JTlZBTElEKSB7CisJCWUyLT5uYW1lID0gdmlydHVhbF9uYW1lOworCQllMi0+aXNfdmly dHVhbCA9IHRydWU7CisJCXJldHVybjsKKwl9CisKKwlfX2Zvcl9lYWNoX3N0YXRpY19lbmdpbmUo X19lMikKKwkJaWYgKF9fZTItPmNsYXNzID09IGNsYXNzICYmIF9fZTItPmluc3RhbmNlID09IGlu c3RhbmNlKQorCQkJYnJlYWs7CisKKwlpZiAoX19lMi0+bmFtZSkgeworCQllMi0+bmFtZSA9IF9f ZTItPm5hbWU7CisJfSBlbHNlIHsKKwkJaWd0X3dhcm4oImZvdW5kIHVua25vd24gZW5naW5lICgl ZCwgJWQpIiwgY2xhc3MsIGluc3RhbmNlKTsKKwkJZTItPm5hbWUgPSB1bmtub3duX25hbWU7CisJ fQorCisJLyoganVzdCB0byByZW1hcmsgaXQgKi8KKwllMi0+aXNfdmlydHVhbCA9IGZhbHNlOwor fQorCitzdGF0aWMgdm9pZCBxdWVyeV9lbmdpbmVfbGlzdChpbnQgZmQsIHN0cnVjdCBpbnRlbF9l bmdpbmVfZGF0YSAqZWQpCit7CisJdWludDhfdCBidWZmW1NJWkVPRl9RVUVSWV0gPSB7IH07CisJ c3RydWN0IGRybV9pOTE1X3F1ZXJ5X2VuZ2luZV9pbmZvICpxdWVyeV9lbmdpbmUgPQorCQkJKHN0 cnVjdCBkcm1faTkxNV9xdWVyeV9lbmdpbmVfaW5mbyAqKSBidWZmOworCWludCBpOworCisJcXVl cnlfZW5naW5lcyhmZCwgcXVlcnlfZW5naW5lLCBTSVpFT0ZfUVVFUlkpOworCisJZm9yIChpID0g MDsgaSA8IHF1ZXJ5X2VuZ2luZS0+bnVtX2VuZ2luZXM7IGkrKykKKwkJaW5pdF9lbmdpbmUoJmVk LT5lbmdpbmVzW2ldLAorCQkJICAgIHF1ZXJ5X2VuZ2luZS0+ZW5naW5lc1tpXS5lbmdpbmVfY2xh c3MsCisJCQkgICAgcXVlcnlfZW5naW5lLT5lbmdpbmVzW2ldLmVuZ2luZV9pbnN0YW5jZSwgaSk7 CisKKwllZC0+bmVuZ2luZXMgPSBxdWVyeV9lbmdpbmUtPm51bV9lbmdpbmVzOworfQorCitzdHJ1 Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKgoraW50ZWxfZ2V0X2N1cnJlbnRfZW5naW5lKHN0 cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAqZWQpCit7CisJaWYgKCFlZC0+bikKKwkJZWQtPmN1cnJl bnRfZW5naW5lID0gJmVkLT5lbmdpbmVzWzBdOworCWVsc2UgaWYgKGVkLT5uID49IGVkLT5uZW5n aW5lcykKKwkJZWQtPmN1cnJlbnRfZW5naW5lID0gTlVMTDsKKworCXJldHVybiBlZC0+Y3VycmVu dF9lbmdpbmU7Cit9CisKK3ZvaWQgaW50ZWxfbmV4dF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2lu ZV9kYXRhICplZCkKK3sKKwlpZiAoZWQtPm4gKyAxIDwgZWQtPm5lbmdpbmVzKSB7CisJCWVkLT5u Kys7CisJCWVkLT5jdXJyZW50X2VuZ2luZSA9ICZlZC0+ZW5naW5lc1tlZC0+bl07CisJfSBlbHNl IHsKKwkJZWQtPm4gPSBlZC0+bmVuZ2luZXM7CisJCWVkLT5jdXJyZW50X2VuZ2luZSA9IE5VTEw7 CisJfQorfQorCitzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKgoraW50ZWxfZ2V0X2N1 cnJlbnRfcGh5c2ljYWxfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAqZWQpCit7CisJ c3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplOworCisJZm9yIChlID0gaW50ZWxfZ2V0 X2N1cnJlbnRfZW5naW5lKGVkKTsKKwkgICAgIGUgJiYgZS0+aXNfdmlydHVhbDsKKwkgICAgIGlu dGVsX25leHRfZW5naW5lKGVkKSkKKwkJOworCisJcmV0dXJuIGU7Cit9CisKK3N0YXRpYyBpbnQg Z2VtX3RvcG9sb2d5X2dldF9wYXJhbShpbnQgZmQsCisJCQkJICBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X2NvbnRleHRfcGFyYW0gKnApCit7CisJaWYgKGlndF9vbmx5X2xpc3Rfc3VidGVzdHMoKSkKKwkJ cmV0dXJuIC1FTk9ERVY7CisKKwlpZiAoX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsIHApKQor CQlyZXR1cm4gLTE7IC8qIHVzaW5nIGRlZmF1bHQgZW5naW5lIG1hcCAqLworCisJaWYgKCFwLT5z aXplKQorCQlyZXR1cm4gMDsKKworCXAtPnNpemUgPSAocC0+c2l6ZSAtIHNpemVvZihzdHJ1Y3Qg aTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMpKSAvCisJCSAgKG9mZnNldG9mKHN0cnVjdCBpOTE1 X2NvbnRleHRfcGFyYW1fZW5naW5lcywKKwkJCSAgICBjbGFzc19pbnN0YW5jZVsxXSkgLQorCQkg IHNpemVvZihzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMpKTsKKworCWlndF9hc3Nl cnRfZihwLT5zaXplIDw9IEdFTV9NQVhfRU5HSU5FUywgInVuc3VwcG9ydGVkIGVuZ2luZSBjb3Vu dFxuIik7CisKKwlyZXR1cm4gMDsKK30KKworc3RydWN0IGludGVsX2VuZ2luZV9kYXRhIGludGVs X2luaXRfZW5naW5lX2xpc3QoaW50IGZkLCB1aW50MzJfdCBjdHhfaWQpCit7CisJREVGSU5FX0NP TlRFWFRfUEFSQU0oZW5naW5lcywgcGFyYW0sIGN0eF9pZCwgR0VNX01BWF9FTkdJTkVTKTsKKwlz dHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgZW5naW5lX2RhdGEgPSB7IH07CisJaW50IGk7CisKKwlp ZiAoZ2VtX3RvcG9sb2d5X2dldF9wYXJhbShmZCwgJnBhcmFtKSkgeworCQkvKiBpZiBrZXJuZWwg ZG9lcyBub3Qgc3VwcG9ydCBlbmdpbmUvY29udGV4dCBtYXBwaW5nICovCisJCWNvbnN0IHN0cnVj dCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZTI7CisKKwkJaWd0X2RlYnVnKCJ1c2luZyBwcmUt YWxsb2NhdGVkIGVuZ2luZSBsaXN0XG4iKTsKKworCQlfX2Zvcl9lYWNoX3N0YXRpY19lbmdpbmUo ZTIpIHsKKwkJCXN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqX19lMiA9CisJCQkJJmVu Z2luZV9kYXRhLmVuZ2luZXNbZW5naW5lX2RhdGEubmVuZ2luZXNdOworCisJCQlpZiAoIWlndF9v bmx5X2xpc3Rfc3VidGVzdHMoKSkgeworCQkJCV9fZTItPmZsYWdzID0gZ2VtX2NsYXNzX2luc3Rh bmNlX3RvX2ViX2ZsYWdzKGZkLAorCQkJCQkJZTItPmNsYXNzLCBlMi0+aW5zdGFuY2UpOworCisJ CQkJaWYgKCFnZW1faGFzX3JpbmcoZmQsIF9fZTItPmZsYWdzKSkKKwkJCQkJY29udGludWU7CisJ CQl9IGVsc2UgeworCQkJCV9fZTItPmZsYWdzID0gLTE7IC8qIDB4ZmZmLi4uICovCisJCQl9CisK KwkJCV9fZTItPm5hbWUgICAgICAgPSBlMi0+bmFtZTsKKwkJCV9fZTItPmluc3RhbmNlICAgPSBl Mi0+aW5zdGFuY2U7CisJCQlfX2UyLT5jbGFzcyAgICAgID0gZTItPmNsYXNzOworCQkJX19lMi0+ aXNfdmlydHVhbCA9IGZhbHNlOworCisJCQllbmdpbmVfZGF0YS5uZW5naW5lcysrOworCQl9CisJ CXJldHVybiBlbmdpbmVfZGF0YTsKKwl9CisKKwlpZiAoIXBhcmFtLnNpemUpIHsKKwkJcXVlcnlf ZW5naW5lX2xpc3QoZmQsICZlbmdpbmVfZGF0YSk7CisJCWN0eF9tYXBfZW5naW5lcyhmZCwgJmVu Z2luZV9kYXRhLCAmcGFyYW0pOworCX0gZWxzZSB7CisJCWZvciAoaSA9IDA7IGkgPCBwYXJhbS5z aXplOyBpKyspCisJCQlpbml0X2VuZ2luZSgmZW5naW5lX2RhdGEuZW5naW5lc1tpXSwKKwkJCQkg ICAgZW5naW5lcy5jbGFzc19pbnN0YW5jZVtpXS5lbmdpbmVfY2xhc3MsCisJCQkJICAgIGVuZ2lu ZXMuY2xhc3NfaW5zdGFuY2VbaV0uZW5naW5lX2luc3RhbmNlLAorCQkJCSAgICBpKTsKKworCQll bmdpbmVfZGF0YS5uZW5naW5lcyA9IGk7CisJfQorCisJcmV0dXJuIGVuZ2luZV9kYXRhOworfQor CitpbnQgZ2VtX2NvbnRleHRfbG9va3VwX2VuZ2luZShpbnQgZmQsIHVpbnQ2NF90IGVuZ2luZSwg dWludDMyX3QgY3R4X2lkLAorCQkJICAgICAgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUy ICplKQoreworCURFRklORV9DT05URVhUX1BBUkFNKGVuZ2luZXMsIHBhcmFtLCBjdHhfaWQsIEdF TV9NQVhfRU5HSU5FUyk7CisKKwlpZiAoIWUgfHwgZ2VtX3RvcG9sb2d5X2dldF9wYXJhbShmZCwg JnBhcmFtKSB8fCAhcGFyYW0uc2l6ZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwllLT5jbGFzcyA9 IGVuZ2luZXMuY2xhc3NfaW5zdGFuY2VbZW5naW5lXS5lbmdpbmVfY2xhc3M7CisJZS0+aW5zdGFu Y2UgPSBlbmdpbmVzLmNsYXNzX2luc3RhbmNlW2VuZ2luZV0uZW5naW5lX2luc3RhbmNlOworCisJ cmV0dXJuIDA7Cit9CisKK3VpbnQzMl90IGdlbV9tYWtlX2NvbnRleHRfc2V0X2FsbF9lbmdpbmVz KGludCBmZCkKK3sKKwlERUZJTkVfQ09OVEVYVF9QQVJBTShlbmdpbmVzLCBwYXJhbSwgMCwgR0VN X01BWF9FTkdJTkVTKTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgZW5naW5lX2RhdGEgPSB7 IH07CisKKwlwYXJhbS5jdHhfaWQgPSBnZW1fY29udGV4dF9jcmVhdGUoZmQpOworCisJaWYgKCFn ZW1fdG9wb2xvZ3lfZ2V0X3BhcmFtKGZkLCAmcGFyYW0pICYmICFwYXJhbS5zaXplKSB7CisJCXF1 ZXJ5X2VuZ2luZV9saXN0KGZkLCAmZW5naW5lX2RhdGEpOworCQljdHhfbWFwX2VuZ2luZXMoZmQs ICZlbmdpbmVfZGF0YSwgJnBhcmFtKTsKKwl9CisKKwlyZXR1cm4gcGFyYW0uY3R4X2lkOworfQor Cit2b2lkIGdlbV91bnNldF9jb250ZXh0X2VuZ2luZXMoaW50IGZkLCB1aW50MzJfdCBjdHgpCit7 CisJZ2VtX2NvbnRleHRfZGVzdHJveShmZCwgY3R4KTsKK30KKworYm9vbCBnZW1faGFzX2VuZ2lu ZV90b3BvbG9neShpbnQgZmQpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFt IHBhcmFtID0geworCQkucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fRU5HSU5FUywKKwl9Owor CisJcmV0dXJuICFfX2dlbV9jb250ZXh0X2dldF9wYXJhbShmZCwgJnBhcmFtKTsKK30KZGlmZiAt LWdpdCBhL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuaCBiL2xpYi9pOTE1L2dlbV9lbmdp bmVfdG9wb2xvZ3kuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmE5 MzcxYmExZGMzYgotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xv Z3kuaApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29y cG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJl IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAq IHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3 aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l cmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29w aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisg KiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz IHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hh bGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0 aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMi LCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJ TkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ TElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5H RU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhP TERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJ TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF LCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU V0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisg Ki8KKworI2lmbmRlZiBHRU1fRU5HSU5FX1RPUE9MT0dZX0gKKyNkZWZpbmUgR0VNX0VOR0lORV9U T1BPTE9HWV9ICisKKyNpbmNsdWRlICJpZ3RfZ3QuaCIKKyNpbmNsdWRlICJpOTE1X2RybS5oIgor CisvKgorICogTGltaXQgd2hhdCB3ZSBzdXBwb3J0IGZvciBzaW1wbGljaXR5IGR1ZSBsaW1pdGF0 aW9uIGluIGhvdyBtdWNoIHdlCisgKiBjYW4gYWRkcmVzcyB2aWEgZXhlY2J1ZjIuCisgKi8KKyNk ZWZpbmUgU0laRU9GX0NUWF9QQVJBTQlvZmZzZXRvZihzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFt X2VuZ2luZXMsIFwKKwkJCQkJY2xhc3NfaW5zdGFuY2VbR0VNX01BWF9FTkdJTkVTXSkKKyNkZWZp bmUgU0laRU9GX1FVRVJZCQlvZmZzZXRvZihzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZW5naW5lX2lu Zm8sIFwKKwkJCQkJZW5naW5lc1tHRU1fTUFYX0VOR0lORVNdKQorCisjZGVmaW5lIEdFTV9NQVhf RU5HSU5FUwkJSTkxNV9FWEVDX1JJTkdfTUFTSyArIDEKKworc3RydWN0IGludGVsX2VuZ2luZV9k YXRhIHsKKwl1aW50MzJfdCBuZW5naW5lczsKKwl1aW50MzJfdCBuOworCXN0cnVjdCBpbnRlbF9l eGVjdXRpb25fZW5naW5lMiAqY3VycmVudF9lbmdpbmU7CisJc3RydWN0IGludGVsX2V4ZWN1dGlv bl9lbmdpbmUyIGVuZ2luZXNbR0VNX01BWF9FTkdJTkVTXTsKK307CisKK2Jvb2wgZ2VtX2hhc19l bmdpbmVfdG9wb2xvZ3koaW50IGZkKTsKK3N0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSBpbnRlbF9p bml0X2VuZ2luZV9saXN0KGludCBmZCwgdWludDMyX3QgY3R4X2lkKTsKKworLyogaXRlcmF0aW9u IGZ1bmN0aW9ucyAqLworc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICoKK2ludGVsX2dl dF9jdXJyZW50X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgKmVkKTsKKworc3RydWN0 IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICoKK2ludGVsX2dldF9jdXJyZW50X3BoeXNpY2FsX2Vu Z2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgKmVkKTsKKwordm9pZCBpbnRlbF9uZXh0X2Vu Z2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgKmVkKTsKKworaW50IGdlbV9jb250ZXh0X2xv b2t1cF9lbmdpbmUoaW50IGZkLCB1aW50NjRfdCBlbmdpbmUsIHVpbnQzMl90IGN0eF9pZCwKKwkJ CSAgICAgIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSk7CisKK3VpbnQzMl90IGdl bV9tYWtlX2NvbnRleHRfc2V0X2FsbF9lbmdpbmVzKGludCBmZCk7Cit2b2lkIGdlbV91bnNldF9j b250ZXh0X2VuZ2luZXMoaW50IGZkLCB1aW50MzJfdCBjdHgpOworCisjZGVmaW5lIF9fZm9yX2Vh Y2hfc3RhdGljX2VuZ2luZShlX18pIFwKKwlmb3IgKChlX18pID0gaW50ZWxfZXhlY3V0aW9uX2Vu Z2luZXMyOyAoZV9fKS0+bmFtZTsgKGVfXykrKykKKworI2RlZmluZSBmb3JfZWFjaF9jb250ZXh0 X2VuZ2luZShmZF9fLCBjdHhfXywgZV9fKSBcCisJZm9yIChzdHJ1Y3QgaW50ZWxfZW5naW5lX2Rh dGEgaV9fID0gaW50ZWxfaW5pdF9lbmdpbmVfbGlzdChmZF9fLCBjdHhfXyk7IFwKKwkgICAgICgo ZV9fKSA9IGludGVsX2dldF9jdXJyZW50X2VuZ2luZSgmaV9fKSk7IFwKKwkgICAgIGludGVsX25l eHRfZW5naW5lKCZpX18pKQorCisvKiBuZWVkcyB0byByZXBsYWNlICJmb3JfZWFjaF9waHlzaWNh bF9lbmdpbmUiIHdoZW4gY29uZmxpY3RzIGFyZSBmaXhlZCAqLworI2RlZmluZSBfX2Zvcl9lYWNo X3BoeXNpY2FsX2VuZ2luZShmZF9fLCBlX18pIFwKKwlmb3IgKHN0cnVjdCBpbnRlbF9lbmdpbmVf ZGF0YSBpX18gPSBpbnRlbF9pbml0X2VuZ2luZV9saXN0KGZkX18sIDApOyBcCisJICAgICAoKGVf XykgPSBpbnRlbF9nZXRfY3VycmVudF9waHlzaWNhbF9lbmdpbmUoJmlfXykpOyBcCisJICAgICBp bnRlbF9uZXh0X2VuZ2luZSgmaV9fKSkKKworI2VuZGlmIC8qIEdFTV9FTkdJTkVfVE9QT0xPR1lf SCAqLwpkaWZmIC0tZ2l0IGEvbGliL2lndC5oIGIvbGliL2lndC5oCmluZGV4IDY2NTRhNjU5YzA2 Mi4uMDNmMTljYTJkZmI2IDEwMDY0NAotLS0gYS9saWIvaWd0LmgKKysrIGIvbGliL2lndC5oCkBA IC01Myw1ICs1Myw2IEBACiAjaW5jbHVkZSAibWVkaWFfc3Bpbi5oIgogI2luY2x1ZGUgInJlbmRl cmNvcHkuaCIKICNpbmNsdWRlICJpOTE1L2dlbV9tbWFuLmgiCisjaW5jbHVkZSAiaTkxNS9nZW1f ZW5naW5lX3RvcG9sb2d5LmgiCiAKICNlbmRpZiAvKiBJR1RfSCAqLwpkaWZmIC0tZ2l0IGEvbGli L2lndF9ndC5oIGIvbGliL2lndF9ndC5oCmluZGV4IDQ3NWMwYjNjM2NjNi4uNTJiMmYxZWE5NWE1 IDEwMDY0NAotLS0gYS9saWIvaWd0X2d0LmgKKysrIGIvbGliL2lndF9ndC5oCkBAIC05NSw2ICs5 NSw4IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgewogCWNv bnN0IGNoYXIgKm5hbWU7CiAJaW50IGNsYXNzOwogCWludCBpbnN0YW5jZTsKKwl1aW50NjRfdCBm bGFnczsKKwlib29sIGlzX3ZpcnR1YWw7CiB9IGludGVsX2V4ZWN1dGlvbl9lbmdpbmVzMltdOwog CiB1bnNpZ25lZCBpbnQKZGlmZiAtLWdpdCBhL2xpYi9tZXNvbi5idWlsZCBiL2xpYi9tZXNvbi5i dWlsZAppbmRleCBhODQ2MjkzMzA3Y2IuLmU1NWU1MTI0MDNkOSAxMDA2NDQKLS0tIGEvbGliL21l c29uLmJ1aWxkCisrKyBiL2xpYi9tZXNvbi5idWlsZApAQCAtNSw2ICs1LDcgQEAgbGliX3NvdXJj ZXMgPSBbCiAJJ2k5MTUvZ2VtX3N1Ym1pc3Npb24uYycsCiAJJ2k5MTUvZ2VtX3JpbmcuYycsCiAJ J2k5MTUvZ2VtX21tYW4uYycsCisJJ2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jJywKIAknaWd0 X2NvbG9yX2VuY29kaW5nLmMnLAogCSdpZ3RfZGVidWdmcy5jJywKIAknaWd0X2RldmljZS5jJywK LS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2