From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: Re: [PATCH 6/7] drm/i915/psr: Remove partial PSR support on multiple transcoders Date: Thu, 4 Apr 2019 14:20:28 -0700 Message-ID: <20190404212028.GG15051@intel.com> References: <20190403233539.31828-1-jose.souza@intel.com> <20190403233539.31828-6-jose.souza@intel.com> <20190404003125.GE25758@intel.com> <3039dded7fd647f2d4b4eda6a6f427dbe5ad9a15.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id B85116E5AA for ; Thu, 4 Apr 2019 21:20:18 +0000 (UTC) Content-Disposition: inline In-Reply-To: <3039dded7fd647f2d4b4eda6a6f427dbe5ad9a15.camel@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Souza, Jose" Cc: "intel-gfx@lists.freedesktop.org" , "Pandiyan, Dhinakaran" List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBBcHIgMDQsIDIwMTkgYXQgMTI6NDA6MzRQTSAtMDcwMCwgU291emEsIEpvc2Ugd3Jv dGU6Cj4gT24gV2VkLCAyMDE5LTA0LTAzIGF0IDE3OjMxIC0wNzAwLCBSb2RyaWdvIFZpdmkgd3Jv dGU6Cj4gPiBPbiBXZWQsIEFwciAwMywgMjAxOSBhdCAwNDozNTozOFBNIC0wNzAwLCBKb3PDqSBS b2JlcnRvIGRlIFNvdXphCj4gPiB3cm90ZToKPiA+ID4gUFNSIGlzIG9ubHkgc3VwcG9ydGVkIGlu IGVEUCB0cmFuc2NvZGVyIGFuZCB0aGVyZSBpcyBvbmx5IG9uZQo+ID4gPiBpbnN0YW5jZSBvZiBp dCwgc28gbGV0cyBkcm9wIGFsbCBvZiB0aGlzIGNvZGUuCj4gPiAKPiA+IElzIHRoaXMgc2VudGVu Y2UgdHJ1ZT8gSSBtZWFuLCBpbiB0aGUgd2F5IGl0IGlzIHdyaXR0ZW4gaXQKPiA+IHNlZW1zIGxp a2UgSFcgZG9lc24ndCBhY3R1YWxseSBzdXBwb3J0IGl0Li4uCj4gPiBPciBzaG91bGQgd2UgcmUt cGhyYXNlIGZvciB3ZSBhcmUgbm90IHJlYWxseSBlbmFibGluZyBzdXBwb3J0Cj4gPiBmb3Igb3Ro ZXIgdHJhbnNjb2RlcnMgdGhhbiBlRFAgYW5kIHdlIGRvIG5vdCBoYXZlIHBsYW5zIHRvIGRvCj4g PiBpdCBzbyBzb29uIHNvIGxldCdzIGNsZWFuIHRoZSBjb2RlLi4uCj4gPiBvciBzb21ldGhpbmcg bGlrZSB0aGF0Pwo+IAo+IE9rYXksIHdoYXQgYWJvdXQgcmVwbGFjZSBpdCBmb3I6Cj4gCj4gU2lu Y2UgQkRXIGFsbCB0cmFuc2NvZGVycyBoYXZlIFBTUiByZWdpc3RlcnMgYnV0IG9ubHkgRURQIHRy YW5zY29kZXIKPiBjYW4gZHJpdmUgYSBFRFAgcGFuZWwgYW5kIGFzIFBTUiBpcyBvbmx5IHBhcnQg b2YgdGhlIEVEUCBzcGVjaWZpY2F0aW9uLAo+IGZvciByZWFsIHVzYWdlIFBTUiBpcyBvbmx5IHN1 cHBvcnRlZCBpbiBFRFAgcGFuZWwsIHNvIGxldHMgZHJvcCBhbGwgb2YKPiB0aGlzIHVzZWxlc3Mg Y29kZS4KCndlbGwsIHRoaXMgc3RpbGwgbG9va3MgbGlrZSBIVyBsaW1pdGF0aW9uLiBJZiBQU1Ig aXMgc3VwcG9ydGVkIGJ5IEhXIG9uCmRpZmZlcmVudCB0cmFuc2NvZGVycyBpcyBiZWNhdXNlIHRo ZXJlJ3Mgc29tZSBwb3NzaWJpbGl0eSBvZiBhZGRpbmcKZURQIG9uIG90aGVyIHRyYW5zY29kZXJz LiBUaGV5IHdvdWxkbid0IHdhc3RlIHNvIG1hbnkgcmVnaXN0ZXIgc3BhY2UKaWYgdGhhdCB3YXNu J3QgdGhlIGNhc2UuCgpFdmVuIHRob3VnaCB3ZSBoYXZlIGEgZGVkaWNhdGVkIHRyYW5zY29kZXIg Zm9yIGVEUCBJIGRvbid0CmJlbGlldmUgd2UgY2FuIGFzc3VtZSB0aGF0IGVEUCBpcyBub3Qgc3Vw cG9ydGVkIG9uIHRoZSBvdGhlciBvbmVzLgoKPiAKPiAKPiAKPiA+IAo+ID4gPiBDYzogRGhpbmFr YXJhbiBQYW5kaXlhbiA8ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+Cj4gPiA+IENjOiBS b2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+Cj4gPiA+IFNpZ25lZC1vZmYtYnk6 IEpvc8OpIFJvYmVydG8gZGUgU291emEgPGpvc2Uuc291emFAaW50ZWwuY29tPgo+ID4gPiAtLS0K PiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggIHwgIDE3ICstLS0KPiA+ID4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jIHwgMTQ3ICsrKysrKysrLS0tLS0tLS0t LS0tLS0tLS0tLQo+ID4gPiAtLS0tCj4gPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDQyIGluc2VydGlv bnMoKyksIDEyMiBkZWxldGlvbnMoLSkKPiA+ID4gCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZWcuaAo+ID4gPiBpbmRleCBjNTljZmE4M2RiYWYuLjE4ZTI5OTFiMzc2ZCAxMDA2NDQKPiA+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPiA+IEBAIC00MjQxLDEzICs0MjQxLDkgQEAg ZW51bSB7Cj4gPiA+ICAvKiBCc3BlYyBjbGFpbXMgdGhvc2UgYXJlbid0IHNoaWZ0ZWQgYnV0IHN0 YXkgYXQgMHg2NDgwMCAqLwo+ID4gPiAgI2RlZmluZSBFRFBfUFNSX0lNUgkJCQlfTU1JTygweDY0 ODM0KQo+ID4gPiAgI2RlZmluZSBFRFBfUFNSX0lJUgkJCQlfTU1JTygweDY0ODM4KQo+ID4gPiAt I2RlZmluZSAgIEVEUF9QU1JfRVJST1Ioc2hpZnQpCQkJKDEgPDwgKChzaGlmdCkKPiA+ID4gKyAy KSkKPiA+ID4gLSNkZWZpbmUgICBFRFBfUFNSX1BPU1RfRVhJVChzaGlmdCkJCSgxIDw8ICgoc2hp ZnQpICsgMSkpCj4gPiA+IC0jZGVmaW5lICAgRURQX1BTUl9QUkVfRU5UUlkoc2hpZnQpCQkoMSA8 PCAoc2hpZnQpKQo+ID4gPiAtI2RlZmluZSAgIEVEUF9QU1JfVFJBTlNDT0RFUl9DX1NISUZUCQky NAo+ID4gPiAtI2RlZmluZSAgIEVEUF9QU1JfVFJBTlNDT0RFUl9CX1NISUZUCQkxNgo+ID4gPiAt I2RlZmluZSAgIEVEUF9QU1JfVFJBTlNDT0RFUl9BX1NISUZUCQk4Cj4gPiA+IC0jZGVmaW5lICAg RURQX1BTUl9UUkFOU0NPREVSX0VEUF9TSElGVAkJMAo+ID4gPiArI2RlZmluZSAgIEVEUF9QU1Jf RVJST1IJCQkJKDEgPDwgMikKPiA+ID4gKyNkZWZpbmUgICBFRFBfUFNSX1BPU1RfRVhJVAkJCSgx IDw8IDEpCj4gPiA+ICsjZGVmaW5lICAgRURQX1BTUl9QUkVfRU5UUlkJCQkoMSA8PCAwKQo+ID4g PiAgCj4gPiA+ICAjZGVmaW5lIEVEUF9QU1JfQVVYX0NUTAkJCQlfTU1JTyhkZXZfcHJpdi0KPiA+ ID4gPnBzcl9tbWlvX2Jhc2UgKyAweDEwKQo+ID4gPiAgI2RlZmluZSAgIEVEUF9QU1JfQVVYX0NU TF9USU1FX09VVF9NQVNLCQkoMyA8PCAyNikKPiA+ID4gQEAgLTQzMTIsMTIgKzQzMDgsNyBAQCBl bnVtIHsKPiA+ID4gICNkZWZpbmUgICBFRFBfUFNSMl9JRExFX0ZSQU1FX01BU0sJMHhmCj4gPiA+ ICAjZGVmaW5lICAgRURQX1BTUjJfSURMRV9GUkFNRV9TSElGVAkwCj4gPiA+ICAKPiA+ID4gLSNk ZWZpbmUgX1BTUl9FVkVOVF9UUkFOU19BCQkJMHg2MDg0OAo+ID4gPiAtI2RlZmluZSBfUFNSX0VW RU5UX1RSQU5TX0IJCQkweDYxODQ4Cj4gPiA+IC0jZGVmaW5lIF9QU1JfRVZFTlRfVFJBTlNfQwkJ CTB4NjI4NDgKPiA+ID4gLSNkZWZpbmUgX1BTUl9FVkVOVF9UUkFOU19ECQkJMHg2Mzg0OAo+ID4g PiAtI2RlZmluZSBfUFNSX0VWRU5UX1RSQU5TX0VEUAkJCTB4NkY4NDgKPiA+ID4gLSNkZWZpbmUg UFNSX0VWRU5UKHRyYW5zKQkJCV9NTUlPX1RSQU5TMih0cmFucywKPiA+ID4gX1BTUl9FVkVOVF9U UkFOU19BKQo+ID4gPiArI2RlZmluZSBQU1JfRVZFTlQJCQkJX01NSU8oMHg2Rjg0OCkKPiA+ID4g ICNkZWZpbmUgIFBTUl9FVkVOVF9QU1IyX1dEX1RJTUVSX0VYUElSRQkJKDEgPDwgMTcpCj4gPiA+ ICAjZGVmaW5lICBQU1JfRVZFTlRfUFNSMl9ESVNBQkxFRAkJKDEgPDwgMTYpCj4gPiA+ICAjZGVm aW5lICBQU1JfRVZFTlRfU1VfRElSVFlfRklGT19VTkRFUlJVTgkoMSA8PCAxNSkKPiA+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCj4gPiA+IGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMKPiA+ID4gaW5kZXggYmI5N2MxNjU3NDkzLi5iOTg0 ZTAwNWI3MmUgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bz ci5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCj4gPiA+IEBA IC04NCw0NiArODQsMTIgQEAgc3RhdGljIGJvb2wgaW50ZWxfcHNyMl9lbmFibGVkKHN0cnVjdAo+ ID4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ID4gIAl9Cj4gPiA+ICB9Cj4gPiA+ ICAKPiA+ID4gLXN0YXRpYyBpbnQgZWRwX3Bzcl9zaGlmdChlbnVtIHRyYW5zY29kZXIgY3B1X3Ry YW5zY29kZXIpCj4gPiA+IC17Cj4gPiA+IC0Jc3dpdGNoIChjcHVfdHJhbnNjb2Rlcikgewo+ID4g PiAtCWNhc2UgVFJBTlNDT0RFUl9BOgo+ID4gPiAtCQlyZXR1cm4gRURQX1BTUl9UUkFOU0NPREVS X0FfU0hJRlQ7Cj4gPiA+IC0JY2FzZSBUUkFOU0NPREVSX0I6Cj4gPiA+IC0JCXJldHVybiBFRFBf UFNSX1RSQU5TQ09ERVJfQl9TSElGVDsKPiA+ID4gLQljYXNlIFRSQU5TQ09ERVJfQzoKPiA+ID4g LQkJcmV0dXJuIEVEUF9QU1JfVFJBTlNDT0RFUl9DX1NISUZUOwo+ID4gPiAtCWRlZmF1bHQ6Cj4g PiA+IC0JCU1JU1NJTkdfQ0FTRShjcHVfdHJhbnNjb2Rlcik7Cj4gPiA+IC0JCS8qIGZhbGx0aHJv dWdoICovCj4gPiA+IC0JY2FzZSBUUkFOU0NPREVSX0VEUDoKPiA+ID4gLQkJcmV0dXJuIEVEUF9Q U1JfVFJBTlNDT0RFUl9FRFBfU0hJRlQ7Cj4gPiA+IC0JfQo+ID4gPiAtfQo+ID4gPiAtCj4gPiA+ ICB2b2lkIGludGVsX3Bzcl9pcnFfY29udHJvbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsIHUzMgo+ID4gPiBkZWJ1ZykKPiA+ID4gIHsKPiA+ID4gLQl1MzIgZGVidWdfbWFzaywg bWFzazsKPiA+ID4gLQllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXI7Cj4gPiA+IC0JdTMy IHRyYW5zY29kZXJzID0gQklUKFRSQU5TQ09ERVJfRURQKTsKPiA+ID4gLQo+ID4gPiAtCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCj4gPiA+IC0JCXRyYW5zY29kZXJzIHw9IEJJVChUUkFO U0NPREVSX0EpIHwKPiA+ID4gLQkJCSAgICAgICBCSVQoVFJBTlNDT0RFUl9CKSB8Cj4gPiA+IC0J CQkgICAgICAgQklUKFRSQU5TQ09ERVJfQyk7Cj4gPiA+IC0KPiA+ID4gLQlkZWJ1Z19tYXNrID0g MDsKPiA+ID4gLQltYXNrID0gMDsKPiA+ID4gLQlmb3JfZWFjaF9jcHVfdHJhbnNjb2Rlcl9tYXNr ZWQoZGV2X3ByaXYsIGNwdV90cmFuc2NvZGVyLAo+ID4gPiB0cmFuc2NvZGVycykgewo+ID4gPiAt CQlpbnQgc2hpZnQgPSBlZHBfcHNyX3NoaWZ0KGNwdV90cmFuc2NvZGVyKTsKPiA+ID4gLQo+ID4g PiAtCQltYXNrIHw9IEVEUF9QU1JfRVJST1Ioc2hpZnQpOwo+ID4gPiAtCQlkZWJ1Z19tYXNrIHw9 IEVEUF9QU1JfUE9TVF9FWElUKHNoaWZ0KSB8Cj4gPiA+IC0JCQkgICAgICBFRFBfUFNSX1BSRV9F TlRSWShzaGlmdCk7Cj4gPiA+IC0JfQo+ID4gPiArCXUzMiBtYXNrID0gRURQX1BTUl9FUlJPUjsK PiA+ID4gIAo+ID4gPiAgCWlmIChkZWJ1ZyAmIEk5MTVfUFNSX0RFQlVHX0lSUSkKPiA+ID4gLQkJ bWFzayB8PSBkZWJ1Z19tYXNrOwo+ID4gPiArCQltYXNrIHw9IEVEUF9QU1JfUE9TVF9FWElUIHwg RURQX1BTUl9QUkVfRU5UUlk7Cj4gPiA+ICAKPiA+ID4gIAlJOTE1X1dSSVRFKEVEUF9QU1JfSU1S LCB+bWFzayk7Cj4gPiA+ICB9Cj4gPiA+IEBAIC0xNjcsNjIgKzEzMyw0NyBAQCBzdGF0aWMgdm9p ZCBwc3JfZXZlbnRfcHJpbnQodTMyIHZhbCwgYm9vbAo+ID4gPiBwc3IyX2VuYWJsZWQpCj4gPiA+ ICAKPiA+ID4gIHZvaWQgaW50ZWxfcHNyX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgdTMyCj4gPiA+IHBzcl9paXIpCj4gPiA+ICB7Cj4gPiA+IC0JdTMyIHRy YW5zY29kZXJzID0gQklUKFRSQU5TQ09ERVJfRURQKTsKPiA+ID4gLQllbnVtIHRyYW5zY29kZXIg Y3B1X3RyYW5zY29kZXI7Cj4gPiA+IC0Ja3RpbWVfdCB0aW1lX25zID0gIGt0aW1lX2dldCgpOwo+ ID4gPiAtCXUzMiBtYXNrID0gMDsKPiA+ID4gKwlrdGltZV90IHRpbWVfbnMgPSBrdGltZV9nZXQo KTsKPiA+ID4gIAo+ID4gPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCj4gPiA+IC0J CXRyYW5zY29kZXJzIHw9IEJJVChUUkFOU0NPREVSX0EpIHwKPiA+ID4gLQkJCSAgICAgICBCSVQo VFJBTlNDT0RFUl9CKSB8Cj4gPiA+IC0JCQkgICAgICAgQklUKFRSQU5TQ09ERVJfQyk7Cj4gPiA+ IC0KPiA+ID4gLQlmb3JfZWFjaF9jcHVfdHJhbnNjb2Rlcl9tYXNrZWQoZGV2X3ByaXYsIGNwdV90 cmFuc2NvZGVyLAo+ID4gPiB0cmFuc2NvZGVycykgewo+ID4gPiAtCQlpbnQgc2hpZnQgPSBlZHBf cHNyX3NoaWZ0KGNwdV90cmFuc2NvZGVyKTsKPiA+ID4gLQo+ID4gPiAtCQlpZiAocHNyX2lpciAm IEVEUF9QU1JfRVJST1Ioc2hpZnQpKSB7Cj4gPiA+IC0JCQlEUk1fV0FSTigiW3RyYW5zY29kZXIg JXNdIFBTUiBhdXggZXJyb3JcbiIsCj4gPiA+IC0JCQkJIHRyYW5zY29kZXJfbmFtZShjcHVfdHJh bnNjb2RlcikpOwo+ID4gPiAtCj4gPiA+IC0JCQlkZXZfcHJpdi0+cHNyLmlycV9hdXhfZXJyb3Ig PSB0cnVlOwo+ID4gPiAtCj4gPiA+IC0JCQkvKgo+ID4gPiAtCQkJICogSWYgdGhpcyBpbnRlcnJ1 cHRpb24gaXMgbm90IG1hc2tlZCBpdCB3aWxsCj4gPiA+IGtlZXAKPiA+ID4gLQkJCSAqIGludGVy cnVwdGluZyBzbyBmYXN0IHRoYXQgaXQgcHJldmVudHMgdGhlCj4gPiA+IHNjaGVkdWxlZAo+ID4g PiAtCQkJICogd29yayB0byBydW4uCj4gPiA+IC0JCQkgKiBBbHNvIGFmdGVyIGEgUFNSIGVycm9y LCB3ZSBkb24ndCB3YW50IHRvIGFybQo+ID4gPiBQU1IKPiA+ID4gLQkJCSAqIGFnYWluIHNvIHdl IGRvbid0IGNhcmUgYWJvdXQgdW5tYXNrIHRoZQo+ID4gPiBpbnRlcnJ1cHRpb24KPiA+ID4gLQkJ CSAqIG9yIHVuc2V0IGlycV9hdXhfZXJyb3IuCj4gPiA+IC0JCQkgKi8KPiA+ID4gLQkJCW1hc2sg fD0gRURQX1BTUl9FUlJPUihzaGlmdCk7Cj4gPiA+IC0JCX0KPiA+ID4gKwlpZiAocHNyX2lpciAm IEVEUF9QU1JfRVJST1IpIHsKPiA+ID4gKwkJdTMyIG1hc2s7Cj4gPiA+ICAKPiA+ID4gLQkJaWYg KHBzcl9paXIgJiBFRFBfUFNSX1BSRV9FTlRSWShzaGlmdCkpIHsKPiA+ID4gLQkJCWRldl9wcml2 LT5wc3IubGFzdF9lbnRyeV9hdHRlbXB0ID0gdGltZV9uczsKPiA+ID4gLQkJCURSTV9ERUJVR19L TVMoIlt0cmFuc2NvZGVyICVzXSBQU1IgZW50cnkKPiA+ID4gYXR0ZW1wdCBpbiAyIHZibGFua3Nc biIsCj4gPiA+IC0JCQkJICAgICAgdHJhbnNjb2Rlcl9uYW1lKGNwdV90cmFuc2NvZGVyKSk7Cj4g PiA+IC0JCX0KPiA+ID4gKwkJRFJNX1dBUk4oIlt0cmFuc2NvZGVyICVzXSBQU1IgYXV4IGVycm9y XG4iLAo+ID4gPiArCQkJIHRyYW5zY29kZXJfbmFtZShUUkFOU0NPREVSX0VEUCkpOwo+ID4gPiAg Cj4gPiA+IC0JCWlmIChwc3JfaWlyICYgRURQX1BTUl9QT1NUX0VYSVQoc2hpZnQpKSB7Cj4gPiA+ IC0JCQlkZXZfcHJpdi0+cHNyLmxhc3RfZXhpdCA9IHRpbWVfbnM7Cj4gPiA+IC0JCQlEUk1fREVC VUdfS01TKCJbdHJhbnNjb2RlciAlc10gUFNSIGV4aXQKPiA+ID4gY29tcGxldGVkXG4iLAo+ID4g PiAtCQkJCSAgICAgIHRyYW5zY29kZXJfbmFtZShjcHVfdHJhbnNjb2RlcikpOwo+ID4gPiArCQlk ZXZfcHJpdi0+cHNyLmlycV9hdXhfZXJyb3IgPSB0cnVlOwo+ID4gPiAgCj4gPiA+IC0JCQlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7Cj4gPiA+IC0JCQkJdTMyIHZhbCA9Cj4gPiA+IEk5 MTVfUkVBRChQU1JfRVZFTlQoY3B1X3RyYW5zY29kZXIpKTsKPiA+ID4gLQkJCQlib29sIHBzcjJf ZW5hYmxlZCA9IGRldl9wcml2LQo+ID4gPiA+cHNyLnBzcjJfZW5hYmxlZDsKPiA+ID4gKwkJLyoK PiA+ID4gKwkJICogSWYgdGhpcyBpbnRlcnJ1cHRpb24gaXMgbm90IG1hc2tlZCBpdCB3aWxsIGtl ZXAKPiA+ID4gKwkJICogaW50ZXJydXB0aW5nIHNvIGZhc3QgdGhhdCBpdCBwcmV2ZW50cyB0aGUg c2NoZWR1bGVkCj4gPiA+ICsJCSAqIHdvcmsgdG8gcnVuLgo+ID4gPiArCQkgKiBBbHNvIGFmdGVy IGEgUFNSIGVycm9yLCB3ZSBkb24ndCB3YW50IHRvIGFybSBQU1IKPiA+ID4gKwkJICogYWdhaW4g c28gd2UgZG9uJ3QgY2FyZSBhYm91dCB1bm1hc2sgdGhlIGludGVycnVwdGlvbgo+ID4gPiArCQkg KiBvciB1bnNldCBpcnFfYXV4X2Vycm9yLgo+ID4gPiArCQkgKi8KPiA+ID4gKwkJbWFzayA9IEk5 MTVfUkVBRChFRFBfUFNSX0lNUikgfCBFRFBfUFNSX0VSUk9SOwo+ID4gPiArCQlJOTE1X1dSSVRF KEVEUF9QU1JfSU1SLCBtYXNrKTsKPiA+ID4gIAo+ID4gPiAtCQkJCUk5MTVfV1JJVEUoUFNSX0VW RU5UKGNwdV90cmFuc2NvZGVyKSwKPiA+ID4gdmFsKTsKPiA+ID4gLQkJCQlwc3JfZXZlbnRfcHJp bnQodmFsLCBwc3IyX2VuYWJsZWQpOwo+ID4gPiAtCQkJfQo+ID4gPiAtCQl9Cj4gPiA+ICsJCXNj aGVkdWxlX3dvcmsoJmRldl9wcml2LT5wc3Iud29yayk7Cj4gPiA+ICAJfQo+ID4gPiAgCj4gPiA+ IC0JaWYgKG1hc2spIHsKPiA+ID4gLQkJbWFzayB8PSBJOTE1X1JFQUQoRURQX1BTUl9JTVIpOwo+ ID4gPiAtCQlJOTE1X1dSSVRFKEVEUF9QU1JfSU1SLCBtYXNrKTsKPiA+ID4gKwlpZiAocHNyX2lp ciAmIEVEUF9QU1JfUFJFX0VOVFJZKSB7Cj4gPiA+ICsJCWRldl9wcml2LT5wc3IubGFzdF9lbnRy eV9hdHRlbXB0ID0gdGltZV9uczsKPiA+ID4gKwkJRFJNX0RFQlVHX0tNUygiW3RyYW5zY29kZXIg JXNdIFBTUiBlbnRyeSBhdHRlbXB0IGluIDIKPiA+ID4gdmJsYW5rc1xuIiwKPiA+ID4gKwkJCSAg ICAgIHRyYW5zY29kZXJfbmFtZShUUkFOU0NPREVSX0VEUCkpOwo+ID4gPiArCX0KPiA+ID4gIAo+ ID4gPiAtCQlzY2hlZHVsZV93b3JrKCZkZXZfcHJpdi0+cHNyLndvcmspOwo+ID4gPiArCWlmIChw c3JfaWlyICYgRURQX1BTUl9QT1NUX0VYSVQpIHsKPiA+ID4gKwkJRFJNX0RFQlVHX0tNUygiW3Ry YW5zY29kZXIgJXNdIFBTUiBleGl0IGNvbXBsZXRlZFxuIiwKPiA+ID4gKwkJCSAgICAgIHRyYW5z Y29kZXJfbmFtZShUUkFOU0NPREVSX0VEUCkpOwo+ID4gPiArCj4gPiA+ICsJCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDkpIHsKPiA+ID4gKwkJCXUzMiB2YWwgPSBJOTE1X1JFQUQoUFNSX0VW RU5UKTsKPiA+ID4gKwkJCWJvb2wgcHNyMl9lbmFibGVkID0gZGV2X3ByaXYtPnBzci5wc3IyX2Vu YWJsZWQ7Cj4gPiA+ICsKPiA+ID4gKwkJCUk5MTVfV1JJVEUoUFNSX0VWRU5ULCB2YWwpOwo+ID4g PiArCQkJcHNyX2V2ZW50X3ByaW50KHZhbCwgcHNyMl9lbmFibGVkKTsKPiA+ID4gKwkJfQo+ID4g PiAgCX0KPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiBAQCAtNjY5LDMwICs2MjAsMTAgQEAgc3RhdGlj IHZvaWQgaW50ZWxfcHNyX2FjdGl2YXRlKHN0cnVjdAo+ID4gPiBpbnRlbF9kcCAqaW50ZWxfZHAp Cj4gPiA+ICAJZGV2X3ByaXYtPnBzci5hY3RpdmUgPSB0cnVlOwo+ID4gPiAgfQo+ID4gPiAgCj4g PiA+IC1zdGF0aWMgaTkxNV9yZWdfdCBnZW45X2NoaWNrZW5fdHJhbnNfcmVnKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlCj4gPiA+ICpkZXZfcHJpdiwKPiA+ID4gLQkJCQkJIGVudW0gdHJhbnNjb2Rl cgo+ID4gPiBjcHVfdHJhbnNjb2RlcikKPiA+ID4gLXsKPiA+ID4gLQlzdGF0aWMgY29uc3QgaTkx NV9yZWdfdCByZWdzW10gPSB7Cj4gPiA+IC0JCVtUUkFOU0NPREVSX0FdID0gQ0hJQ0tFTl9UUkFO U19BLAo+ID4gPiAtCQlbVFJBTlNDT0RFUl9CXSA9IENISUNLRU5fVFJBTlNfQiwKPiA+ID4gLQkJ W1RSQU5TQ09ERVJfQ10gPSBDSElDS0VOX1RSQU5TX0MsCj4gPiA+IC0JCVtUUkFOU0NPREVSX0VE UF0gPSBDSElDS0VOX1RSQU5TX0VEUCwKPiA+ID4gLQl9Owo+ID4gPiAtCj4gPiA+IC0JV0FSTl9P TihJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSk7Cj4gPiA+IC0KPiA+ID4gLQlpZiAoV0FSTl9PTihj cHVfdHJhbnNjb2RlciA+PSBBUlJBWV9TSVpFKHJlZ3MpIHx8Cj4gPiA+IC0JCSAgICAhcmVnc1tj cHVfdHJhbnNjb2Rlcl0ucmVnKSkKPiA+ID4gLQkJY3B1X3RyYW5zY29kZXIgPSBUUkFOU0NPREVS X0E7Cj4gPiA+IC0KPiA+ID4gLQlyZXR1cm4gcmVnc1tjcHVfdHJhbnNjb2Rlcl07Cj4gPiA+IC19 Cj4gPiA+IC0KPiA+ID4gIHN0YXRpYyB2b2lkIGludGVsX3Bzcl9lbmFibGVfc291cmNlKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gPiA+ICAJCQkJICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlCj4gPiA+ICpjcnRjX3N0YXRlKQo+ID4gPiAgewo+ID4gPiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwo+ID4gPiAtCWVu dW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IGNydGNfc3RhdGUtPmNwdV90cmFuc2NvZGVy Owo+ID4gPiAgCXUzMiBtYXNrOwo+ID4gPiAgCj4gPiA+ICAJLyogT25seSBIU1cgYW5kIEJEVyBo YXZlIFBTUiBBVVggcmVnaXN0ZXJzIHRoYXQgbmVlZCB0byBiZQo+ID4gPiBzZXR1cC4gU0tMKwo+ ID4gPiBAQCAtNzAzLDEzICs2MzQsMTEgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2VuYWJsZV9z b3VyY2Uoc3RydWN0Cj4gPiA+IGludGVsX2RwICppbnRlbF9kcCwKPiA+ID4gIAo+ID4gPiAgCWlm IChkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCAmJiAoSVNfR0VOKGRldl9wcml2LCA5KSAmJgo+ ID4gPiAgCQkJCQkgICAhSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpKSB7Cj4gPiA+IC0JCWk5MTVf cmVnX3QgcmVnID0gZ2VuOV9jaGlja2VuX3RyYW5zX3JlZyhkZXZfcHJpdiwKPiA+ID4gLQkJCQkJ CQljcHVfdHJhbnNjb2RlcikKPiA+ID4gOwo+ID4gPiAtCQl1MzIgY2hpY2tlbiA9IEk5MTVfUkVB RChyZWcpOwo+ID4gPiArCQl1MzIgY2hpY2tlbiA9IEk5MTVfUkVBRChDSElDS0VOX1RSQU5TX0VE UCk7Cj4gPiA+ICAKPiA+ID4gIAkJY2hpY2tlbiB8PSBQU1IyX1ZTQ19FTkFCTEVfUFJPR19IRUFE RVIgfAo+ID4gPiAgCQkJICAgUFNSMl9BRERfVkVSVElDQUxfTElORV9DT1VOVDsKPiA+ID4gLQkJ STkxNV9XUklURShyZWcsIGNoaWNrZW4pOwo+ID4gPiArCQlJOTE1X1dSSVRFKENISUNLRU5fVFJB TlNfRURQLCBjaGlja2VuKTsKPiA+ID4gIAl9Cj4gPiA+ICAKPiA+ID4gIAkvKgo+ID4gPiBAQCAt MTIyMiw3ICsxMTUxLDcgQEAgdm9pZCBpbnRlbF9wc3JfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZQo+ID4gPiAqZGV2X3ByaXYpCj4gPiA+ICAJICogdG8gYXZvaWQgYW55IHJlbmRlcmluZyBw cm9ibGVtcy4KPiA+ID4gIAkgKi8KPiA+ID4gIAl2YWwgPSBJOTE1X1JFQUQoRURQX1BTUl9JSVIp Owo+ID4gPiAtCXZhbCAmPSBFRFBfUFNSX0VSUk9SKGVkcF9wc3Jfc2hpZnQoVFJBTlNDT0RFUl9F RFApKTsKPiA+ID4gKwl2YWwgJj0gRURQX1BTUl9FUlJPUjsKPiA+ID4gIAlpZiAodmFsKSB7Cj4g PiA+ICAJCURSTV9ERUJVR19LTVMoIlBTUiBpbnRlcnJ1cHRpb24gZXJyb3Igc2V0XG4iKTsKPiA+ ID4gIAkJZGV2X3ByaXYtPnBzci5zaW5rX25vdF9yZWxpYWJsZSA9IHRydWU7Cj4gPiA+IC0tIAo+ ID4gPiAyLjIxLjAKPiA+ID4gCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4