From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2 21/23] drm/i915: Add state verification for the TypeC port mode Date: Wed, 26 Jun 2019 14:52:24 +0300 Message-ID: <20190626115224.GO5942@intel.com> References: <20190620140600.11357-1-imre.deak@intel.com> <20190620140600.11357-22-imre.deak@intel.com> <20190625141252.GJ5942@intel.com> <20190625192351.GC5455@ideak-desk.fi.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id CDCCA6E39B for ; Wed, 26 Jun 2019 11:52:27 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190625192351.GC5455@ideak-desk.fi.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Imre Deak Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBKdW4gMjUsIDIwMTkgYXQgMTA6MjM6NTFQTSArMDMwMCwgSW1yZSBEZWFrIHdyb3Rl Ogo+IE9uIFR1ZSwgSnVuIDI1LCAyMDE5IGF0IDA1OjEyOjUyUE0gKzAzMDAsIFZpbGxlIFN5cmrD pGzDpCB3cm90ZToKPiA+IE9uIFRodSwgSnVuIDIwLCAyMDE5IGF0IDA1OjA1OjU4UE0gKzAzMDAs IEltcmUgRGVhayB3cm90ZToKPiA+ID4gQWRkIHN0YXRlIHZlcmlmaWNhdGlvbiBmb3IgdGhlIFR5 cGVDIHBvcnQgbW9kZSB3cnQuIHRoZSBwb3J0J3MgQVVYIHBvd2VyCj4gPiA+IHdlbGwgZW5hYmxp bmcvZGlzYWJsaW5nLiBBbHNvIGNoZWNrIHRoZSBjb3JyZWN0bmVzcyBvZiBjaGFuZ2luZyB0aGUg cG9ydAo+ID4gPiBtb2RlOgo+ID4gPiAtIFdoZW4gZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSBBVVgg cG93ZXIgd2VsbCBmb3IgYSBUeXBlQyBwb3J0IHdlIG11c3QgaG9sZAo+ID4gPiAgIGFscmVhZHkg dGhlIFR5cGVDIHBvcnQgbG9jay4KPiA+ID4gLSBXaGVuIGNoYW5naW5nIHRoZSBUeXBlQyBwb3J0 IG1vZGUgdGhlIHBvcnQncyBBVVggcG93ZXIgZG9tYWluIG11c3QgYmUKPiA+ID4gICBkaXNhYmxl ZC4KPiA+ID4gCj4gPiA+IENjOiBKb3PDqSBSb2JlcnRvIGRlIFNvdXphIDxqb3NlLnNvdXphQGlu dGVsLmNvbT4KPiA+ID4gQ2M6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4K PiA+ID4gU2lnbmVkLW9mZi1ieTogSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPgo+ID4g PiAtLS0KPiA+ID4gIC4uLi9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYyAg ICB8IDk5ICsrKysrKysrKysrKysrKysrLS0KPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfdGMuYyAgICAgICB8ICAyICsKPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfdGMuaCAgICAgICB8IDEwICstCj4gPiA+ICAzIGZpbGVzIGNoYW5nZWQs IDEwMiBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQo+ID4gPiAKPiA+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMKPiA+ID4g aW5kZXggZmQxM2NkNjhkZWFlLi5mNDYxM2UxMGMzYjMgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jCj4gPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jCj4gPiA+ IEBAIC0xNyw2ICsxNyw3IEBACj4gPiA+ICAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4gPiA+ICAj aW5jbHVkZSAiaW50ZWxfaG90cGx1Zy5oIgo+ID4gPiAgI2luY2x1ZGUgImludGVsX3NpZGViYW5k LmgiCj4gPiA+ICsjaW5jbHVkZSAiaW50ZWxfdGMuaCIKPiA+ID4gIAo+ID4gPiAgYm9vbCBpbnRl bF9kaXNwbGF5X3Bvd2VyX3dlbGxfaXNfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gPiA+ICAJCQkJCSBlbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCBwb3dlcl93ZWxs X2lkKTsKPiA+ID4gQEAgLTQ0NywyNiArNDQ4LDExMCBAQCBpY2xfY29tYm9fcGh5X2F1eF9wb3dl cl93ZWxsX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiAg I2RlZmluZSBJQ0xfVEJUX0FVWF9QV19UT19DSChwd19pZHgpCVwKPiA+ID4gIAkoKHB3X2lkeCkg LSBJQ0xfUFdfQ1RMX0lEWF9BVVhfVEJUMSArIEFVWF9DSF9DKQo+ID4gPiAgCj4gPiA+ICtzdGF0 aWMgZW51bSBhdXhfY2ggaWNsX3RjX3BoeV9hdXhfY2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ID4gPiArCQkJCSAgICAgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAqcG93ZXJf d2VsbCkKPiA+ID4gK3sKPiA+ID4gKwlpbnQgcHdfaWR4ID0gcG93ZXJfd2VsbC0+ZGVzYy0+aHN3 LmlkeDsKPiA+ID4gKwo+ID4gPiArCXJldHVybiBwb3dlcl93ZWxsLT5kZXNjLT5oc3cuaXNfdGNf dGJ0ID8gSUNMX1RCVF9BVVhfUFdfVE9fQ0gocHdfaWR4KSA6Cj4gPiA+ICsJCQkJCQkgSUNMX0FV WF9QV19UT19DSChwd19pZHgpOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICsjaWYgSVNfRU5BQkxF RChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSkKPiA+ID4gKwo+ID4gPiArc3RhdGlj IHU2NCBhc3luY19wdXRfZG9tYWluc19tYXNrKHN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBv d2VyX2RvbWFpbnMpOwo+ID4gPiArCj4gPiA+ICtzdGF0aWMgaW50IHBvd2VyX3dlbGxfYXN5bmNf cmVmX2NvdW50KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ID4gKwkJCQkg ICAgICBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsICpwb3dlcl93ZWxsKQo+ID4gPiArewo+ID4gPiAr CWVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gZG9tYWluOwo+ID4gPiArCXU2NCBhc3lu Y19kb21haW5zID0gYXN5bmNfcHV0X2RvbWFpbnNfbWFzaygmZGV2X3ByaXYtPnBvd2VyX2RvbWFp bnMpOwo+ID4gPiArCWludCByZWZzID0gMDsKPiA+ID4gKwo+ID4gPiArCWZvcl9lYWNoX3Bvd2Vy X2RvbWFpbihkb21haW4sIHBvd2VyX3dlbGwtPmRlc2MtPmRvbWFpbnMpCj4gPiA+ICsJCXJlZnMg Kz0gISEoYXN5bmNfZG9tYWlucyAmIEJJVF9VTEwoZG9tYWluKSk7Cj4gPiA+ICsKPiA+ID4gKwlX QVJOX09OKHJlZnMgPiBwb3dlcl93ZWxsLT5jb3VudCk7Cj4gPiAKPiA+IGh3ZWlnaHQ2NCgpIG5v dCBzdWZmaWNpZW50IGhlcmU/Cj4gCj4gQWgsIGp1c3QgcmV0dXJuIGh3ZWlnaHQ2NChwb3dlcl93 ZWxsLT5kZXNjLT5kb21haW5zICYgYXN5bmNfZG9tYWlucyk/Cj4gWWVwLCB0aGF0IHdvdWxkIHdv cmssIGRpZG4ndCBvY2N1ciB0byBtZS4uCj4gCj4gPiAKPiA+ID4gKwo+ID4gPiArCXJldHVybiBy ZWZzOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgdm9pZCBpY2xfdGNfcG9ydF9hc3Nl cnRfcmVmX2hlbGQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiArCQkJ CQlzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsICpwb3dlcl93ZWxsKQo+ID4gPiArewo+ID4gPiArCWVu dW0gYXV4X2NoIGF1eF9jaCA9IGljbF90Y19waHlfYXV4X2NoKGRldl9wcml2LCBwb3dlcl93ZWxs KTsKPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9IE5VTEw7Cj4g PiA+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7Cj4gPiA+ICsKPiA+ID4gKwkvKiBC eXBhc3MgdGhlIGNoZWNrIGlmIGFsbCByZWZlcmVuY2VzIGFyZSByZWxlYXNlZCBhc3luY2hyb25v dXNseSAqLwo+ID4gPiArCWlmIChwb3dlcl93ZWxsX2FzeW5jX3JlZl9jb3VudChkZXZfcHJpdiwg cG93ZXJfd2VsbCkgPT0KPiA+ID4gKwkgICAgcG93ZXJfd2VsbC0+Y291bnQpCj4gPiA+ICsJCXJl dHVybjsKPiA+ID4gKwo+ID4gPiArCWF1eF9jaCA9IGljbF90Y19waHlfYXV4X2NoKGRldl9wcml2 LCBwb3dlcl93ZWxsKTsKPiA+ID4gKwo+ID4gPiArCWZvcl9lYWNoX2ludGVsX2VuY29kZXIoJmRl dl9wcml2LT5kcm0sIGVuY29kZXIpIHsKPiA+ID4gKwkJaWYgKCFpbnRlbF9wb3J0X2lzX3RjKGRl dl9wcml2LCBlbmNvZGVyLT5wb3J0KSkKPiA+ID4gKwkJCWNvbnRpbnVlOwo+ID4gPiArCj4gPiA+ ICsJCS8qIFdlJ2xsIGNoZWNrIHRoZSBNU1QgcHJpbWFyeSBwb3J0ICovCj4gPiA+ICsJCWlmIChl bmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9EUF9NU1QpCj4gPiA+ICsJCQljb250aW51ZTsK PiA+ID4gKwo+ID4gPiArCQlkaWdfcG9ydCA9IGVuY190b19kaWdfcG9ydCgmZW5jb2Rlci0+YmFz ZSk7Cj4gPiA+ICsJCWlmIChXQVJOX09OKCFkaWdfcG9ydCkpCj4gPiA+ICsJCQljb250aW51ZTsK PiA+ID4gKwo+ID4gPiArCQlpZiAoZGlnX3BvcnQtPmF1eF9jaCAhPSBhdXhfY2gpIHsKPiA+ID4g KwkJCWRpZ19wb3J0ID0gTlVMTDsKPiA+ID4gKwkJCWNvbnRpbnVlOwo+ID4gPiArCQl9Cj4gPiA+ ICsKPiA+ID4gKwkJYnJlYWs7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJaWYgKFdBUk5fT04o IWRpZ19wb3J0KSkKPiA+ID4gKwkJcmV0dXJuOwo+ID4gPiArCj4gPiA+ICsJV0FSTl9PTighaW50 ZWxfdGNfcG9ydF9yZWZfaGVsZChkaWdfcG9ydCkpOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICsj ZWxzZQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgdm9pZCBpY2xfdGNfcG9ydF9hc3NlcnRfcmVmX2hl bGQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiArCQkJCQlzdHJ1Y3Qg aTkxNV9wb3dlcl93ZWxsICpwb3dlcl93ZWxsKQo+ID4gPiArewo+ID4gPiArfQo+ID4gPiArCj4g PiA+ICsjZW5kaWYKPiA+ID4gKwo+ID4gPiAgc3RhdGljIHZvaWQKPiA+ID4gIGljbF90Y19waHlf YXV4X3Bvd2VyX3dlbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiA+ID4gIAkJCQkgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAqcG93ZXJfd2VsbCkKPiA+ID4gIHsK PiA+ID4gLQlpbnQgcHdfaWR4ID0gcG93ZXJfd2VsbC0+ZGVzYy0+aHN3LmlkeDsKPiA+ID4gLQli b29sIGlzX3RidCA9IHBvd2VyX3dlbGwtPmRlc2MtPmhzdy5pc190Y190YnQ7Cj4gPiA+IC0JZW51 bSBhdXhfY2ggYXV4X2NoOwo+ID4gPiArCWVudW0gYXV4X2NoIGF1eF9jaCA9IGljbF90Y19waHlf YXV4X2NoKGRldl9wcml2LCBwb3dlcl93ZWxsKTsKPiA+ID4gIAl1MzIgdmFsOwo+ID4gPiAgCj4g PiA+IC0JYXV4X2NoID0gaXNfdGJ0ID8gSUNMX1RCVF9BVVhfUFdfVE9fQ0gocHdfaWR4KSA6Cj4g PiA+IC0JCQkgIElDTF9BVVhfUFdfVE9fQ0gocHdfaWR4KTsKPiA+ID4gKwlpY2xfdGNfcG9ydF9h c3NlcnRfcmVmX2hlbGQoZGV2X3ByaXYsIHBvd2VyX3dlbGwpOwo+ID4gPiArCj4gPiA+ICAJdmFs ID0gSTkxNV9SRUFEKERQX0FVWF9DSF9DVEwoYXV4X2NoKSk7Cj4gPiA+ICAJdmFsICY9IH5EUF9B VVhfQ0hfQ1RMX1RCVF9JTzsKPiA+ID4gLQlpZiAoaXNfdGJ0KQo+ID4gPiArCWlmIChwb3dlcl93 ZWxsLT5kZXNjLT5oc3cuaXNfdGNfdGJ0KQo+ID4gPiAgCQl2YWwgfD0gRFBfQVVYX0NIX0NUTF9U QlRfSU87Cj4gPiA+ICAJSTkxNV9XUklURShEUF9BVVhfQ0hfQ1RMKGF1eF9jaCksIHZhbCk7Cj4g PiA+ICAKPiA+ID4gIAloc3dfcG93ZXJfd2VsbF9lbmFibGUoZGV2X3ByaXYsIHBvd2VyX3dlbGwp Owo+ID4gPiAgfQo+ID4gPiAgCj4gPiA+ICtzdGF0aWMgdm9pZAo+ID4gPiAraWNsX3RjX3BoeV9h dXhfcG93ZXJfd2VsbF9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiA+ID4gKwkJCQkgIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKnBvd2VyX3dlbGwpCj4gPiA+ICt7 Cj4gPiA+ICsJaWNsX3RjX3BvcnRfYXNzZXJ0X3JlZl9oZWxkKGRldl9wcml2LCBwb3dlcl93ZWxs KTsKPiA+ID4gKwo+ID4gPiArCWhzd19wb3dlcl93ZWxsX2Rpc2FibGUoZGV2X3ByaXYsIHBvd2Vy X3dlbGwpOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICAvKgo+ID4gPiAgICogV2Ugc2hvdWxkIG9u bHkgdXNlIHRoZSBwb3dlciB3ZWxsIGlmIHdlIGV4cGxpY2l0bHkgYXNrZWQgdGhlIGhhcmR3YXJl IHRvCj4gPiA+ICAgKiBlbmFibGUgaXQsIHNvIGNoZWNrIGlmIGl0J3MgZW5hYmxlZCBhbmQgYWxz byBjaGVjayBpZiB3ZSd2ZSByZXF1ZXN0ZWQgaXQgdG8KPiA+ID4gQEAgLTMxMTksNyArMzIwNCw3 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsX29wcyBpY2xfY29tYm9fcGh5 X2F1eF9wb3dlcl93ZWxsX29wcyA9IHsKPiA+ID4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9w b3dlcl93ZWxsX29wcyBpY2xfdGNfcGh5X2F1eF9wb3dlcl93ZWxsX29wcyA9IHsKPiA+ID4gIAku c3luY19odyA9IGhzd19wb3dlcl93ZWxsX3N5bmNfaHcsCj4gPiA+ICAJLmVuYWJsZSA9IGljbF90 Y19waHlfYXV4X3Bvd2VyX3dlbGxfZW5hYmxlLAo+ID4gPiAtCS5kaXNhYmxlID0gaHN3X3Bvd2Vy X3dlbGxfZGlzYWJsZSwKPiA+ID4gKwkuZGlzYWJsZSA9IGljbF90Y19waHlfYXV4X3Bvd2VyX3dl bGxfZGlzYWJsZSwKPiA+ID4gIAkuaXNfZW5hYmxlZCA9IGhzd19wb3dlcl93ZWxsX2VuYWJsZWQs Cj4gPiA+ICB9Owo+ID4gPiAgCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX3RjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X3RjLmMKPiA+ID4gaW5kZXggYzg5MDQ5MTFlODQxLi42YzQzYmVjZjk3ZjcgMTAwNjQ0Cj4gPiA+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuYwo+ID4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3RjLmMKPiA+ID4gQEAgLTMwMyw2 ICszMDMsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF90Y19wb3J0X3Jlc2V0X21vZGUoc3RydWN0IGlu dGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQsCj4gPiA+ICAJZW51bSB0Y19wb3J0X21vZGUgb2xk X3RjX21vZGUgPSBkaWdfcG9ydC0+dGNfbW9kZTsKPiA+ID4gIAo+ID4gPiAgCWludGVsX2Rpc3Bs YXlfcG93ZXJfZmx1c2hfd29yayhkZXZfcHJpdik7Cj4gPiA+ICsJV0FSTl9PTihpbnRlbF9kaXNw bGF5X3Bvd2VyX2lzX2VuYWJsZWQoZGV2X3ByaXYsCj4gPiA+ICsJCQkJCSAgICAgICBpbnRlbF9h dXhfcG93ZXJfZG9tYWluKGRpZ19wb3J0KSkpOwo+ID4gPiAgCj4gPiA+ICAJaWNsX3RjX3BoeV9k aXNjb25uZWN0KGRpZ19wb3J0KTsKPiA+ID4gIAlpY2xfdGNfcGh5X2Nvbm5lY3QoZGlnX3BvcnQs IHJlcXVpcmVkX2xhbmVzKTsKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfdGMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf dGMuaAo+ID4gPiBpbmRleCAzMWFmN2JlOTYwNzAuLjhhZGMxMDdjZGJjYiAxMDA2NDQKPiA+ID4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90Yy5oCj4gPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdGMuaAo+ID4gPiBAQCAtNyw4ICs3 LDggQEAKPiA+ID4gICNkZWZpbmUgX19JTlRFTF9UQ19IX18KPiA+ID4gIAo+ID4gPiAgI2luY2x1 ZGUgPGxpbnV4L3R5cGVzLmg+Cj4gPiA+IC0KPiA+ID4gLXN0cnVjdCBpbnRlbF9kaWdpdGFsX3Bv cnQ7Cj4gPiA+ICsjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KPiA+ID4gKyNpbmNsdWRlICJpbnRl bF9kcnYuaCIKPiA+ID4gIAo+ID4gPiAgdm9pZCBpY2xfdGNfcGh5X2Rpc2Nvbm5lY3Qoc3RydWN0 IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpOwo+ID4gPiAgCj4gPiA+IEBAIC0yMyw2ICsy MywxMiBAQCB2b2lkIGludGVsX3RjX3BvcnRfZ2V0X2xpbmsoc3RydWN0IGludGVsX2RpZ2l0YWxf cG9ydCAqZGlnX3BvcnQsCj4gPiA+ICAJCQkgICAgaW50IHJlcXVpcmVkX2xhbmVzKTsKPiA+ID4g IHZvaWQgaW50ZWxfdGNfcG9ydF9wdXRfbGluayhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpk aWdfcG9ydCk7Cj4gPiA+ICAKPiA+ID4gK3N0YXRpYyBpbmxpbmUgaW50IGludGVsX3RjX3BvcnRf cmVmX2hlbGQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpCj4gPiA+ICt7Cj4g PiA+ICsJcmV0dXJuIG11dGV4X2lzX2xvY2tlZCgmZGlnX3BvcnQtPnRjX2xvY2spIHx8Cj4gPiA+ ICsJICAgICAgIGRpZ19wb3J0LT50Y19saW5rX3JlZmNvdW50Owo+ID4gCj4gPiBUaGlzIHdpbGwg YWxsb3cgdGNfbG9jayB0byBub3QgYmUgaGVsZCBpZiB0aGUgcmVmY291bnQgaXMgZWxldmF0ZWQu IFdhcwo+ID4gdGhhdCB0aGUgaW50ZW50aW9uPyBUaGUgY29tbWl0IG1lc3NhZ2Ugc2F5cyB0aGUg bG9jayBzaG91bGQgYWx3YXlzIGJlCj4gPiBoZWxkLgo+IAo+IFJpZ2h0LCB0aGUgY29tbWl0IG1l c3NhZ2UgaXMgbm90IHByZWNpc2UsIGl0IHNob3VsZCBiZToKPiAKPiAtIFdoZW4gZW5hYmxpbmcv ZGlzYWJsaW5nIHRoZSBBVVggcG93ZXIgd2VsbCBmb3IgYSBUeXBlQyBwb3J0IHdlIG11c3QgaG9s ZAo+ICAgdGhlIFR5cGVDIHBvcnQgbG9jayAtIHRoZSBjYXNlIGZvciBBVVggdHJhbnNmZXJzIC0g b3IgaG9sZCBhIFR5cGUgQwo+ICAgcG9ydCBsaW5rIHJlZmVyZW5jZSAtIHRoZSBjYXNlIGZvciBt b2Rlc2V0IGVuYWJsaW5nL2Rpc2FibGluZy4KPiAKPiBEb2VzIHRoYXQgbWFrZSBzZW5zZT8KClll YWgsIEkgZ3Vlc3MgdGhhdCdzIGZpbmUuCgpSZXZpZXdlZC1ieTogVmlsbGUgU3lyasOkbMOkIDx2 aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCj4gCj4gPiAKPiA+IFNob3VsZCB3ZSBkbyBh IGxvY2tkZXAgYXNzZXJ0IGhlcmUgaWYgbG9ja2RlcCBpcyBlbmFibGVkPwo+IAo+IElmIHRoZSBh Ym92ZSBjcml0ZXJpYSBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSBwb3dlciB3ZWxscyBzb3Vu ZHMgb2ssIHRoZW4KPiBtdXRleF9pc19sb2NrZWQodGNfbG9jaykgfHwgdGNfbGlua19yZWZjb3Vu dCB3b3VsZCBiZSBlbm91Z2guCj4gCj4gPiAKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiAgdm9pZCBp bnRlbF90Y19wb3J0X2luaXQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQsIGJv b2wgaXNfbGVnYWN5KTsKPiA+ID4gIAo+ID4gPiAgI2VuZGlmIC8qIF9fSU5URUxfVENfSF9fICov Cj4gPiA+IC0tIAo+ID4gPiAyLjE3LjEKPiA+ID4gCj4gPiA+IF9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QK PiA+ID4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4gPiBodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+ID4gCj4gPiAtLSAK PiA+IFZpbGxlIFN5cmrDpGzDpAo+ID4gSW50ZWwKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4