From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v11 6/6] drm/i915: expose rcs topology through query uAPI Date: Mon, 22 Jan 2018 09:44:06 +0000 Message-ID: References: <20180122082149.9847-1-lionel.g.landwerlin@intel.com> <20180122082149.9847-7-lionel.g.landwerlin@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id B45EC6E0D7 for ; Mon, 22 Jan 2018 09:44:08 +0000 (UTC) In-Reply-To: <20180122082149.9847-7-lionel.g.landwerlin@intel.com> Content-Language: en-GB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lionel Landwerlin , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDIyLzAxLzIwMTggMDg6MjEsIExpb25lbCBMYW5kd2VybGluIHdyb3RlOgo+IFdpdGggdGhl IGludHJvZHVjdGlvbiBvZiBhc3ltbWV0cmljIHNsaWNlcyBpbiBDTkwsIHdlIGNhbm5vdCByZWx5 IG9uCj4gdGhlIHByZXZpb3VzIFNVQlNMSUNFX01BU0sgZ2V0cGFyYW0gdG8gdGVsbCB1c2Vyc3Bh Y2Ugd2hhdCBzdWJzbGljZXMKPiBhcmUgYXZhaWxhYmxlLiBIZXJlIHdlIGludHJvZHVjZSBhIG1v cmUgZGV0YWlsZWQgd2F5IG9mIHF1ZXJ5aW5nIHRoZQo+IEdlbidzIEdQVSB0b3BvbG9neSB0aGF0 IGRvZXNuJ3QgYWdncmVnYXRlIG51bWJlcnMuCj4gCj4gVGhpcyBpcyBlc3NlbnRpYWwgZm9yIG1v bml0b3JpbmcgcGFydHMgb2YgdGhlIEdQVSB3aXRoIHRoZSBPQSB1bml0LAo+IGJlY2F1c2UgY291 bnRlcnMgbmVlZCB0byBiZSBub3JtYWxpemVkIHRvIHRoZSBudW1iZXIgb2YKPiBFVXMvc3Vic2xp Y2VzL3NsaWNlcy4gVGhlIGN1cnJlbnQgYWdncmVnYXRlZCBudW1iZXJzIGxpa2UgRVVfVE9UQUwg ZG8KPiBub3QgZ2l2ZXMgdXMgc3VmZmljaWVudCBpbmZvcm1hdGlvbi4KPiAKPiBBcyBhIGJvbnVz IHdlIGNhbiBkcmF3IHJlcHJlc2VudGF0aW9ucyBvZiB0aGUgR1BVIDoKPiAKPiAgICAgICAgICBo dHRwczovL2ltZ3VyLmNvbS9hL3Z1cXBhCj4gCj4gdjI6IFJlbmFtZSB1YXBpIHN0cnVjdCBzL19t YXNrL19pbmZvLyAoVHZydGtvKQo+ICAgICAgUmVwb3J0IG1heF9zbGljZS9zdWJzbGljZS9ldXNf cGVyX3N1YnNsaWNlIHJhdGhlciB0aGFuIHN0cmlkZXMgKFR2cnRrbykKPiAgICAgIEFkZCB1YXBp IG1hY3JvcyB0byByZWFkIGRhdGEgZnJvbSAqX2luZm8gc3RydWN0cyAoVHZydGtvKQo+IAo+IHYz OiBVc2UgISEodiAmIERSTV9JOTE1X0JJVCgpKSBmb3IgdWFwaSBtYWNyb3MgaW5zdGVhZCBvZiBj dXN0b20gc2hpZnRzIChUdnJ0a28pCj4gCj4gdjQ6IGZhY3Rvcml6ZSBxdWVyeSBpdGVtIHdyaXR0 aW5nIChUdnJ0a28pCj4gICAgICB0d2VhayB1YXBpIHN0cnVjdC9kZWZpbmUgbmFtZXMgKFR2cnRr bykKPiAKPiB2NTogUmVwbGFjZSBBTElHTigpIG1hY3JvIChDaHJpcykKPiAKPiB2NjogVXBkYXRl ZCB1YXBpIGNvbW1lbnRzIChUdnJ0a28pCj4gICAgICBNb3ZlZCBmbGFncyAhPSAwIGNoZWNrcyBp bnRvIHZmdW5jcyAoVHZydGtvKQo+IAo+IHY3OiBVc2UgYWNjZXNzX29rKCkgYmVmb3JlIGNvcHlp bmcgYW55dGhpbmcsIHRvIGF2b2lkIG92ZXJmbG93cyAoQ2hyaXMpCj4gICAgICBTd2l0Y2ggQlVH X09OKCkgdG8gR0VNX1dBUk5fT04oKSAoVHZydGtvKQo+IAo+IHY4OiBUd2VhayB1YXBpIGNvbW1l bnRzIHN0eWxlIHRvIG1hdGNoIHRoZSBjb2Rpbmcgc3R5bGUgKExpb25lbCkKPiAKPiB2OTogRml4 IGVycm9yIGluIGNvbW1lbnQgYWJvdXQgY29tcHV0YXRpb24gb2YgZW5hYmxlZCBzdWJzbGljZSAo VHZydGtvKQo+IAo+IFNpZ25lZC1vZmYtYnk6IExpb25lbCBMYW5kd2VybGluIDxsaW9uZWwuZy5s YW5kd2VybGluQGludGVsLmNvbT4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cXVlcnkuYyB8IDExMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAg aW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oICAgICAgIHwgIDcxICsrKysrKysrKysrKysrKysr KysrKysrKwo+ICAgMiBmaWxlcyBjaGFuZ2VkLCAxODEgaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3F1ZXJ5LmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3F1ZXJ5LmMKPiBpbmRleCA1YWE4ODYzMTNjZjkuLmZmODdlYzhhMzIxYSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3F1ZXJ5LmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3F1ZXJ5LmMKPiBAQCAtMjUsOCArMjUsMTE4IEBACj4g ICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiAgICNpbmNsdWRlIDx1YXBpL2RybS9pOTE1X2RybS5o Pgo+ICAgCj4gK3N0YXRpYyBpbnQgY29weV9xdWVyeV9kYXRhKHN0cnVjdCBkcm1faTkxNV9xdWVy eV9pdGVtICpxdWVyeV9pdGVtLAo+ICsJCQkgICBjb25zdCB2b2lkICppdGVtX3B0ciwgdTMyIGl0 ZW1fbGVuZ3RoLAo+ICsJCQkgICBjb25zdCB2b2lkICpkYXRhX3B0ciwgdTMyIGRhdGFfbGVuZ3Ro KQo+ICt7Cj4gKwl1MzIgdG90YWxfbGVuZ3RoID0gaXRlbV9sZW5ndGggKyBkYXRhX2xlbmd0aDsK PiArCj4gKwlpZiAoR0VNX1dBUk5fT04oYWRkX292ZXJmbG93cyhpdGVtX2xlbmd0aCwgZGF0YV9s ZW5ndGgpKSkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlpZiAocXVlcnlfaXRlbS0+bGVu Z3RoID09IDApCj4gKwkJcmV0dXJuIHRvdGFsX2xlbmd0aDsKPiArCj4gKwlpZiAocXVlcnlfaXRl bS0+bGVuZ3RoIDwgdG90YWxfbGVuZ3RoKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWlm ICghYWNjZXNzX29rKFZFUklGWV9XUklURSwgdTY0X3RvX3VzZXJfcHRyKHF1ZXJ5X2l0ZW0tPmRh dGFfcHRyKSwKPiArCQkgICAgICAgdG90YWxfbGVuZ3RoKSkKPiArCQlyZXR1cm4gLUVGQVVMVDsK PiArCj4gKwlpZiAoX19jb3B5X3RvX3VzZXIodTY0X3RvX3VzZXJfcHRyKHF1ZXJ5X2l0ZW0tPmRh dGFfcHRyKSwKPiArCQkJICAgaXRlbV9wdHIsIGl0ZW1fbGVuZ3RoKSkKPiArCQlyZXR1cm4gLUVG QVVMVDsKPiArCj4gKwlpZiAoX19jb3B5X3RvX3VzZXIodTY0X3RvX3VzZXJfcHRyKHF1ZXJ5X2l0 ZW0tPmRhdGFfcHRyICsgaXRlbV9sZW5ndGgpLAo+ICsJCQkgICBkYXRhX3B0ciwgZGF0YV9sZW5n dGgpKQo+ICsJCXJldHVybiAtRUZBVUxUOwo+ICsKPiArCXJldHVybiB0b3RhbF9sZW5ndGg7Cj4g K30KPiArCj4gK3N0YXRpYyBpbnQgcXVlcnlfc2xpY2VfaW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gKwkJCSAgICBzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfaXRlbSAqcXVl cnlfaXRlbSkKPiArewo+ICsJY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAmSU5U RUxfSU5GTyhkZXZfcHJpdiktPnNzZXU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfc2xpY2Vf aW5mbyBzbGljZV9pbmZvOwo+ICsKPiArCWlmIChxdWVyeV9pdGVtLT5mbGFncyAhPSAwKQo+ICsJ CXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWlmIChzc2V1LT5tYXhfc2xpY2VzID09IDApCj4gKwkJ cmV0dXJuIC1FTk9ERVY7Cj4gKwo+ICsJLyoKPiArCSAqIElmIHdlIGV2ZXIgY2hhbmdlIHRoZSBp bnRlcm5hbCBzbGljZSBtYXNrIGRhdGEgdHlwZSwgd2UnbGwgbmVlZCB0bwo+ICsJICogdXBkYXRl IHRoaXMgZnVuY3Rpb24uCj4gKwkgKi8KPiArCUJVSUxEX0JVR19PTihzaXplb2YodTgpICE9IHNp emVvZihzc2V1LT5zbGljZV9tYXNrKSk7Cj4gKwo+ICsJbWVtc2V0KCZzbGljZV9pbmZvLCAwLCBz aXplb2Yoc2xpY2VfaW5mbykpOwo+ICsJc2xpY2VfaW5mby5tYXhfc2xpY2VzID0gc3NldS0+bWF4 X3NsaWNlczsKPiArCj4gKwlyZXR1cm4gY29weV9xdWVyeV9kYXRhKHF1ZXJ5X2l0ZW0sICZzbGlj ZV9pbmZvLCBzaXplb2Yoc2xpY2VfaW5mbyksCj4gKwkJCSAgICAgICAmc3NldS0+c2xpY2VfbWFz aywgc2l6ZW9mKHNzZXUtPnNsaWNlX21hc2spKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBxdWVy eV9zdWJzbGljZV9pbmZvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJ ICAgICAgIHN0cnVjdCBkcm1faTkxNV9xdWVyeV9pdGVtICpxdWVyeV9pdGVtKQo+ICt7Cj4gKwlj b25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSA9ICZJTlRFTF9JTkZPKGRldl9wcml2KS0+ c3NldTsKPiArCXN0cnVjdCBkcm1faTkxNV9xdWVyeV9zdWJzbGljZV9pbmZvIHN1YnNsaWNlX2lu Zm87Cj4gKwl1MzIgZGF0YV9sZW5ndGg7Cj4gKwo+ICsJaWYgKHF1ZXJ5X2l0ZW0tPmZsYWdzICE9 IDApCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJaWYgKHNzZXUtPm1heF9zbGljZXMgPT0g MCkKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gKwltZW1zZXQoJnN1YnNsaWNlX2luZm8sIDAs IHNpemVvZihzdWJzbGljZV9pbmZvKSk7Cj4gKwlzdWJzbGljZV9pbmZvLm1heF9zbGljZXMgPSBz c2V1LT5tYXhfc2xpY2VzOwo+ICsJc3Vic2xpY2VfaW5mby5tYXhfc3Vic2xpY2VzID0gc3NldS0+ bWF4X3N1YnNsaWNlczsKPiArCj4gKwlkYXRhX2xlbmd0aCA9IHN1YnNsaWNlX2luZm8ubWF4X3Ns aWNlcyAqCj4gKwkJRElWX1JPVU5EX1VQKHN1YnNsaWNlX2luZm8ubWF4X3N1YnNsaWNlcywKPiAr CQkJICAgICBzaXplb2Yoc3NldS0+c3Vic2xpY2VfbWFza1swXSkgKiBCSVRTX1BFUl9CWVRFKTsK PiArCj4gKwlyZXR1cm4gY29weV9xdWVyeV9kYXRhKHF1ZXJ5X2l0ZW0sCj4gKwkJCSAgICAgICAm c3Vic2xpY2VfaW5mbywgc2l6ZW9mKHN1YnNsaWNlX2luZm8pLAo+ICsJCQkgICAgICAgc3NldS0+ c3Vic2xpY2VfbWFzaywgZGF0YV9sZW5ndGgpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHF1ZXJ5 X2V1X2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkgc3RydWN0 IGRybV9pOTE1X3F1ZXJ5X2l0ZW0gKnF1ZXJ5X2l0ZW0pCj4gK3sKPiArCWNvbnN0IHN0cnVjdCBz c2V1X2Rldl9pbmZvICpzc2V1ID0gJklOVEVMX0lORk8oZGV2X3ByaXYpLT5zc2V1Owo+ICsJc3Ry dWN0IGRybV9pOTE1X3F1ZXJ5X2V1X2luZm8gZXVfaW5mbzsKPiArCXUzMiBkYXRhX2xlbmd0aDsK PiArCj4gKwlpZiAocXVlcnlfaXRlbS0+ZmxhZ3MgIT0gMCkKPiArCQlyZXR1cm4gLUVJTlZBTDsK PiArCj4gKwlpZiAoc3NldS0+bWF4X3NsaWNlcyA9PSAwKQo+ICsJCXJldHVybiAtRU5PREVWOwo+ ICsKPiArCW1lbXNldCgmZXVfaW5mbywgMCwgc2l6ZW9mKGV1X2luZm8pKTsKPiArCWV1X2luZm8u bWF4X3NsaWNlcyA9IHNzZXUtPm1heF9zbGljZXM7Cj4gKwlldV9pbmZvLm1heF9zdWJzbGljZXMg PSBzc2V1LT5tYXhfc3Vic2xpY2VzOwo+ICsJZXVfaW5mby5tYXhfZXVzX3Blcl9zdWJzbGljZSA9 IHNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlOwo+ICsKPiArCWRhdGFfbGVuZ3RoID0gZXVfaW5m by5tYXhfc2xpY2VzICogZXVfaW5mby5tYXhfc3Vic2xpY2VzICoKPiArCQlESVZfUk9VTkRfVVAo ZXVfaW5mby5tYXhfZXVzX3Blcl9zdWJzbGljZSwgQklUU19QRVJfQllURSk7Cj4gKwo+ICsJcmV0 dXJuIGNvcHlfcXVlcnlfZGF0YShxdWVyeV9pdGVtLAo+ICsJCQkgICAgICAgJmV1X2luZm8sIHNp emVvZihldV9pbmZvKSwKPiArCQkJICAgICAgIHNzZXUtPmV1X21hc2ssIGRhdGFfbGVuZ3RoKTsK PiArfQo+ICsKPiAgIHN0YXRpYyBpbnQgKCogY29uc3QgaTkxNV9xdWVyeV9mdW5jc1tdKShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJCQkJCXN0cnVjdCBkcm1faTkxNV9x dWVyeV9pdGVtICpxdWVyeV9pdGVtKSA9IHsKPiArCXF1ZXJ5X3NsaWNlX2luZm8sCj4gKwlxdWVy eV9zdWJzbGljZV9pbmZvLAo+ICsJcXVlcnlfZXVfaW5mbywKPiAgIH07Cj4gICAKPiAgIGludCBp OTE1X3F1ZXJ5X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVj dCBkcm1fZmlsZSAqZmlsZSkKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2Ry bS5oIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4gaW5kZXggMDNmMDMxNjUyZDg2Li43 YWU4ZTlhYTAyMDYgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4g KysrIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4gQEAgLTE2MTgsNiArMTYxOCw5IEBA IHN0cnVjdCBkcm1faTkxNV9wZXJmX29hX2NvbmZpZyB7Cj4gICAKPiAgIHN0cnVjdCBkcm1faTkx NV9xdWVyeV9pdGVtIHsKPiAgIAlfX3U2NCBxdWVyeV9pZDsKPiArI2RlZmluZSBEUk1fSTkxNV9R VUVSWV9TTElDRV9JTkZPCTB4MDEKPiArI2RlZmluZSBEUk1fSTkxNV9RVUVSWV9TVUJTTElDRV9J TkZPCTB4MDIKPiArI2RlZmluZSBEUk1fSTkxNV9RVUVSWV9FVV9JTkZPCQkweDAzCj4gICAKPiAg IAkvKgo+ICAgCSAqIFdoZW4gc2V0IHRvIHplcm8gYnkgdXNlcnNwYWNlLCB0aGlzIGlzIGZpbGxl ZCB3aXRoIHRoZSBzaXplIG9mIHRoZQo+IEBAIC0xNjU0LDYgKzE2NTcsNzQgQEAgc3RydWN0IGRy bV9pOTE1X3F1ZXJ5IHsKPiAgIAlfX3U2NCBpdGVtc19wdHI7Cj4gICB9Owo+ICAgCj4gKyNkZWZp bmUgRFJNX0k5MTVfQklUKGJpdCkgKChfX3UzMikxIDw8IChiaXQpKQo+ICsjZGVmaW5lIERSTV9J OTE1X0RJVl9ST1VORF9VUCh2YWwsIGRpdikgKCgodmFsKSArIChkaXYpIC0gMSkgLyAoZGl2KSkK PiArCj4gKy8qCj4gKyAqIERhdGEgd3JpdHRlbiBieSB0aGUga2VybmVsIHdpdGggcXVlcnkgRFJN X0k5MTVfUVVFUllfU0xJQ0VfSU5GTyA6Cj4gKyAqCj4gKyAqIGRhdGE6IGVhY2ggYml0IGluZGlj YXRlcyB3aGV0aGVyIGEgc2xpY2UgaXMgYXZhaWxhYmxlICgxKSBvciBmdXNlZCBvZmYgKDApLgo+ ICsgKiAgICAgICBGb3JtdWxhIHRvIHRlbGwgaWYgc2xpY2UgWCBpcyBhdmFpbGFibGUgOgo+ICsg Kgo+ICsgKiAgICAgICAgICAgIChkYXRhW1ggLyA4XSA+PiAoWCAlIDgpKSAmIDEKPiArICoKPiAr ICogICAgICAgQWx0ZXJuYXRpdmVseSwgdXNlIERSTV9JOTE1X1FVRVJZX1NMSUNFX0FWQUlMQUJM RSgpIHRvIHF1ZXJ5IGEKPiArICogICAgICAgZ2l2ZW4gc3Vic2xpY2UncyBhdmFpbGFiaWxpdHku Cj4gKyAqLwo+ICtzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfc2xpY2VfaW5mbyB7Cj4gKwlfX3UzMiBt YXhfc2xpY2VzOwo+ICsKPiArI2RlZmluZSBEUk1fSTkxNV9RVUVSWV9TTElDRV9BVkFJTEFCTEUo aW5mbywgc2xpY2UpIFwKPiArCSEhKChpbmZvKS0+ZGF0YVsoc2xpY2UpIC8gOF0gJiBEUk1fSTkx NV9CSVQoKHNsaWNlKSAlIDgpKQo+ICsJX191OCBkYXRhW107Cj4gK307Cj4gKwo+ICsvKgo+ICsg KiBEYXRhIHdyaXR0ZW4gYnkgdGhlIGtlcm5lbCB3aXRoIHF1ZXJ5IERSTV9JOTE1X1FVRVJZX1NV QlNMSUNFX0lORk8gOgo+ICsgKgo+ICsgKiBkYXRhOiBlYWNoIGJpdCBpbmRpY2F0ZXMgd2hldGhl ciBhIHN1YnNsaWNlIGlzIGF2YWlsYWJsZSAoMSkgb3IgZnVzZWQgb2ZmCj4gKyAqICAgICAgICgw KS4gRm9ybXVsYSB0byB0ZWxsIGlmIHNsaWNlIFggc3Vic2xpY2UgWSBpcyBhdmFpbGFibGUgOgo+ ICsgKgo+ICsgKiAgICAgICAgICAgIChkYXRhWyhYICogQUxJR04obWF4X3N1YnNsaWNlcywgOCkg LyA4KSArIFkgLyA4XSA+PiAoWSAlIDgpKSAmIDEKPiArICoKPiArICogICAgICAgQWx0ZXJuYXRp dmVseSwgdXNlIERSTV9JOTE1X1FVRVJZX1NVQlNMSUNFX0FWQUlMQUJMRSgpIHRvIHF1ZXJ5IGEK PiArICogICAgICAgZ2l2ZW4gc3Vic2xpY2UncyBhdmFpbGFiaWxpdHkuCj4gKyAqLwo+ICtzdHJ1 Y3QgZHJtX2k5MTVfcXVlcnlfc3Vic2xpY2VfaW5mbyB7Cj4gKwlfX3UzMiBtYXhfc2xpY2VzOwo+ ICsJX191MzIgbWF4X3N1YnNsaWNlczsKPiArCj4gKyNkZWZpbmUgRFJNX0k5MTVfUVVFUllfU1VC U0xJQ0VfQVZBSUxBQkxFKGluZm8sIHNsaWNlLCBzdWJzbGljZSkgXAo+ICsJISEoKGluZm8pLT5k YXRhWyhzbGljZSkgKiBEUk1fSTkxNV9ESVZfUk9VTkRfVVAoKGluZm8pLT5tYXhfc3Vic2xpY2Vz LCA4KSArIFwKPiArCQkJKHN1YnNsaWNlKSAvIDhdICYgRFJNX0k5MTVfQklUKChzdWJzbGljZSkg JSA4KSkKPiArCV9fdTggZGF0YVtdOwo+ICt9Owo+ICsKPiArLyoKPiArICogRGF0YSB3cml0dGVu IGJ5IHRoZSBrZXJuZWwgd2l0aCBxdWVyeSBEUk1fSTkxNV9RVUVSWV9FVV9JTkZPIDoKPiArICoK PiArICogZGF0YTogRWFjaCBiaXQgaW5kaWNhdGVzIHdoZXRoZXIgYW4gRVUgaXMgYXZhaWxhYmxl ICgxKSBvciBmdXNlZCBvZmYgKDApLgo+ICsgKiAgICAgICBGb3JtdWxhIHRvIHRlbGwgaWYgc2xp Y2UgWCBzdWJzbGljZSBZIGV1IFogaXMgYXZhaWxhYmxlIDoKPiArICoKPiArICogICAgICAgICAg IChkYXRhW1ggKiBtYXhfc3Vic2xpY2VzICogQUxJR04obWF4X2V1c19wZXJfc3Vic2xpY2UsIDgp IC8gOCArCj4gKyAqICAgICAgICAgICAgICAgICBZICogQUxJR04obWF4X2V1c19wZXJfc3Vic2xp Y2UsIDgpIC8gOCArCj4gKyAqICAgICAgICAgICAgICAgICBaIC8gOF0gPj4gKFogJSA4KSkgJiAx Cj4gKyAqCj4gKyAqICAgICAgIEFsdGVybmF0aXZlbHksIHVzZSBEUk1fSTkxNV9RVUVSWV9FVV9B VkFJTEFCTEUoKSB0byBxdWVyeSBhIGdpdmVuCj4gKyAqICAgICAgIEVVJ3MgYXZhaWxhYmlsaXR5 Lgo+ICsgKi8KPiArc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2V1X2luZm8gewo+ICsJX191MzIgbWF4 X3NsaWNlczsKPiArCV9fdTMyIG1heF9zdWJzbGljZXM7Cj4gKwlfX3UzMiBtYXhfZXVzX3Blcl9z dWJzbGljZTsKPiArCj4gKyNkZWZpbmUgRFJNX0k5MTVfUVVFUllfRVVfQVZBSUxBQkxFKGluZm8s IHNsaWNlLCBzdWJzbGljZSwgZXUpIFwKPiArCSEhKChpbmZvKS0+ZGF0YVsoc2xpY2UpICogRFJN X0k5MTVfRElWX1JPVU5EX1VQKChpbmZvKS0+bWF4X2V1c19wZXJfc3Vic2xpY2UsIDgpICogKGlu Zm8pLT5tYXhfc3Vic2xpY2VzICsgXAo+ICsJCQkoc3Vic2xpY2UpICogRFJNX0k5MTVfRElWX1JP VU5EX1VQKChpbmZvKS0+bWF4X2V1c19wZXJfc3Vic2xpY2UsIDgpICsgXAo+ICsJCQkoZXUpIC8g OF0gJiBEUk1fSTkxNV9CSVQoKGV1KSAlIDgpKQo+ICsJX191OCBkYXRhW107Cj4gK307Cj4gKwo+ ICAgI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCj4gICB9Cj4gICAjZW5kaWYKPiAKCkxvb2tzIE9L IHRvIG1lLgoKUmV2aWV3ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRl bC5jb20+CgpSZWdhcmRzLAoKVHZydGtvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=