From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH v3 6/8] drm/i915/display/icl: Enable master-slaves in trans port sync mode in correct order Date: Wed, 31 Jul 2019 16:24:15 -0700 Message-ID: <20190731232415.GA10872@intel.com> References: <20190624210850.17223-1-manasi.d.navare@intel.com> <20190624210850.17223-7-manasi.d.navare@intel.com> <69adb455-acb5-9bb9-37f2-06d4538425d4@linux.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 2275D6E313 for ; Wed, 31 Jul 2019 23:22:42 +0000 (UTC) Content-Disposition: inline In-Reply-To: <69adb455-acb5-9bb9-37f2-06d4538425d4@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: Daniel Vetter , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org VGhhbmtzIE1hYXJ0ZW4gZm9yIHlvdXIgcmV2aWV3IGNvbW1lbnRzLCBwbGVhc2Ugc2VlIG15IHJl c3BvbnNlcy9xdWVzdGlvbnMgYmVsb3c6CgpPbiBUdWUsIEp1bCAzMCwgMjAxOSBhdCAxMjo1Mzoz MFBNICswMjAwLCBNYWFydGVuIExhbmtob3JzdCB3cm90ZToKPiBPcCAyNC0wNi0yMDE5IG9tIDIz OjA4IHNjaHJlZWYgTWFuYXNpIE5hdmFyZToKPiA+IEFzIHBlciB0aGUgZGlzcGxheSBlbmFibGUg c2VxdWVuY2UsIHdlIG5lZWQgdG8gZm9sbG93IHRoZSBlbmFibGUgc2VxdWVuY2UKPiA+IGZvciBz bGF2ZXMgZmlyc3Qgd2l0aCBEUF9UUF9DVEwgc2V0IHRvIElkbGUgYW5kIGNvbmZpZ3VyZSB0aGUg dHJhbnNjb2Rlcgo+ID4gcG9ydCBzeW5jIHJlZ2lzdGVyIHRvIHNlbGVjdCB0aGUgY29yZXJzcG9u ZGluZyBtYXN0ZXIsIHRoZW4gZm9sbG93IHRoZQo+ID4gZW5hYmxlIHNlcXVlbmNlIGZvciBtYXN0 ZXIgbGVhdmluZyBEUF9UUF9DVEwgdG8gaWRsZS4KPiA+IEF0IHRoaXMgcG9pbnQgdGhlIHRyYW5z Y29kZXIgcG9ydCBzeW5jIG1vZGUgaXMgY29uZmlndXJlZCBhbmQgZW5hYmxlZAo+ID4gYW5kIHRo ZSBWYmxhbmtzIG9mIGJvdGggcG9ydHMgYXJlIHN5bmNocm9uaXplZCBzbyB0aGVuIHNldCBEUF9U UF9DVEwKPiA+IGZvciB0aGUgc2xhdmUgYW5kIG1hc3RlciB0byBOb3JtYWwgYW5kIGRvIHBvc3Qg Y3J0YyBlbmFibGUgdXBkYXRlcy4KPiA+Cj4gPiB2MjoKPiA+ICogQ3JlYXRlIGEgaWNsX3VwZGF0 ZV9jcnRjcyBob29rIChNYWFydGVuLCBEYW52ZXQpCj4gPiAqIFRoaXMgc2VxdWVuY2Ugb25seSBm b3IgQ1JUQ3MgaW4gdHJhbnMgcG9ydCBzeW5jIG1vZGUgKE1hYXJ0ZW4pCj4gPgo+ID4gQ2M6IERh bmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Cj4gPiBDYzogVmlsbGUgU3lyasOk bMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+IENjOiBNYWFydGVuIExhbmto b3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+ID4gQ2M6IE1hdHQgUm9w ZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5jb20+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBNYW5hc2kg TmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYyAgICAgfCAgIDMgKy0KPiA+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyB8IDIxNyArKysrKysrKysrKysr KysrKystCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5Lmgg fCAgIDQgKwo+ID4gIDMgZmlsZXMgY2hhbmdlZCwgMjIxIGluc2VydGlvbnMoKyksIDMgZGVsZXRp b25zKC0pCj4gPgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jCj4g PiBpbmRleCA3OTI1YTE3NmY5MDAuLmJjZWI3ZTRiMTg3NyAxMDA2NDQKPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMKPiA+IEBAIC0zMTU0LDcgKzMxNTQsOCBAQCBz dGF0aWMgdm9pZCBpbnRlbF9kZGlfcHJlX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKPiA+ICAJCQkJCSAgICAgIHRydWUpOwo+ID4gIAlpbnRlbF9kcF9zaW5rX3NldF9m ZWNfcmVhZHkoaW50ZWxfZHAsIGNydGNfc3RhdGUpOwo+ID4gIAlpbnRlbF9kcF9zdGFydF9saW5r X3RyYWluKGludGVsX2RwKTsKPiA+IC0JaWYgKHBvcnQgIT0gUE9SVF9BIHx8IElOVEVMX0dFTihk ZXZfcHJpdikgPj0gOSkKPiA+ICsJaWYgKChwb3J0ICE9IFBPUlRfQSB8fCBJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDkpICYmCj4gPiArCSAgICAhaXNfdHJhbnNfcG9ydF9zeW5jX21vZGUoY3J0Y19z dGF0ZSkpCj4gPiAgCQlpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oaW50ZWxfZHApOwo+ID4gIAo+ ID4gIAlpbnRlbF9kZGlfZW5hYmxlX2ZlYyhlbmNvZGVyLCBjcnRjX3N0YXRlKTsKPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCj4gPiBpbmRleCA3MTU2 YjFiNGM2YzUuLmY4OGQzYTkyOWUzNiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwo+ID4gQEAgLTUyMCw2ICs1MjAsMjYgQEAgbmVlZHNf bW9kZXNldChjb25zdCBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKQo+ID4gIAlyZXR1cm4g ZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQoc3RhdGUpOwo+ID4gIH0KPiA+ICAKPiA+ICti b29sCj4gPiAraXNfdHJhbnNfcG9ydF9zeW5jX21vZGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKnN0YXRlKQo+ID4gK3sKPiA+ICsJcmV0dXJuIChzdGF0ZS0+bWFzdGVyX3RyYW5zY29k ZXIgIT0gSU5WQUxJRF9UUkFOU0NPREVSIHx8Cj4gPiArCQlzdGF0ZS0+c3luY19tb2RlX3NsYXZl c19tYXNrKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGJvb2wKPiA+ICtpc190cmFuc19wb3J0 X3N5bmNfc2xhdmUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnN0YXRlKQo+ID4gK3sK PiA+ICsJcmV0dXJuIHN0YXRlLT5tYXN0ZXJfdHJhbnNjb2RlciAhPSBJTlZBTElEX1RSQU5TQ09E RVI7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBib29sCj4gPiAraXNfdHJhbnNfcG9ydF9zeW5j X21hc3Rlcihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqc3RhdGUpCj4gPiArewo+ID4g KwlyZXR1cm4gKHN0YXRlLT5tYXN0ZXJfdHJhbnNjb2RlciA9PSBJTlZBTElEX1RSQU5TQ09ERVIg JiYKPiA+ICsJCXN0YXRlLT5zeW5jX21vZGVfc2xhdmVzX21hc2spOwo+ID4gK30KPiA+ICsKPiA+ ICAvKgo+ID4gICAqIFBsYXRmb3JtIHNwZWNpZmljIGhlbHBlcnMgdG8gY2FsY3VsYXRlIHRoZSBw b3J0IFBMTCBsb29wYmFjay0gKGNsb2NrLm0pLAo+ID4gICAqIGFuZCBwb3N0LWRpdmlkZXIgKGNs b2NrLnApIHZhbHVlcywgcHJlLSAoY2xvY2sudmNvKSBhbmQgcG9zdC1kaXZpZGVkIGZhc3QKPiA+ IEBAIC0xMzk0NCw5ICsxMzk2NCwyMDAgQEAgc3RhdGljIHZvaWQgc2tsX2NvbW1pdF9tb2Rlc2V0 X2VuYWJsZXMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ID4gIAkJCXByb2dyZXNz ID0gdHJ1ZTsKPiA+ICAJCX0KPiA+ICAJfSB3aGlsZSAocHJvZ3Jlc3MpOwo+ID4gK30KPiA+ICAK PiA+ICtzdGF0aWMgdm9pZCBpY2xfY29tbWl0X21vZGVzZXRfZW5hYmxlcyhzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUpCj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5kZXYpOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfYXRvbWlj X3N0YXRlICppbnRlbF9zdGF0ZSA9IHRvX2ludGVsX2F0b21pY19zdGF0ZShzdGF0ZSk7Cj4gPiAr CXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiA+ICsJc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGM7Cj4gPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsICpuZXdfY3J0 Y19zdGF0ZTsKPiA+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZTsKPiA+ICsJdW5z aWduZWQgaW50IHVwZGF0ZWQgPSAwOwo+ID4gKwlib29sIHByb2dyZXNzOwo+ID4gKwllbnVtIHBp cGUgcGlwZTsKPiA+ICsJaW50IGk7Cj4gPiArCXU4IGh3X2VuYWJsZWRfc2xpY2VzID0gZGV2X3By aXYtPndtLnNrbF9ody5kZGIuZW5hYmxlZF9zbGljZXM7Cj4gPiArCXU4IHJlcXVpcmVkX3NsaWNl cyA9IGludGVsX3N0YXRlLT53bV9yZXN1bHRzLmRkYi5lbmFibGVkX3NsaWNlczsKPiA+ICsJc3Ry dWN0IHNrbF9kZGJfZW50cnkgZW50cmllc1tJOTE1X01BWF9QSVBFU10gPSB7fTsKPiBBZGQgb2xk X2VudHJpZXMgYXMgd2VsbCwgbWVyZ2UgbWFzdGVyICsgc2xhdmUKCkkgZGlkbnQgdW5kZXJzdGFu ZCB3aGF0IHlvdSBtZWFudCBieSBtZXJnZSBtYXN0ZXIrc2xhdmVzPyBZb3UgbWVhbiBhZGQgYWxz byB0aGUgCm1hc3RlciBhbmQgc2xhdmUgdGhhdCBhcmUgYWxyZWFkeSBlbmFibGVkPwoKPiA+ICsK PiA+ICsJZm9yX2VhY2hfb2xkbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRj X3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSwgaSkKPiA+ICsJCS8qIGlnbm9yZSBhbGxvY2F0aW9ucyBm b3IgY3J0YydzIHRoYXQgaGF2ZSBiZWVuIHR1cm5lZCBvZmYuICovCj4gPiArCQlpZiAobmV3X2Ny dGNfc3RhdGUtPmFjdGl2ZSkKPiA+ICsJCQllbnRyaWVzW2ldID0gdG9faW50ZWxfY3J0Y19zdGF0 ZShvbGRfY3J0Y19zdGF0ZSktPndtLnNrbC5kZGI7Cj4gCj4gQ2FuIGJlIGNoYW5nZWQgdG86IGlm IChuZXdfY3J0Y19zdGF0ZS0+YWN0aXZlICYmICFuZWVkc19tb2Rlc2V0KG5ld19jcnRjX3N0YXRl KSkgPwoKV2UgbmVlZCAhbmVlZHNfbW9kZXNldCgpIGFsc28/IFRoYXQgd2FzIG5vdCBpbnRpYWxs eSB0aGVyZSBpbiB0aGUgb3JpZ2luYWwgc2tsX3VwZGF0ZV9jcnRjcygpLCAKc28gd2h5IGRvIHdl IG5lZWQgaXQgaGVyZT8KCj4gCj4gU21hbGwgcmVmaW5lbWVudCB0byB0aGUgYWxnb3JpdGhtIGlu IGdlbmVyYWwsIEkgZGlzbGlrZSB0aGUgY3VycmVudCBoYW5kbGluZy4KPiAKPiBXaGF0IEkgd291 bGQgZG86Cj4gLSBNYWtlIGEgbmV3X2VudHJpZXMgYXJyYXkgYXMgd2VsbCwgdGhhdCBjb250YWlu cyAoZm9yIHRoZSBtYXN0ZXIgY3J0YywgZHVyaW5nIG1vZGVzZXQgb25seSkgbWFzdGVyX2RkYi5i ZWdpbiArIHNsYXZlX2RkYi5lbmQsCj4gICBhbmQgbm90aGluZyBmb3IgdGhlIHNsYXZlIGRkYiBp biB0aGF0IGNhc2UsIHRoZSBkZGIgYWxsb2NhdGlvbiBmb3IgYWxsIG90aGVyIGNhc2VzIGluY2x1 ZGluZyBtYXN0ZXIvc2xhdmUgbm9uLW1vZGVzZXQgc2hvdWxkIGJlIHRoZSBkZWZhdWx0IHdtLnNr bC5kZGIuCj4gICBVc2UgaXQgZm9yIGNvbXBhcmluZyBpbnN0ZWFkIG9mIHRoZSBvbmUgZnJvbSBj cnRjX3N0YXRlLiBUaGlzIHdheSB3ZSBrbm93IHdlIGNhbiBhbHdheXMgZW5hYmxlIGJvdGggYXQg dGhlIHNhbWUgdGltZS4KClNvIGluIHRoZSB0aGUgY2FzZSBvZiBtb2Rlc2V0IG9uIG1hc3RlciBv ciBzbGF2ZSwgd2Ugc2hkIGNyZWF0ZSBhbm90aGVyIGVudHJpZXMgc2ltaWxhciB0byBkZWZhdWx0 IG9uZSBhbmQgaGF2ZSB0aGUgYWxsb2NhdGlvbnMgZm9yIG1hc3RlciArIHNsYXZlIGFuZCBtYWtl IHN1cmUgdGhhdCBkb2VzbnQgb3ZlcmxhcCB3aXRoIHRoZSBhbHJlYWR5IGFjdGl2ZSBjcnRjIGFs bG9jYXRpb25zPwoKPiAtIElnbm9yZSB0aGUgc2xhdmUgY3J0YyB3aGVuIG5lZWRzX21vZGVzZXQo KSBpcyB0cnVlLCBjYWxsZWQgZnJvbSBtYXN0ZXIgaW5zdGVhZC4KPiAtIElmIGEgbW9kZXNldCBo YXBwZW5zIG9uIG1hc3RlciBjcnRjLCBkbyB0aGUgc3BlY2lhbCBlbmFibGluZyBkYW5jZSBvbiBi b3RoIGluIGEgc2VwYXJhdGUgZnVuY3Rpb24uCgpTbyB5b3UgYXJlIHNheWluZyB0aGF0IGlmIGl0 IGlzIHNsYXZlIGNydGMgYW5kIG5lZWRzX21vZGVzZXQganVzdCBza2lwIGFuZCBkb250IGRvIGFu eXRoaW5nLApCdXQgaW4gY2FzZSBvZiBtYXN0ZXIgY3J0YyBtb2Rlc2V0LCB0aGF0cyB3aGVyZSB3 ZSB3aWxsIG5lZWQgdGhlc2UgYWRkaXRpb25hbCA0IGxvb3BzIGFuZCB0aGF0cyB3aGVyZSB3ZSBh Y2Nlc3MgdGhlIHNsYXZlIGNydGNzIGZyb20gdGhlIHNsYXZlX3N5bmNfbWFzayBhbmQgdGhlbiBk byB0aGUgY29ycmVjdCBlbmFibGluZyBzZXF1ZW5jZSBldGM/CiAKPiAtIEFsc28gZW5zdXJlIHRo YXQgdGhlIHNsYXZlIGNydGMgaXMgbWFya2VkIGFzIHVwZGF0ZWQsIGFuZCB1cGRhdGUgYm90aCBl bnRyaWVzIHRvIGNvcnJlY3QgdmFsdWVzIGluIHRoZSBlbnRyaWVzIGFnYWluLgoKVGhpcyBhZ2Fp biBJIGFtIG5vdCAxMDAlIGNsZWFyIG9uIGhvdyB0byBpbXBsZW1lbnQgbWlnaHQgbmVlZCB0byBk aXNjdXNzIG9uIElSQwoKPiAKPiBZb3Ugc2hvdWxkIGJlIGFibGUgdG8gZ2V0IHRoZSBzbGF2ZSBj cnRjIHdpdGggaW50ZWxfZ2V0X2NydGNfZm9yX3BpcGUoZGV2X3ByaXYsIGludGVsX2NydGMtPnBp cGUgKyAxKTsKCkJ1dCB0aGUgcHJvYmxlbSBpcyB0aGF0IHRoZXIgY291bGQgYmUgbXVsdGlwbGUg c2xhdmVzIG5vdCBqdXN0IDEgYW5kIElNTyBhY2Nlc3NpbmcgdGhlIHNsYXZlcyBkdXJpbmcgdGhl IG1hc3RlciBtb2Rlc2V0IGlzIG1vcmUgY29tcGxpY2F0ZWQKd2hlcmUgYXMgdGhlIGN1cnJlbnQg bG9naWMgdGFrZXMgY2FyZSBvZiBoYW5kbGluZyB0aGUgY29ycmVjdCBlbmFibGluZyBzZXF1ZW5j ZSBmb3IgYW55IG51bWJlciBvZiBzbGF2ZXMgYW5kIG1hc3RlciBhbmQgbW9kZXNldHMKaW4gYW55 IG9yZGVyLgpXaWxsIHN0aWxsIGhhdmUgdG8gY2hlY2sgZm9yIHByb3BlciBkZGIgYWxsb2NhdGlv bnMgYW5kIGVuc3VyZSBubyBvdmVybGFwLgoKTWFuYXNpCgo+IAo+IFdpdGggdGhlc2UgY2hhbmdl cyB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gZ2V0IHJpZCBvZiB0aGUgaWNsIHNwZWNpYWwgaGFuZGxp bmcsIGl0J3MgY29uZmluZWQgdG8gYSBzaW5nbGUgZnVuY3Rpb24gZm9yIGVuYWJsaW5nLAo+IG9u bHkgY2FsbGVkIHdoZW4gbmVlZHNfbW9kZXNldCgpICYmIGlzX3RyYW5zX3BvcnRfc3luY19tYXN0 ZXIgaXMgdHJ1ZSwgd2l0aG91dCB0aGUgcHJvYmxlbSBvZiBvdmVybGFwcGluZyBhbGxvY2F0aW9u cy4KPiAKPiAKPiAKPiA+ICsJLyogSWYgMm5kIERCdWYgc2xpY2UgcmVxdWlyZWQsIGVuYWJsZSBp dCBoZXJlICovCj4gPiArCWlmIChyZXF1aXJlZF9zbGljZXMgPiBod19lbmFibGVkX3NsaWNlcykK PiA+ICsJCWljbF9kYnVmX3NsaWNlc191cGRhdGUoZGV2X3ByaXYsIHJlcXVpcmVkX3NsaWNlcyk7 Cj4gPiArCj4gPiArCS8qCj4gPiArCSAqIFdoZW5ldmVyIHRoZSBudW1iZXIgb2YgYWN0aXZlIHBp cGVzIGNoYW5nZXMsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlCj4gPiArCSAqIHVwZGF0ZSB0aGUg cGlwZXMgaW4gdGhlIHJpZ2h0IG9yZGVyIHNvIHRoYXQgdGhlaXIgZGRiIGFsbG9jYXRpb25zCj4g PiArCSAqIG5ldmVyIG92ZXJsYXAgd2l0aCBlYWNob3RoZXIgaW5iZXR3ZWVuIENSVEMgdXBkYXRl cy4gT3RoZXJ3aXNlIHdlJ2xsCj4gPiArCSAqIGNhdXNlIHBpcGUgdW5kZXJydW5zIGFuZCBvdGhl ciBiYWQgc3R1ZmYuCj4gPiArCSAqLwo+ID4gKwlkbyB7Cj4gPiArCQlwcm9ncmVzcyA9IGZhbHNl Owo+ID4gKwo+ID4gKwkJZm9yX2VhY2hfb2xkbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMs IG9sZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSwgaSkgewo+ID4gKwkJCWJvb2wgdmJsX3dh aXQgPSBmYWxzZTsKPiA+ICsJCQl1bnNpZ25lZCBpbnQgY21hc2sgPSBkcm1fY3J0Y19tYXNrKGNy dGMpOwo+ID4gKwkJCWJvb2wgbW9kZXNldCA9IG5lZWRzX21vZGVzZXQobmV3X2NydGNfc3RhdGUp Owo+ID4gKwo+ID4gKwkJCWludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ID4gKwkJ CWNzdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUobmV3X2NydGNfc3RhdGUpOwo+ID4gKwkJCXBp cGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ID4gKwo+ID4gKwkJCWlmICh1cGRhdGVkICYgY21hc2sg fHwgIWNzdGF0ZS0+YmFzZS5hY3RpdmUpCj4gPiArCQkJCWNvbnRpbnVlOwo+ID4gKwo+ID4gKwkJ CWlmIChtb2Rlc2V0ICYmIGlzX3RyYW5zX3BvcnRfc3luY19tb2RlKGNzdGF0ZSkpIHsKPiA+ICsJ CQkJRFJNX0RFQlVHX0tNUygiUHVzaGluZyB0aGUgU3luYyBNb2RlIENSVEMgJWQgJXMgdGhhdCBu ZWVkcyB1cGRhdGUgdG8gc2VwYXJhdGUgbG9vcFxuIiwKPiA+ICsJCQkJCSAgICAgIGludGVsX2Ny dGMtPmJhc2UuYmFzZS5pZCwgaW50ZWxfY3J0Yy0+YmFzZS5uYW1lKTsKPiA+ICsJCQkJY29udGlu dWU7Cj4gPiArCQkJfQo+IAo+IAo+IAo+ID4gKwo+ID4gKwkJCWlmIChza2xfZGRiX2FsbG9jYXRp b25fb3ZlcmxhcHMoJmNzdGF0ZS0+d20uc2tsLmRkYiwKPiA+ICsJCQkJCQkJZW50cmllcywKPiA+ ICsJCQkJCQkJSU5URUxfSU5GTyhkZXZfcHJpdiktPm51bV9waXBlcywgaSkpCj4gPiArCQkJCWNv bnRpbnVlOwo+ID4gKwo+ID4gKwkJCXVwZGF0ZWQgfD0gY21hc2s7Cj4gPiArCQkJZW50cmllc1tp XSA9IGNzdGF0ZS0+d20uc2tsLmRkYjsKPiA+ICsKPiA+ICsJCQkvKgo+ID4gKwkJCSAqIElmIHRo aXMgaXMgYW4gYWxyZWFkeSBhY3RpdmUgcGlwZSwgaXQncyBEREIgY2hhbmdlZCwKPiA+ICsJCQkg KiBhbmQgdGhpcyBpc24ndCB0aGUgbGFzdCBwaXBlIHRoYXQgbmVlZHMgdXBkYXRpbmcKPiA+ICsJ CQkgKiB0aGVuIHdlIG5lZWQgdG8gd2FpdCBmb3IgYSB2YmxhbmsgdG8gcGFzcyBmb3IgdGhlCj4g PiArCQkJICogbmV3IGRkYiBhbGxvY2F0aW9uIHRvIHRha2UgZWZmZWN0Lgo+ID4gKwkJCSAqLwo+ ID4gKwkJCWlmICghc2tsX2RkYl9lbnRyeV9lcXVhbCgmY3N0YXRlLT53bS5za2wuZGRiLAo+ID4g KwkJCQkJCSAmdG9faW50ZWxfY3J0Y19zdGF0ZShvbGRfY3J0Y19zdGF0ZSktPndtLnNrbC5kZGIp ICYmCj4gPiArCQkJICAgICFuZXdfY3J0Y19zdGF0ZS0+YWN0aXZlX2NoYW5nZWQgJiYKPiA+ICsJ CQkgICAgaW50ZWxfc3RhdGUtPndtX3Jlc3VsdHMuZGlydHlfcGlwZXMgIT0gdXBkYXRlZCkKPiA+ ICsJCQkJdmJsX3dhaXQgPSB0cnVlOwo+ID4gKwo+ID4gKwkJCWludGVsX3VwZGF0ZV9jcnRjKGNy dGMsIHN0YXRlLCBvbGRfY3J0Y19zdGF0ZSwKPiA+ICsJCQkJCSAgbmV3X2NydGNfc3RhdGUpOwo+ ID4gKwo+ID4gKwkJCWlmICh2Ymxfd2FpdCkKPiA+ICsJCQkJaW50ZWxfd2FpdF9mb3JfdmJsYW5r KGRldl9wcml2LCBwaXBlKTsKPiA+ICsKPiA+ICsJCQlwcm9ncmVzcyA9IHRydWU7Cj4gPiArCQl9 Cj4gPiArCX0gd2hpbGUgKHByb2dyZXNzKTsKPiA+ICsJLyogU2V0IFNsYXZlJ3MgRFBfVFBfQ1RM IHRvIE5vcm1hbCAqLwo+ID4gKwlmb3JfZWFjaF9vbGRuZXdfY3J0Y19pbl9zdGF0ZShzdGF0ZSwg Y3J0Yywgb2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlLCBpKSB7Cj4gPiArCQlpbnQgajsK PiA+ICsJCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlOwo+ID4gKwkJc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm47Cj4gPiArCQlib29sIG1vZGVzZXQgPSBuZWVkc19tb2Rl c2V0KG5ld19jcnRjX3N0YXRlKTsKPiA+ICsJCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHA7Cj4g PiArCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcgPQo+ID4gKwkJCXRvX2lu dGVsX2NydGNfc3RhdGUobmV3X2NydGNfc3RhdGUpOwo+ID4gKwo+ID4gKwkJaW50ZWxfY3J0YyA9 IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gPiArCj4gPiArCQlpZiAoIXBpcGVfY29uZmlnLT5iYXNl LmFjdGl2ZSB8fCAhbW9kZXNldCB8fAo+ID4gKwkJICAgICFpc190cmFuc19wb3J0X3N5bmNfc2xh dmUocGlwZV9jb25maWcpKQo+ID4gKwkJCWNvbnRpbnVlOwo+ID4gKwo+ID4gKwkJZm9yX2VhY2hf bmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShzdGF0ZSwgY29ubiwgY29ubl9zdGF0ZSwgaikgewo+ID4g KwkJCWlmIChjb25uX3N0YXRlLT5jcnRjID09IGNydGMpCj4gPiArCQkJCWJyZWFrOwo+ID4gKwkJ fQo+ID4gKwkJaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmludGVsX2F0dGFjaGVkX2VuY29k ZXIoY29ubiktPmJhc2UpOwo+IAo+IGVuY190b19pbnRlbF9kcChjb25uX3N0YXRlLT5iZXN0X2Vu Y29kZXIpLiA6KQo+IAo+IE1ha2UgYSBzbWFsbCBoZWxwZXIgaGVyZSwgc3RvcF9saW5rX3RyYWlu aW5nX2Zvcl9jcnRjLCBjYWxsIGl0IGZvciBzbGF2ZV9jcnRjLCB0aGVuIHVzbGVlcCwgdGhlbiBt YXN0ZXJfY3J0YyBpbiB0aGUgZnVuY3Rpb24gZGVzY3JpYmVkIGFib3ZlPwo+IAo+IAo+ID4gKwo+ ID4gKwkJbmV3X3BsYW5lX3N0YXRlID0KPiA+ICsJCQlpbnRlbF9hdG9taWNfZ2V0X25ld19wbGFu ZV9zdGF0ZSh0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpLAo+ID4gKwkJCQkJCQkgdG9faW50 ZWxfcGxhbmUoY3J0Yy0+cHJpbWFyeSkpOwo+ID4gKwkJaWYgKHBpcGVfY29uZmlnLT51cGRhdGVf cGlwZSAmJiAhcGlwZV9jb25maWctPmVuYWJsZV9mYmMpCj4gPiArCQkJaW50ZWxfZmJjX2Rpc2Fi bGUoaW50ZWxfY3J0Yyk7Cj4gPiArCQllbHNlIGlmIChuZXdfcGxhbmVfc3RhdGUpCj4gPiArCQkJ aW50ZWxfZmJjX2VuYWJsZShpbnRlbF9jcnRjLCBwaXBlX2NvbmZpZywgbmV3X3BsYW5lX3N0YXRl KTsKPiA+ICsKPiA+ICsJCWludGVsX2JlZ2luX2NydGNfY29tbWl0KHRvX2ludGVsX2F0b21pY19z dGF0ZShzdGF0ZSksIGludGVsX2NydGMpOwo+ID4gKwkJc2tsX3VwZGF0ZV9wbGFuZXNfb25fY3J0 Yyh0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpLCBpbnRlbF9jcnRjKTsKPiA+ICsJCWludGVs X2ZpbmlzaF9jcnRjX2NvbW1pdCh0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpLCBpbnRlbF9j cnRjKTsKPiA+ICsJfQo+IAo+IGludGVsX2NvbW1pdF9wbGFuZXMoKQo+IAo+IApfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=