From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH v3 6/8] drm/i915/display/icl: Enable master-slaves in trans port sync mode in correct order Date: Tue, 30 Jul 2019 12:53:30 +0200 Message-ID: <69adb455-acb5-9bb9-37f2-06d4538425d4@linux.intel.com> References: <20190624210850.17223-1-manasi.d.navare@intel.com> <20190624210850.17223-7-manasi.d.navare@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6D9946E492 for ; Tue, 30 Jul 2019 10:53:33 +0000 (UTC) In-Reply-To: <20190624210850.17223-7-manasi.d.navare@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Manasi Navare , intel-gfx@lists.freedesktop.org Cc: Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org T3AgMjQtMDYtMjAxOSBvbSAyMzowOCBzY2hyZWVmIE1hbmFzaSBOYXZhcmU6Cj4gQXMgcGVyIHRo ZSBkaXNwbGF5IGVuYWJsZSBzZXF1ZW5jZSwgd2UgbmVlZCB0byBmb2xsb3cgdGhlIGVuYWJsZSBz ZXF1ZW5jZQo+IGZvciBzbGF2ZXMgZmlyc3Qgd2l0aCBEUF9UUF9DVEwgc2V0IHRvIElkbGUgYW5k IGNvbmZpZ3VyZSB0aGUgdHJhbnNjb2Rlcgo+IHBvcnQgc3luYyByZWdpc3RlciB0byBzZWxlY3Qg dGhlIGNvcmVyc3BvbmRpbmcgbWFzdGVyLCB0aGVuIGZvbGxvdyB0aGUKPiBlbmFibGUgc2VxdWVu Y2UgZm9yIG1hc3RlciBsZWF2aW5nIERQX1RQX0NUTCB0byBpZGxlLgo+IEF0IHRoaXMgcG9pbnQg dGhlIHRyYW5zY29kZXIgcG9ydCBzeW5jIG1vZGUgaXMgY29uZmlndXJlZCBhbmQgZW5hYmxlZAo+ IGFuZCB0aGUgVmJsYW5rcyBvZiBib3RoIHBvcnRzIGFyZSBzeW5jaHJvbml6ZWQgc28gdGhlbiBz ZXQgRFBfVFBfQ1RMCj4gZm9yIHRoZSBzbGF2ZSBhbmQgbWFzdGVyIHRvIE5vcm1hbCBhbmQgZG8g cG9zdCBjcnRjIGVuYWJsZSB1cGRhdGVzLgo+Cj4gdjI6Cj4gKiBDcmVhdGUgYSBpY2xfdXBkYXRl X2NydGNzIGhvb2sgKE1hYXJ0ZW4sIERhbnZldCkKPiAqIFRoaXMgc2VxdWVuY2Ugb25seSBmb3Ig Q1JUQ3MgaW4gdHJhbnMgcG9ydCBzeW5jIG1vZGUgKE1hYXJ0ZW4pCj4KPiBDYzogRGFuaWVsIFZl dHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KPiBDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxs ZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiBDYzogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0 ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiBDYzogTWF0dCBSb3BlciA8bWF0dGhldy5k LnJvcGVyQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBNYW5hc2kgTmF2YXJlIDxtYW5hc2ku ZC5uYXZhcmVAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2RkaS5jICAgICB8ICAgMyArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2Rpc3BsYXkuYyB8IDIxNyArKysrKysrKysrKysrKysrKystCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5oIHwgICA0ICsKPiAgMyBmaWxlcyBjaGFu Z2VkLCAyMjEgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYwo+IGluZGV4IDc5MjVhMTc2ZjkwMC4uYmNlYjdlNGIx ODc3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRp LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jCj4gQEAg LTMxNTQsNyArMzE1NCw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2RkaV9wcmVfZW5hYmxlX2RwKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCQkJCSAgICAgIHRydWUpOwo+ICAJaW50 ZWxfZHBfc2lua19zZXRfZmVjX3JlYWR5KGludGVsX2RwLCBjcnRjX3N0YXRlKTsKPiAgCWludGVs X2RwX3N0YXJ0X2xpbmtfdHJhaW4oaW50ZWxfZHApOwo+IC0JaWYgKHBvcnQgIT0gUE9SVF9BIHx8 IElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiArCWlmICgocG9ydCAhPSBQT1JUX0EgfHwgSU5U RUxfR0VOKGRldl9wcml2KSA+PSA5KSAmJgo+ICsJICAgICFpc190cmFuc19wb3J0X3N5bmNfbW9k ZShjcnRjX3N0YXRlKSkKPiAgCQlpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oaW50ZWxfZHApOwo+ ICAKPiAgCWludGVsX2RkaV9lbmFibGVfZmVjKGVuY29kZXIsIGNydGNfc3RhdGUpOwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggNzE1NmIx YjRjNmM1Li5mODhkM2E5MjllMzYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC01MjAsNiArNTIwLDI2IEBAIG5lZWRzX21vZGVzZXQo Y29uc3Qgc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSkKPiAgCXJldHVybiBkcm1fYXRvbWlj X2NydGNfbmVlZHNfbW9kZXNldChzdGF0ZSk7Cj4gIH0KPiAgCj4gK2Jvb2wKPiAraXNfdHJhbnNf cG9ydF9zeW5jX21vZGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnN0YXRlKQo+ICt7 Cj4gKwlyZXR1cm4gKHN0YXRlLT5tYXN0ZXJfdHJhbnNjb2RlciAhPSBJTlZBTElEX1RSQU5TQ09E RVIgfHwKPiArCQlzdGF0ZS0+c3luY19tb2RlX3NsYXZlc19tYXNrKTsKPiArfQo+ICsKPiArc3Rh dGljIGJvb2wKPiAraXNfdHJhbnNfcG9ydF9zeW5jX3NsYXZlKGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpzdGF0ZSkKPiArewo+ICsJcmV0dXJuIHN0YXRlLT5tYXN0ZXJfdHJhbnNjb2Rl ciAhPSBJTlZBTElEX1RSQU5TQ09ERVI7Cj4gK30KPiArCj4gK3N0YXRpYyBib29sCj4gK2lzX3Ry YW5zX3BvcnRfc3luY19tYXN0ZXIoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnN0YXRl KQo+ICt7Cj4gKwlyZXR1cm4gKHN0YXRlLT5tYXN0ZXJfdHJhbnNjb2RlciA9PSBJTlZBTElEX1RS QU5TQ09ERVIgJiYKPiArCQlzdGF0ZS0+c3luY19tb2RlX3NsYXZlc19tYXNrKTsKPiArfQo+ICsK PiAgLyoKPiAgICogUGxhdGZvcm0gc3BlY2lmaWMgaGVscGVycyB0byBjYWxjdWxhdGUgdGhlIHBv cnQgUExMIGxvb3BiYWNrLSAoY2xvY2subSksCj4gICAqIGFuZCBwb3N0LWRpdmlkZXIgKGNsb2Nr LnApIHZhbHVlcywgcHJlLSAoY2xvY2sudmNvKSBhbmQgcG9zdC1kaXZpZGVkIGZhc3QKPiBAQCAt MTM5NDQsOSArMTM5NjQsMjAwIEBAIHN0YXRpYyB2b2lkIHNrbF9jb21taXRfbW9kZXNldF9lbmFi bGVzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCQkJcHJvZ3Jlc3MgPSB0cnVl Owo+ICAJCX0KPiAgCX0gd2hpbGUgKHByb2dyZXNzKTsKPiArfQo+ICAKPiArc3RhdGljIHZvaWQg aWNsX2NvbW1pdF9tb2Rlc2V0X2VuYWJsZXMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0 YXRlLT5kZXYpOwo+ICsJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0 b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpOwo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+ ICsJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGM7Cj4gKwlzdHJ1Y3QgZHJtX2NydGNfc3Rh dGUgKm9sZF9jcnRjX3N0YXRlLCAqbmV3X2NydGNfc3RhdGU7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3N0YXRlOwo+ICsJdW5zaWduZWQgaW50IHVwZGF0ZWQgPSAwOwo+ICsJYm9vbCBw cm9ncmVzczsKPiArCWVudW0gcGlwZSBwaXBlOwo+ICsJaW50IGk7Cj4gKwl1OCBod19lbmFibGVk X3NsaWNlcyA9IGRldl9wcml2LT53bS5za2xfaHcuZGRiLmVuYWJsZWRfc2xpY2VzOwo+ICsJdTgg cmVxdWlyZWRfc2xpY2VzID0gaW50ZWxfc3RhdGUtPndtX3Jlc3VsdHMuZGRiLmVuYWJsZWRfc2xp Y2VzOwo+ICsJc3RydWN0IHNrbF9kZGJfZW50cnkgZW50cmllc1tJOTE1X01BWF9QSVBFU10gPSB7 fTsKQWRkIG9sZF9lbnRyaWVzIGFzIHdlbGwsIG1lcmdlIG1hc3RlciArIHNsYXZlCj4gKwo+ICsJ Zm9yX2VhY2hfb2xkbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRl LCBuZXdfY3J0Y19zdGF0ZSwgaSkKPiArCQkvKiBpZ25vcmUgYWxsb2NhdGlvbnMgZm9yIGNydGMn cyB0aGF0IGhhdmUgYmVlbiB0dXJuZWQgb2ZmLiAqLwo+ICsJCWlmIChuZXdfY3J0Y19zdGF0ZS0+ YWN0aXZlKQo+ICsJCQllbnRyaWVzW2ldID0gdG9faW50ZWxfY3J0Y19zdGF0ZShvbGRfY3J0Y19z dGF0ZSktPndtLnNrbC5kZGI7CgpDYW4gYmUgY2hhbmdlZCB0bzogaWYgKG5ld19jcnRjX3N0YXRl LT5hY3RpdmUgJiYgIW5lZWRzX21vZGVzZXQobmV3X2NydGNfc3RhdGUpKSA/CgpTbWFsbCByZWZp bmVtZW50IHRvIHRoZSBhbGdvcml0aG0gaW4gZ2VuZXJhbCwgSSBkaXNsaWtlIHRoZSBjdXJyZW50 IGhhbmRsaW5nLgoKV2hhdCBJIHdvdWxkIGRvOgotIE1ha2UgYSBuZXdfZW50cmllcyBhcnJheSBh cyB3ZWxsLCB0aGF0IGNvbnRhaW5zIChmb3IgdGhlIG1hc3RlciBjcnRjLCBkdXJpbmcgbW9kZXNl dCBvbmx5KSBtYXN0ZXJfZGRiLmJlZ2luICsgc2xhdmVfZGRiLmVuZCwKICBhbmQgbm90aGluZyBm b3IgdGhlIHNsYXZlIGRkYiBpbiB0aGF0IGNhc2UsIHRoZSBkZGIgYWxsb2NhdGlvbiBmb3IgYWxs IG90aGVyIGNhc2VzIGluY2x1ZGluZyBtYXN0ZXIvc2xhdmUgbm9uLW1vZGVzZXQgc2hvdWxkIGJl IHRoZSBkZWZhdWx0IHdtLnNrbC5kZGIuCiAgVXNlIGl0IGZvciBjb21wYXJpbmcgaW5zdGVhZCBv ZiB0aGUgb25lIGZyb20gY3J0Y19zdGF0ZS4gVGhpcyB3YXkgd2Uga25vdyB3ZSBjYW4gYWx3YXlz IGVuYWJsZSBib3RoIGF0IHRoZSBzYW1lIHRpbWUuCi0gSWdub3JlIHRoZSBzbGF2ZSBjcnRjIHdo ZW4gbmVlZHNfbW9kZXNldCgpIGlzIHRydWUsIGNhbGxlZCBmcm9tIG1hc3RlciBpbnN0ZWFkLgot IElmIGEgbW9kZXNldCBoYXBwZW5zIG9uIG1hc3RlciBjcnRjLCBkbyB0aGUgc3BlY2lhbCBlbmFi bGluZyBkYW5jZSBvbiBib3RoIGluIGEgc2VwYXJhdGUgZnVuY3Rpb24uCi0gQWxzbyBlbnN1cmUg dGhhdCB0aGUgc2xhdmUgY3J0YyBpcyBtYXJrZWQgYXMgdXBkYXRlZCwgYW5kIHVwZGF0ZSBib3Ro IGVudHJpZXMgdG8gY29ycmVjdCB2YWx1ZXMgaW4gdGhlIGVudHJpZXMgYWdhaW4uCgpZb3Ugc2hv dWxkIGJlIGFibGUgdG8gZ2V0IHRoZSBzbGF2ZSBjcnRjIHdpdGggaW50ZWxfZ2V0X2NydGNfZm9y X3BpcGUoZGV2X3ByaXYsIGludGVsX2NydGMtPnBpcGUgKyAxKTsKCldpdGggdGhlc2UgY2hhbmdl cyB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gZ2V0IHJpZCBvZiB0aGUgaWNsIHNwZWNpYWwgaGFuZGxp bmcsIGl0J3MgY29uZmluZWQgdG8gYSBzaW5nbGUgZnVuY3Rpb24gZm9yIGVuYWJsaW5nLApvbmx5 IGNhbGxlZCB3aGVuIG5lZWRzX21vZGVzZXQoKSAmJiBpc190cmFuc19wb3J0X3N5bmNfbWFzdGVy IGlzIHRydWUsIHdpdGhvdXQgdGhlIHByb2JsZW0gb2Ygb3ZlcmxhcHBpbmcgYWxsb2NhdGlvbnMu CgoKCj4gKwkvKiBJZiAybmQgREJ1ZiBzbGljZSByZXF1aXJlZCwgZW5hYmxlIGl0IGhlcmUgKi8K PiArCWlmIChyZXF1aXJlZF9zbGljZXMgPiBod19lbmFibGVkX3NsaWNlcykKPiArCQlpY2xfZGJ1 Zl9zbGljZXNfdXBkYXRlKGRldl9wcml2LCByZXF1aXJlZF9zbGljZXMpOwo+ICsKPiArCS8qCj4g KwkgKiBXaGVuZXZlciB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBwaXBlcyBjaGFuZ2VzLCB3ZSBuZWVk IHRvIG1ha2Ugc3VyZSB3ZQo+ICsJICogdXBkYXRlIHRoZSBwaXBlcyBpbiB0aGUgcmlnaHQgb3Jk ZXIgc28gdGhhdCB0aGVpciBkZGIgYWxsb2NhdGlvbnMKPiArCSAqIG5ldmVyIG92ZXJsYXAgd2l0 aCBlYWNob3RoZXIgaW5iZXR3ZWVuIENSVEMgdXBkYXRlcy4gT3RoZXJ3aXNlIHdlJ2xsCj4gKwkg KiBjYXVzZSBwaXBlIHVuZGVycnVucyBhbmQgb3RoZXIgYmFkIHN0dWZmLgo+ICsJICovCj4gKwlk byB7Cj4gKwkJcHJvZ3Jlc3MgPSBmYWxzZTsKPiArCj4gKwkJZm9yX2VhY2hfb2xkbmV3X2NydGNf aW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSwgaSkg ewo+ICsJCQlib29sIHZibF93YWl0ID0gZmFsc2U7Cj4gKwkJCXVuc2lnbmVkIGludCBjbWFzayA9 IGRybV9jcnRjX21hc2soY3J0Yyk7Cj4gKwkJCWJvb2wgbW9kZXNldCA9IG5lZWRzX21vZGVzZXQo bmV3X2NydGNfc3RhdGUpOwo+ICsKPiArCQkJaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Yyk7Cj4gKwkJCWNzdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUobmV3X2NydGNfc3RhdGUpOwo+ ICsJCQlwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiArCj4gKwkJCWlmICh1cGRhdGVkICYgY21h c2sgfHwgIWNzdGF0ZS0+YmFzZS5hY3RpdmUpCj4gKwkJCQljb250aW51ZTsKPiArCj4gKwkJCWlm IChtb2Rlc2V0ICYmIGlzX3RyYW5zX3BvcnRfc3luY19tb2RlKGNzdGF0ZSkpIHsKPiArCQkJCURS TV9ERUJVR19LTVMoIlB1c2hpbmcgdGhlIFN5bmMgTW9kZSBDUlRDICVkICVzIHRoYXQgbmVlZHMg dXBkYXRlIHRvIHNlcGFyYXRlIGxvb3BcbiIsCj4gKwkJCQkJICAgICAgaW50ZWxfY3J0Yy0+YmFz ZS5iYXNlLmlkLCBpbnRlbF9jcnRjLT5iYXNlLm5hbWUpOwo+ICsJCQkJY29udGludWU7Cj4gKwkJ CX0KCgoKPiArCj4gKwkJCWlmIChza2xfZGRiX2FsbG9jYXRpb25fb3ZlcmxhcHMoJmNzdGF0ZS0+ d20uc2tsLmRkYiwKPiArCQkJCQkJCWVudHJpZXMsCj4gKwkJCQkJCQlJTlRFTF9JTkZPKGRldl9w cml2KS0+bnVtX3BpcGVzLCBpKSkKPiArCQkJCWNvbnRpbnVlOwo+ICsKPiArCQkJdXBkYXRlZCB8 PSBjbWFzazsKPiArCQkJZW50cmllc1tpXSA9IGNzdGF0ZS0+d20uc2tsLmRkYjsKPiArCj4gKwkJ CS8qCj4gKwkJCSAqIElmIHRoaXMgaXMgYW4gYWxyZWFkeSBhY3RpdmUgcGlwZSwgaXQncyBEREIg Y2hhbmdlZCwKPiArCQkJICogYW5kIHRoaXMgaXNuJ3QgdGhlIGxhc3QgcGlwZSB0aGF0IG5lZWRz IHVwZGF0aW5nCj4gKwkJCSAqIHRoZW4gd2UgbmVlZCB0byB3YWl0IGZvciBhIHZibGFuayB0byBw YXNzIGZvciB0aGUKPiArCQkJICogbmV3IGRkYiBhbGxvY2F0aW9uIHRvIHRha2UgZWZmZWN0Lgo+ ICsJCQkgKi8KPiArCQkJaWYgKCFza2xfZGRiX2VudHJ5X2VxdWFsKCZjc3RhdGUtPndtLnNrbC5k ZGIsCj4gKwkJCQkJCSAmdG9faW50ZWxfY3J0Y19zdGF0ZShvbGRfY3J0Y19zdGF0ZSktPndtLnNr bC5kZGIpICYmCj4gKwkJCSAgICAhbmV3X2NydGNfc3RhdGUtPmFjdGl2ZV9jaGFuZ2VkICYmCj4g KwkJCSAgICBpbnRlbF9zdGF0ZS0+d21fcmVzdWx0cy5kaXJ0eV9waXBlcyAhPSB1cGRhdGVkKQo+ ICsJCQkJdmJsX3dhaXQgPSB0cnVlOwo+ICsKPiArCQkJaW50ZWxfdXBkYXRlX2NydGMoY3J0Yywg c3RhdGUsIG9sZF9jcnRjX3N0YXRlLAo+ICsJCQkJCSAgbmV3X2NydGNfc3RhdGUpOwo+ICsKPiAr CQkJaWYgKHZibF93YWl0KQo+ICsJCQkJaW50ZWxfd2FpdF9mb3JfdmJsYW5rKGRldl9wcml2LCBw aXBlKTsKPiArCj4gKwkJCXByb2dyZXNzID0gdHJ1ZTsKPiArCQl9Cj4gKwl9IHdoaWxlIChwcm9n cmVzcyk7Cj4gKwkvKiBTZXQgU2xhdmUncyBEUF9UUF9DVEwgdG8gTm9ybWFsICovCj4gKwlmb3Jf ZWFjaF9vbGRuZXdfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIG5l d19jcnRjX3N0YXRlLCBpKSB7Cj4gKwkJaW50IGo7Cj4gKwkJc3RydWN0IGRybV9jb25uZWN0b3Jf c3RhdGUgKmNvbm5fc3RhdGU7Cj4gKwkJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm47Cj4gKwkJ Ym9vbCBtb2Rlc2V0ID0gbmVlZHNfbW9kZXNldChuZXdfY3J0Y19zdGF0ZSk7Cj4gKwkJc3RydWN0 IGludGVsX2RwICppbnRlbF9kcDsKPiArCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9j b25maWcgPQo+ICsJCQl0b19pbnRlbF9jcnRjX3N0YXRlKG5ld19jcnRjX3N0YXRlKTsKPiArCj4g KwkJaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gKwo+ICsJCWlmICghcGlwZV9j b25maWctPmJhc2UuYWN0aXZlIHx8ICFtb2Rlc2V0IHx8Cj4gKwkJICAgICFpc190cmFuc19wb3J0 X3N5bmNfc2xhdmUocGlwZV9jb25maWcpKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJZm9yX2Vh Y2hfbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShzdGF0ZSwgY29ubiwgY29ubl9zdGF0ZSwgaikgewo+ ICsJCQlpZiAoY29ubl9zdGF0ZS0+Y3J0YyA9PSBjcnRjKQo+ICsJCQkJYnJlYWs7Cj4gKwkJfQo+ ICsJCWludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZpbnRlbF9hdHRhY2hlZF9lbmNvZGVyKGNv bm4pLT5iYXNlKTsKCmVuY190b19pbnRlbF9kcChjb25uX3N0YXRlLT5iZXN0X2VuY29kZXIpLiA6 KQoKTWFrZSBhIHNtYWxsIGhlbHBlciBoZXJlLCBzdG9wX2xpbmtfdHJhaW5pbmdfZm9yX2NydGMs IGNhbGwgaXQgZm9yIHNsYXZlX2NydGMsIHRoZW4gdXNsZWVwLCB0aGVuIG1hc3Rlcl9jcnRjIGlu IHRoZSBmdW5jdGlvbiBkZXNjcmliZWQgYWJvdmU/CgoKPiArCj4gKwkJbmV3X3BsYW5lX3N0YXRl ID0KPiArCQkJaW50ZWxfYXRvbWljX2dldF9uZXdfcGxhbmVfc3RhdGUodG9faW50ZWxfYXRvbWlj X3N0YXRlKHN0YXRlKSwKPiArCQkJCQkJCSB0b19pbnRlbF9wbGFuZShjcnRjLT5wcmltYXJ5KSk7 Cj4gKwkJaWYgKHBpcGVfY29uZmlnLT51cGRhdGVfcGlwZSAmJiAhcGlwZV9jb25maWctPmVuYWJs ZV9mYmMpCj4gKwkJCWludGVsX2ZiY19kaXNhYmxlKGludGVsX2NydGMpOwo+ICsJCWVsc2UgaWYg KG5ld19wbGFuZV9zdGF0ZSkKPiArCQkJaW50ZWxfZmJjX2VuYWJsZShpbnRlbF9jcnRjLCBwaXBl X2NvbmZpZywgbmV3X3BsYW5lX3N0YXRlKTsKPiArCj4gKwkJaW50ZWxfYmVnaW5fY3J0Y19jb21t aXQodG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKSwgaW50ZWxfY3J0Yyk7Cj4gKwkJc2tsX3Vw ZGF0ZV9wbGFuZXNfb25fY3J0Yyh0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpLCBpbnRlbF9j cnRjKTsKPiArCQlpbnRlbF9maW5pc2hfY3J0Y19jb21taXQodG9faW50ZWxfYXRvbWljX3N0YXRl KHN0YXRlKSwgaW50ZWxfY3J0Yyk7Cj4gKwl9CgppbnRlbF9jb21taXRfcGxhbmVzKCkKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=