From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v4 6/6] drm/i915: expose rcs topology through query uAPI Date: Tue, 16 Jan 2018 08:42:29 +0000 Message-ID: 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 mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 106BA6E1A0 for ; Tue, 16 Jan 2018 08:42:32 +0000 (UTC) In-Reply-To: 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 Ck9uIDE1LzAxLzIwMTggMTg6MjMsIExpb25lbCBMYW5kd2VybGluIHdyb3RlOgo+IE9uIDE1LzAx LzE4IDE3OjU0LCBUdnJ0a28gVXJzdWxpbiB3cm90ZToKPj4KPj4gT24gMTUvMDEvMjAxOCAxNDo0 MSwgTGlvbmVsIExhbmR3ZXJsaW4gd3JvdGU6Cj4+PiBXaXRoIHRoZSBpbnRyb2R1Y3Rpb24gb2Yg YXN5bW1ldHJpYyBzbGljZXMgaW4gQ05MLCB3ZSBjYW5ub3QgcmVseSBvbgo+Pj4gdGhlIHByZXZp b3VzIFNVQlNMSUNFX01BU0sgZ2V0cGFyYW0gdG8gdGVsbCB1c2Vyc3BhY2Ugd2hhdCBzdWJzbGlj ZXMKPj4+IGFyZSBhdmFpbGFibGUuIEhlcmUgd2UgaW50cm9kdWNlIGEgbW9yZSBkZXRhaWxlZCB3 YXkgb2YgcXVlcnlpbmcgdGhlCj4+PiBHZW4ncyBHUFUgdG9wb2xvZ3kgdGhhdCBkb2Vzbid0IGFn Z3JlZ2F0ZSBudW1iZXJzLgo+Pj4KPj4+IFRoaXMgaXMgZXNzZW50aWFsIGZvciBtb25pdG9yaW5n IHBhcnRzIG9mIHRoZSBHUFUgd2l0aCB0aGUgT0EgdW5pdCwKPj4+IGJlY2F1c2UgY291bnRlcnMg bmVlZCB0byBiZSBub3JtYWxpemVkIHRvIHRoZSBudW1iZXIgb2YKPj4+IEVVcy9zdWJzbGljZXMv c2xpY2VzLiBUaGUgY3VycmVudCBhZ2dyZWdhdGVkIG51bWJlcnMgbGlrZSBFVV9UT1RBTCBkbwo+ Pj4gbm90IGdpdmVzIHVzIHN1ZmZpY2llbnQgaW5mb3JtYXRpb24uCj4+Pgo+Pj4gQXMgYSBib251 cyB3ZSBjYW4gZHJhdyByZXByZXNlbnRhdGlvbnMgb2YgdGhlIEdQVSA6Cj4+Pgo+Pj4gwqDCoMKg wqDCoMKgwqDCoCBodHRwczovL2ltZ3VyLmNvbS9hL3Z1cXBhCj4+Pgo+Pj4gdjI6IFJlbmFtZSB1 YXBpIHN0cnVjdCBzL19tYXNrL19pbmZvLyAoVHZydGtvKQo+Pj4gwqDCoMKgwqAgUmVwb3J0IG1h eF9zbGljZS9zdWJzbGljZS9ldXNfcGVyX3N1YnNsaWNlIHJhdGhlciB0aGFuIHN0cmlkZXMgCj4+ PiAoVHZydGtvKQo+Pj4gwqDCoMKgwqAgQWRkIHVhcGkgbWFjcm9zIHRvIHJlYWQgZGF0YSBmcm9t ICpfaW5mbyBzdHJ1Y3RzIChUdnJ0a28pCj4+Pgo+Pj4gdjM6IFVzZSAhISh2ICYgRFJNX0k5MTVf QklUKCkpIGZvciB1YXBpIG1hY3JvcyBpbnN0ZWFkIG9mIGN1c3RvbSAKPj4+IHNoaWZ0cyAoVHZy dGtvKQo+Pj4KPj4+IFNpZ25lZC1vZmYtYnk6IExpb25lbCBMYW5kd2VybGluIDxsaW9uZWwuZy5s YW5kd2VybGluQGludGVsLmNvbT4KPj4+IC0tLQo+Pj4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9xdWVyeS5jIHwgMTM0IAo+Pj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKPj4+IMKgIGluY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaMKgwqDCoMKgwqDCoCB8wqAg NTMgKysrKysrKysrKysrKysrCj4+PiDCoCAyIGZpbGVzIGNoYW5nZWQsIDE4NyBpbnNlcnRpb25z KCspCj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcXVlcnku YyAKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9xdWVyeS5jCj4+PiBpbmRleCA1Njk0 Y2ZlYTQ1NTMuLjQ2NWVjMThhNDcyZiAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcXVlcnkuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9xdWVy eS5jCj4+PiBAQCAtMjUsOCArMjUsMTI5IEBACj4+PiDCoCAjaW5jbHVkZSAiaTkxNV9kcnYuaCIK Pj4+IMKgICNpbmNsdWRlIDx1YXBpL2RybS9pOTE1X2RybS5oPgo+Pj4gwqAgK3N0YXRpYyBpbnQg cXVlcnlfc2xpY2VzX2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1faTkxNV9xdWVyeV9p dGVtICpxdWVyeV9pdGVtKQo+Pj4gK3sKPj4+ICvCoMKgwqAgY29uc3Qgc3RydWN0IHNzZXVfZGV2 X2luZm8gKnNzZXUgPSAmSU5URUxfSU5GTyhkZXZfcHJpdiktPnNzZXU7Cj4+PiArwqDCoMKgIHN0 cnVjdCBkcm1faTkxNV9xdWVyeV9zbGljZXNfaW5mbyBzbGljZXNfaW5mbzsKPj4+ICvCoMKgwqAg dTMyIGRhdGFfbGVuZ3RoLCBsZW5ndGg7Cj4+PiArCj4+PiArwqDCoMKgIGlmIChzc2V1LT5tYXhf c2xpY2VzID09IDApCj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9ERVY7Cj4+PiArCj4+ PiArwqDCoMKgIGRhdGFfbGVuZ3RoID0gc2l6ZW9mKHNzZXUtPnNsaWNlX21hc2spOwo+Pj4gK8Kg wqDCoCBsZW5ndGggPSBzaXplb2Yoc2xpY2VzX2luZm8pICsgZGF0YV9sZW5ndGg7Cj4+PiArCj4+ PiArwqDCoMKgIC8qCj4+PiArwqDCoMKgwqAgKiBJZiB3ZSBldmVyIGNoYW5nZSB0aGUgaW50ZXJu YWwgc2xpY2UgbWFzayBkYXRhIHR5cGUsIHdlJ2xsIAo+Pj4gbmVlZCB0bwo+Pj4gK8KgwqDCoMKg ICogdXBkYXRlIHRoaXMgZnVuY3Rpb24uCj4+PiArwqDCoMKgwqAgKi8KPj4+ICvCoMKgwqAgQlVJ TERfQlVHX09OKHNpemVvZih1OCkgIT0gc2l6ZW9mKHNzZXUtPnNsaWNlX21hc2spKTsKPj4+ICsK Pj4+ICvCoMKgwqAgaWYgKHF1ZXJ5X2l0ZW0tPmxlbmd0aCA9PSAwKSB7Cj4+PiArwqDCoMKgwqDC oMKgwqAgcXVlcnlfaXRlbS0+bGVuZ3RoID0gbGVuZ3RoOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJl dHVybiAwOwo+Pj4gK8KgwqDCoCB9Cj4+PiArCj4+PiArwqDCoMKgIGlmIChxdWVyeV9pdGVtLT5s ZW5ndGggIT0gbGVuZ3RoKQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOwo+Pj4g Kwo+Pj4gK8KgwqDCoCBtZW1zZXQoJnNsaWNlc19pbmZvLCAwLCBzaXplb2Yoc2xpY2VzX2luZm8p KTsKPj4+ICvCoMKgwqAgc2xpY2VzX2luZm8ubWF4X3NsaWNlcyA9IHNzZXUtPm1heF9zbGljZXM7 Cj4+PiArCj4+PiArwqDCoMKgIGlmIChjb3B5X3RvX3VzZXIodTY0X3RvX3VzZXJfcHRyKHF1ZXJ5 X2l0ZW0tPmRhdGFfcHRyKSwgCj4+PiAmc2xpY2VzX2luZm8sCj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHNpemVvZihzbGljZXNfaW5mbykpKQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVy biAtRUZBVUxUOwo+Pj4gKwo+Pj4gK8KgwqDCoCBpZiAoY29weV90b191c2VyKHU2NF90b191c2Vy X3B0cihxdWVyeV9pdGVtLT5kYXRhX3B0ciArCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBvZmZzZXRvZihzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfc2xpY2VzX2lu Zm8sIAo+Pj4gZGF0YSkpLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmc3NldS0+c2xp Y2VfbWFzaywgZGF0YV9sZW5ndGgpKQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRUZBVUxU Owo+Pj4gKwo+Pj4gK8KgwqDCoCByZXR1cm4gMDsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGlu dCBxdWVyeV9zdWJzbGljZXNfaW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1faTkxNV9xdWVy eV9pdGVtICpxdWVyeV9pdGVtKQo+Pj4gK3sKPj4+ICvCoMKgwqAgY29uc3Qgc3RydWN0IHNzZXVf ZGV2X2luZm8gKnNzZXUgPSAmSU5URUxfSU5GTyhkZXZfcHJpdiktPnNzZXU7Cj4+PiArwqDCoMKg IHN0cnVjdCBkcm1faTkxNV9xdWVyeV9zdWJzbGljZXNfaW5mbyBzdWJzbGljZXNfaW5mbzsKPj4+ ICvCoMKgwqAgdTMyIGRhdGFfbGVuZ3RoLCBsZW5ndGg7Cj4+PiArCj4+PiArwqDCoMKgIGlmIChz c2V1LT5tYXhfc2xpY2VzID09IDApCj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9ERVY7 Cj4+PiArCj4+PiArwqDCoMKgIG1lbXNldCgmc3Vic2xpY2VzX2luZm8sIDAsIHNpemVvZihzdWJz bGljZXNfaW5mbykpOwo+Pj4gK8KgwqDCoCBzdWJzbGljZXNfaW5mby5tYXhfc2xpY2VzID0gc3Nl dS0+bWF4X3NsaWNlczsKPj4+ICvCoMKgwqAgc3Vic2xpY2VzX2luZm8ubWF4X3N1YnNsaWNlcyA9 IHNzZXUtPm1heF9zdWJzbGljZXM7Cj4+PiArCj4+PiArwqDCoMKgIGRhdGFfbGVuZ3RoID0gc3Vi c2xpY2VzX2luZm8ubWF4X3NsaWNlcyAqCj4+PiArwqDCoMKgwqDCoMKgwqAgRElWX1JPVU5EX1VQ KHN1YnNsaWNlc19pbmZvLm1heF9zdWJzbGljZXMsCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgc2l6ZW9mKHNzZXUtPnN1YnNsaWNlX21hc2tbMF0pICogQklUU19QRVJfQllU RSk7Cj4+PiArwqDCoMKgIGxlbmd0aCA9IHNpemVvZihzdWJzbGljZXNfaW5mbykgKyBkYXRhX2xl bmd0aDsKPj4+ICsKPj4+ICvCoMKgwqAgaWYgKHF1ZXJ5X2l0ZW0tPmxlbmd0aCA9PSAwKSB7Cj4+ PiArwqDCoMKgwqDCoMKgwqAgcXVlcnlfaXRlbS0+bGVuZ3RoID0gbGVuZ3RoOwo+Pj4gK8KgwqDC oMKgwqDCoMKgIHJldHVybiAwOwo+Pj4gK8KgwqDCoCB9Cj4+PiArCj4+PiArwqDCoMKgIGlmIChx dWVyeV9pdGVtLT5sZW5ndGggIT0gbGVuZ3RoKQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAt RUlOVkFMOwo+Pj4gKwo+Pj4gK8KgwqDCoCBpZiAoY29weV90b191c2VyKHU2NF90b191c2VyX3B0 cihxdWVyeV9pdGVtLT5kYXRhX3B0ciksIAo+Pj4gJnN1YnNsaWNlc19pbmZvLAo+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBzaXplb2Yoc3Vic2xpY2VzX2luZm8pKSkKPj4+ICvCoMKgwqDC oMKgwqDCoCByZXR1cm4gLUVGQVVMVDsKPj4+ICsKPj4+ICvCoMKgwqAgaWYgKGNvcHlfdG9fdXNl cih1NjRfdG9fdXNlcl9wdHIocXVlcnlfaXRlbS0+ZGF0YV9wdHIgKwo+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb2Zmc2V0b2Yoc3RydWN0IGRybV9pOTE1X3F1 ZXJ5X3N1YnNsaWNlc19pbmZvLCAKPj4+IGRhdGEpKSwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgc3NldS0+c3Vic2xpY2VfbWFzaywgZGF0YV9sZW5ndGgpKQo+Pj4gK8KgwqDCoMKgwqDC oMKgIHJldHVybiAtRUZBVUxUOwo+Pj4gKwo+Pj4gK8KgwqDCoCByZXR1cm4gMDsKPj4+ICt9Cj4+ PiArCj4+PiArc3RhdGljIGludCBxdWVyeV9ldXNfaW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9p OTE1X3F1ZXJ5X2l0ZW0gKnF1ZXJ5X2l0ZW0pCj4+PiArewo+Pj4gK8KgwqDCoCBjb25zdCBzdHJ1 Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSA9ICZJTlRFTF9JTkZPKGRldl9wcml2KS0+c3NldTsKPj4+ ICvCoMKgwqAgc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2V1c19pbmZvIGV1c19pbmZvOwo+Pj4gK8Kg wqDCoCB1MzIgZGF0YV9sZW5ndGgsIGxlbmd0aDsKPj4+ICsKPj4+ICvCoMKgwqAgaWYgKHNzZXUt Pm1heF9zbGljZXMgPT0gMCkKPj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT0RFVjsKPj4+ ICsKPj4+ICvCoMKgwqAgbWVtc2V0KCZldXNfaW5mbywgMCwgc2l6ZW9mKGV1c19pbmZvKSk7Cj4+ PiArwqDCoMKgIGV1c19pbmZvLm1heF9zbGljZXMgPSBzc2V1LT5tYXhfc2xpY2VzOwo+Pj4gK8Kg wqDCoCBldXNfaW5mby5tYXhfc3Vic2xpY2VzID0gc3NldS0+bWF4X3N1YnNsaWNlczsKPj4+ICvC oMKgwqAgZXVzX2luZm8ubWF4X2V1c19wZXJfc3Vic2xpY2UgPSBzc2V1LT5tYXhfZXVzX3Blcl9z dWJzbGljZTsKPj4+ICsKPj4+ICvCoMKgwqAgZGF0YV9sZW5ndGggPSBldXNfaW5mby5tYXhfc2xp Y2VzICogZXVzX2luZm8ubWF4X3N1YnNsaWNlcyAqCj4+PiArwqDCoMKgwqDCoMKgwqAgRElWX1JP VU5EX1VQKGV1c19pbmZvLm1heF9ldXNfcGVyX3N1YnNsaWNlLCBCSVRTX1BFUl9CWVRFKTsKPj4+ ICvCoMKgwqAgbGVuZ3RoID0gc2l6ZW9mKGV1c19pbmZvKSArIGRhdGFfbGVuZ3RoOwo+Pj4gKwo+ Pj4gK8KgwqDCoCBpZiAocXVlcnlfaXRlbS0+bGVuZ3RoID09IDApIHsKPj4+ICvCoMKgwqDCoMKg wqDCoCBxdWVyeV9pdGVtLT5sZW5ndGggPSBsZW5ndGg7Cj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIDA7Cj4+PiArwqDCoMKgIH0KPj4+ICsKPj4+ICvCoMKgwqAgaWYgKHF1ZXJ5X2l0ZW0tPmxl bmd0aCAhPSBsZW5ndGgpCj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+PiAr Cj4+PiArwqDCoMKgIGlmIChjb3B5X3RvX3VzZXIodTY0X3RvX3VzZXJfcHRyKHF1ZXJ5X2l0ZW0t PmRhdGFfcHRyKSwgJmV1c19pbmZvLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzaXpl b2YoZXVzX2luZm8pKSkKPj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVGQVVMVDsKPj4+ICsK Pj4+ICvCoMKgwqAgaWYgKGNvcHlfdG9fdXNlcih1NjRfdG9fdXNlcl9wdHIocXVlcnlfaXRlbS0+ ZGF0YV9wdHIgKwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg b2Zmc2V0b2Yoc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2V1c19pbmZvLCBkYXRhKSksCj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNzZXUtPmV1X21hc2ssIGRhdGFfbGVuZ3RoKSkKPj4+ICvC oMKgwqDCoMKgwqDCoCByZXR1cm4gLUVGQVVMVDsKPj4KPj4gSSB0aGluayBpbiBhbGwgdGhyZWUg cXVlcmllcywgb25jZSB5b3UgaGF2ZSB0aGUgbGVuZ3RoLCB5b3UgY291bGQgCj4+IGV4dHJhY3Qg dGhlIGZvdXIgaWYgc3RhdGVtZW50IGFib3ZlIGludG8gYSBjb21tb24gaGVscGVyPyBBcmd1bWVu dHMgCj4+IGFyZSBxdWVyeV9pdGVtLCBsZW5ndGgsIGRhdGFfbGVuZ3RoLCBwdHJfcXVlcnlfaXRl bSwgcHRyX2RhdGEsIGFuZCAKPj4gb2Zmc2V0X2RhdGEsIHVubGVzcyBJIGFtIG1pc3Npbmcgc29t ZXRoaW5nLiBVcCB0byB5b3UgaWYgeW91IHdvdWxkIAo+PiBmaW5kIHRoYXQgYSB3b3J0aHkgY29t cGFjdGlvbi4KPiAKPiBJIGp1c3QgdHJpZWQgdGhhdCBidXQgdGhlIHJlc3VsdCBkb2Vzbid0IHJl YWxseSBsb29rIGdvb2QuCj4gWW91IG5lZWQgdG8gbWFpbnRhaW4gdGhlIGNvbnRyb2wgZmxvdyB2 aWEgYW4gaW5kaXJlY3QgcmV0dXJuIHZhbHVlLi4uCgpJIHdhcyB0aGlua2luZyBzb21ldGhpbmcg bGlrZSB0aGlzOgoKaW50IGluc2VydF9xdWVyeV9oZWxwZXJfbmFtZShxdWVyeV9pdGVtLCBxdWVy eV9pdGVtX3N6LCBsZW5ndGgsIApkYXRhX2xlbmd0aCwgcXVlcnlfaXRlbV9wdHIsIHF1ZXJ5X2Rh dGFfcHRyKQp7CiAgICAgaWYgKHF1ZXJ5X2l0ZW0tPmxlbmd0aCA9PSAwKSB7CiAgICAgICAgIHF1 ZXJ5X2l0ZW0tPmxlbmd0aCA9IGxlbmd0aDsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQoKICAg ICBpZiAocXVlcnlfaXRlbS0+bGVuZ3RoICE9IGxlbmd0aCkKICAgICAgICAgcmV0dXJuIC1FSU5W QUw7CgogICAgIGlmIChjb3B5X3RvX3VzZXIodTY0X3RvX3VzZXJfcHRyKHF1ZXJ5X2l0ZW0tPmRh dGFfcHRyKSwKCQkJcXVlcnlfaXRlbV9wdHIsIHF1ZXJ5X2l0ZW1fc3opKQogICAgICAgICByZXR1 cm4gLUVGQVVMVDsKCiAgICAgaWYgKGNvcHlfdG9fdXNlcih1NjRfdG9fdXNlcl9wdHIocXVlcnlf aXRlbS0+ZGF0YV9wdHIgKwogICAgICAgICAgICAgICAgICAgICAgcXVlcnlfaXRlbV9zeiwKICAg ICAgICAgICAgICBxdWVyeV9kYXRhX3B0ciwgZGF0YV9sZW5ndGgpKQogICAgICAgICByZXR1cm4g LUVGQVVMVDsKCiAgICAgcmV0dXJuIDA7Cn0KClRoZW4gaW4gdGhlIGhhbmRsZXJzIGp1c3QgZW5k IHdpdGg6CgpyZXR1cm4gaW5zZXJ0X3F1ZXJ5X2hlbHBlcl9oYW1lKC4uLik7Cgo/Cgo+Pgo+Pj4g Kwo+Pj4gK8KgwqDCoCByZXR1cm4gMDsKPj4+ICt9Cj4+PiArCj4+PiDCoCBpbnQgaTkxNV9xdWVy eV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLCBzdHJ1Y3QgCj4+PiBk cm1fZmlsZSAqZmlsZSkKPj4+IMKgIHsKPj4+ICvCoMKgwqAgc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+Pj4gwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2k5 MTVfcXVlcnkgKmFyZ3MgPSBkYXRhOwo+Pj4gwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2k5MTVfcXVl cnlfaXRlbSBfX3VzZXIgKnVzZXJfaXRlbV9wdHIgPQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHU2 NF90b191c2VyX3B0cihhcmdzLT5pdGVtc19wdHIpOwo+Pj4gQEAgLTM0LDE1ICsxNTUsMjggQEAg aW50IGk5MTVfcXVlcnlfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgCj4+PiB2b2lkICpk YXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4+PiDCoCDCoMKgwqDCoMKgIGZvciAoaSA9IDA7 IGkgPCBhcmdzLT5udW1faXRlbXM7IGkrKywgdXNlcl9pdGVtX3B0cisrKSB7Cj4+PiDCoMKgwqDC oMKgwqDCoMKgwqAgc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2l0ZW0gaXRlbTsKPj4+ICvCoMKgwqDC oMKgwqDCoCBpbnQgcmV0Owo+Pj4gwqAgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChjb3B5X2Zyb21f dXNlcigmaXRlbSwgdXNlcl9pdGVtX3B0ciwgc2l6ZW9mKGl0ZW0pKSkKPj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRUZBVUxUOwo+Pj4gwqAgwqDCoMKgwqDCoMKgwqDCoMKg IHN3aXRjaCAoaXRlbS5xdWVyeV9pZCkgewo+Pj4gK8KgwqDCoMKgwqDCoMKgIGNhc2UgRFJNX0k5 MTVfUVVFUllfSURfU0xJQ0VTX0lORk86Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQg PSBxdWVyeV9zbGljZXNfaW5mbyhkZXZfcHJpdiwgJml0ZW0pOwo+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgYnJlYWs7Cj4+PiArwqDCoMKgwqDCoMKgwqAgY2FzZSBEUk1fSTkxNV9RVUVSWV9J RF9TVUJTTElDRVNfSU5GTzoKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IHF1ZXJ5 X3N1YnNsaWNlc19pbmZvKGRldl9wcml2LCAmaXRlbSk7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBicmVhazsKPj4+ICvCoMKgwqDCoMKgwqDCoCBjYXNlIERSTV9JOTE1X1FVRVJZX0lEX0VV U19JTkZPOgo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gcXVlcnlfZXVzX2luZm8o ZGV2X3ByaXYsICZpdGVtKTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgIGRlZmF1bHQ6Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCByZXR1cm4gLUVJTlZBTDsKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+PiDCoCArwqDCoMKg wqDCoMKgwqAgaWYgKHJldCkKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7 Cj4+PiArCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGNvcHlfdG9fdXNlcih1c2VyX2l0ZW1f cHRyLCAmaXRlbSwgc2l6ZW9mKGl0ZW0pKSkKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHJldHVybiAtRUZBVUxUOwo+Pj4gwqDCoMKgwqDCoCB9Cj4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVk ZS91YXBpL2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4+PiBp bmRleCAzOWU5M2YxMGYyY2QuLmQyNWYyMWUzYzEwNyAxMDA2NDQKPj4+IC0tLSBhL2luY2x1ZGUv dWFwaS9kcm0vaTkxNV9kcm0uaAo+Pj4gKysrIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5o Cj4+PiBAQCAtMTYxOCw2ICsxNjE4LDkgQEAgc3RydWN0IGRybV9pOTE1X3BlcmZfb2FfY29uZmln IHsKPj4+IMKgIMKgIHN0cnVjdCBkcm1faTkxNV9xdWVyeV9pdGVtIHsKPj4+IMKgwqDCoMKgwqAg X191NjQgcXVlcnlfaWQ7Cj4+PiArI2RlZmluZSBEUk1fSTkxNV9RVUVSWV9JRF9TTElDRVNfSU5G T8KgwqDCoCAweDAxCj4+PiArI2RlZmluZSBEUk1fSTkxNV9RVUVSWV9JRF9TVUJTTElDRVNfSU5G TyAweDAyCj4+PiArI2RlZmluZSBEUk1fSTkxNV9RVUVSWV9JRF9FVVNfSU5GT8KgwqDCoMKgwqDC oCAweDAzCj4+Cj4+IFdvdWxkIERSTV9JOTE1X1FVRVJZX0lEXyJzaW5ndWxhciJfSU5GTyByZWFk IGJldHRlcj8gSW4gc3RydWN0IG5hbWVzIAo+PiBhcyB3ZWxsIGlmIHNvPwo+IAo+IEhtbS4uLiBT b3JyeSwgSSBkb24ndCB1bmRlcnN0YW5kIHlvdXIgY29tbWVudCBoZXJlLgo+IFdoYXQgd291bGQg YmUgInNpbmd1bGFyIiA/CgpPcHBvc2l0ZSBvZiBwbHVyYWwsIGxpa2U6CgpfUVVFUllfSURfU0xJ Q0VfSU5GTywgX1FVRVJZX0lEX1NVQlNMSUNFX0lORk8sIF9RVUVSWV9JRF9FVV9JTkZPLgoKQWN0 dWFsbHkgbm93IEknbSB0aGlua2luZyBpZiBfSURfIHBhcnQgY291bGQgYWxzbyBiZSByZW1vdmVk IGZvciBubyBsb3NzPwoKUmVnYXJkcywKClR2cnRrbwoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==