From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [DPU PATCH 02/11] drm/msm: Don't duplicate modeset_enables atomic helper Date: Mon, 12 Mar 2018 16:21:46 -0400 Message-ID: <20180312202146.GA223881@art_vandelay> References: <20180228191906.185417-1-seanpaul@chromium.org> <20180228191906.185417-3-seanpaul@chromium.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Jeykumar Sankaran Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, Sean Paul , abhinavk-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org T24gVGh1LCBNYXIgMDgsIDIwMTggYXQgMDQ6NTY6MDFQTSAtMDgwMCwgSmV5a3VtYXIgU2Fua2Fy YW4gd3JvdGU6Cj4gT24gMjAxOC0wMi0yOCAxMToxOCwgU2VhbiBQYXVsIHdyb3RlOgo+ID4gSW5z dGVhZCwgc2h1ZmZsZSB0aGluZ3MgYXJvdW5kIHNvIHdlIGtpY2tvZmYgY3J0YyBhZnRlciBlbmFi bGluZyBlbmNvZGVyCj4gPiBkdXJpbmcgbW9kZXNldHMuIEFsc28gbW92ZXMgdGhlIHZibGFuayB3 YWl0IHRvIGFmdGVyIHRoZSBmcmFtZS4KPiA+IAo+ID4gQ2hhbmdlLUlkOiBJMTZjN2I3ZjkzOTBk MDRmNjA1MGFhMjBlMTdhNTMzNWZiZjQ5ZWJhMwo+ID4gU2lnbmVkLW9mZi1ieTogU2VhbiBQYXVs IDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+Cj4gPiAtLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfY3J0Yy5jICAgIHwgICA5ICsrCj4gPiAgZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuYyB8ICAgNSArLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9rbXMuYyAgICAgfCAgMzEgKysrKy0KPiA+ICBkcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmggICAgIHwgICAyICsKPiA+ICBkcml2ZXJzL2dwdS9k cm0vbXNtL21zbV9hdG9taWMuYyAgICAgICAgICAgIHwgMTMyICstLS0tLS0tLS0tLS0tLS0tLS0t Cj4gPiAgNSBmaWxlcyBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCAxMzEgZGVsZXRpb25zKC0p Cj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf Y3J0Yy5jCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMKPiA+ IGluZGV4IGEzYWI2ZWQyYmYxZC4uOTRmYWIyZGNjYTViIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYwo+ID4gQEAgLTM1MjUsNiArMzUyNSwxMiBAQCBz dGF0aWMgdm9pZCBkcHVfY3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjCj4gPiAqY3J0YywKPiA+ ICAJRFBVX0VWVDMyX1ZFUkJPU0UoRFJNSUQoY3J0YykpOwo+ID4gIAlkcHVfY3J0YyA9IHRvX2Rw dV9jcnRjKGNydGMpOwo+ID4gCj4gPiArCWlmIChtc21faXNfbW9kZV9zZWFtbGVzcygmY3J0Yy0+ c3RhdGUtPmFkanVzdGVkX21vZGUpIHx8Cj4gPiArCSAgICBtc21faXNfbW9kZV9zZWFtbGVzc192 cnIoJmNydGMtPnN0YXRlLT5hZGp1c3RlZF9tb2RlKSkgewo+ID4gKwkJRFBVX0RFQlVHKCJTa2lw cGluZyBjcnRjIGVuYWJsZSwgc2VhbWxlc3MgbW9kZVxuIik7Cj4gPiArCQlyZXR1cm47Cj4gPiAr CX0KPiA+ICsKPiA+ICAJcG1fcnVudGltZV9nZXRfc3luYyhjcnRjLT5kZXYtPmRldik7Cj4gPiAK PiA+ICAJZHJtX2Zvcl9lYWNoX2VuY29kZXIoZW5jb2RlciwgY3J0Yy0+ZGV2KSB7Cj4gPiBAQCAt MzU3Miw2ICszNTc4LDkgQEAgc3RhdGljIHZvaWQgZHB1X2NydGNfZW5hYmxlKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKPiA+ICAJCURQVV9QT1dFUl9FVkVOVF9QT1NUX0VOQUJMRSB8IERQVV9QT1dF Ul9FVkVOVF9QT1NUX0RJU0FCTEUKPiA+IHwKPiA+ICAJCURQVV9QT1dFUl9FVkVOVF9QUkVfRElT QUJMRSwKPiA+ICAJCWRwdV9jcnRjX2hhbmRsZV9wb3dlcl9ldmVudCwgY3J0YywgZHB1X2NydGMt Pm5hbWUpOwo+ID4gKwo+ID4gKwlpZiAobXNtX25lZWRzX3ZibGFua19wcmVfbW9kZXNldCgmY3J0 Yy0+c3RhdGUtPmFkanVzdGVkX21vZGUpKQo+ID4gKwkJZHJtX2NydGNfd2FpdF9vbmVfdmJsYW5r KGNydGMpOwo+ID4gIH0KPiA+IAo+ID4gIHN0cnVjdCBwbGFuZV9zdGF0ZSB7Cj4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuYwo+ID4gYi9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlci5jCj4gPiBpbmRleCAyOGNl YjU4OWVlNDAuLjRkMWUzNjUyZGJmNCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMKPiA+IEBAIC0zNjkzLDggKzM2OTMsMTEgQEAgc3RhdGlj IHZvaWQgZHB1X2VuY29kZXJfZnJhbWVfZG9uZV90aW1lb3V0KHN0cnVjdAo+ID4gdGltZXJfbGlz dCAqdCkKPiA+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyBk cHVfZW5jb2Rlcl9oZWxwZXJfZnVuY3MgPQo+ID4gewo+ID4gIAkubW9kZV9zZXQgPSBkcHVfZW5j b2Rlcl92aXJ0X21vZGVfc2V0LAo+ID4gIAkuZGlzYWJsZSA9IGRwdV9lbmNvZGVyX3ZpcnRfZGlz YWJsZSwKPiA+IC0JLmVuYWJsZSA9IGRwdV9lbmNvZGVyX3ZpcnRfZW5hYmxlLAo+ID4gKwkuZW5h YmxlID0gZHB1X2ttc19lbmNvZGVyX2VuYWJsZSwKPiA+ICAJLmF0b21pY19jaGVjayA9IGRwdV9l bmNvZGVyX3ZpcnRfYXRvbWljX2NoZWNrLAo+ID4gKwo+ID4gKwkvKiBUaGlzIGlzIGNhbGxlZCBi eSBkcHVfa21zX2VuY29kZXJfZW5hYmxlICovCj4gPiArCS5jb21taXQgPSBkcHVfZW5jb2Rlcl92 aXJ0X2VuYWJsZSwKPiA+ICB9Owo+ID4gCj4gPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5j b2Rlcl9mdW5jcyBkcHVfZW5jb2Rlcl9mdW5jcyA9IHsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2ttcy5jCj4gPiBpbmRleCA4MWZkM2E0MjllOWYuLjNkODMwMzdlODMw NSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMu Ywo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5jCj4gPiBA QCAtNDI1LDE0ICs0MjUsMzcgQEAgc3RhdGljIHZvaWQgZHB1X2ttc19wcmVwYXJlX2NvbW1pdChz dHJ1Y3QgbXNtX2ttcwo+ID4gKmttcywKPiA+ICAJCQlkcHVfZW5jb2Rlcl9wcmVwYXJlX2NvbW1p dChlbmNvZGVyKTsKPiA+ICB9Cj4gPiAKPiA+IC1zdGF0aWMgdm9pZCBkcHVfa21zX2NvbW1pdChz dHJ1Y3QgbXNtX2ttcyAqa21zLAo+ID4gLQkJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9z dGF0ZSkKPiA+ICsvKgo+ID4gKyAqIE92ZXJyaWRlIHRoZSBlbmNvZGVyIGVuYWJsZSBzaW5jZSB3 ZSBuZWVkIHRvIHNldHVwIHRoZSBpbmxpbmUKPiA+IHJvdGF0b3IKPiA+IGFuZCBkbwo+ID4gKyAq IHNvbWUgY3J0YyBtYWdpYyBiZWZvcmUgZW5hYmxpbmcgYW55IGJyaWRnZSB0aGF0IG1pZ2h0IGJl IHByZXNlbnQuCj4gPiArICovCj4gPiArdm9pZCBkcHVfa21zX2VuY29kZXJfZW5hYmxlKHN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2RlcikKPiA+ICt7Cj4gPiArCWNvbnN0IHN0cnVjdCBkcm1fZW5j b2Rlcl9oZWxwZXJfZnVuY3MgKmZ1bmNzID0KPiA+IGVuY29kZXItPmhlbHBlcl9wcml2YXRlOwo+ ID4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBlbmNvZGVyLT5jcnRjOwo+ID4gKwo+ID4gKwkv KiBGb3J3YXJkIHRoaXMgZW5hYmxlIGNhbGwgdG8gdGhlIGNvbW1pdCBob29rICovCj4gPiArCWlm IChmdW5jcyAmJiBmdW5jcy0+Y29tbWl0KQo+ID4gKwkJZnVuY3MtPmNvbW1pdChlbmNvZGVyKTsK PiAKPiBUaGUgcHVycG9zZSBvZiB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBjbGVhci4gV2hlcmUgYXJl IHdlIHNldHRpbmcgdXAgdGhlCj4gaW5saW5lIHJvdGF0b3I/Cj4gV2h5IGRvIHdlIG5lZWQgYSBr aWNrb2ZmIGhlcmU/CgpUaGUgcmVhc29uIHRoZSBjb2RlIGlzIHNodWZmbGVkIGlzIHRvIGF2b2lk IGR1cGxpY2F0aW5nIHRoZSBlbnRpcmUgYXRvbWljIGhlbHBlcgpmdW5jdGlvbi4gQnkgbW92aW5n IGNhbGxzIGludG8gdGhlIC0+ZW5hYmxlIGhvb2tzLCB3ZSBjYW4gYXZvaWQgaGF2aW5nIHRvIGhh bmQKcm9sbCB0aGUgaGVscGVycy4KClRoZSBraWNrb2ZmIGlzIHByZXNlcnZlZCBmcm9tIHRoZSBo ZWxwZXIgY29weSB3aGVuIHlvdSBjYWxsIGttcy0+ZnVuY3MtPmNvbW1pdAppbiBiZXR3ZWVuIHRo ZSBlbmNvZGVyIGVuYWJsZSBhbmQgYnJpZGdlIGVuYWJsZS4gSWYgdGhpcyBjYW4gYmUgcmVtb3Zl ZCwgdGhhdCdkCmJlIGV2ZW4gYmV0dGVyLiBJIHdhcyBzaW1wbHkgdHJ5aW5nIHRvIHByZXNlcnZl IHRoZSBjYWxsIG9yZGVyIG9mIGV2ZXJ5dGhpbmcuCgpTZWFuCgo+ID4gKwo+ID4gKwlpZiAoY3J0 YyAmJiBjcnRjLT5zdGF0ZS0+YWN0aXZlKSB7Cj4gPiArCQlEUFVfRVZUMzIoRFJNSUQoY3J0Yykp Owo+ID4gKwkJZHB1X2NydGNfY29tbWl0X2tpY2tvZmYoY3J0Yyk7Cj4gPiArCX0KPiA+ICt9Cj4g PiArCj4gPiArc3RhdGljIHZvaWQgZHB1X2ttc19jb21taXQoc3RydWN0IG1zbV9rbXMgKmttcywg c3RydWN0IGRybV9hdG9taWNfc3RhdGUKPiA+ICpzdGF0ZSkKPiA+ICB7Cj4gPiAgCXN0cnVjdCBk cm1fY3J0YyAqY3J0YzsKPiA+IC0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0 ZTsKPiA+ICsJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ID4gKwlzdHJ1Y3Qg ZHB1X2NydGNfc3RhdGUgKmNzdGF0ZTsKPiA+ICAJaW50IGk7Cj4gPiAKPiA+IC0JZm9yX2VhY2hf b2xkX2NydGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgaSkgewo+ ID4gKwlmb3JfZWFjaF9uZXdfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwg aSkgewo+ID4gKwkJLyogSWYgbW9kZXNldCBpcyByZXF1aXJlZCwga2lja29mZiBpcyBydW4gaW4K PiA+IGVuY29kZXJfZW5hYmxlICovCj4gPiArCQlpZiAoZHJtX2F0b21pY19jcnRjX25lZWRzX21v ZGVzZXQoY3J0Y19zdGF0ZSkpCj4gPiArCQkJY29udGludWU7Cj4gPiArCj4gPiAgCQlpZiAoY3J0 Yy0+c3RhdGUtPmFjdGl2ZSkgewo+ID4gIAkJCURQVV9FVlQzMihEUk1JRChjcnRjKSk7Cj4gPiAg CQkJZHB1X2NydGNfY29tbWl0X2tpY2tvZmYoY3J0Yyk7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5oCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9rbXMuaAo+ID4gaW5kZXggOGNhZGQyOWE0OGIxLi40MmM4MDllZDk0 NjcgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21z LmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuaAo+ID4g QEAgLTUyOSw0ICs1MjksNiBAQCBpbnQgZHB1X2ttc19mYm9fcmVmZXJlbmNlKHN0cnVjdCBkcHVf a21zX2ZibyAqZmJvKTsKPiA+ICAgKi8KPiA+ICB2b2lkIGRwdV9rbXNfZmJvX3VucmVmZXJlbmNl KHN0cnVjdCBkcHVfa21zX2ZibyAqZmJvKTsKPiA+IAo+ID4gK3ZvaWQgZHB1X2ttc19lbmNvZGVy X2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpOwo+ID4gKwo+ID4gICNlbmRpZiAv KiBfX2RwdV9rbXNfSF9fICovCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9t c21fYXRvbWljLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fYXRvbWljLmMKPiA+IGlu ZGV4IDVjZmI4MDM0NTA1Mi4uZjU3OTRkY2UyNWRkIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL21zbS9tc21fYXRvbWljLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNt X2F0b21pYy5jCj4gPiBAQCAtODQsMTMxICs4NCw2IEBAIHN0YXRpYyB2b2lkIG1zbV9hdG9taWNf d2FpdF9mb3JfY29tbWl0X2RvbmUoCj4gPiAgCX0KPiA+ICB9Cj4gPiAKPiA+IC0vKioKPiA+IC0g KiBtc21fYXRvbWljX2hlbHBlcl9jb21taXRfbW9kZXNldF9lbmFibGVzIC0gbW9kZXNldCBjb21t aXQgdG8gZW5hYmxlCj4gPiBvdXRwdXRzCj4gPiAtICogQGRldjogRFJNIGRldmljZQo+ID4gLSAq IEBvbGRfc3RhdGU6IGF0b21pYyBzdGF0ZSBvYmplY3Qgd2l0aCBvbGQgc3RhdGUgc3RydWN0dXJl cwo+ID4gLSAqCj4gPiAtICogVGhpcyBmdW5jdGlvbiBlbmFibGVzIGFsbCB0aGUgb3V0cHV0cyB3 aXRoIHRoZSBuZXcgY29uZmlndXJhdGlvbgo+ID4gd2hpY2gKPiA+IGhhZCB0bwo+ID4gLSAqIGJl IHR1cm5lZCBvZmYgZm9yIHRoZSB1cGRhdGUuCj4gPiAtICoKPiA+IC0gKiBGb3IgY29tcGF0aWJp bGl0eSB3aXRoIGxlZ2FjeSBjcnRjIGhlbHBlcnMgdGhpcyBzaG91bGQgYmUgY2FsbGVkCj4gPiBh ZnRlcgo+ID4gLSAqIGRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXMoKSwgd2hpY2ggaXMg d2hhdCB0aGUgZGVmYXVsdCBjb21taXQKPiA+IGZ1bmN0aW9uCj4gPiAtICogZG9lcy4gQnV0IGRy aXZlcnMgd2l0aCBkaWZmZXJlbnQgbmVlZHMgY2FuIGdyb3VwIHRoZSBtb2Rlc2V0IGNvbW1pdHMK PiA+IHRvZ2V0aGVyCj4gPiAtICogYW5kIGRvIHRoZSBwbGFuZSBjb21taXRzIGF0IHRoZSBlbmQu IFRoaXMgaXMgdXNlZnVsIGZvciBkcml2ZXJzCj4gPiBkb2luZwo+ID4gcnVudGltZQo+ID4gLSAq IFBNIHNpbmNlIHBsYW5lcyB1cGRhdGVzIHRoZW4gb25seSBoYXBwZW4gd2hlbiB0aGUgQ1JUQyBp cyBhY3R1YWxseQo+ID4gZW5hYmxlZC4KPiA+IC0gKi8KPiA+IC1zdGF0aWMgdm9pZCBtc21fYXRv bWljX2hlbHBlcl9jb21taXRfbW9kZXNldF9lbmFibGVzKHN0cnVjdCBkcm1fZGV2aWNlCj4gPiAq ZGV2LAo+ID4gLQkJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKPiA+IC17Cj4g PiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiA+IC0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpv bGRfY3J0Y19zdGF0ZTsKPiA+IC0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0 ZTsKPiA+IC0Jc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiA+IC0Jc3RydWN0IGRy bV9jb25uZWN0b3Jfc3RhdGUgKm5ld19jb25uX3N0YXRlOwo+ID4gLQlzdHJ1Y3QgbXNtX2RybV9w cml2YXRlICpwcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiA+IC0Jc3RydWN0IG1zbV9rbXMgKmtt cyA9IHByaXYtPmttczsKPiA+IC0JaW50IGJyaWRnZV9lbmFibGVfY291bnQgPSAwOwo+ID4gLQlp bnQgaTsKPiA+IC0KPiA+IC0JZm9yX2VhY2hfb2xkbmV3X2NydGNfaW5fc3RhdGUob2xkX3N0YXRl LCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwKPiA+IC0JCQluZXdfY3J0Y19zdGF0ZSwgaSkgewo+ID4g LQkJY29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyAqZnVuY3M7Cj4gPiAtCj4gPiAt CQkvKiBOZWVkIHRvIGZpbHRlciBvdXQgQ1JUQ3Mgd2hlcmUgb25seSBwbGFuZXMgY2hhbmdlLiAq Lwo+ID4gLQkJaWYgKCFkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldChuZXdfY3J0Y19zdGF0 ZSkpCj4gPiAtCQkJY29udGludWU7Cj4gPiAtCj4gPiAtCQlpZiAoIW5ld19jcnRjX3N0YXRlLT5h Y3RpdmUpCj4gPiAtCQkJY29udGludWU7Cj4gPiAtCj4gPiAtCQlpZiAobXNtX2lzX21vZGVfc2Vh bWxlc3MoJm5ld19jcnRjX3N0YXRlLT5tb2RlKSB8fAo+ID4gLQkJCQltc21faXNfbW9kZV9zZWFt bGVzc192cnIoCj4gPiAtCQkJCSZuZXdfY3J0Y19zdGF0ZS0+YWRqdXN0ZWRfbW9kZSkpCj4gPiAt CQkJY29udGludWU7Cj4gPiAtCj4gPiAtCQlmdW5jcyA9IGNydGMtPmhlbHBlcl9wcml2YXRlOwo+ ID4gLQo+ID4gLQkJaWYgKGNydGMtPnN0YXRlLT5lbmFibGUpIHsKPiA+IC0JCQlEUk1fREVCVUdf QVRPTUlDKCJlbmFibGluZyBbQ1JUQzolZF1cbiIsCj4gPiAtCQkJCQkgY3J0Yy0+YmFzZS5pZCk7 Cj4gPiAtCj4gPiAtCQkJaWYgKGZ1bmNzLT5hdG9taWNfZW5hYmxlKQo+ID4gLQkJCQlmdW5jcy0+ YXRvbWljX2VuYWJsZShjcnRjLAo+ID4gb2xkX2NydGNfc3RhdGUpOwo+ID4gLQkJCWVsc2UKPiA+ IC0JCQkJZnVuY3MtPmNvbW1pdChjcnRjKTsKPiA+IC0JCX0KPiA+IC0KPiA+IC0JCWlmIChtc21f bmVlZHNfdmJsYW5rX3ByZV9tb2Rlc2V0KAo+ID4gLQkJCQkJJm5ld19jcnRjX3N0YXRlLT5hZGp1 c3RlZF9tb2RlKSkKPiA+IC0JCQlkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoY3J0Yyk7Cj4gPiAt CX0KPiA+IC0KPiA+IC0JLyogZW5zdXJlIGJyaWRnZS9lbmNvZGVyIHVwZGF0ZXMgaGFwcGVuIG9u IHNhbWUgdmJsYW5rICovCj4gPiAtCW1zbV9hdG9taWNfd2FpdF9mb3JfY29tbWl0X2RvbmUoZGV2 LCBvbGRfc3RhdGUpOwo+ID4gLQo+ID4gLQlmb3JfZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRl KG9sZF9zdGF0ZSwgY29ubmVjdG9yLAo+ID4gLQkJCW5ld19jb25uX3N0YXRlLCBpKSB7Cj4gPiAt CQljb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzICpmdW5jczsKPiA+IC0JCXN0 cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKPiA+IC0KPiA+IC0JCWlmICghbmV3X2Nvbm5fc3Rh dGUtPmJlc3RfZW5jb2RlcikKPiA+IC0JCQljb250aW51ZTsKPiA+IC0KPiA+IC0JCWlmICghbmV3 X2Nvbm5fc3RhdGUtPmNydGMtPnN0YXRlLT5hY3RpdmUgfHwKPiA+IC0JCSAgICAhZHJtX2F0b21p Y19jcnRjX25lZWRzX21vZGVzZXQoCj4gPiAtCQkJICAgIG5ld19jb25uX3N0YXRlLT5jcnRjLT5z dGF0ZSkpCj4gPiAtCQkJY29udGludWU7Cj4gPiAtCj4gPiAtCQllbmNvZGVyID0gbmV3X2Nvbm5f c3RhdGUtPmJlc3RfZW5jb2RlcjsKPiA+IC0JCWZ1bmNzID0gZW5jb2Rlci0+aGVscGVyX3ByaXZh dGU7Cj4gPiAtCj4gPiAtCQlEUk1fREVCVUdfQVRPTUlDKCJlbmFibGluZyBbRU5DT0RFUjolZDol c11cbiIsCj4gPiAtCQkJCSBlbmNvZGVyLT5iYXNlLmlkLCBlbmNvZGVyLT5uYW1lKTsKPiA+IC0K PiA+IC0JCS8qCj4gPiAtCQkgKiBFYWNoIGVuY29kZXIgaGFzIGF0IG1vc3Qgb25lIGNvbm5lY3Rv ciAoc2luY2Ugd2UgYWx3YXlzCj4gPiBzdGVhbAo+ID4gLQkJICogaXQgYXdheSksIHNvIHdlIHdv bid0IGNhbGwgZW5hYmxlIGhvb2tzIHR3aWNlLgo+ID4gLQkJICovCj4gPiAtCQlkcm1fYnJpZGdl X3ByZV9lbmFibGUoZW5jb2Rlci0+YnJpZGdlKTsKPiA+IC0JCSsrYnJpZGdlX2VuYWJsZV9jb3Vu dDsKPiA+IC0KPiA+IC0JCWlmIChmdW5jcy0+ZW5hYmxlKQo+ID4gLQkJCWZ1bmNzLT5lbmFibGUo ZW5jb2Rlcik7Cj4gPiAtCQllbHNlCj4gPiAtCQkJZnVuY3MtPmNvbW1pdChlbmNvZGVyKTsKPiA+ IC0JfQo+ID4gLQo+ID4gLQlpZiAoa21zLT5mdW5jcy0+Y29tbWl0KSB7Cj4gPiAtCQlEUk1fREVC VUdfQVRPTUlDKCJ0cmlnZ2VyaW5nIGNvbW1pdFxuIik7Cj4gPiAtCQlrbXMtPmZ1bmNzLT5jb21t aXQoa21zLCBvbGRfc3RhdGUpOwo+ID4gLQl9Cj4gPiAtCj4gPiAtCS8qIElmIG5vIGJyaWRnZXMg d2VyZSBwcmVfZW5hYmxlZCwgc2tpcCBpdGVyYXRpbmcgb3ZlciB0aGVtIGFnYWluCj4gPiAqLwo+ ID4gLQlpZiAoYnJpZGdlX2VuYWJsZV9jb3VudCA9PSAwKQo+ID4gLQkJcmV0dXJuOwo+ID4gLQo+ ID4gLQlmb3JfZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRlKG9sZF9zdGF0ZSwgY29ubmVjdG9y LAo+ID4gLQkJCW5ld19jb25uX3N0YXRlLCBpKSB7Cj4gPiAtCQlzdHJ1Y3QgZHJtX2VuY29kZXIg KmVuY29kZXI7Cj4gPiAtCj4gPiAtCQlpZiAoIW5ld19jb25uX3N0YXRlLT5iZXN0X2VuY29kZXIp Cj4gPiAtCQkJY29udGludWU7Cj4gPiAtCj4gPiAtCQlpZiAoIW5ld19jb25uX3N0YXRlLT5jcnRj LT5zdGF0ZS0+YWN0aXZlIHx8Cj4gPiAtCQkgICAgIWRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rl c2V0KAo+ID4gLQkJCQkgICAgbmV3X2Nvbm5fc3RhdGUtPmNydGMtPnN0YXRlKSkKPiA+IC0JCQlj b250aW51ZTsKPiA+IC0KPiA+IC0JCWVuY29kZXIgPSBuZXdfY29ubl9zdGF0ZS0+YmVzdF9lbmNv ZGVyOwo+ID4gLQo+ID4gLQkJRFJNX0RFQlVHX0FUT01JQygiYnJpZGdlIGVuYWJsZSBlbmFibGlu Zwo+ID4gW0VOQ09ERVI6JWQ6JXNdXG4iLAo+ID4gLQkJCQkgZW5jb2Rlci0+YmFzZS5pZCwgZW5j b2Rlci0+bmFtZSk7Cj4gPiAtCj4gPiAtCQlkcm1fYnJpZGdlX2VuYWJsZShlbmNvZGVyLT5icmlk Z2UpOwo+ID4gLQl9Cj4gPiAtfQo+ID4gLQo+ID4gIC8qIFRoZSAocG90ZW50aWFsbHkpIGFzeW5j aHJvbm91cyBwYXJ0IG9mIHRoZSBjb21taXQuICBBdCB0aGlzIHBvaW50Cj4gPiAgICogbm90aGlu ZyBjYW4gZmFpbCBzaG9ydCBvZiBhcm1hZ2VkZG9uLgo+ID4gICAqLwo+ID4gQEAgLTIyNyw3ICsx MDIsMTIgQEAgc3RhdGljIHZvaWQgY29tcGxldGVfY29tbWl0KHN0cnVjdCBtc21fY29tbWl0ICpj KQo+ID4gCj4gPiAgCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXMoZGV2LCBzdGF0ZSwg MCk7Cj4gPiAKPiA+IC0JbXNtX2F0b21pY19oZWxwZXJfY29tbWl0X21vZGVzZXRfZW5hYmxlcyhk ZXYsIHN0YXRlKTsKPiA+ICsJZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X21vZGVzZXRfZW5hYmxl cyhkZXYsIHN0YXRlKTsKPiA+ICsKPiA+ICsJaWYgKGttcy0+ZnVuY3MtPmNvbW1pdCkgewo+ID4g KwkJRFJNX0RFQlVHX0FUT01JQygidHJpZ2dlcmluZyBjb21taXRcbiIpOwo+ID4gKwkJa21zLT5m dW5jcy0+Y29tbWl0KGttcywgc3RhdGUpOwo+ID4gKwl9Cj4gPiAKPiA+ICAJLyogTk9URTogX3dh aXRfZm9yX3ZibGFua3MoKSBvbmx5IHdhaXRzIGZvciB2Ymxhbmsgb24KPiA+ICAJICogZW5hYmxl ZCBDUlRDcy4gIFNvIHdlIGVuZCB1cCBmYXVsdGluZyB3aGVuIGRpc2FibGluZwo+IAo+IC0tIAo+ IEpleWt1bWFyIFMKCi0tIApTZWFuIFBhdWwsIFNvZnR3YXJlIEVuZ2luZWVyLCBHb29nbGUgLyBD aHJvbWl1bSBPUwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8K