From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 3/3] drm/atomic: Use explicit old/new state in drm_atomic_plane_check() Date: Mon, 5 Nov 2018 10:33:47 +0100 Message-ID: <20181105093347.GH21967@phenom.ffwll.local> References: <20181101184646.14753-1-ville.syrjala@linux.intel.com> <20181101184646.14753-3-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20181101184646.14753-3-ville.syrjala@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: Ville Syrjala Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBOb3YgMDEsIDIwMTggYXQgMDg6NDY6NDZQTSArMDIwMCwgVmlsbGUgU3lyamFsYSB3 cm90ZToKPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwu Y29tPgo+IAo+IENvbnZlcnQgZHJtX2F0b21pY19wbGFuZV9jaGVjaygpIG92ZXIgdG8gdXNpbmcg ZXhwbGljaXQgb2xkIHZzLiBuZXcKPiBwbGFuZSBzdGF0ZXMuIEF2b2lkcyB0aGUgY29uZnVzaW9u IG9mICJ3aGF0IGRvZXMgcGxhbmUtPnN0YXRlIG1lYW4KPiBhZ2Fpbj8iLgo+IAo+IFNpZ25lZC1v ZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4g LS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMgfCA5MCArKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDQ2IGluc2VydGlvbnMoKyks IDQ0IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0 b21pYy5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+IGluZGV4IGRkZTY5NjE4MWVm ZS4uNDZmOGQ3OThlZmFmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWlj LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj4gQEAgLTQ5MiwxMDggKzQ5 MiwxMDkgQEAgZHJtX2F0b21pY19nZXRfcGxhbmVfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKnN0YXRlLAo+ICBFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNfZ2V0X3BsYW5lX3N0YXRlKTsK PiAgCj4gIHN0YXRpYyBib29sCj4gLXBsYW5lX3N3aXRjaGluZ19jcnRjKHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSwKPiAtCQkgICAgIHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+IC0J CSAgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gK3BsYW5lX3N3aXRj aGluZ19jcnRjKGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9wbGFuZV9zdGF0ZSwK PiArCQkgICAgIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm5ld19wbGFuZV9zdGF0ZSkK PiAgewo+IC0JaWYgKCFwbGFuZS0+c3RhdGUtPmNydGMgfHwgIXBsYW5lX3N0YXRlLT5jcnRjKQo+ IC0JCXJldHVybiBmYWxzZTsKPiAtCj4gLQlpZiAocGxhbmUtPnN0YXRlLT5jcnRjID09IHBsYW5l X3N0YXRlLT5jcnRjKQo+IC0JCXJldHVybiBmYWxzZTsKPiAtCj4gIAkvKiBUaGlzIGNvdWxkIGJl IHJlZmluZWQsIGJ1dCBjdXJyZW50bHkgdGhlcmUncyBubyBoZWxwZXIgb3IgZHJpdmVyIGNvZGUK PiAgCSAqIHRvIGltcGxlbWVudCBkaXJlY3Qgc3dpdGNoaW5nIG9mIGFjdGl2ZSBwbGFuZXMgbm9y IHVzZXJzcGFjZSB0byB0YWtlCj4gIAkgKiBhZHZhbnRhZ2Ugb2YgbW9yZSBkaXJlY3QgcGxhbmUg c3dpdGNoaW5nIHdpdGhvdXQgdGhlIGludGVybWVkaWF0ZQo+ICAJICogZnVsbCBPRkYgc3RhdGUu Cj4gIAkgKi8KPiAtCXJldHVybiB0cnVlOwo+ICsJcmV0dXJuIG9sZF9wbGFuZV9zdGF0ZS0+Y3J0 YyAmJiBuZXdfcGxhbmVfc3RhdGUtPmNydGMgJiYKPiArCQlvbGRfcGxhbmVfc3RhdGUtPmNydGMg IT0gbmV3X3BsYW5lX3N0YXRlLT5jcnRjOwoKSSB0aGluayB0aGUgb2xkIGxheW91dCB3YXMgY2xl YXJlciwgaW5zdGVhZCBvZiBhbiBvYnNjdXJlIG1vbnN0ZXIKY29uZGl0aW9uLgoKV2l0aCB0aGUg b2xkIGxheW91dCBoZXJlIHRoaXMgaXM6CgpSZXZpZXdlZC1ieTogRGFuaWVsIFZldHRlciA8ZGFu aWVsLnZldHRlckBmZndsbC5jaD4KPiAgfQo+ICAKPiAgLyoqCj4gICAqIGRybV9hdG9taWNfcGxh bmVfY2hlY2sgLSBjaGVjayBwbGFuZSBzdGF0ZQo+IC0gKiBAcGxhbmU6IHBsYW5lIHRvIGNoZWNr Cj4gLSAqIEBzdGF0ZTogcGxhbmUgc3RhdGUgdG8gY2hlY2sKPiArICogQG9sZF9wbGFuZV9zdGF0 ZTogb2xkIHBsYW5lIHN0YXRlIHRvIGNoZWNrCj4gKyAqIEBuZXdfcGxhbmVfc3RhdGU6IG5ldyBw bGFuZSBzdGF0ZSB0byBjaGVjawo+ICAgKgo+ICAgKiBQcm92aWRlcyBjb3JlIHNhbml0eSBjaGVj a3MgZm9yIHBsYW5lIHN0YXRlLgo+ICAgKgo+ICAgKiBSRVRVUk5TOgo+ICAgKiBaZXJvIG9uIHN1 Y2Nlc3MsIGVycm9yIGNvZGUgb24gZmFpbHVyZQo+ICAgKi8KPiAtc3RhdGljIGludCBkcm1fYXRv bWljX3BsYW5lX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+IC0JCXN0cnVjdCBkcm1f cGxhbmVfc3RhdGUgKnN0YXRlKQo+ICtzdGF0aWMgaW50IGRybV9hdG9taWNfcGxhbmVfY2hlY2so Y29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3BsYW5lX3N0YXRlLAo+ICsJCQkJICBj b25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpuZXdfcGxhbmVfc3RhdGUpCj4gIHsKPiArCXN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lID0gbmV3X3BsYW5lX3N0YXRlLT5wbGFuZTsKPiArCXN0cnVj dCBkcm1fY3J0YyAqY3J0YyA9IG5ld19wbGFuZV9zdGF0ZS0+Y3J0YzsKPiArCWNvbnN0IHN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiID0gbmV3X3BsYW5lX3N0YXRlLT5mYjsKPiAgCXVuc2lnbmVk IGludCBmYl93aWR0aCwgZmJfaGVpZ2h0Owo+ICAJaW50IHJldDsKPiAgCj4gIAkvKiBlaXRoZXIg KmJvdGgqIENSVEMgYW5kIEZCIG11c3QgYmUgc2V0LCBvciBuZWl0aGVyICovCj4gLQlpZiAoc3Rh dGUtPmNydGMgJiYgIXN0YXRlLT5mYikgewo+ICsJaWYgKGNydGMgJiYgIWZiKSB7Cj4gIAkJRFJN X0RFQlVHX0FUT01JQygiW1BMQU5FOiVkOiVzXSBDUlRDIHNldCBidXQgbm8gRkJcbiIsCj4gIAkJ CQkgcGxhbmUtPmJhc2UuaWQsIHBsYW5lLT5uYW1lKTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAt CX0gZWxzZSBpZiAoc3RhdGUtPmZiICYmICFzdGF0ZS0+Y3J0Yykgewo+ICsJfSBlbHNlIGlmIChm YiAmJiAhY3J0Yykgewo+ICAJCURSTV9ERUJVR19BVE9NSUMoIltQTEFORTolZDolc10gRkIgc2V0 IGJ1dCBubyBDUlRDXG4iLAo+ICAJCQkJIHBsYW5lLT5iYXNlLmlkLCBwbGFuZS0+bmFtZSk7Cj4g IAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAl9Cj4gIAo+ICAJLyogaWYgZGlzYWJsZWQsIHdlIGRvbid0 IGNhcmUgYWJvdXQgdGhlIHJlc3Qgb2YgdGhlIHN0YXRlOiAqLwo+IC0JaWYgKCFzdGF0ZS0+Y3J0 YykKPiArCWlmICghY3J0YykKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAkvKiBDaGVjayB3aGV0aGVy IHRoaXMgcGxhbmUgaXMgdXNhYmxlIG9uIHRoaXMgQ1JUQyAqLwo+IC0JaWYgKCEocGxhbmUtPnBv c3NpYmxlX2NydGNzICYgZHJtX2NydGNfbWFzayhzdGF0ZS0+Y3J0YykpKSB7Cj4gKwlpZiAoIShw bGFuZS0+cG9zc2libGVfY3J0Y3MgJiBkcm1fY3J0Y19tYXNrKGNydGMpKSkgewo+ICAJCURSTV9E RUJVR19BVE9NSUMoIkludmFsaWQgW0NSVEM6JWQ6JXNdIGZvciBbUExBTkU6JWQ6JXNdXG4iLAo+ IC0JCQkJIHN0YXRlLT5jcnRjLT5iYXNlLmlkLCBzdGF0ZS0+Y3J0Yy0+bmFtZSwKPiArCQkJCSBj cnRjLT5iYXNlLmlkLCBjcnRjLT5uYW1lLAo+ICAJCQkJIHBsYW5lLT5iYXNlLmlkLCBwbGFuZS0+ bmFtZSk7Cj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAl9Cj4gIAo+ICAJLyogQ2hlY2sgd2hldGhl ciB0aGlzIHBsYW5lIHN1cHBvcnRzIHRoZSBmYiBwaXhlbCBmb3JtYXQuICovCj4gLQlyZXQgPSBk cm1fcGxhbmVfY2hlY2tfcGl4ZWxfZm9ybWF0KHBsYW5lLCBzdGF0ZS0+ZmItPmZvcm1hdC0+Zm9y bWF0LAo+IC0JCQkJCSAgIHN0YXRlLT5mYi0+bW9kaWZpZXIpOwo+ICsJcmV0ID0gZHJtX3BsYW5l X2NoZWNrX3BpeGVsX2Zvcm1hdChwbGFuZSwgZmItPmZvcm1hdC0+Zm9ybWF0LAo+ICsJCQkJCSAg IGZiLT5tb2RpZmllcik7Cj4gIAlpZiAocmV0KSB7Cj4gIAkJc3RydWN0IGRybV9mb3JtYXRfbmFt ZV9idWYgZm9ybWF0X25hbWU7Cj4gIAkJRFJNX0RFQlVHX0FUT01JQygiW1BMQU5FOiVkOiVzXSBp bnZhbGlkIHBpeGVsIGZvcm1hdCAlcywgbW9kaWZpZXIgMHglbGx4XG4iLAo+ICAJCQkJIHBsYW5l LT5iYXNlLmlkLCBwbGFuZS0+bmFtZSwKPiAtCQkJCSBkcm1fZ2V0X2Zvcm1hdF9uYW1lKHN0YXRl LT5mYi0+Zm9ybWF0LT5mb3JtYXQsCj4gKwkJCQkgZHJtX2dldF9mb3JtYXRfbmFtZShmYi0+Zm9y bWF0LT5mb3JtYXQsCj4gIAkJCQkJCSAgICAgJmZvcm1hdF9uYW1lKSwKPiAtCQkJCSBzdGF0ZS0+ ZmItPm1vZGlmaWVyKTsKPiArCQkJCSBmYi0+bW9kaWZpZXIpOwo+ICAJCXJldHVybiByZXQ7Cj4g IAl9Cj4gIAo+ICAJLyogR2l2ZSBkcml2ZXJzIHNvbWUgaGVscCBhZ2FpbnN0IGludGVnZXIgb3Zl cmZsb3dzICovCj4gLQlpZiAoc3RhdGUtPmNydGNfdyA+IElOVF9NQVggfHwKPiAtCSAgICBzdGF0 ZS0+Y3J0Y194ID4gSU5UX01BWCAtIChpbnQzMl90KSBzdGF0ZS0+Y3J0Y193IHx8Cj4gLQkgICAg c3RhdGUtPmNydGNfaCA+IElOVF9NQVggfHwKPiAtCSAgICBzdGF0ZS0+Y3J0Y195ID4gSU5UX01B WCAtIChpbnQzMl90KSBzdGF0ZS0+Y3J0Y19oKSB7Cj4gKwlpZiAobmV3X3BsYW5lX3N0YXRlLT5j cnRjX3cgPiBJTlRfTUFYIHx8Cj4gKwkgICAgbmV3X3BsYW5lX3N0YXRlLT5jcnRjX3ggPiBJTlRf TUFYIC0gKGludDMyX3QpIG5ld19wbGFuZV9zdGF0ZS0+Y3J0Y193IHx8Cj4gKwkgICAgbmV3X3Bs YW5lX3N0YXRlLT5jcnRjX2ggPiBJTlRfTUFYIHx8Cj4gKwkgICAgbmV3X3BsYW5lX3N0YXRlLT5j cnRjX3kgPiBJTlRfTUFYIC0gKGludDMyX3QpIG5ld19wbGFuZV9zdGF0ZS0+Y3J0Y19oKSB7Cj4g IAkJRFJNX0RFQlVHX0FUT01JQygiW1BMQU5FOiVkOiVzXSBpbnZhbGlkIENSVEMgY29vcmRpbmF0 ZXMgJXV4JXUrJWQrJWRcbiIsCj4gIAkJCQkgcGxhbmUtPmJhc2UuaWQsIHBsYW5lLT5uYW1lLAo+ IC0JCQkJIHN0YXRlLT5jcnRjX3csIHN0YXRlLT5jcnRjX2gsCj4gLQkJCQkgc3RhdGUtPmNydGNf eCwgc3RhdGUtPmNydGNfeSk7Cj4gKwkJCQkgbmV3X3BsYW5lX3N0YXRlLT5jcnRjX3csIG5ld19w bGFuZV9zdGF0ZS0+Y3J0Y19oLAo+ICsJCQkJIG5ld19wbGFuZV9zdGF0ZS0+Y3J0Y194LCBuZXdf cGxhbmVfc3RhdGUtPmNydGNfeSk7Cj4gIAkJcmV0dXJuIC1FUkFOR0U7Cj4gIAl9Cj4gIAo+IC0J ZmJfd2lkdGggPSBzdGF0ZS0+ZmItPndpZHRoIDw8IDE2Owo+IC0JZmJfaGVpZ2h0ID0gc3RhdGUt PmZiLT5oZWlnaHQgPDwgMTY7Cj4gKwlmYl93aWR0aCA9IGZiLT53aWR0aCA8PCAxNjsKPiArCWZi X2hlaWdodCA9IGZiLT5oZWlnaHQgPDwgMTY7Cj4gIAo+ICAJLyogTWFrZSBzdXJlIHNvdXJjZSBj b29yZGluYXRlcyBhcmUgaW5zaWRlIHRoZSBmYi4gKi8KPiAtCWlmIChzdGF0ZS0+c3JjX3cgPiBm Yl93aWR0aCB8fAo+IC0JICAgIHN0YXRlLT5zcmNfeCA+IGZiX3dpZHRoIC0gc3RhdGUtPnNyY193 IHx8Cj4gLQkgICAgc3RhdGUtPnNyY19oID4gZmJfaGVpZ2h0IHx8Cj4gLQkgICAgc3RhdGUtPnNy Y195ID4gZmJfaGVpZ2h0IC0gc3RhdGUtPnNyY19oKSB7Cj4gKwlpZiAobmV3X3BsYW5lX3N0YXRl LT5zcmNfdyA+IGZiX3dpZHRoIHx8Cj4gKwkgICAgbmV3X3BsYW5lX3N0YXRlLT5zcmNfeCA+IGZi X3dpZHRoIC0gbmV3X3BsYW5lX3N0YXRlLT5zcmNfdyB8fAo+ICsJICAgIG5ld19wbGFuZV9zdGF0 ZS0+c3JjX2ggPiBmYl9oZWlnaHQgfHwKPiArCSAgICBuZXdfcGxhbmVfc3RhdGUtPnNyY195ID4g ZmJfaGVpZ2h0IC0gbmV3X3BsYW5lX3N0YXRlLT5zcmNfaCkgewo+ICAJCURSTV9ERUJVR19BVE9N SUMoIltQTEFORTolZDolc10gaW52YWxpZCBzb3VyY2UgY29vcmRpbmF0ZXMgIgo+ICAJCQkJICIl dS4lMDZ1eCV1LiUwNnUrJXUuJTA2dSsldS4lMDZ1IChmYiAldXgldSlcbiIsCj4gIAkJCQkgcGxh bmUtPmJhc2UuaWQsIHBsYW5lLT5uYW1lLAo+IC0JCQkJIHN0YXRlLT5zcmNfdyA+PiAxNiwgKChz dGF0ZS0+c3JjX3cgJiAweGZmZmYpICogMTU2MjUpID4+IDEwLAo+IC0JCQkJIHN0YXRlLT5zcmNf aCA+PiAxNiwgKChzdGF0ZS0+c3JjX2ggJiAweGZmZmYpICogMTU2MjUpID4+IDEwLAo+IC0JCQkJ IHN0YXRlLT5zcmNfeCA+PiAxNiwgKChzdGF0ZS0+c3JjX3ggJiAweGZmZmYpICogMTU2MjUpID4+ IDEwLAo+IC0JCQkJIHN0YXRlLT5zcmNfeSA+PiAxNiwgKChzdGF0ZS0+c3JjX3kgJiAweGZmZmYp ICogMTU2MjUpID4+IDEwLAo+IC0JCQkJIHN0YXRlLT5mYi0+d2lkdGgsIHN0YXRlLT5mYi0+aGVp Z2h0KTsKPiArCQkJCSBuZXdfcGxhbmVfc3RhdGUtPnNyY193ID4+IDE2LAo+ICsJCQkJICgobmV3 X3BsYW5lX3N0YXRlLT5zcmNfdyAmIDB4ZmZmZikgKiAxNTYyNSkgPj4gMTAsCj4gKwkJCQkgbmV3 X3BsYW5lX3N0YXRlLT5zcmNfaCA+PiAxNiwKPiArCQkJCSAoKG5ld19wbGFuZV9zdGF0ZS0+c3Jj X2ggJiAweGZmZmYpICogMTU2MjUpID4+IDEwLAo+ICsJCQkJIG5ld19wbGFuZV9zdGF0ZS0+c3Jj X3ggPj4gMTYsCj4gKwkJCQkgKChuZXdfcGxhbmVfc3RhdGUtPnNyY194ICYgMHhmZmZmKSAqIDE1 NjI1KSA+PiAxMCwKPiArCQkJCSBuZXdfcGxhbmVfc3RhdGUtPnNyY195ID4+IDE2LAo+ICsJCQkJ ICgobmV3X3BsYW5lX3N0YXRlLT5zcmNfeSAmIDB4ZmZmZikgKiAxNTYyNSkgPj4gMTAsCj4gKwkJ CQkgZmItPndpZHRoLCBmYi0+aGVpZ2h0KTsKPiAgCQlyZXR1cm4gLUVOT1NQQzsKPiAgCX0KPiAg Cj4gLQlpZiAocGxhbmVfc3dpdGNoaW5nX2NydGMoc3RhdGUtPnN0YXRlLCBwbGFuZSwgc3RhdGUp KSB7Cj4gKwlpZiAocGxhbmVfc3dpdGNoaW5nX2NydGMob2xkX3BsYW5lX3N0YXRlLCBuZXdfcGxh bmVfc3RhdGUpKSB7Cj4gIAkJRFJNX0RFQlVHX0FUT01JQygiW1BMQU5FOiVkOiVzXSBzd2l0Y2hp bmcgQ1JUQyBkaXJlY3RseVxuIiwKPiAgCQkJCSBwbGFuZS0+YmFzZS5pZCwgcGxhbmUtPm5hbWUp Owo+ICAJCXJldHVybiAtRUlOVkFMOwo+IEBAIC05NjYsNyArOTY3LDggQEAgaW50IGRybV9hdG9t aWNfY2hlY2tfb25seShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gc3RhdGUtPmRldjsKPiAgCXN0cnVjdCBkcm1fbW9kZV9jb25maWcg KmNvbmZpZyA9ICZkZXYtPm1vZGVfY29uZmlnOwo+ICAJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7 Cj4gLQlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKPiArCXN0cnVjdCBkcm1f cGxhbmVfc3RhdGUgKm9sZF9wbGFuZV9zdGF0ZTsKPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUg Km5ld19wbGFuZV9zdGF0ZTsKPiAgCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiAgCXN0cnVjdCBk cm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGU7Cj4gIAlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUg Km5ld19jcnRjX3N0YXRlOwo+IEBAIC05NzYsOCArOTc4LDggQEAgaW50IGRybV9hdG9taWNfY2hl Y2tfb25seShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAo+ICAJRFJNX0RFQlVH X0FUT01JQygiY2hlY2tpbmcgJXBcbiIsIHN0YXRlKTsKPiAgCj4gLQlmb3JfZWFjaF9uZXdfcGxh bmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBwbGFuZV9zdGF0ZSwgaSkgewo+IC0JCXJldCA9IGRy bV9hdG9taWNfcGxhbmVfY2hlY2socGxhbmUsIHBsYW5lX3N0YXRlKTsKPiArCWZvcl9lYWNoX29s ZG5ld19wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUsIG9sZF9wbGFuZV9zdGF0ZSwgbmV3X3Bs YW5lX3N0YXRlLCBpKSB7Cj4gKwkJcmV0ID0gZHJtX2F0b21pY19wbGFuZV9jaGVjayhvbGRfcGxh bmVfc3RhdGUsIG5ld19wbGFuZV9zdGF0ZSk7Cj4gIAkJaWYgKHJldCkgewo+ICAJCQlEUk1fREVC VUdfQVRPTUlDKCJbUExBTkU6JWQ6JXNdIGF0b21pYyBjb3JlIGNoZWNrIGZhaWxlZFxuIiwKPiAg CQkJCQkgcGxhbmUtPmJhc2UuaWQsIHBsYW5lLT5uYW1lKTsKPiAtLSAKPiAyLjE4LjEKPiAKPiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdm eCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApE YW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8v YmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK