From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH 10/23] drm/i915/dp: Allow big joiner modes in intel_dp_mode_valid() Date: Wed, 25 Sep 2019 15:09:35 -0700 Message-ID: <20190925220935.GA22579@intel.com> References: <20190920114235.22411-1-maarten.lankhorst@linux.intel.com> <20190920114235.22411-10-maarten.lankhorst@linux.intel.com> <20190925053039.GO1869@mdroper-desk1.amr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 766CF6FC1A for ; Wed, 25 Sep 2019 22:08:05 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190925053039.GO1869@mdroper-desk1.amr.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBTZXAgMjQsIDIwMTkgYXQgMTA6MzA6MzlQTSAtMDcwMCwgTWF0dCBSb3BlciB3cm90 ZToKPiBPbiBGcmksIFNlcCAyMCwgMjAxOSBhdCAwMTo0MjoyMlBNICswMjAwLCBNYWFydGVuIExh bmtob3JzdCB3cm90ZToKPiA+IFNtYWxsIGNoYW5nZXMgdG8gaW50ZWxfZHBfbW9kZV92YWxpZCgp LCBhbGxvdyBsaXN0aW5nIG1vZGVzIHRoYXQKPiA+IGNhbiBvbmx5IGJlIHN1cHBvcnRlZCBpbiB0 aGUgYmlnam9pbmVyIGNvbmZpZ3VyYXRpb24sIHdoaWNoIGlzCj4gPiBub3Qgc3VwcG9ydGVkIHll dC4KPiA+IAo+ID4gQWxzbyB1bmV4cG9ydCBhIGZldyBmdW5jdGlvbnMgb25seSB1c2VkIGludGVy bmFsbHkgaW4gaW50ZWxfZHAuYwo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmto b3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+ID4gLS0tCj4gPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jIHwgOTggKysrKysrKysrKysrKysr KysrKy0tLS0tLQo+ID4gIDEgZmlsZSBjaGFuZ2VkLCA3NSBpbnNlcnRpb25zKCspLCAyMyBkZWxl dGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+ ID4gaW5kZXggMmZjZWI3MWY3ZjcwLi4wNDZlMTY2MmQxZTMgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+ID4gQEAgLTI0Nyw3ICsyNDcsNyBAQCBpbnRl bF9kcF9tYXhfZGF0YV9yYXRlKGludCBtYXhfbGlua19jbG9jaywgaW50IG1heF9sYW5lcykKPiA+ ICB9Cj4gPiAgCj4gPiAgc3RhdGljIGludAo+ID4gLWludGVsX2RwX2Rvd25zdHJlYW1fbWF4X2Rv dGNsb2NrKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiAraW50ZWxfZHBfZG93bnN0cmVh bV9tYXhfZG90Y2xvY2soc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgYm9vbCBhbGxvd19iaWdq b2luZXIpCj4gPiAgewo+ID4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdf cG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiA+ICAJc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIgPSAmaW50ZWxfZGlnX3BvcnQtPmJhc2U7Cj4gPiBAQCAtMjU3LDYgKzI1Nyw5 IEBAIGludGVsX2RwX2Rvd25zdHJlYW1fbWF4X2RvdGNsb2NrKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHApCj4gPiAgCj4gPiAgCWludCB0eXBlID0gaW50ZWxfZHAtPmRvd25zdHJlYW1fcG9ydHNb MF0gJiBEUF9EU19QT1JUX1RZUEVfTUFTSzsKPiA+ICAKPiA+ICsJaWYgKGFsbG93X2JpZ2pvaW5l ciAmJiBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKQo+ID4gKwkJbWF4X2RvdGNsayAqPSAyOwo+ ID4gKwoKU2luY2UgaGVyZSB3ZSBhbGxvdyB0aGUgYmlnIGpvaW5lciBmb3IgPj0xMSAoSUNMKyks IHdlIG5lZWQgdG8gdXBkYXRlIHRoZQpwbGFuZV9tb2RlX3ZhbGlkIGNoZWNrIHRvIGVuc3VyZSB0 aGF0IHdlIGFsbG93IHRoZSA4SyBtb2RlIG9ubHkgZm9yIFRHTCsKZWxzZSB3aXRoIGJpZyBqb2lu ZXIgZW5hYmxlZCBvbiBJQ0wgd2Ugd2lsbCBlbmFibGUgaXQgb24gSUNMIHdoaWNoIGlzIG5vdCBw ZXJtaXR0ZWQgKG5vdCBQT1IpCgoKPiAKPiBTaG91bGQgd2UgYmUgY2hlY2tpbmcgaWYgdGhlIHNw ZWNpZmljIHBpcGUgY2FuIGRvIGJpZyBqb2luZXIgb24gdGhlCj4gcGxhdGZvcm0gKGdlbjExIHZz IGdlbjEyIGRpZmZlcmVuY2VzKSBhbmQgYWxzbyBvbWl0dGluZyBlRFAgZnJvbQo+IGNvbnNpZGVy YXRpb24/Cj4gCj4gCj4gPiAgCWlmICh0eXBlICE9IERQX0RTX1BPUlRfVFlQRV9WR0EpCj4gPiAg CQlyZXR1cm4gbWF4X2RvdGNsazsKPiA+ICAKPiA+IEBAIC01MDUsOCArNTA4LDEwIEBAIHUzMiBp bnRlbF9kcF9mZWNfdG9fbW9kZV9jbG9jayh1MzIgZmVjX2Nsb2NrKQo+ID4gIAkJICAgICAgIDEw MDAwMDBVKTsKPiA+ICB9Cj4gPiAgCj4gPiAtc3RhdGljIHUxNiBpbnRlbF9kcF9kc2NfZ2V0X291 dHB1dF9icHAodTMyIGxpbmtfY2xvY2ssIHUzMiBsYW5lX2NvdW50LAo+ID4gLQkJCQkgICAgICAg dTMyIG1vZGVfY2xvY2ssIHUzMiBtb2RlX2hkaXNwbGF5KQo+ID4gK3N0YXRpYyB1MTYgaW50ZWxf ZHBfZHNjX2dldF9vdXRwdXRfYnBwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiA+ICsJCQkJICAgICAgIHUzMiBsaW5rX2Nsb2NrLCB1MzIgbGFuZV9jb3VudCwKPiA+ICsJCQkJ ICAgICAgIHUzMiBtb2RlX2Nsb2NrLCB1MzIgbW9kZV9oZGlzcGxheSwKPiA+ICsJCQkJICAgICAg IGJvb2wgYmlnam9pbmVyKQo+ID4gIHsKPiA+ICAJdTMyIGJpdHNfcGVyX3BpeGVsLCBtYXhfYnBw X3NtYWxsX2pvaW5lcl9yYW07Cj4gPiAgCWludCBpOwo+ID4gQEAgLTUyMyw2ICs1MjgsMTAgQEAg c3RhdGljIHUxNiBpbnRlbF9kcF9kc2NfZ2V0X291dHB1dF9icHAodTMyIGxpbmtfY2xvY2ssIHUz MiBsYW5lX2NvdW50LAo+ID4gIAo+ID4gIAkvKiBTbWFsbCBKb2luZXIgQ2hlY2s6IG91dHB1dCBi cHAgPD0gam9pbmVyIFJBTSAoYml0cykgLyBIb3Jpei4gd2lkdGggKi8KPiA+ICAJbWF4X2JwcF9z bWFsbF9qb2luZXJfcmFtID0gRFBfRFNDX01BWF9TTUFMTF9KT0lORVJfUkFNX0JVRkZFUiAvIG1v ZGVfaGRpc3BsYXk7Cj4gPiArCj4gPiArCWlmIChiaWdqb2luZXIpCj4gPiArCQltYXhfYnBwX3Nt YWxsX2pvaW5lcl9yYW0gKj0gMjsKPiA+ICsKPiAKPiBUaGlzIGNoYW5nZSBpcyBjb3JyZWN0LCBi dXQgd2hpbGUgY29uZmlybWluZyBpbiB0aGUgYnNwZWMgSSBub3RpY2VkIHRoYXQKPiB3ZSBtYXkg aGF2ZSB0aGUgd3JvbmcgRFBfRFNDX01BWF9TTUFMTF9KT0lORVJfUkFNX0JVRkZFUiB2YWx1ZSBm b3IKPiBnZW4xMSsuICBJdCBpbmRpY2F0ZXMgNjE0NCBmb3IgR0xLLCBDTkwsIGJ1dCA3NjgwIGZv ciBJQ0wrIChhbmQgZG91YmxlCj4gdGhhdCB0byAxNTM2MCB3aGVuIHVzaW5nIGJpZyBqb2luZXIp Lgo+IAo+IEJzcGVjOiAyMDM4OAo+IEJzcGVjOiA0OTI1OQoKQE1hdHQsIHRoZSA3NjgwIGlzIGlu IGJ5dGVzIHdoaWNoIHRyYW5zbGF0ZXMgdG8gNjE0NDAgYml0cyBhbmQgdGhhdHMgd2hhdAp3ZSBh cmUgdXNpbmcsIHNlZSB0aGUgI0RQX0RTQ19NQVhfU01BTExfSk9JTkVSX1JBTV9CVUZGRVIKCmFu ZCB0aGVuIGl0cyBkb3VibGUgZm9yIGJpZyBqb2luZXIsIHNvIHRoaXMgaXMgY29ycmVjdAoKPiAK PiA+ICAJRFJNX0RFQlVHX0tNUygiTWF4IHNtYWxsIGpvaW5lciBicHA6ICV1XG4iLCBtYXhfYnBw X3NtYWxsX2pvaW5lcl9yYW0pOwo+ID4gIAo+ID4gIAkvKgo+ID4gQEAgLTUzMSw2ICs1NDAsMTUg QEAgc3RhdGljIHUxNiBpbnRlbF9kcF9kc2NfZ2V0X291dHB1dF9icHAodTMyIGxpbmtfY2xvY2ss IHUzMiBsYW5lX2NvdW50LAo+ID4gIAkgKi8KPiA+ICAJYml0c19wZXJfcGl4ZWwgPSBtaW4oYml0 c19wZXJfcGl4ZWwsIG1heF9icHBfc21hbGxfam9pbmVyX3JhbSk7Cj4gPiAgCj4gPiArCWlmIChi aWdqb2luZXIpIHsKPiA+ICsJCXUzMiBtYXhfYnBwX2JpZ2pvaW5lciA9Cj4gPiArCQkJZGV2X3By aXYtPm1heF9jZGNsa19mcmVxICogNDggLwo+ID4gKwkJCWludGVsX2RwX21vZGVfdG9fZmVjX2Ns b2NrKG1vZGVfY2xvY2spOwo+IAo+IE1pbm9yIG5pdHBpY2ssIGJ1dCBqdXN0IHRvIG1hdGNoIHRo ZSBic3BlYyAoUFBDICogQ0RDTEsgKiAyNCBiaXRzIC8KPiBwaXhlbCBjbG9jayksIEknZCBrZWVw IHRoZSAyIFBQQyBhbmQgMjQgYml0IGZhY3RvcnMgc2VwYXJhdGUgaGVyZS4KPgoKWWVzIEkgYWdy ZWUgaGVyIHdpdGggTWF0dCB0aGF0IHdlIHNoZCBrZWVwIHRoZSAycHBjIHNlcGFyYXRlIGp1c3Qg dG8gbWF0Y2ggYnNwZWMKIAo+ID4gKwo+ID4gKwkJRFJNX0RFQlVHX0tNUygiTWF4IGJpZyBqb2lu ZXIgYnBwOiAldVxuIiwgbWF4X2JwcF9iaWdqb2luZXIpOwo+ID4gKwkJYml0c19wZXJfcGl4ZWwg PSBtaW4oYml0c19wZXJfcGl4ZWwsIG1heF9icHBfYmlnam9pbmVyKTsKPiA+ICsJfQo+ID4gKwo+ ID4gIAkvKiBFcnJvciBvdXQgaWYgdGhlIG1heCBicHAgaXMgbGVzcyB0aGFuIHNtYWxsZXN0IGFs bG93ZWQgdmFsaWQgYnBwICovCj4gPiAgCWlmIChiaXRzX3Blcl9waXhlbCA8IHZhbGlkX2RzY19i cHBbMF0pIHsKPiA+ICAJCURSTV9ERUJVR19LTVMoIlVuc3VwcG9ydGVkIEJQUCAldSwgbWluICV1 XG4iLAo+ID4gQEAgLTU1Myw3ICs1NzEsOCBAQCBzdGF0aWMgdTE2IGludGVsX2RwX2RzY19nZXRf b3V0cHV0X2JwcCh1MzIgbGlua19jbG9jaywgdTMyIGxhbmVfY291bnQsCj4gPiAgfQo+ID4gIAo+ ID4gIHN0YXRpYyB1OCBpbnRlbF9kcF9kc2NfZ2V0X3NsaWNlX2NvdW50KHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAsCj4gPiAtCQkJCSAgICAgICBpbnQgbW9kZV9jbG9jaywgaW50IG1vZGVfaGRp c3BsYXkpCj4gPiArCQkJCSAgICAgICBpbnQgbW9kZV9jbG9jaywgaW50IG1vZGVfaGRpc3BsYXks Cj4gPiArCQkJCSAgICAgICBib29sIGJpZ2pvaW5lcikKPiA+ICB7Cj4gPiAgCXU4IG1pbl9zbGlj ZV9jb3VudCwgaTsKPiA+ICAJaW50IG1heF9zbGljZV93aWR0aDsKPiA+IEBAIC01NzgsMTIgKzU5 NywyMCBAQCBzdGF0aWMgdTggaW50ZWxfZHBfZHNjX2dldF9zbGljZV9jb3VudChzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwLAo+ID4gIAo+ID4gIAkvKiBGaW5kIHRoZSBjbG9zZXN0IG1hdGNoIHRv IHRoZSB2YWxpZCBzbGljZSBjb3VudCB2YWx1ZXMgKi8KPiA+ICAJZm9yIChpID0gMDsgaSA8IEFS UkFZX1NJWkUodmFsaWRfZHNjX3NsaWNlY291bnQpOyBpKyspIHsKPiA+IC0JCWlmICh2YWxpZF9k c2Nfc2xpY2Vjb3VudFtpXSA+Cj4gPiAtCQkgICAgZHJtX2RwX2RzY19zaW5rX21heF9zbGljZV9j b3VudChpbnRlbF9kcC0+ZHNjX2RwY2QsCj4gPiAtCQkJCQkJICAgIGZhbHNlKSkKPiA+ICsJCXU4 IHRlc3Rfc2xpY2VfY291bnQgPSBiaWdqb2luZXIgPwo+ID4gKwkJCTIgKiB2YWxpZF9kc2Nfc2xp Y2Vjb3VudFtpXSA6Cj4gPiArCQkJdmFsaWRfZHNjX3NsaWNlY291bnRbaV07Cj4gPiArCj4gPiAr CQlpZiAodGVzdF9zbGljZV9jb3VudCA+Cj4gPiArCQkgICAgZHJtX2RwX2RzY19zaW5rX21heF9z bGljZV9jb3VudChpbnRlbF9kcC0+ZHNjX2RwY2QsIGZhbHNlKSkKPiA+ICAJCQlicmVhazsKPiA+ IC0JCWlmIChtaW5fc2xpY2VfY291bnQgIDw9IHZhbGlkX2RzY19zbGljZWNvdW50W2ldKQo+ID4g LQkJCXJldHVybiB2YWxpZF9kc2Nfc2xpY2Vjb3VudFtpXTsKPiA+ICsKPiA+ICsJCS8qIGJpZyBq b2luZXIgbmVlZHMgc21hbGwgam9pbmVyIHRvIGJlIGVuYWJsZWQgKi8KPiA+ICsJCWlmIChiaWdq b2luZXIgJiYgdGVzdF9zbGljZV9jb3VudCA8IDQpCj4gPiArCQkJY29udGludWU7Cj4gPiArCj4g PiArCQlpZiAobWluX3NsaWNlX2NvdW50IDw9IHRlc3Rfc2xpY2VfY291bnQpCj4gPiArCQkJcmV0 dXJuIHRlc3Rfc2xpY2VfY291bnQ7Cj4gPiAgCX0KPiA+ICAKPiA+ICAJRFJNX0RFQlVHX0tNUygi VW5zdXBwb3J0ZWQgU2xpY2UgQ291bnQgJWRcbiIsIG1pbl9zbGljZV9jb3VudCk7Cj4gPiBAQCAt NjAzLDExICs2MzAsMTUgQEAgaW50ZWxfZHBfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yLAo+ID4gIAlpbnQgbWF4X2RvdGNsazsKPiA+ICAJdTE2IGRzY19tYXhfb3V0 cHV0X2JwcCA9IDA7Cj4gPiAgCXU4IGRzY19zbGljZV9jb3VudCA9IDA7Cj4gPiArCWJvb2wgZHNj ID0gZmFsc2UsIGJpZ2pvaW5lciA9IGZhbHNlOwo+ID4gIAo+ID4gIAlpZiAobW9kZS0+ZmxhZ3Mg JiBEUk1fTU9ERV9GTEFHX0RCTFNDQU4pCj4gPiAgCQlyZXR1cm4gTU9ERV9OT19EQkxFU0NBTjsK PiA+ICAKPiA+IC0JbWF4X2RvdGNsayA9IGludGVsX2RwX2Rvd25zdHJlYW1fbWF4X2RvdGNsb2Nr KGludGVsX2RwKTsKPiA+ICsJaWYgKG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19EQkxDTEsp Cj4gPiArCQlyZXR1cm4gTU9ERV9IX0lMTEVHQUw7Cj4gPiArCj4gPiArCW1heF9kb3RjbGsgPSBp bnRlbF9kcF9kb3duc3RyZWFtX21heF9kb3RjbG9jayhpbnRlbF9kcCwgZmFsc2UpOwo+ID4gIAo+ ID4gIAlpZiAoaW50ZWxfZHBfaXNfZWRwKGludGVsX2RwKSAmJiBmaXhlZF9tb2RlKSB7Cj4gPiAg CQlpZiAobW9kZS0+aGRpc3BsYXkgPiBmaXhlZF9tb2RlLT5oZGlzcGxheSkKPiA+IEBAIC02MTks NiArNjUwLDE4IEBAIGludGVsX2RwX21vZGVfdmFsaWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvciwKPiA+ICAJCXRhcmdldF9jbG9jayA9IGZpeGVkX21vZGUtPmNsb2NrOwo+ID4gIAl9 Cj4gPiAgCj4gPiArCWlmIChtb2RlLT5jbG9jayA8IDEwMDAwKQo+ID4gKwkJcmV0dXJuIE1PREVf Q0xPQ0tfTE9XOwo+ID4gKwo+ID4gKwlpZiAodGFyZ2V0X2Nsb2NrID4gbWF4X2RvdGNsaykgewo+ ID4gKwkJbWF4X2RvdGNsayA9IGludGVsX2RwX2Rvd25zdHJlYW1fbWF4X2RvdGNsb2NrKGludGVs X2RwLCB0cnVlKTsKPiA+ICsKPiA+ICsJCWlmICh0YXJnZXRfY2xvY2sgPiBtYXhfZG90Y2xrKQo+ ID4gKwkJCXJldHVybiBNT0RFX0NMT0NLX0hJR0g7Cj4gPiArCj4gPiArCQliaWdqb2luZXIgPSB0 cnVlOwo+ID4gKwl9Cj4gPiArCj4gPiAgCW1heF9saW5rX2Nsb2NrID0gaW50ZWxfZHBfbWF4X2xp bmtfcmF0ZShpbnRlbF9kcCk7Cj4gPiAgCW1heF9sYW5lcyA9IGludGVsX2RwX21heF9sYW5lX2Nv dW50KGludGVsX2RwKTsKPiA+ICAKPiA+IEBAIC02MzksMjYgKzY4MiwzMiBAQCBpbnRlbF9kcF9t b2RlX3ZhbGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gPiAgCQkJCQkJCQl0 cnVlKTsKPiA+ICAJCX0gZWxzZSBpZiAoZHJtX2RwX3Npbmtfc3VwcG9ydHNfZmVjKGludGVsX2Rw LT5mZWNfY2FwYWJsZSkpIHsKPiA+ICAJCQlkc2NfbWF4X291dHB1dF9icHAgPQo+ID4gLQkJCQlp bnRlbF9kcF9kc2NfZ2V0X291dHB1dF9icHAobWF4X2xpbmtfY2xvY2ssCj4gPiArCQkJCWludGVs X2RwX2RzY19nZXRfb3V0cHV0X2JwcChkZXZfcHJpdiwKPiA+ICsJCQkJCQkJICAgIG1heF9saW5r X2Nsb2NrLAo+ID4gIAkJCQkJCQkgICAgbWF4X2xhbmVzLAo+ID4gIAkJCQkJCQkgICAgdGFyZ2V0 X2Nsb2NrLAo+ID4gLQkJCQkJCQkgICAgbW9kZS0+aGRpc3BsYXkpID4+IDQ7Cj4gPiArCQkJCQkJ CSAgICBtb2RlLT5oZGlzcGxheSwKPiA+ICsJCQkJCQkJICAgIGJpZ2pvaW5lcikgPj4gNDsKPiA+ ICAJCQlkc2Nfc2xpY2VfY291bnQgPQo+ID4gIAkJCQlpbnRlbF9kcF9kc2NfZ2V0X3NsaWNlX2Nv dW50KGludGVsX2RwLAo+ID4gIAkJCQkJCQkgICAgIHRhcmdldF9jbG9jaywKPiA+IC0JCQkJCQkJ ICAgICBtb2RlLT5oZGlzcGxheSk7Cj4gPiArCQkJCQkJCSAgICAgbW9kZS0+aGRpc3BsYXksCj4g PiArCQkJCQkJCSAgICAgYmlnam9pbmVyKTsKPiA+ICAJCX0KPiA+ICsKPiA+ICsJCWRzYyA9IGRz Y19tYXhfb3V0cHV0X2JwcCAmJiBkc2Nfc2xpY2VfY291bnQ7Cj4gPiAgCX0KPiA+ICAKPiA+IC0J aWYgKChtb2RlX3JhdGUgPiBtYXhfcmF0ZSAmJiAhKGRzY19tYXhfb3V0cHV0X2JwcCAmJiBkc2Nf c2xpY2VfY291bnQpKSB8fAo+ID4gLQkgICAgdGFyZ2V0X2Nsb2NrID4gbWF4X2RvdGNsaykKPiA+ ICsJLyogYmlnIGpvaW5lciBjb25maWd1cmF0aW9uIG5lZWRzIERTQyAqLwo+ID4gKwlpZiAoYmln am9pbmVyICYmICFkc2MpIHsKPiA+ICsJCURSTV9ERUJVR19LTVMoIkxpbmsgY2xvY2sgbmVlZHMg Ymlnam9pbmVyLCBidXQgRFNDIG9yIEZFQyBub3QgYXZhaWxhYmxlXG4iKTsKPiA+ICAJCXJldHVy biBNT0RFX0NMT0NLX0hJR0g7Cj4gPiArCX0KPiAKPiBTb21ld2hlcmUgaW4gdGhpcyBmdW5jdGlv biB3ZSBwcm9iYWJseSBhbHNvIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlCj4gYmlnIGpvaW5l ciBpcyBhdmFpbGFibGUgb24gdGhlIHBpcGUgYW5kIHRoYXQgd2UncmUgbm90IHVzaW5nIGVEUC4K PgoKWWVzIEkgYWdyZWUgd2UgbmVlZCB0byBjaGVjayB0aGF0IHdlIGFsbG93IGJpZyBqb2luZSBv bmx5IGZvciBCIGFuZCBDIGZvciBJQ0wgYW5kIHRoZW4KYWxsIHBpcGVzIGZvciBUR0wrIGFuZCBu b3QgYWxsb3cgZm9yIGVEUAoKTWFuYXNpCiAgCj4gCj4gTWF0dAo+IAo+ID4gIAo+ID4gLQlpZiAo bW9kZS0+Y2xvY2sgPCAxMDAwMCkKPiA+IC0JCXJldHVybiBNT0RFX0NMT0NLX0xPVzsKPiA+IC0K PiA+IC0JaWYgKG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19EQkxDTEspCj4gPiAtCQlyZXR1 cm4gTU9ERV9IX0lMTEVHQUw7Cj4gPiArCWlmIChtb2RlX3JhdGUgPiBtYXhfcmF0ZSAmJiAhZHNj KSB7Cj4gPiArCQlEUk1fREVCVUdfS01TKCJDYW5ub3QgZHJpdmUgd2l0aG91dCBEU0NcbiIpOwo+ ID4gKwkJcmV0dXJuIE1PREVfQ0xPQ0tfSElHSDsKPiA+ICsJfQo+ID4gIAo+ID4gIAlyZXR1cm4g aW50ZWxfbW9kZV92YWxpZF9tYXhfcGxhbmVfc2l6ZShkZXZfcHJpdiwgbW9kZSk7Cj4gPiAgfQo+ ID4gQEAgLTIwNjgsMTQgKzIxMTcsMTcgQEAgc3RhdGljIGludCBpbnRlbF9kcF9kc2NfY29tcHV0 ZV9jb25maWcoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiA+ICAJCXU4IGRzY19kcF9zbGlj ZV9jb3VudDsKPiA+ICAKPiA+ICAJCWRzY19tYXhfb3V0cHV0X2JwcCA9Cj4gPiAtCQkJaW50ZWxf ZHBfZHNjX2dldF9vdXRwdXRfYnBwKHBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrLAo+ID4gKwkJCWlu dGVsX2RwX2RzY19nZXRfb3V0cHV0X2JwcChkZXZfcHJpdiwKPiA+ICsJCQkJCQkgICAgcGlwZV9j b25maWctPnBvcnRfY2xvY2ssCj4gPiAgCQkJCQkJICAgIHBpcGVfY29uZmlnLT5sYW5lX2NvdW50 LAo+ID4gIAkJCQkJCSAgICBhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrLAo+ID4gLQkJCQkJCSAg ICBhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5KTsKPiA+ICsJCQkJCQkgICAgYWRqdXN0ZWRf bW9kZS0+Y3J0Y19oZGlzcGxheSwKPiA+ICsJCQkJCQkgICAgZmFsc2UpOwo+ID4gIAkJZHNjX2Rw X3NsaWNlX2NvdW50ID0KPiA+ICAJCQlpbnRlbF9kcF9kc2NfZ2V0X3NsaWNlX2NvdW50KGludGVs X2RwLAo+ID4gIAkJCQkJCSAgICAgYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jaywKPiA+IC0JCQkJ CQkgICAgIGFkanVzdGVkX21vZGUtPmNydGNfaGRpc3BsYXkpOwo+ID4gKwkJCQkJCSAgICAgYWRq dXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheSwKPiA+ICsJCQkJCQkgICAgIGZhbHNlKTsKPiA+ICAJ CWlmICghZHNjX21heF9vdXRwdXRfYnBwIHx8ICFkc2NfZHBfc2xpY2VfY291bnQpIHsKPiA+ICAJ CQlEUk1fREVCVUdfS01TKCJDb21wcmVzc2VkIEJQUC9TbGljZSBDb3VudCBub3Qgc3VwcG9ydGVk XG4iKTsKPiA+ICAJCQlyZXR1cm4gLUVJTlZBTDsKPiA+IC0tIAo+ID4gMi4yMC4xCj4gPiAKPiA+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiBJbnRl bC1nZnggbWFpbGluZyBsaXN0Cj4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4g PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo+IAo+IC0tIAo+IE1hdHQgUm9wZXIKPiBHcmFwaGljcyBTb2Z0d2FyZSBFbmdpbmVlcgo+IFZU VC1PU0dDIFBsYXRmb3JtIEVuYWJsZW1lbnQKPiBJbnRlbCBDb3Jwb3JhdGlvbgo+ICg5MTYpIDM1 Ni0yNzk1Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y Zwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==