From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 33/46] drm/i915: Extend CONTEXT_CREATE to set parameters upon construction Date: Tue, 12 Feb 2019 13:43:37 +0000 Message-ID: <4108ff10-5286-a8b0-6b39-763454b79c39@linux.intel.com> References: <20190206130356.18771-1-chris@chris-wilson.co.uk> <20190206130356.18771-34-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id E5C966E370 for ; Tue, 12 Feb 2019 13:43:28 +0000 (UTC) In-Reply-To: <20190206130356.18771-34-chris@chris-wilson.co.uk> 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: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDA2LzAyLzIwMTkgMTM6MDMsIENocmlzIFdpbHNvbiB3cm90ZToKPiBJdCBjYW4gYmUgdXNl ZnVsIHRvIGhhdmUgYSBzaW5nbGUgaW9jdGwgdG8gY3JlYXRlIGEgY29udGV4dCB3aXRoIGFsbAo+ IHRoZSBpbml0aWFsIHBhcmFtZXRlcnMgaW5zdGVhZCBvZiBhIHNlcmllcyBvZiBjcmVhdGUgKyBz ZXRwYXJhbSArIHNldHBhcmFtCj4gaW9jdGxzLiBUaGlzIGV4dGVuc2lvbiB0byBjcmVhdGUgY29u dGV4dCBhbGxvd3MgYW55IG9mIHRoZSBwYXJhbWV0ZXJzCj4gdG8gYmUgcGFzc2VkIGluIGFzIGEg bGlua2VkIGxpc3QgdG8gYmUgYXBwbGllZCB0byB0aGUgbmV3bHkgY29uc3RydWN0ZWQKPiBjb250 ZXh0Lgo+IAo+IHYyOiBNYWtlIGEgbG9jYWwgY29weSBvZiB1c2VyIHNldHBhcmFtIChUdnJ0a28p Cj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28u dWs+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAgfCAg IDIgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyB8IDQyOCAr KysrKysrKysrKysrLS0tLS0tLS0tLS0KPiAgIGluY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCAg ICAgICAgICAgICB8IDE2MyArKysrLS0tLS0KPiAgIDMgZmlsZXMgY2hhbmdlZCwgMzI1IGluc2Vy dGlvbnMoKyksIDI2OCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBp bmRleCA0ODdlNzgwOTRlOTMuLmZjMTE0NjBmODMyNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuYwo+IEBAIC0yOTk0LDcgKzI5OTQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pb2N0 bF9kZXNjIGk5MTVfaW9jdGxzW10gPSB7Cj4gICAJRFJNX0lPQ1RMX0RFRl9EUlYoSTkxNV9TRVRf U1BSSVRFX0NPTE9SS0VZLCBpbnRlbF9zcHJpdGVfc2V0X2NvbG9ya2V5X2lvY3RsLCBEUk1fTUFT VEVSKSwKPiAgIAlEUk1fSU9DVExfREVGX0RSVihJOTE1X0dFVF9TUFJJVEVfQ09MT1JLRVksIGRy bV9ub29wLCBEUk1fTUFTVEVSKSwKPiAgIAlEUk1fSU9DVExfREVGX0RSVihJOTE1X0dFTV9XQUlU LCBpOTE1X2dlbV93YWl0X2lvY3RsLCBEUk1fQVVUSHxEUk1fUkVOREVSX0FMTE9XKSwKPiAtCURS TV9JT0NUTF9ERUZfRFJWKEk5MTVfR0VNX0NPTlRFWFRfQ1JFQVRFLCBpOTE1X2dlbV9jb250ZXh0 X2NyZWF0ZV9pb2N0bCwgRFJNX1JFTkRFUl9BTExPVyksCj4gKwlEUk1fSU9DVExfREVGX0RSVihJ OTE1X0dFTV9DT05URVhUX0NSRUFURV9FWFQsIGk5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2lvY3Rs LCBEUk1fUkVOREVSX0FMTE9XKSwKPiAgIAlEUk1fSU9DVExfREVGX0RSVihJOTE1X0dFTV9DT05U RVhUX0RFU1RST1ksIGk5MTVfZ2VtX2NvbnRleHRfZGVzdHJveV9pb2N0bCwgRFJNX1JFTkRFUl9B TExPVyksCj4gICAJRFJNX0lPQ1RMX0RFRl9EUlYoSTkxNV9SRUdfUkVBRCwgaTkxNV9yZWdfcmVh ZF9pb2N0bCwgRFJNX1JFTkRFUl9BTExPVyksCj4gICAJRFJNX0lPQ1RMX0RFRl9EUlYoSTkxNV9H RVRfUkVTRVRfU1RBVFMsIGk5MTVfZ2VtX2NvbnRleHRfcmVzZXRfc3RhdHNfaW9jdGwsIERSTV9S RU5ERVJfQUxMT1cpLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiBp bmRleCBkZDQ5YjFlZjNmZjIuLjYwOWVmNTlmNGQ5NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9jb250ZXh0LmMKPiBAQCAtODksNiArODksNyBAQAo+ICAgI2luY2x1ZGUgPGRy bS9pOTE1X2RybS5oPgo+ICAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gICAjaW5jbHVkZSAiaTkx NV90cmFjZS5oIgo+ICsjaW5jbHVkZSAiaTkxNV91c2VyX2V4dGVuc2lvbnMuaCIKPiAgICNpbmNs dWRlICJpbnRlbF9scmNfcmVnLmgiCj4gICAjaW5jbHVkZSAiaW50ZWxfd29ya2Fyb3VuZHMuaCIK PiAgIAo+IEBAIC0xMDQ0LDE4OCArMTA0NSw2IEBAIHN0YXRpYyBpbnQgc2V0X3BwZ3R0KHN0cnVj dCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gICAJcmV0dXJuIGVycjsKPiAgIH0KPiAgIAo+IC1z dGF0aWMgYm9vbCBjbGllbnRfaXNfYmFubmVkKHN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUg KmZpbGVfcHJpdikKPiAtewo+IC0JcmV0dXJuIGF0b21pY19yZWFkKCZmaWxlX3ByaXYtPmJhbl9z Y29yZSkgPj0gSTkxNV9DTElFTlRfU0NPUkVfQkFOTkVEOwo+IC19Cj4gLQo+IC1pbnQgaTkxNV9n ZW1fY29udGV4dF9jcmVhdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKPiAtCQkJCSAgc3RydWN0IGRybV9maWxlICpmaWxlKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2NvbnRleHRfY3JlYXRlICphcmdzID0gZGF0YTsKPiAtCXN0cnVjdCBkcm1faTkxNV9maWxl X3ByaXZhdGUgKmZpbGVfcHJpdiA9IGZpbGUtPmRyaXZlcl9wcml2Owo+IC0Jc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKmN0eDsKPiAtCWludCByZXQ7Cj4gLQo+IC0JaWYgKCFEUklWRVJfQ0FQUyhk ZXZfcHJpdiktPmhhc19sb2dpY2FsX2NvbnRleHRzKQo+IC0JCXJldHVybiAtRU5PREVWOwo+IC0K PiAtCWlmIChhcmdzLT5wYWQgIT0gMCkKPiAtCQlyZXR1cm4gLUVJTlZBTDsKPiAtCj4gLQlpZiAo Y2xpZW50X2lzX2Jhbm5lZChmaWxlX3ByaXYpKSB7Cj4gLQkJRFJNX0RFQlVHKCJjbGllbnQgJXNb JWRdIGJhbm5lZCBmcm9tIGNyZWF0aW5nIGN0eFxuIiwKPiAtCQkJICBjdXJyZW50LT5jb21tLAo+ IC0JCQkgIHBpZF9ucihnZXRfdGFza19waWQoY3VycmVudCwgUElEVFlQRV9QSUQpKSk7Cj4gLQo+ IC0JCXJldHVybiAtRUlPOwo+IC0JfQo+IC0KPiAtCXJldCA9IGk5MTVfbXV0ZXhfbG9ja19pbnRl cnJ1cHRpYmxlKGRldik7Cj4gLQlpZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4gLQo+IC0JY3R4 ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoZGV2X3ByaXYsIGZpbGVfcHJpdik7Cj4gLQltdXRl eF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAtCWlmIChJU19FUlIoY3R4KSkKPiAtCQly ZXR1cm4gUFRSX0VSUihjdHgpOwo+IC0KPiAtCUdFTV9CVUdfT04oaTkxNV9nZW1fY29udGV4dF9p c19rZXJuZWwoY3R4KSk7Cj4gLQo+IC0JYXJncy0+Y3R4X2lkID0gY3R4LT51c2VyX2hhbmRsZTsK PiAtCURSTV9ERUJVRygiSFcgY29udGV4dCAlZCBjcmVhdGVkXG4iLCBhcmdzLT5jdHhfaWQpOwo+ IC0KPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+IC1pbnQgaTkxNV9nZW1fY29udGV4dF9kZXN0cm95 X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gLQkJCQkgICBzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gLXsKPiAtCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9k ZXN0cm95ICphcmdzID0gZGF0YTsKPiAtCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZp bGVfcHJpdiA9IGZpbGUtPmRyaXZlcl9wcml2Owo+IC0Jc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg KmN0eDsKPiAtCWludCByZXQ7Cj4gLQo+IC0JaWYgKGFyZ3MtPnBhZCAhPSAwKQo+IC0JCXJldHVy biAtRUlOVkFMOwo+IC0KPiAtCWlmIChhcmdzLT5jdHhfaWQgPT0gREVGQVVMVF9DT05URVhUX0hB TkRMRSkKPiAtCQlyZXR1cm4gLUVOT0VOVDsKPiAtCj4gLQljdHggPSBpOTE1X2dlbV9jb250ZXh0 X2xvb2t1cChmaWxlX3ByaXYsIGFyZ3MtPmN0eF9pZCk7Cj4gLQlpZiAoIWN0eCkKPiAtCQlyZXR1 cm4gLUVOT0VOVDsKPiAtCj4gLQlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRldi0+ c3RydWN0X211dGV4KTsKPiAtCWlmIChyZXQpCj4gLQkJZ290byBvdXQ7Cj4gLQo+IC0JX19kZXN0 cm95X2h3X2NvbnRleHQoY3R4LCBmaWxlX3ByaXYpOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0 cnVjdF9tdXRleCk7Cj4gLQo+IC1vdXQ6Cj4gLQlpOTE1X2dlbV9jb250ZXh0X3B1dChjdHgpOwo+ IC0JcmV0dXJuIDA7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbnQgZ2V0X3NzZXUoc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKmN0eCwKPiAtCQkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3Bh cmFtICphcmdzKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3Nl dSB1c2VyX3NzZXU7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gLQlzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqY2U7Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCWlmIChhcmdzLT5zaXpl ID09IDApCj4gLQkJZ290byBvdXQ7Cj4gLQllbHNlIGlmIChhcmdzLT5zaXplIDwgc2l6ZW9mKHVz ZXJfc3NldSkpCj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gLQo+IC0JaWYgKGNvcHlfZnJvbV91c2Vy KCZ1c2VyX3NzZXUsIHU2NF90b191c2VyX3B0cihhcmdzLT52YWx1ZSksCj4gLQkJCSAgIHNpemVv Zih1c2VyX3NzZXUpKSkKPiAtCQlyZXR1cm4gLUVGQVVMVDsKPiAtCj4gLQlpZiAodXNlcl9zc2V1 LmZsYWdzIHx8IHVzZXJfc3NldS5yc3ZkKQo+IC0JCXJldHVybiAtRUlOVkFMOwo+IC0KPiAtCWVu Z2luZSA9IGludGVsX2VuZ2luZV9sb29rdXBfdXNlcihjdHgtPmk5MTUsCj4gLQkJCQkJICB1c2Vy X3NzZXUuZW5naW5lX2NsYXNzLAo+IC0JCQkJCSAgdXNlcl9zc2V1LmVuZ2luZV9pbnN0YW5jZSk7 Cj4gLQlpZiAoIWVuZ2luZSkKPiAtCQlyZXR1cm4gLUVJTlZBTDsKPiAtCj4gLQkvKiBPbmx5IHVz ZSBmb3IgbXV0ZXggaGVyZSBpcyB0byBzZXJpYWxpemUgZ2V0X3BhcmFtIGFuZCBzZXRfcGFyYW0u ICovCj4gLQlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmN0eC0+aTkxNS0+ZHJtLnN0 cnVjdF9tdXRleCk7Cj4gLQlpZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4gLQo+IC0JY2UgPSB0 b19pbnRlbF9jb250ZXh0KGN0eCwgZW5naW5lKTsKPiAtCj4gLQl1c2VyX3NzZXUuc2xpY2VfbWFz ayA9IGNlLT5zc2V1LnNsaWNlX21hc2s7Cj4gLQl1c2VyX3NzZXUuc3Vic2xpY2VfbWFzayA9IGNl LT5zc2V1LnN1YnNsaWNlX21hc2s7Cj4gLQl1c2VyX3NzZXUubWluX2V1c19wZXJfc3Vic2xpY2Ug PSBjZS0+c3NldS5taW5fZXVzX3Blcl9zdWJzbGljZTsKPiAtCXVzZXJfc3NldS5tYXhfZXVzX3Bl cl9zdWJzbGljZSA9IGNlLT5zc2V1Lm1heF9ldXNfcGVyX3N1YnNsaWNlOwo+IC0KPiAtCW11dGV4 X3VubG9jaygmY3R4LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCj4gLQlpZiAoY29weV90 b191c2VyKHU2NF90b191c2VyX3B0cihhcmdzLT52YWx1ZSksICZ1c2VyX3NzZXUsCj4gLQkJCSBz aXplb2YodXNlcl9zc2V1KSkpCj4gLQkJcmV0dXJuIC1FRkFVTFQ7Cj4gLQo+IC1vdXQ6Cj4gLQlh cmdzLT5zaXplID0gc2l6ZW9mKHVzZXJfc3NldSk7Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAt Cj4gLWludCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsCj4gLQkJCQkgICAgc3RydWN0IGRybV9maWxlICpmaWxlKQo+IC17 Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXYgPSBmaWxlLT5kcml2 ZXJfcHJpdjsKPiAtCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSAqYXJncyA9IGRh dGE7Cj4gLQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owo+IC0JaW50IHJldCA9IDA7Cj4g LQo+IC0JY3R4ID0gaTkxNV9nZW1fY29udGV4dF9sb29rdXAoZmlsZV9wcml2LCBhcmdzLT5jdHhf aWQpOwo+IC0JaWYgKCFjdHgpCj4gLQkJcmV0dXJuIC1FTk9FTlQ7Cj4gLQo+IC0Jc3dpdGNoIChh cmdzLT5wYXJhbSkgewo+IC0JY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fQkFOX1BFUklPRDoKPiAt CQlyZXQgPSAtRUlOVkFMOwo+IC0JCWJyZWFrOwo+IC0JY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1f Tk9fWkVST01BUDoKPiAtCQlhcmdzLT5zaXplID0gMDsKPiAtCQlhcmdzLT52YWx1ZSA9IHRlc3Rf Yml0KFVDT05URVhUX05PX1pFUk9NQVAsICZjdHgtPnVzZXJfZmxhZ3MpOwo+IC0JCWJyZWFrOwo+ IC0JY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fR1RUX1NJWkU6Cj4gLQkJYXJncy0+c2l6ZSA9IDA7 Cj4gLQo+IC0JCWlmIChjdHgtPnBwZ3R0KQo+IC0JCQlhcmdzLT52YWx1ZSA9IGN0eC0+cHBndHQt PnZtLnRvdGFsOwo+IC0JCWVsc2UgaWYgKHRvX2k5MTUoZGV2KS0+bW0uYWxpYXNpbmdfcHBndHQp Cj4gLQkJCWFyZ3MtPnZhbHVlID0gdG9faTkxNShkZXYpLT5tbS5hbGlhc2luZ19wcGd0dC0+dm0u dG90YWw7Cj4gLQkJZWxzZQo+IC0JCQlhcmdzLT52YWx1ZSA9IHRvX2k5MTUoZGV2KS0+Z2d0dC52 bS50b3RhbDsKPiAtCQlicmVhazsKPiAtCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX05PX0VSUk9S X0NBUFRVUkU6Cj4gLQkJYXJncy0+c2l6ZSA9IDA7Cj4gLQkJYXJncy0+dmFsdWUgPSBpOTE1X2dl bV9jb250ZXh0X25vX2Vycm9yX2NhcHR1cmUoY3R4KTsKPiAtCQlicmVhazsKPiAtCWNhc2UgSTkx NV9DT05URVhUX1BBUkFNX0JBTk5BQkxFOgo+IC0JCWFyZ3MtPnNpemUgPSAwOwo+IC0JCWFyZ3Mt PnZhbHVlID0gaTkxNV9nZW1fY29udGV4dF9pc19iYW5uYWJsZShjdHgpOwo+IC0JCWJyZWFrOwo+ IC0JY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fUFJJT1JJVFk6Cj4gLQkJYXJncy0+c2l6ZSA9IDA7 Cj4gLQkJYXJncy0+dmFsdWUgPSBjdHgtPnNjaGVkLnByaW9yaXR5ID4+IEk5MTVfVVNFUl9QUklP UklUWV9TSElGVDsKPiAtCQlicmVhazsKPiAtCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX1NTRVU6 Cj4gLQkJcmV0ID0gZ2V0X3NzZXUoY3R4LCBhcmdzKTsKPiAtCQlicmVhazsKPiAtCWNhc2UgSTkx NV9DT05URVhUX1BBUkFNX1ZNOgo+IC0JCXJldCA9IGdldF9wcGd0dChjdHgsIGFyZ3MpOwo+IC0J CWJyZWFrOwo+IC0JZGVmYXVsdDoKPiAtCQlyZXQgPSAtRUlOVkFMOwo+IC0JCWJyZWFrOwo+IC0J fQo+IC0KPiAtCWk5MTVfZ2VtX2NvbnRleHRfcHV0KGN0eCk7Cj4gLQlyZXR1cm4gcmV0Owo+IC19 Cj4gLQo+ICAgc3RhdGljIGludCBnZW44X2VtaXRfcnBjc19jb25maWcoc3RydWN0IGk5MTVfcmVx dWVzdCAqcnEsCj4gICAJCQkJIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKPiAgIAkJCQkgc3Ry dWN0IGludGVsX3NzZXUgc3NldSkKPiBAQCAtMTUwMSwxOCArMTMyMCwxMSBAQCBzdGF0aWMgaW50 IHNldF9zc2V1KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gICAJcmV0dXJuIDA7Cj4g ICB9Cj4gICAKPiAtaW50IGk5MTVfZ2VtX2NvbnRleHRfc2V0cGFyYW1faW9jdGwoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAtCQkJCSAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGUpCj4gK3N0YXRpYyBpbnQgY3R4X3NldHBhcmFtKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHgsCj4gKwkJCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSAqYXJncykKPiAgIHsK PiAtCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdiA9IGZpbGUtPmRyaXZl cl9wcml2Owo+IC0Jc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtICphcmdzID0gZGF0 YTsKPiAtCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4gICAJaW50IHJldCA9IDA7Cj4g ICAKPiAtCWN0eCA9IGk5MTVfZ2VtX2NvbnRleHRfbG9va3VwKGZpbGVfcHJpdiwgYXJncy0+Y3R4 X2lkKTsKPiAtCWlmICghY3R4KQo+IC0JCXJldHVybiAtRU5PRU5UOwo+IC0KPiAgIAlzd2l0Y2gg KGFyZ3MtPnBhcmFtKSB7Cj4gICAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fTk9fWkVST01BUDoK PiAgIAkJaWYgKGFyZ3MtPnNpemUpCj4gQEAgLTE1MjIsNiArMTMzNCw3IEBAIGludCBpOTE1X2dl bV9jb250ZXh0X3NldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRh dGEsCj4gICAJCWVsc2UKPiAgIAkJCWNsZWFyX2JpdChVQ09OVEVYVF9OT19aRVJPTUFQLCAmY3R4 LT51c2VyX2ZsYWdzKTsKPiAgIAkJYnJlYWs7Cj4gKwo+ICAgCWNhc2UgSTkxNV9DT05URVhUX1BB UkFNX05PX0VSUk9SX0NBUFRVUkU6Cj4gICAJCWlmIChhcmdzLT5zaXplKQo+ICAgCQkJcmV0ID0g LUVJTlZBTDsKPiBAQCAtMTUzMCw2ICsxMzQzLDcgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfc2V0 cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgIAkJZWxz ZQo+ICAgCQkJaTkxNV9nZW1fY29udGV4dF9jbGVhcl9ub19lcnJvcl9jYXB0dXJlKGN0eCk7Cj4g ICAJCWJyZWFrOwo+ICsKPiAgIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9CQU5OQUJMRToKPiAg IAkJaWYgKGFyZ3MtPnNpemUpCj4gICAJCQlyZXQgPSAtRUlOVkFMOwo+IEBAIC0xNTQ3LDcgKzEz NjEsNyBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9zZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAgCj4gICAJCQlpZiAoYXJncy0+c2l6ZSkKPiAgIAkJ CQlyZXQgPSAtRUlOVkFMOwo+IC0JCQllbHNlIGlmICghKHRvX2k5MTUoZGV2KS0+Y2Fwcy5zY2hl ZHVsZXIgJiBJOTE1X1NDSEVEVUxFUl9DQVBfUFJJT1JJVFkpKQo+ICsJCQllbHNlIGlmICghKGN0 eC0+aTkxNS0+Y2Fwcy5zY2hlZHVsZXIgJiBJOTE1X1NDSEVEVUxFUl9DQVBfUFJJT1JJVFkpKQo+ ICAgCQkJCXJldCA9IC1FTk9ERVY7Cj4gICAJCQllbHNlIGlmIChwcmlvcml0eSA+IEk5MTVfQ09O VEVYVF9NQVhfVVNFUl9QUklPUklUWSB8fAo+ICAgCQkJCSBwcmlvcml0eSA8IEk5MTVfQ09OVEVY VF9NSU5fVVNFUl9QUklPUklUWSkKPiBAQCAtMTU3NSw2ICsxMzg5LDIzNiBAQCBpbnQgaTkxNV9n ZW1fY29udGV4dF9zZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpk YXRhLAo+ICAgCQlicmVhazsKPiAgIAl9Cj4gICAKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4g K3N0YXRpYyBpbnQgY3JlYXRlX3NldHBhcmFtKHN0cnVjdCBpOTE1X3VzZXJfZXh0ZW5zaW9uIF9f dXNlciAqZXh0LCB2b2lkICpkYXRhKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRl eHRfY3JlYXRlX2V4dF9zZXRwYXJhbSBsb2NhbDsKPiArCj4gKwlpZiAoY29weV9mcm9tX3VzZXIo JmxvY2FsLCBleHQsIHNpemVvZihsb2NhbCkpKQo+ICsJCXJldHVybiAtRUZBVUxUOwo+ICsKPiAr CWlmIChsb2NhbC5zZXRwYXJhbS5jdHhfaWQpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJ cmV0dXJuIGN0eF9zZXRwYXJhbShkYXRhLCAmbG9jYWwuc2V0cGFyYW0pOwo+ICt9Cj4gKwo+ICtz dGF0aWMgY29uc3QgaTkxNV91c2VyX2V4dGVuc2lvbl9mbiBjcmVhdGVfZXh0ZW5zaW9uc1tdID0g ewo+ICsJW0k5MTVfQ09OVEVYVF9DUkVBVEVfRVhUX1NFVFBBUkFNXSA9IGNyZWF0ZV9zZXRwYXJh bSwKPiArfTsKPiArCj4gK3N0YXRpYyBib29sIGNsaWVudF9pc19iYW5uZWQoc3RydWN0IGRybV9p OTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2KQo+ICt7Cj4gKwlyZXR1cm4gYXRvbWljX3JlYWQo JmZpbGVfcHJpdi0+YmFuX3Njb3JlKSA+PSBJOTE1X0NMSUVOVF9TQ09SRV9CQU5ORUQ7Cj4gK30K PiArCj4gK2ludCBpOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9pb2N0bChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB2b2lkICpkYXRhLAo+ICsJCQkJICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gK3sK PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAr CXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGVfZXh0ICphcmdzID0gZGF0YTsKPiAr CXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdiA9IGZpbGUtPmRyaXZlcl9w cml2Owo+ICsJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKPiArCWludCByZXQ7Cj4gKwo+ ICsJaWYgKCFEUklWRVJfQ0FQUyhkZXZfcHJpdiktPmhhc19sb2dpY2FsX2NvbnRleHRzKQo+ICsJ CXJldHVybiAtRU5PREVWOwo+ICsKPiArCWlmIChhcmdzLT5mbGFncykKPiArCQlyZXR1cm4gLUVJ TlZBTDsKPiArCj4gKwlpZiAoY2xpZW50X2lzX2Jhbm5lZChmaWxlX3ByaXYpKSB7Cj4gKwkJRFJN X0RFQlVHKCJjbGllbnQgJXNbJWRdIGJhbm5lZCBmcm9tIGNyZWF0aW5nIGN0eFxuIiwKPiArCQkJ ICBjdXJyZW50LT5jb21tLAo+ICsJCQkgIHBpZF9ucihnZXRfdGFza19waWQoY3VycmVudCwgUElE VFlQRV9QSUQpKSk7Cj4gKwo+ICsJCXJldHVybiAtRUlPOwo+ICsJfQo+ICsKPiArCXJldCA9IGk5 MTVfbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKGRldik7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVy biByZXQ7Cj4gKwo+ICsJY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoZGV2X3ByaXYsIGZp bGVfcHJpdik7Cj4gKwltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiArCWlmIChJ U19FUlIoY3R4KSkKPiArCQlyZXR1cm4gUFRSX0VSUihjdHgpOwo+ICsKPiArCUdFTV9CVUdfT04o aTkxNV9nZW1fY29udGV4dF9pc19rZXJuZWwoY3R4KSk7Cj4gKwo+ICsJcmV0ID0gaTkxNV91c2Vy X2V4dGVuc2lvbnModTY0X3RvX3VzZXJfcHRyKGFyZ3MtPmV4dGVuc2lvbnMpLAo+ICsJCQkJICAg Y3JlYXRlX2V4dGVuc2lvbnMsCj4gKwkJCQkgICBBUlJBWV9TSVpFKGNyZWF0ZV9leHRlbnNpb25z KSwKPiArCQkJCSAgIGN0eCk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJaWRyX3JlbW92ZSgmZmlsZV9w cml2LT5jb250ZXh0X2lkciwgY3R4LT51c2VyX2hhbmRsZSk7Cj4gKwkJY29udGV4dF9jbG9zZShj dHgpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJYXJncy0+Y3R4X2lkID0gY3R4LT51 c2VyX2hhbmRsZTsKPiArCURSTV9ERUJVRygiSFcgY29udGV4dCAlZCBjcmVhdGVkXG4iLCBhcmdz LT5jdHhfaWQpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtpbnQgaTkxNV9nZW1fY29u dGV4dF9kZXN0cm95X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4g KwkJCQkgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9n ZW1fY29udGV4dF9kZXN0cm95ICphcmdzID0gZGF0YTsKPiArCXN0cnVjdCBkcm1faTkxNV9maWxl X3ByaXZhdGUgKmZpbGVfcHJpdiA9IGZpbGUtPmRyaXZlcl9wcml2Owo+ICsJc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKmN0eDsKPiArCWludCByZXQ7Cj4gKwo+ICsJaWYgKGFyZ3MtPnBhZCAhPSAw KQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWlmIChhcmdzLT5jdHhfaWQgPT0gREVGQVVM VF9DT05URVhUX0hBTkRMRSkKPiArCQlyZXR1cm4gLUVOT0VOVDsKPiArCj4gKwljdHggPSBpOTE1 X2dlbV9jb250ZXh0X2xvb2t1cChmaWxlX3ByaXYsIGFyZ3MtPmN0eF9pZCk7Cj4gKwlpZiAoIWN0 eCkKPiArCQlyZXR1cm4gLUVOT0VOVDsKPiArCj4gKwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVw dGlibGUoJmRldi0+c3RydWN0X211dGV4KTsKPiArCWlmIChyZXQpCj4gKwkJZ290byBvdXQ7Cj4g Kwo+ICsJX19kZXN0cm95X2h3X2NvbnRleHQoY3R4LCBmaWxlX3ByaXYpOwo+ICsJbXV0ZXhfdW5s b2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwo+ICtvdXQ6Cj4gKwlpOTE1X2dlbV9jb250ZXh0 X3B1dChjdHgpOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgZ2V0X3NzZXUo c3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiArCQkgICAgc3RydWN0IGRybV9pOTE1X2dl bV9jb250ZXh0X3BhcmFtICphcmdzKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRl eHRfcGFyYW1fc3NldSB1c2VyX3NzZXU7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmU7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlm IChhcmdzLT5zaXplID09IDApCj4gKwkJZ290byBvdXQ7Cj4gKwllbHNlIGlmIChhcmdzLT5zaXpl IDwgc2l6ZW9mKHVzZXJfc3NldSkpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJaWYgKGNv cHlfZnJvbV91c2VyKCZ1c2VyX3NzZXUsIHU2NF90b191c2VyX3B0cihhcmdzLT52YWx1ZSksCj4g KwkJCSAgIHNpemVvZih1c2VyX3NzZXUpKSkKPiArCQlyZXR1cm4gLUVGQVVMVDsKPiArCj4gKwlp ZiAodXNlcl9zc2V1LmZsYWdzIHx8IHVzZXJfc3NldS5yc3ZkKQo+ICsJCXJldHVybiAtRUlOVkFM Owo+ICsKPiArCWVuZ2luZSA9IGludGVsX2VuZ2luZV9sb29rdXBfdXNlcihjdHgtPmk5MTUsCj4g KwkJCQkJICB1c2VyX3NzZXUuZW5naW5lX2NsYXNzLAo+ICsJCQkJCSAgdXNlcl9zc2V1LmVuZ2lu ZV9pbnN0YW5jZSk7Cj4gKwlpZiAoIWVuZ2luZSkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4g KwkvKiBPbmx5IHVzZSBmb3IgbXV0ZXggaGVyZSBpcyB0byBzZXJpYWxpemUgZ2V0X3BhcmFtIGFu ZCBzZXRfcGFyYW0uICovCj4gKwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmN0eC0+ aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4g Kwo+ICsJY2UgPSB0b19pbnRlbF9jb250ZXh0KGN0eCwgZW5naW5lKTsKPiArCj4gKwl1c2VyX3Nz ZXUuc2xpY2VfbWFzayA9IGNlLT5zc2V1LnNsaWNlX21hc2s7Cj4gKwl1c2VyX3NzZXUuc3Vic2xp Y2VfbWFzayA9IGNlLT5zc2V1LnN1YnNsaWNlX21hc2s7Cj4gKwl1c2VyX3NzZXUubWluX2V1c19w ZXJfc3Vic2xpY2UgPSBjZS0+c3NldS5taW5fZXVzX3Blcl9zdWJzbGljZTsKPiArCXVzZXJfc3Nl dS5tYXhfZXVzX3Blcl9zdWJzbGljZSA9IGNlLT5zc2V1Lm1heF9ldXNfcGVyX3N1YnNsaWNlOwo+ ICsKPiArCW11dGV4X3VubG9jaygmY3R4LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCj4g KwlpZiAoY29weV90b191c2VyKHU2NF90b191c2VyX3B0cihhcmdzLT52YWx1ZSksICZ1c2VyX3Nz ZXUsCj4gKwkJCSBzaXplb2YodXNlcl9zc2V1KSkpCj4gKwkJcmV0dXJuIC1FRkFVTFQ7Cj4gKwo+ ICtvdXQ6Cj4gKwlhcmdzLT5zaXplID0gc2l6ZW9mKHVzZXJfc3NldSk7Cj4gKwo+ICsJcmV0dXJu IDA7Cj4gK30KPiArCj4gK2ludCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3RsKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gKwkJCQkgICAgc3RydWN0IGRybV9maWxl ICpmaWxlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXYg PSBmaWxlLT5kcml2ZXJfcHJpdjsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJh bSAqYXJncyA9IGRhdGE7Cj4gKwlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owo+ICsJaW50 IHJldCA9IDA7Cj4gKwo+ICsJY3R4ID0gaTkxNV9nZW1fY29udGV4dF9sb29rdXAoZmlsZV9wcml2 LCBhcmdzLT5jdHhfaWQpOwo+ICsJaWYgKCFjdHgpCj4gKwkJcmV0dXJuIC1FTk9FTlQ7Cj4gKwo+ ICsJc3dpdGNoIChhcmdzLT5wYXJhbSkgewo+ICsJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fTk9f WkVST01BUDoKPiArCQlhcmdzLT5zaXplID0gMDsKPiArCQlhcmdzLT52YWx1ZSA9IHRlc3RfYml0 KFVDT05URVhUX05PX1pFUk9NQVAsICZjdHgtPnVzZXJfZmxhZ3MpOwo+ICsJCWJyZWFrOwo+ICsK PiArCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX0dUVF9TSVpFOgo+ICsJCWFyZ3MtPnNpemUgPSAw Owo+ICsJCWlmIChjdHgtPnBwZ3R0KQo+ICsJCQlhcmdzLT52YWx1ZSA9IGN0eC0+cHBndHQtPnZt LnRvdGFsOwo+ICsJCWVsc2UgaWYgKHRvX2k5MTUoZGV2KS0+bW0uYWxpYXNpbmdfcHBndHQpCj4g KwkJCWFyZ3MtPnZhbHVlID0gdG9faTkxNShkZXYpLT5tbS5hbGlhc2luZ19wcGd0dC0+dm0udG90 YWw7Cj4gKwkJZWxzZQo+ICsJCQlhcmdzLT52YWx1ZSA9IHRvX2k5MTUoZGV2KS0+Z2d0dC52bS50 b3RhbDsKPiArCQlicmVhazsKPiArCj4gKwljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9OT19FUlJP Ul9DQVBUVVJFOgo+ICsJCWFyZ3MtPnNpemUgPSAwOwo+ICsJCWFyZ3MtPnZhbHVlID0gaTkxNV9n ZW1fY29udGV4dF9ub19lcnJvcl9jYXB0dXJlKGN0eCk7Cj4gKwkJYnJlYWs7Cj4gKwo+ICsJY2Fz ZSBJOTE1X0NPTlRFWFRfUEFSQU1fQkFOTkFCTEU6Cj4gKwkJYXJncy0+c2l6ZSA9IDA7Cj4gKwkJ YXJncy0+dmFsdWUgPSBpOTE1X2dlbV9jb250ZXh0X2lzX2Jhbm5hYmxlKGN0eCk7Cj4gKwkJYnJl YWs7Cj4gKwo+ICsJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fUFJJT1JJVFk6Cj4gKwkJYXJncy0+ c2l6ZSA9IDA7Cj4gKwkJYXJncy0+dmFsdWUgPSBjdHgtPnNjaGVkLnByaW9yaXR5ID4+IEk5MTVf VVNFUl9QUklPUklUWV9TSElGVDsKPiArCQlicmVhazsKPiArCj4gKwljYXNlIEk5MTVfQ09OVEVY VF9QQVJBTV9TU0VVOgo+ICsJCXJldCA9IGdldF9zc2V1KGN0eCwgYXJncyk7Cj4gKwkJYnJlYWs7 Cj4gKwo+ICsJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fVk06Cj4gKwkJcmV0ID0gZ2V0X3BwZ3R0 KGN0eCwgYXJncyk7Cj4gKwkJYnJlYWs7Cj4gKwo+ICsJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1f QkFOX1BFUklPRDoKPiArCWRlZmF1bHQ6Cj4gKwkJcmV0ID0gLUVJTlZBTDsKPiArCQlicmVhazsK PiArCX0KPiArCj4gKwlpOTE1X2dlbV9jb250ZXh0X3B1dChjdHgpOwo+ICsJcmV0dXJuIHJldDsK PiArfQo+ICsKPiAraW50IGk5MTVfZ2VtX2NvbnRleHRfc2V0cGFyYW1faW9jdGwoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiArCQkJCSAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGUpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdiA9IGZp bGUtPmRyaXZlcl9wcml2Owo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtICph cmdzID0gZGF0YTsKPiArCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4gKwlpbnQgcmV0 Owo+ICsKPiArCWN0eCA9IGk5MTVfZ2VtX2NvbnRleHRfbG9va3VwKGZpbGVfcHJpdiwgYXJncy0+ Y3R4X2lkKTsKPiArCWlmICghY3R4KQo+ICsJCXJldHVybiAtRU5PRU5UOwo+ICsKPiArCXJldCA9 IGN0eF9zZXRwYXJhbShjdHgsIGFyZ3MpOwo+ICsKPiAgIAlpOTE1X2dlbV9jb250ZXh0X3B1dChj dHgpOwo+ICAgCXJldHVybiByZXQ7Cj4gICB9Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9k cm0vaTkxNV9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+IGluZGV4IDJjZDc5 NjM5ZDZiNS4uYzliYTdlNDA4MTE3IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vaTkx NV9kcm0uaAo+ICsrKyBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+IEBAIC0zODksNiAr Mzg5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX2RybV9pOTE1X3NhcmVhIHsKPiAgICNkZWZpbmUgRFJN X0lPQ1RMX0k5MTVfR0VUX1NQUklURV9DT0xPUktFWSBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNF ICsgRFJNX0k5MTVfR0VUX1NQUklURV9DT0xPUktFWSwgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVf Y29sb3JrZXkpCj4gICAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9XQUlUCQlEUk1fSU9XUihE Uk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX1dBSVQsIHN0cnVjdCBkcm1faTkxNV9nZW1f d2FpdCkKPiAgICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX0NPTlRFWFRfQ1JFQVRFCURSTV9J T1dSIChEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX0NPTlRFWFRfQ1JFQVRFLCBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlKQo+ICsjZGVmaW5lIERSTV9JT0NUTF9JOTE1 X0dFTV9DT05URVhUX0NSRUFURV9FWFQJRFJNX0lPV1IgKERSTV9DT01NQU5EX0JBU0UgKyBEUk1f STkxNV9HRU1fQ09OVEVYVF9DUkVBVEUsIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVh dGVfZXh0KQo+ICAgI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fQ09OVEVYVF9ERVNUUk9ZCURS TV9JT1cgKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fQ09OVEVYVF9ERVNUUk9ZLCBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfZGVzdHJveSkKPiAgICNkZWZpbmUgRFJNX0lPQ1RM X0k5MTVfUkVHX1JFQUQJCQlEUk1fSU9XUiAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X1JF R19SRUFELCBzdHJ1Y3QgZHJtX2k5MTVfcmVnX3JlYWQpCj4gICAjZGVmaW5lIERSTV9JT0NUTF9J OTE1X0dFVF9SRVNFVF9TVEFUUwkJRFJNX0lPV1IgKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkx NV9HRVRfUkVTRVRfU1RBVFMsIHN0cnVjdCBkcm1faTkxNV9yZXNldF9zdGF0cykKPiBAQCAtMTQz OCw4NSArMTQzOSwxNCBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3dhaXQgewo+ICAgfTsKPiAgIAo+ ICAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZSB7Cj4gLQkvKiAgb3V0cHV0OiBp ZCBvZiBuZXcgY29udGV4dCovCj4gLQlfX3UzMiBjdHhfaWQ7Cj4gLQlfX3UzMiBwYWQ7Cj4gLX07 Cj4gLQo+IC1zdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfZGVzdHJveSB7Cj4gLQlfX3UzMiBj dHhfaWQ7Cj4gKwlfX3UzMiBjdHhfaWQ7IC8qIG91dHB1dDogaWQgb2YgbmV3IGNvbnRleHQqLwo+ ICAgCV9fdTMyIHBhZDsKPiAgIH07Cj4gICAKPiAtLyoKPiAtICogRFJNX0k5MTVfR0VNX1ZNX0NS RUFURSAtCj4gLSAqCj4gLSAqIENyZWF0ZSBhIG5ldyB2aXJ0dWFsIG1lbW9yeSBhZGRyZXNzIHNw YWNlIChwcEdUVCkgZm9yIHVzZSB3aXRoaW4gYSBjb250ZXh0Cj4gLSAqIG9uIHRoZSBzYW1lIGZp bGUuIEV4dGVuc2lvbnMgY2FuIGJlIHByb3ZpZGVkIHRvIGNvbmZpZ3VyZSBleGFjdGx5IGhvdyB0 aGUKPiAtICogYWRkcmVzcyBzcGFjZSBpcyBzZXR1cCB1cG9uIGNyZWF0aW9uLgo+IC0gKgo+IC0g KiBUaGUgaWQgb2YgbmV3IFZNIChib3VuZCB0byB0aGUgZmQpIGZvciB1c2Ugd2l0aCBJOTE1X0NP TlRFWFRfUEFSQU1fVk0gaXMKPiAtICogcmV0dXJuZWQuCj4gLSAqCj4gLSAqIERSTV9JOTE1X0dF TV9WTV9ERVNUUk9ZIC0KPiAtICoKPiAtICogRGVzdHJveXMgYSBwcmV2aW91c2x5IGNyZWF0ZWQg Vk0gaWQuCj4gLSAqLwo+IC1zdHJ1Y3QgZHJtX2k5MTVfZ2VtX3ZtX2NvbnRyb2wgewo+IC0JX191 NjQgZXh0ZW5zaW9uczsKPiArc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9leHQg ewo+ICsJX191MzIgY3R4X2lkOyAvKiBvdXRwdXQ6IGlkIG9mIG5ldyBjb250ZXh0Ki8KPiAgIAlf X3UzMiBmbGFnczsKPiAtCV9fdTMyIGlkOwo+IC19Owo+IC0KPiAtc3RydWN0IGRybV9pOTE1X3Jl Z19yZWFkIHsKPiAtCS8qCj4gLQkgKiBSZWdpc3RlciBvZmZzZXQuCj4gLQkgKiBGb3IgNjRiaXQg d2lkZSByZWdpc3RlcnMgd2hlcmUgdGhlIHVwcGVyIDMyYml0cyBkb24ndCBpbW1lZGlhdGVseQo+ IC0JICogZm9sbG93IHRoZSBsb3dlciAzMmJpdHMsIHRoZSBvZmZzZXQgb2YgdGhlIGxvd2VyIDMy Yml0cyBtdXN0Cj4gLQkgKiBiZSBzcGVjaWZpZWQKPiAtCSAqLwo+IC0JX191NjQgb2Zmc2V0Owo+ IC0jZGVmaW5lIEk5MTVfUkVHX1JFQURfOEJfV0EgKDF1bCA8PCAwKQo+IC0KPiAtCV9fdTY0IHZh bDsgLyogUmV0dXJuIHZhbHVlICovCj4gLX07Cj4gLS8qIEtub3duIHJlZ2lzdGVyczoKPiAtICoK PiAtICogUmVuZGVyIGVuZ2luZSB0aW1lc3RhbXAgLSAweDIzNTggKyA2NGJpdCAtIGdlbjcrCj4g LSAqIC0gTm90ZSB0aGlzIHJlZ2lzdGVyIHJldHVybnMgYW4gaW52YWxpZCB2YWx1ZSBpZiB1c2lu ZyB0aGUgZGVmYXVsdAo+IC0gKiAgIHNpbmdsZSBpbnN0cnVjdGlvbiA4Ynl0ZSByZWFkLCBpbiBv cmRlciB0byB3b3JrYXJvdW5kIHRoYXQgcGFzcwo+IC0gKiAgIGZsYWcgSTkxNV9SRUdfUkVBRF84 Ql9XQSBpbiBvZmZzZXQgZmllbGQuCj4gLSAqCj4gLSAqLwo+IC0KPiAtc3RydWN0IGRybV9pOTE1 X3Jlc2V0X3N0YXRzIHsKPiAtCV9fdTMyIGN0eF9pZDsKPiAtCV9fdTMyIGZsYWdzOwo+IC0KPiAt CS8qIEFsbCByZXNldHMgc2luY2UgYm9vdC9tb2R1bGUgcmVsb2FkLCBmb3IgYWxsIGNvbnRleHRz ICovCj4gLQlfX3UzMiByZXNldF9jb3VudDsKPiAtCj4gLQkvKiBOdW1iZXIgb2YgYmF0Y2hlcyBs b3N0IHdoZW4gYWN0aXZlIGluIEdQVSwgZm9yIHRoaXMgY29udGV4dCAqLwo+IC0JX191MzIgYmF0 Y2hfYWN0aXZlOwo+IC0KPiAtCS8qIE51bWJlciBvZiBiYXRjaGVzIGxvc3QgcGVuZGluZyBmb3Ig ZXhlY3V0aW9uLCBmb3IgdGhpcyBjb250ZXh0ICovCj4gLQlfX3UzMiBiYXRjaF9wZW5kaW5nOwo+ IC0KPiAtCV9fdTMyIHBhZDsKPiAtfTsKPiAtCj4gLXN0cnVjdCBkcm1faTkxNV9nZW1fdXNlcnB0 ciB7Cj4gLQlfX3U2NCB1c2VyX3B0cjsKPiAtCV9fdTY0IHVzZXJfc2l6ZTsKPiAtCV9fdTMyIGZs YWdzOwo+IC0jZGVmaW5lIEk5MTVfVVNFUlBUUl9SRUFEX09OTFkgMHgxCj4gLSNkZWZpbmUgSTkx NV9VU0VSUFRSX1VOU1lOQ0hST05JWkVEIDB4ODAwMDAwMDAKPiAtCS8qKgo+IC0JICogUmV0dXJu ZWQgaGFuZGxlIGZvciB0aGUgb2JqZWN0Lgo+IC0JICoKPiAtCSAqIE9iamVjdCBoYW5kbGVzIGFy ZSBub256ZXJvLgo+IC0JICovCj4gLQlfX3UzMiBoYW5kbGU7Cj4gKwlfX3U2NCBleHRlbnNpb25z Owo+ICAgfTsKPiAgIAo+ICAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIHsKPiBA QCAtMTYxMCw2ICsxNTQwLDg5IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9z c2V1IHsKPiAgIAlfX3UzMiByc3ZkOwo+ICAgfTsKPiAgIAo+ICtzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X2NvbnRleHRfY3JlYXRlX2V4dF9zZXRwYXJhbSB7Cj4gKyNkZWZpbmUgSTkxNV9DT05URVhUX0NS RUFURV9FWFRfU0VUUEFSQU0gMAo+ICsJc3RydWN0IGk5MTVfdXNlcl9leHRlbnNpb24gYmFzZTsK PiArCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSBzZXRwYXJhbTsKPiArfTsKPiAr Cj4gK3N0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9kZXN0cm95IHsKPiArCV9fdTMyIGN0eF9p ZDsKPiArCV9fdTMyIHBhZDsKPiArfTsKPiArCj4gKy8qCj4gKyAqIERSTV9JOTE1X0dFTV9WTV9D UkVBVEUgLQo+ICsgKgo+ICsgKiBDcmVhdGUgYSBuZXcgdmlydHVhbCBtZW1vcnkgYWRkcmVzcyBz cGFjZSAocHBHVFQpIGZvciB1c2Ugd2l0aGluIGEgY29udGV4dAo+ICsgKiBvbiB0aGUgc2FtZSBm aWxlLiBFeHRlbnNpb25zIGNhbiBiZSBwcm92aWRlZCB0byBjb25maWd1cmUgZXhhY3RseSBob3cg dGhlCj4gKyAqIGFkZHJlc3Mgc3BhY2UgaXMgc2V0dXAgdXBvbiBjcmVhdGlvbi4KPiArICoKPiAr ICogVGhlIGlkIG9mIG5ldyBWTSAoYm91bmQgdG8gdGhlIGZkKSBmb3IgdXNlIHdpdGggSTkxNV9D T05URVhUX1BBUkFNX1ZNIGlzCj4gKyAqIHJldHVybmVkLgo+ICsgKgo+ICsgKiBEUk1fSTkxNV9H RU1fVk1fREVTVFJPWSAtCj4gKyAqCj4gKyAqIERlc3Ryb3lzIGEgcHJldmlvdXNseSBjcmVhdGVk IFZNIGlkLgo+ICsgKi8KPiArc3RydWN0IGRybV9pOTE1X2dlbV92bV9jb250cm9sIHsKPiArCV9f dTY0IGV4dGVuc2lvbnM7Cj4gKwlfX3UzMiBmbGFnczsKPiArCV9fdTMyIGlkOwo+ICt9Owo+ICsK PiArc3RydWN0IGRybV9pOTE1X3JlZ19yZWFkIHsKPiArCS8qCj4gKwkgKiBSZWdpc3RlciBvZmZz ZXQuCj4gKwkgKiBGb3IgNjRiaXQgd2lkZSByZWdpc3RlcnMgd2hlcmUgdGhlIHVwcGVyIDMyYml0 cyBkb24ndCBpbW1lZGlhdGVseQo+ICsJICogZm9sbG93IHRoZSBsb3dlciAzMmJpdHMsIHRoZSBv ZmZzZXQgb2YgdGhlIGxvd2VyIDMyYml0cyBtdXN0Cj4gKwkgKiBiZSBzcGVjaWZpZWQKPiArCSAq Lwo+ICsJX191NjQgb2Zmc2V0Owo+ICsjZGVmaW5lIEk5MTVfUkVHX1JFQURfOEJfV0EgKDF1bCA8 PCAwKQo+ICsKPiArCV9fdTY0IHZhbDsgLyogUmV0dXJuIHZhbHVlICovCj4gK307Cj4gKwo+ICsv KiBLbm93biByZWdpc3RlcnM6Cj4gKyAqCj4gKyAqIFJlbmRlciBlbmdpbmUgdGltZXN0YW1wIC0g MHgyMzU4ICsgNjRiaXQgLSBnZW43Kwo+ICsgKiAtIE5vdGUgdGhpcyByZWdpc3RlciByZXR1cm5z IGFuIGludmFsaWQgdmFsdWUgaWYgdXNpbmcgdGhlIGRlZmF1bHQKPiArICogICBzaW5nbGUgaW5z dHJ1Y3Rpb24gOGJ5dGUgcmVhZCwgaW4gb3JkZXIgdG8gd29ya2Fyb3VuZCB0aGF0IHBhc3MKPiAr ICogICBmbGFnIEk5MTVfUkVHX1JFQURfOEJfV0EgaW4gb2Zmc2V0IGZpZWxkLgo+ICsgKgo+ICsg Ki8KPiArCj4gK3N0cnVjdCBkcm1faTkxNV9yZXNldF9zdGF0cyB7Cj4gKwlfX3UzMiBjdHhfaWQ7 Cj4gKwlfX3UzMiBmbGFnczsKPiArCj4gKwkvKiBBbGwgcmVzZXRzIHNpbmNlIGJvb3QvbW9kdWxl IHJlbG9hZCwgZm9yIGFsbCBjb250ZXh0cyAqLwo+ICsJX191MzIgcmVzZXRfY291bnQ7Cj4gKwo+ ICsJLyogTnVtYmVyIG9mIGJhdGNoZXMgbG9zdCB3aGVuIGFjdGl2ZSBpbiBHUFUsIGZvciB0aGlz IGNvbnRleHQgKi8KPiArCV9fdTMyIGJhdGNoX2FjdGl2ZTsKPiArCj4gKwkvKiBOdW1iZXIgb2Yg YmF0Y2hlcyBsb3N0IHBlbmRpbmcgZm9yIGV4ZWN1dGlvbiwgZm9yIHRoaXMgY29udGV4dCAqLwo+ ICsJX191MzIgYmF0Y2hfcGVuZGluZzsKPiArCj4gKwlfX3UzMiBwYWQ7Cj4gK307Cj4gKwo+ICtz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3VzZXJwdHIgewo+ICsJX191NjQgdXNlcl9wdHI7Cj4gKwlfX3U2 NCB1c2VyX3NpemU7Cj4gKwlfX3UzMiBmbGFnczsKPiArI2RlZmluZSBJOTE1X1VTRVJQVFJfUkVB RF9PTkxZIDB4MQo+ICsjZGVmaW5lIEk5MTVfVVNFUlBUUl9VTlNZTkNIUk9OSVpFRCAweDgwMDAw MDAwCj4gKwkvKioKPiArCSAqIFJldHVybmVkIGhhbmRsZSBmb3IgdGhlIG9iamVjdC4KPiArCSAq Cj4gKwkgKiBPYmplY3QgaGFuZGxlcyBhcmUgbm9uemVyby4KPiArCSAqLwo+ICsJX191MzIgaGFu ZGxlOwo+ICt9Owo+ICsKPiAgIGVudW0gZHJtX2k5MTVfb2FfZm9ybWF0IHsKPiAgIAlJOTE1X09B X0ZPUk1BVF9BMTMgPSAxLAkgICAgLyogSFNXIG9ubHkgKi8KPiAgIAlJOTE1X09BX0ZPUk1BVF9B MjksCSAgICAvKiBIU1cgb25seSAqLwo+IAoKTEdUTS4gRmVlbHMgbGlrZSByLWIgaXMgcHJlbWF0 dXJlIGdpdmVuIHRoZSBzZXJpZXMgd2lsbCBwcm9iYWJseSBzdGlsbCAKY2hhbmdlIGJ1dCBlZmZl Y3RpdmVseSBpdCdzIGFuIHItYi4KClJlZ2FyZHMsCgpUdnJ0a28KX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4