From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH 02/14] drm/i915: Clean up LVDS pipe select bits Date: Tue, 20 Mar 2018 08:39:21 +0200 Message-ID: <87fu4vz1wm.fsf@intel.com> References: <20180302095512.19329-1-ville.syrjala@linux.intel.com> <20180302095512.19329-3-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0C4B96E0D2 for ; Tue, 20 Mar 2018 06:39:35 +0000 (UTC) In-Reply-To: <20180302095512.19329-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 , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCAwMiBNYXIgMjAxOCwgVmlsbGUgU3lyamFsYSA8dmlsbGUuc3lyamFsYUBsaW51eC5p bnRlbC5jb20+IHdyb3RlOgo+IEZyb206IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBs aW51eC5pbnRlbC5jb20+Cj4KPiBDbGVhbiB1cCB0aGUgTFZEUyBwaXBlIHNlbGVjdCBiaXRzLiBU byBtYWtlIHRoZSB3aG9sZSBzaXR1YXRpb24gYSBiaXQKPiBsZXNzIHVnbHkgd2UnbGwgc3RhcnQg dG8gc2hhcmUgdGhlIHNhbWUgY29kZSBiZXR3ZWVuIC5nZXRfaHdfc3RhdGUoKQo+IGFuZCB0aGUg cG9ydCBzdGF0ZSBhc3NlcnRzLgo+Cj4gU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2 aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCkNvdXBsZSBvZiBuaXRwaWNrcyBiZWxvdywg YnV0IHJlZ2FyZGxlc3MsCgpSZXZpZXdlZC1ieTogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGlu dGVsLmNvbT4KCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgICB8 ICA5ICsrKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAzNSAr KysrKystLS0tLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aCAgICAgfCAgMiArKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9sdmRzLmMgICAgfCA1 NCArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KPiAgNCBmaWxlcyBjaGFuZ2Vk LCA0NCBpbnNlcnRpb25zKCspLCA1NiBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZWcuaAo+IGluZGV4IGY1NzMwOTVkNjBjMi4uZTk5M2VlYzk3Yzk4IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlZy5oCj4gQEAgLTQ0NTgsOSArNDQ1OCwxMiBAQCBlbnVtIHsKPiAgICovCj4gICNk ZWZpbmUgICBMVkRTX1BPUlRfRU4JCQkoMSA8PCAzMSkKPiAgLyogU2VsZWN0cyBwaXBlIEIgZm9y IExWRFMgZGF0YS4gIE11c3QgYmUgc2V0IG9uIHByZS05NjUuICovCj4gLSNkZWZpbmUgICBMVkRT X1BJUEVCX1NFTEVDVAkJKDEgPDwgMzApCj4gLSNkZWZpbmUgICBMVkRTX1BJUEVfTUFTSwkJKDEg PDwgMzApCj4gLSNkZWZpbmUgICBMVkRTX1BJUEUocGlwZSkJCSgocGlwZSkgPDwgMzApCj4gKyNk ZWZpbmUgICBMVkRTX1BJUEVfU0VMKHBpcGUpCQkoKHBpcGUpIDw8IDMwKQo+ICsjZGVmaW5lICAg TFZEU19QSVBFX1NFTF9NQVNLCQkoMSA8PCAzMCkKPiArI2RlZmluZSAgIExWRFNfUElQRV9TRUxf U0hJRlQJCTMwCj4gKyNkZWZpbmUgICBMVkRTX1BJUEVfU0VMX0NQVChwaXBlKQkoKHBpcGUpIDw8 IDI5KQo+ICsjZGVmaW5lICAgTFZEU19QSVBFX1NFTF9NQVNLX0NQVAkoMyA8PCAzMCkKPiArI2Rl ZmluZSAgIExWRFNfUElQRV9TRUxfU0hJRlRfQ1BUCTI5CgpJJ2QgcHJlZmVyIG1hc2tzIGFuZCBz aGlmdHMgYmVmb3JlIHZhbHVlcy4KCj4gIC8qIExWRFMgZGl0aGVyaW5nIGZsYWcgb24gOTY1L2c0 eCBwbGF0Zm9ybSAqLwo+ICAjZGVmaW5lICAgTFZEU19FTkFCTEVfRElUSEVSCQkoMSA8PCAyNSkK PiAgLyogTFZEUyBzeW5jIHBvbGFyaXR5IGZsYWdzLiBTZXQgdG8gaW52ZXJ0IChpLmUuIG5lZ2F0 aXZlKSAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCA1NDVkODkx NTJlOWIuLmYxZjE2NGEyMGIzZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMKPiBAQCAtMTE3MSw5ICsxMTcxLDkgQEAgdm9pZCBhc3NlcnRfcGFuZWxfdW5sb2NrZWQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSkKPiAgCQlwcF9y ZWcgPSBQUF9DT05UUk9MKDApOwo+ICAJCXBvcnRfc2VsID0gSTkxNV9SRUFEKFBQX09OX0RFTEFZ UygwKSkgJiBQQU5FTF9QT1JUX1NFTEVDVF9NQVNLOwo+ICAKPiAtCQlpZiAocG9ydF9zZWwgPT0g UEFORUxfUE9SVF9TRUxFQ1RfTFZEUyAmJgo+IC0JCSAgICBJOTE1X1JFQUQoUENIX0xWRFMpICYg TFZEU19QSVBFQl9TRUxFQ1QpCj4gLQkJCXBhbmVsX3BpcGUgPSBQSVBFX0I7Cj4gKwkJaWYgKHBv cnRfc2VsID09IFBBTkVMX1BPUlRfU0VMRUNUX0xWRFMpIHsKPiArCQkJaW50ZWxfbHZkc19wb3J0 X2VuYWJsZWQoZGV2X3ByaXYsIFBDSF9MVkRTLCAmcGFuZWxfcGlwZSk7Cj4gKwkJfQoKU3VwZXJm bHVvdXMgYnJhY2VzLgoKPiAgCQkvKiBYWFg6IGVsc2UgZml4IGZvciBlRFAgKi8KPiAgCX0gZWxz ZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikp IHsKPiAgCQkvKiBwcmVzdW1hYmx5IHdyaXRlIGxvY2sgZGVwZW5kcyBvbiBwaXBlLCBub3QgcG9y dCBzZWxlY3QgKi8KPiBAQCAtMTE4MSw4ICsxMTgxLDcgQEAgdm9pZCBhc3NlcnRfcGFuZWxfdW5s b2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSkK PiAgCQlwYW5lbF9waXBlID0gcGlwZTsKPiAgCX0gZWxzZSB7Cj4gIAkJcHBfcmVnID0gUFBfQ09O VFJPTCgwKTsKPiAtCQlpZiAoSTkxNV9SRUFEKExWRFMpICYgTFZEU19QSVBFQl9TRUxFQ1QpCj4g LQkJCXBhbmVsX3BpcGUgPSBQSVBFX0I7Cj4gKwkJaW50ZWxfbHZkc19wb3J0X2VuYWJsZWQoZGV2 X3ByaXYsIExWRFMsICZwYW5lbF9waXBlKTsKPiAgCX0KPiAgCj4gIAl2YWwgPSBJOTE1X1JFQUQo cHBfcmVnKTsKPiBAQCAtMTMwMSwyMiArMTMwMCw2IEBAIHN0YXRpYyBib29sIGhkbWlfcGlwZV9l bmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCXJldHVybiB0cnVl Owo+ICB9Cj4gIAo+IC1zdGF0aWMgYm9vbCBsdmRzX3BpcGVfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJCSAgICAgIGVudW0gcGlwZSBwaXBlLCB1MzIgdmFs KQo+IC17Cj4gLQlpZiAoKHZhbCAmIExWRFNfUE9SVF9FTikgPT0gMCkKPiAtCQlyZXR1cm4gZmFs c2U7Cj4gLQo+IC0JaWYgKEhBU19QQ0hfQ1BUKGRldl9wcml2KSkgewo+IC0JCWlmICgodmFsICYg UE9SVF9UUkFOU19TRUxfTUFTSykgIT0gUE9SVF9UUkFOU19TRUxfQ1BUKHBpcGUpKQo+IC0JCQly ZXR1cm4gZmFsc2U7Cj4gLQl9IGVsc2Ugewo+IC0JCWlmICgodmFsICYgTFZEU19QSVBFX01BU0sp ICE9IExWRFNfUElQRShwaXBlKSkKPiAtCQkJcmV0dXJuIGZhbHNlOwo+IC0JfQo+IC0JcmV0dXJu IHRydWU7Cj4gLX0KPiAtCj4gIHN0YXRpYyB2b2lkIGFzc2VydF9wY2hfZHBfZGlzYWJsZWQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJICAgZW51bSBwaXBlIHBpcGUs IGk5MTVfcmVnX3QgcmVnLAo+ICAJCQkJICAgdTMyIHBvcnRfc2VsKQo+IEBAIC0xMzQ4LDcgKzEz MzEsNiBAQCBzdGF0aWMgdm9pZCBhc3NlcnRfcGNoX3BvcnRzX2Rpc2FibGVkKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJCSAgICAgIGVudW0gcGlwZSBwaXBlKQo+ICB7 Cj4gIAllbnVtIHBpcGUgcG9ydF9waXBlOwo+IC0JdTMyIHZhbDsKPiAgCj4gIAlhc3NlcnRfcGNo X2RwX2Rpc2FibGVkKGRldl9wcml2LCBwaXBlLCBQQ0hfRFBfQiwgVFJBTlNfRFBfUE9SVF9TRUxf Qik7Cj4gIAlhc3NlcnRfcGNoX2RwX2Rpc2FibGVkKGRldl9wcml2LCBwaXBlLCBQQ0hfRFBfQywg VFJBTlNfRFBfUE9SVF9TRUxfQyk7Cj4gQEAgLTEzNTksMTAgKzEzNDEsMTAgQEAgc3RhdGljIHZv aWQgYXNzZXJ0X3BjaF9wb3J0c19kaXNhYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gIAkJCSJQQ0ggVkdBIGVuYWJsZWQgb24gdHJhbnNjb2RlciAlYywgc2hvdWxkIGJl IGRpc2FibGVkXG4iLAo+ICAJCQlwaXBlX25hbWUocGlwZSkpOwo+ICAKPiAtCXZhbCA9IEk5MTVf UkVBRChQQ0hfTFZEUyk7Cj4gLQlJOTE1X1NUQVRFX1dBUk4obHZkc19waXBlX2VuYWJsZWQoZGV2 X3ByaXYsIHBpcGUsIHZhbCksCj4gLQkgICAgICJQQ0ggTFZEUyBlbmFibGVkIG9uIHRyYW5zY29k ZXIgJWMsIHNob3VsZCBiZSBkaXNhYmxlZFxuIiwKPiAtCSAgICAgcGlwZV9uYW1lKHBpcGUpKTsK PiArCUk5MTVfU1RBVEVfV0FSTihpbnRlbF9sdmRzX3BvcnRfZW5hYmxlZChkZXZfcHJpdiwgUENI X0xWRFMsICZwb3J0X3BpcGUpICYmCj4gKwkJCXBvcnRfcGlwZSA9PSBwaXBlLAo+ICsJCQkiUENI IExWRFMgZW5hYmxlZCBvbiB0cmFuc2NvZGVyICVjLCBzaG91bGQgYmUgZGlzYWJsZWRcbiIsCj4g KwkJCXBpcGVfbmFtZShwaXBlKSk7Cj4gIAo+ICAJYXNzZXJ0X3BjaF9oZG1pX2Rpc2FibGVkKGRl dl9wcml2LCBwaXBlLCBQQ0hfSERNSUIpOwo+ICAJYXNzZXJ0X3BjaF9oZG1pX2Rpc2FibGVkKGRl dl9wcml2LCBwaXBlLCBQQ0hfSERNSUMpOwo+IEBAIC0xNDA1LDcgKzEzODcsNiBAQCBzdGF0aWMg dm9pZCB2bHZfZW5hYmxlX3BsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCVBPU1RJTkdf UkVBRChEUExMX01EKHBpcGUpKTsKPiAgfQo+ICAKPiAtCgpTdXBlcmZsdW91cyB3aGl0ZXNwYWNl IGNoYW5nZS4KCj4gIHN0YXRpYyB2b2lkIF9jaHZfZW5hYmxlX3BsbChzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKPiAgCQkJICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2Nv bmZpZykKPiAgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggNzllNzQxODQ1ZTE2 Li4xNmI3YWRjN2IwYzkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC0xNzg5 LDYgKzE3ODksOCBAQCB2b2lkIGludGVsX2luZm9mcmFtZV9pbml0KHN0cnVjdCBpbnRlbF9kaWdp dGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KTsKPiAgCj4gIAo+ICAvKiBpbnRlbF9sdmRzLmMgKi8K PiArYm9vbCBpbnRlbF9sdmRzX3BvcnRfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gKwkJCSAgICAgaTkxNV9yZWdfdCBsdmRzX3JlZywgZW51bSBwaXBlICpwaXBl KTsKPiAgdm9pZCBpbnRlbF9sdmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KTsKPiAgc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2dldF9sdmRzX2VuY29kZXIoc3Ry dWN0IGRybV9kZXZpY2UgKmRldik7Cj4gIGJvb2wgaW50ZWxfaXNfZHVhbF9saW5rX2x2ZHMoc3Ry dWN0IGRybV9kZXZpY2UgKmRldik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2x2ZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYwo+IGluZGV4 IGQzNWQyZDUwZjU5NS4uNTcxYjY5Zjc5ZWRhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2x2ZHMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2 ZHMuYwo+IEBAIC04NSwzNCArODUsMzUgQEAgc3RhdGljIHN0cnVjdCBpbnRlbF9sdmRzX2Nvbm5l Y3RvciAqdG9fbHZkc19jb25uZWN0b3Ioc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm4KPiAgCXJl dHVybiBjb250YWluZXJfb2YoY29ubmVjdG9yLCBzdHJ1Y3QgaW50ZWxfbHZkc19jb25uZWN0b3Is IGJhc2UuYmFzZSk7Cj4gIH0KPiAgCj4gK2Jvb2wgaW50ZWxfbHZkc19wb3J0X2VuYWJsZWQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkgICAgIGk5MTVfcmVnX3QgbHZk c19yZWcsIGVudW0gcGlwZSAqcGlwZSkKPiArewo+ICsJdTMyIHZhbDsKPiArCj4gKwl2YWwgPSBJ OTE1X1JFQUQobHZkc19yZWcpOwo+ICsKPiArCS8qIGFzc2VydHMgd2FudCB0byBrbm93IHRoZSBw aXBlIGV2ZW4gaWYgdGhlIHBvcnQgaXMgZGlzYWJsZWQgKi8KPiArCWlmIChIQVNfUENIX0NQVChk ZXZfcHJpdikpCj4gKwkJKnBpcGUgPSAodmFsICYgTFZEU19QSVBFX1NFTF9NQVNLX0NQVCkgPj4g TFZEU19QSVBFX1NFTF9TSElGVF9DUFQ7Cj4gKwllbHNlCj4gKwkJKnBpcGUgPSAodmFsICYgTFZE U19QSVBFX1NFTF9NQVNLKSA+PiBMVkRTX1BJUEVfU0VMX1NISUZUOwo+ICsKPiArCXJldHVybiB2 YWwgJiBMVkRTX1BPUlRfRU47Cj4gK30KPiArCj4gIHN0YXRpYyBib29sIGludGVsX2x2ZHNfZ2V0 X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCQkJICAgIGVudW0g cGlwZSAqcGlwZSkKPiAgewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmJh c2UuZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShk ZXYpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNv ZGVyLT5iYXNlLmRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxfbHZkc19lbmNvZGVyICpsdmRzX2VuY29k ZXIgPSB0b19sdmRzX2VuY29kZXIoJmVuY29kZXItPmJhc2UpOwo+IC0JdTMyIHRtcDsKPiAgCWJv b2wgcmV0Owo+ICAKPiAgCWlmICghaW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChk ZXZfcHJpdiwKPiAgCQkJCQkJZW5jb2Rlci0+cG93ZXJfZG9tYWluKSkKPiAgCQlyZXR1cm4gZmFs c2U7Cj4gIAo+IC0JcmV0ID0gZmFsc2U7Cj4gKwlyZXQgPSBpbnRlbF9sdmRzX3BvcnRfZW5hYmxl ZChkZXZfcHJpdiwgbHZkc19lbmNvZGVyLT5yZWcsIHBpcGUpOwo+ICAKPiAtCXRtcCA9IEk5MTVf UkVBRChsdmRzX2VuY29kZXItPnJlZyk7Cj4gLQo+IC0JaWYgKCEodG1wICYgTFZEU19QT1JUX0VO KSkKPiAtCQlnb3RvIG91dDsKPiAtCj4gLQlpZiAoSEFTX1BDSF9DUFQoZGV2X3ByaXYpKQo+IC0J CSpwaXBlID0gUE9SVF9UT19QSVBFX0NQVCh0bXApOwo+IC0JZWxzZQo+IC0JCSpwaXBlID0gUE9S VF9UT19QSVBFKHRtcCk7Cj4gLQo+IC0JcmV0ID0gdHJ1ZTsKPiAtCj4gLW91dDoKPiAgCWludGVs X2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBlbmNvZGVyLT5wb3dlcl9kb21haW4pOwo+ICAK PiAgCXJldHVybiByZXQ7Cj4gQEAgLTI1NSwxNCArMjU2LDExIEBAIHN0YXRpYyB2b2lkIGludGVs X3ByZV9lbmFibGVfbHZkcyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCXRlbXAg fD0gTFZEU19QT1JUX0VOIHwgTFZEU19BMEEyX0NMS0FfUE9XRVJfVVA7Cj4gIAo+ICAJaWYgKEhB U19QQ0hfQ1BUKGRldl9wcml2KSkgewo+IC0JCXRlbXAgJj0gflBPUlRfVFJBTlNfU0VMX01BU0s7 Cj4gLQkJdGVtcCB8PSBQT1JUX1RSQU5TX1NFTF9DUFQocGlwZSk7Cj4gKwkJdGVtcCAmPSB+TFZE U19QSVBFX1NFTF9NQVNLX0NQVDsKPiArCQl0ZW1wIHw9IExWRFNfUElQRV9TRUxfQ1BUKHBpcGUp Owo+ICAJfSBlbHNlIHsKPiAtCQlpZiAocGlwZSA9PSAxKSB7Cj4gLQkJCXRlbXAgfD0gTFZEU19Q SVBFQl9TRUxFQ1Q7Cj4gLQkJfSBlbHNlIHsKPiAtCQkJdGVtcCAmPSB+TFZEU19QSVBFQl9TRUxF Q1Q7Cj4gLQkJfQo+ICsJCXRlbXAgJj0gfkxWRFNfUElQRV9TRUxfTUFTSzsKPiArCQl0ZW1wIHw9 IExWRFNfUElQRV9TRUwocGlwZSk7Cj4gIAl9Cj4gIAo+ICAJLyogc2V0IHRoZSBjb3JyZXNwb25z ZGluZyBMVkRTX0JPUkRFUiBiaXQgKi8KPiBAQCAtOTA2LDggKzkwNCwxMiBAQCBzdGF0aWMgYm9v bCBjb21wdXRlX2lzX2R1YWxfbGlua19sdmRzKHN0cnVjdCBpbnRlbF9sdmRzX2VuY29kZXIgKmx2 ZHNfZW5jb2RlcikKPiAgCSAqIHdlIG5lZWQgdG8gY2hlY2sgInRoZSB2YWx1ZSB0byBiZSBzZXQi IGluIFZCVCB3aGVuIExWRFMKPiAgCSAqIHJlZ2lzdGVyIGlzIHVuaW5pdGlhbGl6ZWQuCj4gIAkg Ki8KPiAtCXZhbCA9IEk5MTVfUkVBRChsdmRzX2VuY29kZXItPnJlZyk7Cj4gLQlpZiAoISh2YWwg JiB+KExWRFNfUElQRV9NQVNLIHwgTFZEU19ERVRFQ1RFRCkpKQo+ICsJdmFsID0gSTkxNV9SRUFE KGx2ZHNfZW5jb2Rlci0+cmVnKSAmIH5MVkRTX0RFVEVDVEVEOwo+ICsJaWYgKEhBU19QQ0hfQ1BU KGRldl9wcml2KSkKPiArCQl2YWwgJj0gfkxWRFNfUElQRV9TRUxfTUFTS19DUFQ7Cj4gKwllbHNl Cj4gKwkJdmFsICY9IH5MVkRTX1BJUEVfU0VMX01BU0s7CgpNYXR0ZXIgb2YgdGFzdGUsIEknZCBk dXBsaWNhdGUgdGhlIExWRFNfREVURUNURUQgaW4gdGhlIG1hc2tpbmcgaW5zdGVhZApvZiBjb21i aW5pbmcgaXQgaW4gdGhlIHJlZ2lzdGVyIHJlYWQgbGluZS4KCj4gKwlpZiAodmFsID09IDApCj4g IAkJdmFsID0gZGV2X3ByaXYtPnZidC5iaW9zX2x2ZHNfdmFsOwo+ICAKPiAgCXJldHVybiAodmFs ICYgTFZEU19DTEtCX1BPV0VSX01BU0spID09IExWRFNfQ0xLQl9QT1dFUl9VUDsKCi0tIApKYW5p IE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==