From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 71C598929C for ; Mon, 8 Apr 2019 16:15:42 +0000 (UTC) From: Andi Shyti Date: Mon, 8 Apr 2019 19:15:29 +0300 Message-Id: <20190408161533.2421-3-andi.shyti@intel.com> In-Reply-To: <20190408161533.2421-1-andi.shyti@intel.com> References: <20190408161533.2421-1-andi.shyti@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH v19 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 L2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jIHwgMjgxICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwogbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oIHwgIDc4ICsrKysrKysr KwogbGliL2lndC5oICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGxpYi9pZ3RfZ3QuaCAg ICAgICAgICAgICAgICAgICB8ICAgMiArCiBsaWIvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAg fCAgIDEgKwogNiBmaWxlcyBjaGFuZ2VkLCAzNjUgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUg MTAwNjQ0IGxpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGxpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuaAoKZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmls ZS5zb3VyY2VzIGIvbGliL01ha2VmaWxlLnNvdXJjZXMKaW5kZXggZTAwMzQ3Zjk0NWM1Li40MTMz MWMyZjJiODAgMTAwNjQ0Ci0tLSBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzCisrKyBiL2xpYi9NYWtl ZmlsZS5zb3VyY2VzCkBAIC0xMyw2ICsxMyw4IEBAIGxpYl9zb3VyY2VfbGlzdCA9CSAJXAogCWk5 MTUvZ2VtX3JpbmcuYwlcCiAJaTkxNS9nZW1fbW1hbi5jCVwKIAlpOTE1L2dlbV9tbWFuLmgJXAor CWk5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jCVwKKwlpOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3ku aAlcCiAJaTkxNV8zZC5oCQlcCiAJaTkxNV9yZWcuaAkJXAogCWk5MTVfcGNpaWRzLmgJCVwKZGlm ZiAtLWdpdCBhL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuYyBiL2xpYi9pOTE1L2dlbV9l bmdpbmVfdG9wb2xvZ3kuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LjA2ZjUzODM3MmE0ZAotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9w b2xvZ3kuYwpAQCAtMCwwICsxLDI4MSBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVs IENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0 d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks CisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5 LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxs IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo ZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs b3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg dGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgp IHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg b2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElF RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G UklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdI VCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBM SUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVS V0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg U09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJF LgorICovCisKKyNpbmNsdWRlICJkcm10ZXN0LmgiCisjaW5jbHVkZSAiaW9jdGxfd3JhcHBlcnMu aCIKKworI2luY2x1ZGUgImk5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oIgorCitzdGF0aWMgaW50 IF9fZ2VtX3F1ZXJ5KGludCBmZCwgc3RydWN0IGRybV9pOTE1X3F1ZXJ5ICpxKQoreworCWludCBl cnIgPSAwOworCisJaWYgKGlndF9pb2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVfUVVFUlksIHEpKQor CQllcnIgPSAtZXJybm87CisKKwllcnJubyA9IDA7CisJcmV0dXJuIGVycjsKK30KKworc3RhdGlj IHZvaWQgZ2VtX3F1ZXJ5KGludCBmZCwgc3RydWN0IGRybV9pOTE1X3F1ZXJ5ICpxKQoreworCWln dF9hc3NlcnRfZXEoX19nZW1fcXVlcnkoZmQsIHEpLCAwKTsKK30KKworc3RhdGljIHZvaWQgcXVl cnlfZW5naW5lcyhpbnQgZmQsCisJCQkgIHN0cnVjdCBkcm1faTkxNV9xdWVyeV9lbmdpbmVfaW5m byAqcXVlcnlfZW5naW5lcywKKwkJCSAgaW50IGxlbmd0aCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVf cXVlcnlfaXRlbSBpdGVtID0geyB9OworCXN0cnVjdCBkcm1faTkxNV9xdWVyeSBxdWVyeSA9IHsg fTsKKworCWl0ZW0ucXVlcnlfaWQgPSBEUk1fSTkxNV9RVUVSWV9FTkdJTkVfSU5GTzsKKwlxdWVy eS5pdGVtc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJml0ZW0pOworCXF1ZXJ5Lm51bV9pdGVtcyA9 IDE7CisJaXRlbS5sZW5ndGggPSBsZW5ndGg7CisKKwlpdGVtLmRhdGFfcHRyID0gdG9fdXNlcl9w b2ludGVyKHF1ZXJ5X2VuZ2luZXMpOworCisJZ2VtX3F1ZXJ5KGZkLCAmcXVlcnkpOworfQorCitz dGF0aWMgdm9pZCBjdHhfbWFwX2VuZ2luZXMoaW50IGZkLCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2Rh dGEgKmVkLAorCQkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSAqcGFyYW0p Cit7CisJc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzICplbmdpbmVzID0KKwkJCShz dHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMgKikgcGFyYW0tPnZhbHVlOworCWludCBp ID0gMDsKKworCWZvciAodHlwZW9mKGVuZ2luZXMtPmNsYXNzX2luc3RhbmNlWzBdKSAqcCA9CisJ ICAgICAmZW5naW5lcy0+Y2xhc3NfaW5zdGFuY2VbMF07CisJICAgICBpIDwgZWQtPm5lbmdpbmVz OyBpKyssIHArKykgeworCQlwLT5lbmdpbmVfY2xhc3MgPSBlZC0+ZW5naW5lc1tpXS5jbGFzczsK KwkJcC0+ZW5naW5lX2luc3RhbmNlID0gZWQtPmVuZ2luZXNbaV0uaW5zdGFuY2U7CisJfQorCisJ cGFyYW0tPnNpemUgPSBvZmZzZXRvZih0eXBlb2YoKmVuZ2luZXMpLCBjbGFzc19pbnN0YW5jZVtp XSk7CisJZW5naW5lcy0+ZXh0ZW5zaW9ucyA9IDA7CisKKwlnZW1fY29udGV4dF9zZXRfcGFyYW0o ZmQsIHBhcmFtKTsKK30KKworc3RhdGljIHZvaWQgaW5pdF9lbmdpbmUoc3RydWN0IGludGVsX2V4 ZWN1dGlvbl9lbmdpbmUyICplMiwKKwkJCWludCBjbGFzcywgaW50IGluc3RhbmNlLCB1aW50NjRf dCBmbGFncykKK3sKKwljb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKl9fZTI7 CisJc3RhdGljIGNvbnN0IGNoYXIgKnVua25vd25fbmFtZSA9ICJ1bmtub3duIiwKKwkJCSAgKnZp cnR1YWxfbmFtZSA9ICJ2aXJ0dWFsIjsKKworCWUyLT5jbGFzcyAgICA9IGNsYXNzOworCWUyLT5p bnN0YW5jZSA9IGluc3RhbmNlOworCWUyLT5mbGFncyAgICA9IGZsYWdzOworCisJLyogZW5naW5l IGlzIGEgdmlydHVhbCBlbmdpbmUgKi8KKwlpZiAoY2xhc3MgPT0gSTkxNV9FTkdJTkVfQ0xBU1Nf SU5WQUxJRCkgeworCQllMi0+bmFtZSA9IHZpcnR1YWxfbmFtZTsKKwkJZTItPmlzX3ZpcnR1YWwg PSB0cnVlOworCQlyZXR1cm47CisJfQorCisJX19mb3JfZWFjaF9zdGF0aWNfZW5naW5lKF9fZTIp CisJCWlmIChfX2UyLT5jbGFzcyA9PSBjbGFzcyAmJiBfX2UyLT5pbnN0YW5jZSA9PSBpbnN0YW5j ZSkKKwkJCWJyZWFrOworCisJaWYgKF9fZTItPm5hbWUpIHsKKwkJZTItPm5hbWUgPSBfX2UyLT5u YW1lOworCX0gZWxzZSB7CisJCWlndF93YXJuKCJmb3VuZCB1bmtub3duIGVuZ2luZSAoJWQsICVk KSIsIGNsYXNzLCBpbnN0YW5jZSk7CisJCWUyLT5uYW1lID0gdW5rbm93bl9uYW1lOworCX0KKwor CS8qIGp1c3QgdG8gcmVtYXJrIGl0ICovCisJZTItPmlzX3ZpcnR1YWwgPSBmYWxzZTsKK30KKwor c3RhdGljIHZvaWQgcXVlcnlfZW5naW5lX2xpc3QoaW50IGZkLCBzdHJ1Y3QgaW50ZWxfZW5naW5l X2RhdGEgKmVkKQoreworCXVpbnQ4X3QgYnVmZltTSVpFT0ZfUVVFUlldID0geyB9OworCXN0cnVj dCBkcm1faTkxNV9xdWVyeV9lbmdpbmVfaW5mbyAqcXVlcnlfZW5naW5lID0KKwkJCShzdHJ1Y3Qg ZHJtX2k5MTVfcXVlcnlfZW5naW5lX2luZm8gKikgYnVmZjsKKwlpbnQgaTsKKworCXF1ZXJ5X2Vu Z2luZXMoZmQsIHF1ZXJ5X2VuZ2luZSwgU0laRU9GX1FVRVJZKTsKKworCWZvciAoaSA9IDA7IGkg PCBxdWVyeV9lbmdpbmUtPm51bV9lbmdpbmVzOyBpKyspCisJCWluaXRfZW5naW5lKCZlZC0+ZW5n aW5lc1tpXSwKKwkJCSAgICBxdWVyeV9lbmdpbmUtPmVuZ2luZXNbaV0uZW5naW5lX2NsYXNzLAor CQkJICAgIHF1ZXJ5X2VuZ2luZS0+ZW5naW5lc1tpXS5lbmdpbmVfaW5zdGFuY2UsIGkpOworCisJ ZWQtPm5lbmdpbmVzID0gcXVlcnlfZW5naW5lLT5udW1fZW5naW5lczsKK30KKworc3RydWN0IGlu dGVsX2V4ZWN1dGlvbl9lbmdpbmUyCisqaW50ZWxfZ2V0X2N1cnJlbnRfZW5naW5lKHN0cnVjdCBp bnRlbF9lbmdpbmVfZGF0YSAqZWQpCit7CisJaWYgKCFlZC0+bikKKwkJZWQtPmN1cnJlbnRfZW5n aW5lID0gJmVkLT5lbmdpbmVzWzBdOworCWVsc2UgaWYgKGVkLT5uID49IGVkLT5uZW5naW5lcykK KwkJZWQtPmN1cnJlbnRfZW5naW5lID0gTlVMTDsKKworCXJldHVybiBlZC0+Y3VycmVudF9lbmdp bmU7Cit9CisKK3ZvaWQgaW50ZWxfbmV4dF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9kYXRh ICplZCkKK3sKKwlpZiAoZWQtPm4gKyAxIDwgZWQtPm5lbmdpbmVzKSB7CisJCWVkLT5uKys7CisJ CWVkLT5jdXJyZW50X2VuZ2luZSA9ICZlZC0+ZW5naW5lc1tlZC0+bl07CisJfSBlbHNlIHsKKwkJ ZWQtPmN1cnJlbnRfZW5naW5lID0gTlVMTDsKKwl9Cit9CisKK3N0cnVjdCBpbnRlbF9leGVjdXRp b25fZW5naW5lMgorKmludGVsX2dldF9jdXJyZW50X3BoeXNpY2FsX2VuZ2luZShzdHJ1Y3QgaW50 ZWxfZW5naW5lX2RhdGEgKmVkKQoreworCXN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAq ZTsKKworCWZvciAoZSA9IGludGVsX2dldF9jdXJyZW50X2VuZ2luZShlZCk7CisJICAgICBlICYm IGUtPmlzX3ZpcnR1YWw7CisJICAgICBpbnRlbF9uZXh0X2VuZ2luZShlZCkpCisJCTsKKworCXJl dHVybiBlOworfQorCitzdGF0aWMgaW50IGdlbV90b3BvbG9neV9nZXRfcGFyYW0oaW50IGZkLCB1 aW50MzJfdCBjdHgsCisJCQkJICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gKnAp Cit7CisJaW50IG5lbmdpbmVzOworCWludCByZXQ7CisKKwlpZiAoaWd0X29ubHlfbGlzdF9zdWJ0 ZXN0cygpKQorCQlyZXR1cm4gLUVQRVJNOworCisJcmV0ID0gX19nZW1fY29udGV4dF9nZXRfcGFy YW0oZmQsIHApOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwluZW5naW5lcyA9IHAtPnNp emUgPiBzaXplb2Yoc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzKSA/CisJCSAgIChw LT5zaXplIC0gc2l6ZW9mKHN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcykpIC8KKwkJ ICAgKDIgKiBzaXplb2YoX191MTYpKSA6CisJCSAgIDA7CisKKwlpZ3RfYXNzZXJ0X2YobmVuZ2lu ZXMgPD0gR0VNX01BWF9FTkdJTkVTLCAidW5zdXBwb3J0ZWQgZW5naW5lIGNvdW50XG4iKTsKKwor CXJldHVybiBuZW5naW5lczsKK30KKworc3RydWN0IGludGVsX2VuZ2luZV9kYXRhIGludGVsX2lu aXRfZW5naW5lX2xpc3QoaW50IGZkLCB1aW50MzJfdCBjdHhfaWQpCit7CisJSTkxNV9ERUZJTkVf Q09OVEVYVF9QQVJBTV9FTkdJTkVTKGVuZ2luZXMsIEdFTV9NQVhfRU5HSU5FUyk7CisJc3RydWN0 IGludGVsX2VuZ2luZV9kYXRhIGVuZ2luZV9kYXRhID0geyB9OworCXN0cnVjdCBkcm1faTkxNV9n ZW1fY29udGV4dF9wYXJhbSBwYXJhbSA9IHsKKwkJLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFN X0VOR0lORVMsCisJCS5jdHhfaWQgPSBjdHhfaWQsCisJCS5zaXplID0gU0laRU9GX0NUWF9QQVJB TSwKKwkJLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKCZlbmdpbmVzKSwKKwl9OworCWludCBuZW5n aW5lcyA9IGdlbV90b3BvbG9neV9nZXRfcGFyYW0oZmQsIGN0eF9pZCwgJnBhcmFtKTsKKwlpbnQg aTsKKworCWlmIChuZW5naW5lcyA8IDApIHsKKwkJLyogaWYga2VybmVsIGRvZXMgbm90IHN1cHBv cnQgZW5naW5lL2NvbnRleHQgbWFwcGluZyAqLworCQljb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0 aW9uX2VuZ2luZTIgKmUyOworCisJCWlndF9kZWJ1ZygidXNpbmcgcHJlLWFsbG9jYXRlZCBlbmdp bmUgbGlzdFxuIik7CisKKwkJX19mb3JfZWFjaF9zdGF0aWNfZW5naW5lKGUyKSB7CisJCQlzdHJ1 Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKl9fZTIgPQorCQkJCSZlbmdpbmVfZGF0YS5lbmdp bmVzW2VuZ2luZV9kYXRhLm5lbmdpbmVzXTsKKworCQkJaWYgKCFpZ3Rfb25seV9saXN0X3N1YnRl c3RzKCkpIHsKKwkJCQlfX2UyLT5mbGFncyA9IGdlbV9jbGFzc19pbnN0YW5jZV90b19lYl9mbGFn cyhmZCwKKwkJCQkJCWUyLT5jbGFzcywgZTItPmluc3RhbmNlKTsKKworCQkJCWlmICghZ2VtX2hh c19yaW5nKGZkLCBfX2UyLT5mbGFncykpCisJCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQlfX2Uy LT5uYW1lICAgICAgID0gZTItPm5hbWU7CisJCQlfX2UyLT5pbnN0YW5jZSAgID0gZTItPmluc3Rh bmNlOworCQkJX19lMi0+Y2xhc3MgICAgICA9IGUyLT5jbGFzczsKKwkJCV9fZTItPmlzX3ZpcnR1 YWwgPSBmYWxzZTsKKworCQkJZW5naW5lX2RhdGEubmVuZ2luZXMrKzsKKwkJfQorCQlyZXR1cm4g ZW5naW5lX2RhdGE7CisJfQorCisJaWYgKCFwYXJhbS5zaXplKSB7CisJCS8qIGVsc2UgaWYgY29u dGV4dCBkb2Vzbid0IGhhdmUgbWFwcGVkIGVuZ2luZXMgKi8KKwkJcXVlcnlfZW5naW5lX2xpc3Qo ZmQsICZlbmdpbmVfZGF0YSk7CisJCWN0eF9tYXBfZW5naW5lcyhmZCwgJmVuZ2luZV9kYXRhLCAm cGFyYW0pOworCisJfSBlbHNlIHsKKwkJLyogY29udGV4dCBoYXMgYSBsaXN0IG9mIG1hcHBlZCBl bmdpbmVzICovCisKKwkJZm9yIChpID0gMDsgaSA8IG5lbmdpbmVzOyBpKyspCisJCQlpbml0X2Vu Z2luZSgmZW5naW5lX2RhdGEuZW5naW5lc1tpXSwKKwkJCQkgICAgZW5naW5lcy5jbGFzc19pbnN0 YW5jZVtpXS5lbmdpbmVfY2xhc3MsCisJCQkJICAgIGVuZ2luZXMuY2xhc3NfaW5zdGFuY2VbaV0u ZW5naW5lX2luc3RhbmNlLAorCQkJCSAgICBpKTsKKworCQllbmdpbmVfZGF0YS5uZW5naW5lcyA9 IGk7CisJfQorCisJcmV0dXJuIGVuZ2luZV9kYXRhOworfQorCitpbnQgZ2VtX2N0eF9nZXRfZW5n aW5lKGludCBmZCwgdWludDMyX3QgZW5naW5lLCB1aW50MzJfdCBjdHhfaWQsCisJCSAgICAgICBz dHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCit7CisJSTkxNV9ERUZJTkVfQ09OVEVY VF9QQVJBTV9FTkdJTkVTKGVuZ2luZXMsIEdFTV9NQVhfRU5HSU5FUyk7CisJc3RydWN0IGRybV9p OTE1X2dlbV9jb250ZXh0X3BhcmFtIHBhcmFtID0geworCQkucGFyYW0gPSBJOTE1X0NPTlRFWFRf UEFSQU1fRU5HSU5FUywKKwkJLmN0eF9pZCA9IGN0eF9pZCwKKwkJLnNpemUgPSBTSVpFT0ZfQ1RY X1BBUkFNLAorCQkudmFsdWUgPSB0b191c2VyX3BvaW50ZXIoJmVuZ2luZXMpLAorCX07CisJaW50 IG5lbmdpbmVzID0gZ2VtX3RvcG9sb2d5X2dldF9wYXJhbShmZCwgY3R4X2lkLCAmcGFyYW0pOwor CisJaWYgKG5lbmdpbmVzIDwgMCkKKwkJcmV0dXJuIG5lbmdpbmVzOworCisJaWYgKCFwYXJhbS5z aXplIHx8ICFuZW5naW5lcykKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwllLT5jbGFzcyA9IGVuZ2lu ZXMuY2xhc3NfaW5zdGFuY2VbZW5naW5lXS5lbmdpbmVfY2xhc3M7CisJZS0+aW5zdGFuY2UgPSBl bmdpbmVzLmNsYXNzX2luc3RhbmNlW2VuZ2luZV0uZW5naW5lX2luc3RhbmNlOworCisJcmV0dXJu IDA7Cit9CisKK2Jvb2wgZ2VtX2hhc19lbmdpbmVfdG9wb2xvZ3koaW50IGZkKQoreworCXN0cnVj dCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSBwYXJhbSA9IHsKKwkJLnBhcmFtID0gSTkxNV9D T05URVhUX1BBUkFNX0VOR0lORVMsCisJfTsKKworCXJldHVybiAhX19nZW1fY29udGV4dF9nZXRf cGFyYW0oZmQsICZwYXJhbSk7Cit9CmRpZmYgLS1naXQgYS9saWIvaTkxNS9nZW1fZW5naW5lX3Rv cG9sb2d5LmggYi9saWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmgKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44MDZjMjYwYjEwNzQKLS0tIC9kZXYvbnVsbAorKysg Yi9saWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAq IENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBp cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n IGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRo b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmln aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi bGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRv IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJv dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5n IHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMg b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUg U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO RCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBU SEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAq IFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN LCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9S IElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFM SU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNpZm5kZWYgR0VNX0VOR0lORV9UT1BP TE9HWV9ICisjZGVmaW5lIEdFTV9FTkdJTkVfVE9QT0xPR1lfSAorCisjaW5jbHVkZSAiaWd0X2d0 LmgiCisjaW5jbHVkZSAiaTkxNV9kcm0uaCIKKworLyoKKyAqIExpbWl0IHdoYXQgd2Ugc3VwcG9y dCBmb3Igc2ltcGxpY2l0eSBkdWUgbGltaXRhdGlvbiBpbiBob3cgbXVjaCB3ZQorICogY2FuIGFk ZHJlc3MgdmlhIGV4ZWNidWYyLgorICovCisjZGVmaW5lIFNJWkVPRl9DVFhfUEFSQU0Jb2Zmc2V0 b2Yoc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzLCBcCisJCQkJCWNsYXNzX2luc3Rh bmNlW0dFTV9NQVhfRU5HSU5FU10pCisjZGVmaW5lIFNJWkVPRl9RVUVSWQkJb2Zmc2V0b2Yoc3Ry dWN0IGRybV9pOTE1X3F1ZXJ5X2VuZ2luZV9pbmZvLCBcCisJCQkJCWVuZ2luZXNbR0VNX01BWF9F TkdJTkVTXSkKKworI2RlZmluZSBHRU1fTUFYX0VOR0lORVMJCUk5MTVfRVhFQ19SSU5HX01BU0sg KyAxCisKK3N0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSB7CisJdWludDMyX3QgbmVuZ2luZXM7CisJ dWludDMyX3QgbjsKKwlpbnQgZXJyb3I7CisJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUy ICpjdXJyZW50X2VuZ2luZTsKKwlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgZW5naW5l c1tHRU1fTUFYX0VOR0lORVNdOworfTsKKworYm9vbCBnZW1faGFzX2VuZ2luZV90b3BvbG9neShp bnQgZmQpOworc3RydWN0IGludGVsX2VuZ2luZV9kYXRhIGludGVsX2luaXRfZW5naW5lX2xpc3Qo aW50IGZkLCB1aW50MzJfdCBjdHhfaWQpOworCisvKiBpdGVyYXRpb24gZnVuY3Rpb25zICovCitz dHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIKKyppbnRlbF9nZXRfY3VycmVudF9lbmdpbmUo c3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCk7CisKK3N0cnVjdCBpbnRlbF9leGVjdXRpb25f ZW5naW5lMgorKmludGVsX2dldF9jdXJyZW50X3BoeXNpY2FsX2VuZ2luZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2RhdGEgKmVkKTsKKwordm9pZCBpbnRlbF9uZXh0X2VuZ2luZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2RhdGEgKmVkKTsKKworaW50IGdlbV9jdHhfZ2V0X2VuZ2luZShpbnQgZmQsIHVpbnQz Ml90IGVuZ2luZSwgdWludDMyX3QgY3R4X2lkLAorCQkgICAgICAgc3RydWN0IGludGVsX2V4ZWN1 dGlvbl9lbmdpbmUyICplKTsKKworI2RlZmluZSBfX2Zvcl9lYWNoX3N0YXRpY19lbmdpbmUoZV9f 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==