From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH v7 13/19] drm/i915/dp: Configure i915 Picture parameter Set registers during DSC enabling Date: Fri, 2 Nov 2018 14:07:33 -0700 Message-ID: <20181102210733.GN3481@intel.com> References: <20181102064659.8991-1-manasi.d.navare@intel.com> <20181102064659.8991-14-manasi.d.navare@intel.com> <20181102175253.GY9144@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20181102175253.GY9144@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Cc: intel-gfx@lists.freedesktop.org, Anusha Srivatsa , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBOb3YgMDIsIDIwMTggYXQgMDc6NTI6NTNQTSArMDIwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFRodSwgTm92IDAxLCAyMDE4IGF0IDExOjQ2OjUzUE0gLTA3MDAsIE1hbmFz aSBOYXZhcmUgd3JvdGU6Cj4gPiBBZnRlciBlbmNvZGVyLT5wcmVfZW5hYmxlKCkgaG9vaywgYWZ0 ZXIgbGluayB0cmFpbmluZyBzZXF1ZW5jZSBpcwo+ID4gY29tcGxldGVkLCBQUFMgcmVnaXN0ZXJz IGZvciBEU0MgZW5jb2RlciBhcmUgY29uZmlndXJlZCB1c2luZyB0aGUKPiA+IERTQyBzdGF0ZSBw YXJhbWV0ZXJzIGluIGludGVsX2NydGNfc3RhdGUgYXMgcGFydCBvZiBEU0MgZW5hYmxpbmcKPiA+ IHJvdXRpbmUgaW4gdGhlIHNvdXJjZS4gRFNDIGVuYWJsaW5nIHJvdXRpbmUgaXMgY2FsbGVkIGFm dGVyCj4gPiBlbmNvZGVyLT5wcmVfZW5hYmxlKCkgYmVmb3JlIGVuYmFsaW5nIHRoZSBwaXBlIGFu ZCBhZnRlcgo+ID4gY29tcHJlc3Npb24gaXMgZW5hYmxlZCBvbiB0aGUgc2luay4KPiA+IAo+ID4g djU6Cj4gPiAqIG1ha2UgY3J0Y19zdGF0ZSBjb25zdCAoVmlsbGUpCj4gPiB2NDoKPiA+ICogVXNl IGNwdV90cmFuc2NvZGVyIGluc3RlYWQgb2YgZW5jb2Rlci0+dHlwZSBmb3IgdXNpbmcgRURQIHRy YW5zY29kZXIKPiA+IERTQyByZWdpc3RlcnMoVmlsbGUpCj4gPiAqIEtlZXAgYWxsIFBTUyByZWdz IHRvZ2V0aGVyIChBbnVzaGEpCj4gPiAKPiA+IHYzOgo+ID4gKiBDb25maWd1cmUgUGljX3dpZHRo LzIgZm9yIGVhY2ggVkRTQyBlbmdpbmUgd2hlbiB0d28gVkRTQyBlbmdpbmVzIHBlciBwaXBlCj4g PiBhcmUgdXNlZCAoTWFuYXNpKQo+ID4gKiBBZGQgRFNDIHNsaWNlX3Jvd19wZXJfZnJhbWUgaW4g UFBTMTYgKE1hbmFzaSkKPiA+IAo+ID4gdjI6Cj4gPiAqIEVuYWJsZSBQRzIgcG93ZXIgd2VsbCBm b3IgVkRTQyBvbiBlRFAKPiA+IAo+ID4gQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBsaW51 eC5pbnRlbC5jb20+Cj4gPiBDYzogVmlsbGUgU3lyamFsYSA8dmlsbGUuc3lyamFsYUBsaW51eC5p bnRlbC5jb20+Cj4gPiBDYzogQW51c2hhIFNyaXZhdHNhIDxhbnVzaGEuc3JpdmF0c2FAaW50ZWwu Y29tPgo+ID4gU2lnbmVkLW9mZi1ieTogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGlu dGVsLmNvbT4KPiA+IFJldmlld2VkLWJ5OiBBbnVzaGEgU3JpdmF0c2EgPGFudXNoYS5zcml2YXRz YUBpbnRlbC5jb20+Cj4gPiAtLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o ICAgICAgfCAgIDIgKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8 ICAgNiArCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdmRzYy5jICAgIHwgNDE5ICsr KysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gIDMgZmlsZXMgY2hhbmdlZCwgNDI3IGluc2Vy dGlvbnMoKykKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiBpbmRleCBkNzc5N2E0 MWM2NDguLmYzNDdkMGQ3YjllYiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+ IEBAIC0zNDg1LDYgKzM0ODUsOCBAQCBleHRlcm4gdm9pZCBpbnRlbF9ycHNfbWFya19pbnRlcmFj dGl2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiA+ICAJCQkJICAgICAgIGJvb2wg aW50ZXJhY3RpdmUpOwo+ID4gIGV4dGVybiBib29sIGludGVsX3NldF9tZW1vcnlfY3hzcihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiAgCQkJCSAgYm9vbCBlbmFibGUpOwo+ ID4gK2V4dGVybiB2b2lkIGludGVsX2RzY19lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCj4gPiArCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSk7Cj4gPiAgCj4gPiAgaW50IGk5MTVfcmVnX3JlYWRfaW9jdGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSwKPiA+ICAJCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpOwo+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gaW5kZXggNDc3ZTUzYzM3MzUzLi4y ZTk2ZTIwMDQ4MzEgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ ID4gQEAgLTU0MTcsNiArNTQxNywxMiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmNvZGVyc19wcmVf ZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ICAKPiA+ICAJCWlmIChlbmNvZGVyLT5w cmVfZW5hYmxlKQo+ID4gIAkJCWVuY29kZXItPnByZV9lbmFibGUoZW5jb2RlciwgY3J0Y19zdGF0 ZSwgY29ubl9zdGF0ZSk7Cj4gPiArCj4gPiArCQkvKgo+ID4gKwkJICogRW5hYmxlIGFuZCBDb25m aWd1cmUgRGlzcGxheSBTdHJlYW0gQ29tcHJlc3Npb24gaW4gdGhlIHNvdXJjZQo+ID4gKwkJICog aWYgZW5hYmxlZCBpbiBpbnRlbF9jcnRjX3N0YXRlLgo+ID4gKwkJICovCj4gPiArCQlpbnRlbF9k c2NfZW5hYmxlKGVuY29kZXIsIGNydGNfc3RhdGUpOwo+IAo+IERpZG4ndCBJIGFzayBmb3IgdGhp cyB0byBiZSBtb3ZlZCBpbnRvIHRoZSBwcmVfZW5hYmxlIGhvb2s/Cj4gV2UgZGVmaW5pdGVseSBk b24ndCB3YW50IGl0IGhlcmUgYXMgaXQgd291bGQgYmUgYSB2ZXJ5IHN1cHJpc2luZyBwbGFjZQo+ IGZvciBzdHVmZiBsaWtlIHRoaXMuCgpJIHdpbGwgbW92ZSBpdCB0byBpbnRlbF9kZGlfcHJlX2Vu YWJsZV9kcCgpIGF0IHRoZSBlbmQgb2YgdGhlIGZ1bmN0aW9uLgoKTWFuYXNpCgo+IAo+ID4gIAl9 Cj4gPiAgfQo+ID4gIAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3Zkc2MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYwo+ID4gaW5kZXggYjkz Y2IzMjAyNmZhLi45ZjgwYTg2Zjk1ZGYgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF92ZHNjLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zk c2MuYwo+ID4gQEAgLTU4MCwzICs1ODAsNDIyIEBAIGludCBpbnRlbF9kcF9jb21wdXRlX2RzY19w YXJhbXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiA+ICAKPiA+ICAJcmV0dXJuIDA7Cj4g PiAgfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIGludGVsX2NvbmZpZ3VyZV9wcHNfZm9yX2RzY19l bmNvZGVyKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gKwkJCQkJCWNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ID4gK3sKPiA+ICsJc3RydWN0IGlu dGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4g PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+ YmFzZS5kZXYpOwo+ID4gKwljb25zdCBzdHJ1Y3QgZHJtX2RzY19jb25maWcgKnZkc2NfY2ZnID0g JmNydGNfc3RhdGUtPmRwX2RzY19jZmc7Cj4gPiArCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlw ZTsKPiA+ICsJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gY3J0Y19zdGF0ZS0+Y3B1 X3RyYW5zY29kZXI7Cj4gPiArCXUzMiBwcHNfdmFsID0gMDsKPiA+ICsJdTMyIHJjX2J1Zl90aHJl c2hfZHdvcmRbNF07Cj4gPiArCXUzMiByY19yYW5nZV9wYXJhbXNfZHdvcmRbOF07Cj4gPiArCXU4 IG51bV92ZHNjX2luc3RhbmNlcyA9IChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkg PyAyIDogMTsKPiA+ICsJaW50IGkgPSAwOwo+ID4gKwo+ID4gKwkvKiBQb3B1bGF0ZSBQSUNUVVJF X1BBUkFNRVRFUl9TRVRfMCByZWdpc3RlcnMgKi8KPiA+ICsJcHBzX3ZhbCA9IERTQ19WRVJfTUFK IHwgdmRzY19jZmctPmRzY192ZXJzaW9uX21pbm9yIDw8Cj4gPiArCQlEU0NfVkVSX01JTl9TSElG VCB8Cj4gPiArCQl2ZHNjX2NmZy0+Yml0c19wZXJfY29tcG9uZW50IDw8IERTQ19CUENfU0hJRlQg fAo+ID4gKwkJdmRzY19jZmctPmxpbmVfYnVmX2RlcHRoIDw8IERTQ19MSU5FX0JVRl9ERVBUSF9T SElGVDsKPiA+ICsJaWYgKHZkc2NfY2ZnLT5ibG9ja19wcmVkX2VuYWJsZSkKPiA+ICsJCXBwc192 YWwgfD0gRFNDX0JMT0NLX1BSRURJQ1RJT047Cj4gPiArCWVsc2UKPiA+ICsJCXBwc192YWwgJj0g fkRTQ19CTE9DS19QUkVESUNUSU9OOwo+ID4gKwlpZiAodmRzY19jZmctPmNvbnZlcnRfcmdiKQo+ ID4gKwkJcHBzX3ZhbCB8PSBEU0NfQ09MT1JfU1BBQ0VfQ09OVkVSU0lPTjsKPiA+ICsJZWxzZQo+ ID4gKwkJcHBzX3ZhbCAmPSB+RFNDX0NPTE9SX1NQQUNFX0NPTlZFUlNJT047Cj4gPiArCWlmICh2 ZHNjX2NmZy0+ZW5hYmxlNDIyKQo+ID4gKwkJcHBzX3ZhbCB8PSBEU0NfNDIyX0VOQUJMRTsKPiA+ ICsJZWxzZQo+ID4gKwkJcHBzX3ZhbCAmPSB+RFNDXzQyMl9FTkFCTEU7Cj4gPiArCWlmICh2ZHNj X2NmZy0+dmJyX2VuYWJsZSkKPiA+ICsJCXBwc192YWwgfD0gRFNDX1ZCUl9FTkFCTEU7Cj4gPiAr CWVsc2UKPiA+ICsJCXBwc192YWwgJj0gfkRTQ19WQlJfRU5BQkxFOwo+ID4gKwo+ID4gKwlEUk1f SU5GTygiUFBTMCA9IDB4JTA4eFxuIiwgcHBzX3ZhbCk7Cj4gPiArCSBpZiAoY3B1X3RyYW5zY29k ZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKPiA+ICsJCUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJFX1BB UkFNRVRFUl9TRVRfMCwgcHBzX3ZhbCk7Cj4gPiArCQkvKgo+ID4gKwkJICogSWYgMiBWRFNDIGlu c3RhbmNlcyBhcmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKPiA+ICsJCSAqIFZE U0MKPiA+ICsJCSAqLwo+ID4gKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0 KQo+ID4gKwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMCwgcHBzX3Zh bCk7Cj4gPiArCX0gZWxzZSB7Cj4gPiArCQlJOTE1X1dSSVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFS QU1FVEVSX1NFVF8wKHBpcGUpLCBwcHNfdmFsKTsKPiA+ICsJCWlmIChjcnRjX3N0YXRlLT5kc2Nf cGFyYW1zLmRzY19zcGxpdCkKPiA+ICsJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFS QU1FVEVSX1NFVF8wKHBpcGUpLAo+ID4gKwkJCQkgICBwcHNfdmFsKTsKPiA+ICsJfQo+ID4gKwo+ ID4gKwkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRFUl9TRVRfMSByZWdpc3RlcnMgKi8KPiA+ ICsJcHBzX3ZhbCA9IDA7Cj4gPiArCXBwc192YWwgfD0gRFNDX0JQUCh2ZHNjX2NmZy0+Yml0c19w ZXJfcGl4ZWwpOwo+ID4gKwlEUk1fSU5GTygiUFBTMSA9IDB4JTA4eFxuIiwgcHBzX3ZhbCk7Cj4g PiArCWlmIChjcHVfdHJhbnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCkgewo+ID4gKwkJSTkxNV9X UklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xLCBwcHNfdmFsKTsKPiA+ICsJCS8qCj4g PiArCQkgKiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9y IHNlY29uZAo+ID4gKwkJICogVkRTQwo+ID4gKwkJICovCj4gPiArCQlpZiAoY3J0Y19zdGF0ZS0+ ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCj4gPiArCQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFS QU1FVEVSX1NFVF8xLCBwcHNfdmFsKTsKPiA+ICsJfSBlbHNlIHsKPiA+ICsJCUk5MTVfV1JJVEUo SUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzEocGlwZSksIHBwc192YWwpOwo+ID4gKwkJ aWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQo+ID4gKwkJCUk5MTVfV1JJVEUo SUNMX0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzEocGlwZSksCj4gPiArCQkJCSAgIHBwc192 YWwpOwo+ID4gKwl9Cj4gPiArCj4gPiArCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1FVEVSX1NF VF8yIHJlZ2lzdGVycyAqLwo+ID4gKwlwcHNfdmFsID0gMDsKPiA+ICsJcHBzX3ZhbCB8PSBEU0Nf UElDX0hFSUdIVCh2ZHNjX2NmZy0+cGljX2hlaWdodCkgfAo+ID4gKwkJRFNDX1BJQ19XSURUSCh2 ZHNjX2NmZy0+cGljX3dpZHRoIC8gbnVtX3Zkc2NfaW5zdGFuY2VzKTsKPiA+ICsJRFJNX0lORk8o IlBQUzIgPSAweCUwOHhcbiIsIHBwc192YWwpOwo+ID4gKwlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJ TlRFTF9PVVRQVVRfRURQKSB7Cj4gPiArCQlJOTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVU RVJfU0VUXzIsIHBwc192YWwpOwo+ID4gKwkJLyoKPiA+ICsJCSAqIElmIDIgVkRTQyBpbnN0YW5j ZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCj4gPiArCQkgKiBWRFNDCj4g PiArCQkgKi8KPiA+ICsJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPiA+ ICsJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzIsIHBwc192YWwpOwo+ ID4gKwl9IGVsc2Ugewo+ID4gKwkJSTkxNV9XUklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRF Ul9TRVRfMihwaXBlKSwgcHBzX3ZhbCk7Cj4gPiArCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFt cy5kc2Nfc3BsaXQpCj4gPiArCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRF Ul9TRVRfMihwaXBlKSwKPiA+ICsJCQkJICAgcHBzX3ZhbCk7Cj4gPiArCX0KPiA+ICsKPiA+ICsJ LyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzMgcmVnaXN0ZXJzICovCj4gPiArCXBw c192YWwgPSAwOwo+ID4gKwlwcHNfdmFsIHw9IERTQ19TTElDRV9IRUlHSFQodmRzY19jZmctPnNs aWNlX2hlaWdodCkgfAo+ID4gKwkJRFNDX1NMSUNFX1dJRFRIKHZkc2NfY2ZnLT5zbGljZV93aWR0 aCk7Cj4gPiArCURSTV9JTkZPKCJQUFMzID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKPiA+ICsJaWYg KGNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQKSB7Cj4gPiArCQlJOTE1X1dSSVRFKERT Q0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzMsIHBwc192YWwpOwo+ID4gKwkJLyoKPiA+ICsJCSAq IElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25k Cj4gPiArCQkgKiBWRFNDCj4gPiArCQkgKi8KPiA+ICsJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFy YW1zLmRzY19zcGxpdCkKPiA+ICsJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJf U0VUXzMsIHBwc192YWwpOwo+ID4gKwl9IGVsc2Ugewo+ID4gKwkJSTkxNV9XUklURShJQ0xfRFND MF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMyhwaXBlKSwgcHBzX3ZhbCk7Cj4gPiArCQlpZiAoY3J0 Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCj4gPiArCQkJSTkxNV9XUklURShJQ0xfRFND MV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMyhwaXBlKSwKPiA+ICsJCQkJICAgcHBzX3ZhbCk7Cj4g PiArCX0KPiA+ICsKPiA+ICsJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzQgcmVn aXN0ZXJzICovCj4gPiArCXBwc192YWwgPSAwOwo+ID4gKwlwcHNfdmFsIHw9IERTQ19JTklUSUFM X1hNSVRfREVMQVkodmRzY19jZmctPmluaXRpYWxfeG1pdF9kZWxheSkgfAo+ID4gKwkJRFNDX0lO SVRJQUxfREVDX0RFTEFZKHZkc2NfY2ZnLT5pbml0aWFsX2RlY19kZWxheSk7Cj4gPiArCURSTV9J TkZPKCJQUFM0ID0gMHglMDh4XG4iLCBwcHNfdmFsKTsKPiA+ICsJaWYgKGNwdV90cmFuc2NvZGVy ID09IFRSQU5TQ09ERVJfRURQKSB7Cj4gPiArCQlJOTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJB TUVURVJfU0VUXzQsIHBwc192YWwpOwo+ID4gKwkJLyoKPiA+ICsJCSAqIElmIDIgVkRTQyBpbnN0 YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCj4gPiArCQkgKiBWRFND Cj4gPiArCQkgKi8KPiA+ICsJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkK PiA+ICsJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzQsIHBwc192YWwp Owo+ID4gKwl9IGVsc2Ugewo+ID4gKwkJSTkxNV9XUklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFN RVRFUl9TRVRfNChwaXBlKSwgcHBzX3ZhbCk7Cj4gPiArCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3Bh cmFtcy5kc2Nfc3BsaXQpCj4gPiArCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFN RVRFUl9TRVRfNChwaXBlKSwKPiA+ICsJCQkJICAgcHBzX3ZhbCk7Cj4gPiArCX0KPiA+ICsKPiA+ ICsJLyogUG9wdWxhdGUgUElDVFVSRV9QQVJBTUVURVJfU0VUXzUgcmVnaXN0ZXJzICovCj4gPiAr CXBwc192YWwgPSAwOwo+ID4gKwlwcHNfdmFsIHw9IERTQ19TQ0FMRV9JTkNfSU5UKHZkc2NfY2Zn LT5zY2FsZV9pbmNyZW1lbnRfaW50ZXJ2YWwpIHwKPiA+ICsJCURTQ19TQ0FMRV9ERUNfSU5UKHZk c2NfY2ZnLT5zY2FsZV9kZWNyZW1lbnRfaW50ZXJ2YWwpOwo+ID4gKwlEUk1fSU5GTygiUFBTNSA9 IDB4JTA4eFxuIiwgcHBzX3ZhbCk7Cj4gPiArCWlmIChjcHVfdHJhbnNjb2RlciA9PSBUUkFOU0NP REVSX0VEUCkgewo+ID4gKwkJSTkxNV9XUklURShEU0NBX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF81 LCBwcHNfdmFsKTsKPiA+ICsJCS8qCj4gPiArCQkgKiBJZiAyIFZEU0MgaW5zdGFuY2VzIGFyZSBu ZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNlY29uZAo+ID4gKwkJICogVkRTQwo+ID4gKwkJICov Cj4gPiArCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCj4gPiArCQkJSTkx NV9XUklURShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF81LCBwcHNfdmFsKTsKPiA+ICsJfSBl bHNlIHsKPiA+ICsJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVSRV9QQVJBTUVURVJfU0VUXzUo cGlwZSksIHBwc192YWwpOwo+ID4gKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3Nw bGl0KQo+ID4gKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUElDVFVSRV9QQVJBTUVURVJfU0VUXzUo cGlwZSksCj4gPiArCQkJCSAgIHBwc192YWwpOwo+ID4gKwl9Cj4gPiArCj4gPiArCS8qIFBvcHVs YXRlIFBJQ1RVUkVfUEFSQU1FVEVSX1NFVF82IHJlZ2lzdGVycyAqLwo+ID4gKwlwcHNfdmFsID0g MDsKPiA+ICsJcHBzX3ZhbCB8PSBEU0NfSU5JVElBTF9TQ0FMRV9WQUxVRSh2ZHNjX2NmZy0+aW5p dGlhbF9zY2FsZV92YWx1ZSkgfAo+ID4gKwkJRFNDX0ZJUlNUX0xJTkVfQlBHX09GRlNFVCh2ZHNj X2NmZy0+Zmlyc3RfbGluZV9icGdfb2Zmc2V0KSB8Cj4gPiArCQlEU0NfRkxBVE5FU1NfTUlOX1FQ KHZkc2NfY2ZnLT5mbGF0bmVzc19taW5fcXApIHwKPiA+ICsJCURTQ19GTEFUTkVTU19NQVhfUVAo dmRzY19jZmctPmZsYXRuZXNzX21heF9xcCk7Cj4gPiArCURSTV9JTkZPKCJQUFM2ID0gMHglMDh4 XG4iLCBwcHNfdmFsKTsKPiA+ICsJaWYgKGNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQ KSB7Cj4gPiArCQlJOTE1X1dSSVRFKERTQ0FfUElDVFVSRV9QQVJBTUVURVJfU0VUXzYsIHBwc192 YWwpOwo+ID4gKwkJLyoKPiA+ICsJCSAqIElmIDIgVkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwg Y29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCj4gPiArCQkgKiBWRFNDCj4gPiArCQkgKi8KPiA+ICsJ CWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPiA+ICsJCQlJOTE1X1dSSVRF KERTQ0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzYsIHBwc192YWwpOwo+ID4gKwl9IGVsc2Ugewo+ ID4gKwkJSTkxNV9XUklURShJQ0xfRFNDMF9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNihwaXBlKSwg cHBzX3ZhbCk7Cj4gPiArCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nfc3BsaXQpCj4g PiArCQkJSTkxNV9XUklURShJQ0xfRFNDMV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNihwaXBlKSwK PiA+ICsJCQkJICAgcHBzX3ZhbCk7Cj4gPiArCX0KPiA+ICsKPiA+ICsJLyogUG9wdWxhdGUgUElD VFVSRV9QQVJBTUVURVJfU0VUXzcgcmVnaXN0ZXJzICovCj4gPiArCXBwc192YWwgPSAwOwo+ID4g KwlwcHNfdmFsIHw9IERTQ19TTElDRV9CUEdfT0ZGU0VUKHZkc2NfY2ZnLT5zbGljZV9icGdfb2Zm c2V0KSB8Cj4gPiArCQlEU0NfTkZMX0JQR19PRkZTRVQodmRzY19jZmctPm5mbF9icGdfb2Zmc2V0 KTsKPiA+ICsJRFJNX0lORk8oIlBQUzcgPSAweCUwOHhcbiIsIHBwc192YWwpOwo+ID4gKwlpZiAo Y3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKPiA+ICsJCUk5MTVfV1JJVEUoRFND QV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfNywgcHBzX3ZhbCk7Cj4gPiArCQkvKgo+ID4gKwkJICog SWYgMiBWRFNDIGluc3RhbmNlcyBhcmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQK PiA+ICsJCSAqIFZEU0MKPiA+ICsJCSAqLwo+ID4gKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJh bXMuZHNjX3NwbGl0KQo+ID4gKwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9T RVRfNywgcHBzX3ZhbCk7Cj4gPiArCX0gZWxzZSB7Cj4gPiArCQlJOTE1X1dSSVRFKElDTF9EU0Mw X1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF83KHBpcGUpLCBwcHNfdmFsKTsKPiA+ICsJCWlmIChjcnRj X3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPiA+ICsJCQlJOTE1X1dSSVRFKElDTF9EU0Mx X1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF83KHBpcGUpLAo+ID4gKwkJCQkgICBwcHNfdmFsKTsKPiA+ ICsJfQo+ID4gKwo+ID4gKwkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRFUl9TRVRfOCByZWdp c3RlcnMgKi8KPiA+ICsJcHBzX3ZhbCA9IDA7Cj4gPiArCXBwc192YWwgfD0gRFNDX0ZJTkFMX09G RlNFVCh2ZHNjX2NmZy0+ZmluYWxfb2Zmc2V0KSB8Cj4gPiArCQlEU0NfSU5JVElBTF9PRkZTRVQo dmRzY19jZmctPmluaXRpYWxfb2Zmc2V0KTsKPiA+ICsJRFJNX0lORk8oIlBQUzggPSAweCUwOHhc biIsIHBwc192YWwpOwo+ID4gKwlpZiAoY3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFAp IHsKPiA+ICsJCUk5MTVfV1JJVEUoRFNDQV9QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOCwgcHBzX3Zh bCk7Cj4gPiArCQkvKgo+ID4gKwkJICogSWYgMiBWRFNDIGluc3RhbmNlcyBhcmUgbmVlZGVkLCBj b25maWd1cmUgUFBTIGZvciBzZWNvbmQKPiA+ICsJCSAqIFZEU0MKPiA+ICsJCSAqLwo+ID4gKwkJ aWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQo+ID4gKwkJCUk5MTVfV1JJVEUo RFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfOCwgcHBzX3ZhbCk7Cj4gPiArCX0gZWxzZSB7Cj4g PiArCQlJOTE1X1dSSVRFKElDTF9EU0MwX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF84KHBpcGUpLCBw cHNfdmFsKTsKPiA+ICsJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPiA+ ICsJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF84KHBpcGUpLAo+ ID4gKwkJCQkgICBwcHNfdmFsKTsKPiA+ICsJfQo+ID4gKwo+ID4gKwkvKiBQb3B1bGF0ZSBQSUNU VVJFX1BBUkFNRVRFUl9TRVRfOSByZWdpc3RlcnMgKi8KPiA+ICsJcHBzX3ZhbCA9IDA7Cj4gPiAr CXBwc192YWwgfD0gRFNDX1JDX01PREVMX1NJWkUoRFNDX1JDX01PREVMX1NJWkVfQ09OU1QpIHwK PiA+ICsJCURTQ19SQ19FREdFX0ZBQ1RPUihEU0NfUkNfRURHRV9GQUNUT1JfQ09OU1QpOwo+ID4g KwlEUk1fSU5GTygiUFBTOSA9IDB4JTA4eFxuIiwgcHBzX3ZhbCk7Cj4gPiArCWlmIChjcHVfdHJh bnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCkgewo+ID4gKwkJSTkxNV9XUklURShEU0NBX1BJQ1RV UkVfUEFSQU1FVEVSX1NFVF85LCBwcHNfdmFsKTsKPiA+ICsJCS8qCj4gPiArCQkgKiBJZiAyIFZE U0MgaW5zdGFuY2VzIGFyZSBuZWVkZWQsIGNvbmZpZ3VyZSBQUFMgZm9yIHNlY29uZAo+ID4gKwkJ ICogVkRTQwo+ID4gKwkJICovCj4gPiArCQlpZiAoY3J0Y19zdGF0ZS0+ZHNjX3BhcmFtcy5kc2Nf c3BsaXQpCj4gPiArCQkJSTkxNV9XUklURShEU0NDX1BJQ1RVUkVfUEFSQU1FVEVSX1NFVF85LCBw cHNfdmFsKTsKPiA+ICsJfSBlbHNlIHsKPiA+ICsJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElDVFVS RV9QQVJBTUVURVJfU0VUXzkocGlwZSksIHBwc192YWwpOwo+ID4gKwkJaWYgKGNydGNfc3RhdGUt PmRzY19wYXJhbXMuZHNjX3NwbGl0KQo+ID4gKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUElDVFVS RV9QQVJBTUVURVJfU0VUXzkocGlwZSksCj4gPiArCQkJCSAgIHBwc192YWwpOwo+ID4gKwl9Cj4g PiArCj4gPiArCS8qIFBvcHVsYXRlIFBJQ1RVUkVfUEFSQU1FVEVSX1NFVF8xMCByZWdpc3RlcnMg Ki8KPiA+ICsJcHBzX3ZhbCA9IDA7Cj4gPiArCXBwc192YWwgfD0gRFNDX1JDX1FVQU5UX0lOQ19M SU1JVDAodmRzY19jZmctPnJjX3F1YW50X2luY3JfbGltaXQwKSB8Cj4gPiArCQlEU0NfUkNfUVVB TlRfSU5DX0xJTUlUMSh2ZHNjX2NmZy0+cmNfcXVhbnRfaW5jcl9saW1pdDEpIHwKPiA+ICsJCURT Q19SQ19UQVJHRVRfT0ZGX0hJR0goRFNDX1JDX1RHVF9PRkZTRVRfSElfQ09OU1QpIHwKPiA+ICsJ CURTQ19SQ19UQVJHRVRfT0ZGX0xPVyhEU0NfUkNfVEdUX09GRlNFVF9MT19DT05TVCk7Cj4gPiAr CURSTV9JTkZPKCJQUFMxMCA9IDB4JTA4eFxuIiwgcHBzX3ZhbCk7Cj4gPiArCWlmIChjcHVfdHJh bnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCkgewo+ID4gKwkJSTkxNV9XUklURShEU0NBX1BJQ1RV UkVfUEFSQU1FVEVSX1NFVF8xMCwgcHBzX3ZhbCk7Cj4gPiArCQkvKgo+ID4gKwkJICogSWYgMiBW RFNDIGluc3RhbmNlcyBhcmUgbmVlZGVkLCBjb25maWd1cmUgUFBTIGZvciBzZWNvbmQKPiA+ICsJ CSAqIFZEU0MKPiA+ICsJCSAqLwo+ID4gKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNj X3NwbGl0KQo+ID4gKwkJCUk5MTVfV1JJVEUoRFNDQ19QSUNUVVJFX1BBUkFNRVRFUl9TRVRfMTAs IHBwc192YWwpOwo+ID4gKwl9IGVsc2Ugewo+ID4gKwkJSTkxNV9XUklURShJQ0xfRFNDMF9QSUNU VVJFX1BBUkFNRVRFUl9TRVRfMTAocGlwZSksIHBwc192YWwpOwo+ID4gKwkJaWYgKGNydGNfc3Rh dGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0KQo+ID4gKwkJCUk5MTVfV1JJVEUoSUNMX0RTQzFfUElD VFVSRV9QQVJBTUVURVJfU0VUXzEwKHBpcGUpLAo+ID4gKwkJCQkgICBwcHNfdmFsKTsKPiA+ICsJ fQo+ID4gKwo+ID4gKwkvKiBQb3B1bGF0ZSBQaWN0dXJlIHBhcmFtZXRlciBzZXQgMTYgKi8KPiA+ ICsJcHBzX3ZhbCA9IDA7Cj4gPiArCXBwc192YWwgfD0gRFNDX1NMSUNFX0NIVU5LX1NJWkUodmRz Y19jZmctPnNsaWNlX2NodW5rX3NpemUpIHwKPiA+ICsJCURTQ19TTElDRV9QRVJfTElORSgodmRz Y19jZmctPnBpY193aWR0aCAvIG51bV92ZHNjX2luc3RhbmNlcykgLwo+ID4gKwkJCQkgICB2ZHNj X2NmZy0+c2xpY2Vfd2lkdGgpIHwKPiA+ICsJCURTQ19TTElDRV9ST1dfUEVSX0ZSQU1FKHZkc2Nf Y2ZnLT5waWNfaGVpZ2h0IC8KPiA+ICsJCQkJCXZkc2NfY2ZnLT5zbGljZV9oZWlnaHQpOwo+ID4g KwlEUk1fSU5GTygiUFBTMTYgPSAweCUwOHhcbiIsIHBwc192YWwpOwo+ID4gKwlpZiAoY3B1X3Ry YW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKPiA+ICsJCUk5MTVfV1JJVEUoRFNDQV9QSUNU VVJFX1BBUkFNRVRFUl9TRVRfMTYsIHBwc192YWwpOwo+ID4gKwkJLyoKPiA+ICsJCSAqIElmIDIg VkRTQyBpbnN0YW5jZXMgYXJlIG5lZWRlZCwgY29uZmlndXJlIFBQUyBmb3Igc2Vjb25kCj4gPiAr CQkgKiBWRFNDCj4gPiArCQkgKi8KPiA+ICsJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRz Y19zcGxpdCkKPiA+ICsJCQlJOTE1X1dSSVRFKERTQ0NfUElDVFVSRV9QQVJBTUVURVJfU0VUXzE2 LCBwcHNfdmFsKTsKPiA+ICsJfSBlbHNlIHsKPiA+ICsJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUElD VFVSRV9QQVJBTUVURVJfU0VUXzE2KHBpcGUpLCBwcHNfdmFsKTsKPiA+ICsJCWlmIChjcnRjX3N0 YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkKPiA+ICsJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1BJ Q1RVUkVfUEFSQU1FVEVSX1NFVF8xNihwaXBlKSwKPiA+ICsJCQkJICAgcHBzX3ZhbCk7Cj4gPiAr CX0KPiA+ICsKPiA+ICsJLyogUG9wdWxhdGUgdGhlIFJDX0JVRl9USFJFU0ggcmVnaXN0ZXJzICov Cj4gPiArCW1lbXNldChyY19idWZfdGhyZXNoX2R3b3JkLCAwLCBzaXplb2YocmNfYnVmX3RocmVz aF9kd29yZCkpOwo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgRFNDX05VTV9CVUZfUkFOR0VTIC0gMTsg aSsrKSB7Cj4gPiArCQlyY19idWZfdGhyZXNoX2R3b3JkW2kvNF0gfD0gKHUzMikodmRzY19jZmct PnJjX2J1Zl90aHJlc2hbaV0gPDwKPiA+ICsJCQkJCQkgIEJJVFNfUEVSX0JZVEUgKiAoaSAlIDQp KTsKPiA+ICsJCURSTV9JTkZPKCIgUkNfQlVGX1RIUkVTSCVkID0gMHglMDh4XG4iLCBpLAo+ID4g KwkJCSByY19idWZfdGhyZXNoX2R3b3JkW2kvNF0pOwo+ID4gKwl9Cj4gPiArCWlmIChjcHVfdHJh bnNjb2RlciA9PSBUUkFOU0NPREVSX0VEUCkgewo+ID4gKwkJSTkxNV9XUklURShEU0NBX1JDX0JV Rl9USFJFU0hfMCwgcmNfYnVmX3RocmVzaF9kd29yZFswXSk7Cj4gPiArCQlJOTE1X1dSSVRFKERT Q0FfUkNfQlVGX1RIUkVTSF8wX1VEVywgcmNfYnVmX3RocmVzaF9kd29yZFsxXSk7Cj4gPiArCQlJ OTE1X1dSSVRFKERTQ0FfUkNfQlVGX1RIUkVTSF8xLCByY19idWZfdGhyZXNoX2R3b3JkWzJdKTsK PiA+ICsJCUk5MTVfV1JJVEUoRFNDQV9SQ19CVUZfVEhSRVNIXzFfVURXLCByY19idWZfdGhyZXNo X2R3b3JkWzNdKTsKPiA+ICsJCWlmIChjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmRzY19zcGxpdCkg ewo+ID4gKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19CVUZfVEhSRVNIXzAsCj4gPiArCQkJCSAgIHJj X2J1Zl90aHJlc2hfZHdvcmRbMF0pOwo+ID4gKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19CVUZfVEhS RVNIXzBfVURXLAo+ID4gKwkJCQkgICByY19idWZfdGhyZXNoX2R3b3JkWzFdKTsKPiA+ICsJCQlJ OTE1X1dSSVRFKERTQ0NfUkNfQlVGX1RIUkVTSF8xLAo+ID4gKwkJCQkgICByY19idWZfdGhyZXNo X2R3b3JkWzJdKTsKPiA+ICsJCQlJOTE1X1dSSVRFKERTQ0NfUkNfQlVGX1RIUkVTSF8xX1VEVywK PiA+ICsJCQkJICAgcmNfYnVmX3RocmVzaF9kd29yZFszXSk7Cj4gPiArCQl9Cj4gPiArCX0gZWxz ZSB7Cj4gPiArCQlJOTE1X1dSSVRFKElDTF9EU0MwX1JDX0JVRl9USFJFU0hfMChwaXBlKSwKPiA+ ICsJCQkgICByY19idWZfdGhyZXNoX2R3b3JkWzBdKTsKPiA+ICsJCUk5MTVfV1JJVEUoSUNMX0RT QzBfUkNfQlVGX1RIUkVTSF8wX1VEVyhwaXBlKSwKPiA+ICsJCQkgICByY19idWZfdGhyZXNoX2R3 b3JkWzFdKTsKPiA+ICsJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNfQlVGX1RIUkVTSF8xKHBpcGUp LAo+ID4gKwkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbMl0pOwo+ID4gKwkJSTkxNV9XUklURShJ Q0xfRFNDMF9SQ19CVUZfVEhSRVNIXzFfVURXKHBpcGUpLAo+ID4gKwkJCSAgIHJjX2J1Zl90aHJl c2hfZHdvcmRbM10pOwo+ID4gKwkJaWYgKGNydGNfc3RhdGUtPmRzY19wYXJhbXMuZHNjX3NwbGl0 KSB7Cj4gPiArCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19CVUZfVEhSRVNIXzAocGlwZSksCj4g PiArCQkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbMF0pOwo+ID4gKwkJCUk5MTVfV1JJVEUoSUNM X0RTQzFfUkNfQlVGX1RIUkVTSF8wX1VEVyhwaXBlKSwKPiA+ICsJCQkJICAgcmNfYnVmX3RocmVz aF9kd29yZFsxXSk7Cj4gPiArCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19CVUZfVEhSRVNIXzEo cGlwZSksCj4gPiArCQkJCSAgIHJjX2J1Zl90aHJlc2hfZHdvcmRbMl0pOwo+ID4gKwkJCUk5MTVf V1JJVEUoSUNMX0RTQzFfUkNfQlVGX1RIUkVTSF8xX1VEVyhwaXBlKSwKPiA+ICsJCQkJICAgcmNf YnVmX3RocmVzaF9kd29yZFszXSk7Cj4gPiArCQl9Cj4gPiArCX0KPiA+ICsKPiA+ICsJLyogUG9w dWxhdGUgdGhlIFJDX1JBTkdFX1BBUkFNRVRFUlMgcmVnaXN0ZXJzICovCj4gPiArCW1lbXNldChy Y19yYW5nZV9wYXJhbXNfZHdvcmQsIDAsIHNpemVvZihyY19yYW5nZV9wYXJhbXNfZHdvcmQpKTsK PiA+ICsJZm9yIChpID0gMDsgaSA8IERTQ19OVU1fQlVGX1JBTkdFUzsgaSsrKSB7Cj4gPiArCQly Y19yYW5nZV9wYXJhbXNfZHdvcmRbaS8yXSB8PSAodTMyKSgoKHZkc2NfY2ZnLT5yY19yYW5nZV9w YXJhbXNbaV0ucmFuZ2VfYnBnX29mZnNldCA8PAo+ID4gKwkJCQkJCSAgICAgIFJDX0JQR19PRkZT RVRfU0hJRlQpIHwKPiA+ICsJCQkJCQkgICAgICh2ZHNjX2NmZy0+cmNfcmFuZ2VfcGFyYW1zW2ld LnJhbmdlX21heF9xcCA8PAo+ID4gKwkJCQkJCSAgICAgIFJDX01BWF9RUF9TSElGVCkgfAo+ID4g KwkJCQkJCSAgICAgKHZkc2NfY2ZnLT5yY19yYW5nZV9wYXJhbXNbaV0ucmFuZ2VfbWluX3FwIDw8 Cj4gPiArCQkJCQkJICAgICAgUkNfTUlOX1FQX1NISUZUKSkgPDwgMTYgKiAoaSAlIDIpKTsKPiA+ ICsJCURSTV9JTkZPKCIgUkNfUkFOR0VfUEFSQU1fJWQgPSAweCUwOHhcbiIsIGksCj4gPiArCQkJ IHJjX3JhbmdlX3BhcmFtc19kd29yZFtpLzJdKTsKPiA+ICsJfQo+ID4gKwlpZiAoY3B1X3RyYW5z Y29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKPiA+ICsJCUk5MTVfV1JJVEUoRFNDQV9SQ19SQU5H RV9QQVJBTUVURVJTXzAsCj4gPiArCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzBdKTsKPiA+ ICsJCUk5MTVfV1JJVEUoRFNDQV9SQ19SQU5HRV9QQVJBTUVURVJTXzBfVURXLAo+ID4gKwkJCSAg IHJjX3JhbmdlX3BhcmFtc19kd29yZFsxXSk7Cj4gPiArCQlJOTE1X1dSSVRFKERTQ0FfUkNfUkFO R0VfUEFSQU1FVEVSU18xLAo+ID4gKwkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFsyXSk7Cj4g PiArCQlJOTE1X1dSSVRFKERTQ0FfUkNfUkFOR0VfUEFSQU1FVEVSU18xX1VEVywKPiA+ICsJCQkg ICByY19yYW5nZV9wYXJhbXNfZHdvcmRbM10pOwo+ID4gKwkJSTkxNV9XUklURShEU0NBX1JDX1JB TkdFX1BBUkFNRVRFUlNfMiwKPiA+ICsJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbNF0pOwo+ ID4gKwkJSTkxNV9XUklURShEU0NBX1JDX1JBTkdFX1BBUkFNRVRFUlNfMl9VRFcsCj4gPiArCQkJ ICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzVdKTsKPiA+ICsJCUk5MTVfV1JJVEUoRFNDQV9SQ19S QU5HRV9QQVJBTUVURVJTXzMsCj4gPiArCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzZdKTsK PiA+ICsJCUk5MTVfV1JJVEUoRFNDQV9SQ19SQU5HRV9QQVJBTUVURVJTXzNfVURXLAo+ID4gKwkJ CSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs3XSk7Cj4gPiArCQlpZiAoY3J0Y19zdGF0ZS0+ZHNj X3BhcmFtcy5kc2Nfc3BsaXQpIHsKPiA+ICsJCQlJOTE1X1dSSVRFKERTQ0NfUkNfUkFOR0VfUEFS QU1FVEVSU18wLAo+ID4gKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbMF0pOwo+ID4gKwkJ CUk5MTVfV1JJVEUoRFNDQ19SQ19SQU5HRV9QQVJBTUVURVJTXzBfVURXLAo+ID4gKwkJCQkgICBy Y19yYW5nZV9wYXJhbXNfZHdvcmRbMV0pOwo+ID4gKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19SQU5H RV9QQVJBTUVURVJTXzEsCj4gPiArCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFsyXSk7Cj4g PiArCQkJSTkxNV9XUklURShEU0NDX1JDX1JBTkdFX1BBUkFNRVRFUlNfMV9VRFcsCj4gPiArCQkJ CSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFszXSk7Cj4gPiArCQkJSTkxNV9XUklURShEU0NDX1JD X1JBTkdFX1BBUkFNRVRFUlNfMiwKPiA+ICsJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzRd KTsKPiA+ICsJCQlJOTE1X1dSSVRFKERTQ0NfUkNfUkFOR0VfUEFSQU1FVEVSU18yX1VEVywKPiA+ ICsJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzVdKTsKPiA+ICsJCQlJOTE1X1dSSVRFKERT Q0NfUkNfUkFOR0VfUEFSQU1FVEVSU18zLAo+ID4gKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdv cmRbNl0pOwo+ID4gKwkJCUk5MTVfV1JJVEUoRFNDQ19SQ19SQU5HRV9QQVJBTUVURVJTXzNfVURX LAo+ID4gKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbN10pOwo+ID4gKwkJfQo+ID4gKwl9 IGVsc2Ugewo+ID4gKwkJSTkxNV9XUklURShJQ0xfRFNDMF9SQ19SQU5HRV9QQVJBTUVURVJTXzAo cGlwZSksCj4gPiArCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzBdKTsKPiA+ICsJCUk5MTVf V1JJVEUoSUNMX0RTQzBfUkNfUkFOR0VfUEFSQU1FVEVSU18wX1VEVyhwaXBlKSwKPiA+ICsJCQkg ICByY19yYW5nZV9wYXJhbXNfZHdvcmRbMV0pOwo+ID4gKwkJSTkxNV9XUklURShJQ0xfRFNDMF9S Q19SQU5HRV9QQVJBTUVURVJTXzEocGlwZSksCj4gPiArCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3 b3JkWzJdKTsKPiA+ICsJCUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNfUkFOR0VfUEFSQU1FVEVSU18x X1VEVyhwaXBlKSwKPiA+ICsJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbM10pOwo+ID4gKwkJ STkxNV9XUklURShJQ0xfRFNDMF9SQ19SQU5HRV9QQVJBTUVURVJTXzIocGlwZSksCj4gPiArCQkJ ICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzRdKTsKPiA+ICsJCUk5MTVfV1JJVEUoSUNMX0RTQzBf UkNfUkFOR0VfUEFSQU1FVEVSU18yX1VEVyhwaXBlKSwKPiA+ICsJCQkgICByY19yYW5nZV9wYXJh bXNfZHdvcmRbNV0pOwo+ID4gKwkJSTkxNV9XUklURShJQ0xfRFNDMF9SQ19SQU5HRV9QQVJBTUVU RVJTXzMocGlwZSksCj4gPiArCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzZdKTsKPiA+ICsJ CUk5MTVfV1JJVEUoSUNMX0RTQzBfUkNfUkFOR0VfUEFSQU1FVEVSU18zX1VEVyhwaXBlKSwKPiA+ ICsJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbN10pOwo+ID4gKwkJaWYgKGNydGNfc3RhdGUt PmRzY19wYXJhbXMuZHNjX3NwbGl0KSB7Cj4gPiArCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19S QU5HRV9QQVJBTUVURVJTXzAocGlwZSksCj4gPiArCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29y ZFswXSk7Cj4gPiArCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19SQU5HRV9QQVJBTUVURVJTXzBf VURXKHBpcGUpLAo+ID4gKwkJCQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbMV0pOwo+ID4gKwkJ CUk5MTVfV1JJVEUoSUNMX0RTQzFfUkNfUkFOR0VfUEFSQU1FVEVSU18xKHBpcGUpLAo+ID4gKwkJ CQkgICByY19yYW5nZV9wYXJhbXNfZHdvcmRbMl0pOwo+ID4gKwkJCUk5MTVfV1JJVEUoSUNMX0RT QzFfUkNfUkFOR0VfUEFSQU1FVEVSU18xX1VEVyhwaXBlKSwKPiA+ICsJCQkJICAgcmNfcmFuZ2Vf cGFyYW1zX2R3b3JkWzNdKTsKPiA+ICsJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1JDX1JBTkdFX1BB UkFNRVRFUlNfMihwaXBlKSwKPiA+ICsJCQkJICAgcmNfcmFuZ2VfcGFyYW1zX2R3b3JkWzRdKTsK PiA+ICsJCQlJOTE1X1dSSVRFKElDTF9EU0MxX1JDX1JBTkdFX1BBUkFNRVRFUlNfMl9VRFcocGlw ZSksCj4gPiArCQkJCSAgIHJjX3JhbmdlX3BhcmFtc19kd29yZFs1XSk7Cj4gPiArCQkJSTkxNV9X UklURShJQ0xfRFNDMV9SQ19SQU5HRV9QQVJBTUVURVJTXzMocGlwZSksCj4gPiArCQkJCSAgIHJj X3JhbmdlX3BhcmFtc19kd29yZFs2XSk7Cj4gPiArCQkJSTkxNV9XUklURShJQ0xfRFNDMV9SQ19S QU5HRV9QQVJBTUVURVJTXzNfVURXKHBpcGUpLAo+ID4gKwkJCQkgICByY19yYW5nZV9wYXJhbXNf ZHdvcmRbN10pOwo+ID4gKwkJfQo+ID4gKwl9Cj4gPiArfQo+ID4gKwo+ID4gK3ZvaWQgaW50ZWxf ZHNjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICsJCSAgICAgIGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ID4gK3sKPiA+ICsKPiA+ ICsJaWYgKCFjcnRjX3N0YXRlLT5kc2NfcGFyYW1zLmNvbXByZXNzaW9uX2VuYWJsZSkKPiA+ICsJ CXJldHVybjsKPiA+ICsKPiA+ICsJaW50ZWxfY29uZmlndXJlX3Bwc19mb3JfZHNjX2VuY29kZXIo ZW5jb2RlciwgY3J0Y19zdGF0ZSk7Cj4gPiArCj4gPiArCXJldHVybjsKPiA+ICt9Cj4gPiAtLSAK PiA+IDIuMTguMAo+IAo+IC0tIAo+IFZpbGxlIFN5cmrDpGzDpAo+IEludGVsCj4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0Cj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QK ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=