From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lionel Landwerlin Subject: Re: [PATCH v4 6/6] drm/i915: expose rcs topology through query uAPI Date: Tue, 16 Jan 2018 10:42:53 +0000 Message-ID: <458e8c6e-4354-ca21-4b3a-0719b820d93e@intel.com> References: <20180115144159.25913-1-lionel.g.landwerlin@intel.com> <20180115144159.25913-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 mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 243F86E1E7 for ; Tue, 16 Jan 2018 10:42:56 +0000 (UTC) In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMTYvMDEvMTggMDg6NDIsIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+Cj4gT24gMTUvMDEvMjAx OCAxODoyMywgTGlvbmVsIExhbmR3ZXJsaW4gd3JvdGU6Cj4+IE9uIDE1LzAxLzE4IDE3OjU0LCBU dnJ0a28gVXJzdWxpbiB3cm90ZToKPj4+Cj4+PiBPbiAxNS8wMS8yMDE4IDE0OjQxLCBMaW9uZWwg TGFuZHdlcmxpbiB3cm90ZToKPj4+PiBXaXRoIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYXN5bW1ldHJp YyBzbGljZXMgaW4gQ05MLCB3ZSBjYW5ub3QgcmVseSBvbgo+Pj4+IHRoZSBwcmV2aW91cyBTVUJT TElDRV9NQVNLIGdldHBhcmFtIHRvIHRlbGwgdXNlcnNwYWNlIHdoYXQgc3Vic2xpY2VzCj4+Pj4g YXJlIGF2YWlsYWJsZS4gSGVyZSB3ZSBpbnRyb2R1Y2UgYSBtb3JlIGRldGFpbGVkIHdheSBvZiBx dWVyeWluZyB0aGUKPj4+PiBHZW4ncyBHUFUgdG9wb2xvZ3kgdGhhdCBkb2Vzbid0IGFnZ3JlZ2F0 ZSBudW1iZXJzLgo+Pj4+Cj4+Pj4gVGhpcyBpcyBlc3NlbnRpYWwgZm9yIG1vbml0b3JpbmcgcGFy dHMgb2YgdGhlIEdQVSB3aXRoIHRoZSBPQSB1bml0LAo+Pj4+IGJlY2F1c2UgY291bnRlcnMgbmVl ZCB0byBiZSBub3JtYWxpemVkIHRvIHRoZSBudW1iZXIgb2YKPj4+PiBFVXMvc3Vic2xpY2VzL3Ns aWNlcy4gVGhlIGN1cnJlbnQgYWdncmVnYXRlZCBudW1iZXJzIGxpa2UgRVVfVE9UQUwgZG8KPj4+ PiBub3QgZ2l2ZXMgdXMgc3VmZmljaWVudCBpbmZvcm1hdGlvbi4KPj4+Pgo+Pj4+IEFzIGEgYm9u dXMgd2UgY2FuIGRyYXcgcmVwcmVzZW50YXRpb25zIG9mIHRoZSBHUFUgOgo+Pj4+Cj4+Pj4gwqDC oMKgwqDCoMKgwqDCoCBodHRwczovL2ltZ3VyLmNvbS9hL3Z1cXBhCj4+Pj4KPj4+PiB2MjogUmVu YW1lIHVhcGkgc3RydWN0IHMvX21hc2svX2luZm8vIChUdnJ0a28pCj4+Pj4gwqDCoMKgwqAgUmVw b3J0IG1heF9zbGljZS9zdWJzbGljZS9ldXNfcGVyX3N1YnNsaWNlIHJhdGhlciB0aGFuIHN0cmlk ZXMgCj4+Pj4gKFR2cnRrbykKPj4+PiDCoMKgwqDCoCBBZGQgdWFwaSBtYWNyb3MgdG8gcmVhZCBk YXRhIGZyb20gKl9pbmZvIHN0cnVjdHMgKFR2cnRrbykKPj4+Pgo+Pj4+IHYzOiBVc2UgISEodiAm IERSTV9JOTE1X0JJVCgpKSBmb3IgdWFwaSBtYWNyb3MgaW5zdGVhZCBvZiBjdXN0b20gCj4+Pj4g c2hpZnRzIChUdnJ0a28pCj4+Pj4KPj4+PiBTaWduZWQtb2ZmLWJ5OiBMaW9uZWwgTGFuZHdlcmxp biA8bGlvbmVsLmcubGFuZHdlcmxpbkBpbnRlbC5jb20+Cj4+Pj4gLS0tCj4+Pj4gwqAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9xdWVyeS5jIHwgMTM0IAo+Pj4+ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCj4+Pj4gwqAgaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5o wqDCoMKgwqDCoMKgIHzCoCA1MyArKysrKysrKysrKysrKysKPj4+PiDCoCAyIGZpbGVzIGNoYW5n ZWQsIDE4NyBpbnNlcnRpb25zKCspCj4+Pj4KPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9xdWVyeS5jIAo+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9x dWVyeS5jCj4+Pj4gaW5kZXggNTY5NGNmZWE0NTUzLi40NjVlYzE4YTQ3MmYgMTAwNjQ0Cj4+Pj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9xdWVyeS5jCj4+Pj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9xdWVyeS5jCj4+Pj4gQEAgLTI1LDggKzI1LDEyOSBAQAo+Pj4+ IMKgICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+Pj4+IMKgICNpbmNsdWRlIDx1YXBpL2RybS9pOTE1 X2RybS5oPgo+Pj4+IMKgICtzdGF0aWMgaW50IHF1ZXJ5X3NsaWNlc19pbmZvKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2l0ZW0gKnF1ZXJ5X2l0ZW0pCj4+Pj4gK3sKPj4+ PiArwqDCoMKgIGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1ID0gJklOVEVMX0lORk8o ZGV2X3ByaXYpLT5zc2V1Owo+Pj4+ICvCoMKgwqAgc3RydWN0IGRybV9pOTE1X3F1ZXJ5X3NsaWNl c19pbmZvIHNsaWNlc19pbmZvOwo+Pj4+ICvCoMKgwqAgdTMyIGRhdGFfbGVuZ3RoLCBsZW5ndGg7 Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgaWYgKHNzZXUtPm1heF9zbGljZXMgPT0gMCkKPj4+PiArwqDC oMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9ERVY7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgZGF0YV9sZW5n dGggPSBzaXplb2Yoc3NldS0+c2xpY2VfbWFzayk7Cj4+Pj4gK8KgwqDCoCBsZW5ndGggPSBzaXpl b2Yoc2xpY2VzX2luZm8pICsgZGF0YV9sZW5ndGg7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgLyoKPj4+ PiArwqDCoMKgwqAgKiBJZiB3ZSBldmVyIGNoYW5nZSB0aGUgaW50ZXJuYWwgc2xpY2UgbWFzayBk YXRhIHR5cGUsIHdlJ2xsIAo+Pj4+IG5lZWQgdG8KPj4+PiArwqDCoMKgwqAgKiB1cGRhdGUgdGhp cyBmdW5jdGlvbi4KPj4+PiArwqDCoMKgwqAgKi8KPj4+PiArwqDCoMKgIEJVSUxEX0JVR19PTihz aXplb2YodTgpICE9IHNpemVvZihzc2V1LT5zbGljZV9tYXNrKSk7Cj4+Pj4gKwo+Pj4+ICvCoMKg wqAgaWYgKHF1ZXJ5X2l0ZW0tPmxlbmd0aCA9PSAwKSB7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHF1 ZXJ5X2l0ZW0tPmxlbmd0aCA9IGxlbmd0aDsKPj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDA7 Cj4+Pj4gK8KgwqDCoCB9Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgaWYgKHF1ZXJ5X2l0ZW0tPmxlbmd0 aCAhPSBsZW5ndGgpCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOwo+Pj4+ICsK Pj4+PiArwqDCoMKgIG1lbXNldCgmc2xpY2VzX2luZm8sIDAsIHNpemVvZihzbGljZXNfaW5mbykp Owo+Pj4+ICvCoMKgwqAgc2xpY2VzX2luZm8ubWF4X3NsaWNlcyA9IHNzZXUtPm1heF9zbGljZXM7 Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgaWYgKGNvcHlfdG9fdXNlcih1NjRfdG9fdXNlcl9wdHIocXVl cnlfaXRlbS0+ZGF0YV9wdHIpLCAKPj4+PiAmc2xpY2VzX2luZm8sCj4+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBzaXplb2Yoc2xpY2VzX2luZm8pKSkKPj4+PiArwqDCoMKgwqDCoMKgwqAg cmV0dXJuIC1FRkFVTFQ7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgaWYgKGNvcHlfdG9fdXNlcih1NjRf dG9fdXNlcl9wdHIocXVlcnlfaXRlbS0+ZGF0YV9wdHIgKwo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9mZnNldG9mKHN0cnVjdCBkcm1faTkxNV9xdWVyeV9z bGljZXNfaW5mbywgCj4+Pj4gZGF0YSkpLAo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg JnNzZXUtPnNsaWNlX21hc2ssIGRhdGFfbGVuZ3RoKSkKPj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIC1FRkFVTFQ7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+Pj4gK30KPj4+PiAr Cj4+Pj4gK3N0YXRpYyBpbnQgcXVlcnlfc3Vic2xpY2VzX2luZm8oc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3Ry dWN0IGRybV9pOTE1X3F1ZXJ5X2l0ZW0gKnF1ZXJ5X2l0ZW0pCj4+Pj4gK3sKPj4+PiArwqDCoMKg IGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1ID0gJklOVEVMX0lORk8oZGV2X3ByaXYp LT5zc2V1Owo+Pj4+ICvCoMKgwqAgc3RydWN0IGRybV9pOTE1X3F1ZXJ5X3N1YnNsaWNlc19pbmZv IHN1YnNsaWNlc19pbmZvOwo+Pj4+ICvCoMKgwqAgdTMyIGRhdGFfbGVuZ3RoLCBsZW5ndGg7Cj4+ Pj4gKwo+Pj4+ICvCoMKgwqAgaWYgKHNzZXUtPm1heF9zbGljZXMgPT0gMCkKPj4+PiArwqDCoMKg wqDCoMKgwqAgcmV0dXJuIC1FTk9ERVY7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgbWVtc2V0KCZzdWJz bGljZXNfaW5mbywgMCwgc2l6ZW9mKHN1YnNsaWNlc19pbmZvKSk7Cj4+Pj4gK8KgwqDCoCBzdWJz bGljZXNfaW5mby5tYXhfc2xpY2VzID0gc3NldS0+bWF4X3NsaWNlczsKPj4+PiArwqDCoMKgIHN1 YnNsaWNlc19pbmZvLm1heF9zdWJzbGljZXMgPSBzc2V1LT5tYXhfc3Vic2xpY2VzOwo+Pj4+ICsK Pj4+PiArwqDCoMKgIGRhdGFfbGVuZ3RoID0gc3Vic2xpY2VzX2luZm8ubWF4X3NsaWNlcyAqCj4+ Pj4gK8KgwqDCoMKgwqDCoMKgIERJVl9ST1VORF9VUChzdWJzbGljZXNfaW5mby5tYXhfc3Vic2xp Y2VzLAo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzaXplb2Yoc3NldS0+ c3Vic2xpY2VfbWFza1swXSkgKiBCSVRTX1BFUl9CWVRFKTsKPj4+PiArwqDCoMKgIGxlbmd0aCA9 IHNpemVvZihzdWJzbGljZXNfaW5mbykgKyBkYXRhX2xlbmd0aDsKPj4+PiArCj4+Pj4gK8KgwqDC oCBpZiAocXVlcnlfaXRlbS0+bGVuZ3RoID09IDApIHsKPj4+PiArwqDCoMKgwqDCoMKgwqAgcXVl cnlfaXRlbS0+bGVuZ3RoID0gbGVuZ3RoOwo+Pj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsK Pj4+PiArwqDCoMKgIH0KPj4+PiArCj4+Pj4gK8KgwqDCoCBpZiAocXVlcnlfaXRlbS0+bGVuZ3Ro ICE9IGxlbmd0aCkKPj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+Pj4gKwo+ Pj4+ICvCoMKgwqAgaWYgKGNvcHlfdG9fdXNlcih1NjRfdG9fdXNlcl9wdHIocXVlcnlfaXRlbS0+ ZGF0YV9wdHIpLCAKPj4+PiAmc3Vic2xpY2VzX2luZm8sCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBzaXplb2Yoc3Vic2xpY2VzX2luZm8pKSkKPj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIC1FRkFVTFQ7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgaWYgKGNvcHlfdG9fdXNlcih1NjRfdG9f dXNlcl9wdHIocXVlcnlfaXRlbS0+ZGF0YV9wdHIgKwo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9mZnNldG9mKHN0cnVjdCAKPj4+PiBkcm1faTkxNV9xdWVy eV9zdWJzbGljZXNfaW5mbywgZGF0YSkpLAo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg c3NldS0+c3Vic2xpY2VfbWFzaywgZGF0YV9sZW5ndGgpKQo+Pj4+ICvCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gLUVGQVVMVDsKPj4+PiArCj4+Pj4gK8KgwqDCoCByZXR1cm4gMDsKPj4+PiArfQo+Pj4+ ICsKPj4+PiArc3RhdGljIGludCBxdWVyeV9ldXNfaW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1f aTkxNV9xdWVyeV9pdGVtICpxdWVyeV9pdGVtKQo+Pj4+ICt7Cj4+Pj4gK8KgwqDCoCBjb25zdCBz dHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSA9ICZJTlRFTF9JTkZPKGRldl9wcml2KS0+c3NldTsK Pj4+PiArwqDCoMKgIHN0cnVjdCBkcm1faTkxNV9xdWVyeV9ldXNfaW5mbyBldXNfaW5mbzsKPj4+ PiArwqDCoMKgIHUzMiBkYXRhX2xlbmd0aCwgbGVuZ3RoOwo+Pj4+ICsKPj4+PiArwqDCoMKgIGlm IChzc2V1LT5tYXhfc2xpY2VzID09IDApCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5P REVWOwo+Pj4+ICsKPj4+PiArwqDCoMKgIG1lbXNldCgmZXVzX2luZm8sIDAsIHNpemVvZihldXNf aW5mbykpOwo+Pj4+ICvCoMKgwqAgZXVzX2luZm8ubWF4X3NsaWNlcyA9IHNzZXUtPm1heF9zbGlj ZXM7Cj4+Pj4gK8KgwqDCoCBldXNfaW5mby5tYXhfc3Vic2xpY2VzID0gc3NldS0+bWF4X3N1YnNs aWNlczsKPj4+PiArwqDCoMKgIGV1c19pbmZvLm1heF9ldXNfcGVyX3N1YnNsaWNlID0gc3NldS0+ bWF4X2V1c19wZXJfc3Vic2xpY2U7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgZGF0YV9sZW5ndGggPSBl dXNfaW5mby5tYXhfc2xpY2VzICogZXVzX2luZm8ubWF4X3N1YnNsaWNlcyAqCj4+Pj4gK8KgwqDC oMKgwqDCoMKgIERJVl9ST1VORF9VUChldXNfaW5mby5tYXhfZXVzX3Blcl9zdWJzbGljZSwgQklU U19QRVJfQllURSk7Cj4+Pj4gK8KgwqDCoCBsZW5ndGggPSBzaXplb2YoZXVzX2luZm8pICsgZGF0 YV9sZW5ndGg7Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgaWYgKHF1ZXJ5X2l0ZW0tPmxlbmd0aCA9PSAw KSB7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHF1ZXJ5X2l0ZW0tPmxlbmd0aCA9IGxlbmd0aDsKPj4+ PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4+Pj4gK8KgwqDCoCB9Cj4+Pj4gKwo+Pj4+ICvC oMKgwqAgaWYgKHF1ZXJ5X2l0ZW0tPmxlbmd0aCAhPSBsZW5ndGgpCj4+Pj4gK8KgwqDCoMKgwqDC oMKgIHJldHVybiAtRUlOVkFMOwo+Pj4+ICsKPj4+PiArwqDCoMKgIGlmIChjb3B5X3RvX3VzZXIo dTY0X3RvX3VzZXJfcHRyKHF1ZXJ5X2l0ZW0tPmRhdGFfcHRyKSwgCj4+Pj4gJmV1c19pbmZvLAo+ Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2l6ZW9mKGV1c19pbmZvKSkpCj4+Pj4gK8Kg wqDCoMKgwqDCoMKgIHJldHVybiAtRUZBVUxUOwo+Pj4+ICsKPj4+PiArwqDCoMKgIGlmIChjb3B5 X3RvX3VzZXIodTY0X3RvX3VzZXJfcHRyKHF1ZXJ5X2l0ZW0tPmRhdGFfcHRyICsKPj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvZmZzZXRvZihzdHJ1Y3QgZHJt X2k5MTVfcXVlcnlfZXVzX2luZm8sIGRhdGEpKSwKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHNzZXUtPmV1X21hc2ssIGRhdGFfbGVuZ3RoKSkKPj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIC1FRkFVTFQ7Cj4+Pgo+Pj4gSSB0aGluayBpbiBhbGwgdGhyZWUgcXVlcmllcywgb25jZSB5 b3UgaGF2ZSB0aGUgbGVuZ3RoLCB5b3UgY291bGQgCj4+PiBleHRyYWN0IHRoZSBmb3VyIGlmIHN0 YXRlbWVudCBhYm92ZSBpbnRvIGEgY29tbW9uIGhlbHBlcj8gQXJndW1lbnRzIAo+Pj4gYXJlIHF1 ZXJ5X2l0ZW0sIGxlbmd0aCwgZGF0YV9sZW5ndGgsIHB0cl9xdWVyeV9pdGVtLCBwdHJfZGF0YSwg YW5kIAo+Pj4gb2Zmc2V0X2RhdGEsIHVubGVzcyBJIGFtIG1pc3Npbmcgc29tZXRoaW5nLiBVcCB0 byB5b3UgaWYgeW91IHdvdWxkIAo+Pj4gZmluZCB0aGF0IGEgd29ydGh5IGNvbXBhY3Rpb24uCj4+ Cj4+IEkganVzdCB0cmllZCB0aGF0IGJ1dCB0aGUgcmVzdWx0IGRvZXNuJ3QgcmVhbGx5IGxvb2sg Z29vZC4KPj4gWW91IG5lZWQgdG8gbWFpbnRhaW4gdGhlIGNvbnRyb2wgZmxvdyB2aWEgYW4gaW5k aXJlY3QgcmV0dXJuIHZhbHVlLi4uCj4KPiBJIHdhcyB0aGlua2luZyBzb21ldGhpbmcgbGlrZSB0 aGlzOgo+Cj4gaW50IGluc2VydF9xdWVyeV9oZWxwZXJfbmFtZShxdWVyeV9pdGVtLCBxdWVyeV9p dGVtX3N6LCBsZW5ndGgsIAo+IGRhdGFfbGVuZ3RoLCBxdWVyeV9pdGVtX3B0ciwgcXVlcnlfZGF0 YV9wdHIpCj4gewo+IMKgwqDCoCBpZiAocXVlcnlfaXRlbS0+bGVuZ3RoID09IDApIHsKPiDCoMKg wqDCoMKgwqDCoCBxdWVyeV9pdGVtLT5sZW5ndGggPSBsZW5ndGg7Cj4gwqDCoMKgwqDCoMKgwqAg cmV0dXJuIDA7Cj4gwqDCoMKgIH0KPgo+IMKgwqDCoCBpZiAocXVlcnlfaXRlbS0+bGVuZ3RoICE9 IGxlbmd0aCkKPiDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsKPgo+IMKgwqDCoCBpZiAo Y29weV90b191c2VyKHU2NF90b191c2VyX3B0cihxdWVyeV9pdGVtLT5kYXRhX3B0ciksCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBxdWVyeV9pdGVtX3B0ciwgcXVlcnlfaXRlbV9zeikpCj4gwqDC oMKgwqDCoMKgwqAgcmV0dXJuIC1FRkFVTFQ7Cj4KPiDCoMKgwqAgaWYgKGNvcHlfdG9fdXNlcih1 NjRfdG9fdXNlcl9wdHIocXVlcnlfaXRlbS0+ZGF0YV9wdHIgKwo+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcXVlcnlfaXRlbV9zeiwKPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcXVlcnlfZGF0YV9wdHIsIGRhdGFfbGVuZ3RoKSkKPiDCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gLUVGQVVMVDsKPgo+IMKgwqDCoCByZXR1cm4gMDsKPiB9Cj4KPiBUaGVuIGluIHRoZSBo YW5kbGVycyBqdXN0IGVuZCB3aXRoOgo+Cj4gcmV0dXJuIGluc2VydF9xdWVyeV9oZWxwZXJfaGFt ZSguLi4pOwoKQWggdGhhbmtzLCBJIHN0b3BwZWQgYXQgY29weWluZyB0aGUgcXVlcnkgaXRlbSBi dXQgZGlkbid0IGRvIHRoZSBkYXRhLi4uClRoYXQgbG9va3MgYmV0dGVyIGluZGVlZC4KCj4KPiA/ Cj4KPj4+Cj4+Pj4gKwo+Pj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+Pj4gK30KPj4+PiArCj4+Pj4g wqAgaW50IGk5MTVfcXVlcnlfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwgc3RydWN0IAo+Pj4+IGRybV9maWxlICpmaWxlKQo+Pj4+IMKgIHsKPj4+PiArwqDCoMKgIHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPj4+PiDCoMKg wqDCoMKgIHN0cnVjdCBkcm1faTkxNV9xdWVyeSAqYXJncyA9IGRhdGE7Cj4+Pj4gwqDCoMKgwqDC oCBzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfaXRlbSBfX3VzZXIgKnVzZXJfaXRlbV9wdHIgPQo+Pj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCB1NjRfdG9fdXNlcl9wdHIoYXJncy0+aXRlbXNfcHRyKTsKPj4+ PiBAQCAtMzQsMTUgKzE1NSwyOCBAQCBpbnQgaTkxNV9xdWVyeV9pb2N0bChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCAKPj4+PiB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4+Pj4g wqAgwqDCoMKgwqDCoCBmb3IgKGkgPSAwOyBpIDwgYXJncy0+bnVtX2l0ZW1zOyBpKyssIHVzZXJf aXRlbV9wdHIrKykgewo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2k5MTVfcXVl cnlfaXRlbSBpdGVtOwo+Pj4+ICvCoMKgwqDCoMKgwqDCoCBpbnQgcmV0Owo+Pj4+IMKgIMKgwqDC oMKgwqDCoMKgwqDCoCBpZiAoY29weV9mcm9tX3VzZXIoJml0ZW0sIHVzZXJfaXRlbV9wdHIsIHNp emVvZihpdGVtKSkpCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FRkFV TFQ7Cj4+Pj4gwqAgwqDCoMKgwqDCoMKgwqDCoMKgIHN3aXRjaCAoaXRlbS5xdWVyeV9pZCkgewo+ Pj4+ICvCoMKgwqDCoMKgwqDCoCBjYXNlIERSTV9JOTE1X1FVRVJZX0lEX1NMSUNFU19JTkZPOgo+ Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IHF1ZXJ5X3NsaWNlc19pbmZvKGRldl9w cml2LCAmaXRlbSk7Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+Pj4gK8Kg wqDCoMKgwqDCoMKgIGNhc2UgRFJNX0k5MTVfUVVFUllfSURfU1VCU0xJQ0VTX0lORk86Cj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gcXVlcnlfc3Vic2xpY2VzX2luZm8oZGV2X3By aXYsICZpdGVtKTsKPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4+PiArwqDC oMKgwqDCoMKgwqAgY2FzZSBEUk1fSTkxNV9RVUVSWV9JRF9FVVNfSU5GTzoKPj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCByZXQgPSBxdWVyeV9ldXNfaW5mbyhkZXZfcHJpdiwgJml0ZW0pOwo+ Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDC oCBkZWZhdWx0Ogo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFM Owo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+Pj4gwqAgK8KgwqDCoMKgwqDCoMKgIGlmIChy ZXQpCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4+PiArCj4+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgIGlmIChjb3B5X3RvX3VzZXIodXNlcl9pdGVtX3B0ciwgJml0ZW0s IHNpemVvZihpdGVtKSkpCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1F RkFVTFQ7Cj4+Pj4gwqDCoMKgwqDCoCB9Cj4+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9k cm0vaTkxNV9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+Pj4+IGluZGV4IDM5 ZTkzZjEwZjJjZC4uZDI1ZjIxZTNjMTA3IDEwMDY0NAo+Pj4+IC0tLSBhL2luY2x1ZGUvdWFwaS9k cm0vaTkxNV9kcm0uaAo+Pj4+ICsrKyBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+Pj4+ IEBAIC0xNjE4LDYgKzE2MTgsOSBAQCBzdHJ1Y3QgZHJtX2k5MTVfcGVyZl9vYV9jb25maWcgewo+ Pj4+IMKgIMKgIHN0cnVjdCBkcm1faTkxNV9xdWVyeV9pdGVtIHsKPj4+PiDCoMKgwqDCoMKgIF9f dTY0IHF1ZXJ5X2lkOwo+Pj4+ICsjZGVmaW5lIERSTV9JOTE1X1FVRVJZX0lEX1NMSUNFU19JTkZP wqDCoMKgIDB4MDEKPj4+PiArI2RlZmluZSBEUk1fSTkxNV9RVUVSWV9JRF9TVUJTTElDRVNfSU5G TyAweDAyCj4+Pj4gKyNkZWZpbmUgRFJNX0k5MTVfUVVFUllfSURfRVVTX0lORk/CoMKgwqDCoMKg wqAgMHgwMwo+Pj4KPj4+IFdvdWxkIERSTV9JOTE1X1FVRVJZX0lEXyJzaW5ndWxhciJfSU5GTyBy ZWFkIGJldHRlcj8gSW4gc3RydWN0IG5hbWVzIAo+Pj4gYXMgd2VsbCBpZiBzbz8KPj4KPj4gSG1t Li4uIFNvcnJ5LCBJIGRvbid0IHVuZGVyc3RhbmQgeW91ciBjb21tZW50IGhlcmUuCj4+IFdoYXQg d291bGQgYmUgInNpbmd1bGFyIiA/Cj4KPiBPcHBvc2l0ZSBvZiBwbHVyYWwsIGxpa2U6Cj4KPiBf UVVFUllfSURfU0xJQ0VfSU5GTywgX1FVRVJZX0lEX1NVQlNMSUNFX0lORk8sIF9RVUVSWV9JRF9F VV9JTkZPLgo+Cj4gQWN0dWFsbHkgbm93IEknbSB0aGlua2luZyBpZiBfSURfIHBhcnQgY291bGQg YWxzbyBiZSByZW1vdmVkIGZvciBubyBsb3NzPwoKWWVhaCwgc3VyZS4KCj4KPiBSZWdhcmRzLAo+ Cj4gVHZydGtvCj4KPgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==