From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: Re: [DPU PATCH 02/11] drm/msm: Don't duplicate modeset_enables atomic helper Date: Tue, 13 Mar 2018 16:57:35 -0700 Message-ID: <677c8c29a788a147aa45bc1e9768527e@codeaurora.org> References: <20180228191906.185417-1-seanpaul@chromium.org> <20180228191906.185417-3-seanpaul@chromium.org> <20180312202146.GA223881@art_vandelay> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180312202146.GA223881@art_vandelay> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Sean Paul Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, abhinavk-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: dri-devel@lists.freedesktop.org T24gMjAxOC0wMy0xMiAxMzoyMSwgU2VhbiBQYXVsIHdyb3RlOgo+IE9uIFRodSwgTWFyIDA4LCAy MDE4IGF0IDA0OjU2OjAxUE0gLTA4MDAsIEpleWt1bWFyIFNhbmthcmFuIHdyb3RlOgo+PiBPbiAy MDE4LTAyLTI4IDExOjE4LCBTZWFuIFBhdWwgd3JvdGU6Cj4+ID4gSW5zdGVhZCwgc2h1ZmZsZSB0 aGluZ3MgYXJvdW5kIHNvIHdlIGtpY2tvZmYgY3J0YyBhZnRlciBlbmFibGluZwo+IGVuY29kZXIK Pj4gPiBkdXJpbmcgbW9kZXNldHMuIEFsc28gbW92ZXMgdGhlIHZibGFuayB3YWl0IHRvIGFmdGVy IHRoZSBmcmFtZS4KPj4gPgo+PiA+IENoYW5nZS1JZDogSTE2YzdiN2Y5MzkwZDA0ZjYwNTBhYTIw ZTE3YTUzMzVmYmY0OWViYTMKPj4gPiBTaWduZWQtb2ZmLWJ5OiBTZWFuIFBhdWwgPHNlYW5wYXVs QGNocm9taXVtLm9yZz4KPj4gPiAtLS0KPj4gPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2NydGMuYyAgICB8ICAgOSArKwo+PiA+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfZW5jb2Rlci5jIHwgICA1ICstCj4+ID4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9rbXMuYyAgICAgfCAgMzEgKysrKy0KPj4gPiAgZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2ttcy5oICAgICB8ICAgMiArCj4+ID4gIGRyaXZlcnMvZ3B1L2RybS9t c20vbXNtX2F0b21pYy5jICAgICAgICAgICAgfCAxMzIKPiArLS0tLS0tLS0tLS0tLS0tLS0tLQo+ PiA+ICA1IGZpbGVzIGNoYW5nZWQsIDQ4IGluc2VydGlvbnMoKyksIDEzMSBkZWxldGlvbnMoLSkK Pj4gPgo+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf Y3J0Yy5jCj4+ID4gYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jCj4+ ID4gaW5kZXggYTNhYjZlZDJiZjFkLi45NGZhYjJkY2NhNWIgMTAwNjQ0Cj4+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYwo+PiA+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMKPj4gPiBAQCAtMzUyNSw2ICszNTI1LDEy IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMKPj4gPiAqY3J0 YywKPj4gPiAgCURQVV9FVlQzMl9WRVJCT1NFKERSTUlEKGNydGMpKTsKPj4gPiAgCWRwdV9jcnRj ID0gdG9fZHB1X2NydGMoY3J0Yyk7Cj4+ID4KPj4gPiArCWlmIChtc21faXNfbW9kZV9zZWFtbGVz cygmY3J0Yy0+c3RhdGUtPmFkanVzdGVkX21vZGUpIHx8Cj4+ID4gKwkgICAgbXNtX2lzX21vZGVf c2VhbWxlc3NfdnJyKCZjcnRjLT5zdGF0ZS0+YWRqdXN0ZWRfbW9kZSkpIHsKPj4gPiArCQlEUFVf REVCVUcoIlNraXBwaW5nIGNydGMgZW5hYmxlLCBzZWFtbGVzcyBtb2RlXG4iKTsKPj4gPiArCQly ZXR1cm47Cj4+ID4gKwl9Cj4+ID4gKwo+PiA+ICAJcG1fcnVudGltZV9nZXRfc3luYyhjcnRjLT5k ZXYtPmRldik7Cj4+ID4KPj4gPiAgCWRybV9mb3JfZWFjaF9lbmNvZGVyKGVuY29kZXIsIGNydGMt PmRldikgewo+PiA+IEBAIC0zNTcyLDYgKzM1NzgsOSBAQCBzdGF0aWMgdm9pZCBkcHVfY3J0Y19l bmFibGUoc3RydWN0IGRybV9jcnRjCj4gKmNydGMsCj4+ID4gIAkJRFBVX1BPV0VSX0VWRU5UX1BP U1RfRU5BQkxFIHwgRFBVX1BPV0VSX0VWRU5UX1BPU1RfRElTQUJMRQo+PiA+IHwKPj4gPiAgCQlE UFVfUE9XRVJfRVZFTlRfUFJFX0RJU0FCTEUsCj4+ID4gIAkJZHB1X2NydGNfaGFuZGxlX3Bvd2Vy X2V2ZW50LCBjcnRjLCBkcHVfY3J0Yy0+bmFtZSk7Cj4+ID4gKwo+PiA+ICsJaWYgKG1zbV9uZWVk c192YmxhbmtfcHJlX21vZGVzZXQoJmNydGMtPnN0YXRlLT5hZGp1c3RlZF9tb2RlKSkKPj4gPiAr CQlkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoY3J0Yyk7Cj4+ID4gIH0KPj4gPgo+PiA+ICBzdHJ1 Y3QgcGxhbmVfc3RhdGUgewo+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfZW5jb2Rlci5jCj4+ID4gYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfZW5jb2Rlci5jCj4+ID4gaW5kZXggMjhjZWI1ODllZTQwLi40ZDFlMzY1MmRiZjQgMTAw NjQ0Cj4+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIu Ywo+PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMK Pj4gPiBAQCAtMzY5Myw4ICszNjkzLDExIEBAIHN0YXRpYyB2b2lkCj4gZHB1X2VuY29kZXJfZnJh bWVfZG9uZV90aW1lb3V0KHN0cnVjdAo+PiA+IHRpbWVyX2xpc3QgKnQpCj4+ID4gIHN0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzIGRwdV9lbmNvZGVyX2hlbHBlcl9m dW5jcwo+ID0KPj4gPiB7Cj4+ID4gIAkubW9kZV9zZXQgPSBkcHVfZW5jb2Rlcl92aXJ0X21vZGVf c2V0LAo+PiA+ICAJLmRpc2FibGUgPSBkcHVfZW5jb2Rlcl92aXJ0X2Rpc2FibGUsCj4+ID4gLQku ZW5hYmxlID0gZHB1X2VuY29kZXJfdmlydF9lbmFibGUsCj4+ID4gKwkuZW5hYmxlID0gZHB1X2tt c19lbmNvZGVyX2VuYWJsZSwKPj4gPiAgCS5hdG9taWNfY2hlY2sgPSBkcHVfZW5jb2Rlcl92aXJ0 X2F0b21pY19jaGVjaywKPj4gPiArCj4+ID4gKwkvKiBUaGlzIGlzIGNhbGxlZCBieSBkcHVfa21z X2VuY29kZXJfZW5hYmxlICovCj4+ID4gKwkuY29tbWl0ID0gZHB1X2VuY29kZXJfdmlydF9lbmFi bGUsCj4+ID4gIH07Cj4+ID4KPj4gPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9m dW5jcyBkcHVfZW5jb2Rlcl9mdW5jcyA9IHsKPj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5jCj4+ID4gYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfa21zLmMKPj4gPiBpbmRleCA4MWZkM2E0MjllOWYuLjNkODMwMzdlODMwNSAx MDA2NDQKPj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMK Pj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMKPj4gPiBA QCAtNDI1LDE0ICs0MjUsMzcgQEAgc3RhdGljIHZvaWQgZHB1X2ttc19wcmVwYXJlX2NvbW1pdChz dHJ1Y3QKPiBtc21fa21zCj4+ID4gKmttcywKPj4gPiAgCQkJZHB1X2VuY29kZXJfcHJlcGFyZV9j b21taXQoZW5jb2Rlcik7Cj4+ID4gIH0KPj4gPgo+PiA+IC1zdGF0aWMgdm9pZCBkcHVfa21zX2Nv bW1pdChzdHJ1Y3QgbXNtX2ttcyAqa21zLAo+PiA+IC0JCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpvbGRfc3RhdGUpCj4+ID4gKy8qCj4+ID4gKyAqIE92ZXJyaWRlIHRoZSBlbmNvZGVyIGVuYWJs ZSBzaW5jZSB3ZSBuZWVkIHRvIHNldHVwIHRoZSBpbmxpbmUKPj4gPiByb3RhdG9yCj4+ID4gYW5k IGRvCj4+ID4gKyAqIHNvbWUgY3J0YyBtYWdpYyBiZWZvcmUgZW5hYmxpbmcgYW55IGJyaWRnZSB0 aGF0IG1pZ2h0IGJlIHByZXNlbnQuCj4+ID4gKyAqLwo+PiA+ICt2b2lkIGRwdV9rbXNfZW5jb2Rl cl9lbmFibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQo+PiA+ICt7Cj4+ID4gKwljb25z dCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzICpmdW5jcyA9Cj4+ID4gZW5jb2Rlci0+ aGVscGVyX3ByaXZhdGU7Cj4+ID4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBlbmNvZGVyLT5j cnRjOwo+PiA+ICsKPj4gPiArCS8qIEZvcndhcmQgdGhpcyBlbmFibGUgY2FsbCB0byB0aGUgY29t bWl0IGhvb2sgKi8KPj4gPiArCWlmIChmdW5jcyAmJiBmdW5jcy0+Y29tbWl0KQo+PiA+ICsJCWZ1 bmNzLT5jb21taXQoZW5jb2Rlcik7Cj4+IAo+PiBUaGUgcHVycG9zZSBvZiB0aGlzIGZ1bmN0aW9u IGlzIG5vdCBjbGVhci4gV2hlcmUgYXJlIHdlIHNldHRpbmcgdXAgdGhlCj4+IGlubGluZSByb3Rh dG9yPwo+PiBXaHkgZG8gd2UgbmVlZCBhIGtpY2tvZmYgaGVyZT8KPiAKPiBUaGUgcmVhc29uIHRo ZSBjb2RlIGlzIHNodWZmbGVkIGlzIHRvIGF2b2lkIGR1cGxpY2F0aW5nIHRoZSBlbnRpcmUgCj4g YXRvbWljCj4gaGVscGVyCj4gZnVuY3Rpb24uIEJ5IG1vdmluZyBjYWxscyBpbnRvIHRoZSAtPmVu YWJsZSBob29rcywgd2UgY2FuIGF2b2lkIGhhdmluZyAKPiB0bwo+IGhhbmQKPiByb2xsIHRoZSBo ZWxwZXJzLgo+IAo+IFRoZSBraWNrb2ZmIGlzIHByZXNlcnZlZCBmcm9tIHRoZSBoZWxwZXIgY29w eSB3aGVuIHlvdSBjYWxsCj4ga21zLT5mdW5jcy0+Y29tbWl0Cj4gaW4gYmV0d2VlbiB0aGUgZW5j b2RlciBlbmFibGUgYW5kIGJyaWRnZSBlbmFibGUuIElmIHRoaXMgY2FuIGJlIAo+IHJlbW92ZWQs Cj4gdGhhdCdkCj4gYmUgZXZlbiBiZXR0ZXIuIEkgd2FzIHNpbXBseSB0cnlpbmcgdG8gcHJlc2Vy dmUgdGhlIGNhbGwgb3JkZXIgb2YKPiBldmVyeXRoaW5nLgo+IAo+IFNlYW4KSSBhbSB3aXRoIHlv dSBvbiBjbGVhbmluZyB1cCB0aGUgYXRvbWljIGhlbHBlciBjb3B5LiBCdXQgdXNpbmcgCmVuYy0+ Y29tbWl0IGhlbHBlcgp0byBjYWxsIGludG8gZW5jb2Rlcl9lbmFibGUgZG9lc24ndCBsb29rIHZh bGlkIHRvIG1lLgoKQWxzbywgSSB2ZXJpZmllZCByZW1vdmluZyB0aGUga21zLT5mdW5jcy0+Y29t bWl0IGNhbGwgYmV0d2VlbiBlbmNvZGVyIAplbmFibGUgYW5kCmJyaWRnZSBlbmFibGUuIEl0IHdv cmtzIGZpbmUgd2l0aCB5b3VyIG5ld2x5IHBsYWNlZCBrbXMtPmZ1bmNzLT5jb21taXQgCmFmdGVy CmRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9tb2Rlc2V0X2VuYWJsZXMuIFNvIGNhbiB5b3UgcmV2 aXNpdCB0aGlzIApmdW5jdGlvbj8KCkpleWt1bWFyIFMKPiAKPj4gPiArCj4+ID4gKwlpZiAoY3J0 YyAmJiBjcnRjLT5zdGF0ZS0+YWN0aXZlKSB7Cj4+ID4gKwkJRFBVX0VWVDMyKERSTUlEKGNydGMp KTsKPj4gPiArCQlkcHVfY3J0Y19jb21taXRfa2lja29mZihjcnRjKTsKPj4gPiArCX0KPj4gPiAr fQo+PiA+ICsKPj4gPiArc3RhdGljIHZvaWQgZHB1X2ttc19jb21taXQoc3RydWN0IG1zbV9rbXMg Kmttcywgc3RydWN0Cj4gZHJtX2F0b21pY19zdGF0ZQo+PiA+ICpzdGF0ZSkKPj4gPiAgewo+PiA+ ICAJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+PiA+IC0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpv bGRfY3J0Y19zdGF0ZTsKPj4gPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsK Pj4gPiArCXN0cnVjdCBkcHVfY3J0Y19zdGF0ZSAqY3N0YXRlOwo+PiA+ICAJaW50IGk7Cj4+ID4K Pj4gPiAtCWZvcl9lYWNoX29sZF9jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0Yywgb2xkX2Ny dGNfc3RhdGUsIGkpIHsKPj4gPiArCWZvcl9lYWNoX25ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBj cnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4+ID4gKwkJLyogSWYgbW9kZXNldCBpcyByZXF1aXJlZCwg a2lja29mZiBpcyBydW4gaW4KPj4gPiBlbmNvZGVyX2VuYWJsZSAqLwo+PiA+ICsJCWlmIChkcm1f YXRvbWljX2NydGNfbmVlZHNfbW9kZXNldChjcnRjX3N0YXRlKSkKPj4gPiArCQkJY29udGludWU7 Cj4+ID4gKwo+PiA+ICAJCWlmIChjcnRjLT5zdGF0ZS0+YWN0aXZlKSB7Cj4+ID4gIAkJCURQVV9F VlQzMihEUk1JRChjcnRjKSk7Cj4+ID4gIAkJCWRwdV9jcnRjX2NvbW1pdF9raWNrb2ZmKGNydGMp Owo+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21z LmgKPj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuaAo+PiA+IGlu ZGV4IDhjYWRkMjlhNDhiMS4uNDJjODA5ZWQ5NDY3IDEwMDY0NAo+PiA+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuaAo+PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuaAo+PiA+IEBAIC01MjksNCArNTI5LDYgQEAgaW50IGRw dV9rbXNfZmJvX3JlZmVyZW5jZShzdHJ1Y3QgZHB1X2ttc19mYm8KPiAqZmJvKTsKPj4gPiAgICov Cj4+ID4gIHZvaWQgZHB1X2ttc19mYm9fdW5yZWZlcmVuY2Uoc3RydWN0IGRwdV9rbXNfZmJvICpm Ym8pOwo+PiA+Cj4+ID4gK3ZvaWQgZHB1X2ttc19lbmNvZGVyX2VuYWJsZShzdHJ1Y3QgZHJtX2Vu Y29kZXIgKmVuY29kZXIpOwo+PiA+ICsKPj4gPiAgI2VuZGlmIC8qIF9fZHB1X2ttc19IX18gKi8K Pj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fYXRvbWljLmMKPj4gPiBi L2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2F0b21pYy5jCj4+ID4gaW5kZXggNWNmYjgwMzQ1MDUy Li5mNTc5NGRjZTI1ZGQgMTAwNjQ0Cj4+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21f YXRvbWljLmMKPj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9hdG9taWMuYwo+PiA+ IEBAIC04NCwxMzEgKzg0LDYgQEAgc3RhdGljIHZvaWQgbXNtX2F0b21pY193YWl0X2Zvcl9jb21t aXRfZG9uZSgKPj4gPiAgCX0KPj4gPiAgfQo+PiA+Cj4+ID4gLS8qKgo+PiA+IC0gKiBtc21fYXRv bWljX2hlbHBlcl9jb21taXRfbW9kZXNldF9lbmFibGVzIC0gbW9kZXNldCBjb21taXQgdG8KPiBl bmFibGUKPj4gPiBvdXRwdXRzCj4+ID4gLSAqIEBkZXY6IERSTSBkZXZpY2UKPj4gPiAtICogQG9s ZF9zdGF0ZTogYXRvbWljIHN0YXRlIG9iamVjdCB3aXRoIG9sZCBzdGF0ZSBzdHJ1Y3R1cmVzCj4+ ID4gLSAqCj4+ID4gLSAqIFRoaXMgZnVuY3Rpb24gZW5hYmxlcyBhbGwgdGhlIG91dHB1dHMgd2l0 aCB0aGUgbmV3IGNvbmZpZ3VyYXRpb24KPj4gPiB3aGljaAo+PiA+IGhhZCB0bwo+PiA+IC0gKiBi ZSB0dXJuZWQgb2ZmIGZvciB0aGUgdXBkYXRlLgo+PiA+IC0gKgo+PiA+IC0gKiBGb3IgY29tcGF0 aWJpbGl0eSB3aXRoIGxlZ2FjeSBjcnRjIGhlbHBlcnMgdGhpcyBzaG91bGQgYmUgY2FsbGVkCj4+ ID4gYWZ0ZXIKPj4gPiAtICogZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3BsYW5lcygpLCB3aGlj aCBpcyB3aGF0IHRoZSBkZWZhdWx0Cj4gY29tbWl0Cj4+ID4gZnVuY3Rpb24KPj4gPiAtICogZG9l cy4gQnV0IGRyaXZlcnMgd2l0aCBkaWZmZXJlbnQgbmVlZHMgY2FuIGdyb3VwIHRoZSBtb2Rlc2V0 Cj4gY29tbWl0cwo+PiA+IHRvZ2V0aGVyCj4+ID4gLSAqIGFuZCBkbyB0aGUgcGxhbmUgY29tbWl0 cyBhdCB0aGUgZW5kLiBUaGlzIGlzIHVzZWZ1bCBmb3IgZHJpdmVycwo+PiA+IGRvaW5nCj4+ID4g cnVudGltZQo+PiA+IC0gKiBQTSBzaW5jZSBwbGFuZXMgdXBkYXRlcyB0aGVuIG9ubHkgaGFwcGVu IHdoZW4gdGhlIENSVEMgaXMgYWN0dWFsbHkKPj4gPiBlbmFibGVkLgo+PiA+IC0gKi8KPj4gPiAt c3RhdGljIHZvaWQgbXNtX2F0b21pY19oZWxwZXJfY29tbWl0X21vZGVzZXRfZW5hYmxlcyhzdHJ1 Y3QKPiBkcm1fZGV2aWNlCj4+ID4gKmRldiwKPj4gPiAtCQlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqb2xkX3N0YXRlKQo+PiA+IC17Cj4+ID4gLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4+ID4g LQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlOwo+PiA+IC0Jc3RydWN0IGRy bV9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZTsKPj4gPiAtCXN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3I7Cj4+ID4gLQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X2Nvbm5f c3RhdGU7Cj4+ID4gLQlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKPj4gPiAtCXN0cnVjdCBtc21fa21zICprbXMgPSBwcml2LT5rbXM7Cj4+ID4gLQlpbnQg YnJpZGdlX2VuYWJsZV9jb3VudCA9IDA7Cj4+ID4gLQlpbnQgaTsKPj4gPiAtCj4+ID4gLQlmb3Jf ZWFjaF9vbGRuZXdfY3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRl LAo+PiA+IC0JCQluZXdfY3J0Y19zdGF0ZSwgaSkgewo+PiA+IC0JCWNvbnN0IHN0cnVjdCBkcm1f Y3J0Y19oZWxwZXJfZnVuY3MgKmZ1bmNzOwo+PiA+IC0KPj4gPiAtCQkvKiBOZWVkIHRvIGZpbHRl ciBvdXQgQ1JUQ3Mgd2hlcmUgb25seSBwbGFuZXMgY2hhbmdlLiAqLwo+PiA+IC0JCWlmICghZHJt X2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQobmV3X2NydGNfc3RhdGUpKQo+PiA+IC0JCQljb250 aW51ZTsKPj4gPiAtCj4+ID4gLQkJaWYgKCFuZXdfY3J0Y19zdGF0ZS0+YWN0aXZlKQo+PiA+IC0J CQljb250aW51ZTsKPj4gPiAtCj4+ID4gLQkJaWYgKG1zbV9pc19tb2RlX3NlYW1sZXNzKCZuZXdf Y3J0Y19zdGF0ZS0+bW9kZSkgfHwKPj4gPiAtCQkJCW1zbV9pc19tb2RlX3NlYW1sZXNzX3ZycigK Pj4gPiAtCQkJCSZuZXdfY3J0Y19zdGF0ZS0+YWRqdXN0ZWRfbW9kZSkpCj4+ID4gLQkJCWNvbnRp bnVlOwo+PiA+IC0KPj4gPiAtCQlmdW5jcyA9IGNydGMtPmhlbHBlcl9wcml2YXRlOwo+PiA+IC0K Pj4gPiAtCQlpZiAoY3J0Yy0+c3RhdGUtPmVuYWJsZSkgewo+PiA+IC0JCQlEUk1fREVCVUdfQVRP TUlDKCJlbmFibGluZyBbQ1JUQzolZF1cbiIsCj4+ID4gLQkJCQkJIGNydGMtPmJhc2UuaWQpOwo+ PiA+IC0KPj4gPiAtCQkJaWYgKGZ1bmNzLT5hdG9taWNfZW5hYmxlKQo+PiA+IC0JCQkJZnVuY3Mt PmF0b21pY19lbmFibGUoY3J0YywKPj4gPiBvbGRfY3J0Y19zdGF0ZSk7Cj4+ID4gLQkJCWVsc2UK Pj4gPiAtCQkJCWZ1bmNzLT5jb21taXQoY3J0Yyk7Cj4+ID4gLQkJfQo+PiA+IC0KPj4gPiAtCQlp ZiAobXNtX25lZWRzX3ZibGFua19wcmVfbW9kZXNldCgKPj4gPiAtCQkJCQkmbmV3X2NydGNfc3Rh dGUtPmFkanVzdGVkX21vZGUpKQo+PiA+IC0JCQlkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoY3J0 Yyk7Cj4+ID4gLQl9Cj4+ID4gLQo+PiA+IC0JLyogZW5zdXJlIGJyaWRnZS9lbmNvZGVyIHVwZGF0 ZXMgaGFwcGVuIG9uIHNhbWUgdmJsYW5rICovCj4+ID4gLQltc21fYXRvbWljX3dhaXRfZm9yX2Nv bW1pdF9kb25lKGRldiwgb2xkX3N0YXRlKTsKPj4gPiAtCj4+ID4gLQlmb3JfZWFjaF9uZXdfY29u bmVjdG9yX2luX3N0YXRlKG9sZF9zdGF0ZSwgY29ubmVjdG9yLAo+PiA+IC0JCQluZXdfY29ubl9z dGF0ZSwgaSkgewo+PiA+IC0JCWNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3Mg KmZ1bmNzOwo+PiA+IC0JCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKPj4gPiAtCj4+ID4g LQkJaWYgKCFuZXdfY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVyKQo+PiA+IC0JCQljb250aW51ZTsK Pj4gPiAtCj4+ID4gLQkJaWYgKCFuZXdfY29ubl9zdGF0ZS0+Y3J0Yy0+c3RhdGUtPmFjdGl2ZSB8 fAo+PiA+IC0JCSAgICAhZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQoCj4+ID4gLQkJCSAg ICBuZXdfY29ubl9zdGF0ZS0+Y3J0Yy0+c3RhdGUpKQo+PiA+IC0JCQljb250aW51ZTsKPj4gPiAt Cj4+ID4gLQkJZW5jb2RlciA9IG5ld19jb25uX3N0YXRlLT5iZXN0X2VuY29kZXI7Cj4+ID4gLQkJ ZnVuY3MgPSBlbmNvZGVyLT5oZWxwZXJfcHJpdmF0ZTsKPj4gPiAtCj4+ID4gLQkJRFJNX0RFQlVH X0FUT01JQygiZW5hYmxpbmcgW0VOQ09ERVI6JWQ6JXNdXG4iLAo+PiA+IC0JCQkJIGVuY29kZXIt PmJhc2UuaWQsIGVuY29kZXItPm5hbWUpOwo+PiA+IC0KPj4gPiAtCQkvKgo+PiA+IC0JCSAqIEVh Y2ggZW5jb2RlciBoYXMgYXQgbW9zdCBvbmUgY29ubmVjdG9yIChzaW5jZSB3ZSBhbHdheXMKPj4g PiBzdGVhbAo+PiA+IC0JCSAqIGl0IGF3YXkpLCBzbyB3ZSB3b24ndCBjYWxsIGVuYWJsZSBob29r cyB0d2ljZS4KPj4gPiAtCQkgKi8KPj4gPiAtCQlkcm1fYnJpZGdlX3ByZV9lbmFibGUoZW5jb2Rl ci0+YnJpZGdlKTsKPj4gPiAtCQkrK2JyaWRnZV9lbmFibGVfY291bnQ7Cj4+ID4gLQo+PiA+IC0J CWlmIChmdW5jcy0+ZW5hYmxlKQo+PiA+IC0JCQlmdW5jcy0+ZW5hYmxlKGVuY29kZXIpOwo+PiA+ IC0JCWVsc2UKPj4gPiAtCQkJZnVuY3MtPmNvbW1pdChlbmNvZGVyKTsKPj4gPiAtCX0KPj4gPiAt Cj4+ID4gLQlpZiAoa21zLT5mdW5jcy0+Y29tbWl0KSB7Cj4+ID4gLQkJRFJNX0RFQlVHX0FUT01J QygidHJpZ2dlcmluZyBjb21taXRcbiIpOwo+PiA+IC0JCWttcy0+ZnVuY3MtPmNvbW1pdChrbXMs IG9sZF9zdGF0ZSk7Cj4+ID4gLQl9Cj4+ID4gLQo+PiA+IC0JLyogSWYgbm8gYnJpZGdlcyB3ZXJl IHByZV9lbmFibGVkLCBza2lwIGl0ZXJhdGluZyBvdmVyIHRoZW0gYWdhaW4KPj4gPiAqLwo+PiA+ IC0JaWYgKGJyaWRnZV9lbmFibGVfY291bnQgPT0gMCkKPj4gPiAtCQlyZXR1cm47Cj4+ID4gLQo+ PiA+IC0JZm9yX2VhY2hfbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShvbGRfc3RhdGUsIGNvbm5lY3Rv ciwKPj4gPiAtCQkJbmV3X2Nvbm5fc3RhdGUsIGkpIHsKPj4gPiAtCQlzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXI7Cj4+ID4gLQo+PiA+IC0JCWlmICghbmV3X2Nvbm5fc3RhdGUtPmJlc3RfZW5j b2RlcikKPj4gPiAtCQkJY29udGludWU7Cj4+ID4gLQo+PiA+IC0JCWlmICghbmV3X2Nvbm5fc3Rh dGUtPmNydGMtPnN0YXRlLT5hY3RpdmUgfHwKPj4gPiAtCQkgICAgIWRybV9hdG9taWNfY3J0Y19u ZWVkc19tb2Rlc2V0KAo+PiA+IC0JCQkJICAgIG5ld19jb25uX3N0YXRlLT5jcnRjLT5zdGF0ZSkp Cj4+ID4gLQkJCWNvbnRpbnVlOwo+PiA+IC0KPj4gPiAtCQllbmNvZGVyID0gbmV3X2Nvbm5fc3Rh dGUtPmJlc3RfZW5jb2RlcjsKPj4gPiAtCj4+ID4gLQkJRFJNX0RFQlVHX0FUT01JQygiYnJpZGdl IGVuYWJsZSBlbmFibGluZwo+PiA+IFtFTkNPREVSOiVkOiVzXVxuIiwKPj4gPiAtCQkJCSBlbmNv ZGVyLT5iYXNlLmlkLCBlbmNvZGVyLT5uYW1lKTsKPj4gPiAtCj4+ID4gLQkJZHJtX2JyaWRnZV9l bmFibGUoZW5jb2Rlci0+YnJpZGdlKTsKPj4gPiAtCX0KPj4gPiAtfQo+PiA+IC0KPj4gPiAgLyog VGhlIChwb3RlbnRpYWxseSkgYXN5bmNocm9ub3VzIHBhcnQgb2YgdGhlIGNvbW1pdC4gIEF0IHRo aXMgcG9pbnQKPj4gPiAgICogbm90aGluZyBjYW4gZmFpbCBzaG9ydCBvZiBhcm1hZ2VkZG9uLgo+ PiA+ICAgKi8KPj4gPiBAQCAtMjI3LDcgKzEwMiwxMiBAQCBzdGF0aWMgdm9pZCBjb21wbGV0ZV9j b21taXQoc3RydWN0IG1zbV9jb21taXQgKmMpCj4+ID4KPj4gPiAgCWRybV9hdG9taWNfaGVscGVy X2NvbW1pdF9wbGFuZXMoZGV2LCBzdGF0ZSwgMCk7Cj4+ID4KPj4gPiAtCW1zbV9hdG9taWNfaGVs cGVyX2NvbW1pdF9tb2Rlc2V0X2VuYWJsZXMoZGV2LCBzdGF0ZSk7Cj4+ID4gKwlkcm1fYXRvbWlj X2hlbHBlcl9jb21taXRfbW9kZXNldF9lbmFibGVzKGRldiwgc3RhdGUpOwo+PiA+ICsKPj4gPiAr CWlmIChrbXMtPmZ1bmNzLT5jb21taXQpIHsKPj4gPiArCQlEUk1fREVCVUdfQVRPTUlDKCJ0cmln Z2VyaW5nIGNvbW1pdFxuIik7Cj4+ID4gKwkJa21zLT5mdW5jcy0+Y29tbWl0KGttcywgc3RhdGUp Owo+PiA+ICsJfQo+PiA+Cj4+ID4gIAkvKiBOT1RFOiBfd2FpdF9mb3JfdmJsYW5rcygpIG9ubHkg d2FpdHMgZm9yIHZibGFuayBvbgo+PiA+ICAJICogZW5hYmxlZCBDUlRDcy4gIFNvIHdlIGVuZCB1 cCBmYXVsdGluZyB3aGVuIGRpc2FibGluZwo+PiAKPj4gLS0KPj4gSmV5a3VtYXIgUwoKLS0gCkpl eWt1bWFyIFMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K RnJlZWRyZW5vIG1haWxpbmcgbGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWRyZW5vCg==