From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 04/11] drm/i915/dp: Allow big joiner modes in intel_dp_mode_valid(), v3. Date: Thu, 28 Nov 2019 21:04:23 +0200 Message-ID: <20191128190423.GZ1208@intel.com> References: <20191114160522.9699-1-maarten.lankhorst@linux.intel.com> <20191114160522.9699-4-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6E0656E0E5 for ; Thu, 28 Nov 2019 19:04:26 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20191114160522.9699-4-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBOb3YgMTQsIDIwMTkgYXQgMDU6MDU6MTVQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gU21hbGwgY2hhbmdlcyB0byBpbnRlbF9kcF9tb2RlX3ZhbGlkKCksIGFsbG93 IGxpc3RpbmcgbW9kZXMgdGhhdAo+IGNhbiBvbmx5IGJlIHN1cHBvcnRlZCBpbiB0aGUgYmlnam9p bmVyIGNvbmZpZ3VyYXRpb24sIHdoaWNoIGlzCj4gbm90IHN1cHBvcnRlZCB5ZXQuCj4gCj4gZURQ IGRvZXMgbm90IHN1cHBvcnQgYmlnam9pbmVyLCBzbyBkbyBub3QgZXhwb3NlIGJpZ2pvaW5lciBv bmx5Cj4gbW9kZXMgb24gdGhlIGVEUCBwb3J0Lgo+IAo+IENoYW5nZXMgc2luY2UgdjE6Cj4gLSBE aXNhbGxvdyBiaWdqb2luZXIgb24gZURQLgo+IENoYW5nZXMgc2luY2UgdjI6Cj4gLSBSZW5hbWUg aW50ZWxfZHBfZG93bnN0cmVhbV9tYXhfZG90Y2xvY2sgdG8gaW50ZWxfZHBfbWF4X2RvdGNsb2Nr LAo+ICAgYW5kIHNwbGl0IG9mZiB0aGUgZG93bnN0cmVhbSBhbmQgc291cmNlIGNoZWNraW5nIHRv IGl0cyBvd24gZnVuY3Rpb24uCj4gICAoVmlsbGUpCj4gCj4gU2lnbmVkLW9mZi1ieTogTWFhcnRl biBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jIHwgMTE3ICsrKysrKysrKysr KysrKysrKy0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgODkgaW5zZXJ0aW9ucygrKSwgMjggZGVs ZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+IGlu ZGV4IDMxMjM5NThlMjA4MS4uOWI3ZGY4ZTg1ZWEyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZHAuYwo+IEBAIC0yNDMsMjUgKzI0MywzNyBAQCBpbnRlbF9kcF9tYXhf ZGF0YV9yYXRlKGludCBtYXhfbGlua19jbG9jaywgaW50IG1heF9sYW5lcykKPiAgCXJldHVybiBt YXhfbGlua19jbG9jayAqIG1heF9sYW5lczsKPiAgfQo+ICAKPiAtc3RhdGljIGludAo+IC1pbnRl bF9kcF9kb3duc3RyZWFtX21heF9kb3RjbG9jayhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ ICtzdGF0aWMgaW50IHNvdXJjZV9tYXhfZG90Y2xvY2soc3RydWN0IGludGVsX2RwICppbnRlbF9k cCwgYm9vbCBhbGxvd19iaWdqb2luZXIpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3Bv cnQgKmludGVsX2RpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApOwo+ICAJc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSAmaW50ZWxfZGlnX3BvcnQtPmJhc2U7Cj4gLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2 KTsKPiAtCWludCBtYXhfZG90Y2xrID0gZGV2X3ByaXYtPm1heF9kb3RjbGtfZnJlcTsKPiAtCWlu dCBkc19tYXhfZG90Y2xrOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19p OTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiArCj4gKwlpZiAoYWxsb3dfYmlnam9pbmVyICYmIElO VEVMX0dFTihpOTE1KSA+PSAxMSAmJiAhaW50ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkKClNob3Vs ZCB0aGUgZWRwIGNoZWNrIGFjdHVhbGx5IGJlIGNoZWNrIGZvciB0aGUgZWRwIHRyYW5zY29kZXIK KGllLiBwb3J0IEEpIG9uIGljbD8KCj4gKwkJcmV0dXJuIDIgKiBpOTE1LT5tYXhfZG90Y2xrX2Zy ZXE7Cj4gKwo+ICsJcmV0dXJuIGk5MTUtPm1heF9kb3RjbGtfZnJlcTsKPiArfQo+ICAKPiArc3Rh dGljIGludCBkb3duc3RyZWFtX21heF9kb3RjbG9jayhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KQo+ICt7Cj4gIAlpbnQgdHlwZSA9IGludGVsX2RwLT5kb3duc3RyZWFtX3BvcnRzWzBdICYgRFBf RFNfUE9SVF9UWVBFX01BU0s7Cj4gIAo+ICAJaWYgKHR5cGUgIT0gRFBfRFNfUE9SVF9UWVBFX1ZH QSkKPiAtCQlyZXR1cm4gbWF4X2RvdGNsazsKPiArCQlyZXR1cm4gMDsKPiAgCj4gLQlkc19tYXhf ZG90Y2xrID0gZHJtX2RwX2Rvd25zdHJlYW1fbWF4X2Nsb2NrKGludGVsX2RwLT5kcGNkLAo+IC0J CQkJCQkgICAgaW50ZWxfZHAtPmRvd25zdHJlYW1fcG9ydHMpOwo+ICsJcmV0dXJuIGRybV9kcF9k b3duc3RyZWFtX21heF9jbG9jayhpbnRlbF9kcC0+ZHBjZCwKPiArCQkJCQkgICBpbnRlbF9kcC0+ ZG93bnN0cmVhbV9wb3J0cyk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQKPiAraW50ZWxfZHBfbWF4 X2RvdGNsb2NrKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGJvb2wgYWxsb3dfYmlnam9pbmVy KQo+ICt7Cj4gKwlpbnQgbWF4X2RvdGNsayA9IHNvdXJjZV9tYXhfZG90Y2xvY2soaW50ZWxfZHAs IGFsbG93X2JpZ2pvaW5lcik7Cj4gKwlpbnQgZHNfbWF4X2RvdGNsayA9IGRvd25zdHJlYW1fbWF4 X2RvdGNsb2NrKGludGVsX2RwKTsKPiAgCj4gIAlpZiAoZHNfbWF4X2RvdGNsayAhPSAwKQo+IC0J CW1heF9kb3RjbGsgPSBtaW4obWF4X2RvdGNsaywgZHNfbWF4X2RvdGNsayk7Cj4gKwkJcmV0dXJu IG1pbihtYXhfZG90Y2xrLCBkc19tYXhfZG90Y2xrKTsKPiAgCj4gIAlyZXR1cm4gbWF4X2RvdGNs azsKPiAgfQo+IEBAIC01MDYsNyArNTE4LDggQEAgc21hbGxfam9pbmVyX3JhbV9zaXplX2JpdHMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIAo+ICBzdGF0aWMgdTE2IGludGVsX2Rw X2RzY19nZXRfb3V0cHV0X2JwcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgCQkJ CSAgICAgICB1MzIgbGlua19jbG9jaywgdTMyIGxhbmVfY291bnQsCj4gLQkJCQkgICAgICAgdTMy IG1vZGVfY2xvY2ssIHUzMiBtb2RlX2hkaXNwbGF5KQo+ICsJCQkJICAgICAgIHUzMiBtb2RlX2Ns b2NrLCB1MzIgbW9kZV9oZGlzcGxheSwKPiArCQkJCSAgICAgICBib29sIGJpZ2pvaW5lcikKPiAg ewo+ICAJdTMyIGJpdHNfcGVyX3BpeGVsLCBtYXhfYnBwX3NtYWxsX2pvaW5lcl9yYW07Cj4gIAlp bnQgaTsKPiBAQCAtNTI0LDYgKzUzNywxMCBAQCBzdGF0aWMgdTE2IGludGVsX2RwX2RzY19nZXRf b3V0cHV0X2JwcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgCS8qIFNtYWxsIEpv aW5lciBDaGVjazogb3V0cHV0IGJwcCA8PSBqb2luZXIgUkFNIChiaXRzKSAvIEhvcml6LiB3aWR0 aCAqLwo+ICAJbWF4X2JwcF9zbWFsbF9qb2luZXJfcmFtID0gc21hbGxfam9pbmVyX3JhbV9zaXpl X2JpdHMoaTkxNSkgLwo+ICAJCW1vZGVfaGRpc3BsYXk7Cj4gKwo+ICsJaWYgKGJpZ2pvaW5lcikK PiArCQltYXhfYnBwX3NtYWxsX2pvaW5lcl9yYW0gKj0gMjsKPiArCj4gIAlEUk1fREVCVUdfS01T KCJNYXggc21hbGwgam9pbmVyIGJwcDogJXVcbiIsIG1heF9icHBfc21hbGxfam9pbmVyX3JhbSk7 Cj4gIAo+ICAJLyoKPiBAQCAtNTMyLDYgKzU0OSwxNSBAQCBzdGF0aWMgdTE2IGludGVsX2RwX2Rz Y19nZXRfb3V0cHV0X2JwcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgCSAqLwo+ ICAJYml0c19wZXJfcGl4ZWwgPSBtaW4oYml0c19wZXJfcGl4ZWwsIG1heF9icHBfc21hbGxfam9p bmVyX3JhbSk7Cj4gIAo+ICsJaWYgKGJpZ2pvaW5lcikgewo+ICsJCXUzMiBtYXhfYnBwX2JpZ2pv aW5lciA9Cj4gKwkJCWk5MTUtPm1heF9jZGNsa19mcmVxICogNDggLwo+ICsJCQlpbnRlbF9kcF9t b2RlX3RvX2ZlY19jbG9jayhtb2RlX2Nsb2NrKTsKPiArCj4gKwkJRFJNX0RFQlVHX0tNUygiTWF4 IGJpZyBqb2luZXIgYnBwOiAldVxuIiwgbWF4X2JwcF9iaWdqb2luZXIpOwo+ICsJCWJpdHNfcGVy X3BpeGVsID0gbWluKGJpdHNfcGVyX3BpeGVsLCBtYXhfYnBwX2JpZ2pvaW5lcik7Cj4gKwl9Cj4g Kwo+ICAJLyogRXJyb3Igb3V0IGlmIHRoZSBtYXggYnBwIGlzIGxlc3MgdGhhbiBzbWFsbGVzdCBh bGxvd2VkIHZhbGlkIGJwcCAqLwo+ICAJaWYgKGJpdHNfcGVyX3BpeGVsIDwgdmFsaWRfZHNjX2Jw cFswXSkgewo+ICAJCURSTV9ERUJVR19LTVMoIlVuc3VwcG9ydGVkIEJQUCAldSwgbWluICV1XG4i LAo+IEBAIC01NTQsNyArNTgwLDggQEAgc3RhdGljIHUxNiBpbnRlbF9kcF9kc2NfZ2V0X291dHB1 dF9icHAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gIH0KPiAgCj4gIHN0YXRpYyB1 OCBpbnRlbF9kcF9kc2NfZ2V0X3NsaWNlX2NvdW50KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAs Cj4gLQkJCQkgICAgICAgaW50IG1vZGVfY2xvY2ssIGludCBtb2RlX2hkaXNwbGF5KQo+ICsJCQkJ ICAgICAgIGludCBtb2RlX2Nsb2NrLCBpbnQgbW9kZV9oZGlzcGxheSwKPiArCQkJCSAgICAgICBi b29sIGJpZ2pvaW5lcikKPiAgewo+ICAJdTggbWluX3NsaWNlX2NvdW50LCBpOwo+ICAJaW50IG1h eF9zbGljZV93aWR0aDsKPiBAQCAtNTc5LDEyICs2MDYsMjAgQEAgc3RhdGljIHU4IGludGVsX2Rw X2RzY19nZXRfc2xpY2VfY291bnQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiAgCj4gIAkv KiBGaW5kIHRoZSBjbG9zZXN0IG1hdGNoIHRvIHRoZSB2YWxpZCBzbGljZSBjb3VudCB2YWx1ZXMg Ki8KPiAgCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHZhbGlkX2RzY19zbGljZWNvdW50KTsg aSsrKSB7Cj4gLQkJaWYgKHZhbGlkX2RzY19zbGljZWNvdW50W2ldID4KPiAtCQkgICAgZHJtX2Rw X2RzY19zaW5rX21heF9zbGljZV9jb3VudChpbnRlbF9kcC0+ZHNjX2RwY2QsCj4gLQkJCQkJCSAg ICBmYWxzZSkpCj4gKwkJdTggdGVzdF9zbGljZV9jb3VudCA9IGJpZ2pvaW5lciA/CgpUaGUgdGVz dF8gcHJlZml4IGlzIHRocm93aW5nIG1lIG9mZi4gSnVzdCBzbGljZV9jb3VudD8KCj4gKwkJCTIg KiB2YWxpZF9kc2Nfc2xpY2Vjb3VudFtpXSA6Cj4gKwkJCXZhbGlkX2RzY19zbGljZWNvdW50W2ld Owo+ICsKPiArCQlpZiAodGVzdF9zbGljZV9jb3VudCA+Cj4gKwkJICAgIGRybV9kcF9kc2Nfc2lu a19tYXhfc2xpY2VfY291bnQoaW50ZWxfZHAtPmRzY19kcGNkLCBmYWxzZSkpCj4gIAkJCWJyZWFr Owo+IC0JCWlmIChtaW5fc2xpY2VfY291bnQgIDw9IHZhbGlkX2RzY19zbGljZWNvdW50W2ldKQo+ IC0JCQlyZXR1cm4gdmFsaWRfZHNjX3NsaWNlY291bnRbaV07Cj4gKwo+ICsJCS8qIGJpZyBqb2lu ZXIgbmVlZHMgc21hbGwgam9pbmVyIHRvIGJlIGVuYWJsZWQgKi8KPiArCQlpZiAoYmlnam9pbmVy ICYmIHRlc3Rfc2xpY2VfY291bnQgPCA0KQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJaWYgKG1p bl9zbGljZV9jb3VudCA8PSB0ZXN0X3NsaWNlX2NvdW50KQoKc2xpY2VfY291bnQgPiBtaW5fc2xp Y2VfY291bnQ/IFdvdWxkIGZlZWwgYSBiaXQgbW9yZSBuYXR1cmFsdG8gbWUuCgo+ICsJCQlyZXR1 cm4gdGVzdF9zbGljZV9jb3VudDsKPiAgCX0KPiAgCj4gIAlEUk1fREVCVUdfS01TKCJVbnN1cHBv cnRlZCBTbGljZSBDb3VudCAlZFxuIiwgbWluX3NsaWNlX2NvdW50KTsKPiBAQCAtNjIzLDExICs2 NTgsMTUgQEAgaW50ZWxfZHBfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yLAo+ICAJaW50IG1heF9kb3RjbGs7Cj4gIAl1MTYgZHNjX21heF9vdXRwdXRfYnBwID0gMDsK PiAgCXU4IGRzY19zbGljZV9jb3VudCA9IDA7Cj4gKwlib29sIGRzYyA9IGZhbHNlLCBiaWdqb2lu ZXIgPSBmYWxzZTsKPiAgCj4gIAlpZiAobW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0RCTFND QU4pCj4gIAkJcmV0dXJuIE1PREVfTk9fREJMRVNDQU47Cj4gIAo+IC0JbWF4X2RvdGNsayA9IGlu dGVsX2RwX2Rvd25zdHJlYW1fbWF4X2RvdGNsb2NrKGludGVsX2RwKTsKPiArCWlmIChtb2RlLT5m bGFncyAmIERSTV9NT0RFX0ZMQUdfREJMQ0xLKQo+ICsJCXJldHVybiBNT0RFX0hfSUxMRUdBTDsK PiArCj4gKwltYXhfZG90Y2xrID0gaW50ZWxfZHBfbWF4X2RvdGNsb2NrKGludGVsX2RwLCBmYWxz ZSk7Cj4gIAo+ICAJaWYgKGludGVsX2RwX2lzX2VkcChpbnRlbF9kcCkgJiYgZml4ZWRfbW9kZSkg ewo+ICAJCWlmIChtb2RlLT5oZGlzcGxheSA+IGZpeGVkX21vZGUtPmhkaXNwbGF5KQo+IEBAIC02 MzksNiArNjc4LDIxIEBAIGludGVsX2RwX21vZGVfdmFsaWQoc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvciwKPiAgCQl0YXJnZXRfY2xvY2sgPSBmaXhlZF9tb2RlLT5jbG9jazsKPiAgCX0K PiAgCj4gKwlpZiAobW9kZS0+Y2xvY2sgPCAxMDAwMCkKPiArCQlyZXR1cm4gTU9ERV9DTE9DS19M T1c7Cj4gKwo+ICsJaWYgKHRhcmdldF9jbG9jayA+IG1heF9kb3RjbGspIHsKPiArCQlpZiAoaW50 ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkKPiArCQkJcmV0dXJuIE1PREVfQ0xPQ0tfSElHSDsKPiAr Cj4gKwkJbWF4X2RvdGNsayA9IGludGVsX2RwX21heF9kb3RjbG9jayhpbnRlbF9kcCwgdHJ1ZSk7 Cj4gKwo+ICsJCWlmICh0YXJnZXRfY2xvY2sgPiBtYXhfZG90Y2xrKQo+ICsJCQlyZXR1cm4gTU9E RV9DTE9DS19ISUdIOwo+ICsKPiArCQliaWdqb2luZXIgPSB0cnVlOwo+ICsJfQo+ICsKPiAgCW1h eF9saW5rX2Nsb2NrID0gaW50ZWxfZHBfbWF4X2xpbmtfcmF0ZShpbnRlbF9kcCk7Cj4gIAltYXhf bGFuZXMgPSBpbnRlbF9kcF9tYXhfbGFuZV9jb3VudChpbnRlbF9kcCk7Cj4gIAo+IEBAIC02NjYs MjMgKzcyMCwyOCBAQCBpbnRlbF9kcF9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IsCj4gIAkJCQkJCQkgICAgbWF4X2xpbmtfY2xvY2ssCj4gIAkJCQkJCQkgICAgbWF4 X2xhbmVzLAo+ICAJCQkJCQkJICAgIHRhcmdldF9jbG9jaywKPiAtCQkJCQkJCSAgICBtb2RlLT5o ZGlzcGxheSkgPj4gNDsKPiArCQkJCQkJCSAgICBtb2RlLT5oZGlzcGxheSwKPiArCQkJCQkJCSAg ICBiaWdqb2luZXIpID4+IDQ7Cj4gIAkJCWRzY19zbGljZV9jb3VudCA9Cj4gIAkJCQlpbnRlbF9k cF9kc2NfZ2V0X3NsaWNlX2NvdW50KGludGVsX2RwLAo+ICAJCQkJCQkJICAgICB0YXJnZXRfY2xv Y2ssCj4gLQkJCQkJCQkgICAgIG1vZGUtPmhkaXNwbGF5KTsKPiArCQkJCQkJCSAgICAgbW9kZS0+ aGRpc3BsYXksCj4gKwkJCQkJCQkgICAgIGJpZ2pvaW5lcik7Cj4gIAkJfQo+ICsKPiArCQlkc2Mg PSBkc2NfbWF4X291dHB1dF9icHAgJiYgZHNjX3NsaWNlX2NvdW50Owo+ICAJfQo+ICAKPiAtCWlm ICgobW9kZV9yYXRlID4gbWF4X3JhdGUgJiYgIShkc2NfbWF4X291dHB1dF9icHAgJiYgZHNjX3Ns aWNlX2NvdW50KSkgfHwKPiAtCSAgICB0YXJnZXRfY2xvY2sgPiBtYXhfZG90Y2xrKQo+ICsJLyog YmlnIGpvaW5lciBjb25maWd1cmF0aW9uIG5lZWRzIERTQyAqLwo+ICsJaWYgKGJpZ2pvaW5lciAm JiAhZHNjKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiTGluayBjbG9jayBuZWVkcyBiaWdqb2luZXIs IGJ1dCBEU0Mgb3IgRkVDIG5vdCBhdmFpbGFibGVcbiIpOwoKSSBkb24ndCB0aGluayB3ZSBzcGV3 IGRlYnVncyBmcm9tIG1vZGVfdmFsaWQoKSBlbHNld2hlcmUuCgo+ICAJCXJldHVybiBNT0RFX0NM T0NLX0hJR0g7Cj4gKwl9Cj4gIAo+IC0JaWYgKG1vZGUtPmNsb2NrIDwgMTAwMDApCj4gLQkJcmV0 dXJuIE1PREVfQ0xPQ0tfTE9XOwo+IC0KPiAtCWlmIChtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZM QUdfREJMQ0xLKQo+IC0JCXJldHVybiBNT0RFX0hfSUxMRUdBTDsKPiArCWlmIChtb2RlX3JhdGUg PiBtYXhfcmF0ZSAmJiAhZHNjKSB7CgpOb3QgYSBodWdlIGZhbiBvZiB0aGlzIGRzYyBib29sZWFu LiBXb3VsZCBmZWVsIG1vcmUgbmF0dXJhbCBpZiB0aGUgZHNjCnRoaW5nIHdvdWxkIGNvbXB1dGUg YSBuZXcgbW9kZV9yYXRlIHdpdGggbWF4IGFjaGlldmFibGUgY29tcHJlc3Npb24sCm9yIHNvbWV0 aGluZyBhbG9uZyB0aG9zZSBsaW5lcy4gQnV0IHRoaXMgY291bGQgYmUgY2xlYW5lZCB1cCBsYXRl ci4KCj4gKwkJRFJNX0RFQlVHX0tNUygiQ2Fubm90IGRyaXZlIHdpdGhvdXQgRFNDXG4iKTsKPiAr CQlyZXR1cm4gTU9ERV9DTE9DS19ISUdIOwo+ICsJfQo+ICAKPiAgCXJldHVybiBpbnRlbF9tb2Rl X3ZhbGlkX21heF9wbGFuZV9zaXplKGRldl9wcml2LCBtb2RlKTsKPiAgfQo+IEBAIC0yMTA0LDEx ICsyMTYzLDEzIEBAIHN0YXRpYyBpbnQgaW50ZWxfZHBfZHNjX2NvbXB1dGVfY29uZmlnKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAkJCQkJCSAgICBwaXBlX2NvbmZpZy0+cG9ydF9jbG9j aywKPiAgCQkJCQkJICAgIHBpcGVfY29uZmlnLT5sYW5lX2NvdW50LAo+ICAJCQkJCQkgICAgYWRq dXN0ZWRfbW9kZS0+Y3J0Y19jbG9jaywKPiAtCQkJCQkJICAgIGFkanVzdGVkX21vZGUtPmNydGNf aGRpc3BsYXkpOwo+ICsJCQkJCQkgICAgYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheSwKPiAr CQkJCQkJICAgIGZhbHNlKTsKPiAgCQlkc2NfZHBfc2xpY2VfY291bnQgPQo+ICAJCQlpbnRlbF9k cF9kc2NfZ2V0X3NsaWNlX2NvdW50KGludGVsX2RwLAo+ICAJCQkJCQkgICAgIGFkanVzdGVkX21v ZGUtPmNydGNfY2xvY2ssCj4gLQkJCQkJCSAgICAgYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxh eSk7Cj4gKwkJCQkJCSAgICAgYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheSwKPiArCQkJCQkJ ICAgICBmYWxzZSk7Cj4gIAkJaWYgKCFkc2NfbWF4X291dHB1dF9icHAgfHwgIWRzY19kcF9zbGlj ZV9jb3VudCkgewo+ICAJCQlEUk1fREVCVUdfS01TKCJDb21wcmVzc2VkIEJQUC9TbGljZSBDb3Vu dCBub3Qgc3VwcG9ydGVkXG4iKTsKPiAgCQkJcmV0dXJuIC1FSU5WQUw7Cj4gLS0gCj4gMi4yNC4w Cj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJ bnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 CgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeA== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id AC89FC432C0 for ; Thu, 28 Nov 2019 19:04:28 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 887AC21739 for ; Thu, 28 Nov 2019 19:04:28 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 887AC21739 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0C0216E0E5; Thu, 28 Nov 2019 19:04:28 +0000 (UTC) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6E0656E0E5 for ; Thu, 28 Nov 2019 19:04:26 +0000 (UTC) X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 28 Nov 2019 11:04:25 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,254,1571727600"; d="scan'208";a="261356907" Received: from stinkbox.fi.intel.com (HELO stinkbox) ([10.237.72.174]) by FMSMGA003.fm.intel.com with SMTP; 28 Nov 2019 11:04:23 -0800 Received: by stinkbox (sSMTP sendmail emulation); Thu, 28 Nov 2019 21:04:23 +0200 Date: Thu, 28 Nov 2019 21:04:23 +0200 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Maarten Lankhorst Message-ID: <20191128190423.GZ1208@intel.com> References: <20191114160522.9699-1-maarten.lankhorst@linux.intel.com> <20191114160522.9699-4-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20191114160522.9699-4-maarten.lankhorst@linux.intel.com> User-Agent: Mutt/1.10.1 (2018-07-13) Subject: Re: [Intel-gfx] [PATCH 04/11] drm/i915/dp: Allow big joiner modes in intel_dp_mode_valid(), v3. X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: intel-gfx@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191128190423.cFZ1muipL0ymhMZPuoLvt3IESqYekXfRiiSZc8m6YL0@z> T24gVGh1LCBOb3YgMTQsIDIwMTkgYXQgMDU6MDU6MTVQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gU21hbGwgY2hhbmdlcyB0byBpbnRlbF9kcF9tb2RlX3ZhbGlkKCksIGFsbG93 IGxpc3RpbmcgbW9kZXMgdGhhdAo+IGNhbiBvbmx5IGJlIHN1cHBvcnRlZCBpbiB0aGUgYmlnam9p bmVyIGNvbmZpZ3VyYXRpb24sIHdoaWNoIGlzCj4gbm90IHN1cHBvcnRlZCB5ZXQuCj4gCj4gZURQ IGRvZXMgbm90IHN1cHBvcnQgYmlnam9pbmVyLCBzbyBkbyBub3QgZXhwb3NlIGJpZ2pvaW5lciBv bmx5Cj4gbW9kZXMgb24gdGhlIGVEUCBwb3J0Lgo+IAo+IENoYW5nZXMgc2luY2UgdjE6Cj4gLSBE aXNhbGxvdyBiaWdqb2luZXIgb24gZURQLgo+IENoYW5nZXMgc2luY2UgdjI6Cj4gLSBSZW5hbWUg aW50ZWxfZHBfZG93bnN0cmVhbV9tYXhfZG90Y2xvY2sgdG8gaW50ZWxfZHBfbWF4X2RvdGNsb2Nr LAo+ICAgYW5kIHNwbGl0IG9mZiB0aGUgZG93bnN0cmVhbSBhbmQgc291cmNlIGNoZWNraW5nIHRv IGl0cyBvd24gZnVuY3Rpb24uCj4gICAoVmlsbGUpCj4gCj4gU2lnbmVkLW9mZi1ieTogTWFhcnRl biBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jIHwgMTE3ICsrKysrKysrKysr KysrKysrKy0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgODkgaW5zZXJ0aW9ucygrKSwgMjggZGVs ZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+IGlu ZGV4IDMxMjM5NThlMjA4MS4uOWI3ZGY4ZTg1ZWEyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZHAuYwo+IEBAIC0yNDMsMjUgKzI0MywzNyBAQCBpbnRlbF9kcF9tYXhf ZGF0YV9yYXRlKGludCBtYXhfbGlua19jbG9jaywgaW50IG1heF9sYW5lcykKPiAgCXJldHVybiBt YXhfbGlua19jbG9jayAqIG1heF9sYW5lczsKPiAgfQo+ICAKPiAtc3RhdGljIGludAo+IC1pbnRl bF9kcF9kb3duc3RyZWFtX21heF9kb3RjbG9jayhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ ICtzdGF0aWMgaW50IHNvdXJjZV9tYXhfZG90Y2xvY2soc3RydWN0IGludGVsX2RwICppbnRlbF9k cCwgYm9vbCBhbGxvd19iaWdqb2luZXIpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3Bv cnQgKmludGVsX2RpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApOwo+ICAJc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSAmaW50ZWxfZGlnX3BvcnQtPmJhc2U7Cj4gLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2 KTsKPiAtCWludCBtYXhfZG90Y2xrID0gZGV2X3ByaXYtPm1heF9kb3RjbGtfZnJlcTsKPiAtCWlu dCBkc19tYXhfZG90Y2xrOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19p OTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiArCj4gKwlpZiAoYWxsb3dfYmlnam9pbmVyICYmIElO VEVMX0dFTihpOTE1KSA+PSAxMSAmJiAhaW50ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkKClNob3Vs ZCB0aGUgZWRwIGNoZWNrIGFjdHVhbGx5IGJlIGNoZWNrIGZvciB0aGUgZWRwIHRyYW5zY29kZXIK KGllLiBwb3J0IEEpIG9uIGljbD8KCj4gKwkJcmV0dXJuIDIgKiBpOTE1LT5tYXhfZG90Y2xrX2Zy ZXE7Cj4gKwo+ICsJcmV0dXJuIGk5MTUtPm1heF9kb3RjbGtfZnJlcTsKPiArfQo+ICAKPiArc3Rh dGljIGludCBkb3duc3RyZWFtX21heF9kb3RjbG9jayhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KQo+ICt7Cj4gIAlpbnQgdHlwZSA9IGludGVsX2RwLT5kb3duc3RyZWFtX3BvcnRzWzBdICYgRFBf RFNfUE9SVF9UWVBFX01BU0s7Cj4gIAo+ICAJaWYgKHR5cGUgIT0gRFBfRFNfUE9SVF9UWVBFX1ZH QSkKPiAtCQlyZXR1cm4gbWF4X2RvdGNsazsKPiArCQlyZXR1cm4gMDsKPiAgCj4gLQlkc19tYXhf ZG90Y2xrID0gZHJtX2RwX2Rvd25zdHJlYW1fbWF4X2Nsb2NrKGludGVsX2RwLT5kcGNkLAo+IC0J CQkJCQkgICAgaW50ZWxfZHAtPmRvd25zdHJlYW1fcG9ydHMpOwo+ICsJcmV0dXJuIGRybV9kcF9k b3duc3RyZWFtX21heF9jbG9jayhpbnRlbF9kcC0+ZHBjZCwKPiArCQkJCQkgICBpbnRlbF9kcC0+ ZG93bnN0cmVhbV9wb3J0cyk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQKPiAraW50ZWxfZHBfbWF4 X2RvdGNsb2NrKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGJvb2wgYWxsb3dfYmlnam9pbmVy KQo+ICt7Cj4gKwlpbnQgbWF4X2RvdGNsayA9IHNvdXJjZV9tYXhfZG90Y2xvY2soaW50ZWxfZHAs IGFsbG93X2JpZ2pvaW5lcik7Cj4gKwlpbnQgZHNfbWF4X2RvdGNsayA9IGRvd25zdHJlYW1fbWF4 X2RvdGNsb2NrKGludGVsX2RwKTsKPiAgCj4gIAlpZiAoZHNfbWF4X2RvdGNsayAhPSAwKQo+IC0J CW1heF9kb3RjbGsgPSBtaW4obWF4X2RvdGNsaywgZHNfbWF4X2RvdGNsayk7Cj4gKwkJcmV0dXJu IG1pbihtYXhfZG90Y2xrLCBkc19tYXhfZG90Y2xrKTsKPiAgCj4gIAlyZXR1cm4gbWF4X2RvdGNs azsKPiAgfQo+IEBAIC01MDYsNyArNTE4LDggQEAgc21hbGxfam9pbmVyX3JhbV9zaXplX2JpdHMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIAo+ICBzdGF0aWMgdTE2IGludGVsX2Rw X2RzY19nZXRfb3V0cHV0X2JwcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgCQkJ CSAgICAgICB1MzIgbGlua19jbG9jaywgdTMyIGxhbmVfY291bnQsCj4gLQkJCQkgICAgICAgdTMy IG1vZGVfY2xvY2ssIHUzMiBtb2RlX2hkaXNwbGF5KQo+ICsJCQkJICAgICAgIHUzMiBtb2RlX2Ns b2NrLCB1MzIgbW9kZV9oZGlzcGxheSwKPiArCQkJCSAgICAgICBib29sIGJpZ2pvaW5lcikKPiAg ewo+ICAJdTMyIGJpdHNfcGVyX3BpeGVsLCBtYXhfYnBwX3NtYWxsX2pvaW5lcl9yYW07Cj4gIAlp bnQgaTsKPiBAQCAtNTI0LDYgKzUzNywxMCBAQCBzdGF0aWMgdTE2IGludGVsX2RwX2RzY19nZXRf b3V0cHV0X2JwcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgCS8qIFNtYWxsIEpv aW5lciBDaGVjazogb3V0cHV0IGJwcCA8PSBqb2luZXIgUkFNIChiaXRzKSAvIEhvcml6LiB3aWR0 aCAqLwo+ICAJbWF4X2JwcF9zbWFsbF9qb2luZXJfcmFtID0gc21hbGxfam9pbmVyX3JhbV9zaXpl X2JpdHMoaTkxNSkgLwo+ICAJCW1vZGVfaGRpc3BsYXk7Cj4gKwo+ICsJaWYgKGJpZ2pvaW5lcikK PiArCQltYXhfYnBwX3NtYWxsX2pvaW5lcl9yYW0gKj0gMjsKPiArCj4gIAlEUk1fREVCVUdfS01T KCJNYXggc21hbGwgam9pbmVyIGJwcDogJXVcbiIsIG1heF9icHBfc21hbGxfam9pbmVyX3JhbSk7 Cj4gIAo+ICAJLyoKPiBAQCAtNTMyLDYgKzU0OSwxNSBAQCBzdGF0aWMgdTE2IGludGVsX2RwX2Rz Y19nZXRfb3V0cHV0X2JwcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgCSAqLwo+ ICAJYml0c19wZXJfcGl4ZWwgPSBtaW4oYml0c19wZXJfcGl4ZWwsIG1heF9icHBfc21hbGxfam9p bmVyX3JhbSk7Cj4gIAo+ICsJaWYgKGJpZ2pvaW5lcikgewo+ICsJCXUzMiBtYXhfYnBwX2JpZ2pv aW5lciA9Cj4gKwkJCWk5MTUtPm1heF9jZGNsa19mcmVxICogNDggLwo+ICsJCQlpbnRlbF9kcF9t b2RlX3RvX2ZlY19jbG9jayhtb2RlX2Nsb2NrKTsKPiArCj4gKwkJRFJNX0RFQlVHX0tNUygiTWF4 IGJpZyBqb2luZXIgYnBwOiAldVxuIiwgbWF4X2JwcF9iaWdqb2luZXIpOwo+ICsJCWJpdHNfcGVy X3BpeGVsID0gbWluKGJpdHNfcGVyX3BpeGVsLCBtYXhfYnBwX2JpZ2pvaW5lcik7Cj4gKwl9Cj4g Kwo+ICAJLyogRXJyb3Igb3V0IGlmIHRoZSBtYXggYnBwIGlzIGxlc3MgdGhhbiBzbWFsbGVzdCBh bGxvd2VkIHZhbGlkIGJwcCAqLwo+ICAJaWYgKGJpdHNfcGVyX3BpeGVsIDwgdmFsaWRfZHNjX2Jw cFswXSkgewo+ICAJCURSTV9ERUJVR19LTVMoIlVuc3VwcG9ydGVkIEJQUCAldSwgbWluICV1XG4i LAo+IEBAIC01NTQsNyArNTgwLDggQEAgc3RhdGljIHUxNiBpbnRlbF9kcF9kc2NfZ2V0X291dHB1 dF9icHAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gIH0KPiAgCj4gIHN0YXRpYyB1 OCBpbnRlbF9kcF9kc2NfZ2V0X3NsaWNlX2NvdW50KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAs Cj4gLQkJCQkgICAgICAgaW50IG1vZGVfY2xvY2ssIGludCBtb2RlX2hkaXNwbGF5KQo+ICsJCQkJ ICAgICAgIGludCBtb2RlX2Nsb2NrLCBpbnQgbW9kZV9oZGlzcGxheSwKPiArCQkJCSAgICAgICBi b29sIGJpZ2pvaW5lcikKPiAgewo+ICAJdTggbWluX3NsaWNlX2NvdW50LCBpOwo+ICAJaW50IG1h eF9zbGljZV93aWR0aDsKPiBAQCAtNTc5LDEyICs2MDYsMjAgQEAgc3RhdGljIHU4IGludGVsX2Rw X2RzY19nZXRfc2xpY2VfY291bnQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiAgCj4gIAkv KiBGaW5kIHRoZSBjbG9zZXN0IG1hdGNoIHRvIHRoZSB2YWxpZCBzbGljZSBjb3VudCB2YWx1ZXMg Ki8KPiAgCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHZhbGlkX2RzY19zbGljZWNvdW50KTsg aSsrKSB7Cj4gLQkJaWYgKHZhbGlkX2RzY19zbGljZWNvdW50W2ldID4KPiAtCQkgICAgZHJtX2Rw X2RzY19zaW5rX21heF9zbGljZV9jb3VudChpbnRlbF9kcC0+ZHNjX2RwY2QsCj4gLQkJCQkJCSAg ICBmYWxzZSkpCj4gKwkJdTggdGVzdF9zbGljZV9jb3VudCA9IGJpZ2pvaW5lciA/CgpUaGUgdGVz dF8gcHJlZml4IGlzIHRocm93aW5nIG1lIG9mZi4gSnVzdCBzbGljZV9jb3VudD8KCj4gKwkJCTIg KiB2YWxpZF9kc2Nfc2xpY2Vjb3VudFtpXSA6Cj4gKwkJCXZhbGlkX2RzY19zbGljZWNvdW50W2ld Owo+ICsKPiArCQlpZiAodGVzdF9zbGljZV9jb3VudCA+Cj4gKwkJICAgIGRybV9kcF9kc2Nfc2lu a19tYXhfc2xpY2VfY291bnQoaW50ZWxfZHAtPmRzY19kcGNkLCBmYWxzZSkpCj4gIAkJCWJyZWFr Owo+IC0JCWlmIChtaW5fc2xpY2VfY291bnQgIDw9IHZhbGlkX2RzY19zbGljZWNvdW50W2ldKQo+ IC0JCQlyZXR1cm4gdmFsaWRfZHNjX3NsaWNlY291bnRbaV07Cj4gKwo+ICsJCS8qIGJpZyBqb2lu ZXIgbmVlZHMgc21hbGwgam9pbmVyIHRvIGJlIGVuYWJsZWQgKi8KPiArCQlpZiAoYmlnam9pbmVy ICYmIHRlc3Rfc2xpY2VfY291bnQgPCA0KQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJaWYgKG1p bl9zbGljZV9jb3VudCA8PSB0ZXN0X3NsaWNlX2NvdW50KQoKc2xpY2VfY291bnQgPiBtaW5fc2xp Y2VfY291bnQ/IFdvdWxkIGZlZWwgYSBiaXQgbW9yZSBuYXR1cmFsdG8gbWUuCgo+ICsJCQlyZXR1 cm4gdGVzdF9zbGljZV9jb3VudDsKPiAgCX0KPiAgCj4gIAlEUk1fREVCVUdfS01TKCJVbnN1cHBv cnRlZCBTbGljZSBDb3VudCAlZFxuIiwgbWluX3NsaWNlX2NvdW50KTsKPiBAQCAtNjIzLDExICs2 NTgsMTUgQEAgaW50ZWxfZHBfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yLAo+ICAJaW50IG1heF9kb3RjbGs7Cj4gIAl1MTYgZHNjX21heF9vdXRwdXRfYnBwID0gMDsK PiAgCXU4IGRzY19zbGljZV9jb3VudCA9IDA7Cj4gKwlib29sIGRzYyA9IGZhbHNlLCBiaWdqb2lu ZXIgPSBmYWxzZTsKPiAgCj4gIAlpZiAobW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0RCTFND QU4pCj4gIAkJcmV0dXJuIE1PREVfTk9fREJMRVNDQU47Cj4gIAo+IC0JbWF4X2RvdGNsayA9IGlu dGVsX2RwX2Rvd25zdHJlYW1fbWF4X2RvdGNsb2NrKGludGVsX2RwKTsKPiArCWlmIChtb2RlLT5m bGFncyAmIERSTV9NT0RFX0ZMQUdfREJMQ0xLKQo+ICsJCXJldHVybiBNT0RFX0hfSUxMRUdBTDsK PiArCj4gKwltYXhfZG90Y2xrID0gaW50ZWxfZHBfbWF4X2RvdGNsb2NrKGludGVsX2RwLCBmYWxz ZSk7Cj4gIAo+ICAJaWYgKGludGVsX2RwX2lzX2VkcChpbnRlbF9kcCkgJiYgZml4ZWRfbW9kZSkg ewo+ICAJCWlmIChtb2RlLT5oZGlzcGxheSA+IGZpeGVkX21vZGUtPmhkaXNwbGF5KQo+IEBAIC02 MzksNiArNjc4LDIxIEBAIGludGVsX2RwX21vZGVfdmFsaWQoc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvciwKPiAgCQl0YXJnZXRfY2xvY2sgPSBmaXhlZF9tb2RlLT5jbG9jazsKPiAgCX0K PiAgCj4gKwlpZiAobW9kZS0+Y2xvY2sgPCAxMDAwMCkKPiArCQlyZXR1cm4gTU9ERV9DTE9DS19M T1c7Cj4gKwo+ICsJaWYgKHRhcmdldF9jbG9jayA+IG1heF9kb3RjbGspIHsKPiArCQlpZiAoaW50 ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkKPiArCQkJcmV0dXJuIE1PREVfQ0xPQ0tfSElHSDsKPiAr Cj4gKwkJbWF4X2RvdGNsayA9IGludGVsX2RwX21heF9kb3RjbG9jayhpbnRlbF9kcCwgdHJ1ZSk7 Cj4gKwo+ICsJCWlmICh0YXJnZXRfY2xvY2sgPiBtYXhfZG90Y2xrKQo+ICsJCQlyZXR1cm4gTU9E RV9DTE9DS19ISUdIOwo+ICsKPiArCQliaWdqb2luZXIgPSB0cnVlOwo+ICsJfQo+ICsKPiAgCW1h eF9saW5rX2Nsb2NrID0gaW50ZWxfZHBfbWF4X2xpbmtfcmF0ZShpbnRlbF9kcCk7Cj4gIAltYXhf bGFuZXMgPSBpbnRlbF9kcF9tYXhfbGFuZV9jb3VudChpbnRlbF9kcCk7Cj4gIAo+IEBAIC02NjYs MjMgKzcyMCwyOCBAQCBpbnRlbF9kcF9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IsCj4gIAkJCQkJCQkgICAgbWF4X2xpbmtfY2xvY2ssCj4gIAkJCQkJCQkgICAgbWF4 X2xhbmVzLAo+ICAJCQkJCQkJICAgIHRhcmdldF9jbG9jaywKPiAtCQkJCQkJCSAgICBtb2RlLT5o ZGlzcGxheSkgPj4gNDsKPiArCQkJCQkJCSAgICBtb2RlLT5oZGlzcGxheSwKPiArCQkJCQkJCSAg ICBiaWdqb2luZXIpID4+IDQ7Cj4gIAkJCWRzY19zbGljZV9jb3VudCA9Cj4gIAkJCQlpbnRlbF9k cF9kc2NfZ2V0X3NsaWNlX2NvdW50KGludGVsX2RwLAo+ICAJCQkJCQkJICAgICB0YXJnZXRfY2xv Y2ssCj4gLQkJCQkJCQkgICAgIG1vZGUtPmhkaXNwbGF5KTsKPiArCQkJCQkJCSAgICAgbW9kZS0+ aGRpc3BsYXksCj4gKwkJCQkJCQkgICAgIGJpZ2pvaW5lcik7Cj4gIAkJfQo+ICsKPiArCQlkc2Mg PSBkc2NfbWF4X291dHB1dF9icHAgJiYgZHNjX3NsaWNlX2NvdW50Owo+ICAJfQo+ICAKPiAtCWlm ICgobW9kZV9yYXRlID4gbWF4X3JhdGUgJiYgIShkc2NfbWF4X291dHB1dF9icHAgJiYgZHNjX3Ns aWNlX2NvdW50KSkgfHwKPiAtCSAgICB0YXJnZXRfY2xvY2sgPiBtYXhfZG90Y2xrKQo+ICsJLyog YmlnIGpvaW5lciBjb25maWd1cmF0aW9uIG5lZWRzIERTQyAqLwo+ICsJaWYgKGJpZ2pvaW5lciAm JiAhZHNjKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiTGluayBjbG9jayBuZWVkcyBiaWdqb2luZXIs IGJ1dCBEU0Mgb3IgRkVDIG5vdCBhdmFpbGFibGVcbiIpOwoKSSBkb24ndCB0aGluayB3ZSBzcGV3 IGRlYnVncyBmcm9tIG1vZGVfdmFsaWQoKSBlbHNld2hlcmUuCgo+ICAJCXJldHVybiBNT0RFX0NM T0NLX0hJR0g7Cj4gKwl9Cj4gIAo+IC0JaWYgKG1vZGUtPmNsb2NrIDwgMTAwMDApCj4gLQkJcmV0 dXJuIE1PREVfQ0xPQ0tfTE9XOwo+IC0KPiAtCWlmIChtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZM QUdfREJMQ0xLKQo+IC0JCXJldHVybiBNT0RFX0hfSUxMRUdBTDsKPiArCWlmIChtb2RlX3JhdGUg PiBtYXhfcmF0ZSAmJiAhZHNjKSB7CgpOb3QgYSBodWdlIGZhbiBvZiB0aGlzIGRzYyBib29sZWFu LiBXb3VsZCBmZWVsIG1vcmUgbmF0dXJhbCBpZiB0aGUgZHNjCnRoaW5nIHdvdWxkIGNvbXB1dGUg YSBuZXcgbW9kZV9yYXRlIHdpdGggbWF4IGFjaGlldmFibGUgY29tcHJlc3Npb24sCm9yIHNvbWV0 aGluZyBhbG9uZyB0aG9zZSBsaW5lcy4gQnV0IHRoaXMgY291bGQgYmUgY2xlYW5lZCB1cCBsYXRl ci4KCj4gKwkJRFJNX0RFQlVHX0tNUygiQ2Fubm90IGRyaXZlIHdpdGhvdXQgRFNDXG4iKTsKPiAr CQlyZXR1cm4gTU9ERV9DTE9DS19ISUdIOwo+ICsJfQo+ICAKPiAgCXJldHVybiBpbnRlbF9tb2Rl X3ZhbGlkX21heF9wbGFuZV9zaXplKGRldl9wcml2LCBtb2RlKTsKPiAgfQo+IEBAIC0yMTA0LDEx ICsyMTYzLDEzIEBAIHN0YXRpYyBpbnQgaW50ZWxfZHBfZHNjX2NvbXB1dGVfY29uZmlnKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAkJCQkJCSAgICBwaXBlX2NvbmZpZy0+cG9ydF9jbG9j aywKPiAgCQkJCQkJICAgIHBpcGVfY29uZmlnLT5sYW5lX2NvdW50LAo+ICAJCQkJCQkgICAgYWRq dXN0ZWRfbW9kZS0+Y3J0Y19jbG9jaywKPiAtCQkJCQkJICAgIGFkanVzdGVkX21vZGUtPmNydGNf aGRpc3BsYXkpOwo+ICsJCQkJCQkgICAgYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheSwKPiAr CQkJCQkJICAgIGZhbHNlKTsKPiAgCQlkc2NfZHBfc2xpY2VfY291bnQgPQo+ICAJCQlpbnRlbF9k cF9kc2NfZ2V0X3NsaWNlX2NvdW50KGludGVsX2RwLAo+ICAJCQkJCQkgICAgIGFkanVzdGVkX21v ZGUtPmNydGNfY2xvY2ssCj4gLQkJCQkJCSAgICAgYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxh eSk7Cj4gKwkJCQkJCSAgICAgYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheSwKPiArCQkJCQkJ ICAgICBmYWxzZSk7Cj4gIAkJaWYgKCFkc2NfbWF4X291dHB1dF9icHAgfHwgIWRzY19kcF9zbGlj ZV9jb3VudCkgewo+ICAJCQlEUk1fREVCVUdfS01TKCJDb21wcmVzc2VkIEJQUC9TbGljZSBDb3Vu dCBub3Qgc3VwcG9ydGVkXG4iKTsKPiAgCQkJcmV0dXJuIC1FSU5WQUw7Cj4gLS0gCj4gMi4yNC4w Cj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJ bnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 CgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeA==