From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH v2 19/23] drm/i915/icl: Reserve all required PLLs for TypeC ports Date: Tue, 18 Jun 2019 21:02:16 +0300 Message-ID: <20190618180216.GA28409@ideak-desk.fi.intel.com> References: <20190604145826.16424-20-imre.deak@intel.com> <20190607174129.18725-1-imre.deak@intel.com> <20190618172552.GT5942@intel.com> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id D34CB6E215 for ; Tue, 18 Jun 2019 18:02:18 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190618172552.GT5942@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBKdW4gMTgsIDIwMTkgYXQgMDg6MjU6NTJQTSArMDMwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIEZyaSwgSnVuIDA3LCAyMDE5IGF0IDA4OjQxOjI5UE0gKzAzMDAsIEltcmUg RGVhayB3cm90ZToKPiA+IFdoZW4gZW5hYmxpbmcgYSBUeXBlQyBwb3J0IHdlIG5lZWQgdG8gcmVz ZXJ2ZSBhbGwgdGhlIHJlcXVpcmVkIFBMTHMgZm9yCj4gPiBpdCwgdGhlIFRCVCBQTEwgZm9yIFRC VC1hbHQgYW5kIHRoZSBNRyBQSFkgUExMIGZvciBEUC1hbHQvbGVnYWN5IHNpbmtzLgo+ID4gV2Ug Y2FuIHNlbGVjdCB0aGUgcHJvcGVyIFBMTCBmb3IgdGhlIGN1cnJlbnQgcG9ydCBtb2RlIGZyb20g dGhlIHJlc2VydmVkCj4gPiBQTExzIG9ubHkgb25jZSB3ZSBzZWxlY3RlZCBhbmQgbG9ja2VkIGRv d24gdGhlIHBvcnQgbW9kZSBmb3IgdGhlIHdob2xlCj4gPiBkdXJhdGlvbiBvZiB0aGUgcG9ydCdz IGFjdGl2ZSBzdGF0ZS4gUmVzZXR0aW5nIGFuZCBsb2NraW5nIGRvd24gdGhlIHBvcnQKPiA+IG1v ZGUgY2FuIGluIHR1cm4gaGFwcGVuIG9ubHkgZHVyaW5nIHRoZSBtb2Rlc2V0IGNvbW1pdCBwaGFz ZSBvbmNlIHdlCj4gPiBkaXNhYmxlZCB0aGUgZ2l2ZW4gcG9ydCBhbmQgdGhlIFBMTCBpdCB1c2Vk Lgo+ID4gCj4gPiBUbyBzdXBwb3J0IHRoZSBhYm92ZSByZXNlcnZlLWFuZC1zZWxlY3QgUExMIHNl bWFudGljIHdlIHN0b3JlIHRoZQo+ID4gcmVzZXJ2ZWQgUExMcyBhbG9uZyB3aXRoIHRoZWlyIEhX IHN0YXRlIGluIHRoZSBDUlRDIHN0YXRlIGFuZCBwcm92aWRlIGEKPiA+IHdheSB0byBzZWxlY3Qg dGhlIGFjdGl2ZSBQTEwgZnJvbSB0aGVzZS4gVGhlIHNlbGVjdGVkIFBMTCBhbG9uZyB3aXRoIGl0 cwo+ID4gSFcgc3RhdGUgd2lsbCBiZSBwb2ludGVkIGF0IGJ5IGNydGNfc3RhdGUtPnNoYXJlZF9k cGxsL2RwbGxfaHdfc3RhdGUgYXMKPiA+IGluIHRoZSBjYXNlIG9mIG90aGVyIHBvcnQgdHlwZXMu Cj4gPiAKPiA+IEJlc2lkZXMgcmVzZXJ2aW5nIGFsbCByZXF1aXJlZCBQTExzIG5vIGZ1bmN0aW9u YWwgY2hhbmdlcy4KPiA+IAo+ID4gdjI6Cj4gPiAtIEZpeCByZWxlYXNpbmcgdGhlIElDTCBQTExz LCBub3QgY2xlYXJpbmcgdGhlIFBMTHMgZnJvbSB0aGUgb2xkCj4gPiAgIGNydGNfc3RhdGUuCj4g PiAKPiA+IENjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29t Pgo+ID4gQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Cj4gPiBDYzog TWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiA+ IFNpZ25lZC1vZmYtYnk6IEltcmUgRGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KPiA+IC0tLQo+ ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgfCAgMTEgKy0KPiA+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jIHwgMTUxICsrKysrKysrKysrKysr KysrKystLS0tLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuaCB8 ICAgOSArKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgfCAgIDkg KysKPiA+ICA0IGZpbGVzIGNoYW5nZWQsIDEzOCBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMo LSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gaW5kZXggNzM4 MWZiMmUxMjQwLi4wMDZiZTNjM2YxYmQgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+ID4gQEAgLTk4ODAsNiArOTg4MCw3IEBAIHN0YXRpYyB2b2lkIGljZWxha2Vf Z2V0X2RkaV9wbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gIAkJCQll bnVtIHBvcnQgcG9ydCwKPiA+ICAJCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29u ZmlnKQo+ID4gIHsKPiA+ICsJZW51bSBpY2xfcG9ydF9kcGxsX2lkIHBvcnRfZHBsbF9pZDsKPiA+ ICAJZW51bSBpbnRlbF9kcGxsX2lkIGlkOwo+ID4gIAl1MzIgdGVtcDsKPiA+ICAKPiA+IEBAIC05 ODg3LDIyICs5ODg4LDI4IEBAIHN0YXRpYyB2b2lkIGljZWxha2VfZ2V0X2RkaV9wbGwoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gIAkJdGVtcCA9IEk5MTVfUkVBRChEUENM S0FfQ0ZHQ1IwX0lDTCkgJgo+ID4gIAkJICAgICAgIERQQ0xLQV9DRkdDUjBfRERJX0NMS19TRUxf TUFTSyhwb3J0KTsKPiA+ICAJCWlkID0gdGVtcCA+PiBEUENMS0FfQ0ZHQ1IwX0RESV9DTEtfU0VM X1NISUZUKHBvcnQpOwo+ID4gKwkJcG9ydF9kcGxsX2lkID0gSUNMX1BPUlRfRFBMTF9ERUZBVUxU Owo+ID4gIAl9IGVsc2UgaWYgKGludGVsX3BvcnRfaXNfdGMoZGV2X3ByaXYsIHBvcnQpKSB7Cj4g PiAgCQl1MzIgY2xrX3NlbCA9IEk5MTVfUkVBRChERElfQ0xLX1NFTChwb3J0KSkgJiBERElfQ0xL X1NFTF9NQVNLOwo+ID4gIAo+ID4gIAkJaWYgKGNsa19zZWwgPT0gRERJX0NMS19TRUxfTUcpIHsK PiA+ICAJCQlpZCA9IGljbF90Y19wb3J0X3RvX3BsbF9pZChpbnRlbF9wb3J0X3RvX3RjKGRldl9w cml2LAo+ID4gIAkJCQkJCQkJICAgIHBvcnQpKTsKPiA+ICsJCQlwb3J0X2RwbGxfaWQgPSBJQ0xf UE9SVF9EUExMX01HX1BIWTsKPiA+ICAJCX0gZWxzZSB7Cj4gPiAgCQkJV0FSTl9PTihjbGtfc2Vs IDwgRERJX0NMS19TRUxfVEJUXzE2Mik7Cj4gPiAgCQkJaWQgPSBEUExMX0lEX0lDTF9UQlRQTEw7 Cj4gPiArCQkJcG9ydF9kcGxsX2lkID0gSUNMX1BPUlRfRFBMTF9ERUZBVUxUOwo+ID4gIAkJfQo+ ID4gIAl9IGVsc2Ugewo+ID4gIAkJV0FSTigxLCAiSW52YWxpZCBwb3J0ICV4XG4iLCBwb3J0KTsK PiA+ICAJCXJldHVybjsKPiA+ICAJfQo+ID4gIAo+ID4gLQlwaXBlX2NvbmZpZy0+c2hhcmVkX2Rw bGwgPSBpbnRlbF9nZXRfc2hhcmVkX2RwbGxfYnlfaWQoZGV2X3ByaXYsIGlkKTsKPiA+ICsJcGlw ZV9jb25maWctPmljbF9wb3J0X2RwbGxzW3BvcnRfZHBsbF9pZF0ucGxsID0KPiA+ICsJCWludGVs X2dldF9zaGFyZWRfZHBsbF9ieV9pZChkZXZfcHJpdiwgaWQpOwo+ID4gKwo+ID4gKwlpY2xfc2V0 X2FjdGl2ZV9wb3J0X2RwbGwocGlwZV9jb25maWcsIHBvcnRfZHBsbF9pZCk7Cj4gPiAgfQo+ID4g IAo+ID4gIHN0YXRpYyB2b2lkIGJ4dF9nZXRfZGRpX3BsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gPiBAQCAtMTIwNDEsNiArMTIwNDgsOCBAQCBjbGVhcl9pbnRlbF9jcnRj X3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ID4gIAlzYXZlZF9z dGF0ZS0+c2NhbGVyX3N0YXRlID0gY3J0Y19zdGF0ZS0+c2NhbGVyX3N0YXRlOwo+ID4gIAlzYXZl ZF9zdGF0ZS0+c2hhcmVkX2RwbGwgPSBjcnRjX3N0YXRlLT5zaGFyZWRfZHBsbDsKPiA+ICAJc2F2 ZWRfc3RhdGUtPmRwbGxfaHdfc3RhdGUgPSBjcnRjX3N0YXRlLT5kcGxsX2h3X3N0YXRlOwo+ID4g KwltZW1jcHkoc2F2ZWRfc3RhdGUtPmljbF9wb3J0X2RwbGxzLCBjcnRjX3N0YXRlLT5pY2xfcG9y dF9kcGxscywKPiA+ICsJICAgICAgIHNpemVvZihzYXZlZF9zdGF0ZS0+aWNsX3BvcnRfZHBsbHMp KTsKPiA+ICAJc2F2ZWRfc3RhdGUtPmNyY19lbmFibGVkID0gY3J0Y19zdGF0ZS0+Y3JjX2VuYWJs ZWQ7Cj4gPiAgCWlmIChJU19HNFgoZGV2X3ByaXYpIHx8Cj4gPiAgCSAgICBJU19WQUxMRVlWSUVX KGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHBsbF9tZ3IuYwo+ID4gaW5kZXggOGFjMjkzZGI0M2E1Li4xNzQ0MWQ1Zjk5MGUg MTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jCj4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jCj4gPiBAQCAtMjg1 NiwzNCArMjg1Niw3OSBAQCBzdGF0aWMgYm9vbCBpY2xfY2FsY19tZ19wbGxfc3RhdGUoc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gPiAgCXJldHVybiB0cnVlOwo+ID4gIH0K PiA+ICAKPiA+ICsvKioKPiA+ICsgKiBpY2xfc2V0X2FjdGl2ZV9wb3J0X2RwbGwgLSBzZWxlY3Qg dGhlIGFjdGl2ZSBwb3J0IERQTEwgZm9yIGEgZ2l2ZW4gQ1JUQwo+ID4gKyAqIEBjcnRjX3N0YXRl OiBzdGF0ZSBmb3IgdGhlIENSVEMgdG8gc2VsZWN0IHRoZSBEUExMIGZvcgo+ID4gKyAqIEBwb3J0 X2RwbGxfaWQ6IHRoZSBhY3RpdmUgQHBvcnRfZHBsbF9pZCB0byBzZWxlY3QKPiA+ICsgKgo+ID4g KyAqIFNlbGVjdCB0aGUgZ2l2ZW4gQHBvcnRfZHBsbF9pZCBpbnN0YW5jZSBmcm9tIHRoZSBEUExM cyByZXNlcnZlZCBmb3IgdGhlCj4gPiArICogQ1JUQy4KPiA+ICsgKi8KPiA+ICt2b2lkIGljbF9z ZXRfYWN0aXZlX3BvcnRfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK PiA+ICsJCQkgICAgICBlbnVtIGljbF9wb3J0X2RwbGxfaWQgcG9ydF9kcGxsX2lkKQo+ID4gK3sK PiA+ICsJc3RydWN0IGljbF9wb3J0X2RwbGwgKnBvcnRfZHBsbCA9Cj4gPiArCQkmY3J0Y19zdGF0 ZS0+aWNsX3BvcnRfZHBsbHNbcG9ydF9kcGxsX2lkXTsKPiA+ICsKPiA+ICsJY3J0Y19zdGF0ZS0+ c2hhcmVkX2RwbGwgPSBwb3J0X2RwbGwtPnBsbDsKPiA+ICsJY3J0Y19zdGF0ZS0+ZHBsbF9od19z dGF0ZSA9IHBvcnRfZHBsbC0+aHdfc3RhdGU7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lk IGljbF91cGRhdGVfYWN0aXZlX2RwbGwoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUs Cj4gPiArCQkJCSAgIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ID4gKwkJCQkgICBzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiA+ICt7Cj4gPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlID0KPiA+ICsJCWludGVsX2F0b21pY19nZXRfbmV3X2NydGNfc3RhdGUo c3RhdGUsIGNydGMpOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpwcmltYXJ5X3Bv cnQ7Cj4gPiArCWVudW0gaWNsX3BvcnRfZHBsbF9pZCBwb3J0X2RwbGxfaWQ7Cj4gPiArCj4gPiAr CXByaW1hcnlfcG9ydCA9IGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0RQX01TVCA/Cj4g PiArCQllbmNfdG9fbXN0KCZlbmNvZGVyLT5iYXNlKS0+cHJpbWFyeSA6Cj4gPiArCQllbmNfdG9f ZGlnX3BvcnQoJmVuY29kZXItPmJhc2UpOwo+ID4gKwo+ID4gKwlzd2l0Y2ggKHByaW1hcnlfcG9y dC0+dGNfbW9kZSkgewo+ID4gKwljYXNlIFRDX1BPUlRfVEJUX0FMVDoKPiA+ICsJCXBvcnRfZHBs bF9pZCA9IElDTF9QT1JUX0RQTExfREVGQVVMVDsKPiA+ICsJCWJyZWFrOwo+ID4gKwljYXNlIFRD X1BPUlRfRFBfQUxUOgo+ID4gKwljYXNlIFRDX1BPUlRfTEVHQUNZOgo+ID4gKwkJcG9ydF9kcGxs X2lkID0gSUNMX1BPUlRfRFBMTF9NR19QSFk7Cj4gPiArCQlicmVhazsKPiA+ICsJfQo+ID4gKwo+ ID4gKwlpY2xfc2V0X2FjdGl2ZV9wb3J0X2RwbGwoY3J0Y19zdGF0ZSwgcG9ydF9kcGxsX2lkKTsK PiA+ICt9Cj4gPiArCj4gPiAgc3RhdGljIGJvb2wgaWNsX2dldF9jb21ib19waHlfZHBsbChzdHJ1 Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiA+ICAJCQkJICAgc3RydWN0IGludGVsX2Ny dGMgKmNydGMsCj4gPiAgCQkJCSAgIHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ID4g IHsKPiA+ICAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPQo+ID4gIAkJaW50 ZWxfYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7Cj4gPiAtCXN0cnVjdCBp bnRlbF9zaGFyZWRfZHBsbCAqcGxsOwo+ID4gKwlzdHJ1Y3QgaWNsX3BvcnRfZHBsbCAqcG9ydF9k cGxsID0KPiA+ICsJCSZjcnRjX3N0YXRlLT5pY2xfcG9ydF9kcGxsc1tJQ0xfUE9SVF9EUExMX0RF RkFVTFRdOwo+ID4gIAo+ID4gLQlpZiAoIWljbF9jYWxjX2RwbGxfc3RhdGUoY3J0Y19zdGF0ZSwg ZW5jb2RlciwKPiA+IC0JCQkJICZjcnRjX3N0YXRlLT5kcGxsX2h3X3N0YXRlKSkgewo+ID4gKwlp ZiAoIWljbF9jYWxjX2RwbGxfc3RhdGUoY3J0Y19zdGF0ZSwgZW5jb2RlciwgJnBvcnRfZHBsbC0+ aHdfc3RhdGUpKSB7Cj4gPiAgCQlEUk1fREVCVUdfS01TKCJDb3VsZCBub3QgY2FsY3VsYXRlIGNv bWJvIFBIWSBQTEwgc3RhdGUuXG4iKTsKPiA+ICAKPiA+ICAJCXJldHVybiBmYWxzZTsKPiA+ICAJ fQo+ID4gIAo+ID4gLQlwbGwgPSBpbnRlbF9maW5kX3NoYXJlZF9kcGxsKHN0YXRlLCBjcnRjLCAm Y3J0Y19zdGF0ZS0+ZHBsbF9od19zdGF0ZSwKPiA+IC0JCQkJICAgICBEUExMX0lEX0lDTF9EUExM MCwKPiA+IC0JCQkJICAgICBEUExMX0lEX0lDTF9EUExMMSk7Cj4gPiAtCWlmICghcGxsKSB7Cj4g PiArCXBvcnRfZHBsbC0+cGxsID0gaW50ZWxfZmluZF9zaGFyZWRfZHBsbChzdGF0ZSwgY3J0YywK PiA+ICsJCQkJCQkmcG9ydF9kcGxsLT5od19zdGF0ZSwKPiA+ICsJCQkJCQlEUExMX0lEX0lDTF9E UExMMCwKPiA+ICsJCQkJCQlEUExMX0lEX0lDTF9EUExMMSk7Cj4gPiArCWlmICghcG9ydF9kcGxs LT5wbGwpIHsKPiA+ICAJCURSTV9ERUJVR19LTVMoIk5vIGNvbWJvIFBIWSBQTEwgZm91bmQgZm9y IHBvcnQgJWNcbiIsCj4gPiAgCQkJICAgICAgcG9ydF9uYW1lKGVuY29kZXItPnBvcnQpKTsKPiA+ ICAJCXJldHVybiBmYWxzZTsKPiA+ICAJfQo+ID4gIAo+ID4gIAlpbnRlbF9yZWZlcmVuY2Vfc2hh cmVkX2RwbGwoc3RhdGUsIGNydGMsCj4gPiAtCQkJCSAgICBwbGwsICZjcnRjX3N0YXRlLT5kcGxs X2h3X3N0YXRlKTsKPiA+ICsJCQkJICAgIHBvcnRfZHBsbC0+cGxsLCAmcG9ydF9kcGxsLT5od19z dGF0ZSk7Cj4gPiAgCj4gPiAtCWNydGNfc3RhdGUtPnNoYXJlZF9kcGxsID0gcGxsOwo+ID4gKwlp Y2xfdXBkYXRlX2FjdGl2ZV9kcGxsKHN0YXRlLCBjcnRjLCBlbmNvZGVyKTsKPiA+ICAKPiA+ICAJ cmV0dXJuIHRydWU7Cj4gPiAgfQo+ID4gQEAgLTI4OTUsNDkgKzI5NDAsNTUgQEAgc3RhdGljIGJv b2wgaWNsX2dldF90Y19waHlfZHBsbHMoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUs Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUt PmJhc2UuZGV2KTsKPiA+ICAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPQo+ ID4gIAkJaW50ZWxfYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7Cj4gPiAt CWVudW0gdGNfcG9ydCB0Y19wb3J0ID0gaW50ZWxfcG9ydF90b190YyhkZXZfcHJpdiwgZW5jb2Rl ci0+cG9ydCk7Cj4gPiAtCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0Owo+ID4g LQlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbDsKPiA+IC0JZW51bSBpbnRlbF9kcGxsX2lk IG1pbiwgbWF4Owo+ID4gLQlib29sIHJldDsKPiA+IC0KPiA+IC0JaWYgKGVuY29kZXItPnR5cGUg PT0gSU5URUxfT1VUUFVUX0RQX01TVCkKPiA+IC0JCWRpZ19wb3J0ID0gZW5jX3RvX21zdCgmZW5j b2Rlci0+YmFzZSktPnByaW1hcnk7Cj4gPiAtCWVsc2UKPiA+IC0JCWRpZ19wb3J0ID0gZW5jX3Rv X2RpZ19wb3J0KCZlbmNvZGVyLT5iYXNlKTsKPiA+ICsJc3RydWN0IGljbF9wb3J0X2RwbGwgKnBv cnRfZHBsbCA9Cj4gPiArCQkmY3J0Y19zdGF0ZS0+aWNsX3BvcnRfZHBsbHNbSUNMX1BPUlRfRFBM TF9ERUZBVUxUXTsKPiAKPiBJIHdvdWxkIG1vdmUgdGhhdCBpbml0aWFsaXphdGlvbiBuZXh0IHRv IHRoZSBjb2RlIHNvIHRoYXQgdGhlCj4gdGJ0IHZzLiBtZyBjYXNlcyBsb29rIG1vcmUgbGlrZSB0 d2lucy4KCk9rLgoKPiAKPiA+ICsJZW51bSBpbnRlbF9kcGxsX2lkIGRwbGxfaWQ7Cj4gPiAgCj4g PiAtCWlmIChkaWdfcG9ydC0+dGNfbW9kZSA9PSBUQ19QT1JUX1RCVF9BTFQpIHsKPiA+IC0JCW1p biA9IERQTExfSURfSUNMX1RCVFBMTDsKPiA+IC0JCW1heCA9IG1pbjsKPiA+IC0JCXJldCA9IGlj bF9jYWxjX2RwbGxfc3RhdGUoY3J0Y19zdGF0ZSwgZW5jb2RlciwKPiA+IC0JCQkJCSAgJmNydGNf c3RhdGUtPmRwbGxfaHdfc3RhdGUpOwo+ID4gLQl9IGVsc2Ugewo+ID4gLQkJbWluID0gaWNsX3Rj X3BvcnRfdG9fcGxsX2lkKHRjX3BvcnQpOwo+ID4gLQkJbWF4ID0gbWluOwo+ID4gLQkJcmV0ID0g aWNsX2NhbGNfbWdfcGxsX3N0YXRlKGNydGNfc3RhdGUsCj4gPiAtCQkJCQkgICAgJmNydGNfc3Rh dGUtPmRwbGxfaHdfc3RhdGUpOwo+ID4gKwlpZiAoIWljbF9jYWxjX2RwbGxfc3RhdGUoY3J0Y19z dGF0ZSwgZW5jb2RlciwgJnBvcnRfZHBsbC0+aHdfc3RhdGUpKSB7Cj4gPiArCQlEUk1fREVCVUdf S01TKCJDb3VsZCBub3QgY2FsY3VsYXRlIFRCVCBQTEwgc3RhdGUuXG4iKTsKPiA+ICsJCXJldHVy biBmYWxzZTsKPiA+ICAJfQo+ID4gIAo+ID4gLQlpZiAoIXJldCkgewo+ID4gLQkJRFJNX0RFQlVH X0tNUygiQ291bGQgbm90IGNhbGN1bGF0ZSBQTEwgc3RhdGUuXG4iKTsKPiA+ICsJcG9ydF9kcGxs LT5wbGwgPSBpbnRlbF9maW5kX3NoYXJlZF9kcGxsKHN0YXRlLCBjcnRjLAo+ID4gKwkJCQkJCSZw b3J0X2RwbGwtPmh3X3N0YXRlLAo+ID4gKwkJCQkJCURQTExfSURfSUNMX1RCVFBMTCwKPiA+ICsJ CQkJCQlEUExMX0lEX0lDTF9UQlRQTEwpOwo+ID4gKwlpZiAoIXBvcnRfZHBsbC0+cGxsKSB7Cj4g PiArCQlEUk1fREVCVUdfS01TKCJObyBUQlQtQUxUIFBMTCBmb3VuZFxuIik7Cj4gPiAgCQlyZXR1 cm4gZmFsc2U7Cj4gPiAgCX0KPiA+ICsJaW50ZWxfcmVmZXJlbmNlX3NoYXJlZF9kcGxsKHN0YXRl LCBjcnRjLAo+ID4gKwkJCQkgICAgcG9ydF9kcGxsLT5wbGwsICZwb3J0X2RwbGwtPmh3X3N0YXRl KTsKPiA+ICAKPiA+ICAKPiA+IC0JcGxsID0gaW50ZWxfZmluZF9zaGFyZWRfZHBsbChzdGF0ZSwg Y3J0YywKPiA+IC0JCQkJICAgICAmY3J0Y19zdGF0ZS0+ZHBsbF9od19zdGF0ZSwKPiA+IC0JCQkJ ICAgICBtaW4sIG1heCk7Cj4gPiAtCWlmICghcGxsKSB7Cj4gPiAtCQlEUk1fREVCVUdfS01TKCJO byBQTEwgc2VsZWN0ZWRcbiIpOwo+ID4gLQkJcmV0dXJuIGZhbHNlOwo+ID4gKwlwb3J0X2RwbGwg PSAmY3J0Y19zdGF0ZS0+aWNsX3BvcnRfZHBsbHNbSUNMX1BPUlRfRFBMTF9NR19QSFldOwo+ID4g KwlpZiAoIWljbF9jYWxjX21nX3BsbF9zdGF0ZShjcnRjX3N0YXRlLCAmcG9ydF9kcGxsLT5od19z dGF0ZSkpIHsKPiA+ICsJCURSTV9ERUJVR19LTVMoIkNvdWxkIG5vdCBjYWxjdWxhdGUgTUcgUEhZ IFBMTCBzdGF0ZS5cbiIpOwo+ID4gKwkJZ290byBlcnJfdW5yZWZlcmVuY2VfdGJ0X3BsbDsKPiA+ ICAJfQo+ID4gIAo+ID4gKwlkcGxsX2lkID0gaWNsX3RjX3BvcnRfdG9fcGxsX2lkKGludGVsX3Bv cnRfdG9fdGMoZGV2X3ByaXYsCj4gPiArCQkJCQkJCSBlbmNvZGVyLT5wb3J0KSk7Cj4gPiArCXBv cnRfZHBsbC0+cGxsID0gaW50ZWxfZmluZF9zaGFyZWRfZHBsbChzdGF0ZSwgY3J0YywKPiA+ICsJ CQkJCQkmcG9ydF9kcGxsLT5od19zdGF0ZSwKPiA+ICsJCQkJCQlkcGxsX2lkLAo+ID4gKwkJCQkJ CWRwbGxfaWQpOwo+ID4gKwlpZiAoIXBvcnRfZHBsbC0+cGxsKSB7Cj4gPiArCQlEUk1fREVCVUdf S01TKCJObyBNRyBQSFkgUExMIGZvdW5kXG4iKTsKPiA+ICsJCWdvdG8gZXJyX3VucmVmZXJlbmNl X3RidF9wbGw7Cj4gPiArCX0KPiA+ICAJaW50ZWxfcmVmZXJlbmNlX3NoYXJlZF9kcGxsKHN0YXRl LCBjcnRjLAo+ID4gLQkJCQkgICAgcGxsLCAmY3J0Y19zdGF0ZS0+ZHBsbF9od19zdGF0ZSk7Cj4g PiArCQkJCSAgICBwb3J0X2RwbGwtPnBsbCwgJnBvcnRfZHBsbC0+aHdfc3RhdGUpOwo+ID4gIAo+ ID4gLQljcnRjX3N0YXRlLT5zaGFyZWRfZHBsbCA9IHBsbDsKPiA+ICsJaWNsX3VwZGF0ZV9hY3Rp dmVfZHBsbChzdGF0ZSwgY3J0YywgZW5jb2Rlcik7Cj4gPiAgCj4gPiAgCXJldHVybiB0cnVlOwo+ ID4gKwo+ID4gK2Vycl91bnJlZmVyZW5jZV90YnRfcGxsOgo+ID4gKwlwb3J0X2RwbGwgPSAmY3J0 Y19zdGF0ZS0+aWNsX3BvcnRfZHBsbHNbSUNMX1BPUlRfRFBMTF9ERUZBVUxUXTsKPiA+ICsJaW50 ZWxfdW5yZWZlcmVuY2Vfc2hhcmVkX2RwbGwoc3RhdGUsIGNydGMsIHBvcnRfZHBsbC0+cGxsKTsK PiA+ICsKPiA+ICsJcmV0dXJuIGZhbHNlOwo+ID4gIH0KPiA+ICAKPiA+ICBzdGF0aWMgYm9vbCBp Y2xfZ2V0X2RwbGxzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ID4gQEAgLTI5 NTcsNiArMzAwOCwyNCBAQCBzdGF0aWMgYm9vbCBpY2xfZ2V0X2RwbGxzKHN0cnVjdCBpbnRlbF9h dG9taWNfc3RhdGUgKnN0YXRlLAo+ID4gIAlyZXR1cm4gZmFsc2U7Cj4gPiAgfQo+ID4gIAo+ID4g K3N0YXRpYyB2b2lkIGljbF9wdXRfZHBsbHMoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3Rh dGUsCj4gPiArCQkJICBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiA+ICt7Cj4gPiArCXN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0KPiA+ICsJCWludGVsX2F0b21pY19nZXRf b2xkX2NydGNfc3RhdGUoc3RhdGUsIGNydGMpOwo+ID4gKwllbnVtIGljbF9wb3J0X2RwbGxfaWQg aWQ7Cj4gPiArCj4gPiArCWZvciAoaWQgPSBJQ0xfUE9SVF9EUExMX0RFRkFVTFQ7IGlkIDwgSUNM X1BPUlRfRFBMTF9DT1VOVDsgaWQrKykgewo+ID4gKwkJc3RydWN0IGljbF9wb3J0X2RwbGwgKnBv cnRfZHBsbCA9Cj4gPiArCQkJJmNydGNfc3RhdGUtPmljbF9wb3J0X2RwbGxzW2lkXTsKPiA+ICsK PiA+ICsJCWlmICghcG9ydF9kcGxsLT5wbGwpCj4gPiArCQkJY29udGludWU7Cj4gPiArCj4gPiAr CQlpbnRlbF91bnJlZmVyZW5jZV9zaGFyZWRfZHBsbChzdGF0ZSwgY3J0YywgcG9ydF9kcGxsLT5w bGwpOwo+ID4gKwl9Cj4gPiArfQo+ID4gKwo+ID4gIHN0YXRpYyBib29sIG1nX3BsbF9nZXRfaHdf c3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gIAkJCQlzdHJ1Y3Qg aW50ZWxfc2hhcmVkX2RwbGwgKnBsbCwKPiA+ICAJCQkJc3RydWN0IGludGVsX2RwbGxfaHdfc3Rh dGUgKmh3X3N0YXRlKQo+ID4gQEAgLTMzMzAsNyArMzM5OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZHBsbF9pbmZvIGljbF9wbGxzW10gPSB7Cj4gPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRl bF9kcGxsX21nciBpY2xfcGxsX21nciA9IHsKPiA+ICAJLmRwbGxfaW5mbyA9IGljbF9wbGxzLAo+ ID4gIAkuZ2V0X2RwbGxzID0gaWNsX2dldF9kcGxscywKPiA+IC0JLnB1dF9kcGxscyA9IGludGVs X3B1dF9kcGxsLAo+ID4gKwkucHV0X2RwbGxzID0gaWNsX3B1dF9kcGxscywKPiA+ICAJLmR1bXBf aHdfc3RhdGUgPSBpY2xfZHVtcF9od19zdGF0ZSwKPiA+ICB9Owo+ID4gIAo+ID4gQEAgLTMzNDMs NyArMzQxMiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHBsbF9pbmZvIGVobF9wbGxzW10gPSB7 Cj4gPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kcGxsX21nciBlaGxfcGxsX21nciA9IHsK PiA+ICAJLmRwbGxfaW5mbyA9IGVobF9wbGxzLAo+ID4gIAkuZ2V0X2RwbGxzID0gaWNsX2dldF9k cGxscywKPiA+IC0JLnB1dF9kcGxscyA9IGludGVsX3B1dF9kcGxsLAo+ID4gKwkucHV0X2RwbGxz ID0gaWNsX3B1dF9kcGxscywKPiA+ICAJLmR1bXBfaHdfc3RhdGUgPSBpY2xfZHVtcF9od19zdGF0 ZSwKPiA+ICB9Owo+ID4gIAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwbGxfbWdyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5oCj4g PiBpbmRleCA2ZmZkY2MwNmFkMjMuLjNiZWE4MWJkZTM0MyAxMDA2NDQKPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RwbGxfbWdyLmgKPiA+IEBAIC0xNDEsNiArMTQxLDEzIEBAIGVudW0gaW50 ZWxfZHBsbF9pZCB7Cj4gPiAgfTsKPiA+ICAjZGVmaW5lIEk5MTVfTlVNX1BMTFMgNwo+ID4gIAo+ ID4gK2VudW0gaWNsX3BvcnRfZHBsbF9pZCB7Cj4gPiArCUlDTF9QT1JUX0RQTExfREVGQVVMVCwK PiA+ICsJSUNMX1BPUlRfRFBMTF9NR19QSFksCj4gPiArCj4gPiArCUlDTF9QT1JUX0RQTExfQ09V TlQsCj4gPiArfTsKPiA+ICsKPiA+ICBzdHJ1Y3QgaW50ZWxfZHBsbF9od19zdGF0ZSB7Cj4gPiAg CS8qIGk5eHgsIHBjaCBwbGxzICovCj4gPiAgCXUzMiBkcGxsOwo+ID4gQEAgLTMzNyw2ICszNDQs OCBAQCBib29sIGludGVsX3Jlc2VydmVfc2hhcmVkX2RwbGxzKHN0cnVjdCBpbnRlbF9hdG9taWNf c3RhdGUgKnN0YXRlLAo+ID4gIAkJCQlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rlcik7Cj4g PiAgdm9pZCBpbnRlbF9yZWxlYXNlX3NoYXJlZF9kcGxscyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0 YXRlICpzdGF0ZSwKPiA+ICAJCQkJc3RydWN0IGludGVsX2NydGMgKmNydGMpOwo+ID4gK3ZvaWQg aWNsX3NldF9hY3RpdmVfcG9ydF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlLAo+ID4gKwkJCSAgICAgIGVudW0gaWNsX3BvcnRfZHBsbF9pZCBwb3J0X2RwbGxfaWQpOwo+ ID4gIHZvaWQgaW50ZWxfcHJlcGFyZV9zaGFyZWRfZHBsbChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4gPiAgdm9pZCBpbnRlbF9lbmFibGVfc2hhcmVkX2RwbGwo Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+ID4gIHZvaWQgaW50 ZWxfZGlzYWJsZV9zaGFyZWRfZHBsbChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSk7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gaW5kZXggZjliNmY2M2Vi YmZlLi43ZjFkY2I4ZDhhMjggMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ IEBAIC04MTIsNiArODEyLDE1IEBAIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlIHsKPiA+ICAJLyog QWN0dWFsIHJlZ2lzdGVyIHN0YXRlIG9mIHRoZSBkcGxsLCBmb3Igc2hhcmVkIGRwbGwgY3Jvc3Mt Y2hlY2tpbmcuICovCj4gPiAgCXN0cnVjdCBpbnRlbF9kcGxsX2h3X3N0YXRlIGRwbGxfaHdfc3Rh dGU7Cj4gPiAgCj4gPiArCS8qCj4gPiArCSAqIElDTCByZXNlcnZlZCBEUExMcyBmb3IgdGhlIENS VEMvcG9ydC4gVGhlIGFjdGl2ZSBQTEwgaXMgc2VsZWN0ZWQgYnkKPiA+ICsJICogc2V0dGluZyBz aGFyZWRfZHBsbCBhbmQgZHBsbF9od19zdGF0ZSB0byBvbmUgb2YgdGhlc2UgcmVzZXJ2ZWQgb25l cy4KPiA+ICsJICovCj4gPiArCXN0cnVjdCBpY2xfcG9ydF9kcGxsIHsKPiA+ICsJCXN0cnVjdCBp bnRlbF9zaGFyZWRfZHBsbCAqcGxsOwo+ID4gKwkJc3RydWN0IGludGVsX2RwbGxfaHdfc3RhdGUg aHdfc3RhdGU7Cj4gCj4gSSB3YXMgcG9uZGVyaW5nIGlmIHdlIHNob3VsZCB1c2UgdGhpcyBhcnJh eSBvbiBub24taWNsIHRvby4KPiBXb3VsZCBhdm9pZCBoYXZpbmcgdGhyZWUgaW5zdGFuY2VzIG9m IHRoaXMgc3RhdGUgZW1iZWRkZWQgaW4KPiBvdXIgY3J0YyBzdGF0ZS4gQnV0IEkgZG9uJ3Qga25v dyBob3cgYmlnIHRoZSBzdHJ1Y3QgaXMgc28gbm90Cj4gc3VyZSBpZiBpdCdzIHdvcnRoIGl0LiAK PiAKPiBBbnl3YXlzLCBzb21ldGhpbmcgdG8gdGhpbmsgYWJvdXQgZm9yIGEgZnV0dXJlIG9wdGlt aXphdGlvbi4KClllcCwgd291bGQgYmUgZ29vZCB0byBtYWtlIGl0IG1vcmUgZ2VuZXJpYywgZXhw cmVzc2luZyBpdCBhbHNvIGJldHRlcgp0aGF0IGh3X3N0YXRlIGlzIHBsbCdzIHN0YXRlLgoKSSBz dXBwb3NlIHRoYXQgd291bGQgYmUgaW5zdGVhZCBvZiB0aGUgYWJvdmUKCglzdHJ1Y3QgaW50ZWxf cG9ydF9kcGxsIHsKCQlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbDsKCQlzdHJ1Y3QgaW50 ZWxfZHBsbF9od19zdGF0ZSBod19zdGF0ZTsKCX0gcG9ydF9kcGxsc1tQT1JUX0RQTExfQ09VTlRd OwoKCXN0cnVjdCBpbnRlbF9wb3J0X2RwbGwgKmFjdGl2ZV9kcGxsOwoKcmVtb3ZpbmcgYWxzbyBp bnRlbF9jcnRjX3N0YXRlOjpkcGxsX2h3X3N0YXRlIGFuZCBzaGFyZWRfZHBsbC4KCkkgY2hpY2tl bmVkIG91dCBvZiBkb2luZyB0aGF0IHRvbyBub3csIGFmZmVjdGluZyBtYW55IHBsYXRmb3Jtcywg YnV0CndvdWxkIGJlIHdvcnRoIGRvaW5nIGFzIGEgZm9sbG93LXVwLgoKPiAKPiA+ICsJfSBpY2xf cG9ydF9kcGxsc1tJQ0xfUE9SVF9EUExMX0NPVU5UXTsKPiA+ICsKPiA+ICAJLyogRFNJIFBMTCBy ZWdpc3RlcnMgKi8KPiA+ICAJc3RydWN0IHsKPiA+ICAJCXUzMiBjdHJsLCBkaXY7Cj4gPiAtLSAK PiA+IDIuMTcuMQo+IAo+IC0tIAo+IFZpbGxlIFN5cmrDpGzDpAo+IEludGVsCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==