From mboxrd@z Thu Jan 1 00:00:00 1970 From: Heiko Stuebner Subject: Re: [PATCH v5 3/4] phy: rockchip-typec: support variable phy config value Date: Fri, 18 May 2018 18:33:52 +0200 Message-ID: <3042646.xpzRv8Q1H3@phil> References: <1526548680-2552-1-git-send-email-hl@rock-chips.com> <1526548680-2552-3-git-send-email-hl@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1526548680-2552-3-git-send-email-hl@rock-chips.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Lin Huang Cc: devicetree@vger.kernel.org, airlied@linux.ie, briannorris@chromium.org, dianders@chromium.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, robh+dt@kernel.org, dri-devel@lists.freedesktop.org, zyw@rock-chips.com, daniel.vetter@intel.com, kishon@ti.com, linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org SGksCgpBbSBEb25uZXJzdGFnLCAxNy4gTWFpIDIwMTgsIDExOjE3OjU5IENFU1Qgc2NocmllYiBM aW4gSHVhbmc6Cj4gdGhlIHBoeSBjb25maWcgdmFsdWVzIHVzZWQgdG8gZml4IGluIGRwIGZpcm13 YXJlLCBidXQgc29tZSBib2FyZHMKPiBuZWVkIGNoYW5nZSB0aGVzZSB2YWx1ZXMgdG8gZG8gdHJh aW5pbmcgYW5kIGdldCB0aGUgYmV0dGVyIGV5ZSBkaWFncmFtCj4gcmVzdWx0LiBTbyBzdXBwb3J0 IHRoYXQgaW4gcGh5IGRyaXZlci4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBaaG9uZyA8enl3 QHJvY2stY2hpcHMuY29tPgo+IFNpZ25lZC1vZmYtYnk6IExpbiBIdWFuZyA8aGxAcm9jay1jaGlw cy5jb20+CgpJIGRvbid0IHNlZSBhbnl0aGluZyBvYnZpb3VzLgoKT25lIGNvdWxkIGFyZ3VlLCB0 aGF0IHNwbGl0dGluZyBvdXQgb2YgdGhlIHN0cnVjdHMgaW50byB0aGUgaGVhZGVyIGNvdWxkCmJl IGEgc2VwYXJhdGUgcGF0Y2gsIGVzcGVjaWFsbHkgYXMgdGhlIHJlYXNvbiBmb3IgaXQgaXMgbm90 IHNwZWxsZWQgb3V0CmluIHRoZSBjb21taXQgbWVzc2FnZSBhdCBhbGwgLSBhbmQgdGhlIHJlYXNv biBvbmx5IGJlY29tZXMgdmlzaWJsZSB3aGVuCmFsc28gcmVhZGluZyBwYXRjaDQuCgpCdXQgd2hh dCBpcyBldmVuIG1vcmUgaW1wb3J0YW50IGlzIGtlZXBpbmcgS2lzaG9uIGFzIHRoZSBwaHktbWFp bnRhaW5lcgppbiB0aGUgbG9vcC4gSSd2ZSBkb25lIHRoYXQgaGVyZSwgYnV0IHBsZWFzZSBtYWtl IHN1cmUgdGhhdCBmb2xsb3dpbmcKdmVyc2lvbnMgYWxzbyBnZXQgYSBDYyB0bwoJCUtpc2hvbiBW aWpheSBBYnJhaGFtIEkgPGtpc2hvbkB0aS5jb20+CgpBcyB0aGUgcGF0Y2ggd2lsbCBwcm9iYWJs eSBuZWVkIGFuIEFjayB0byBnZXQgdGhyb3VnaCB0aGUgZHJtLXRyZWUuCgoKSGVpa28KCgoKPiAt LS0KPiBDaGFuZ2VzIGluIHYyOgo+IC0gdXBkYXRlIHBhdGNoIGZvbGxvd2luZyBFbnJpYyBzdWdn ZXN0Cj4gQ2hhbmdlcyBpbiB2MzoKPiAtIGRlbGV0ZSBuZWVkX3NvZnR3YXJlX3RyYWluaW5nIHZh cmlhYmxlCj4gLSBhZGQgZGVmYXVsdCBwaHkgY29uZmlnIHZhbHVlLCBpZiBkdHMgZG8gbm90IGRl ZmluZSBwaHkgY29uZmlnIHZhbHVlLCB1c2UgdGhlc2UgdmFsdWUKPiBDaGFuZ2VzIGluIHY0Ogo+ IC0gcmVuYW1lIHZhcmlhYmxlIGNvbmZpZyB0byB0Y3BoeV9kZWZhdWx0X2NvbmZpZwo+IENoYW5n ZXMgaW4gdjU6Cj4gLSBOb25lCj4gCj4gIGRyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1yb2NrY2hp cC10eXBlYy5jIHwgMzA2ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQo+ICBpbmNsdWRl L3NvYy9yb2NrY2hpcC9yb2NrY2hpcF9waHlfdHlwZWMuaCB8ICA2MyArKysrKysKPiAgMiBmaWxl cyBjaGFuZ2VkLCAyNzEgaW5zZXJ0aW9ucygrKSwgOTggZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBt b2RlIDEwMDY0NCBpbmNsdWRlL3NvYy9yb2NrY2hpcC9yb2NrY2hpcF9waHlfdHlwZWMuaAo+IAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtdHlwZWMuYyBi L2RyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1yb2NrY2hpcC10eXBlYy5jCj4gaW5kZXggNzZhNGI1 OC4uNWQ4NjkyZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2No aXAtdHlwZWMuYwo+ICsrKyBiL2RyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1yb2NrY2hpcC10eXBl Yy5jCj4gQEAgLTYzLDYgKzYzLDcgQEAKPiAgCj4gICNpbmNsdWRlIDxsaW51eC9tZmQvc3lzY29u Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC9waHkvcGh5Lmg+Cj4gKyNpbmNsdWRlIDxzb2Mvcm9ja2No aXAvcm9ja2NoaXBfcGh5X3R5cGVjLmg+Cj4gIAo+ICAjZGVmaW5lIENNTl9TU01fQkFOREdBUAkJ CSgweDIxIDw8IDIpCj4gICNkZWZpbmUgQ01OX1NTTV9CSUFTCQkJKDB4MjIgPDwgMikKPiBAQCAt MzIzLDIxICszMjQsMjkgQEAKPiAgICogY2xvY2sgMDogUExMIDAgZGl2IDEKPiAgICogY2xvY2sg MTogUExMIDEgZGl2IDIKPiAgICovCj4gLSNkZWZpbmUgQ0xLX1BMTF9DT05GSUcJCQkwWDMwCj4g KyNkZWZpbmUgQ0xLX1BMTDFfRElWMQkJCTB4MjAKPiArI2RlZmluZSBDTEtfUExMMV9ESVYyCQkJ MHgzMAo+ICAjZGVmaW5lIENMS19QTExfTUFTSwkJCTB4MzMKPiAgCj4gICNkZWZpbmUgQ01OX1JF QURZCQkJQklUKDApCj4gIAo+ICsjZGVmaW5lIERQX1BMTF9DTE9DS19FTkFCTEVfQUNLCQlCSVQo MykKPiAgI2RlZmluZSBEUF9QTExfQ0xPQ0tfRU5BQkxFCQlCSVQoMikKPiArI2RlZmluZSBEUF9Q TExfRU5BQkxFX0FDSwkJQklUKDEpCj4gICNkZWZpbmUgRFBfUExMX0VOQUJMRQkJCUJJVCgwKQo+ ICAjZGVmaW5lIERQX1BMTF9EQVRBX1JBVEVfUkJSCQkoKDIgPDwgMTIpIHwgKDQgPDwgOCkpCj4g ICNkZWZpbmUgRFBfUExMX0RBVEFfUkFURV9IQlIJCSgoMiA8PCAxMikgfCAoNCA8PCA4KSkKPiAg I2RlZmluZSBEUF9QTExfREFUQV9SQVRFX0hCUjIJCSgoMSA8PCAxMikgfCAoMiA8PCA4KSkKPiAr I2RlZmluZSBEUF9QTExfREFUQV9SQVRFX01BU0sJCTB4ZmYwMAo+ICAKPiAtI2RlZmluZSBEUF9N T0RFX0EwCQkJQklUKDQpCj4gLSNkZWZpbmUgRFBfTU9ERV9BMgkJCUJJVCg2KQo+IC0jZGVmaW5l IERQX01PREVfRU5URVJfQTAJCTB4YzEwMQo+IC0jZGVmaW5lIERQX01PREVfRU5URVJfQTIJCTB4 YzEwNAo+ICsjZGVmaW5lIERQX01PREVfTUFTSwkJCTB4Zgo+ICsjZGVmaW5lIERQX01PREVfRU5U RVJfQTAJCUJJVCgwKQo+ICsjZGVmaW5lIERQX01PREVfRU5URVJfQTIJCUJJVCgyKQo+ICsjZGVm aW5lIERQX01PREVfRU5URVJfQTMJCUJJVCgzKQo+ICsjZGVmaW5lIERQX01PREVfQTBfQUNLCQkJ QklUKDQpCj4gKyNkZWZpbmUgRFBfTU9ERV9BMl9BQ0sJCQlCSVQoNikKPiArI2RlZmluZSBEUF9N T0RFX0EzX0FDSwkJCUJJVCg3KQo+ICsjZGVmaW5lIERQX0xJTktfUkVTRVRfREVBU1NFUlRFRAlC SVQoOCkKPiAgCj4gICNkZWZpbmUgUEhZX01PREVfU0VUX1RJTUVPVVQJCTEwMDAwMAo+ICAKPiBA QCAtMzQ5LDUxICszNTgsNyBAQAo+ICAjZGVmaW5lIE1PREVfREZQX1VTQgkJCUJJVCgxKQo+ICAj ZGVmaW5lIE1PREVfREZQX0RQCQkJQklUKDIpCj4gIAo+IC1zdHJ1Y3QgdXNiM3BoeV9yZWcgewo+ IC0JdTMyIG9mZnNldDsKPiAtCXUzMiBlbmFibGVfYml0Owo+IC0JdTMyIHdyaXRlX2VuYWJsZTsK PiAtfTsKPiAtCj4gLS8qKgo+IC0gKiBzdHJ1Y3Qgcm9ja2NoaXBfdXNiM3BoeV9wb3J0X2NmZzog dXNiMy1waHkgcG9ydCBjb25maWd1cmF0aW9uLgo+IC0gKiBAcmVnOiB0aGUgYmFzZSBhZGRyZXNz IGZvciB1c2IzLXBoeSBjb25maWcuCj4gLSAqIEB0eXBlY19jb25uX2RpcjogdGhlIHJlZ2lzdGVy IG9mIHR5cGUtYyBjb25uZWN0b3IgZGlyZWN0aW9uLgo+IC0gKiBAdXNiM3RvdXNiMl9lbjogdGhl IHJlZ2lzdGVyIG9mIHR5cGUtYyBmb3JjZSB1c2IyIHRvIHVzYjIgZW5hYmxlLgo+IC0gKiBAZXh0 ZXJuYWxfcHNtOiB0aGUgcmVnaXN0ZXIgb2YgdHlwZS1jIHBoeSBleHRlcm5hbCBwc20gY2xvY2su Cj4gLSAqIEBwaXBlX3N0YXR1czogdGhlIHJlZ2lzdGVyIG9mIHR5cGUtYyBwaHkgcGlwZSBzdGF0 dXMuCj4gLSAqIEB1c2IzX2hvc3RfZGlzYWJsZTogdGhlIHJlZ2lzdGVyIG9mIHR5cGUtYyB1c2Iz IGhvc3QgZGlzYWJsZS4KPiAtICogQHVzYjNfaG9zdF9wb3J0OiB0aGUgcmVnaXN0ZXIgb2YgdHlw ZS1jIHVzYjMgaG9zdCBwb3J0Lgo+IC0gKiBAdXBoeV9kcF9zZWw6IHRoZSByZWdpc3RlciBvZiB0 eXBlLWMgcGh5IERQIHNlbGVjdCBjb250cm9sLgo+IC0gKi8KPiAtc3RydWN0IHJvY2tjaGlwX3Vz YjNwaHlfcG9ydF9jZmcgewo+IC0JdW5zaWduZWQgaW50IHJlZzsKPiAtCXN0cnVjdCB1c2IzcGh5 X3JlZyB0eXBlY19jb25uX2RpcjsKPiAtCXN0cnVjdCB1c2IzcGh5X3JlZyB1c2IzdG91c2IyX2Vu Owo+IC0Jc3RydWN0IHVzYjNwaHlfcmVnIGV4dGVybmFsX3BzbTsKPiAtCXN0cnVjdCB1c2IzcGh5 X3JlZyBwaXBlX3N0YXR1czsKPiAtCXN0cnVjdCB1c2IzcGh5X3JlZyB1c2IzX2hvc3RfZGlzYWJs ZTsKPiAtCXN0cnVjdCB1c2IzcGh5X3JlZyB1c2IzX2hvc3RfcG9ydDsKPiAtCXN0cnVjdCB1c2Iz cGh5X3JlZyB1cGh5X2RwX3NlbDsKPiAtfTsKPiAtCj4gLXN0cnVjdCByb2NrY2hpcF90eXBlY19w aHkgewo+IC0Jc3RydWN0IGRldmljZSAqZGV2Owo+IC0Jdm9pZCBfX2lvbWVtICpiYXNlOwo+IC0J c3RydWN0IGV4dGNvbl9kZXYgKmV4dGNvbjsKPiAtCXN0cnVjdCByZWdtYXAgKmdyZl9yZWdzOwo+ IC0Jc3RydWN0IGNsayAqY2xrX2NvcmU7Cj4gLQlzdHJ1Y3QgY2xrICpjbGtfcmVmOwo+IC0Jc3Ry dWN0IHJlc2V0X2NvbnRyb2wgKnVwaHlfcnN0Owo+IC0Jc3RydWN0IHJlc2V0X2NvbnRyb2wgKnBp cGVfcnN0Owo+IC0Jc3RydWN0IHJlc2V0X2NvbnRyb2wgKnRjcGh5X3JzdDsKPiAtCWNvbnN0IHN0 cnVjdCByb2NrY2hpcF91c2IzcGh5X3BvcnRfY2ZnICpwb3J0X2NmZ3M7Cj4gLQkvKiBtdXRleCB0 byBwcm90ZWN0IGFjY2VzcyB0byBpbmRpdmlkdWFsIFBIWXMgKi8KPiAtCXN0cnVjdCBtdXRleCBs b2NrOwo+IC0KPiAtCWJvb2wgZmxpcDsKPiAtCXU4IG1vZGU7Cj4gLX07Cj4gKyNkZWZpbmUgRFBf REVGQVVMVF9SQVRFCQkxNjIwMDAKPiAgCj4gIHN0cnVjdCBwaHlfcmVnIHsKPiAgCXUxNiB2YWx1 ZTsKPiBAQCAtNDE3LDE1ICszODIsMTUgQEAgc3RydWN0IHBoeV9yZWcgdXNiM19wbGxfY2ZnW10g PSB7Cj4gIAl7IDB4OCwJCUNNTl9ESUFHX1BMTDBfTEZfUFJPRyB9LAo+ICB9Owo+ICAKPiAtc3Ry dWN0IHBoeV9yZWcgZHBfcGxsX2NmZ1tdID0gewo+ICtzdHJ1Y3QgcGh5X3JlZyBkcF9wbGxfcmJy X2NmZ1tdID0gewo+ICAJeyAweGYwLAkJQ01OX1BMTDFfVkNPQ0FMX0lOSVQgfSwKPiAgCXsgMHgx OCwJCUNNTl9QTEwxX1ZDT0NBTF9JVEVSIH0sCj4gIAl7IDB4MzBiOSwJQ01OX1BMTDFfVkNPQ0FM X1NUQVJUIH0sCj4gLQl7IDB4MjFjLAlDTU5fUExMMV9JTlRESVYgfSwKPiArCXsgMHg4NywJCUNN Tl9QTEwxX0lOVERJViB9LAo+ICAJeyAwLAkJQ01OX1BMTDFfRlJBQ0RJViB9LAo+IC0JeyAweDUs CQlDTU5fUExMMV9ISUdIX1RIUiB9LAo+IC0JeyAweDM1LAkJQ01OX1BMTDFfU1NfQ1RSTDEgfSwK PiAtCXsgMHg3ZjFlLAlDTU5fUExMMV9TU19DVFJMMiB9LAo+ICsJeyAweDIyLAkJQ01OX1BMTDFf SElHSF9USFIgfSwKPiArCXsgMHg4MDAwLAlDTU5fUExMMV9TU19DVFJMMSB9LAo+ICsJeyAwLAkJ Q01OX1BMTDFfU1NfQ1RSTDIgfSwKPiAgCXsgMHgyMCwJCUNNTl9QTEwxX0RTTV9ESUFHIH0sCj4g IAl7IDAsCQlDTU5fUExMU00xX1VTRVJfREVGX0NUUkwgfSwKPiAgCXsgMCwJCUNNTl9ESUFHX1BM TDFfT1ZSRCB9LAo+IEBAIC00MzYsOSArNDAxLDUyIEBAIHN0cnVjdCBwaHlfcmVnIGRwX3BsbF9j ZmdbXSA9IHsKPiAgCXsgMHg4LAkJQ01OX0RJQUdfUExMMV9MRl9QUk9HIH0sCj4gIAl7IDB4MTAw LAlDTU5fRElBR19QTEwxX1BUQVRJU19UVU5FMSB9LAo+ICAJeyAweDcsCQlDTU5fRElBR19QTEwx X1BUQVRJU19UVU5FMiB9LAo+IC0JeyAweDQsCQlDTU5fRElBR19QTEwxX0lOQ0xLX0NUUkwgfSwK PiArCXsgMHgxLAkJQ01OX0RJQUdfUExMMV9JTkNMS19DVFJMIH0sCj4gK307Cj4gKwo+ICtzdHJ1 Y3QgcGh5X3JlZyBkcF9wbGxfaGJyX2NmZ1tdID0gewo+ICsJeyAweGYwLAkJQ01OX1BMTDFfVkNP Q0FMX0lOSVQgfSwKPiArCXsgMHgxOCwJCUNNTl9QTEwxX1ZDT0NBTF9JVEVSIH0sCj4gKwl7IDB4 MzBiNCwJQ01OX1BMTDFfVkNPQ0FMX1NUQVJUIH0sCj4gKwl7IDB4ZTEsCQlDTU5fUExMMV9JTlRE SVYgfSwKPiArCXsgMCwJCUNNTl9QTEwxX0ZSQUNESVYgfSwKPiArCXsgMHg1LAkJQ01OX1BMTDFf SElHSF9USFIgfSwKPiArCXsgMHg4MDAwLAlDTU5fUExMMV9TU19DVFJMMSB9LAo+ICsJeyAwLAkJ Q01OX1BMTDFfU1NfQ1RSTDIgfSwKPiArCXsgMHgyMCwJCUNNTl9QTEwxX0RTTV9ESUFHIH0sCj4g Kwl7IDB4MTAwMCwJQ01OX1BMTFNNMV9VU0VSX0RFRl9DVFJMIH0sCj4gKwl7IDAsCQlDTU5fRElB R19QTEwxX09WUkQgfSwKPiArCXsgMCwJCUNNTl9ESUFHX1BMTDFfRkJIX09WUkQgfSwKPiArCXsg MCwJCUNNTl9ESUFHX1BMTDFfRkJMX09WUkQgfSwKPiArCXsgMHg3LAkJQ01OX0RJQUdfUExMMV9W MklfVFVORSB9LAo+ICsJeyAweDQ1LAkJQ01OX0RJQUdfUExMMV9DUF9UVU5FIH0sCj4gKwl7IDB4 OCwJCUNNTl9ESUFHX1BMTDFfTEZfUFJPRyB9LAo+ICsJeyAweDEsCQlDTU5fRElBR19QTEwxX1BU QVRJU19UVU5FMSB9LAo+ICsJeyAweDEsCQlDTU5fRElBR19QTEwxX1BUQVRJU19UVU5FMiB9LAo+ ICsJeyAweDEsCQlDTU5fRElBR19QTEwxX0lOQ0xLX0NUUkwgfSwKPiAgfTsKPiAgCj4gK3N0cnVj dCBwaHlfcmVnIGRwX3BsbF9oYnIyX2NmZ1tdID0gewo+ICsJeyAweGYwLAkJQ01OX1BMTDFfVkNP Q0FMX0lOSVQgfSwKPiArCXsgMHgxOCwJCUNNTl9QTEwxX1ZDT0NBTF9JVEVSIH0sCj4gKwl7IDB4 MzBiNCwJQ01OX1BMTDFfVkNPQ0FMX1NUQVJUIH0sCj4gKwl7IDB4ZTEsCQlDTU5fUExMMV9JTlRE SVYgfSwKPiArCXsgMCwJCUNNTl9QTEwxX0ZSQUNESVYgfSwKPiArCXsgMHg1LAkJQ01OX1BMTDFf SElHSF9USFIgfSwKPiArCXsgMHg4MDAwLAlDTU5fUExMMV9TU19DVFJMMSB9LAo+ICsJeyAwLAkJ Q01OX1BMTDFfU1NfQ1RSTDIgfSwKPiArCXsgMHgyMCwJCUNNTl9QTEwxX0RTTV9ESUFHIH0sCj4g Kwl7IDB4MTAwMCwJQ01OX1BMTFNNMV9VU0VSX0RFRl9DVFJMIH0sCj4gKwl7IDAsCQlDTU5fRElB R19QTEwxX09WUkQgfSwKPiArCXsgMCwJCUNNTl9ESUFHX1BMTDFfRkJIX09WUkQgfSwKPiArCXsg MCwJCUNNTl9ESUFHX1BMTDFfRkJMX09WUkQgfSwKPiArCXsgMHg3LAkJQ01OX0RJQUdfUExMMV9W MklfVFVORSB9LAo+ICsJeyAweDQ1LAkJQ01OX0RJQUdfUExMMV9DUF9UVU5FIH0sCj4gKwl7IDB4 OCwJCUNNTl9ESUFHX1BMTDFfTEZfUFJPRyB9LAo+ICsJeyAweDEsCQlDTU5fRElBR19QTEwxX1BU QVRJU19UVU5FMSB9LAo+ICsJeyAweDEsCQlDTU5fRElBR19QTEwxX1BUQVRJU19UVU5FMiB9LAo+ ICsJeyAweDEsCQlDTU5fRElBR19QTEwxX0lOQ0xLX0NUUkwgfSwKPiArfTsKPiAgc3RhdGljIGNv bnN0IHN0cnVjdCByb2NrY2hpcF91c2IzcGh5X3BvcnRfY2ZnIHJrMzM5OV91c2IzcGh5X3BvcnRf Y2Znc1tdID0gewo+ICAJewo+ICAJCS5yZWcgPSAweGZmN2MwMDAwLAo+IEBAIC00NjMsNiArNDcx LDI0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgcm9ja2NoaXBfdXNiM3BoeV9wb3J0X2NmZyByazMz OTlfdXNiM3BoeV9wb3J0X2NmZ3NbXSA9IHsKPiAgCXsgLyogc2VudGluZWwgKi8gfQo+ICB9Owo+ ICAKPiArLyogZGVmYXVsdCBwaHkgY29uZmlnICovCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5 X2NvbmZpZyB0Y3BoeV9kZWZhdWx0X2NvbmZpZ1szXVs0XSA9IHsKPiArCXt7IC5zd2luZyA9IDB4 MmEsIC5wZSA9IDB4MDAgfSwKPiArCSB7IC5zd2luZyA9IDB4MWYsIC5wZSA9IDB4MTUgfSwKPiAr CSB7IC5zd2luZyA9IDB4MTQsIC5wZSA9IDB4MjIgfSwKPiArCSB7IC5zd2luZyA9IDB4MDIsIC5w ZSA9IDB4MmIgfSB9LAo+ICsKPiArCXt7IC5zd2luZyA9IDB4MjEsIC5wZSA9IDB4MDAgfSwKPiAr CSB7IC5zd2luZyA9IDB4MTIsIC5wZSA9IDB4MTUgfSwKPiArCSB7IC5zd2luZyA9IDB4MDIsIC5w ZSA9IDB4MjIgfSwKPiArCSB7IC5zd2luZyA9IDAsICAgIC5wZSA9IDAgfSB9LAo+ICsKPiArCXt7 IC5zd2luZyA9IDB4MTUsIC5wZSA9IDB4MDAgfSwKPiArCSB7IC5zd2luZyA9IDB4MDAsIC5wZSA9 IDB4MTUgfSwKPiArCSB7IC5zd2luZyA9IDAsICAgIC5wZSA9IDAgfSwKPiArCSB7IC5zd2luZyA9 IDAsICAgIC5wZSA9IDAgfSB9LAo+ICt9Owo+ICsKPiAgc3RhdGljIHZvaWQgdGNwaHlfY2ZnXzI0 bShzdHJ1Y3Qgcm9ja2NoaXBfdHlwZWNfcGh5ICp0Y3BoeSkKPiAgewo+ICAJdTMyIGksIHJkYXRh Owo+IEBAIC00ODQsNyArNTEwLDcgQEAgc3RhdGljIHZvaWQgdGNwaHlfY2ZnXzI0bShzdHJ1Y3Qg cm9ja2NoaXBfdHlwZWNfcGh5ICp0Y3BoeSkKPiAgCj4gIAlyZGF0YSA9IHJlYWRsKHRjcGh5LT5i YXNlICsgQ01OX0RJQUdfSFNDTEtfU0VMKTsKPiAgCXJkYXRhICY9IH5DTEtfUExMX01BU0s7Cj4g LQlyZGF0YSB8PSBDTEtfUExMX0NPTkZJRzsKPiArCXJkYXRhIHw9IENMS19QTEwxX0RJVjI7Cj4g IAl3cml0ZWwocmRhdGEsIHRjcGh5LT5iYXNlICsgQ01OX0RJQUdfSFNDTEtfU0VMKTsKPiAgfQo+ ICAKPiBAQCAtNDk4LDE3ICs1MjQsNDQgQEAgc3RhdGljIHZvaWQgdGNwaHlfY2ZnX3VzYjNfcGxs KHN0cnVjdCByb2NrY2hpcF90eXBlY19waHkgKnRjcGh5KQo+ICAJCSAgICAgICB0Y3BoeS0+YmFz ZSArIHVzYjNfcGxsX2NmZ1tpXS5hZGRyKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgdGNwaHlf Y2ZnX2RwX3BsbChzdHJ1Y3Qgcm9ja2NoaXBfdHlwZWNfcGh5ICp0Y3BoeSkKPiArc3RhdGljIHZv aWQgdGNwaHlfY2ZnX2RwX3BsbChzdHJ1Y3Qgcm9ja2NoaXBfdHlwZWNfcGh5ICp0Y3BoeSwgaW50 IGxpbmtfcmF0ZSkKPiAgewo+IC0JdTMyIGk7Cj4gKwlzdHJ1Y3QgcGh5X3JlZyAqcGh5X2NmZzsK PiArCXUzMiBjbGtfY3RybDsKPiArCXUzMiBpLCBjZmdfc2l6ZSwgaHNjbGtfc2VsOwo+ICsKPiAr CWhzY2xrX3NlbCA9IHJlYWRsKHRjcGh5LT5iYXNlICsgQ01OX0RJQUdfSFNDTEtfU0VMKTsKPiAr CWhzY2xrX3NlbCAmPSB+Q0xLX1BMTF9NQVNLOwo+ICsKPiArCXN3aXRjaCAobGlua19yYXRlKSB7 Cj4gKwljYXNlIDE2MjAwMDoKPiArCQljbGtfY3RybCA9IERQX1BMTF9EQVRBX1JBVEVfUkJSOwo+ ICsJCWhzY2xrX3NlbCB8PSBDTEtfUExMMV9ESVYyOwo+ICsJCXBoeV9jZmcgPSBkcF9wbGxfcmJy X2NmZzsKPiArCQljZmdfc2l6ZSA9IEFSUkFZX1NJWkUoZHBfcGxsX3Jicl9jZmcpOwo+ICsJCWJy ZWFrOwo+ICsJY2FzZSAyNzAwMDA6Cj4gKwkJY2xrX2N0cmwgPSBEUF9QTExfREFUQV9SQVRFX0hC UjsKPiArCQloc2Nsa19zZWwgfD0gQ0xLX1BMTDFfRElWMjsKPiArCQlwaHlfY2ZnID0gZHBfcGxs X2hicl9jZmc7Cj4gKwkJY2ZnX3NpemUgPSBBUlJBWV9TSVpFKGRwX3BsbF9oYnJfY2ZnKTsKPiAr CQlicmVhazsKPiArCWNhc2UgNTQwMDAwOgo+ICsJCWNsa19jdHJsID0gRFBfUExMX0RBVEFfUkFU RV9IQlIyOwo+ICsJCWhzY2xrX3NlbCB8PSBDTEtfUExMMV9ESVYxOwo+ICsJCXBoeV9jZmcgPSBk cF9wbGxfaGJyMl9jZmc7Cj4gKwkJY2ZnX3NpemUgPSBBUlJBWV9TSVpFKGRwX3BsbF9oYnIyX2Nm Zyk7Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gKwo+ICsJY2xrX2N0cmwgfD0gRFBfUExMX0NMT0NLX0VO QUJMRSB8IERQX1BMTF9FTkFCTEU7Cj4gKwl3cml0ZWwoY2xrX2N0cmwsIHRjcGh5LT5iYXNlICsg RFBfQ0xLX0NUTCk7Cj4gIAo+IC0JLyogc2V0IHRoZSBkZWZhdWx0IG1vZGUgdG8gUkJSICovCj4g LQl3cml0ZWwoRFBfUExMX0NMT0NLX0VOQUJMRSB8IERQX1BMTF9FTkFCTEUgfCBEUF9QTExfREFU QV9SQVRFX1JCUiwKPiAtCSAgICAgICB0Y3BoeS0+YmFzZSArIERQX0NMS19DVEwpOwo+ICsJd3Jp dGVsKGhzY2xrX3NlbCwgdGNwaHktPmJhc2UgKyBDTU5fRElBR19IU0NMS19TRUwpOwo+ICAKPiAg CS8qIGxvYWQgdGhlIGNvbmZpZ3VyYXRpb24gb2YgUExMMSAqLwo+IC0JZm9yIChpID0gMDsgaSA8 IEFSUkFZX1NJWkUoZHBfcGxsX2NmZyk7IGkrKykKPiAtCQl3cml0ZWwoZHBfcGxsX2NmZ1tpXS52 YWx1ZSwgdGNwaHktPmJhc2UgKyBkcF9wbGxfY2ZnW2ldLmFkZHIpOwo+ICsJZm9yIChpID0gMDsg aSA8IGNmZ19zaXplOyBpKyspCj4gKwkJd3JpdGVsKHBoeV9jZmdbaV0udmFsdWUsIHRjcGh5LT5i YXNlICsgcGh5X2NmZ1tpXS5hZGRyKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgdGNwaHlfdHhf dXNiM19jZmdfbGFuZShzdHJ1Y3Qgcm9ja2NoaXBfdHlwZWNfcGh5ICp0Y3BoeSwgdTMyIGxhbmUp Cj4gQEAgLTUzNSw5ICs1ODgsMTAgQEAgc3RhdGljIHZvaWQgdGNwaHlfcnhfdXNiM19jZmdfbGFu ZShzdHJ1Y3Qgcm9ja2NoaXBfdHlwZWNfcGh5ICp0Y3BoeSwgdTMyIGxhbmUpCj4gIAl3cml0ZWwo MHhmYiwgdGNwaHktPmJhc2UgKyBYQ1ZSX0RJQUdfQklESV9DVFJMKGxhbmUpKTsKPiAgfQo+ICAK PiAtc3RhdGljIHZvaWQgdGNwaHlfZHBfY2ZnX2xhbmUoc3RydWN0IHJvY2tjaGlwX3R5cGVjX3Bo eSAqdGNwaHksIHUzMiBsYW5lKQo+ICtzdGF0aWMgdm9pZCB0Y3BoeV9kcF9jZmdfbGFuZShzdHJ1 Y3Qgcm9ja2NoaXBfdHlwZWNfcGh5ICp0Y3BoeSwgaW50IGxpbmtfcmF0ZSwKPiArCQkJICAgICAg dTggc3dpbmcsIHU4IHByZV9lbXAsIHUzMiBsYW5lKQo+ICB7Cj4gLQl1MTYgcmRhdGE7Cj4gKwl1 MTYgdmFsOwo+ICAKPiAgCXdyaXRlbCgweGJlZmMsIHRjcGh5LT5iYXNlICsgWENWUl9QU01fUkNU UkwobGFuZSkpOwo+ICAJd3JpdGVsKDB4Njc5OSwgdGNwaHktPmJhc2UgKyBUWF9QU0NfQTAobGFu ZSkpOwo+IEBAIC01NDUsMjUgKzU5OSwzMSBAQCBzdGF0aWMgdm9pZCB0Y3BoeV9kcF9jZmdfbGFu ZShzdHJ1Y3Qgcm9ja2NoaXBfdHlwZWNfcGh5ICp0Y3BoeSwgdTMyIGxhbmUpCj4gIAl3cml0ZWwo MHg5OCwgdGNwaHktPmJhc2UgKyBUWF9QU0NfQTIobGFuZSkpOwo+ICAJd3JpdGVsKDB4OTgsIHRj cGh5LT5iYXNlICsgVFhfUFNDX0EzKGxhbmUpKTsKPiAgCj4gLQl3cml0ZWwoMCwgdGNwaHktPmJh c2UgKyBUWF9UWENDX01HTkZTX01VTFRfMDAwKGxhbmUpKTsKPiAtCXdyaXRlbCgwLCB0Y3BoeS0+ YmFzZSArIFRYX1RYQ0NfTUdORlNfTVVMVF8wMDEobGFuZSkpOwo+IC0Jd3JpdGVsKDAsIHRjcGh5 LT5iYXNlICsgVFhfVFhDQ19NR05GU19NVUxUXzAxMChsYW5lKSk7Cj4gLQl3cml0ZWwoMCwgdGNw aHktPmJhc2UgKyBUWF9UWENDX01HTkZTX01VTFRfMDExKGxhbmUpKTsKPiAtCXdyaXRlbCgwLCB0 Y3BoeS0+YmFzZSArIFRYX1RYQ0NfTUdORlNfTVVMVF8xMDAobGFuZSkpOwo+IC0Jd3JpdGVsKDAs IHRjcGh5LT5iYXNlICsgVFhfVFhDQ19NR05GU19NVUxUXzEwMShsYW5lKSk7Cj4gLQl3cml0ZWwo MCwgdGNwaHktPmJhc2UgKyBUWF9UWENDX01HTkZTX01VTFRfMTEwKGxhbmUpKTsKPiAtCXdyaXRl bCgwLCB0Y3BoeS0+YmFzZSArIFRYX1RYQ0NfTUdORlNfTVVMVF8xMTEobGFuZSkpOwo+IC0Jd3Jp dGVsKDAsIHRjcGh5LT5iYXNlICsgVFhfVFhDQ19DUE9TVF9NVUxUXzEwKGxhbmUpKTsKPiAtCXdy aXRlbCgwLCB0Y3BoeS0+YmFzZSArIFRYX1RYQ0NfQ1BPU1RfTVVMVF8wMShsYW5lKSk7Cj4gLQl3 cml0ZWwoMCwgdGNwaHktPmJhc2UgKyBUWF9UWENDX0NQT1NUX01VTFRfMDAobGFuZSkpOwo+IC0J d3JpdGVsKDAsIHRjcGh5LT5iYXNlICsgVFhfVFhDQ19DUE9TVF9NVUxUXzExKGxhbmUpKTsKPiAt Cj4gLQl3cml0ZWwoMHgxMjgsIHRjcGh5LT5iYXNlICsgVFhfVFhDQ19DQUxfU0NMUl9NVUxUKGxh bmUpKTsKPiAtCXdyaXRlbCgweDQwMCwgdGNwaHktPmJhc2UgKyBUWF9ESUFHX1RYX0RSVihsYW5l KSk7Cj4gLQo+IC0JcmRhdGEgPSByZWFkbCh0Y3BoeS0+YmFzZSArIFhDVlJfRElBR19QTExEUkNf Q1RSTChsYW5lKSk7Cj4gLQlyZGF0YSA9IChyZGF0YSAmIDB4OGZmZikgfCAweDYwMDA7Cj4gLQl3 cml0ZWwocmRhdGEsIHRjcGh5LT5iYXNlICsgWENWUl9ESUFHX1BMTERSQ19DVFJMKGxhbmUpKTsK PiArCXdyaXRlbCh0Y3BoeS0+Y29uZmlnW3N3aW5nXVtwcmVfZW1wXS5zd2luZywKPiArCSAgICAg ICB0Y3BoeS0+YmFzZSArIFRYX1RYQ0NfTUdORlNfTVVMVF8wMDAobGFuZSkpOwo+ICsJd3JpdGVs KHRjcGh5LT5jb25maWdbc3dpbmddW3ByZV9lbXBdLnBlLAo+ICsJICAgICAgIHRjcGh5LT5iYXNl ICsgVFhfVFhDQ19DUE9TVF9NVUxUXzAwKGxhbmUpKTsKPiArCj4gKwlpZiAoc3dpbmcgPT0gMiAm JiBwcmVfZW1wID09IDAgJiYgbGlua19yYXRlICE9IDU0MDAwMCkgewo+ICsJCXdyaXRlbCgweDcw MCwgdGNwaHktPmJhc2UgKyBUWF9ESUFHX1RYX0RSVihsYW5lKSk7Cj4gKwkJd3JpdGVsKDB4MTNj LCB0Y3BoeS0+YmFzZSArIFRYX1RYQ0NfQ0FMX1NDTFJfTVVMVChsYW5lKSk7Cj4gKwl9IGVsc2Ug ewo+ICsJCXdyaXRlbCgweDEyOCwgdGNwaHktPmJhc2UgKyBUWF9UWENDX0NBTF9TQ0xSX01VTFQo bGFuZSkpOwo+ICsJCXdyaXRlbCgweDA0MDAsIHRjcGh5LT5iYXNlICsgVFhfRElBR19UWF9EUlYo bGFuZSkpOwo+ICsJfQo+ICsKPiArCXZhbCA9IHJlYWRsKHRjcGh5LT5iYXNlICsgWENWUl9ESUFH X1BMTERSQ19DVFJMKGxhbmUpKTsKPiArCXZhbCA9IHZhbCAmIDB4OGZmZjsKPiArCXN3aXRjaCAo bGlua19yYXRlKSB7Cj4gKwljYXNlIDE2MjAwMDoKPiArCWNhc2UgMjcwMDAwOgo+ICsJCXZhbCB8 PSAoNiA8PCAxMik7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIDU0MDAwMDoKPiArCQl2YWwgfD0gKDQg PDwgMTIpOwo+ICsJCWJyZWFrOwo+ICsJfQo+ICsJd3JpdGVsKHZhbCwgdGNwaHktPmJhc2UgKyBY Q1ZSX0RJQUdfUExMRFJDX0NUUkwobGFuZSkpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW5saW5lIGlu dCBwcm9wZXJ0eV9lbmFibGUoc3RydWN0IHJvY2tjaGlwX3R5cGVjX3BoeSAqdGNwaHksCj4gQEAg LTc1NCwzMCArODE0LDMzIEBAIHN0YXRpYyBpbnQgdGNwaHlfcGh5X2luaXQoc3RydWN0IHJvY2tj aGlwX3R5cGVjX3BoeSAqdGNwaHksIHU4IG1vZGUpCj4gIAl0Y3BoeV9jZmdfMjRtKHRjcGh5KTsK PiAgCj4gIAlpZiAobW9kZSA9PSBNT0RFX0RGUF9EUCkgewo+IC0JCXRjcGh5X2NmZ19kcF9wbGwo dGNwaHkpOwo+ICsJCXRjcGh5X2NmZ19kcF9wbGwodGNwaHksIERQX0RFRkFVTFRfUkFURSk7Cj4g IAkJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykKPiAtCQkJdGNwaHlfZHBfY2ZnX2xhbmUodGNwaHks IGkpOwo+ICsJCQl0Y3BoeV9kcF9jZmdfbGFuZSh0Y3BoeSwgRFBfREVGQVVMVF9SQVRFLCAwLCAw LCBpKTsKPiAgCj4gIAkJd3JpdGVsKFBJTl9BU1NJR05fQ19FLCB0Y3BoeS0+YmFzZSArIFBNQV9M QU5FX0NGRyk7Cj4gIAl9IGVsc2Ugewo+ICAJCXRjcGh5X2NmZ191c2IzX3BsbCh0Y3BoeSk7Cj4g LQkJdGNwaHlfY2ZnX2RwX3BsbCh0Y3BoeSk7Cj4gKwkJdGNwaHlfY2ZnX2RwX3BsbCh0Y3BoeSwg RFBfREVGQVVMVF9SQVRFKTsKPiAgCQlpZiAodGNwaHktPmZsaXApIHsKPiAgCQkJdGNwaHlfdHhf dXNiM19jZmdfbGFuZSh0Y3BoeSwgMyk7Cj4gIAkJCXRjcGh5X3J4X3VzYjNfY2ZnX2xhbmUodGNw aHksIDIpOwo+IC0JCQl0Y3BoeV9kcF9jZmdfbGFuZSh0Y3BoeSwgMCk7Cj4gLQkJCXRjcGh5X2Rw X2NmZ19sYW5lKHRjcGh5LCAxKTsKPiArCQkJdGNwaHlfZHBfY2ZnX2xhbmUodGNwaHksIERQX0RF RkFVTFRfUkFURSwgMCwgMCwgMCk7Cj4gKwkJCXRjcGh5X2RwX2NmZ19sYW5lKHRjcGh5LCBEUF9E RUZBVUxUX1JBVEUsIDAsIDAsIDEpOwo+ICAJCX0gZWxzZSB7Cj4gIAkJCXRjcGh5X3R4X3VzYjNf Y2ZnX2xhbmUodGNwaHksIDApOwo+ICAJCQl0Y3BoeV9yeF91c2IzX2NmZ19sYW5lKHRjcGh5LCAx KTsKPiAtCQkJdGNwaHlfZHBfY2ZnX2xhbmUodGNwaHksIDIpOwo+IC0JCQl0Y3BoeV9kcF9jZmdf bGFuZSh0Y3BoeSwgMyk7Cj4gKwkJCXRjcGh5X2RwX2NmZ19sYW5lKHRjcGh5LCBEUF9ERUZBVUxU X1JBVEUsIDAsIDAsIDIpOwo+ICsJCQl0Y3BoeV9kcF9jZmdfbGFuZSh0Y3BoeSwgRFBfREVGQVVM VF9SQVRFLCAwLCAwLCAzKTsKPiAgCQl9Cj4gIAo+ICAJCXdyaXRlbChQSU5fQVNTSUdOX0RfRiwg dGNwaHktPmJhc2UgKyBQTUFfTEFORV9DRkcpOwo+ICAJfQo+ICAKPiAtCXdyaXRlbChEUF9NT0RF X0VOVEVSX0EyLCB0Y3BoeS0+YmFzZSArIERQX01PREVfQ1RMKTsKPiArCXZhbCA9IHJlYWRsKHRj cGh5LT5iYXNlICsgRFBfTU9ERV9DVEwpOwo+ICsJdmFsICY9IH5EUF9NT0RFX01BU0s7Cj4gKwl2 YWwgfD0gRFBfTU9ERV9FTlRFUl9BMiB8IERQX0xJTktfUkVTRVRfREVBU1NFUlRFRDsKPiArCXdy aXRlbCh2YWwsIHRjcGh5LT5iYXNlICsgRFBfTU9ERV9DVEwpOwo+ICAKPiAgCXJlc2V0X2NvbnRy b2xfZGVhc3NlcnQodGNwaHktPnVwaHlfcnN0KTsKPiAgCj4gQEAgLTk5MCw3ICsxMDUzLDcgQEAg c3RhdGljIGludCByb2NrY2hpcF9kcF9waHlfcG93ZXJfb24oc3RydWN0IHBoeSAqcGh5KQo+ICAJ cHJvcGVydHlfZW5hYmxlKHRjcGh5LCAmY2ZnLT51cGh5X2RwX3NlbCwgMSk7Cj4gIAo+ICAJcmV0 ID0gcmVhZHhfcG9sbF90aW1lb3V0KHJlYWRsLCB0Y3BoeS0+YmFzZSArIERQX01PREVfQ1RMLAo+ IC0JCQkJIHZhbCwgdmFsICYgRFBfTU9ERV9BMiwgMTAwMCwKPiArCQkJCSB2YWwsIHZhbCAmIERQ X01PREVfQTJfQUNLLCAxMDAwLAo+ICAJCQkJIFBIWV9NT0RFX1NFVF9USU1FT1VUKTsKPiAgCWlm IChyZXQgPCAwKSB7Cj4gIAkJZGV2X2Vycih0Y3BoeS0+ZGV2LCAiZmFpbGVkIHRvIHdhaXQgVENQ SFkgZW50ZXIgQTJcbiIpOwo+IEBAIC05OTksMTMgKzEwNjIsMTkgQEAgc3RhdGljIGludCByb2Nr Y2hpcF9kcF9waHlfcG93ZXJfb24oc3RydWN0IHBoeSAqcGh5KQo+ICAKPiAgCXRjcGh5X2RwX2F1 eF9jYWxpYnJhdGlvbih0Y3BoeSk7Cj4gIAo+IC0Jd3JpdGVsKERQX01PREVfRU5URVJfQTAsIHRj cGh5LT5iYXNlICsgRFBfTU9ERV9DVEwpOwo+ICsJLyogZW50ZXIgQTAgbW9kZSAqLwo+ICsJdmFs ID0gcmVhZGwodGNwaHktPmJhc2UgKyBEUF9NT0RFX0NUTCk7Cj4gKwl2YWwgJj0gfkRQX01PREVf TUFTSzsKPiArCXZhbCB8PSBEUF9NT0RFX0VOVEVSX0EwOwo+ICsJd3JpdGVsKHZhbCwgdGNwaHkt PmJhc2UgKyBEUF9NT0RFX0NUTCk7Cj4gIAo+ICAJcmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KHJl YWRsLCB0Y3BoeS0+YmFzZSArIERQX01PREVfQ1RMLAo+IC0JCQkJIHZhbCwgdmFsICYgRFBfTU9E RV9BMCwgMTAwMCwKPiArCQkJCSB2YWwsIHZhbCAmIERQX01PREVfQTBfQUNLLCAxMDAwLAo+ICAJ CQkJIFBIWV9NT0RFX1NFVF9USU1FT1VUKTsKPiAgCWlmIChyZXQgPCAwKSB7Cj4gLQkJd3JpdGVs KERQX01PREVfRU5URVJfQTIsIHRjcGh5LT5iYXNlICsgRFBfTU9ERV9DVEwpOwo+ICsJCXZhbCAm PSB+RFBfTU9ERV9NQVNLOwo+ICsJCXZhbCB8PSBEUF9NT0RFX0VOVEVSX0EyOwo+ICsJCXdyaXRl bCh2YWwsIHRjcGh5LT5iYXNlICsgRFBfTU9ERV9DVEwpOwo+ICAJCWRldl9lcnIodGNwaHktPmRl diwgImZhaWxlZCB0byB3YWl0IFRDUEhZIGVudGVyIEEwXG4iKTsKPiAgCQlnb3RvIHBvd2VyX29u X2ZpbmlzaDsKPiAgCX0KPiBAQCAtMTAyMyw2ICsxMDkyLDcgQEAgc3RhdGljIGludCByb2NrY2hp cF9kcF9waHlfcG93ZXJfb24oc3RydWN0IHBoeSAqcGh5KQo+ICBzdGF0aWMgaW50IHJvY2tjaGlw X2RwX3BoeV9wb3dlcl9vZmYoc3RydWN0IHBoeSAqcGh5KQo+ICB7Cj4gIAlzdHJ1Y3Qgcm9ja2No aXBfdHlwZWNfcGh5ICp0Y3BoeSA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOwo+ICsJdTMyIHZhbDsK PiAgCj4gIAltdXRleF9sb2NrKCZ0Y3BoeS0+bG9jayk7Cj4gIAo+IEBAIC0xMDMxLDcgKzExMDEs MTAgQEAgc3RhdGljIGludCByb2NrY2hpcF9kcF9waHlfcG93ZXJfb2ZmKHN0cnVjdCBwaHkgKnBo eSkKPiAgCj4gIAl0Y3BoeS0+bW9kZSAmPSB+TU9ERV9ERlBfRFA7Cj4gIAo+IC0Jd3JpdGVsKERQ X01PREVfRU5URVJfQTIsIHRjcGh5LT5iYXNlICsgRFBfTU9ERV9DVEwpOwo+ICsJdmFsID0gcmVh ZGwodGNwaHktPmJhc2UgKyBEUF9NT0RFX0NUTCk7Cj4gKwl2YWwgJj0gfkRQX01PREVfTUFTSzsK PiArCXZhbCB8PSBEUF9NT0RFX0VOVEVSX0EyOwo+ICsJd3JpdGVsKHZhbCwgdGNwaHktPmJhc2Ug KyBEUF9NT0RFX0NUTCk7Cj4gIAo+ICAJaWYgKHRjcGh5LT5tb2RlID09IE1PREVfRElTQ09OTkVD VCkKPiAgCQl0Y3BoeV9waHlfZGVpbml0KHRjcGh5KTsKPiBAQCAtMTA0Nyw5ICsxMTIwLDM1IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5X29wcyByb2NrY2hpcF9kcF9waHlfb3BzID0gewo+ICAJ Lm93bmVyCQk9IFRISVNfTU9EVUxFLAo+ICB9Owo+ICAKPiArc3RhdGljIGludCB0eXBlY19kcF9w aHlfY29uZmlnKHN0cnVjdCBwaHkgKnBoeSwgaW50IGxpbmtfcmF0ZSwKPiArCQkJIGludCBsYW5l cywgdTggc3dpbmcsIHU4IHByZV9lbXApCj4gK3sKPiArCXN0cnVjdCByb2NrY2hpcF90eXBlY19w aHkgKnRjcGh5ID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7Cj4gKwl1OCBpOwo+ICsKPiArCXRjcGh5 X2NmZ19kcF9wbGwodGNwaHksIGxpbmtfcmF0ZSk7Cj4gKwo+ICsJaWYgKHRjcGh5LT5tb2RlID09 IE1PREVfREZQX0RQKSB7Cj4gKwkJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykKPiArCQkJdGNwaHlf ZHBfY2ZnX2xhbmUodGNwaHksIGxpbmtfcmF0ZSwgc3dpbmcsIHByZV9lbXAsIGkpOwo+ICsJfSBl bHNlIHsKPiArCQlpZiAodGNwaHktPmZsaXApIHsKPiArCQkJdGNwaHlfZHBfY2ZnX2xhbmUodGNw aHksIGxpbmtfcmF0ZSwgc3dpbmcsIHByZV9lbXAsIDApOwo+ICsJCQl0Y3BoeV9kcF9jZmdfbGFu ZSh0Y3BoeSwgbGlua19yYXRlLCBzd2luZywgcHJlX2VtcCwgMSk7Cj4gKwkJfSBlbHNlIHsKPiAr CQkJdGNwaHlfZHBfY2ZnX2xhbmUodGNwaHksIGxpbmtfcmF0ZSwgc3dpbmcsIHByZV9lbXAsIDIp Owo+ICsJCQl0Y3BoeV9kcF9jZmdfbGFuZSh0Y3BoeSwgbGlua19yYXRlLCBzd2luZywgcHJlX2Vt cCwgMyk7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICBzdGF0aWMg aW50IHRjcGh5X3BhcnNlX2R0KHN0cnVjdCByb2NrY2hpcF90eXBlY19waHkgKnRjcGh5LAo+ICAJ CQkgIHN0cnVjdCBkZXZpY2UgKmRldikKPiAgewo+ICsJaW50IHJldDsKPiArCj4gIAl0Y3BoeS0+ Z3JmX3JlZ3MgPSBzeXNjb25fcmVnbWFwX2xvb2t1cF9ieV9waGFuZGxlKGRldi0+b2Zfbm9kZSwK PiAgCQkJCQkJCSAgInJvY2tjaGlwLGdyZiIpOwo+ICAJaWYgKElTX0VSUih0Y3BoeS0+Z3JmX3Jl Z3MpKSB7Cj4gQEAgLTEwODcsNiArMTE4NiwxNiBAQCBzdGF0aWMgaW50IHRjcGh5X3BhcnNlX2R0 KHN0cnVjdCByb2NrY2hpcF90eXBlY19waHkgKnRjcGh5LAo+ICAJCXJldHVybiBQVFJfRVJSKHRj cGh5LT50Y3BoeV9yc3QpOwo+ICAJfQo+ICAKPiArCS8qCj4gKwkgKiBjaGVjayBpZiBwaHlfY29u ZmlnIHBhc3MgZnJvbSBkdHMsIGlmIG5vLAo+ICsJICogdXNlIGRlZmF1bHQgcGh5IGNvbmZpZyB2 YWx1ZS4KPiArCSAqLwo+ICsJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzJfYXJyYXkoZGV2LT5v Zl9ub2RlLCAicm9ja2NoaXAscGh5X2NvbmZpZyIsCj4gKwkJKHUzMiAqKXRjcGh5LT5jb25maWcs IHNpemVvZih0Y3BoeS0+Y29uZmlnKSAvIHNpemVvZih1MzIpKTsKPiArCWlmIChyZXQpCj4gKwkJ bWVtY3B5KHRjcGh5LT5jb25maWcsIHRjcGh5X2RlZmF1bHRfY29uZmlnLAo+ICsJCSAgICAgICBz aXplb2YodGNwaHktPmNvbmZpZykpOwo+ICsKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IEBAIC0x MTcxLDYgKzEyODAsNyBAQCBzdGF0aWMgaW50IHJvY2tjaGlwX3R5cGVjX3BoeV9wcm9iZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICAJCX0KPiAgCX0KPiAgCj4gKwl0Y3BoeS0+dHlw ZWNfcGh5X2NvbmZpZyA9IHR5cGVjX2RwX3BoeV9jb25maWc7Cj4gIAlwbV9ydW50aW1lX2VuYWJs ZShkZXYpOwo+ICAKPiAgCWZvcl9lYWNoX2F2YWlsYWJsZV9jaGlsZF9vZl9ub2RlKG5wLCBjaGls ZF9ucCkgewo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3NvYy9yb2NrY2hpcC9yb2NrY2hpcF9waHlf dHlwZWMuaCBiL2luY2x1ZGUvc29jL3JvY2tjaGlwL3JvY2tjaGlwX3BoeV90eXBlYy5oCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5iZTZhZjBlCj4gLS0tIC9kZXYvbnVs bAo+ICsrKyBiL2luY2x1ZGUvc29jL3JvY2tjaGlwL3JvY2tjaGlwX3BoeV90eXBlYy5oCj4gQEAg LTAsMCArMSw2MyBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwo+ ICsvKgo+ICsgKiBDb3B5cmlnaHQgKEMpIEZ1emhvdSBSb2NrY2hpcCBFbGVjdHJvbmljcyBDby5M dGQKPiArICogQXV0aG9yOiBMaW4gSHVhbmcgPGhsQHJvY2stY2hpcHMuY29tPgo+ICsgKi8KPiAr Cj4gKyNpZm5kZWYgX19TT0NfUk9DS0NISVBfUEhZX1RZUEVDX0gKPiArI2RlZmluZSBfX1NPQ19S T0NLQ0hJUF9QSFlfVFlQRUNfSAo+ICsKPiArc3RydWN0IHVzYjNwaHlfcmVnIHsKPiArCXUzMiBv ZmZzZXQ7Cj4gKwl1MzIgZW5hYmxlX2JpdDsKPiArCXUzMiB3cml0ZV9lbmFibGU7Cj4gK307Cj4g Kwo+ICsvKioKPiArICogc3RydWN0IHJvY2tjaGlwX3VzYjNwaHlfcG9ydF9jZmc6IHVzYjMtcGh5 IHBvcnQgY29uZmlndXJhdGlvbi4KPiArICogQHJlZzogdGhlIGJhc2UgYWRkcmVzcyBmb3IgdXNi My1waHkgY29uZmlnLgo+ICsgKiBAdHlwZWNfY29ubl9kaXI6IHRoZSByZWdpc3RlciBvZiB0eXBl LWMgY29ubmVjdG9yIGRpcmVjdGlvbi4KPiArICogQHVzYjN0b3VzYjJfZW46IHRoZSByZWdpc3Rl ciBvZiB0eXBlLWMgZm9yY2UgdXNiMiB0byB1c2IyIGVuYWJsZS4KPiArICogQGV4dGVybmFsX3Bz bTogdGhlIHJlZ2lzdGVyIG9mIHR5cGUtYyBwaHkgZXh0ZXJuYWwgcHNtIGNsb2NrLgo+ICsgKiBA cGlwZV9zdGF0dXM6IHRoZSByZWdpc3RlciBvZiB0eXBlLWMgcGh5IHBpcGUgc3RhdHVzLgo+ICsg KiBAdXNiM19ob3N0X2Rpc2FibGU6IHRoZSByZWdpc3RlciBvZiB0eXBlLWMgdXNiMyBob3N0IGRp c2FibGUuCj4gKyAqIEB1c2IzX2hvc3RfcG9ydDogdGhlIHJlZ2lzdGVyIG9mIHR5cGUtYyB1c2Iz IGhvc3QgcG9ydC4KPiArICogQHVwaHlfZHBfc2VsOiB0aGUgcmVnaXN0ZXIgb2YgdHlwZS1jIHBo eSBEUCBzZWxlY3QgY29udHJvbC4KPiArICovCj4gK3N0cnVjdCByb2NrY2hpcF91c2IzcGh5X3Bv cnRfY2ZnIHsKPiArCXVuc2lnbmVkIGludCByZWc7Cj4gKwlzdHJ1Y3QgdXNiM3BoeV9yZWcgdHlw ZWNfY29ubl9kaXI7Cj4gKwlzdHJ1Y3QgdXNiM3BoeV9yZWcgdXNiM3RvdXNiMl9lbjsKPiArCXN0 cnVjdCB1c2IzcGh5X3JlZyBleHRlcm5hbF9wc207Cj4gKwlzdHJ1Y3QgdXNiM3BoeV9yZWcgcGlw ZV9zdGF0dXM7Cj4gKwlzdHJ1Y3QgdXNiM3BoeV9yZWcgdXNiM19ob3N0X2Rpc2FibGU7Cj4gKwlz dHJ1Y3QgdXNiM3BoeV9yZWcgdXNiM19ob3N0X3BvcnQ7Cj4gKwlzdHJ1Y3QgdXNiM3BoeV9yZWcg dXBoeV9kcF9zZWw7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgcGh5X2NvbmZpZyB7Cj4gKwlpbnQgc3dp bmc7Cj4gKwlpbnQgcGU7Cj4gK307Cj4gKwo+ICtzdHJ1Y3Qgcm9ja2NoaXBfdHlwZWNfcGh5IHsK PiArCXN0cnVjdCBkZXZpY2UgKmRldjsKPiArCXZvaWQgX19pb21lbSAqYmFzZTsKPiArCXN0cnVj dCBleHRjb25fZGV2ICpleHRjb247Cj4gKwlzdHJ1Y3QgcmVnbWFwICpncmZfcmVnczsKPiArCXN0 cnVjdCBjbGsgKmNsa19jb3JlOwo+ICsJc3RydWN0IGNsayAqY2xrX3JlZjsKPiArCXN0cnVjdCBy ZXNldF9jb250cm9sICp1cGh5X3JzdDsKPiArCXN0cnVjdCByZXNldF9jb250cm9sICpwaXBlX3Jz dDsKPiArCXN0cnVjdCByZXNldF9jb250cm9sICp0Y3BoeV9yc3Q7Cj4gKwljb25zdCBzdHJ1Y3Qg cm9ja2NoaXBfdXNiM3BoeV9wb3J0X2NmZyAqcG9ydF9jZmdzOwo+ICsJLyogbXV0ZXggdG8gcHJv dGVjdCBhY2Nlc3MgdG8gaW5kaXZpZHVhbCBQSFlzICovCj4gKwlzdHJ1Y3QgbXV0ZXggbG9jazsK PiArCXN0cnVjdCBwaHlfY29uZmlnIGNvbmZpZ1szXVs0XTsKPiArCWJvb2wgZmxpcDsKPiArCXU4 IG1vZGU7Cj4gKwlpbnQgKCp0eXBlY19waHlfY29uZmlnKShzdHJ1Y3QgcGh5ICpwaHksIGludCBs aW5rX3JhdGUsCj4gKwkJCQlpbnQgbGFuZXMsIHU4IHN3aW5nLCB1OCBwcmVfZW1wKTsKPiArfTsK PiArCj4gKyNlbmRpZgo+IAoKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVsCg==