From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Michal Wajdeczko" Subject: Re: [PATCH v2 3/8] drm/i915/uc: Unify uc_fw status tracking Date: Wed, 24 Jul 2019 14:35:51 +0200 Message-ID: References: <20190724022153.8927-1-daniele.ceraolospurio@intel.com> <20190724022153.8927-4-daniele.ceraolospurio@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed"; DelSp="yes" Content-Transfer-Encoding: base64 Return-path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3967889B97 for ; Wed, 24 Jul 2019 12:35:54 +0000 (UTC) In-Reply-To: <20190724022153.8927-4-daniele.ceraolospurio@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org, Daniele Ceraolo Spurio List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAyNCBKdWwgMjAxOSAwNDoyMTo0OCArMDIwMCwgRGFuaWVsZSBDZXJhb2xvIFNwdXJp byAgCjxkYW5pZWxlLmNlcmFvbG9zcHVyaW9AaW50ZWwuY29tPiB3cm90ZToKCj4gV2UgY3VycmVu dGx5IHRyYWNrIGZldGNoIGFuZCBsb2FkIHN0YXR1cyBzZXBhcmF0ZWx5LCBidXQgdGhlIDIgYXJl Cj4gYWN0dWFsbHkgc2VxdWVudGlhbCBpbiB0aGUgdWMgbGlmZXRpbWUgKGZldGNoIG11c3QgY29t cGxldGUgYmVmb3JlIHdlCj4gY2FuIGF0dGVtcHQgdGhlIGxvYWQhKS4gVW5pZnlpbmcgdGhlIDIg dmFyaWFibGVzIHdlIGNhbiBiZXR0ZXIgZm9sbG93Cj4gdGhlIHNlcXVlbnRpYWwgc3RhdGVzIGFu ZCBpbXByb3ZlIG91ciB0cmFja25nIG9mIHRoZSB1QyBzdGF0ZS4KPgo+IEFsc28sIHNwcmlua2xl IHNvbWUgR0VNX0JVR19PTiB0byBtYWtlIHN1cmUgd2UgdHJhbnNpdGlvbiBjb3JyZWN0bHkKPiBi ZXR3ZWVuIHN0YXRlcy4KPgo+IHYyOiByZW5hbWUgc3RhdGVzLCBhZGQgdGhlIHJ1bm5pbmcgc3Rh dGUgKE1pY2hhbCksIGRyb3Agc29tZSBsb2dzIGluCj4gICAgIHRoZSBmZXRjaCBwYXRoIChNaWNo YWwsIENocmlzKQo+Cj4gU3VnZ2VzdGVkLWJ5OiBNaWNoYWwgV2FqZGVjemtvIDxtaWNoYWwud2Fq ZGVjemtvQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWxlIENlcmFvbG8gU3B1cmlv IDxkYW5pZWxlLmNlcmFvbG9zcHVyaW9AaW50ZWwuY29tPgo+IENjOiBNaWNoYWwgV2FqZGVjemtv IDxtaWNoYWwud2FqZGVjemtvQGludGVsLmNvbT4KPiBDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0Bj aHJpcy13aWxzb24uY28udWs+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2lu dGVsX2d1Yy5oICAgICAgICB8ICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2lu dGVsX2d1Y19mdy5jICAgICB8ICA2ICstCj4gIC4uLi9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxf Z3VjX3N1Ym1pc3Npb24uYyB8ICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2lu dGVsX2h1Yy5jICAgICAgICB8ICA4ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2lu dGVsX2h1Yy5oICAgICAgICB8ICA1ICsrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2lu dGVsX3VjLmMgICAgICAgICB8IDEwICstLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF91Y19mdy5jICAgICAgfCA4NiArKysrKysrLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjX2Z3LmggICAgICB8IDU4ICsrKysrKysrLS0tLS0KPiAg OCBmaWxlcyBjaGFuZ2VkLCA4OSBpbnNlcnRpb25zKCspLCA5MCBkZWxldGlvbnMoLSkKPgo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaCAgCj4gYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaAo+IGluZGV4IDY4NTIzNTIzODFj ZS4uZjUxYzRjM2MxZDBiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Vj L2ludGVsX2d1Yy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3Vj LmgKPiBAQCAtMTY5LDkgKzE2OSw5IEBAIGludCBpbnRlbF9ndWNfc3VzcGVuZChzdHJ1Y3QgaW50 ZWxfZ3VjICpndWMpOwo+ICBpbnQgaW50ZWxfZ3VjX3Jlc3VtZShzdHJ1Y3QgaW50ZWxfZ3VjICpn dWMpOwo+ICBzdHJ1Y3QgaTkxNV92bWEgKmludGVsX2d1Y19hbGxvY2F0ZV92bWEoc3RydWN0IGlu dGVsX2d1YyAqZ3VjLCB1MzIgIAo+IHNpemUpOwo+IC1zdGF0aWMgaW5saW5lIGJvb2wgaW50ZWxf Z3VjX2lzX2xvYWRlZChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4gK3N0YXRpYyBpbmxpbmUgYm9v bCBpbnRlbF9ndWNfaXNfcnVubmluZyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4gIHsKPiAtCXJl dHVybiBpbnRlbF91Y19md19pc19sb2FkZWQoJmd1Yy0+ZncpOwo+ICsJcmV0dXJuIGludGVsX3Vj X2Z3X2lzX3J1bm5pbmcoJmd1Yy0+ZncpOwo+ICB9Cj4gc3RhdGljIGlubGluZSBpbnQgaW50ZWxf Z3VjX3Nhbml0aXplKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3LmMgIAo+IGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3LmMKPiBpbmRleCBhMDI3ZGViODAzMzAuLjA4NWU3ODQy ZWY4YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNf ZncuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19mdy5jCj4g QEAgLTIzMiw1ICsyMzIsOSBAQCBzdGF0aWMgaW50IGd1Y19md194ZmVyKHN0cnVjdCBpbnRlbF91 Y19mdyAqZ3VjX2Z3KQo+ICAgKi8KPiAgaW50IGludGVsX2d1Y19md191cGxvYWQoc3RydWN0IGlu dGVsX2d1YyAqZ3VjKQo+ICB7Cj4gLQlyZXR1cm4gaW50ZWxfdWNfZndfdXBsb2FkKCZndWMtPmZ3 LCBndWNfZndfeGZlcik7Cj4gKwlpbnQgcmV0ID0gaW50ZWxfdWNfZndfdXBsb2FkKCZndWMtPmZ3 LCBndWNfZndfeGZlcik7Cj4gKwlpZiAoIXJldCkKPiArCQlndWMtPmZ3LnN0YXR1cyA9IElOVEVM X1VDX0ZJUk1XQVJFX1JVTk5JTkc7Cgp3ZSBzaG91bGQgYWxyZWFkeSBrbm93IHRoYXQgaW4gZ3Vj X2Z3X3hmZXIvZ3VjX3hmZXJfdWNvZGUKc2VlIGJlbG93IGZvciBkZXRhaWxzCgo+ICsKPiArCXJl dHVybiByZXQ7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMv aW50ZWxfZ3VjX3N1Ym1pc3Npb24uYyAgCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF9ndWNfc3VibWlzc2lvbi5jCj4gaW5kZXggYTBmMmEwMTM2NWJjLi5iNDIzOGZlMTZhMDMg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1p c3Npb24uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJt aXNzaW9uLmMKPiBAQCAtOTQxLDcgKzk0MSw3IEBAIHN0YXRpYyB2b2lkIF9fZ3VjX2NsaWVudF9k aXNhYmxlKHN0cnVjdCAgCj4gaW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50KQo+ICAJICogdGhlIGNh c2UsIGluc3RlYWQgb2YgdHJ5aW5nIChpbiB2YWluKSB0byBjb21tdW5pY2F0ZSB3aXRoIGl0LCBs ZXQncwo+ICAJICoganVzdCBjbGVhbnVwIHRoZSBkb29yYmVsbCBIVyBhbmQgb3VyIGludGVybmFs IHN0YXRlLgo+ICAJICovCj4gLQlpZiAoaW50ZWxfZ3VjX2lzX2xvYWRlZChjbGllbnQtPmd1Yykp Cj4gKwlpZiAoaW50ZWxfZ3VjX2lzX3J1bm5pbmcoY2xpZW50LT5ndWMpKQo+ICAJCWRlc3Ryb3lf ZG9vcmJlbGwoY2xpZW50KTsKPiAgCWVsc2UKPiAgCQlfX2ZpbmlfZG9vcmJlbGwoY2xpZW50KTsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfaHVjLmMgIAo+ IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfaHVjLmMKPiBpbmRleCBhYjZjMTU2 NGI2YTcuLjc4MDRlYTVmNjk5YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC91Yy9pbnRlbF9odWMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVs X2h1Yy5jCj4gQEAgLTExNyw4ICsxMTcsOCBAQCBpbnQgaW50ZWxfaHVjX2F1dGgoc3RydWN0IGlu dGVsX2h1YyAqaHVjKQo+ICAJc3RydWN0IGludGVsX2d1YyAqZ3VjID0gJmd0LT51Yy5ndWM7Cj4g IAlpbnQgcmV0Owo+IC0JaWYgKGh1Yy0+ZncubG9hZF9zdGF0dXMgIT0gSU5URUxfVUNfRklSTVdB UkVfU1VDQ0VTUykKPiAtCQlyZXR1cm4gLUVOT0VYRUM7Cj4gKwlHRU1fQlVHX09OKCFpbnRlbF91 Y19md19pc19sb2FkZWQoJmh1Yy0+ZncpKTsKPiArCUdFTV9CVUdfT04oaW50ZWxfaHVjX2lzX2F1 dGhlbnRpY2F0ZWQoaHVjKSk7Cj4gCXJldCA9IGludGVsX2d1Y19hdXRoX2h1YyhndWMsCj4gIAkJ CQkgaW50ZWxfZ3VjX2dndHRfb2Zmc2V0KGd1YywgaHVjLT5yc2FfZGF0YSkpOwo+IEBAIC0xMzgs MTAgKzEzOCwxMiBAQCBpbnQgaW50ZWxfaHVjX2F1dGgoc3RydWN0IGludGVsX2h1YyAqaHVjKQo+ ICAJCWdvdG8gZmFpbDsKPiAgCX0KPiArCWh1Yy0+Zncuc3RhdHVzID0gSU5URUxfVUNfRklSTVdB UkVfUlVOTklORzsKPiArCj4gIAlyZXR1cm4gMDsKPiBmYWlsOgo+IC0JaHVjLT5mdy5sb2FkX3N0 YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX0ZBSUw7Cj4gKwlodWMtPmZ3LnN0YXR1cyA9IElOVEVM X1VDX0ZJUk1XQVJFX0xPQURfRkFJTDsKPiAJRFJNX0VSUk9SKCJIdUM6IEF1dGhlbnRpY2F0aW9u IGZhaWxlZCAlZFxuIiwgcmV0KTsKPiAgCXJldHVybiByZXQ7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2h1Yy5oICAKPiBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3VjL2ludGVsX2h1Yy5oCj4gaW5kZXggOWZhM2Q0NjI5ZjJlLi5lYTM0MGY4NWJjNDYg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfaHVjLmgKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9odWMuaAo+IEBAIC01Niw0ICs1 Niw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IGludGVsX2h1Y19zYW5pdGl6ZShzdHJ1Y3QgaW50ZWxf aHVjICAKPiAqaHVjKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiArc3RhdGljIGlubGluZSBib29sIGlu dGVsX2h1Y19pc19hdXRoZW50aWNhdGVkKHN0cnVjdCBpbnRlbF9odWMgKmh1YykKPiArewo+ICsJ cmV0dXJuIGludGVsX3VjX2Z3X2lzX3J1bm5pbmcoJmh1Yy0+ZncpOwo+ICt9Cj4gKwo+ICAjZW5k aWYKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuYyAg Cj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jCj4gaW5kZXggZDYwYzU2 ZmQ3MmU1Li5iNzYxODA5OTQ2YjEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvdWMvaW50ZWxfdWMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVs X3VjLmMKPiBAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgaW50ZWxfdWNfZmluaV9odyhzdHJ1Y3Qg aW50ZWxfdWMgKnVjKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmdWMtPmd1YzsK PiAtCWlmICghaW50ZWxfZ3VjX2lzX2xvYWRlZChndWMpKQo+ICsJaWYgKCFpbnRlbF9ndWNfaXNf cnVubmluZyhndWMpKQo+ICAJCXJldHVybjsKPiAJR0VNX0JVR19PTighaW50ZWxfdWNfZndfc3Vw cG9ydGVkKCZndWMtPmZ3KSk7Cj4gQEAgLTU4MSw3ICs1ODEsNyBAQCB2b2lkIGludGVsX3VjX3Jl c2V0X3ByZXBhcmUoc3RydWN0IGludGVsX3VjICp1YykKPiAgewo+ICAJc3RydWN0IGludGVsX2d1 YyAqZ3VjID0gJnVjLT5ndWM7Cj4gLQlpZiAoIWludGVsX2d1Y19pc19sb2FkZWQoZ3VjKSkKPiAr CWlmICghaW50ZWxfZ3VjX2lzX3J1bm5pbmcoZ3VjKSkKPiAgCQlyZXR1cm47Cj4gCWd1Y19zdG9w X2NvbW11bmljYXRpb24oZ3VjKTsKPiBAQCAtNTkzLDcgKzU5Myw3IEBAIHZvaWQgaW50ZWxfdWNf cnVudGltZV9zdXNwZW5kKHN0cnVjdCBpbnRlbF91YyAqdWMpCj4gIAlzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMgPSAmdWMtPmd1YzsKPiAgCWludCBlcnI7Cj4gLQlpZiAoIWludGVsX2d1Y19pc19sb2Fk ZWQoZ3VjKSkKPiArCWlmICghaW50ZWxfZ3VjX2lzX3J1bm5pbmcoZ3VjKSkKPiAgCQlyZXR1cm47 Cj4gCWVyciA9IGludGVsX2d1Y19zdXNwZW5kKGd1Yyk7Cj4gQEAgLTYwOCw3ICs2MDgsNyBAQCB2 b2lkIGludGVsX3VjX3N1c3BlbmQoc3RydWN0IGludGVsX3VjICp1YykKPiAgCXN0cnVjdCBpbnRl bF9ndWMgKmd1YyA9ICZ1Yy0+Z3VjOwo+ICAJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gLQlp ZiAoIWludGVsX2d1Y19pc19sb2FkZWQoZ3VjKSkKPiArCWlmICghaW50ZWxfZ3VjX2lzX3J1bm5p bmcoZ3VjKSkKPiAgCQlyZXR1cm47Cj4gCXdpdGhfaW50ZWxfcnVudGltZV9wbSgmdWNfdG9fZ3Qo dWMpLT5pOTE1LT5ydW50aW1lX3BtLCB3YWtlcmVmKQo+IEBAIC02MjAsNyArNjIwLDcgQEAgaW50 IGludGVsX3VjX3Jlc3VtZShzdHJ1Y3QgaW50ZWxfdWMgKnVjKQo+ICAJc3RydWN0IGludGVsX2d1 YyAqZ3VjID0gJnVjLT5ndWM7Cj4gIAlpbnQgZXJyOwo+IC0JaWYgKCFpbnRlbF9ndWNfaXNfbG9h ZGVkKGd1YykpCj4gKwlpZiAoIWludGVsX2d1Y19pc19ydW5uaW5nKGd1YykpCj4gIAkJcmV0dXJu IDA7Cj4gCWd1Y19lbmFibGVfY29tbXVuaWNhdGlvbihndWMpOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Y19mdy5jICAKPiBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3VjL2ludGVsX3VjX2Z3LmMKPiBpbmRleCA0ODEwMGRmZjQ2NmQuLjlmYzcyYzJl NTBkMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Y19m dy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZncuYwo+IEBA IC0xMzAsNyArMTMwLDcgQEAgX191Y19md19zZWxlY3Qoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19m dywgZW51bSAgCj4gaW50ZWxfcGxhdGZvcm0gcCwgdTggcmV2KQo+ICAJCQkgICAgICAgZndfYmxv YnNbaV0uZmlyc3RfcmV2KTsKPiAJCQl1Y19mdy0+cGF0aCA9IE5VTEw7Cj4gLQkJCXVjX2Z3LT5m ZXRjaF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9OT1RfU1VQUE9SVEVEOwo+ICsJCQl1Y19m dy0+c3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfTk9UX1NVUFBPUlRFRDsKPiAgCQkJcmV0dXJu Owo+ICAJCX0KPiAgCX0KPiBAQCAtMTM5LDE1ICsxMzksMTMgQEAgX191Y19md19zZWxlY3Qoc3Ry dWN0IGludGVsX3VjX2Z3ICp1Y19mdywgZW51bSAgCj4gaW50ZWxfcGxhdGZvcm0gcCwgdTggcmV2 KQo+ICBzdGF0aWMgdm9pZAo+ICB1Y19md19zZWxlY3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUsIHN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncpCj4gIHsKPiAtCUdFTV9CVUdfT04odWNf ZnctPmZldGNoX3N0YXR1cyAhPSBJTlRFTF9VQ19GSVJNV0FSRV9VTklOSVRJQUxJWkVEKTsKPiAr CUdFTV9CVUdfT04odWNfZnctPnN0YXR1cyAhPSBJTlRFTF9VQ19GSVJNV0FSRV9VTklOSVRJQUxJ WkVEKTsKPiAJaWYgKCFIQVNfR1RfVUMoaTkxNSkpIHsKPiAtCQl1Y19mdy0+ZmV0Y2hfc3RhdHVz ID0gSU5URUxfVUNfRklSTVdBUkVfTk9UX1NVUFBPUlRFRDsKPiArCQl1Y19mdy0+c3RhdHVzID0g SU5URUxfVUNfRklSTVdBUkVfTk9UX1NVUFBPUlRFRDsKPiAgCQlyZXR1cm47Cj4gIAl9Cj4gLQl1 Y19mdy0+ZmV0Y2hfc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfTk9UX1NUQVJURUQ7Cj4gLQo+ ICAJaWYgKHVubGlrZWx5KGk5MTVfbW9kcGFyYW1zLmd1Y19maXJtd2FyZV9wYXRoICYmCj4gIAkJ ICAgICB1Y19mdy0+dHlwZSA9PSBJTlRFTF9VQ19GV19UWVBFX0dVQykpCj4gIAkJdWNfZnctPnBh dGggPSBpOTE1X21vZHBhcmFtcy5ndWNfZmlybXdhcmVfcGF0aDsKPiBAQCAtMTU2LDYgKzE1NCw4 IEBAIHVjX2Z3X3NlbGVjdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgc3RydWN0ICAK PiBpbnRlbF91Y19mdyAqdWNfZncpCj4gIAkJdWNfZnctPnBhdGggPSBpOTE1X21vZHBhcmFtcy5o dWNfZmlybXdhcmVfcGF0aDsKPiAgCWVsc2UKPiAgCQlfX3VjX2Z3X3NlbGVjdCh1Y19mdywgSU5U RUxfSU5GTyhpOTE1KS0+cGxhdGZvcm0sIElOVEVMX1JFVklEKGk5MTUpKTsKPiArCj4gKwl1Y19m dy0+c3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfU0VMRUNUSU9OX0RPTkU7Cj4gIH0KPiAvKioK PiBAQCAtMTcyLDE0ICsxNzIsMTMgQEAgdm9pZCBpbnRlbF91Y19md19pbml0X2Vhcmx5KHN0cnVj dCAgCj4gZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgCQkJICAgIGVudW0gaW50ZWxfdWNfZndf dHlwZSB0eXBlKQo+ICB7Cj4gIAkvKgo+IC0JICogd2UgdXNlIEZJUk1XQVJFX1VOSU5JVElBTEla RUQgdG8gZGV0ZWN0IGNoZWNrcyBhZ2FpbnN0IGZldGNoX3N0YXR1cwo+ICsJICogd2UgdXNlIEZJ Uk1XQVJFX1VOSU5JVElBTElaRUQgdG8gZGV0ZWN0IGNoZWNrcyBhZ2FpbnN0IHVjX2Z3LT5zdGF0 dXMKPiAgCSAqIGJlZm9yZSB3ZSdyZSBsb29rZWQgYXQgdGhlIEhXIGNhcHMgdG8gc2VlIGlmIHdl IGhhdmUgdWMgc3VwcG9ydAo+ICAJICovCj4gIAlCVUlMRF9CVUdfT04oSU5URUxfVUNfRklSTVdB UkVfVU5JTklUSUFMSVpFRCk7Cj4gCXVjX2Z3LT5wYXRoID0gTlVMTDsKPiAtCXVjX2Z3LT5mZXRj aF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9VTklOSVRJQUxJWkVEOwo+IC0JdWNfZnctPmxv YWRfc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfTk9UX1NUQVJURUQ7Cj4gKwl1Y19mdy0+c3Rh dHVzID0gSU5URUxfVUNfRklSTVdBUkVfVU5JTklUSUFMSVpFRDsKPiAgCXVjX2Z3LT50eXBlID0g dHlwZTsKPiAJdWNfZndfc2VsZWN0KGk5MTUsIHVjX2Z3KTsKPiBAQCAtMjA0LDI5ICsyMDMsMTEg QEAgdm9pZCBpbnRlbF91Y19md19mZXRjaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAgCj4gKmRl dl9wcml2LAo+ICAJaW50IGVycjsKPiAJR0VNX0JVR19PTighaW50ZWxfdWNfZndfc3VwcG9ydGVk KHVjX2Z3KSk7Cj4gLQo+IC0JaWYgKCF1Y19mdy0+cGF0aCkgewo+IC0JCWRldl9pbmZvKGRldl9w cml2LT5kcm0uZGV2LAo+IC0JCQkgIiVzOiBObyBmaXJtd2FyZSB3YXMgZGVmaW5lZCBmb3IgJXMh XG4iLAo+IC0JCQkgaW50ZWxfdWNfZndfdHlwZV9yZXByKHVjX2Z3LT50eXBlKSwKPiAtCQkJIGlu dGVsX3BsYXRmb3JtX25hbWUoSU5URUxfSU5GTyhkZXZfcHJpdiktPnBsYXRmb3JtKSk7Cj4gLQkJ cmV0dXJuOwo+IC0JfQo+IC0KPiAtCURSTV9ERUJVR19EUklWRVIoIiVzIGZ3IGZldGNoICVzXG4i LAo+IC0JCQkgaW50ZWxfdWNfZndfdHlwZV9yZXByKHVjX2Z3LT50eXBlKSwgdWNfZnctPnBhdGgp Owo+IC0KPiAtCXVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9QRU5ESU5H Owo+IC0JRFJNX0RFQlVHX0RSSVZFUigiJXMgZncgZmV0Y2ggJXNcbiIsCj4gLQkJCSBpbnRlbF91 Y19md190eXBlX3JlcHIodWNfZnctPnR5cGUpLAo+IC0JCQkgaW50ZWxfdWNfZndfc3RhdHVzX3Jl cHIodWNfZnctPmZldGNoX3N0YXR1cykpOwo+ICsJR0VNX0JVR19PTighaW50ZWxfdWNfZndfaXNf c2VsZWN0ZWQodWNfZncpKTsKPiAJZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmZncsIHVjX2Z3LT5w YXRoLCAmcGRldi0+ZGV2KTsKPiAtCWlmIChlcnIpIHsKPiAtCQlEUk1fREVCVUdfRFJJVkVSKCIl cyBmdyByZXF1ZXN0X2Zpcm13YXJlIGVycj0lZFxuIiwKPiAtCQkJCSBpbnRlbF91Y19md190eXBl X3JlcHIodWNfZnctPnR5cGUpLCBlcnIpOwo+ICsJaWYgKGVycikKPiAgCQlnb3RvIGZhaWw7Cj4g LQl9Cj4gCURSTV9ERUJVR19EUklWRVIoIiVzIGZ3IHNpemUgJXp1IHB0ciAlcFxuIiwKPiAgCQkJ IGludGVsX3VjX2Z3X3R5cGVfcmVwcih1Y19mdy0+dHlwZSksIGZ3LT5zaXplLCBmdyk7Cj4gQEAg LTMyOCwxOSArMzA5LDEzIEBAIHZvaWQgaW50ZWxfdWNfZndfZmV0Y2goc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgIAo+ICpkZXZfcHJpdiwKPiAJdWNfZnctPm9iaiA9IG9iajsKPiAgCXVjX2Z3LT5z aXplID0gZnctPnNpemU7Cj4gLQl1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gSU5URUxfVUNfRklSTVdB UkVfU1VDQ0VTUzsKPiAtCURSTV9ERUJVR19EUklWRVIoIiVzIGZ3IGZldGNoICVzXG4iLAo+IC0J CQkgaW50ZWxfdWNfZndfdHlwZV9yZXByKHVjX2Z3LT50eXBlKSwKPiAtCQkJIGludGVsX3VjX2Z3 X3N0YXR1c19yZXByKHVjX2Z3LT5mZXRjaF9zdGF0dXMpKTsKPiArCXVjX2Z3LT5zdGF0dXMgPSBJ TlRFTF9VQ19GSVJNV0FSRV9BVkFJTEFCTEU7Cj4gCXJlbGVhc2VfZmlybXdhcmUoZncpOwo+ICAJ cmV0dXJuOwo+IGZhaWw6Cj4gLQl1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gSU5URUxfVUNfRklSTVdB UkVfRkFJTDsKPiAtCURSTV9ERUJVR19EUklWRVIoIiVzIGZ3IGZldGNoICVzXG4iLAo+IC0JCQkg aW50ZWxfdWNfZndfdHlwZV9yZXByKHVjX2Z3LT50eXBlKSwKPiAtCQkJIGludGVsX3VjX2Z3X3N0 YXR1c19yZXByKHVjX2Z3LT5mZXRjaF9zdGF0dXMpKTsKPiArCXVjX2Z3LT5zdGF0dXMgPSBJTlRF TF9VQ19GSVJNV0FSRV9GRVRDSF9GQUlMOwo+IAlEUk1fV0FSTigiJXM6IEZhaWxlZCB0byBmZXRj aCBmaXJtd2FyZSAlcyAoZXJyb3IgJWQpXG4iLAo+ICAJCSBpbnRlbF91Y19md190eXBlX3JlcHIo dWNfZnctPnR5cGUpLCB1Y19mdy0+cGF0aCwgZXJyKTsKPiBAQCAtMzk2LDE0ICszNzEsMTEgQEAg aW50IGludGVsX3VjX2Z3X3VwbG9hZChzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3LAo+ICAJRFJN X0RFQlVHX0RSSVZFUigiJXMgZncgbG9hZCAlc1xuIiwKPiAgCQkJIGludGVsX3VjX2Z3X3R5cGVf cmVwcih1Y19mdy0+dHlwZSksIHVjX2Z3LT5wYXRoKTsKPiAtCWlmICh1Y19mdy0+ZmV0Y2hfc3Rh dHVzICE9IElOVEVMX1VDX0ZJUk1XQVJFX1NVQ0NFU1MpCj4gLQkJcmV0dXJuIC1FTk9FWEVDOwo+ IC0KPiAtCXVjX2Z3LT5sb2FkX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX1BFTkRJTkc7Cj4g LQlEUk1fREVCVUdfRFJJVkVSKCIlcyBmdyBsb2FkICVzXG4iLAo+IC0JCQkgaW50ZWxfdWNfZndf dHlwZV9yZXByKHVjX2Z3LT50eXBlKSwKPiAtCQkJIGludGVsX3VjX2Z3X3N0YXR1c19yZXByKHVj X2Z3LT5sb2FkX3N0YXR1cykpOwo+ICsJLyogbWFrZSBzdXJlIHRoZSBzdGF0dXMgd2FzIGNsZWFy ZWQgdGhlIGxhc3QgdGltZSB3ZSByZXNldCB0aGUgdWMgKi8KPiArCUdFTV9CVUdfT04oaW50ZWxf dWNfZndfaXNfbG9hZGVkKHVjX2Z3KSk7Cj4gKwlpZiAoIWludGVsX3VjX2Z3X2lzX2F2YWlsYWJs ZSh1Y19mdykpCj4gKwkJcmV0dXJuIC1FTk9FWEVDOwo+ICAJLyogQ2FsbCBjdXN0b20gbG9hZGVy ICovCj4gIAlpbnRlbF91Y19md19nZ3R0X2JpbmQodWNfZncpOwo+ICAJZXJyID0geGZlcih1Y19m dyk7Cj4gQEAgLTQxMSwxMCArMzgzLDkgQEAgaW50IGludGVsX3VjX2Z3X3VwbG9hZChzdHJ1Y3Qg aW50ZWxfdWNfZncgKnVjX2Z3LAo+ICAJaWYgKGVycikKPiAgCQlnb3RvIGZhaWw7Cj4gLQl1Y19m dy0+bG9hZF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTOwo+IC0JRFJNX0RFQlVH X0RSSVZFUigiJXMgZncgbG9hZCAlc1xuIiwKPiAtCQkJIGludGVsX3VjX2Z3X3R5cGVfcmVwcih1 Y19mdy0+dHlwZSksCj4gLQkJCSBpbnRlbF91Y19md19zdGF0dXNfcmVwcih1Y19mdy0+bG9hZF9z dGF0dXMpKTsKPiArCXVjX2Z3LT5zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9MT0FERUQ7Cgpt YXliZSB3ZSBjYW4gc2xpZ2h0bHkgbW9kaWZ5IHhmZXIgZnVuY3Rpb24gYWdyZWVtZW50IGFuZCB1 c2UKLUVJTlBST0dSRVNTIHRvIGluZGljYXRlIHdoZXRoZXIgZncgaXMganVzdCBsb2FkZWQgKEh1 Qykgb3IKaXMgYWxyZWFkeSBhdXRoZW50aWNhdGVkIGFuZCBydW5uaW5nIChHdUMpOgoKCWlmICgh ZXJyKQoJCXVjX2Z3LT5zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9SVU5OSU5HOwoJZWxzZSBp ZiAoZXJyID09IC1FSU5QUk9HUkVTUykKCQl1Y19mdy0+c3RhdHVzID0gSU5URUxfVUNfRklSTVdB UkVfTE9BREVEOwoJZWxzZQoJCWdvdG8gZmFpbDsKCj4gKwlEUk1fREVCVUdfRFJJVkVSKCIlcyBm dyBsb2FkIGNvbXBsZXRlZFxuIiwKPiArCQkJIGludGVsX3VjX2Z3X3R5cGVfcmVwcih1Y19mdy0+ dHlwZSkpOwo+IAlEUk1fSU5GTygiJXM6IExvYWRlZCBmaXJtd2FyZSAlcyAodmVyc2lvbiAldS4l dSlcbiIsCj4gIAkJIGludGVsX3VjX2Z3X3R5cGVfcmVwcih1Y19mdy0+dHlwZSksCj4gQEAgLTQy NCwxMCArMzk1LDkgQEAgaW50IGludGVsX3VjX2Z3X3VwbG9hZChzdHJ1Y3QgaW50ZWxfdWNfZncg KnVjX2Z3LAo+ICAJcmV0dXJuIDA7Cj4gZmFpbDoKPiAtCXVjX2Z3LT5sb2FkX3N0YXR1cyA9IElO VEVMX1VDX0ZJUk1XQVJFX0ZBSUw7Cj4gLQlEUk1fREVCVUdfRFJJVkVSKCIlcyBmdyBsb2FkICVz XG4iLAo+IC0JCQkgaW50ZWxfdWNfZndfdHlwZV9yZXByKHVjX2Z3LT50eXBlKSwKPiAtCQkJIGlu dGVsX3VjX2Z3X3N0YXR1c19yZXByKHVjX2Z3LT5sb2FkX3N0YXR1cykpOwo+ICsJdWNfZnctPnN0 YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX0xPQURfRkFJTDsKPiArCURSTV9ERUJVR19EUklWRVIo IiVzIGZ3IGxvYWQgZmFpbGVkXG4iLAo+ICsJCQkgaW50ZWxfdWNfZndfdHlwZV9yZXByKHVjX2Z3 LT50eXBlKSk7Cj4gCURSTV9XQVJOKCIlczogRmFpbGVkIHRvIGxvYWQgZmlybXdhcmUgJXMgKGVy cm9yICVkKVxuIiwKPiAgCQkgaW50ZWxfdWNfZndfdHlwZV9yZXByKHVjX2Z3LT50eXBlKSwgdWNf ZnctPnBhdGgsIGVycik7Cj4gQEAgLTQzOSw3ICs0MDksMTAgQEAgaW50IGludGVsX3VjX2Z3X2lu aXQoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdykKPiAgewo+ICAJaW50IGVycjsKPiAtCWlmICh1 Y19mdy0+ZmV0Y2hfc3RhdHVzICE9IElOVEVMX1VDX0ZJUk1XQVJFX1NVQ0NFU1MpCj4gKwkvKiB0 aGlzIHNob3VsZCBoYXBwZW4gYmVmb3JlIHRoZSBsb2FkISAqLwo+ICsJR0VNX0JVR19PTihpbnRl bF91Y19md19pc19sb2FkZWQodWNfZncpKTsKPiArCj4gKwlpZiAoIWludGVsX3VjX2Z3X2lzX2F2 YWlsYWJsZSh1Y19mdykpCj4gIAkJcmV0dXJuIC1FTk9FWEVDOwo+IAllcnIgPSBpOTE1X2dlbV9v YmplY3RfcGluX3BhZ2VzKHVjX2Z3LT5vYmopOwo+IEBAIC00NTIsNyArNDI1LDcgQEAgaW50IGlu dGVsX3VjX2Z3X2luaXQoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdykKPiB2b2lkIGludGVsX3Vj X2Z3X2Zpbmkoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdykKPiAgewo+IC0JaWYgKHVjX2Z3LT5m ZXRjaF9zdGF0dXMgIT0gSU5URUxfVUNfRklSTVdBUkVfU1VDQ0VTUykKPiArCWlmICghaW50ZWxf dWNfZndfaXNfYXZhaWxhYmxlKHVjX2Z3KSkKPiAgCQlyZXR1cm47Cj4gCWk5MTVfZ2VtX29iamVj dF91bnBpbl9wYWdlcyh1Y19mdy0+b2JqKTsKPiBAQCAtNDg2LDcgKzQ1OSw3IEBAIHZvaWQgaW50 ZWxfdWNfZndfY2xlYW51cF9mZXRjaChzdHJ1Y3QgaW50ZWxfdWNfZncgIAo+ICp1Y19mdykKPiAg CWlmIChvYmopCj4gIAkJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwo+IC0JdWNfZnctPmZldGNo X3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX05PVF9TVEFSVEVEOwo+ICsJdWNfZnctPnN0YXR1 cyA9IElOVEVMX1VDX0ZJUk1XQVJFX1NFTEVDVElPTl9ET05FOwo+ICB9Cj4gLyoqCj4gQEAgLTUw MCw5ICs0NzMsOCBAQCB2b2lkIGludGVsX3VjX2Z3X2R1bXAoY29uc3Qgc3RydWN0IGludGVsX3Vj X2Z3ICAKPiAqdWNfZncsIHN0cnVjdCBkcm1fcHJpbnRlciAqcCkKPiAgewo+ICAJZHJtX3ByaW50 ZihwLCAiJXMgZmlybXdhcmU6ICVzXG4iLAo+ICAJCSAgIGludGVsX3VjX2Z3X3R5cGVfcmVwcih1 Y19mdy0+dHlwZSksIHVjX2Z3LT5wYXRoKTsKPiAtCWRybV9wcmludGYocCwgIlx0c3RhdHVzOiBm ZXRjaCAlcywgbG9hZCAlc1xuIiwKPiAtCQkgICBpbnRlbF91Y19md19zdGF0dXNfcmVwcih1Y19m dy0+ZmV0Y2hfc3RhdHVzKSwKPiAtCQkgICBpbnRlbF91Y19md19zdGF0dXNfcmVwcih1Y19mdy0+ bG9hZF9zdGF0dXMpKTsKPiArCWRybV9wcmludGYocCwgIlx0c3RhdHVzOiAlc1xuIiwKPiArCQkg ICBpbnRlbF91Y19md19zdGF0dXNfcmVwcih1Y19mdy0+c3RhdHVzKSk7Cj4gIAlkcm1fcHJpbnRm KHAsICJcdHZlcnNpb246IHdhbnRlZCAldS4ldSwgZm91bmQgJXUuJXVcbiIsCj4gIAkJICAgdWNf ZnctPm1ham9yX3Zlcl93YW50ZWQsIHVjX2Z3LT5taW5vcl92ZXJfd2FudGVkLAo+ICAJCSAgIHVj X2Z3LT5tYWpvcl92ZXJfZm91bmQsIHVjX2Z3LT5taW5vcl92ZXJfZm91bmQpOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Y19mdy5oICAKPiBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjX2Z3LmgKPiBpbmRleCBjMjg2OGVmMTVlZGEu LmVjZGVjNDMyMDI2MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF91Y19mdy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNf ZncuaAo+IEBAIC0zNSwxMiArMzUsMTQgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGU7Cj4gICNk ZWZpbmUgSU5URUxfVUNfRklSTVdBUkVfVVJMICAKPiAiaHR0cHM6Ly9naXQua2VybmVsLm9yZy9w dWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvZmlybXdhcmUvbGludXgtZmlybXdhcmUuZ2l0L3RyZWUv aTkxNSIKPiBlbnVtIGludGVsX3VjX2Z3X3N0YXR1cyB7Cj4gLQlJTlRFTF9VQ19GSVJNV0FSRV9O T1RfU1VQUE9SVEVEID0gLTIsIC8qIG5vIHVjIEhXICovCj4gLQlJTlRFTF9VQ19GSVJNV0FSRV9G QUlMID0gLTEsCj4gKwlJTlRFTF9VQ19GSVJNV0FSRV9MT0FEX0ZBSUwgPSAtMywKPiArCUlOVEVM X1VDX0ZJUk1XQVJFX0ZFVENIX0ZBSUwgPSAtMiwKPiArCUlOVEVMX1VDX0ZJUk1XQVJFX05PVF9T VVBQT1JURUQgPSAtMSwgLyogbm8gdWMgSFcgKi8KPiAgCUlOVEVMX1VDX0ZJUk1XQVJFX1VOSU5J VElBTElaRUQgPSAwLCAvKiB1c2VkIHRvIGNhdGNoIGNoZWNrcyBkb25lIHRvbyAgCj4gZWFybHkg Ki8KPiAtCUlOVEVMX1VDX0ZJUk1XQVJFX05PVF9TVEFSVEVEID0gMSwKPiAtCUlOVEVMX1VDX0ZJ Uk1XQVJFX1BFTkRJTkcsCj4gLQlJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTCj4gKwlJTlRFTF9V Q19GSVJNV0FSRV9TRUxFQ1RJT05fRE9ORSwgLyogc2VsZWN0aW9uIGluY2x1ZGUgdGhlICJubyBG VyIgIAo+IGNhc2UgKi8KCndoeSBkbyB5b3Ugd2FudCB0byBrZWVwICJObyBGVyIgY2FzZSBoZXJl ID8Kd2hlbiB3ZSBrbm93IHRoYXQgdGhlcmUgaXMgbm8gZncsIHdlIHNob3VsZCBub3QgYXR0ZW1w dCB0byBmZXRjaCBpdC4Kc28gdGhpcyBpcyBkaWZmZXJlbnQgc3RhdGUgdGhhbiAiZncgd2FzIHNl bGVjdGVkLCBhd2FpdGluZyBmZXRjaCIKCj4gKwlJTlRFTF9VQ19GSVJNV0FSRV9BVkFJTEFCTEUs IC8qIGZldGNoIGRvbmUgKi8KPiArCUlOVEVMX1VDX0ZJUk1XQVJFX0xPQURFRCwgLyogZG1hIHhm ZXIgZG9uZSAqLwo+ICsJSU5URUxfVUNfRklSTVdBUkVfUlVOTklORyAvKiBmdyBpbml0L2F1dGgg ZG9uZSAqLwo+ICB9Owo+IGVudW0gaW50ZWxfdWNfZndfdHlwZSB7Cj4gQEAgLTU3LDggKzU5LDcg QEAgc3RydWN0IGludGVsX3VjX2Z3IHsKPiAgCWNvbnN0IGNoYXIgKnBhdGg7Cj4gIAlzaXplX3Qg c2l6ZTsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gLQllbnVtIGludGVs X3VjX2Z3X3N0YXR1cyBmZXRjaF9zdGF0dXM7Cj4gLQllbnVtIGludGVsX3VjX2Z3X3N0YXR1cyBs b2FkX3N0YXR1czsKPiArCWVudW0gaW50ZWxfdWNfZndfc3RhdHVzIHN0YXR1czsKPiAJLyoKPiAg CSAqIFRoZSBmaXJtd2FyZSBidWlsZCBwcm9jZXNzIHdpbGwgZ2VuZXJhdGUgYSB2ZXJzaW9uIGhl YWRlciBmaWxlIHdpdGggIAo+IG1ham9yIGFuZAo+IEBAIC04MywxOCArODQsMjIgQEAgc3RhdGlj IGlubGluZQo+ICBjb25zdCBjaGFyICppbnRlbF91Y19md19zdGF0dXNfcmVwcihlbnVtIGludGVs X3VjX2Z3X3N0YXR1cyBzdGF0dXMpCj4gIHsKPiAgCXN3aXRjaCAoc3RhdHVzKSB7Cj4gKwljYXNl IElOVEVMX1VDX0ZJUk1XQVJFX0xPQURfRkFJTDoKPiArCQlyZXR1cm4gIkxPQUQgRkFJTCI7Cj4g KwljYXNlIElOVEVMX1VDX0ZJUk1XQVJFX0ZFVENIX0ZBSUw6Cj4gKwkJcmV0dXJuICJGRVRDSCBG QUlMIjsKPiAgCWNhc2UgSU5URUxfVUNfRklSTVdBUkVfTk9UX1NVUFBPUlRFRDoKPiAtCQlyZXR1 cm4gIk4vQSAtIHVjIEhXIG5vdCBhdmFpbGFibGUiOwo+IC0JY2FzZSBJTlRFTF9VQ19GSVJNV0FS RV9GQUlMOgo+IC0JCXJldHVybiAiRkFJTCI7Cj4gKwkJcmV0dXJuICJOL0EiOwo+ICAJY2FzZSBJ TlRFTF9VQ19GSVJNV0FSRV9VTklOSVRJQUxJWkVEOgo+ICAJCXJldHVybiAiVU5JTklUSUFMSVpF RCI7Cj4gLQljYXNlIElOVEVMX1VDX0ZJUk1XQVJFX05PVF9TVEFSVEVEOgo+IC0JCXJldHVybiAi Tk9UX1NUQVJURUQiOwo+IC0JY2FzZSBJTlRFTF9VQ19GSVJNV0FSRV9QRU5ESU5HOgo+IC0JCXJl dHVybiAiUEVORElORyI7Cj4gLQljYXNlIElOVEVMX1VDX0ZJUk1XQVJFX1NVQ0NFU1M6Cj4gLQkJ cmV0dXJuICJTVUNDRVNTIjsKPiArCWNhc2UgSU5URUxfVUNfRklSTVdBUkVfU0VMRUNUSU9OX0RP TkU6Cj4gKwkJcmV0dXJuICJTRUxFQ1RJT04gRE9ORSI7CgpuaXQ6IHRoaXMgaXMgbm90IG15IGZh dm9yaXRlLCB3aGF0IHdhcyB3cm9uZyB3aXRoCiJQRU5ESU5HIiAoa25vd24sIGF3YWl0aW5nIGZl dGNoL2xvYWQsIGxvb2sgaXQncyB0cmFuc2llbnQgc3RhdGUhKQoiU0VMRUNURUQiIChzaG9ydGVy LCBhcHBsaWVzIHRvIHRoaXMgZncgb2JqZWN0IHZzIHN0ZXApCgo+ICsJY2FzZSBJTlRFTF9VQ19G SVJNV0FSRV9BVkFJTEFCTEU6Cj4gKwkJcmV0dXJuICJBVkFJTEFCTEUiOwo+ICsJY2FzZSBJTlRF TF9VQ19GSVJNV0FSRV9MT0FERUQ6Cj4gKwkJcmV0dXJuICJMT0FERUQiOwo+ICsJY2FzZSBJTlRF TF9VQ19GSVJNV0FSRV9SVU5OSU5HOgo+ICsJCXJldHVybiAiUlVOTklORyI7Cj4gIAl9Cj4gIAly ZXR1cm4gIjxpbnZhbGlkPiI7Cj4gIH0KPiBAQCAtMTEzLDI1ICsxMTgsMzYgQEAgc3RhdGljIGlu bGluZSBjb25zdCBjaGFyICAKPiAqaW50ZWxfdWNfZndfdHlwZV9yZXByKGVudW0gaW50ZWxfdWNf ZndfdHlwZSB0eXBlKQo+IHN0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF91Y19md19pc19zZWxlY3Rl ZChzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KQo+ICB7Cj4gKwlHRU1fQlVHX09OKHVjX2Z3LT5w YXRoICYmIHVjX2Z3LT5zdGF0dXMgPCAgCj4gSU5URUxfVUNfRklSTVdBUkVfU0VMRUNUSU9OX0RP TkUpOwo+ICAJcmV0dXJuIHVjX2Z3LT5wYXRoICE9IE5VTEw7Cj4gIH0KPiArc3RhdGljIGlubGlu ZSBib29sIGludGVsX3VjX2Z3X2lzX2F2YWlsYWJsZShzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3 KQo+ICt7Cj4gKwlyZXR1cm4gdWNfZnctPnN0YXR1cyA+PSBJTlRFTF9VQ19GSVJNV0FSRV9BVkFJ TEFCTEU7Cj4gK30KPiArCj4gIHN0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF91Y19md19pc19sb2Fk ZWQoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdykKPiAgewo+IC0JcmV0dXJuIHVjX2Z3LT5sb2Fk X3N0YXR1cyA9PSBJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTOwo+ICsJcmV0dXJuIHVjX2Z3LT5z dGF0dXMgPj0gSU5URUxfVUNfRklSTVdBUkVfTE9BREVEOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5s aW5lIGJvb2wgaW50ZWxfdWNfZndfaXNfcnVubmluZyhzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3 KQo+ICt7Cj4gKwlyZXR1cm4gdWNfZnctPnN0YXR1cyA9PSBJTlRFTF9VQ19GSVJNV0FSRV9SVU5O SU5HOwo+ICB9Cj4gc3RhdGljIGlubGluZSBib29sIGludGVsX3VjX2Z3X3N1cHBvcnRlZChzdHJ1 Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KQo+ICB7Cj4gIAkvKiBzaG91bGRuJ3QgY2FsbCB0aGlzIGJl Zm9yZSBjaGVja2luZyBody9ibG9iIGF2YWlsYWJpbGl0eSAqLwo+IC0JR0VNX0JVR19PTih1Y19m dy0+ZmV0Y2hfc3RhdHVzID09IElOVEVMX1VDX0ZJUk1XQVJFX1VOSU5JVElBTElaRUQpOwo+IC0J cmV0dXJuIHVjX2Z3LT5mZXRjaF9zdGF0dXMgIT0gSU5URUxfVUNfRklSTVdBUkVfTk9UX1NVUFBP UlRFRDsKPiArCUdFTV9CVUdfT04odWNfZnctPnN0YXR1cyA9PSBJTlRFTF9VQ19GSVJNV0FSRV9V TklOSVRJQUxJWkVEKTsKCnNob3VsZG4ndCB3ZSBoYXZlIHRoaXMgY2hlY2sgb24gYWxsIHVjX2Z3 X2lzX3h4eCgpIGZ1bmN0aW9ucyA/Cgo+ICsJcmV0dXJuIHVjX2Z3LT5zdGF0dXMgIT0gSU5URUxf VUNfRklSTVdBUkVfTk9UX1NVUFBPUlRFRDsKPiAgfQo+IHN0YXRpYyBpbmxpbmUgdm9pZCBpbnRl bF91Y19md19zYW5pdGl6ZShzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KQo+ICB7Cj4gIAlpZiAo aW50ZWxfdWNfZndfaXNfbG9hZGVkKHVjX2Z3KSkKPiAtCQl1Y19mdy0+bG9hZF9zdGF0dXMgPSBJ TlRFTF9VQ19GSVJNV0FSRV9QRU5ESU5HOwo+ICsJCXVjX2Z3LT5zdGF0dXMgPSBJTlRFTF9VQ19G SVJNV0FSRV9BVkFJTEFCTEU7Cj4gIH0KPiAvKioKPiBAQCAtMTQ0LDcgKzE2MCw3IEBAIHN0YXRp YyBpbmxpbmUgdm9pZCBpbnRlbF91Y19md19zYW5pdGl6ZShzdHJ1Y3QgIAo+IGludGVsX3VjX2Z3 ICp1Y19mdykKPiAgICovCj4gIHN0YXRpYyBpbmxpbmUgdTMyIGludGVsX3VjX2Z3X2dldF91cGxv YWRfc2l6ZShzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KQo+ICB7Cj4gLQlpZiAodWNfZnctPmZl dGNoX3N0YXR1cyAhPSBJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTKQo+ICsJaWYgKCFpbnRlbF91 Y19md19pc19hdmFpbGFibGUodWNfZncpKQo+ICAJCXJldHVybiAwOwo+IAlyZXR1cm4gdWNfZnct PmhlYWRlcl9zaXplICsgdWNfZnctPnVjb2RlX3NpemU7Cl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeA==