From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH 3/6] drm/i915/lvds: Restore initial HW state during encoder enabling Date: Tue, 09 Aug 2016 17:40:32 +0300 Message-ID: <1470753632.5461.47.camel@intel.com> References: <1470742452-5240-1-git-send-email-imre.deak@intel.com> <1470742452-5240-4-git-send-email-imre.deak@intel.com> <20160809124840.GM4329@intel.com> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 544FB6E5CD for ; Tue, 9 Aug 2016 14:40:35 +0000 (UTC) In-Reply-To: <20160809124840.GM4329@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 =?ISO-8859-1?Q?Syrj=E4l=E4?= Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gdGksIDIwMTYtMDgtMDkgYXQgMTU6NDggKzAzMDAsIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToK PiBPbiBUdWUsIEF1ZyAwOSwgMjAxNiBhdCAwMjozNDowOVBNICswMzAwLCBJbXJlIERlYWsgd3Jv dGU6Cj4gPiBBdG0gdGhlIExWRFMgZW5jb2RlciBkZXBlbmRzIG9uIHRoZSBQUFMgSFcgY29udGV4 dCBiZWluZyBzYXZlZC9yZXN0b3JlZAo+ID4gZnJvbSBnZW5lcmljIHN1c3BlbmQvcmVzdW1lIGNv ZGUuIFNpbmNlIHRoZSBQUFMgaXMgc3BlY2lmaWMgdG8gdGhlIExWRFMKPiA+IGFuZCBlRFAgZW5j b2RlcnMgYSBjbGVhbmVyIHdheSBpcyB0byByZWluaXRpYWxpemUgaXQgZHVyaW5nIGVuY29kZXIK PiA+IGVuYWJsaW5nLCBzbyBkbyB0aGlzIGhlcmUgZm9yIExWRFMuIEZvbGxvdy11cCBwYXRjaGVz IHdpbGwgaW5pdCB0aGUgUFBTCj4gPiBmb3IgdGhlIGVEUCBlbmNvZGVyIHNpbWlsYXJseSBhbmQg cmVtb3ZlIHRoZSBzdXNwZW5kL3Jlc3VtZSB0aW1lIHNhdmUgLwo+ID4gcmVzdG9yZS4KPiA+IAo+ ID4gU2lnbmVkLW9mZi1ieTogSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPgo+ID4gLS0t Cj4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmjCoMKgwqB8wqDCoMKgMSArCj4g PiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYyB8IDEwMyArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLQo+ID4gwqAyIGZpbGVzIGNoYW5nZWQsIDkxIGluc2Vy dGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgK PiA+IGluZGV4IDg4OTUwOGYuLmRhODI3NDQgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlZy5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl Zy5oCj4gPiBAQCAtMzcxMCw2ICszNzEwLDcgQEAgZW51bSB7Cj4gPiDCoAo+ID4gwqAjZGVmaW5l IF9QUF9PTl9ERUxBWVMJCQkweDYxMjA4Cj4gPiDCoCNkZWZpbmUgUFBfT05fREVMQVlTKHBwc19p ZHgpCQlfTU1JT19QUFMocHBzX2lkeCwgX1BQX09OX0RFTEFZUykKPiA+ICsjZGVmaW5lwqDCoFBB TkVMX1BPUlRfU0VMRUNUX1NISUZUCTMwCj4gPiDCoCNkZWZpbmXCoMKgUEFORUxfUE9SVF9TRUxF Q1RfTUFTSwkJKDMgPDwgMzApCj4gPiDCoCNkZWZpbmXCoMKgUEFORUxfUE9SVF9TRUxFQ1RfTFZE UwkJKDAgPDwgMzApCj4gPiDCoCNkZWZpbmXCoMKgUEFORUxfUE9SVF9TRUxFQ1RfRFBBCQkoMSA8 PCAzMCkKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9sdmRzLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9sdmRzLmMKPiA+IGluZGV4IGM1NzM5ZmMuLmQ1 MTU4ZTUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9sdmRzLmMK PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYwo+ID4gQEAgLTQ4LDYg KzQ4LDIwIEBAIHN0cnVjdCBpbnRlbF9sdmRzX2Nvbm5lY3RvciB7Cj4gPiDCoAlzdHJ1Y3Qgbm90 aWZpZXJfYmxvY2sgbGlkX25vdGlmaWVyOwo+ID4gwqB9Owo+ID4gwqAKPiA+ICtzdHJ1Y3QgaW50 ZWxfbHZkc19wcHMgewo+ID4gKwkvKiAxMDB1cyB1bml0cyAqLwo+ID4gKwlpbnQgdDFfdDI7Cj4g PiArCWludCB0MzsKPiA+ICsJaW50IHQ0Owo+ID4gKwlpbnQgdDU7Cj4gPiArCWludCB0eDsKPiA+ ICsKPiA+ICsJaW50IGRpdmlkZXI7Cj4gPiArCj4gPiArCWludCBwb3J0Owo+ID4gKwlib29sIHJl c2V0X29uX3Bvd2VyZG93bjsKPiA+ICt9Owo+ID4gKwo+ID4gwqBzdHJ1Y3QgaW50ZWxfbHZkc19l bmNvZGVyIHsKPiA+IMKgCXN0cnVjdCBpbnRlbF9lbmNvZGVyIGJhc2U7Cj4gPiDCoAo+ID4gQEAg LTU1LDYgKzY5LDkgQEAgc3RydWN0IGludGVsX2x2ZHNfZW5jb2RlciB7Cj4gPiDCoAlpOTE1X3Jl Z190IHJlZzsKPiA+IMKgCXUzMiBhM19wb3dlcjsKPiA+IMKgCj4gPiArCXN0cnVjdCBpbnRlbF9s dmRzX3BwcyBpbml0X3BwczsKPiA+ICsJdTMyIGluaXRfbHZkc192YWw7Cj4gPiArCj4gPiDCoAlz dHJ1Y3QgaW50ZWxfbHZkc19jb25uZWN0b3IgKmF0dGFjaGVkX2Nvbm5lY3RvcjsKPiA+IMKgfTsK PiA+IMKgCj4gPiBAQCAtMTM2LDYgKzE1Myw3MiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9sdmRzX2dl dF9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiDCoAlwaXBlX2NvbmZp Zy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2sgPSBwaXBlX2NvbmZpZy0+cG9ydF9jbG9j azsKPiA+IMKgfQo+ID4gwqAKPiA+ICtzdGF0aWMgdm9pZCBpbnRlbF9sdmRzX3Bwc19nZXRfaHdf c3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gKwkJCQkJc3RydWN0 IGludGVsX2x2ZHNfcHBzICpwcHMpCj4gPiArewo+ID4gKwl1MzIgdmFsOwo+ID4gKwo+ID4gKwlw cHMtPnJlc2V0X29uX3Bvd2VyZG93biA9IEk5MTVfUkVBRChQUF9DT05UUk9MKDApKSAmIFBBTkVM X1BPV0VSX1JFU0VUOwo+ID4gKwo+ID4gKwl2YWwgPSBJOTE1X1JFQUQoUFBfT05fREVMQVlTKDAp KTsKPiA+ICsJcHBzLT5wb3J0ID0gKHZhbCAmIFBBTkVMX1BPUlRfU0VMRUNUX01BU0spID4+Cj4g PiArCQnCoMKgwqDCoFBBTkVMX1BPUlRfU0VMRUNUX1NISUZUOwo+ID4gKwlwcHMtPnQxX3QyID0g KHZhbCAmIFBBTkVMX1BPV0VSX1VQX0RFTEFZX01BU0spID4+Cj4gPiArCQnCoMKgwqDCoMKgUEFO RUxfUE9XRVJfVVBfREVMQVlfU0hJRlQ7Cj4gPiArCXBwcy0+dDUgPSAodmFsICYgUEFORUxfTElH SFRfT05fREVMQVlfTUFTSykgPj4KPiA+ICsJCcKgwqBQQU5FTF9MSUdIVF9PTl9ERUxBWV9TSElG VDsKPiA+ICsKPiA+ICsJdmFsID0gSTkxNV9SRUFEKFBQX09GRl9ERUxBWVMoMCkpOwo+ID4gKwlw cHMtPnQzID0gKHZhbCAmIFBBTkVMX1BPV0VSX0RPV05fREVMQVlfTUFTSykgPj4KPiA+ICsJCcKg wqBQQU5FTF9QT1dFUl9ET1dOX0RFTEFZX1NISUZUOwo+ID4gKwlwcHMtPnR4ID0gKHZhbCAmIFBB TkVMX0xJR0hUX09GRl9ERUxBWV9NQVNLKSA+Pgo+ID4gKwkJwqDCoFBBTkVMX0xJR0hUX09GRl9E RUxBWV9TSElGVDsKPiA+ICsKPiA+ICsJdmFsID0gSTkxNV9SRUFEKFBQX0RJVklTT1IoMCkpOwo+ ID4gKwlwcHMtPmRpdmlkZXIgPSAodmFsICYgUFBfUkVGRVJFTkNFX0RJVklERVJfTUFTSykgPj4K PiA+ICsJCcKgwqDCoMKgwqDCoMKgUFBfUkVGRVJFTkNFX0RJVklERVJfU0hJRlQ7Cj4gPiArCS8q IENvbnZlcnQgZnJvbSAxMDBtcyB0byAxMDB1cyB1bml0cyAqLwo+ID4gKwlwcHMtPnQ0ID0gKCh2 YWwgJiBQQU5FTF9QT1dFUl9DWUNMRV9ERUxBWV9NQVNLKSA+Pgo+ID4gKwkJwqDCoMKgUEFORUxf UE9XRVJfQ1lDTEVfREVMQVlfU0hJRlQpICogMTAwMDsKPiAKPiBUaGlzIHNob3VsZCBoYXZlIHRo ZSArMSBvZmZzZXQgaGFuZGxpbmcgSSB0aGluay4KCk9rLCB3aWxsIGFkZCB0aGF0LgoKPiBIbW0u IExvb2tzIGxpa2Ugd2UgbWVzcyB0aGF0IHVwIGV2ZW4gZm9yIGVEUCA6KAo+ID4gKwo+ID4gKwlp ZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA8PSA0ICYmCj4gPiArCcKgwqDCoMKgcHBzLT50 MV90MiA9PSAwICYmIHBwcy0+dDUgPT0gMCAmJiBwcHMtPnQzID09IDAgJiYgcHBzLT50eCA9PSAw KSB7Cj4gPiArCQlEUk1fREVCVUdfS01TKCJQYW5lbCBwb3dlciB0aW1pbmdzIHVuaW5pdGlhbGl6 ZWQsICIKPiA+ICsJCQnCoMKgwqDCoMKgwqAic2V0dGluZyBkZWZhdWx0c1xuIik7Cj4gPiArCQkv KiBTZXQgVDIgdG8gNDBtcyBhbmQgVDUgdG8gMjAwbXMgaW4gMTAwIHVzZWMgdW5pdHMgKi8KPiA+ ICsJCXBwcy0+dDFfdDIgPSA0MCAqIDEwOwo+ID4gKwkJcHBzLT50NSA9IDIwMCAqIDEwOwo+ID4g KwkJLyogU2V0IFQzIHRvIDM1bXMgYW5kIFR4IHRvIDIwMG1zIGluIDEwMCB1c2VjIHVuaXRzICov Cj4gPiArCQlwcHMtPnQzID0gMzUgKiAxMDsKPiA+ICsJCXBwcy0+dHggPSAyMDAgKiAxMDsKPiAK PiBOb3Qgc3VyZSB3aGVyZSB0aGVzZSBjYW1lIGZyb20gb3JpZ2luYWxseS4gVGhlIHNwZ3cgc3Bl YyB0ZWxscyB1czoKPiAKPiBtaW4JbWF4Cj4gdDEJMC41CTEwCj4gdDIJMAk1MAo+IHQzCTAJNTAK PiB0NAkyMDAJLQo+IHQ1CTIwMAktCj4gdDYJMjAwCS0KPiB0NwkwCTEwCj4gCj4gU28gbWF5YmUg d2Ugc2hvdWxkIGF0IGxlYXN0IHNldCB0ND0yMDAgaGVyZSBiYXNlZCBvbiB0aGUgbWluaW11bSB0 NAo+IGRlbGF5IGluIHRoZSBzcGVjLCBwcm9iYWJseSBzaG91bGQgYWRkIHRoZSBtYXggdDcgdGlt ZSB0aGVyZSBhcyB3ZWxsCj4gYXMgdGhhdCdzIHdoYXQgdGhlIHBvd2VyIGN5Y2xlIGRlbGF5cyBz ZWVtcyB0byBiZSByZWFsbHk6IHQ0K3Q3Lgo+IEJzcGVjIHNlZW1zIHRvIGNsYWltIHRoYXQgc3Bn dyBzcGVjIGhhcyBhbiB1cHBlciBsaW1pdCBvZiA0MDAgZm9yIHRoaXMsCj4gYnV0IEkgY2FuJ3Qg c2VlIHRoYXQgYXQgbGVhc3QgaW4gdGhlIGNvcHkgSSBmb3VuZC4KPiAKPiBBbmQgbWF5YmUgYnVt cCB1cCB0MV90Mj02MCBhbmQgdDM9NTAgYmFzZWQgb24gdGhlIG1heCBkZWxheSBmb3IgdGhvc2UK PiBpbiB0aGUgc3BlYz8KCkhhdmVuJ3QgZm91bmQgeWV0IHRoZSBzcGVjLCBidXQgdGhlIGFib3Zl IHNlZW0gbGlrZSByZWFzb25hYmxlCmRlZmF1bHRzLgoKPiAKPiBBbnl3YXlzLCB0aGlzIGlzIGFs bCBtYXRlcmlhbCBmb3IgYSBzZXBhcmF0ZSBwYXRjaCBmb3Igc3VyZS4KClllcCwgSSBrZXB0IHRo ZSBiZWhhdmlvciBoZXJlIGFzLWlzLgoKPiAKPiA+ICsJfQo+ID4gKwo+ID4gKwlEUk1fREVCVUdf RFJJVkVSKCJMVkRTIFBQUzp0MSt0MiAlZCB0MyAlZCB0NCAlZCB0NSAlZCB0eCAlZCAiCj4gPiAr CQkJwqAiZGl2aWRlciAlZCBwb3J0ICVkIHJlc2V0X29uX3Bvd2VyZG93biAlZFxuIiwKPiA+ICsJ CQnCoHBwcy0+dDFfdDIsIHBwcy0+dDMsIHBwcy0+dDQsIHBwcy0+dDUsIHBwcy0+dHgsCj4gPiAr CQkJwqBwcHMtPmRpdmlkZXIsIHBwcy0+cG9ydCwgcHBzLT5yZXNldF9vbl9wb3dlcmRvd24pOwo+ ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBpbnRlbF9sdmRzX3Bwc19pbml0X2h3KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ICsJCQkJwqDCoMKgc3RydWN0IGludGVs X2x2ZHNfcHBzICpwcHMpCj4gPiArewo+ID4gKwl1MzIgdmFsOwo+ID4gKwo+ID4gKwl2YWwgPSBJ OTE1X1JFQUQoUFBfQ09OVFJPTCgwKSk7Cj4gPiArCVdBUk5fT04oKHZhbCAmIFBBTkVMX1VOTE9D S19NQVNLKSAhPSBQQU5FTF9VTkxPQ0tfUkVHUyk7Cj4gPiArCWlmIChwcHMtPnJlc2V0X29uX3Bv d2VyZG93bikKPiA+ICsJCXZhbCB8PSBQQU5FTF9QT1dFUl9SRVNFVDsKPiAKPiBIbW0uIE1heWJl IHdlIGNhbiBqdXN0IGFsd2F5cyBzZXQgdGhpcyBiaXQ/CgpTZWVtcyByZWFzb25hYmxlIChmb3Ig R0VOMyspLCBidXQgYXMgYWxzbyBhcyBhIGZvbGxvdy11cC4gSSBqdXN0IHdvbmRlcgppZiB0aGUg dy9hIGJlbG93IHNob3VsZCBiZSB0aGVuIGFsc28gYXBwbGllZCBhdCB0aGUgc2FtZSB0aW1lLiBC U3BlYwpkb2Vzbid0IHNwZWNpZnkgdGhlIHcvYSBleGNlcHQgZm9yIElCWCwgYnV0IGl0IHNlZW1z IGxpa2UgdGhlIHNhZmVyCnRoaW5nIHRvIGRvLgoKPiBIbW0sIHdlIGFsc28gdG90YWxseSBmYWls IHRvIGRlYWwgd2l0aCB0aGUgcmVsYXRlZCBJQlggdy9hCj4gaW4gdGhlIExWRFMgY29kZS4gU2hv dWxkIHByb2JhYmx5IGZpeCB0aGF0IHVwIGFzIHdlbGwgYXMgYQo+IGZvbGxvd3VwLgoKT2suCgo+ ID4gKwlJOTE1X1dSSVRFKFBQX0NPTlRST0woMCksIHZhbCk7Cj4gPiArCj4gPiArCUk5MTVfV1JJ VEUoUFBfT05fREVMQVlTKDApLCAocHBzLT5wb3J0IDw8IFBBTkVMX1BPUlRfU0VMRUNUX1NISUZU KSB8Cj4gPiArCQkJCcKgwqDCoMKgKHBwcy0+dDFfdDIgPDwgUEFORUxfUE9XRVJfVVBfREVMQVlf U0hJRlQpIHwKPiA+ICsJCQkJwqDCoMKgwqAocHBzLT50NSA8PCBQQU5FTF9MSUdIVF9PTl9ERUxB WV9TSElGVCkpOwo+ID4gKwlJOTE1X1dSSVRFKFBQX09GRl9ERUxBWVMoMCksIChwcHMtPnQzIDw8 IFBBTkVMX1BPV0VSX0RPV05fREVMQVlfU0hJRlQpIHwKPiA+ICsJCQkJwqDCoMKgwqDCoChwcHMt PnR4IDw8IFBBTkVMX0xJR0hUX09GRl9ERUxBWV9TSElGVCkpOwo+ID4gKwlJOTE1X1dSSVRFKFBQ X0RJVklTT1IoMCksIChwcHMtPmRpdmlkZXIgPDwgUFBfUkVGRVJFTkNFX0RJVklERVJfU0hJRlQp IHwKPiA+ICsJCQkJwqDCoCgocHBzLT50NCAvIDEwMDApIDw8IFBBTkVMX1BPV0VSX0NZQ0xFX0RF TEFZX1NISUZUKSk7Cj4gCj4gRElWX1JPVU5EX1VQKCkgSSB0aGluaywgYW5kIG1heWJlIHRoZSAr MSBoYW5kbGluZy4gVGhvdWdoIEkgY2FuJ3QgcmVhbGx5Cj4gdGVsbCBpZiB0aGUgc3BlYyBoYXMg aW50ZW5kZWQgdGhlICsxIHRvIGJlIGEgcmVwbGFjZW1lbnQgZm9yIHJvdW5kaW5nCj4gdXAsIG9y IGRvIHdlIG5lZWQgdG8gZG8gYm90aC4gQm90aCB3b3VsZCBzZWVtIGxpa2UgdGhlIHNhZmUgY2hv aWNlLiBHZW4yCj4gQnNwZWMgZG9lc24ndCBtZW50aW9uIHRoZSArMSwgYnV0IGl0IHNheXMgd3Jp dGluZyAwIHdpbGwgZXZlbiBhYm9ydCBhbnkKPiBvbmdvaW5nIGRlbGF5LgoKT2ssIHdpbGwgY2hh bmdlIGl0IGRvaW5nIGJvdGggcm91bmRpbmcgYW5kICsxLgoKPiAKPiA+ICt9Cj4gPiArCj4gPiDC oHN0YXRpYyB2b2lkIGludGVsX3ByZV9lbmFibGVfbHZkcyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlcikKPiA+IMKgewo+ID4gwqAJc3RydWN0IGludGVsX2x2ZHNfZW5jb2RlciAqbHZkc19l bmNvZGVyID0gdG9fbHZkc19lbmNvZGVyKCZlbmNvZGVyLT5iYXNlKTsKPiA+IEBAIC0xNTQsNyAr MjM3LDkgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHJlX2VuYWJsZV9sdmRzKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyKQo+ID4gwqAJCWFzc2VydF9wbGxfZGlzYWJsZWQoZGV2X3ByaXYsIHBp cGUpOwo+ID4gwqAJfQo+ID4gwqAKPiA+IC0JdGVtcCA9IEk5MTVfUkVBRChsdmRzX2VuY29kZXIt PnJlZyk7Cj4gPiArCWludGVsX2x2ZHNfcHBzX2luaXRfaHcoZGV2X3ByaXYsICZsdmRzX2VuY29k ZXItPmluaXRfcHBzKTsKPiA+ICsKPiA+ICsJdGVtcCA9IGx2ZHNfZW5jb2Rlci0+aW5pdF9sdmRz X3ZhbDsKPiA+IMKgCXRlbXAgfD0gTFZEU19QT1JUX0VOIHwgTFZEU19BMEEyX0NMS0FfUE9XRVJf VVA7Cj4gPiDCoAo+ID4gwqAJaWYgKEhBU19QQ0hfQ1BUKGRldikpIHsKPiA+IEBAIC05MjIsMTgg KzEwMDcsNiBAQCB2b2lkIGludGVsX2x2ZHNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ ID4gwqAJCURSTV9ERUJVR19LTVMoIkxWRFMgaXMgbm90IHByZXNlbnQgaW4gVkJULCBidXQgZW5h YmxlZCBhbnl3YXlcbiIpOwo+ID4gwqAJfQo+ID4gwqAKPiA+IC0JwqAvKiBTZXQgdGhlIFBhbmVs IFBvd2VyIE9uL09mZiB0aW1pbmdzIGlmIHVuaW5pdGlhbGl6ZWQuICovCj4gPiAtCWlmIChJTlRF TF9JTkZPKGRldl9wcml2KS0+Z2VuIDwgNSAmJgo+ID4gLQnCoMKgwqDCoEk5MTVfUkVBRChQUF9P Tl9ERUxBWVMoMCkpID09IDAgJiYgSTkxNV9SRUFEKFBQX09GRl9ERUxBWVMoMCkpID09IDApIHsK PiA+IC0JCS8qIFNldCBUMiB0byA0MG1zIGFuZCBUNSB0byAyMDBtcyAqLwo+ID4gLQkJSTkxNV9X UklURShQUF9PTl9ERUxBWVMoMCksIDB4MDE5MDA3ZDApOwo+ID4gLQo+ID4gLQkJLyogU2V0IFQz IHRvIDM1bXMgYW5kIFR4IHRvIDIwMG1zICovCj4gPiAtCQlJOTE1X1dSSVRFKFBQX09GRl9ERUxB WVMoMCksIDB4MDE1ZTA3ZDApOwo+ID4gLQo+ID4gLQkJRFJNX0RFQlVHX0tNUygiUGFuZWwgcG93 ZXIgdGltaW5ncyB1bmluaXRpYWxpemVkLCBzZXR0aW5nIGRlZmF1bHRzXG4iKTsKPiA+IC0JfQo+ ID4gLQo+ID4gwqAJbHZkc19lbmNvZGVyID0ga3phbGxvYyhzaXplb2YoKmx2ZHNfZW5jb2Rlciks IEdGUF9LRVJORUwpOwo+ID4gwqAJaWYgKCFsdmRzX2VuY29kZXIpCj4gPiDCoAkJcmV0dXJuOwo+ ID4gQEAgLTk5OSw2ICsxMDcyLDEwIEBAIHZvaWQgaW50ZWxfbHZkc19pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCj4gPiDCoAkJCQnCoMKgwqDCoMKgwqBkZXYtPm1vZGVfY29uZmlnLnNjYWxp bmdfbW9kZV9wcm9wZXJ0eSwKPiA+IMKgCQkJCcKgwqDCoMKgwqDCoERSTV9NT0RFX1NDQUxFX0FT UEVDVCk7Cj4gPiDCoAlpbnRlbF9jb25uZWN0b3ItPnBhbmVsLmZpdHRpbmdfbW9kZSA9IERSTV9N T0RFX1NDQUxFX0FTUEVDVDsKPiA+ICsKPiA+ICsJaW50ZWxfbHZkc19wcHNfZ2V0X2h3X3N0YXRl KGRldl9wcml2LCAmbHZkc19lbmNvZGVyLT5pbml0X3Bwcyk7Cj4gPiArCWx2ZHNfZW5jb2Rlci0+ aW5pdF9sdmRzX3ZhbCA9IGx2ZHM7Cj4gPiArCj4gPiDCoAkvKgo+ID4gwqAJwqAqIExWRFMgZGlz Y292ZXJ5Ogo+ID4gwqAJwqAqIDEpIGNoZWNrIGZvciBFRElEIG9uIEREQwo+ID4gLS3CoAo+ID4g Mi41LjAKPiA+IAo+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KPiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiA+IEludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=