From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lionel Landwerlin Subject: Re: [PATCH 6/6] drm/i915: expose rcs topology through query uAPI Date: Thu, 11 Jan 2018 18:38:24 +0000 Message-ID: <0c336d69-2f4a-308b-ab80-3a27ea8c0d57@intel.com> References: <20171218153520.14181-1-lionel.g.landwerlin@intel.com> <20171218153520.14181-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 mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7D6C86E68F for ; Thu, 11 Jan 2018 18:38:27 +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 T24gMTEvMDEvMTggMTI6NDUsIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+Cj4gT24gMTgvMTIvMjAx NyAxNTozNSwgTGlvbmVsIExhbmR3ZXJsaW4gd3JvdGU6Cj4+IFdpdGggdGhlIGludHJvZHVjdGlv biBvZiBhc3ltZXRyaWMgc2xpY2VzIGluIENOTCwgd2UgY2Fubm90IHJlbHkgb24KPgo+IGFzeW1t ZXRyaWMKCkNoZWNrIDspCgo+Cj4+IHRoZSBwcmV2aW91cyBTVUJTTElDRV9NQVNLIGdldHBhcmFt IHRvIHRlbGwgdXNlcnNwYWNlIHdoYXQgc3Vic2xpY2VzCj4+IGFyZSBhdmFpbGFibGUuIEhlcmUg d2UgaW50cm9kdWNlIGEgbW9yZSBkZXRhaWxlZCB3YXkgb2YgcXVlcnlpbmcgdGhlCj4+IEdlbidz IEdQVSB0b3BvbG9neSB0aGF0IGRvZXNuJ3QgYWdncmVnYXRlIG51bWJlcnMuCj4+Cj4+IFRoaXMg aXMgZXNzZW50aWFsIGZvciBtb25pdG9yaW5nIHBhcnRzIG9mIHRoZSBHUFUgd2l0aCB0aGUgT0Eg dW5pdCwKPj4gYmVjYXVzZSBjb3VudGVycyBuZWVkIHRvIGJlIG5vcm1hbGl6ZWQgdG8gdGhlIG51 bWJlciBvZgo+PiBFVXMvc3Vic2xpY2VzL3NsaWNlcy4gVGhlIGN1cnJlbnQgYWdncmVnYXRlZCBu dW1iZXJzIGxpa2UgRVVfVE9UQUwgZG8KPj4gbm90IGdpdmVzIHVzIHN1ZmZpY2llbnQgaW5mb3Jt YXRpb24uCj4+Cj4+IEFzIGEgYm9udXMgd2UgY2FuIGRyYXcgcmVwcmVzZW50YXRpb25zIG9mIHRo ZSBHUFUgOgo+Pgo+PiDCoMKgwqDCoMKgwqDCoMKgIGh0dHBzOi8vaW1ndXIuY29tL2EvdnVxcGEK Pj4KPj4gU2lnbmVkLW9mZi1ieTogTGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJs aW5AaW50ZWwuY29tPgo+PiAtLS0KPj4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9xdWVy eS5jwqDCoMKgwqDCoMKgIHwgMTM0IAo+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Kwo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9xdWVyeV9pbmZvLmMgfMKgIDg4ICsr KysrKysrKysrKysrKysrKysrKwo+PiDCoCBpbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmjCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDQ1ICsrKysrKysrKysrCj4+IMKgIDMgZmlsZXMgY2hh bmdlZCwgMjY3IGluc2VydGlvbnMoKykKPj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3F1ZXJ5X2luZm8uYwo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9xdWVyeS5jIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcXVlcnkuYwo+PiBpbmRleCAyMjdhMjg5NzgxOTAuLjdjMGViMDlkM2FhYyAxMDA2NDQKPj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9xdWVyeS5jCj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcXVlcnkuYwo+PiBAQCAtMjUsMjQgKzI1LDE1OCBAQAo+PiDCoCAj aW5jbHVkZSAiaTkxNV9kcnYuaCIKPj4gwqAgI2luY2x1ZGUgPHVhcGkvZHJtL2k5MTVfZHJtLmg+ Cj4+IMKgICtzdGF0aWMgaW50IHF1ZXJ5X3NsaWNlc19tYXNrKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVj dCBkcm1faTkxNV9xdWVyeV9pdGVtICpxdWVyeV9pdGVtKQo+PiArewo+PiArwqDCoMKgIGNvbnN0 IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1ID0gJklOVEVMX0lORk8oZGV2X3ByaXYpLT5zc2V1 Owo+PiArwqDCoMKgIHN0cnVjdCBkcm1faTkxNV9xdWVyeV9zbGljZXNfbWFzayBzbGljZXNfaW5m bzsKPj4gK8KgwqDCoCB1MzIgZGF0YV9sZW5ndGgsIGxlbmd0aDsKPj4gKwo+PiArwqDCoMKgIGlm IChzc2V1LT5tYXhfc2xpY2VzID09IDApCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT0RF VjsKPgo+IERvIHlvdSBuZWVkIHRvIGhhbmRsZSB0aGlzIGV4cGxpY2l0bHkgb3IganVzdCByZXR1 cm4gYWxsIHplcm9zPyBJIAo+IGd1ZXNzIEkgZG9uJ3Qga25vdyB3aGljaCBHUFVzIGhhdmUgemVy byBzbGljZXMuCgpBZ2FpbiwgdGhpcyBpcyA8IGdlbjguIEkgcmF0aGVyIG5vdCBjYXJlIGFib3V0 IHRob3NlIGFuZCByZXR1cm4gRU5PREVWLgoKPgo+PiArCj4+ICvCoMKgwqAgbWVtc2V0KCZzbGlj ZXNfaW5mbywgMCwgc2l6ZW9mKHNsaWNlc19pbmZvKSk7Cj4KPiBJcyB0aGlzIG5lZWRlZCBzaW5j ZSBhKSB5b3Ugd2lsbCB3cml0ZSB0byB0aGUgb25seSBmaWVsZCBqdXN0IGJlbG93LCAKPiBhbmQg YikgaXQgd29uJ3QgY2xlYXIgdGhlIHRhaWwgZGF0YSBhcnJheSBhbnl3YXk/CgpJIGRvbid0IGtu b3cuCkl0J3MganVzdCBiZWluZyBjYXJlZnVsLCB0aGlzIHN0cnVjdCBsaXZlcyBvbiB0aGUgc3Rh Y2sgYW5kIEkgZG9uJ3Qgd2FudCAKdG8gbGVhayBhbnkgZGF0YSB0byB1c2Vyc3BhY2UuCgo+Cj4+ ICsKPj4gK8KgwqDCoCBzbGljZXNfaW5mby5uX3NsaWNlcyA9IHNzZXUtPm1heF9zbGljZXM7Cj4g TW92ZSB0byBhZnRlciB0aGUgcXVlcnlfaXRlbS0+bGVuZ3RoIGNoZWNrcy4KCkRvbmUuCgo+Cj4+ ICsKPj4gK8KgwqDCoCBkYXRhX2xlbmd0aCA9IHNpemVvZih1OCk7Cj4KPiBTaXplIGlzIGRlcGVu ZGFudCBvbiBudW1iZXIgb2Ygc2xpY2VzPyBESVZfUk9VTkRfVVAobl9zbGljZXMsIAo+IEJJVFNf UEVSX0JZVEUpID8KCkRvbmUuCgo+Cj4+ICvCoMKgwqAgbGVuZ3RoID0gc2l6ZW9mKHN0cnVjdCBk cm1faTkxNV9xdWVyeV9zbGljZXNfbWFzaykgKyBkYXRhX2xlbmd0aDsKPgo+IHNpemVvZihzbGlj ZXNfaW5mbykKCkRvbmUuCgo+Cj4+ICsKPj4gK8KgwqDCoCAvKgo+PiArwqDCoMKgwqAgKiBJZiB3 ZSBldmVyIGNoYW5nZSB0aGUgaW50ZXJuYWwgc2xpY2UgbWFzayBkYXRhIHR5cGUsIHdlJ2xsIAo+ PiBuZWVkIHRvCj4+ICvCoMKgwqDCoCAqIHVwZGF0ZSB0aGlzIGZ1bmN0aW9uLgo+PiArwqDCoMKg wqAgKi8KPj4gK8KgwqDCoCBCVUlMRF9CVUdfT04oc2l6ZW9mKHU4KSAhPSBzaXplb2Yoc3NldS0+ c2xpY2VfbWFzaykpOwo+Cj4gSG0gYSBiaXQgd2VhayBzaW5jZSBpdCBpcyBub3Qgb25seSBhYm91 dCBzaXplIGJ1dCBhbHNvIGRhdGEgCj4gcmVwcmVzZW50YXRpb24uIEJ1dCBJIGRvbid0IGhhdmUg YW55IGJldHRlciBpZGVhcy4KPgo+PiArCj4+ICvCoMKgwqAgaWYgKHF1ZXJ5X2l0ZW0tPmxlbmd0 aCA9PSAwKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBxdWVyeV9pdGVtLT5sZW5ndGggPSBsZW5ndGg7 Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDC oCBpZiAocXVlcnlfaXRlbS0+bGVuZ3RoICE9IGxlbmd0aCkKPj4gK8KgwqDCoMKgwqDCoMKgIHJl dHVybiAtRUlOVkFMOwo+PiArCj4+ICvCoMKgwqAgaWYgKGNvcHlfdG9fdXNlcih1NjRfdG9fdXNl cl9wdHIocXVlcnlfaXRlbS0+ZGF0YV9wdHIpLCAKPj4gJnNsaWNlc19pbmZvLAo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHNpemVvZihzbGljZXNfaW5mbykpKQo+PiArwqDCoMKgwqDCoMKg wqAgcmV0dXJuIC1FRkFVTFQ7Cj4+ICsKPj4gK8KgwqDCoCBpZiAoY29weV90b191c2VyKHU2NF90 b191c2VyX3B0cihxdWVyeV9pdGVtLT5kYXRhX3B0ciArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9mZnNldG9mKHN0cnVjdCBkcm1faTkxNV9xdWVyeV9zbGlj ZXNfbWFzaywgCj4+IGRhdGEpKSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmc3NldS0+ c2xpY2VfbWFzaywgZGF0YV9sZW5ndGgpKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FRkFV TFQ7Cj4+ICsKPj4gK8KgwqDCoCByZXR1cm4gMDsKPj4gK30KPgo+IFNvbWUgb2YgdGhlIGFib3Zl IGNvbW1lbnRzIGFsc28gYXBwbHkgdG8gdGhlIG90aGVyIHR3byBxdWVyeSBmdW5jdGlvbnMgCj4g YmVsb3cuCj4KPj4gK3N0YXRpYyBpbnQgcXVlcnlfc3Vic2xpY2VzX21hc2soc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHN0cnVjdCBkcm1faTkxNV9xdWVyeV9pdGVtICpxdWVyeV9pdGVtKQo+PiArewo+PiArwqDCoMKg IGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1ID0gJklOVEVMX0lORk8oZGV2X3ByaXYp LT5zc2V1Owo+PiArwqDCoMKgIHN0cnVjdCBkcm1faTkxNV9xdWVyeV9zdWJzbGljZXNfbWFzayBz dWJzbGljZXNfaW5mbzsKPj4gK8KgwqDCoCB1MzIgZGF0YV9sZW5ndGgsIGxlbmd0aDsKPj4gKwo+ PiArwqDCoMKgIGlmIChzc2V1LT5tYXhfc2xpY2VzID09IDApCj4+ICvCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gLUVOT0RFVjsKPj4gKwo+PiArwqDCoMKgIG1lbXNldCgmc3Vic2xpY2VzX2luZm8sIDAs IHNpemVvZihzdWJzbGljZXNfaW5mbykpOwo+PiArCj4+ICvCoMKgwqAgc3Vic2xpY2VzX2luZm8u bl9zbGljZXMgPSBzc2V1LT5tYXhfc2xpY2VzOwo+PiArwqDCoMKgIHN1YnNsaWNlc19pbmZvLnNs aWNlX3N0cmlkZSA9IEFMSUdOKHNzZXUtPm1heF9zdWJzbGljZXMsIDgpIC8gODsKPj4gKwo+PiAr wqDCoMKgIGRhdGFfbGVuZ3RoID0gc3Vic2xpY2VzX2luZm8ubl9zbGljZXMgKiAKPj4gc3Vic2xp Y2VzX2luZm8uc2xpY2Vfc3RyaWRlOwo+PiArwqDCoMKgIGxlbmd0aCA9IHNpemVvZihzdHJ1Y3Qg ZHJtX2k5MTVfcXVlcnlfc3Vic2xpY2VzX21hc2spICsgCj4+IGRhdGFfbGVuZ3RoOwo+PiArCj4+ ICvCoMKgwqAgaWYgKHF1ZXJ5X2l0ZW0tPmxlbmd0aCA9PSAwKSB7Cj4+ICvCoMKgwqDCoMKgwqDC oCBxdWVyeV9pdGVtLT5sZW5ndGggPSBsZW5ndGg7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4g MDsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCBpZiAocXVlcnlfaXRlbS0+bGVuZ3RoICE9 IGxlbmd0aCkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOwo+PiArCj4+ICvCoMKg wqAgaWYgKGNvcHlfdG9fdXNlcih1NjRfdG9fdXNlcl9wdHIocXVlcnlfaXRlbS0+ZGF0YV9wdHIp LCAKPj4gJnN1YnNsaWNlc19pbmZvLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNpemVv ZihzdWJzbGljZXNfaW5mbykpKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FRkFVTFQ7Cj4+ ICsKPj4gK8KgwqDCoCBpZiAoY29weV90b191c2VyKHU2NF90b191c2VyX3B0cihxdWVyeV9pdGVt LT5kYXRhX3B0ciArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IG9mZnNldG9mKHN0cnVjdCBkcm1faTkxNV9xdWVyeV9zdWJzbGljZXNfbWFzaywgCj4+IGRhdGEp KSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzc2V1LT5zdWJzbGljZXNfbWFzaywgZGF0 YV9sZW5ndGgpKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FRkFVTFQ7Cj4+ICsKPj4gK8Kg wqDCoCByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBxdWVyeV9ldXNfbWFzayhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfaXRlbSAqcXVlcnlfaXRlbSkKPj4gK3sKPj4g K8KgwqDCoCBjb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSA9ICZJTlRFTF9JTkZPKGRl dl9wcml2KS0+c3NldTsKPj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZXVzX21hc2sg ZXVzX2luZm87Cj4+ICvCoMKgwqAgdTMyIGRhdGFfbGVuZ3RoLCBsZW5ndGg7Cj4+ICsKPj4gK8Kg wqDCoCBpZiAoc3NldS0+bWF4X3NsaWNlcyA9PSAwKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJu IC1FTk9ERVY7Cj4+ICsKPj4gK8KgwqDCoCBtZW1zZXQoJmV1c19pbmZvLCAwLCBzaXplb2YoZXVz X2luZm8pKTsKPj4gKwo+PiArwqDCoMKgIGV1c19pbmZvLnN1YnNsaWNlX3N0cmlkZSA9IEFMSUdO KHNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlLCA4KSAKPj4gLyA4Owo+PiArwqDCoMKgIGV1c19p bmZvLnNsaWNlX3N0cmlkZSA9IHNzZXUtPm1heF9zdWJzbGljZXMgKiAKPj4gZXVzX2luZm8uc3Vi c2xpY2Vfc3RyaWRlOwo+PiArwqDCoMKgIGV1c19pbmZvLm5fc2xpY2VzID0gc3NldS0+bWF4X3Ns aWNlczsKPj4gKwo+PiArwqDCoMKgIGRhdGFfbGVuZ3RoID0gZXVzX2luZm8ubl9zbGljZXMgKiBl dXNfaW5mby5zbGljZV9zdHJpZGU7Cj4+ICvCoMKgwqAgbGVuZ3RoID0gc2l6ZW9mKHN0cnVjdCBk cm1faTkxNV9xdWVyeV9ldXNfbWFzaykgKyBkYXRhX2xlbmd0aDsKPj4gKwo+PiArwqDCoMKgIGlm IChxdWVyeV9pdGVtLT5sZW5ndGggPT0gMCkgewo+PiArwqDCoMKgwqDCoMKgwqAgcXVlcnlfaXRl bS0+bGVuZ3RoID0gbGVuZ3RoOwo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4+ICvCoMKg wqAgfQo+PiArCj4+ICvCoMKgwqAgaWYgKHF1ZXJ5X2l0ZW0tPmxlbmd0aCAhPSBsZW5ndGgpCj4+ ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsKPj4gKwo+PiArwqDCoMKgIGlmIChjb3B5 X3RvX3VzZXIodTY0X3RvX3VzZXJfcHRyKHF1ZXJ5X2l0ZW0tPmRhdGFfcHRyKSwgJmV1c19pbmZv LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNpemVvZihldXNfaW5mbykpKQo+PiArwqDC oMKgwqDCoMKgwqAgcmV0dXJuIC1FRkFVTFQ7Cj4+ICsKPj4gK8KgwqDCoCBpZiAoY29weV90b191 c2VyKHU2NF90b191c2VyX3B0cihxdWVyeV9pdGVtLT5kYXRhX3B0ciArCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9mZnNldG9mKHN0cnVjdCBkcm1faTkxNV9x dWVyeV9ldXNfbWFzaywgZGF0YSkpLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNzZXUt PmV1X21hc2ssIGRhdGFfbGVuZ3RoKSkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRUZBVUxU Owo+PiArCj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gwqAgaW50IGk5MTVfcXVl cnlfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IAo+PiBk cm1fZmlsZSAqZmlsZSkKPj4gwqAgewo+PiArwqDCoMKgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2k5MTVf cXVlcnkgKmFyZ3MgPSBkYXRhOwo+PiDCoMKgwqDCoMKgIHUzMiBpOwo+PiDCoCDCoMKgwqDCoMKg IGZvciAoaSA9IDA7IGkgPCBhcmdzLT5udW1faXRlbXM7IGkrKykgewo+PiDCoMKgwqDCoMKgwqDC oMKgwqAgc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2l0ZW0gaXRlbTsKPj4gwqDCoMKgwqDCoMKgwqDC oMKgIHU2NCBpdGVtX3VzZXJfcHRyID0gYXJncy0+aXRlbXNfcHRyICsgc2l6ZW9mKGl0ZW0pICog aTsKPj4gK8KgwqDCoMKgwqDCoMKgIGludCByZXQ7Cj4+IMKgIMKgwqDCoMKgwqDCoMKgwqDCoCBp ZiAoY29weV9mcm9tX3VzZXIoJml0ZW0sIHU2NF90b191c2VyX3B0cihpdGVtX3VzZXJfcHRyKSwK Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzaXplb2YoaXRlbSkp KQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVGQVVMVDsKPj4gwqAgwqDC oMKgwqDCoMKgwqDCoMKgIHN3aXRjaCAoaXRlbS5xdWVyeV9pZCkgewo+PiArwqDCoMKgwqDCoMKg wqAgY2FzZSBEUk1fSTkxNV9RVUVSWV9JRF9TTElDRVNfTUFTSzoKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcmV0ID0gcXVlcnlfc2xpY2VzX21hc2soZGV2X3ByaXYsICZpdGVtKTsKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+ICvCoMKgwqDCoMKgwqDCoCBjYXNlIERSTV9J OTE1X1FVRVJZX0lEX1NVQlNMSUNFU19NQVNLOgo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBy ZXQgPSBxdWVyeV9zdWJzbGljZXNfbWFzayhkZXZfcHJpdiwgJml0ZW0pOwo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBicmVhazsKPj4gK8KgwqDCoMKgwqDCoMKgIGNhc2UgRFJNX0k5MTVfUVVF UllfSURfRVVTX01BU0s6Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IHF1ZXJ5X2V1 c19tYXNrKGRldl9wcml2LCAmaXRlbSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFr Owo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZGVmYXVsdDoKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+IMKgICvCoMKg wqDCoMKgwqDCoCBpZiAocmV0KQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0 Owo+PiArCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoY29weV90b191c2VyKHU2NF90b191c2Vy X3B0cihpdGVtX3VzZXJfcHRyKSwgJml0ZW0sCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBzaXplb2YoaXRlbSkpKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gLUVGQVVMVDsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3F1ZXJ5X2luZm8uYyAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9xdWVyeV9pbmZv LmMKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAwMDAwLi43OWIwM2Jl OWY1MWEKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9xdWVyeV9pbmZvLmMKPj4gQEAgLTAsMCArMSw4OCBAQAo+PiArLyoKPj4gKyAqIENvcHlyaWdo dCDCqSAyMDE3IEludGVsIENvcnBvcmF0aW9uCj4+ICsgKgo+PiArICogUGVybWlzc2lvbiBpcyBo ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gCj4+IG9idGFpbmlu ZyBhCj4+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRh dGlvbiBmaWxlcyAodGhlIAo+PiAiU29mdHdhcmUiKSwKPj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNv ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IAo+PiBsaW1pdGF0 aW9uCj4+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz aCwgZGlzdHJpYnV0ZSwgCj4+IHN1YmxpY2Vuc2UsCj4+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMg b2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSAKPj4gdGhlCj4+ ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxv d2luZyBjb25kaXRpb25zOgo+PiArICoKPj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgCj4+IHRoZSBuZXh0Cj4+ICsg KiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwgCj4+IHBvcnRpb25zIG9mIHRoZQo+PiArICogU29mdHdhcmUuCj4+ICsgKgo+PiArICogVEhF IFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJ TkQsIAo+PiBFWFBSRVNTIE9SCj4+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1J VEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIAo+PiBNRVJDSEFOVEFCSUxJVFksCj4+ICsgKiBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULsKgIElOIE5P IAo+PiBFVkVOVCBTSEFMTAo+PiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMg QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgCj4+IE9SIE9USEVSCj4+ICsgKiBMSUFC SUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT RSwgCj4+IEFSSVNJTkcKPj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEgg VEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgCj4+IE9USEVSIERFQUxJTkdTCj4+ICsgKiBJTiBU SEUgU09GVFdBUkUuCj4+ICsgKgo+PiArICovCj4+ICsKPj4gKyNpbmNsdWRlICJpOTE1X2Rydi5o Igo+PiArI2luY2x1ZGUgPHVhcGkvZHJtL2k5MTVfZHJtLmg+Cj4+ICsKPj4gK3N0YXRpYyBpbnQg cXVlcnlfaW5mb19yY3NfdG9wb2xvZ3koc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1faTkx NV9xdWVyeV9pbmZvICphcmdzKQo+Cj4gVW51c2VkIGFydGVmYWN0IG9mIGEgcHJldmlvdXMgdmVy c2lvbj8KCkRhbW1pdC4uLgoKPgo+PiArewo+PiArwqDCoMKgIGNvbnN0IHN0cnVjdCBzc2V1X2Rl dl9pbmZvICpzc2V1ID0gJklOVEVMX0lORk8oZGV2X3ByaXYpLT5zc2V1Owo+PiArwqDCoMKgIHN0 cnVjdCBkcm1faTkxNV9yY3NfdG9wb2xvZ3lfaW5mbyBfX3VzZXIgKnVzZXJfdG9wb2xvZ3kgPQo+ PiArwqDCoMKgwqDCoMKgwqAgdTY0X3RvX3VzZXJfcHRyKGFyZ3MtPmluZm9fcHRyKTsKPj4gK8Kg wqDCoCBzdHJ1Y3QgZHJtX2k5MTVfcmNzX3RvcG9sb2d5X2luZm8gdG9wb2xvZ3k7Cj4+ICvCoMKg wqAgdTMyIGRhdGFfc2l6ZSwgdG90YWxfc2l6ZTsKPj4gK8KgwqDCoCBjb25zdCB1OCAqZGF0YSA9 IE5VTEw7Cj4+ICvCoMKgwqAgaW50IHJldDsKPj4gKwo+PiArwqDCoMKgIC8qIE5vdCBzdXBwb3J0 ZWQgb24gZ2VuIDwgOC4gKi8KPj4gK8KgwqDCoCBpZiAoc3NldS0+bWF4X3NsaWNlcyA9PSAwKQo+ PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9ERVY7Cj4+ICsKPj4gK8KgwqDCoCBzd2l0Y2gg KGFyZ3MtPnF1ZXJ5X3BhcmFtc1swXSkgewo+PiArwqDCoMKgIGNhc2UgSTkxNV9SQ1NfVE9QT0xP R1lfU0xJQ0U6Cj4+ICvCoMKgwqDCoMKgwqDCoCB0b3BvbG9neS5wYXJhbXNbMF0gPSBzc2V1LT5t YXhfc2xpY2VzOwo+PiArwqDCoMKgwqDCoMKgwqAgZGF0YV9zaXplID0gc2l6ZW9mKHNzZXUtPnNs aWNlX21hc2spOwo+PiArwqDCoMKgwqDCoMKgwqAgZGF0YSA9ICZzc2V1LT5zbGljZV9tYXNrOwo+ PiArwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+ICsKPj4gK8KgwqDCoCBjYXNlIEk5MTVfUkNTX1RP UE9MT0dZX1NVQlNMSUNFOgo+PiArwqDCoMKgwqDCoMKgwqAgdG9wb2xvZ3kucGFyYW1zWzBdID0g c3NldS0+bWF4X3NsaWNlczsKPj4gK8KgwqDCoMKgwqDCoMKgIHRvcG9sb2d5LnBhcmFtc1sxXSA9 IEFMSUdOKHNzZXUtPm1heF9zdWJzbGljZXMsIDgpIC8gODsKPj4gK8KgwqDCoMKgwqDCoMKgIGRh dGFfc2l6ZSA9IHNzZXUtPm1heF9zbGljZXMgKiB0b3BvbG9neS5wYXJhbXNbMV07Cj4+ICvCoMKg wqDCoMKgwqDCoCBkYXRhID0gc3NldS0+c3Vic2xpY2VzX21hc2s7Cj4+ICvCoMKgwqDCoMKgwqDC oCBicmVhazsKPj4gKwo+PiArwqDCoMKgIGNhc2UgSTkxNV9SQ1NfVE9QT0xPR1lfRVU6Cj4+ICvC oMKgwqDCoMKgwqDCoCB0b3BvbG9neS5wYXJhbXNbMl0gPSBBTElHTihzc2V1LT5tYXhfZXVzX3Bl cl9zdWJzbGljZSwgOCkgLyA4Owo+PiArwqDCoMKgwqDCoMKgwqAgdG9wb2xvZ3kucGFyYW1zWzFd ID0gc3NldS0+bWF4X3N1YnNsaWNlcyAqIHRvcG9sb2d5LnBhcmFtc1syXTsKPj4gK8KgwqDCoMKg wqDCoMKgIHRvcG9sb2d5LnBhcmFtc1swXSA9IHNzZXUtPm1heF9zbGljZXM7Cj4+ICvCoMKgwqDC oMKgwqDCoCBkYXRhX3NpemUgPSBzc2V1LT5tYXhfc2xpY2VzICogdG9wb2xvZ3kucGFyYW1zWzFd Owo+PiArwqDCoMKgwqDCoMKgwqAgZGF0YSA9IHNzZXUtPmV1X21hc2s7Cj4+ICvCoMKgwqDCoMKg wqDCoCBicmVhazsKPj4gKwo+PiArwqDCoMKgIGRlZmF1bHQ6Cj4+ICvCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gLUVJTlZBTDsKPj4gK8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCB0b3RhbF9zaXplID0g c2l6ZW9mKHRvcG9sb2d5KSArIGRhdGFfc2l6ZTsKPj4gKwo+PiArwqDCoMKgIGlmIChhcmdzLT5p bmZvX3B0cl9sZW4gPT0gMCkgewo+PiArwqDCoMKgwqDCoMKgwqAgYXJncy0+aW5mb19wdHJfbGVu ID0gdG90YWxfc2l6ZTsKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAwOwo+PiArwqDCoMKgIH0K Pj4gKwo+PiArwqDCoMKgIGlmIChhcmdzLT5pbmZvX3B0cl9sZW4gPCB0b3RhbF9zaXplKQo+PiAr wqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4gK8KgwqDCoCByZXQgPSBjb3B5 X3RvX3VzZXIodXNlcl90b3BvbG9neSwgJnRvcG9sb2d5LCBzaXplb2YodG9wb2xvZ3kpKTsKPj4g K8KgwqDCoCBpZiAocmV0KQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FRkFVTFQ7Cj4+ICsK Pj4gK8KgwqDCoCByZXQgPSBjb3B5X3RvX3VzZXIodXNlcl90b3BvbG9neSArIDEsIGRhdGEsIGRh dGFfc2l6ZSk7Cj4+ICvCoMKgwqAgaWYgKHJldCkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAt RUZBVUxUOwo+PiArCj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+ICt9Cj4+IGRpZmYgLS1naXQgYS9p bmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgK Pj4gaW5kZXggODdkZDhiMTU1NDhjLi5jZGZiZmNiMTIzZDAgMTAwNjQ0Cj4+IC0tLSBhL2luY2x1 ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+PiArKysgYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJt LmgKPj4gQEAgLTE2MTgsNiArMTYxOCw5IEBAIHN0cnVjdCBkcm1faTkxNV9wZXJmX29hX2NvbmZp ZyB7Cj4+IMKgIMKgIHN0cnVjdCBkcm1faTkxNV9xdWVyeV9pdGVtIHsKPj4gwqDCoMKgwqDCoCBf X3UzMiBxdWVyeV9pZDsKPj4gKyNkZWZpbmUgRFJNX0k5MTVfUVVFUllfSURfU0xJQ0VTX01BU0vC oMKgwqAgMHgwMQo+PiArI2RlZmluZSBEUk1fSTkxNV9RVUVSWV9JRF9TVUJTTElDRVNfTUFTSyAw eDAyCj4+ICsjZGVmaW5lIERSTV9JOTE1X1FVRVJZX0lEX0VVU19NQVNLwqDCoMKgwqDCoMKgIDB4 MDMKPj4gwqAgwqDCoMKgwqDCoCAvKgo+PiDCoMKgwqDCoMKgwqAgKiBXaGVuIGxlZnQgdG8gMCBi eSB1c2Vyc3BhY2UsIHRoaXMgaXMgZmlsbGVkIHdpdGggdGhlIHNpemUgCj4+IHRoZSBkYXRhCj4+ IEBAIC0xNjQ0LDYgKzE2NDcsNDggQEAgc3RydWN0IGRybV9pOTE1X3F1ZXJ5IHsKPj4gwqDCoMKg wqDCoCBfX3U2NCBpdGVtc19wdHI7Cj4+IMKgIH07Cj4+IMKgICsvKiBEYXRhIHdyaXR0ZW4gYnkg dGhlIGtlcm5lbCB3aXRoIHF1ZXJ5IAo+PiBEUk1fSTkxNV9RVUVSWV9JRF9TTElDRVNfTUFTSyA6 Cj4+ICsgKgo+PiArICogZGF0YTogZWFjaCBiaXQgaW5kaWNhdGVzIHdoZXRoZXIgYSBzbGljZSBp cyBhdmFpbGFibGUgKDEpIG9yIAo+PiBmdXNlZCBvZmYKPj4gKyAqICgwKS4gRm9ybXVsYSB0byB0 ZWxsIGlmIHNsaWNlIFggaXMgYXZhaWxhYmxlIDoKPj4gKyAqCj4+ICsgKsKgwqDCoMKgwqDCoMKg wqAgKGRhdGFbWCAvIDhdID4+IChYICUgOCkpICYgMQo+Cj4gQWRkIGEgaGVscGVyIHRha2luZyBz dHJ1Y3QgZHJtX2k5MTVfcXVlcnlfc2xpY2VzX21hc2sgZm9yIHVzZXJzcGFjZSB0byAKPiBkbyB0 aGlzLiBNYWNybyB3b3VsZCBiZSBnb29kIEkgdGhpbmsuCgpEb25lLgoKPgo+PiArICovCj4+ICtz dHJ1Y3QgZHJtX2k5MTVfcXVlcnlfc2xpY2VzX21hc2sgewo+Cj4gUmVuYW1lIGFsbCB1YXBpIHN0 cnVjdCB0byBfaW5mbyBpbnN0ZWFkIG9mIF9tYXNrIHN1ZmZpeD8KClN1cmUuCgo+Cj4+ICvCoMKg wqAgX191MzIgbl9zbGljZXM7Cj4+ICsKPj4gK8KgwqDCoCBfX3U4IGRhdGFbXTsKPgo+IElzIGEg emVybyBzaXplIGFycmF5IGEgR0NDIGV4dGVuc2lvbiBvciBzb21ldGhpbmc/IEkgc29tZWhvdyBz ZWVtIHRvIAo+IHJlbWVtYmVyIHNvbWVvbmUgd2FzIGNvbXBsYWluaW5nIGFib3V0IHRoaXMuCgpb MF0gaXMgYSBHTlUgQyBleHRlbnNpb24KW10gaXMgYSBmbGV4aWJsZSBhcnJheSBpbiBDOTkKCj4K Pj4gK307Cj4+ICsKPj4gKy8qIERhdGEgd3JpdHRlbiBieSB0aGUga2VybmVsIHdpdGggcXVlcnkg Cj4+IERSTV9JOTE1X1FVRVJZX0lEX1NVQlNMSUNFU19NQVNLIDoKPj4gKyAqCj4+ICsgKiBkYXRh OiBlYWNoIGJpdCBpbmRpY2F0ZXMgd2hldGhlciBhIHN1YnNsaWNlIGlzIGF2YWlsYWJsZSAoMSkg b3IgCj4+IGZ1c2VkIG9mZgo+PiArICogKDApLiBGb3JtdWxhIHRvIHRlbGwgaWYgc2xpY2UgWCBz dWJzbGljZSBZIGlzIGF2YWlsYWJsZSA6Cj4+ICsgKgo+PiArICrCoMKgwqDCoMKgwqDCoMKgIChk YXRhWyhYICogc2xpY2Vfc3RyaWRlKSArIFkgLyA4XSA+PiAoWSAlIDgpKSAmIDEKPj4gKyAqLwo+ PiArc3RydWN0IGRybV9pOTE1X3F1ZXJ5X3N1YnNsaWNlc19tYXNrIHsKPj4gK8KgwqDCoCBfX3Uz MiBuX3NsaWNlczsKPj4gK8KgwqDCoCBfX3UzMiBzbGljZV9zdHJpZGU7Cj4KPiBJIHRoaW5rIGl0 IHdvdWxkIGJlIGJldHRlciB0byByZXR1cm4gc3Vic2xpY2VfbWF4IGFuZCBhbHNvIGFkZCBhIHF1 ZXJ5IAo+IGhlbHBlciBsaWtlIGFib3ZlLgoKT2theS4KCj4KPj4gKwo+PiArwqDCoMKgIF9fdTgg ZGF0YVtdOwo+PiArfTsKPj4gKwo+PiArLyogRGF0YSB3cml0dGVuIGJ5IHRoZSBrZXJuZWwgd2l0 aCBxdWVyeSBEUk1fSTkxNV9RVUVSWV9JRF9FVVNfTUFTSyA6Cj4+ICsgKgo+PiArICogZGF0YTog RWFjaCBiaXQgaW5kaWNhdGVzIHdoZXRoZXIgYSBzdWJzbGljZSBpcyBhdmFpbGFibGUgKDEpIG9y IAo+PiBmdXNlZCBvZmYKPj4gKyAqICgwKS4gRm9ybXVsYSB0byB0ZWxsIGlmIHNsaWNlIFggc3Vi c2xpY2UgWSBldSBaIGlzIGF2YWlsYWJsZSA6Cj4+ICsgKgo+PiArICrCoMKgwqDCoMKgwqDCoMKg IChkYXRhW1ggKiBzbGljZV9zdHJpZGUgKyBZICogc3Vic2xpY2Vfc3RyaWRlICsgWiAvIDhdID4+ IAo+PiAoWiAlIDgpKSAmIDEKPj4gKyAqLwo+PiArc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2V1c19t YXNrIHsKPj4gK8KgwqDCoCBfX3UzMiBuX3NsaWNlczsKPj4gK8KgwqDCoCBfX3UzMiBzbGljZV9z dHJpZGU7Cj4+ICvCoMKgwqAgX191MzIgc3Vic2xpY2Vfc3RyaWRlOwo+Cj4gU2FtZSBhcyBhYm92 ZSwgSSB0aGluayBtYXhfc2xpY2VzLCBtYXhfc3VibGljZXMgYW5kIGEgcXVlcnkgaGVscGVyIAo+ IHdvdWxkIGJlIG11Y2ggYmV0dGVyLgoKT2theSwgaXQgd2lsbCByZXF1aXJlIG1heF9ldXNfcGVy X3N1YnNsaWNlIHRob3VnaC4KCj4KPj4gKwo+PiArwqDCoMKgIF9fdTggZGF0YVtdOwo+PiArfTsK Pj4gKwo+PiDCoCAjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKPj4gwqAgfQo+PiDCoCAjZW5kaWYK Pj4KPgo+IFJlZ2FyZHMsCj4KPiBUdnJ0a28KPgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==