From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: Re: [PATCH 09/15] drm/i915/glk: Implement Geminilake DDI init sequence Date: Thu, 10 Nov 2016 17:27:14 -0800 Message-ID: <20161111012714.GA8263@rdvivi-vienna> References: <1478791400-21756-1-git-send-email-ander.conselvan.de.oliveira@intel.com> <1478791400-21756-10-git-send-email-ander.conselvan.de.oliveira@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pf0-x241.google.com (mail-pf0-x241.google.com [IPv6:2607:f8b0:400e:c00::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id AE1B06E0FF for ; Fri, 11 Nov 2016 01:27:35 +0000 (UTC) Received: by mail-pf0-x241.google.com with SMTP id y68so365688pfb.1 for ; Thu, 10 Nov 2016 17:27:35 -0800 (PST) Content-Disposition: inline In-Reply-To: <1478791400-21756-10-git-send-email-ander.conselvan.de.oliveira@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ander Conselvan de Oliveira Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org ClJldmlld2VkLWJ5OiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+CgpPbiBU aHUsIE5vdiAxMCwgMjAxNiBhdCAwNToyMzoxNFBNICswMjAwLCBBbmRlciBDb25zZWx2YW4gZGUg T2xpdmVpcmEgd3JvdGU6Cj4gSW1wbGVtZW50IHRoZSBEREkgaW5pdHNlcXVlbmNlIGFuZCBhZGQg aW5mb3JtYXRpb24gYWJvdXQgdGhlIGRpZmZlcmVudAo+IHBoeXMgaW4gR0xLLgo+IAo+IHYyOiBS ZWJhc2Ugb24gdGhlIG1vdmUgb2YgcGh5cyB0byBiZSBwb3dlciB3ZWxscy4KPiAKPiB2MzogUmVi YXNlIG9uIGFkZGl0aW9uIG9mIHN0cnVjdCBieHRfZGRpX3BoeV9pbmZvLgo+IAo+IFNpZ25lZC1v ZmYtYnk6IEFuZGVyIENvbnNlbHZhbiBkZSBPbGl2ZWlyYSA8YW5kZXIuY29uc2VsdmFuLmRlLm9s aXZlaXJhQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aCAgICAgICAgIHwgICA1ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAg ICAgICB8ICAxNyArKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGlvX3BoeS5j ICAgfCAxMTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYyAgIHwgICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3J1bnRpbWVfcG0uYyB8ICAzOSArKysrKysrKysrKwo+ICA1IGZpbGVzIGNoYW5n ZWQsIDE1NSBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKPiBpbmRleCA0YmI3NDVhLi5mNDk3Mzk2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCj4gQEAgLTIwNyw3ICsyMDcsOCBAQCBlbnVtIGRwaW9fY2hhbm5lbCB7Cj4gIAo+ICBl bnVtIGRwaW9fcGh5IHsKPiAgCURQSU9fUEhZMCwKPiAtCURQSU9fUEhZMQo+ICsJRFBJT19QSFkx LAo+ICsJRFBJT19QSFkyLAo+ICB9Owo+ICAKPiAgZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2Rv bWFpbiB7Cj4gQEAgLTM4ODgsNyArMzg4OSw3IEBAIHUzMiB2bHZfZmxpc2RzaV9yZWFkKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIHJlZyk7Cj4gIHZvaWQgdmx2X2ZsaXNk c2lfd3JpdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcmVnLCB1MzIg dmFsKTsKPiAgCj4gIC8qIGludGVsX2RwaW9fcGh5LmMgKi8KPiAtdm9pZCBieHRfcG9ydF90b19w aHlfY2hhbm5lbChlbnVtIHBvcnQgcG9ydCwKPiArdm9pZCBieHRfcG9ydF90b19waHlfY2hhbm5l bChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9ydCBwb3J0LAo+ICAJ CQkgICAgIGVudW0gZHBpb19waHkgKnBoeSwgZW51bSBkcGlvX2NoYW5uZWwgKmNoKTsKPiAgdm9p ZCBieHRfZGRpX3BoeV9zZXRfc2lnbmFsX2xldmVsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiAgCQkJCSAgZW51bSBwb3J0IHBvcnQsIHUzMiBtYXJnaW4sIHUzMiBzY2FsZSwK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBpbmRleCA3OGEzMzQ3Li5kNzhhM2U2IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gQEAgLTYyLDYgKzYyLDkgQEAgc3RhdGljIGlubGluZSBi b29sIGk5MTVfbW1pb19yZWdfdmFsaWQoaTkxNV9yZWdfdCByZWcpCj4gICNkZWZpbmUgX1BPUlQz KHBvcnQsIGEsIGIsIGMpICgocG9ydCkgPT0gUE9SVF9BID8gKGEpIDogXAo+ICAJCQkgICAgICAg KHBvcnQpID09IFBPUlRfQiA/IChiKSA6IChjKSkKPiAgI2RlZmluZSBfTU1JT19QT1JUMyhwaXBl LCBhLCBiLCBjKSBfTU1JTyhfUE9SVDMocGlwZSwgYSwgYiwgYykpCj4gKyNkZWZpbmUgX1BIWTMo cGh5LCBhLCBiLCBjKSAoKHBoeSkgPT0gRFBJT19QSFkwID8gKGEpIDogXAo+ICsJCQkgICAgIChw aHkpID09IERQSU9fUEhZMSA/IChiKSA6IChjKSkKPiArI2RlZmluZSBfTU1JT19QSFkzKHBoeSwg YSwgYiwgYykgX01NSU8oX1BIWTMocGh5LCBhLCBiLCBjKSkKPiAgCj4gICNkZWZpbmUgX01BU0tF RF9GSUVMRChtYXNrLCB2YWx1ZSkgKHsJCQkJCSAgIFwKPiAgCWlmIChfX2J1aWx0aW5fY29uc3Rh bnRfcChtYXNrKSkJCQkJCSAgIFwKPiBAQCAtNzI2LDYgKzcyOSw3IEBAIGVudW0gc2tsX2Rpc3Bf cG93ZXJfd2VsbHMgewo+ICAKPiAgCUJYVF9EUElPX0NNTl9BLAo+ICAJQlhUX0RQSU9fQ01OX0JD LAo+ICsJR0xLX0RQSU9fQ01OX0MsCj4gIH07Cj4gIAo+ICAjZGVmaW5lIFNLTF9QT1dFUl9XRUxM X1NUQVRFKHB3KSAoMSA8PCAoKHB3KSAqIDIpKQo+IEBAIC0xMTk0LDggKzExOTgsMTAgQEAgZW51 bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7Cj4gIC8qIEJYVCBQSFkgcmVnaXN0ZXJzICovCj4gICNk ZWZpbmUgX0JYVF9QSFkwX0JBU0UJCQkweDZDMDAwCj4gICNkZWZpbmUgX0JYVF9QSFkxX0JBU0UJ CQkweDE2MjAwMAo+IC0jZGVmaW5lIEJYVF9QSFlfQkFTRShwaHkpCQlfUElQRSgocGh5KSwgX0JY VF9QSFkwX0JBU0UsIFwKPiAtCQkJCQkJICAgICBfQlhUX1BIWTFfQkFTRSkKPiArI2RlZmluZSBf QlhUX1BIWTJfQkFTRQkJCTB4MTYzMDAwCj4gKyNkZWZpbmUgQlhUX1BIWV9CQVNFKHBoeSkJCV9Q SFkzKChwaHkpLCBfQlhUX1BIWTBfQkFTRSwgXAo+ICsJCQkJCQkgICAgIF9CWFRfUEhZMV9CQVNF LCBcCj4gKwkJCQkJCSAgICAgX0JYVF9QSFkyX0JBU0UpCj4gIAo+ICAjZGVmaW5lIF9CWFRfUEhZ KHBoeSwgcmVnKQkJCQkJCVwKPiAgCV9NTUlPKEJYVF9QSFlfQkFTRShwaHkpIC0gX0JYVF9QSFkw X0JBU0UgKyAocmVnKSkKPiBAQCAtMTIwNyw3ICsxMjEzLDYgQEAgZW51bSBza2xfZGlzcF9wb3dl cl93ZWxscyB7Cj4gIAlfTU1JTyhfQlhUX1BIWV9DSChwaHksIGNoLCByZWdfY2gwLCByZWdfY2gx KSkKPiAgCj4gICNkZWZpbmUgQlhUX1BfQ1JfR1RfRElTUF9QV1JPTgkJX01NSU8oMHgxMzgwOTAp Cj4gLSNkZWZpbmUgICBHVF9ESVNQTEFZX1BPV0VSX09OKHBoeSkJKDEgPDwgKHBoeSkpCj4gIAo+ ICAjZGVmaW5lIF9CWFRfUEhZX0NUTF9ERElfQQkJMHg2NEMwMAo+ICAjZGVmaW5lIF9CWFRfUEhZ X0NUTF9ERElfQgkJMHg2NEMxMAo+IEBAIC0xMjIwLDkgKzEyMjUsMTEgQEAgZW51bSBza2xfZGlz cF9wb3dlcl93ZWxscyB7Cj4gIAo+ICAjZGVmaW5lIF9QSFlfQ1RMX0ZBTUlMWV9FRFAJCTB4NjRD ODAKPiAgI2RlZmluZSBfUEhZX0NUTF9GQU1JTFlfRERJCQkweDY0QzkwCj4gKyNkZWZpbmUgX1BI WV9DVExfRkFNSUxZX0RESV9DCQkweDY0Q0EwCj4gICNkZWZpbmUgICBDT01NT05fUkVTRVRfRElT CQkoMSA8PCAzMSkKPiAtI2RlZmluZSBCWFRfUEhZX0NUTF9GQU1JTFkocGh5KQkJX01NSU9fUElQ RSgocGh5KSwgX1BIWV9DVExfRkFNSUxZX0RESSwgXAo+IC0JCQkJCQkJICBfUEhZX0NUTF9GQU1J TFlfRURQKQo+ICsjZGVmaW5lIEJYVF9QSFlfQ1RMX0ZBTUlMWShwaHkpCQlfTU1JT19QSFkzKChw aHkpLCBfUEhZX0NUTF9GQU1JTFlfRERJLCBcCj4gKwkJCQkJCQkgIF9QSFlfQ1RMX0ZBTUlMWV9F RFAsIFwKPiArCQkJCQkJCSAgX1BIWV9DVExfRkFNSUxZX0RESV9DKQo+ICAKPiAgLyogQlhUIFBI WSBQTEwgcmVnaXN0ZXJzICovCj4gICNkZWZpbmUgX1BPUlRfUExMX0EJCQkweDQ2MDc0Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwaW9fcGh5LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcGlvX3BoeS5jCj4gaW5kZXggN2E4ZTgyZC4uNGZmNjAxZCAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGlvX3BoeS5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBpb19waHkuYwo+IEBAIC0xMzEsNiArMTMx LDE4IEBAIHN0cnVjdCBieHRfZGRpX3BoeV9pbmZvIHsKPiAgCWVudW0gZHBpb19waHkgcmNvbXBf cGh5Owo+ICAKPiAgCS8qKgo+ICsJICogQHJlc2V0X2RlbGF5OiBkZWxheSBpbiB1cyB0byB3YWl0 IGJlZm9yZSBzZXR0aW5nIHRoZSBjb21tb24gcmVzZXQKPiArCSAqIGJpdCBpbiBCWFRfUEhZX0NU TF9GQU1JTFksIHdoaWNoIGVmZmVjdGl2ZWx5IGVuYWJsZXMgdGhlIHBoeS4KPiArCSAqLwo+ICsJ aW50IHJlc2V0X2RlbGF5Owo+ICsKPiArCS8qKgo+ICsJICogQHB3cm9uX21hc2s6IE1hc2sgd2l0 aCB0aGUgYXBwcm9wcmlhdGUgYml0IHNldCB0aGF0IHdvdWxkIGNhdXNlIHRoZQo+ICsJICogcHVu aXQgdG8gcG93ZXIgdGhpcyBwaHkgaWYgd3JpdHRlbiB0byBCWFRfUF9DUl9HVF9ESVNQX1BXUk9O Lgo+ICsJICovCj4gKwl1MzIgcHdyb25fbWFzazsKPiArCj4gKwkvKioKPiAgCSAqIEBjaGFubmVs OiBzdHJ1Y3QgY29udGFpbmluZyBwZXIgY2hhbm5lbCBpbmZvcm1hdGlvbi4KPiAgCSAqLwo+ICAJ c3RydWN0IHsKPiBAQCAtMTQ1LDYgKzE1Nyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYnh0X2Rk aV9waHlfaW5mbyBieHRfZGRpX3BoeV9pbmZvW10gPSB7Cj4gIAlbRFBJT19QSFkwXSA9IHsKPiAg CQkuZHVhbF9jaGFubmVsID0gdHJ1ZSwKPiAgCQkucmNvbXBfcGh5ID0gRFBJT19QSFkxLAo+ICsJ CS5wd3Jvbl9tYXNrID0gQklUKDApLAo+ICAKPiAgCQkuY2hhbm5lbCA9IHsKPiAgCQkJW0RQSU9f Q0gwXSA9IHsgLnBvcnQgPSBQT1JUX0IgfSwKPiBAQCAtMTU0LDYgKzE2Nyw3IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgYnh0X2RkaV9waHlfaW5mbyBieHRfZGRpX3BoeV9pbmZvW10gPSB7Cj4gIAlb RFBJT19QSFkxXSA9IHsKPiAgCQkuZHVhbF9jaGFubmVsID0gZmFsc2UsCj4gIAkJLnJjb21wX3Bo eSA9IC0xLAo+ICsJCS5wd3Jvbl9tYXNrID0gQklUKDEpLAo+ICAKPiAgCQkuY2hhbm5lbCA9IHsK PiAgCQkJW0RQSU9fQ0gwXSA9IHsgLnBvcnQgPSBQT1JUX0EgfSwKPiBAQCAtMTYxLDIwICsxNzUs NzcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBieHRfZGRpX3BoeV9pbmZvIGJ4dF9kZGlfcGh5X2lu Zm9bXSA9IHsKPiAgCX0sCj4gIH07Cj4gIAo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGJ4dF9kZGlf cGh5X2luZm8gZ2xrX2RkaV9waHlfaW5mb1tdID0gewo+ICsJW0RQSU9fUEhZMF0gPSB7Cj4gKwkJ LmR1YWxfY2hhbm5lbCA9IGZhbHNlLAo+ICsJCS5yY29tcF9waHkgPSBEUElPX1BIWTEsCj4gKwkJ LnB3cm9uX21hc2sgPSBCSVQoMCksCj4gKwkJLnJlc2V0X2RlbGF5ID0gMjAsCj4gKwo+ICsJCS5j aGFubmVsID0gewo+ICsJCQlbRFBJT19DSDBdID0geyAucG9ydCA9IFBPUlRfQiB9LAo+ICsJCX0K PiArCX0sCj4gKwlbRFBJT19QSFkxXSA9IHsKPiArCQkuZHVhbF9jaGFubmVsID0gZmFsc2UsCj4g KwkJLnJjb21wX3BoeSA9IC0xLAo+ICsJCS5wd3Jvbl9tYXNrID0gQklUKDMpLAo+ICsJCS5yZXNl dF9kZWxheSA9IDIwLAo+ICsKPiArCQkuY2hhbm5lbCA9IHsKPiArCQkJW0RQSU9fQ0gwXSA9IHsg LnBvcnQgPSBQT1JUX0EgfSwKPiArCQl9Cj4gKwl9LAo+ICsJW0RQSU9fUEhZMl0gPSB7Cj4gKwkJ LmR1YWxfY2hhbm5lbCA9IGZhbHNlLAo+ICsJCS5yY29tcF9waHkgPSBEUElPX1BIWTEsCj4gKwkJ LnB3cm9uX21hc2sgPSBCSVQoMSksCj4gKwkJLnJlc2V0X2RlbGF5ID0gMjAsCj4gKwo+ICsJCS5j aGFubmVsID0gewo+ICsJCQlbRFBJT19DSDBdID0geyAucG9ydCA9IFBPUlRfQyB9LAo+ICsJCX0K PiArCX0sCj4gK307Cj4gKwo+ICBzdGF0aWMgdTMyIGJ4dF9waHlfcG9ydF9tYXNrKGNvbnN0IHN0 cnVjdCBieHRfZGRpX3BoeV9pbmZvICpwaHlfaW5mbykKPiAgewo+ICAJcmV0dXJuIChwaHlfaW5m by0+ZHVhbF9jaGFubmVsICogQklUKHBoeV9pbmZvLT5jaGFubmVsW0RQSU9fQ0gxXS5wb3J0KSkg fAo+ICAJCUJJVChwaHlfaW5mby0+Y2hhbm5lbFtEUElPX0NIMF0ucG9ydCk7Cj4gIH0KPiAgCj4g LXZvaWQgYnh0X3BvcnRfdG9fcGh5X2NoYW5uZWwoZW51bSBwb3J0IHBvcnQsCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgYnh0X2RkaV9waHlfaW5mbyAqCj4gK2J4dF9nZXRfcGh5X2xpc3Qoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgKmNvdW50KQo+ICt7Cj4gKwlpZiAoSVNf R0VNSU5JTEFLRShkZXZfcHJpdikpIHsKPiArCQkqY291bnQgPSAgQVJSQVlfU0laRShnbGtfZGRp X3BoeV9pbmZvKTsKPiArCQlyZXR1cm4gZ2xrX2RkaV9waHlfaW5mbzsKPiArCX0gZWxzZSB7Cj4g KwkJKmNvdW50ID0gIEFSUkFZX1NJWkUoYnh0X2RkaV9waHlfaW5mbyk7Cj4gKwkJcmV0dXJuIGJ4 dF9kZGlfcGh5X2luZm87Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYnh0 X2RkaV9waHlfaW5mbyAqCj4gK2J4dF9nZXRfcGh5X2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LCBlbnVtIGRwaW9fcGh5IHBoeSkKPiArewo+ICsJaW50IGNvdW50Owo+ICsJ Y29uc3Qgc3RydWN0IGJ4dF9kZGlfcGh5X2luZm8gKnBoeV9saXN0ID0KPiArCQlieHRfZ2V0X3Bo eV9saXN0KGRldl9wcml2LCAmY291bnQpOwo+ICsKPiArCXJldHVybiAmcGh5X2xpc3RbcGh5XTsK PiArfQo+ICsKPiArdm9pZCBieHRfcG9ydF90b19waHlfY2hhbm5lbChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9ydCBwb3J0LAo+ICAJCQkgICAgIGVudW0gZHBpb19w aHkgKnBoeSwgZW51bSBkcGlvX2NoYW5uZWwgKmNoKQo+ICB7Cj4gLQljb25zdCBzdHJ1Y3QgYnh0 X2RkaV9waHlfaW5mbyAqcGh5X2luZm87Cj4gLQlpbnQgaTsKPiArCWNvbnN0IHN0cnVjdCBieHRf ZGRpX3BoeV9pbmZvICpwaHlfaW5mbywgKnBoeXM7Cj4gKwlpbnQgaSwgY291bnQ7Cj4gKwo+ICsJ cGh5cyA9IGJ4dF9nZXRfcGh5X2xpc3QoZGV2X3ByaXYsICZjb3VudCk7Cj4gIAo+IC0JZm9yIChp ID0gMDsgaSA8IEFSUkFZX1NJWkUoYnh0X2RkaV9waHlfaW5mbyk7IGkrKykgewo+IC0JCXBoeV9p bmZvID0gJmJ4dF9kZGlfcGh5X2luZm9baV07Cj4gKwlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkr Kykgewo+ICsJCXBoeV9pbmZvID0gJnBoeXNbaV07Cj4gIAo+ICAJCWlmIChwb3J0ID09IHBoeV9p bmZvLT5jaGFubmVsW0RQSU9fQ0gwXS5wb3J0KSB7Cj4gIAkJCSpwaHkgPSBpOwo+IEBAIC0yMDMs NyArMjc0LDcgQEAgdm9pZCBieHRfZGRpX3BoeV9zZXRfc2lnbmFsX2xldmVsKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCWVudW0gZHBpb19waHkgcGh5Owo+ICAJZW51bSBk cGlvX2NoYW5uZWwgY2g7Cj4gIAo+IC0JYnh0X3BvcnRfdG9fcGh5X2NoYW5uZWwocG9ydCwgJnBo eSwgJmNoKTsKPiArCWJ4dF9wb3J0X3RvX3BoeV9jaGFubmVsKGRldl9wcml2LCBwb3J0LCAmcGh5 LCAmY2gpOwo+ICAKPiAgCS8qCj4gIAkgKiBXaGlsZSB3ZSB3cml0ZSB0byB0aGUgZ3JvdXAgcmVn aXN0ZXIgdG8gcHJvZ3JhbSBhbGwgbGFuZXMgYXQgb25jZSB3ZQo+IEBAIC0yNDEsMTAgKzMxMiwx MiBAQCB2b2lkIGJ4dF9kZGlfcGh5X3NldF9zaWduYWxfbGV2ZWwoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ICBib29sIGJ4dF9kZGlfcGh5X2lzX2VuYWJsZWQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkgICAgZW51bSBkcGlvX3BoeSBwaHkpCj4g IHsKPiAtCWNvbnN0IHN0cnVjdCBieHRfZGRpX3BoeV9pbmZvICpwaHlfaW5mbyA9ICZieHRfZGRp X3BoeV9pbmZvW3BoeV07Cj4gKwljb25zdCBzdHJ1Y3QgYnh0X2RkaV9waHlfaW5mbyAqcGh5X2lu Zm87Cj4gIAllbnVtIHBvcnQgcG9ydDsKPiAgCj4gLQlpZiAoIShJOTE1X1JFQUQoQlhUX1BfQ1Jf R1RfRElTUF9QV1JPTikgJiBHVF9ESVNQTEFZX1BPV0VSX09OKHBoeSkpKQo+ICsJcGh5X2luZm8g PSBieHRfZ2V0X3BoeV9pbmZvKGRldl9wcml2LCBwaHkpOwo+ICsKPiArCWlmICghKEk5MTVfUkVB RChCWFRfUF9DUl9HVF9ESVNQX1BXUk9OKSAmIHBoeV9pbmZvLT5wd3Jvbl9tYXNrKSkKPiAgCQly ZXR1cm4gZmFsc2U7Cj4gIAo+ICAJaWYgKChJOTE1X1JFQUQoQlhUX1BPUlRfQ0wxQ01fRFcwKHBo eSkpICYKPiBAQCAtMzA2LDkgKzM3OSwxMSBAQCBzdGF0aWMgdm9pZCBieHRfcGh5X3dhaXRfZ3Jj X2RvbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICBzdGF0aWMgdm9pZCBf Ynh0X2RkaV9waHlfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJ CSAgICAgIGVudW0gZHBpb19waHkgcGh5KQo+ICB7Cj4gLQljb25zdCBzdHJ1Y3QgYnh0X2RkaV9w aHlfaW5mbyAqcGh5X2luZm8gPSAmYnh0X2RkaV9waHlfaW5mb1twaHldOwo+ICsJY29uc3Qgc3Ry dWN0IGJ4dF9kZGlfcGh5X2luZm8gKnBoeV9pbmZvOwo+ICAJdTMyIHZhbDsKPiAgCj4gKwlwaHlf aW5mbyA9IGJ4dF9nZXRfcGh5X2luZm8oZGV2X3ByaXYsIHBoeSk7Cj4gKwo+ICAJaWYgKGJ4dF9k ZGlfcGh5X2lzX2VuYWJsZWQoZGV2X3ByaXYsIHBoeSkpIHsKPiAgCQkvKiBTdGlsbCByZWFkIG91 dCB0aGUgR1JDIHZhbHVlIGZvciBzdGF0ZSB2ZXJpZmljYXRpb24gKi8KPiAgCQlpZiAocGh5X2lu Zm8tPnJjb21wX3BoeSAhPSAtMSkKPiBAQCAtMzI2LDcgKzQwMSw3IEBAIHN0YXRpYyB2b2lkIF9i eHRfZGRpX3BoeV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCX0K PiAgCj4gIAl2YWwgPSBJOTE1X1JFQUQoQlhUX1BfQ1JfR1RfRElTUF9QV1JPTik7Cj4gLQl2YWwg fD0gR1RfRElTUExBWV9QT1dFUl9PTihwaHkpOwo+ICsJdmFsIHw9IHBoeV9pbmZvLT5wd3Jvbl9t YXNrOwo+ICAJSTkxNV9XUklURShCWFRfUF9DUl9HVF9ESVNQX1BXUk9OLCB2YWwpOwo+ICAKPiAg CS8qCj4gQEAgLTM4NCw2ICs0NTksOSBAQCBzdGF0aWMgdm9pZCBfYnh0X2RkaV9waHlfaW5pdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJSTkxNV9XUklURShCWFRfUE9S VF9SRUZfRFc4KHBoeSksIHZhbCk7Cj4gIAl9Cj4gIAo+ICsJaWYgKHBoeV9pbmZvLT5yZXNldF9k ZWxheSkKPiArCQl1ZGVsYXkocGh5X2luZm8tPnJlc2V0X2RlbGF5KTsKPiArCj4gIAl2YWwgPSBJ OTE1X1JFQUQoQlhUX1BIWV9DVExfRkFNSUxZKHBoeSkpOwo+ICAJdmFsIHw9IENPTU1PTl9SRVNF VF9ESVM7Cj4gIAlJOTE1X1dSSVRFKEJYVF9QSFlfQ1RMX0ZBTUlMWShwaHkpLCB2YWwpOwo+IEBA IC0zOTUsMjAgKzQ3MywyNCBAQCBzdGF0aWMgdm9pZCBfYnh0X2RkaV9waHlfaW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAo+ICB2b2lkIGJ4dF9kZGlfcGh5X3VuaW5p dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gZHBpb19waHkgcGh5KQo+ ICB7Cj4gKwljb25zdCBzdHJ1Y3QgYnh0X2RkaV9waHlfaW5mbyAqcGh5X2luZm87Cj4gIAl1aW50 MzJfdCB2YWw7Cj4gIAo+ICsJcGh5X2luZm8gPSBieHRfZ2V0X3BoeV9pbmZvKGRldl9wcml2LCBw aHkpOwo+ICsKPiAgCXZhbCA9IEk5MTVfUkVBRChCWFRfUEhZX0NUTF9GQU1JTFkocGh5KSk7Cj4g IAl2YWwgJj0gfkNPTU1PTl9SRVNFVF9ESVM7Cj4gIAlJOTE1X1dSSVRFKEJYVF9QSFlfQ1RMX0ZB TUlMWShwaHkpLCB2YWwpOwo+ICAKPiAgCXZhbCA9IEk5MTVfUkVBRChCWFRfUF9DUl9HVF9ESVNQ X1BXUk9OKTsKPiAtCXZhbCAmPSB+R1RfRElTUExBWV9QT1dFUl9PTihwaHkpOwo+ICsJdmFsICY9 IH5waHlfaW5mby0+cHdyb25fbWFzazsKPiAgCUk5MTVfV1JJVEUoQlhUX1BfQ1JfR1RfRElTUF9Q V1JPTiwgdmFsKTsKPiAgfQo+ICAKPiAgdm9pZCBieHRfZGRpX3BoeV9pbml0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBkcGlvX3BoeSBwaHkpCj4gIHsKPiAtCWNvbnN0 IHN0cnVjdCBieHRfZGRpX3BoeV9pbmZvICpwaHlfaW5mbyA9ICZieHRfZGRpX3BoeV9pbmZvW3Bo eV07Cj4gKwljb25zdCBzdHJ1Y3QgYnh0X2RkaV9waHlfaW5mbyAqcGh5X2luZm8gPQo+ICsJCWJ4 dF9nZXRfcGh5X2luZm8oZGV2X3ByaXYsIHBoeSk7Cj4gIAllbnVtIGRwaW9fcGh5IHJjb21wX3Bo eSA9IHBoeV9pbmZvLT5yY29tcF9waHk7Cj4gIAlib29sIHdhc19lbmFibGVkOwo+ICAKPiBAQCAt NDYxLDEwICs1NDMsMTIgQEAgX19waHlfcmVnX3ZlcmlmeV9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gZHBpb19waHkgcGh5LAo+ICBib29sIGJ4dF9kZGlfcGh5 X3ZlcmlmeV9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCSAg ICAgIGVudW0gZHBpb19waHkgcGh5KQo+ICB7Cj4gLQljb25zdCBzdHJ1Y3QgYnh0X2RkaV9waHlf aW5mbyAqcGh5X2luZm8gPSAmYnh0X2RkaV9waHlfaW5mb1twaHldOwo+ICsJY29uc3Qgc3RydWN0 IGJ4dF9kZGlfcGh5X2luZm8gKnBoeV9pbmZvOwo+ICAJdWludDMyX3QgbWFzazsKPiAgCWJvb2wg b2s7Cj4gIAo+ICsJcGh5X2luZm8gPSBieHRfZ2V0X3BoeV9pbmZvKGRldl9wcml2LCBwaHkpOwo+ ICsKPiAgI2RlZmluZSBfQ0hLKHJlZywgbWFzaywgZXhwLCBmbXQsIC4uLikJCQkJCVwKPiAgCV9f cGh5X3JlZ192ZXJpZnlfc3RhdGUoZGV2X3ByaXYsIHBoeSwgcmVnLCBtYXNrLCBleHAsIGZtdCwJ XAo+ICAJCQkgICAgICAgIyMgX19WQV9BUkdTX18pCj4gQEAgLTU0MCw3ICs2MjQsNyBAQCB2b2lk IGJ4dF9kZGlfcGh5X3NldF9sYW5lX29wdGltX21hc2soc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCj4gIAllbnVtIGRwaW9fY2hhbm5lbCBjaDsKPiAgCWludCBsYW5lOwo+ICAKPiAtCWJ4 dF9wb3J0X3RvX3BoeV9jaGFubmVsKHBvcnQsICZwaHksICZjaCk7Cj4gKwlieHRfcG9ydF90b19w aHlfY2hhbm5lbChkZXZfcHJpdiwgcG9ydCwgJnBoeSwgJmNoKTsKPiAgCj4gIAlmb3IgKGxhbmUg PSAwOyBsYW5lIDwgNDsgbGFuZSsrKSB7Cj4gIAkJdTMyIHZhbCA9IEk5MTVfUkVBRChCWFRfUE9S VF9UWF9EVzE0X0xOKHBoeSwgY2gsIGxhbmUpKTsKPiBAQCAtNTY4LDcgKzY1Miw3IEBAIGJ4dF9k ZGlfcGh5X2dldF9sYW5lX2xhdF9vcHRpbV9tYXNrKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyKQo+ICAJaW50IGxhbmU7Cj4gIAl1aW50OF90IG1hc2s7Cj4gIAo+IC0JYnh0X3BvcnRfdG9f cGh5X2NoYW5uZWwocG9ydCwgJnBoeSwgJmNoKTsKPiArCWJ4dF9wb3J0X3RvX3BoeV9jaGFubmVs KGRldl9wcml2LCBwb3J0LCAmcGh5LCAmY2gpOwo+ICAKPiAgCW1hc2sgPSAwOwo+ICAJZm9yIChs YW5lID0gMDsgbGFuZSA8IDQ7IGxhbmUrKykgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcGxsX21nci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBs bF9tZ3IuYwo+IGluZGV4IDgyMDVjMWMuLjAzMTFmZDQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RwbGxfbWdyLmMKPiBAQCAtMTM3NCw3ICsxMzc0LDcgQEAgc3RhdGljIHZvaWQgYnh0 X2RkaV9wbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCWVu dW0gZHBpb19waHkgcGh5Owo+ICAJZW51bSBkcGlvX2NoYW5uZWwgY2g7Cj4gIAo+IC0JYnh0X3Bv cnRfdG9fcGh5X2NoYW5uZWwocG9ydCwgJnBoeSwgJmNoKTsKPiArCWJ4dF9wb3J0X3RvX3BoeV9j aGFubmVsKGRldl9wcml2LCBwb3J0LCAmcGh5LCAmY2gpOwo+ICAKPiAgCS8qIE5vbi1TU0MgcmVm ZXJlbmNlICovCj4gIAl0ZW1wID0gSTkxNV9SRUFEKEJYVF9QT1JUX1BMTF9FTkFCTEUocG9ydCkp Owo+IEBAIC0xNDkyLDcgKzE0OTIsNyBAQCBzdGF0aWMgYm9vbCBieHRfZGRpX3BsbF9nZXRfaHdf c3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJZW51bSBkcGlvX3Bo eSBwaHk7Cj4gIAllbnVtIGRwaW9fY2hhbm5lbCBjaDsKPiAgCj4gLQlieHRfcG9ydF90b19waHlf Y2hhbm5lbChwb3J0LCAmcGh5LCAmY2gpOwo+ICsJYnh0X3BvcnRfdG9fcGh5X2NoYW5uZWwoZGV2 X3ByaXYsIHBvcnQsICZwaHksICZjaCk7Cj4gIAo+ICAJaWYgKCFpbnRlbF9kaXNwbGF5X3Bvd2Vy X2dldF9pZl9lbmFibGVkKGRldl9wcml2LCBQT1dFUl9ET01BSU5fUExMUykpCj4gIAkJcmV0dXJu IGZhbHNlOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1l X3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKPiBpbmRleCA2 ODNjMTViLi4zMGQ1MTEyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3J1bnRpbWVfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVf cG0uYwo+IEBAIC00NzcsNiArNDc3LDE4IEBAIHN0YXRpYyB2b2lkIGhzd19zZXRfcG93ZXJfd2Vs bChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICNkZWZpbmUgR0xLX0RJU1BM QVlfRERJX0NfUE9XRVJfRE9NQUlOUyAoCQlcCj4gIAlCSVQoUE9XRVJfRE9NQUlOX1BPUlRfRERJ X0NfTEFORVMpIHwJCVwKPiAgCUJJVChQT1dFUl9ET01BSU5fSU5JVCkpCj4gKyNkZWZpbmUgR0xL X0RQSU9fQ01OX0FfUE9XRVJfRE9NQUlOUyAoCQkJXAo+ICsJQklUKFBPV0VSX0RPTUFJTl9QT1JU X0RESV9BX0xBTkVTKSB8CQlcCj4gKwlCSVQoUE9XRVJfRE9NQUlOX0FVWF9BKSB8CQkJXAo+ICsJ QklUKFBPV0VSX0RPTUFJTl9JTklUKSkKPiArI2RlZmluZSBHTEtfRFBJT19DTU5fQl9QT1dFUl9E T01BSU5TICgJCQlcCj4gKwlCSVQoUE9XRVJfRE9NQUlOX1BPUlRfRERJX0JfTEFORVMpIHwJCVwK PiArCUJJVChQT1dFUl9ET01BSU5fQVVYX0IpIHwJCQlcCj4gKwlCSVQoUE9XRVJfRE9NQUlOX0lO SVQpKQo+ICsjZGVmaW5lIEdMS19EUElPX0NNTl9DX1BPV0VSX0RPTUFJTlMgKAkJCVwKPiArCUJJ VChQT1dFUl9ET01BSU5fUE9SVF9ERElfQ19MQU5FUykgfAkJXAo+ICsJQklUKFBPV0VSX0RPTUFJ Tl9BVVhfQykgfAkJCVwKPiArCUJJVChQT1dFUl9ET01BSU5fSU5JVCkpCj4gICNkZWZpbmUgR0xL X0RJU1BMQVlfQVVYX0FfUE9XRVJfRE9NQUlOUyAoCQlcCj4gIAlCSVQoUE9XRVJfRE9NQUlOX0FV WF9BKSB8CQlcCj4gIAlCSVQoUE9XRVJfRE9NQUlOX0lOSVQpKQo+IEBAIC05MjYsNiArOTM4LDEy IEBAIHN0YXRpYyB2b2lkIGJ4dF92ZXJpZnlfZGRpX3BoeV9wb3dlcl93ZWxscyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlwb3dlcl93ZWxsID0gbG9va3VwX3Bvd2VyX3dl bGwoZGV2X3ByaXYsIEJYVF9EUElPX0NNTl9CQyk7Cj4gIAlpZiAocG93ZXJfd2VsbC0+Y291bnQg PiAwKQo+ICAJCWJ4dF9kZGlfcGh5X3ZlcmlmeV9zdGF0ZShkZXZfcHJpdiwgcG93ZXJfd2VsbC0+ ZGF0YSk7Cj4gKwo+ICsJaWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKSB7Cj4gKwkJcG93ZXJf d2VsbCA9IGxvb2t1cF9wb3dlcl93ZWxsKGRldl9wcml2LCBHTEtfRFBJT19DTU5fQyk7Cj4gKwkJ aWYgKHBvd2VyX3dlbGwtPmNvdW50ID4gMCkKPiArCQkJYnh0X2RkaV9waHlfdmVyaWZ5X3N0YXRl KGRldl9wcml2LCBwb3dlcl93ZWxsLT5kYXRhKTsKPiArCX0KPiAgfQo+ICAKPiAgc3RhdGljIGJv b2wgZ2VuOV9kY19vZmZfcG93ZXJfd2VsbF9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiBAQCAtMjIxOSw2ICsyMjM3LDI3IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9w b3dlcl93ZWxsIGdsa19wb3dlcl93ZWxsc1tdID0gewo+ICAJCS5pZCA9IFNLTF9ESVNQX1BXXzIs Cj4gIAl9LAo+ICAJewo+ICsJCS5uYW1lID0gImRwaW8tY29tbW9uLWEiLAo+ICsJCS5kb21haW5z ID0gR0xLX0RQSU9fQ01OX0FfUE9XRVJfRE9NQUlOUywKPiArCQkub3BzID0gJmJ4dF9kcGlvX2Nt bl9wb3dlcl93ZWxsX29wcywKPiArCQkuaWQgPSBCWFRfRFBJT19DTU5fQSwKPiArCQkuZGF0YSA9 IERQSU9fUEhZMSwKPiArCX0sCj4gKwl7Cj4gKwkJLm5hbWUgPSAiZHBpby1jb21tb24tYiIsCj4g KwkJLmRvbWFpbnMgPSBHTEtfRFBJT19DTU5fQl9QT1dFUl9ET01BSU5TLAo+ICsJCS5vcHMgPSAm Ynh0X2RwaW9fY21uX3Bvd2VyX3dlbGxfb3BzLAo+ICsJCS5pZCA9IEJYVF9EUElPX0NNTl9CQywK PiArCQkuZGF0YSA9IERQSU9fUEhZMCwKPiArCX0sCj4gKwl7Cj4gKwkJLm5hbWUgPSAiZHBpby1j b21tb24tYyIsCj4gKwkJLmRvbWFpbnMgPSBHTEtfRFBJT19DTU5fQ19QT1dFUl9ET01BSU5TLAo+ ICsJCS5vcHMgPSAmYnh0X2RwaW9fY21uX3Bvd2VyX3dlbGxfb3BzLAo+ICsJCS5pZCA9IEdMS19E UElPX0NNTl9DLAo+ICsJCS5kYXRhID0gRFBJT19QSFkyLAo+ICsJfSwKPiArCXsKPiAgCQkubmFt ZSA9ICJBVVggQSIsCj4gIAkJLmRvbWFpbnMgPSBHTEtfRElTUExBWV9BVVhfQV9QT1dFUl9ET01B SU5TLAo+ICAJCS5vcHMgPSAmc2tsX3Bvd2VyX3dlbGxfb3BzLAo+IC0tIAo+IDIuNS41Cj4gCj4g X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1n ZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=