From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 6/6] drm/i915: expose rcs topology through query uAPI Date: Thu, 11 Jan 2018 12:45:06 +0000 Message-ID: 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 mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 067966E8A0 for ; Thu, 11 Jan 2018 12:45:09 +0000 (UTC) In-Reply-To: <20171218153520.14181-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 Ck9uIDE4LzEyLzIwMTcgMTU6MzUsIExpb25lbCBMYW5kd2VybGluIHdyb3RlOgo+IFdpdGggdGhl IGludHJvZHVjdGlvbiBvZiBhc3ltZXRyaWMgc2xpY2VzIGluIENOTCwgd2UgY2Fubm90IHJlbHkg b24KCmFzeW1tZXRyaWMKCj4gdGhlIHByZXZpb3VzIFNVQlNMSUNFX01BU0sgZ2V0cGFyYW0gdG8g dGVsbCB1c2Vyc3BhY2Ugd2hhdCBzdWJzbGljZXMKPiBhcmUgYXZhaWxhYmxlLiBIZXJlIHdlIGlu dHJvZHVjZSBhIG1vcmUgZGV0YWlsZWQgd2F5IG9mIHF1ZXJ5aW5nIHRoZQo+IEdlbidzIEdQVSB0 b3BvbG9neSB0aGF0IGRvZXNuJ3QgYWdncmVnYXRlIG51bWJlcnMuCj4gCj4gVGhpcyBpcyBlc3Nl bnRpYWwgZm9yIG1vbml0b3JpbmcgcGFydHMgb2YgdGhlIEdQVSB3aXRoIHRoZSBPQSB1bml0LAo+ IGJlY2F1c2UgY291bnRlcnMgbmVlZCB0byBiZSBub3JtYWxpemVkIHRvIHRoZSBudW1iZXIgb2YK PiBFVXMvc3Vic2xpY2VzL3NsaWNlcy4gVGhlIGN1cnJlbnQgYWdncmVnYXRlZCBudW1iZXJzIGxp a2UgRVVfVE9UQUwgZG8KPiBub3QgZ2l2ZXMgdXMgc3VmZmljaWVudCBpbmZvcm1hdGlvbi4KPiAK PiBBcyBhIGJvbnVzIHdlIGNhbiBkcmF3IHJlcHJlc2VudGF0aW9ucyBvZiB0aGUgR1BVIDoKPiAK PiAgICAgICAgICBodHRwczovL2ltZ3VyLmNvbS9hL3Z1cXBhCj4gCj4gU2lnbmVkLW9mZi1ieTog TGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5AaW50ZWwuY29tPgo+IC0tLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9xdWVyeS5jICAgICAgIHwgMTM0ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9x dWVyeV9pbmZvLmMgfCAgODggKysrKysrKysrKysrKysrKysrKysrCj4gICBpbmNsdWRlL3VhcGkv ZHJtL2k5MTVfZHJtLmggICAgICAgICAgICAgfCAgNDUgKysrKysrKysrKysKPiAgIDMgZmlsZXMg Y2hhbmdlZCwgMjY3IGluc2VydGlvbnMoKykKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9xdWVyeV9pbmZvLmMKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9xdWVyeS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9x dWVyeS5jCj4gaW5kZXggMjI3YTI4OTc4MTkwLi43YzBlYjA5ZDNhYWMgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9xdWVyeS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9xdWVyeS5jCj4gQEAgLTI1LDI0ICsyNSwxNTggQEAKPiAgICNpbmNsdWRlICJp OTE1X2Rydi5oIgo+ICAgI2luY2x1ZGUgPHVhcGkvZHJtL2k5MTVfZHJtLmg+Cj4gICAKPiArc3Rh dGljIGludCBxdWVyeV9zbGljZXNfbWFzayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gKwkJCSAgICAgc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2l0ZW0gKnF1ZXJ5X2l0ZW0pCj4g K3sKPiArCWNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1ID0gJklOVEVMX0lORk8oZGV2 X3ByaXYpLT5zc2V1Owo+ICsJc3RydWN0IGRybV9pOTE1X3F1ZXJ5X3NsaWNlc19tYXNrIHNsaWNl c19pbmZvOwo+ICsJdTMyIGRhdGFfbGVuZ3RoLCBsZW5ndGg7Cj4gKwo+ICsJaWYgKHNzZXUtPm1h eF9zbGljZXMgPT0gMCkKPiArCQlyZXR1cm4gLUVOT0RFVjsKCkRvIHlvdSBuZWVkIHRvIGhhbmRs ZSB0aGlzIGV4cGxpY2l0bHkgb3IganVzdCByZXR1cm4gYWxsIHplcm9zPyBJIGd1ZXNzIApJIGRv bid0IGtub3cgd2hpY2ggR1BVcyBoYXZlIHplcm8gc2xpY2VzLgoKPiArCj4gKwltZW1zZXQoJnNs aWNlc19pbmZvLCAwLCBzaXplb2Yoc2xpY2VzX2luZm8pKTsKCklzIHRoaXMgbmVlZGVkIHNpbmNl IGEpIHlvdSB3aWxsIHdyaXRlIHRvIHRoZSBvbmx5IGZpZWxkIGp1c3QgYmVsb3csIGFuZCAKYikg aXQgd29uJ3QgY2xlYXIgdGhlIHRhaWwgZGF0YSBhcnJheSBhbnl3YXk/Cgo+ICsKPiArCXNsaWNl c19pbmZvLm5fc2xpY2VzID0gc3NldS0+bWF4X3NsaWNlczsKTW92ZSB0byBhZnRlciB0aGUgcXVl cnlfaXRlbS0+bGVuZ3RoIGNoZWNrcy4KCj4gKwo+ICsJZGF0YV9sZW5ndGggPSBzaXplb2YodTgp OwoKU2l6ZSBpcyBkZXBlbmRhbnQgb24gbnVtYmVyIG9mIHNsaWNlcz8gRElWX1JPVU5EX1VQKG5f c2xpY2VzLCAKQklUU19QRVJfQllURSkgPwoKPiArCWxlbmd0aCA9IHNpemVvZihzdHJ1Y3QgZHJt X2k5MTVfcXVlcnlfc2xpY2VzX21hc2spICsgZGF0YV9sZW5ndGg7CgpzaXplb2Yoc2xpY2VzX2lu Zm8pCgo+ICsKPiArCS8qCj4gKwkgKiBJZiB3ZSBldmVyIGNoYW5nZSB0aGUgaW50ZXJuYWwgc2xp Y2UgbWFzayBkYXRhIHR5cGUsIHdlJ2xsIG5lZWQgdG8KPiArCSAqIHVwZGF0ZSB0aGlzIGZ1bmN0 aW9uLgo+ICsJICovCj4gKwlCVUlMRF9CVUdfT04oc2l6ZW9mKHU4KSAhPSBzaXplb2Yoc3NldS0+ c2xpY2VfbWFzaykpOwoKSG0gYSBiaXQgd2VhayBzaW5jZSBpdCBpcyBub3Qgb25seSBhYm91dCBz aXplIGJ1dCBhbHNvIGRhdGEgCnJlcHJlc2VudGF0aW9uLiBCdXQgSSBkb24ndCBoYXZlIGFueSBi ZXR0ZXIgaWRlYXMuCgo+ICsKPiArCWlmIChxdWVyeV9pdGVtLT5sZW5ndGggPT0gMCkgewo+ICsJ CXF1ZXJ5X2l0ZW0tPmxlbmd0aCA9IGxlbmd0aDsKPiArCQlyZXR1cm4gMDsKPiArCX0KPiArCj4g KwlpZiAocXVlcnlfaXRlbS0+bGVuZ3RoICE9IGxlbmd0aCkKPiArCQlyZXR1cm4gLUVJTlZBTDsK PiArCj4gKwlpZiAoY29weV90b191c2VyKHU2NF90b191c2VyX3B0cihxdWVyeV9pdGVtLT5kYXRh X3B0ciksICZzbGljZXNfaW5mbywKPiArCQkJIHNpemVvZihzbGljZXNfaW5mbykpKQo+ICsJCXJl dHVybiAtRUZBVUxUOwo+ICsKPiArCWlmIChjb3B5X3RvX3VzZXIodTY0X3RvX3VzZXJfcHRyKHF1 ZXJ5X2l0ZW0tPmRhdGFfcHRyICsKPiArCQkJCQkgb2Zmc2V0b2Yoc3RydWN0IGRybV9pOTE1X3F1 ZXJ5X3NsaWNlc19tYXNrLCBkYXRhKSksCj4gKwkJCSAmc3NldS0+c2xpY2VfbWFzaywgZGF0YV9s ZW5ndGgpKQo+ICsJCXJldHVybiAtRUZBVUxUOwo+ICsKPiArCXJldHVybiAwOwo+ICt9CgpTb21l IG9mIHRoZSBhYm92ZSBjb21tZW50cyBhbHNvIGFwcGx5IHRvIHRoZSBvdGhlciB0d28gcXVlcnkg ZnVuY3Rpb25zIApiZWxvdy4KCj4gK3N0YXRpYyBpbnQgcXVlcnlfc3Vic2xpY2VzX21hc2soc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJc3RydWN0IGRybV9pOTE1X3F1 ZXJ5X2l0ZW0gKnF1ZXJ5X2l0ZW0pCj4gK3sKPiArCWNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZv ICpzc2V1ID0gJklOVEVMX0lORk8oZGV2X3ByaXYpLT5zc2V1Owo+ICsJc3RydWN0IGRybV9pOTE1 X3F1ZXJ5X3N1YnNsaWNlc19tYXNrIHN1YnNsaWNlc19pbmZvOwo+ICsJdTMyIGRhdGFfbGVuZ3Ro LCBsZW5ndGg7Cj4gKwo+ICsJaWYgKHNzZXUtPm1heF9zbGljZXMgPT0gMCkKPiArCQlyZXR1cm4g LUVOT0RFVjsKPiArCj4gKwltZW1zZXQoJnN1YnNsaWNlc19pbmZvLCAwLCBzaXplb2Yoc3Vic2xp Y2VzX2luZm8pKTsKPiArCj4gKwlzdWJzbGljZXNfaW5mby5uX3NsaWNlcyA9IHNzZXUtPm1heF9z bGljZXM7Cj4gKwlzdWJzbGljZXNfaW5mby5zbGljZV9zdHJpZGUgPSBBTElHTihzc2V1LT5tYXhf c3Vic2xpY2VzLCA4KSAvIDg7Cj4gKwo+ICsJZGF0YV9sZW5ndGggPSBzdWJzbGljZXNfaW5mby5u X3NsaWNlcyAqIHN1YnNsaWNlc19pbmZvLnNsaWNlX3N0cmlkZTsKPiArCWxlbmd0aCA9IHNpemVv ZihzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfc3Vic2xpY2VzX21hc2spICsgZGF0YV9sZW5ndGg7Cj4g Kwo+ICsJaWYgKHF1ZXJ5X2l0ZW0tPmxlbmd0aCA9PSAwKSB7Cj4gKwkJcXVlcnlfaXRlbS0+bGVu Z3RoID0gbGVuZ3RoOwo+ICsJCXJldHVybiAwOwo+ICsJfQo+ICsKPiArCWlmIChxdWVyeV9pdGVt LT5sZW5ndGggIT0gbGVuZ3RoKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWlmIChjb3B5 X3RvX3VzZXIodTY0X3RvX3VzZXJfcHRyKHF1ZXJ5X2l0ZW0tPmRhdGFfcHRyKSwgJnN1YnNsaWNl c19pbmZvLAo+ICsJCQkgc2l6ZW9mKHN1YnNsaWNlc19pbmZvKSkpCj4gKwkJcmV0dXJuIC1FRkFV TFQ7Cj4gKwo+ICsJaWYgKGNvcHlfdG9fdXNlcih1NjRfdG9fdXNlcl9wdHIocXVlcnlfaXRlbS0+ ZGF0YV9wdHIgKwo+ICsJCQkJCSBvZmZzZXRvZihzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfc3Vic2xp Y2VzX21hc2ssIGRhdGEpKSwKPiArCQkJIHNzZXUtPnN1YnNsaWNlc19tYXNrLCBkYXRhX2xlbmd0 aCkpCj4gKwkJcmV0dXJuIC1FRkFVTFQ7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgcXVlcnlfZXVzX21hc2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+ICsJCQkgIHN0cnVjdCBkcm1faTkxNV9xdWVyeV9pdGVtICpxdWVyeV9pdGVtKQo+ICt7Cj4g Kwljb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSA9ICZJTlRFTF9JTkZPKGRldl9wcml2 KS0+c3NldTsKPiArCXN0cnVjdCBkcm1faTkxNV9xdWVyeV9ldXNfbWFzayBldXNfaW5mbzsKPiAr CXUzMiBkYXRhX2xlbmd0aCwgbGVuZ3RoOwo+ICsKPiArCWlmIChzc2V1LT5tYXhfc2xpY2VzID09 IDApCj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwo+ICsJbWVtc2V0KCZldXNfaW5mbywgMCwgc2l6 ZW9mKGV1c19pbmZvKSk7Cj4gKwo+ICsJZXVzX2luZm8uc3Vic2xpY2Vfc3RyaWRlID0gQUxJR04o c3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UsIDgpIC8gODsKPiArCWV1c19pbmZvLnNsaWNlX3N0 cmlkZSA9IHNzZXUtPm1heF9zdWJzbGljZXMgKiBldXNfaW5mby5zdWJzbGljZV9zdHJpZGU7Cj4g KwlldXNfaW5mby5uX3NsaWNlcyA9IHNzZXUtPm1heF9zbGljZXM7Cj4gKwo+ICsJZGF0YV9sZW5n dGggPSBldXNfaW5mby5uX3NsaWNlcyAqIGV1c19pbmZvLnNsaWNlX3N0cmlkZTsKPiArCWxlbmd0 aCA9IHNpemVvZihzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZXVzX21hc2spICsgZGF0YV9sZW5ndGg7 Cj4gKwo+ICsJaWYgKHF1ZXJ5X2l0ZW0tPmxlbmd0aCA9PSAwKSB7Cj4gKwkJcXVlcnlfaXRlbS0+ bGVuZ3RoID0gbGVuZ3RoOwo+ICsJCXJldHVybiAwOwo+ICsJfQo+ICsKPiArCWlmIChxdWVyeV9p dGVtLT5sZW5ndGggIT0gbGVuZ3RoKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWlmIChj b3B5X3RvX3VzZXIodTY0X3RvX3VzZXJfcHRyKHF1ZXJ5X2l0ZW0tPmRhdGFfcHRyKSwgJmV1c19p bmZvLAo+ICsJCQkgc2l6ZW9mKGV1c19pbmZvKSkpCj4gKwkJcmV0dXJuIC1FRkFVTFQ7Cj4gKwo+ ICsJaWYgKGNvcHlfdG9fdXNlcih1NjRfdG9fdXNlcl9wdHIocXVlcnlfaXRlbS0+ZGF0YV9wdHIg Kwo+ICsJCQkJCSBvZmZzZXRvZihzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZXVzX21hc2ssIGRhdGEp KSwKPiArCQkJIHNzZXUtPmV1X21hc2ssIGRhdGFfbGVuZ3RoKSkKPiArCQlyZXR1cm4gLUVGQVVM VDsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgIGludCBpOTE1X3F1ZXJ5X2lvY3RsKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkK PiAgIHsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2 KTsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcXVlcnkgKmFyZ3MgPSBkYXRhOwo+ICAgCXUzMiBpOwo+ ICAgCj4gICAJZm9yIChpID0gMDsgaSA8IGFyZ3MtPm51bV9pdGVtczsgaSsrKSB7Cj4gICAJCXN0 cnVjdCBkcm1faTkxNV9xdWVyeV9pdGVtIGl0ZW07Cj4gICAJCXU2NCBpdGVtX3VzZXJfcHRyID0g YXJncy0+aXRlbXNfcHRyICsgc2l6ZW9mKGl0ZW0pICogaTsKPiArCQlpbnQgcmV0Owo+ICAgCj4g ICAJCWlmIChjb3B5X2Zyb21fdXNlcigmaXRlbSwgdTY0X3RvX3VzZXJfcHRyKGl0ZW1fdXNlcl9w dHIpLAo+ICAgCQkJCSAgIHNpemVvZihpdGVtKSkpCj4gICAJCQlyZXR1cm4gLUVGQVVMVDsKPiAg IAo+ICAgCQlzd2l0Y2ggKGl0ZW0ucXVlcnlfaWQpIHsKPiArCQljYXNlIERSTV9JOTE1X1FVRVJZ X0lEX1NMSUNFU19NQVNLOgo+ICsJCQlyZXQgPSBxdWVyeV9zbGljZXNfbWFzayhkZXZfcHJpdiwg Jml0ZW0pOwo+ICsJCQlicmVhazsKPiArCQljYXNlIERSTV9JOTE1X1FVRVJZX0lEX1NVQlNMSUNF U19NQVNLOgo+ICsJCQlyZXQgPSBxdWVyeV9zdWJzbGljZXNfbWFzayhkZXZfcHJpdiwgJml0ZW0p Owo+ICsJCQlicmVhazsKPiArCQljYXNlIERSTV9JOTE1X1FVRVJZX0lEX0VVU19NQVNLOgo+ICsJ CQlyZXQgPSBxdWVyeV9ldXNfbWFzayhkZXZfcHJpdiwgJml0ZW0pOwo+ICsJCQlicmVhazsKPiAg IAkJZGVmYXVsdDoKPiAgIAkJCXJldHVybiAtRUlOVkFMOwo+ICAgCQl9Cj4gICAKPiArCQlpZiAo cmV0KQo+ICsJCQlyZXR1cm4gcmV0Owo+ICsKPiAgIAkJaWYgKGNvcHlfdG9fdXNlcih1NjRfdG9f dXNlcl9wdHIoaXRlbV91c2VyX3B0ciksICZpdGVtLAo+ICAgCQkJCSBzaXplb2YoaXRlbSkpKQo+ ICAgCQkJcmV0dXJuIC1FRkFVTFQ7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3F1ZXJ5X2luZm8uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3F1ZXJ5X2lu Zm8uYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi43OWIwM2Jl OWY1MWEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cXVlcnlfaW5mby5jCj4gQEAgLTAsMCArMSw4OCBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkg MjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBn cmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBj b3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAo dGhlICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJl c3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMg dG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNl bnNlLAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVy bWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRv IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhl IGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1 ZGluZyB0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBj b3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsg Kgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5U WSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5P VCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5P IEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJ QUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hF VEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5H Cj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9S IFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ICsgKgo+ ICsgKi8KPiArCj4gKyNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICsjaW5jbHVkZSA8dWFwaS9kcm0v aTkxNV9kcm0uaD4KPiArCj4gK3N0YXRpYyBpbnQgcXVlcnlfaW5mb19yY3NfdG9wb2xvZ3koc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJICAgc3RydWN0IGRybV9pOTE1 X3F1ZXJ5X2luZm8gKmFyZ3MpCgpVbnVzZWQgYXJ0ZWZhY3Qgb2YgYSBwcmV2aW91cyB2ZXJzaW9u PwoKPiArewo+ICsJY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAmSU5URUxfSU5G TyhkZXZfcHJpdiktPnNzZXU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcmNzX3RvcG9sb2d5X2luZm8g X191c2VyICp1c2VyX3RvcG9sb2d5ID0KPiArCQl1NjRfdG9fdXNlcl9wdHIoYXJncy0+aW5mb19w dHIpOwo+ICsJc3RydWN0IGRybV9pOTE1X3Jjc190b3BvbG9neV9pbmZvIHRvcG9sb2d5Owo+ICsJ dTMyIGRhdGFfc2l6ZSwgdG90YWxfc2l6ZTsKPiArCWNvbnN0IHU4ICpkYXRhID0gTlVMTDsKPiAr CWludCByZXQ7Cj4gKwo+ICsJLyogTm90IHN1cHBvcnRlZCBvbiBnZW4gPCA4LiAqLwo+ICsJaWYg KHNzZXUtPm1heF9zbGljZXMgPT0gMCkKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gKwlzd2l0 Y2ggKGFyZ3MtPnF1ZXJ5X3BhcmFtc1swXSkgewo+ICsJY2FzZSBJOTE1X1JDU19UT1BPTE9HWV9T TElDRToKPiArCQl0b3BvbG9neS5wYXJhbXNbMF0gPSBzc2V1LT5tYXhfc2xpY2VzOwo+ICsJCWRh dGFfc2l6ZSA9IHNpemVvZihzc2V1LT5zbGljZV9tYXNrKTsKPiArCQlkYXRhID0gJnNzZXUtPnNs aWNlX21hc2s7Cj4gKwkJYnJlYWs7Cj4gKwo+ICsJY2FzZSBJOTE1X1JDU19UT1BPTE9HWV9TVUJT TElDRToKPiArCQl0b3BvbG9neS5wYXJhbXNbMF0gPSBzc2V1LT5tYXhfc2xpY2VzOwo+ICsJCXRv cG9sb2d5LnBhcmFtc1sxXSA9IEFMSUdOKHNzZXUtPm1heF9zdWJzbGljZXMsIDgpIC8gODsKPiAr CQlkYXRhX3NpemUgPSBzc2V1LT5tYXhfc2xpY2VzICogdG9wb2xvZ3kucGFyYW1zWzFdOwo+ICsJ CWRhdGEgPSBzc2V1LT5zdWJzbGljZXNfbWFzazsKPiArCQlicmVhazsKPiArCj4gKwljYXNlIEk5 MTVfUkNTX1RPUE9MT0dZX0VVOgo+ICsJCXRvcG9sb2d5LnBhcmFtc1syXSA9IEFMSUdOKHNzZXUt Pm1heF9ldXNfcGVyX3N1YnNsaWNlLCA4KSAvIDg7Cj4gKwkJdG9wb2xvZ3kucGFyYW1zWzFdID0g c3NldS0+bWF4X3N1YnNsaWNlcyAqIHRvcG9sb2d5LnBhcmFtc1syXTsKPiArCQl0b3BvbG9neS5w YXJhbXNbMF0gPSBzc2V1LT5tYXhfc2xpY2VzOwo+ICsJCWRhdGFfc2l6ZSA9IHNzZXUtPm1heF9z bGljZXMgKiB0b3BvbG9neS5wYXJhbXNbMV07Cj4gKwkJZGF0YSA9IHNzZXUtPmV1X21hc2s7Cj4g KwkJYnJlYWs7Cj4gKwo+ICsJZGVmYXVsdDoKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiAr Cj4gKwl0b3RhbF9zaXplID0gc2l6ZW9mKHRvcG9sb2d5KSArIGRhdGFfc2l6ZTsKPiArCj4gKwlp ZiAoYXJncy0+aW5mb19wdHJfbGVuID09IDApIHsKPiArCQlhcmdzLT5pbmZvX3B0cl9sZW4gPSB0 b3RhbF9zaXplOwo+ICsJCXJldHVybiAwOwo+ICsJfQo+ICsKPiArCWlmIChhcmdzLT5pbmZvX3B0 cl9sZW4gPCB0b3RhbF9zaXplKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCXJldCA9IGNv cHlfdG9fdXNlcih1c2VyX3RvcG9sb2d5LCAmdG9wb2xvZ3ksIHNpemVvZih0b3BvbG9neSkpOwo+ ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gLUVGQVVMVDsKPiArCj4gKwlyZXQgPSBjb3B5X3RvX3Vz ZXIodXNlcl90b3BvbG9neSArIDEsIGRhdGEsIGRhdGFfc2l6ZSk7Cj4gKwlpZiAocmV0KQo+ICsJ CXJldHVybiAtRUZBVUxUOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+ IGluZGV4IDg3ZGQ4YjE1NTQ4Yy4uY2RmYmZjYjEyM2QwIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUv dWFwaS9kcm0vaTkxNV9kcm0uaAo+ICsrKyBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+ IEBAIC0xNjE4LDYgKzE2MTgsOSBAQCBzdHJ1Y3QgZHJtX2k5MTVfcGVyZl9vYV9jb25maWcgewo+ ICAgCj4gICBzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfaXRlbSB7Cj4gICAJX191MzIgcXVlcnlfaWQ7 Cj4gKyNkZWZpbmUgRFJNX0k5MTVfUVVFUllfSURfU0xJQ0VTX01BU0sgICAgMHgwMQo+ICsjZGVm aW5lIERSTV9JOTE1X1FVRVJZX0lEX1NVQlNMSUNFU19NQVNLIDB4MDIKPiArI2RlZmluZSBEUk1f STkxNV9RVUVSWV9JRF9FVVNfTUFTSyAgICAgICAweDAzCj4gICAKPiAgIAkvKgo+ICAgCSAqIFdo ZW4gbGVmdCB0byAwIGJ5IHVzZXJzcGFjZSwgdGhpcyBpcyBmaWxsZWQgd2l0aCB0aGUgc2l6ZSB0 aGUgZGF0YQo+IEBAIC0xNjQ0LDYgKzE2NDcsNDggQEAgc3RydWN0IGRybV9pOTE1X3F1ZXJ5IHsK PiAgIAlfX3U2NCBpdGVtc19wdHI7Cj4gICB9Owo+ICAgCj4gKy8qIERhdGEgd3JpdHRlbiBieSB0 aGUga2VybmVsIHdpdGggcXVlcnkgRFJNX0k5MTVfUVVFUllfSURfU0xJQ0VTX01BU0sgOgo+ICsg Kgo+ICsgKiBkYXRhOiBlYWNoIGJpdCBpbmRpY2F0ZXMgd2hldGhlciBhIHNsaWNlIGlzIGF2YWls YWJsZSAoMSkgb3IgZnVzZWQgb2ZmCj4gKyAqICgwKS4gRm9ybXVsYSB0byB0ZWxsIGlmIHNsaWNl IFggaXMgYXZhaWxhYmxlIDoKPiArICoKPiArICogICAgICAgICAoZGF0YVtYIC8gOF0gPj4gKFgg JSA4KSkgJiAxCgpBZGQgYSBoZWxwZXIgdGFraW5nIHN0cnVjdCBkcm1faTkxNV9xdWVyeV9zbGlj ZXNfbWFzayBmb3IgdXNlcnNwYWNlIHRvIApkbyB0aGlzLiBNYWNybyB3b3VsZCBiZSBnb29kIEkg dGhpbmsuCgo+ICsgKi8KPiArc3RydWN0IGRybV9pOTE1X3F1ZXJ5X3NsaWNlc19tYXNrIHsKClJl bmFtZSBhbGwgdWFwaSBzdHJ1Y3QgdG8gX2luZm8gaW5zdGVhZCBvZiBfbWFzayBzdWZmaXg/Cgo+ ICsJX191MzIgbl9zbGljZXM7Cj4gKwo+ICsJX191OCBkYXRhW107CgpJcyBhIHplcm8gc2l6ZSBh cnJheSBhIEdDQyBleHRlbnNpb24gb3Igc29tZXRoaW5nPyBJIHNvbWVob3cgc2VlbSB0byAKcmVt ZW1iZXIgc29tZW9uZSB3YXMgY29tcGxhaW5pbmcgYWJvdXQgdGhpcy4KCj4gK307Cj4gKwo+ICsv KiBEYXRhIHdyaXR0ZW4gYnkgdGhlIGtlcm5lbCB3aXRoIHF1ZXJ5IERSTV9JOTE1X1FVRVJZX0lE X1NVQlNMSUNFU19NQVNLIDoKPiArICoKPiArICogZGF0YTogZWFjaCBiaXQgaW5kaWNhdGVzIHdo ZXRoZXIgYSBzdWJzbGljZSBpcyBhdmFpbGFibGUgKDEpIG9yIGZ1c2VkIG9mZgo+ICsgKiAoMCku IEZvcm11bGEgdG8gdGVsbCBpZiBzbGljZSBYIHN1YnNsaWNlIFkgaXMgYXZhaWxhYmxlIDoKPiAr ICoKPiArICogICAgICAgICAoZGF0YVsoWCAqIHNsaWNlX3N0cmlkZSkgKyBZIC8gOF0gPj4gKFkg JSA4KSkgJiAxCj4gKyAqLwo+ICtzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfc3Vic2xpY2VzX21hc2sg ewo+ICsJX191MzIgbl9zbGljZXM7Cj4gKwlfX3UzMiBzbGljZV9zdHJpZGU7CgpJIHRoaW5rIGl0 IHdvdWxkIGJlIGJldHRlciB0byByZXR1cm4gc3Vic2xpY2VfbWF4IGFuZCBhbHNvIGFkZCBhIHF1 ZXJ5IApoZWxwZXIgbGlrZSBhYm92ZS4KCj4gKwo+ICsJX191OCBkYXRhW107Cj4gK307Cj4gKwo+ ICsvKiBEYXRhIHdyaXR0ZW4gYnkgdGhlIGtlcm5lbCB3aXRoIHF1ZXJ5IERSTV9JOTE1X1FVRVJZ X0lEX0VVU19NQVNLIDoKPiArICoKPiArICogZGF0YTogRWFjaCBiaXQgaW5kaWNhdGVzIHdoZXRo ZXIgYSBzdWJzbGljZSBpcyBhdmFpbGFibGUgKDEpIG9yIGZ1c2VkIG9mZgo+ICsgKiAoMCkuIEZv cm11bGEgdG8gdGVsbCBpZiBzbGljZSBYIHN1YnNsaWNlIFkgZXUgWiBpcyBhdmFpbGFibGUgOgo+ ICsgKgo+ICsgKiAgICAgICAgIChkYXRhW1ggKiBzbGljZV9zdHJpZGUgKyBZICogc3Vic2xpY2Vf c3RyaWRlICsgWiAvIDhdID4+IChaICUgOCkpICYgMQo+ICsgKi8KPiArc3RydWN0IGRybV9pOTE1 X3F1ZXJ5X2V1c19tYXNrIHsKPiArCV9fdTMyIG5fc2xpY2VzOwo+ICsJX191MzIgc2xpY2Vfc3Ry aWRlOwo+ICsJX191MzIgc3Vic2xpY2Vfc3RyaWRlOwoKU2FtZSBhcyBhYm92ZSwgSSB0aGluayBt YXhfc2xpY2VzLCBtYXhfc3VibGljZXMgYW5kIGEgcXVlcnkgaGVscGVyIHdvdWxkIApiZSBtdWNo IGJldHRlci4KCj4gKwo+ICsJX191OCBkYXRhW107Cj4gK307Cj4gKwo+ICAgI2lmIGRlZmluZWQo X19jcGx1c3BsdXMpCj4gICB9Cj4gICAjZW5kaWYKPiAKClJlZ2FyZHMsCgpUdnJ0a28KX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==