From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 1/2] drm/i915: Kill DRI1 cliprects Date: Tue, 6 Oct 2015 13:21:25 +0200 Message-ID: <20151006112125.GJ3383@phenom.ffwll.local> References: <1444127996-23561-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f174.google.com (mail-wi0-f174.google.com [209.85.212.174]) by gabe.freedesktop.org (Postfix) with ESMTPS id D91386E555 for ; Tue, 6 Oct 2015 04:18:32 -0700 (PDT) Received: by wiclk2 with SMTP id lk2so154068481wic.1 for ; Tue, 06 Oct 2015 04:18:31 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1444127996-23561-1-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: intel-gfx@lists.freedesktop.org, Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBPY3QgMDYsIDIwMTUgYXQgMTE6Mzk6NTVBTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFBhc3NpbmcgY2xpcHJlY3RzIGludG8gdGhlIGtlcm5lbCBmb3IgaXQgdG8gcmUtZXhl Y3V0ZSB0aGUgYmF0Y2ggYnVmZmVyCj4gd2l0aCBkaWZmZXJlbnQgQ01EX0RSQVdSRUNUIGRpZWQg b3V0IGxvbmcgYWdvLiBBcyBEUkkxIHN1cHBvcnQgaGFzIGJlZW4KPiByZW1vdmVkIGZyb20gdGhl IGtlcm5lbCwgd2UgY2FuIG5vdyBzaW1wbHkgcmVqZWN0IGFueSBleGVjYnVmIHRyeWluZyB0bwo+ IHVzZSB0aGlzICJmZWF0dXJlIi4KPiAKPiBUbyBrZWVwIERhbmllbCBoYXBweSB3aXRoIHRoZSBw cm9zcGVjdCBvZiBiZWluZyBhYmxlIHRvIHJldXNlIHRoZXNlCj4gZmllbGRzIGluIHRoZSBuZXh0 IGRlY2FkZSwgY29udGludWUgdG8gZW5zdXJlIHRoYXQgY3VycmVudCB1c2Vyc3BhY2UgaXMKPiBu b3QgcGFzc2luZyBnYXJiYWdlIGluIHRocm91Z2ggdGhlIGRlYWQgZmllbGRzLgo+IAo+IHYyOiBG aXggdGhlIGNsaXByZWN0c19wdHIgY2hlY2sKPiAKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxz b24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVs LnZldHRlckBmZndsbC5jaD4KCmlndCBzdWJ0ZXN0IHNlZW1zIHRvIGJlIG1pc3NpbmcgdG8gZW5z dXJlIHdlIGVuZm9yY2UgdGhpcy4gWWF5IG90aGVyd2lzZSEKLURhbmllbAoKPiAtLS0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIHwgMTU0ICsrKysrKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAg ICAgICAgICB8ICAxNSAtLS0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAzMSBpbnNlcnRpb25zKCspLCAx MzggZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2V4ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNi dWZmZXIuYwo+IGluZGV4IDc1YTBjOGI1MzA1Yi4uMDQ1YTc2MzFmYWEwIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IEBAIC05NDcsNyArOTQ3LDIx IEBAIGk5MTVfZ2VtX2NoZWNrX2V4ZWNidWZmZXIoc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVm ZmVyMiAqZXhlYykKPiAgCWlmIChleGVjLT5mbGFncyAmIF9fSTkxNV9FWEVDX1VOS05PV05fRkxB R1MpCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiAtCXJldHVybiAoKGV4ZWMtPmJhdGNoX3N0YXJ0 X29mZnNldCB8IGV4ZWMtPmJhdGNoX2xlbikgJiAweDcpID09IDA7Cj4gKwkvKiBLZXJuZWwgY2xp cHBpbmcgd2FzIGEgRFJJMSBtaXNmZWF0dXJlICovCj4gKwlpZiAoZXhlYy0+bnVtX2NsaXByZWN0 cyB8fCBleGVjLT5jbGlwcmVjdHNfcHRyKQo+ICsJCXJldHVybiBmYWxzZTsKPiArCj4gKwlpZiAo ZXhlYy0+RFI0ID09IDB4ZmZmZmZmZmYpIHsKPiArCQlEUk1fREVCVUcoIlVYQSBzdWJtaXR0aW5n IGdhcmJhZ2UgRFI0LCBmaXhpbmcgdXBcbiIpOwo+ICsJCWV4ZWMtPkRSNCA9IDA7Cj4gKwl9Cj4g KwlpZiAoZXhlYy0+RFIxIHx8IGV4ZWMtPkRSNCkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJ aWYgKChleGVjLT5iYXRjaF9zdGFydF9vZmZzZXQgfCBleGVjLT5iYXRjaF9sZW4pICYgMHg3KQo+ ICsJCXJldHVybiBmYWxzZTsKPiArCj4gKwlyZXR1cm4gdHJ1ZTsKPiAgfQo+ICAKPiAgc3RhdGlj IGludAo+IEBAIC0xMTExLDQ3ICsxMTI1LDYgQEAgaTkxNV9yZXNldF9nZW43X3NvbF9vZmZzZXRz KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGlj IGludAo+IC1pOTE1X2VtaXRfYm94KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ IC0JICAgICAgc3RydWN0IGRybV9jbGlwX3JlY3QgKmJveCwKPiAtCSAgICAgIGludCBEUjEsIGlu dCBEUjQpCj4gLXsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSByZXEtPnJpbmc7 Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCWlmIChib3gtPnkyIDw9IGJveC0+eTEgfHwgYm94LT54MiA8 PSBib3gtPngxIHx8Cj4gLQkgICAgYm94LT55MiA8PSAwIHx8IGJveC0+eDIgPD0gMCkgewo+IC0J CURSTV9FUlJPUigiQmFkIGJveCAlZCwlZC4uJWQsJWRcbiIsCj4gLQkJCSAgYm94LT54MSwgYm94 LT55MSwgYm94LT54MiwgYm94LT55Mik7Cj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gLQl9Cj4gLQo+ IC0JaWYgKElOVEVMX0lORk8ocmluZy0+ZGV2KS0+Z2VuID49IDQpIHsKPiAtCQlyZXQgPSBpbnRl bF9yaW5nX2JlZ2luKHJlcSwgNCk7Cj4gLQkJaWYgKHJldCkKPiAtCQkJcmV0dXJuIHJldDsKPiAt Cj4gLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIEdGWF9PUF9EUkFXUkVDVF9JTkZPX0k5NjUpOwo+ IC0JCWludGVsX3JpbmdfZW1pdChyaW5nLCAoYm94LT54MSAmIDB4ZmZmZikgfCBib3gtPnkxIDw8 IDE2KTsKPiAtCQlpbnRlbF9yaW5nX2VtaXQocmluZywgKChib3gtPngyIC0gMSkgJiAweGZmZmYp IHwgKGJveC0+eTIgLSAxKSA8PCAxNik7Cj4gLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIERSNCk7 Cj4gLQl9IGVsc2Ugewo+IC0JCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2KTsKPiAtCQlp ZiAocmV0KQo+IC0JCQlyZXR1cm4gcmV0Owo+IC0KPiAtCQlpbnRlbF9yaW5nX2VtaXQocmluZywg R0ZYX09QX0RSQVdSRUNUX0lORk8pOwo+IC0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBEUjEpOwo+ IC0JCWludGVsX3JpbmdfZW1pdChyaW5nLCAoYm94LT54MSAmIDB4ZmZmZikgfCBib3gtPnkxIDw8 IDE2KTsKPiAtCQlpbnRlbF9yaW5nX2VtaXQocmluZywgKChib3gtPngyIC0gMSkgJiAweGZmZmYp IHwgKGJveC0+eTIgLSAxKSA8PCAxNik7Cj4gLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIERSNCk7 Cj4gLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwo+IC0JfQo+IC0JaW50ZWxfcmluZ19hZHZh bmNlKHJpbmcpOwo+IC0KPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+ICBzdGF0aWMgc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QqCj4gIGk5MTVfZ2VtX2V4ZWNidWZmZXJfcGFyc2Uoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqcmluZywKPiAgCQkJICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2Jq ZWN0MiAqc2hhZG93X2V4ZWNfZW50cnksCj4gQEAgLTEyMTAsNjUgKzExODMsMjEgQEAgaTkxNV9n ZW1fcmluZ2J1ZmZlcl9zdWJtaXNzaW9uKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zICpw YXJhbXMsCj4gIAkJCSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyICphcmdz LAo+ICAJCQkgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqdm1hcykKPiAgewo+IC0Jc3RydWN0IGRy bV9jbGlwX3JlY3QgKmNsaXByZWN0cyA9IE5VTEw7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gcGFyYW1zLT5kZXY7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcGFyYW1z LT5yaW5nOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZf cHJpdmF0ZTsKPiAgCXU2NCBleGVjX3N0YXJ0LCBleGVjX2xlbjsKPiAgCWludCBpbnN0cF9tb2Rl Owo+ICAJdTMyIGluc3RwX21hc2s7Cj4gLQlpbnQgaSwgcmV0ID0gMDsKPiAtCj4gLQlpZiAoYXJn cy0+bnVtX2NsaXByZWN0cyAhPSAwKSB7Cj4gLQkJaWYgKHJpbmcgIT0gJmRldl9wcml2LT5yaW5n W1JDU10pIHsKPiAtCQkJRFJNX0RFQlVHKCJjbGlwIHJlY3RhbmdsZXMgYXJlIG9ubHkgdmFsaWQg d2l0aCB0aGUgcmVuZGVyIHJpbmdcbiIpOwo+IC0JCQlyZXR1cm4gLUVJTlZBTDsKPiAtCQl9Cj4g LQo+IC0JCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA1KSB7Cj4gLQkJCURSTV9ERUJVRygi Y2xpcCByZWN0YW5nbGVzIGFyZSBvbmx5IHZhbGlkIG9uIHByZS1nZW41XG4iKTsKPiAtCQkJcmV0 dXJuIC1FSU5WQUw7Cj4gLQkJfQo+IC0KPiAtCQlpZiAoYXJncy0+bnVtX2NsaXByZWN0cyA+IFVJ TlRfTUFYIC8gc2l6ZW9mKCpjbGlwcmVjdHMpKSB7Cj4gLQkJCURSTV9ERUJVRygiZXhlY2J1ZiB3 aXRoICV1IGNsaXByZWN0c1xuIiwKPiAtCQkJCSAgYXJncy0+bnVtX2NsaXByZWN0cyk7Cj4gLQkJ CXJldHVybiAtRUlOVkFMOwo+IC0JCX0KPiAtCj4gLQkJY2xpcHJlY3RzID0ga2NhbGxvYyhhcmdz LT5udW1fY2xpcHJlY3RzLAo+IC0JCQkJICAgIHNpemVvZigqY2xpcHJlY3RzKSwKPiAtCQkJCSAg ICBHRlBfS0VSTkVMKTsKPiAtCQlpZiAoY2xpcHJlY3RzID09IE5VTEwpIHsKPiAtCQkJcmV0ID0g LUVOT01FTTsKPiAtCQkJZ290byBlcnJvcjsKPiAtCQl9Cj4gLQo+IC0JCWlmIChjb3B5X2Zyb21f dXNlcihjbGlwcmVjdHMsCj4gLQkJCQkgICB0b191c2VyX3B0cihhcmdzLT5jbGlwcmVjdHNfcHRy KSwKPiAtCQkJCSAgIHNpemVvZigqY2xpcHJlY3RzKSphcmdzLT5udW1fY2xpcHJlY3RzKSkgewo+ IC0JCQlyZXQgPSAtRUZBVUxUOwo+IC0JCQlnb3RvIGVycm9yOwo+IC0JCX0KPiAtCX0gZWxzZSB7 Cj4gLQkJaWYgKGFyZ3MtPkRSNCA9PSAweGZmZmZmZmZmKSB7Cj4gLQkJCURSTV9ERUJVRygiVVhB IHN1Ym1pdHRpbmcgZ2FyYmFnZSBEUjQsIGZpeGluZyB1cFxuIik7Cj4gLQkJCWFyZ3MtPkRSNCA9 IDA7Cj4gLQkJfQo+IC0KPiAtCQlpZiAoYXJncy0+RFIxIHx8IGFyZ3MtPkRSNCB8fCBhcmdzLT5j bGlwcmVjdHNfcHRyKSB7Cj4gLQkJCURSTV9ERUJVRygiMCBjbGlwcmVjdHMgYnV0IGRpcnQgaW4g Y2xpcHJlY3RzIGZpZWxkc1xuIik7Cj4gLQkJCXJldHVybiAtRUlOVkFMOwo+IC0JCX0KPiAtCX0K PiArCWludCByZXQ7Cj4gIAo+ICAJcmV0ID0gaTkxNV9nZW1fZXhlY2J1ZmZlcl9tb3ZlX3RvX2dw dShwYXJhbXMtPnJlcXVlc3QsIHZtYXMpOwo+ICAJaWYgKHJldCkKPiAtCQlnb3RvIGVycm9yOwo+ ICsJCXJldHVybiByZXQ7Cj4gIAo+ICAJcmV0ID0gaTkxNV9zd2l0Y2hfY29udGV4dChwYXJhbXMt PnJlcXVlc3QpOwo+ICAJaWYgKHJldCkKPiAtCQlnb3RvIGVycm9yOwo+ICsJCXJldHVybiByZXQ7 Cj4gIAo+ICAJV0FSTihwYXJhbXMtPmN0eC0+cHBndHQgJiYgcGFyYW1zLT5jdHgtPnBwZ3R0LT5w ZF9kaXJ0eV9yaW5ncyAmICgxPDxyaW5nLT5pZCksCj4gIAkgICAgICIlcyBkaWRuJ3QgY2xlYXIg cmVsb2FkXG4iLCByaW5nLT5uYW1lKTsKPiBAQCAtMTI4MSwyMiArMTIxMCwxOSBAQCBpOTE1X2dl bV9yaW5nYnVmZmVyX3N1Ym1pc3Npb24oc3RydWN0IGk5MTVfZXhlY2J1ZmZlcl9wYXJhbXMgKnBh cmFtcywKPiAgCWNhc2UgSTkxNV9FWEVDX0NPTlNUQU5UU19SRUxfU1VSRkFDRToKPiAgCQlpZiAo aW5zdHBfbW9kZSAhPSAwICYmIHJpbmcgIT0gJmRldl9wcml2LT5yaW5nW1JDU10pIHsKPiAgCQkJ RFJNX0RFQlVHKCJub24tMCByZWwgY29uc3RhbnRzIG1vZGUgb24gbm9uLVJDU1xuIik7Cj4gLQkJ CXJldCA9IC1FSU5WQUw7Cj4gLQkJCWdvdG8gZXJyb3I7Cj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ ICAJCX0KPiAgCj4gIAkJaWYgKGluc3RwX21vZGUgIT0gZGV2X3ByaXYtPnJlbGF0aXZlX2NvbnN0 YW50c19tb2RlKSB7Cj4gIAkJCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDQpIHsKPiAgCQkJ CURSTV9ERUJVRygibm8gcmVsIGNvbnN0YW50cyBvbiBwcmUtZ2VuNFxuIik7Cj4gLQkJCQlyZXQg PSAtRUlOVkFMOwo+IC0JCQkJZ290byBlcnJvcjsKPiArCQkJCXJldHVybiAtRUlOVkFMOwo+ICAJ CQl9Cj4gIAo+ICAJCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPiA1ICYmCj4gIAkJCSAgICBp bnN0cF9tb2RlID09IEk5MTVfRVhFQ19DT05TVEFOVFNfUkVMX1NVUkZBQ0UpIHsKPiAgCQkJCURS TV9ERUJVRygicmVsIHN1cmZhY2UgY29uc3RhbnRzIG1vZGUgaW52YWxpZCBvbiBnZW41K1xuIik7 Cj4gLQkJCQlyZXQgPSAtRUlOVkFMOwo+IC0JCQkJZ290byBlcnJvcjsKPiArCQkJCXJldHVybiAt RUlOVkFMOwo+ICAJCQl9Cj4gIAo+ICAJCQkvKiBUaGUgSFcgY2hhbmdlZCB0aGUgbWVhbmluZyBv biB0aGlzIGJpdCBvbiBnZW42ICovCj4gQEAgLTEzMDYsMTUgKzEyMzIsMTQgQEAgaTkxNV9nZW1f cmluZ2J1ZmZlcl9zdWJtaXNzaW9uKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zICpwYXJh bXMsCj4gIAkJYnJlYWs7Cj4gIAlkZWZhdWx0Ogo+ICAJCURSTV9ERUJVRygiZXhlY2J1ZiB3aXRo IHVua25vd24gY29uc3RhbnRzOiAlZFxuIiwgaW5zdHBfbW9kZSk7Cj4gLQkJcmV0ID0gLUVJTlZB TDsKPiAtCQlnb3RvIGVycm9yOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICAJfQo+ICAKPiAgCWlm IChyaW5nID09ICZkZXZfcHJpdi0+cmluZ1tSQ1NdICYmCj4gLQkJCWluc3RwX21vZGUgIT0gZGV2 X3ByaXYtPnJlbGF0aXZlX2NvbnN0YW50c19tb2RlKSB7Cj4gKwkgICAgaW5zdHBfbW9kZSAhPSBk ZXZfcHJpdi0+cmVsYXRpdmVfY29uc3RhbnRzX21vZGUpIHsKPiAgCQlyZXQgPSBpbnRlbF9yaW5n X2JlZ2luKHBhcmFtcy0+cmVxdWVzdCwgNCk7Cj4gIAkJaWYgKHJldCkKPiAtCQkJZ290byBlcnJv cjsKPiArCQkJcmV0dXJuIHJldDsKPiAgCj4gIAkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05P T1ApOwo+ICAJCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKSk7 Cj4gQEAgLTEzMjgsNDIgKzEyNTMsMjUgQEAgaTkxNV9nZW1fcmluZ2J1ZmZlcl9zdWJtaXNzaW9u KHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zICpwYXJhbXMsCj4gIAlpZiAoYXJncy0+Zmxh Z3MgJiBJOTE1X0VYRUNfR0VON19TT0xfUkVTRVQpIHsKPiAgCQlyZXQgPSBpOTE1X3Jlc2V0X2dl bjdfc29sX29mZnNldHMoZGV2LCBwYXJhbXMtPnJlcXVlc3QpOwo+ICAJCWlmIChyZXQpCj4gLQkJ CWdvdG8gZXJyb3I7Cj4gKwkJCXJldHVybiByZXQ7Cj4gIAl9Cj4gIAo+ICAJZXhlY19sZW4gICA9 IGFyZ3MtPmJhdGNoX2xlbjsKPiAgCWV4ZWNfc3RhcnQgPSBwYXJhbXMtPmJhdGNoX29ial92bV9v ZmZzZXQgKwo+ICAJCSAgICAgcGFyYW1zLT5hcmdzX2JhdGNoX3N0YXJ0X29mZnNldDsKPiAgCj4g LQlpZiAoY2xpcHJlY3RzKSB7Cj4gLQkJZm9yIChpID0gMDsgaSA8IGFyZ3MtPm51bV9jbGlwcmVj dHM7IGkrKykgewo+IC0JCQlyZXQgPSBpOTE1X2VtaXRfYm94KHBhcmFtcy0+cmVxdWVzdCwgJmNs aXByZWN0c1tpXSwKPiAtCQkJCQkgICAgYXJncy0+RFIxLCBhcmdzLT5EUjQpOwo+IC0JCQlpZiAo cmV0KQo+IC0JCQkJZ290byBlcnJvcjsKPiAtCj4gLQkJCXJldCA9IHJpbmctPmRpc3BhdGNoX2V4 ZWNidWZmZXIocGFyYW1zLT5yZXF1ZXN0LAo+IC0JCQkJCQkJZXhlY19zdGFydCwgZXhlY19sZW4s Cj4gLQkJCQkJCQlwYXJhbXMtPmRpc3BhdGNoX2ZsYWdzKTsKPiAtCQkJaWYgKHJldCkKPiAtCQkJ CWdvdG8gZXJyb3I7Cj4gLQkJfQo+IC0JfSBlbHNlIHsKPiAtCQlyZXQgPSByaW5nLT5kaXNwYXRj aF9leGVjYnVmZmVyKHBhcmFtcy0+cmVxdWVzdCwKPiAtCQkJCQkJZXhlY19zdGFydCwgZXhlY19s ZW4sCj4gLQkJCQkJCXBhcmFtcy0+ZGlzcGF0Y2hfZmxhZ3MpOwo+IC0JCWlmIChyZXQpCj4gLQkJ CXJldHVybiByZXQ7Cj4gLQl9Cj4gKwlyZXQgPSByaW5nLT5kaXNwYXRjaF9leGVjYnVmZmVyKHBh cmFtcy0+cmVxdWVzdCwKPiArCQkJCQlleGVjX3N0YXJ0LCBleGVjX2xlbiwKPiArCQkJCQlwYXJh bXMtPmRpc3BhdGNoX2ZsYWdzKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiAgCj4g IAl0cmFjZV9pOTE1X2dlbV9yaW5nX2Rpc3BhdGNoKHBhcmFtcy0+cmVxdWVzdCwgcGFyYW1zLT5k aXNwYXRjaF9mbGFncyk7Cj4gIAo+ICAJaTkxNV9nZW1fZXhlY2J1ZmZlcl9tb3ZlX3RvX2FjdGl2 ZSh2bWFzLCBwYXJhbXMtPnJlcXVlc3QpOwo+ICAJaTkxNV9nZW1fZXhlY2J1ZmZlcl9yZXRpcmVf Y29tbWFuZHMocGFyYW1zKTsKPiAgCj4gLWVycm9yOgo+IC0Ja2ZyZWUoY2xpcHJlY3RzKTsKPiAt CXJldHVybiByZXQ7Cj4gKwlyZXR1cm4gMDsKPiAgfQo+ICAKPiAgLyoqCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmMKPiBpbmRleCA3OGFhYjk0NmRiMDQuLmQzODc0NmM1MzcwZCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gQEAgLTg3OCwyMSArODc4LDYgQEAgaW50IGludGVsX2V4 ZWNsaXN0c19zdWJtaXNzaW9uKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zICpwYXJhbXMs Cj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAl9Cj4gIAo+IC0JaWYgKGFyZ3MtPm51bV9jbGlwcmVj dHMgIT0gMCkgewo+IC0JCURSTV9ERUJVRygiY2xpcCByZWN0YW5nbGVzIGFyZSBvbmx5IHZhbGlk IG9uIHByZS1nZW41XG4iKTsKPiAtCQlyZXR1cm4gLUVJTlZBTDsKPiAtCX0gZWxzZSB7Cj4gLQkJ aWYgKGFyZ3MtPkRSNCA9PSAweGZmZmZmZmZmKSB7Cj4gLQkJCURSTV9ERUJVRygiVVhBIHN1Ym1p dHRpbmcgZ2FyYmFnZSBEUjQsIGZpeGluZyB1cFxuIik7Cj4gLQkJCWFyZ3MtPkRSNCA9IDA7Cj4g LQkJfQo+IC0KPiAtCQlpZiAoYXJncy0+RFIxIHx8IGFyZ3MtPkRSNCB8fCBhcmdzLT5jbGlwcmVj dHNfcHRyKSB7Cj4gLQkJCURSTV9ERUJVRygiMCBjbGlwcmVjdHMgYnV0IGRpcnQgaW4gY2xpcHJl Y3RzIGZpZWxkc1xuIik7Cj4gLQkJCXJldHVybiAtRUlOVkFMOwo+IC0JCX0KPiAtCX0KPiAtCj4g IAlpZiAoYXJncy0+ZmxhZ3MgJiBJOTE1X0VYRUNfR0VON19TT0xfUkVTRVQpIHsKPiAgCQlEUk1f REVCVUcoInNvbCByZXNldCBpcyBnZW43IG9ubHlcbiIpOwo+ICAJCXJldHVybiAtRUlOVkFMOwo+ IC0tIAo+IDIuNi4wCj4gCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50 ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK