From mboxrd@z Thu Jan 1 00:00:00 1970 From: Inki Dae Subject: Re: [PATCH v4 5/8] drm/exynos: dsi: generalize register setting and clock control Date: Tue, 07 Apr 2015 22:08:13 +0900 Message-ID: <5523D6BD.10900@samsung.com> References: <1428407858-25523-1-git-send-email-human.hwang@samsung.com> <1428407858-25523-6-git-send-email-human.hwang@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <1428407858-25523-6-git-send-email-human.hwang@samsung.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Hyungwon Hwang Cc: devicetree@vger.kernel.org, sw0312.kim@samsung.com, dh09.lee@samsung.com, cw00.choi@samsung.com, dri-devel@lists.freedesktop.org List-Id: devicetree@vger.kernel.org T24gMjAxNeuFhCAwNOyblCAwN+ydvCAyMDo1NywgSHl1bmd3b24gSHdhbmcgd3JvdGU6Cj4gVGhp cyBwYXRjaCBtYWtlcyB0aGUgZHJpdmVyIHVzZSBhcnJheXMgZm9yIGNsb2NrcywgcmVnaXN0ZXIg YWRkcmVzcywKPiBhbmQgdmFsdWVzLiBCeSBkb2luZyB0aGlzLCBpdCBiZWNvbWVzIGVhc2llciB0 byBhZGQgc3VwcG9ydCBmb3IgYW5vdGhlcgo+IFNvQy4KClRoaXMgcGF0Y2ggaW5jbHVkZXMgdGhy ZWUgdHlwZXMuIEZpcnN0IGlzIHRvIHVzZSBhbiBhcnJheSBmb3IgY2xvY2tzLApzZWNvbmQgaXMg dG8gdXNlIG1hY3JvLCBsYXN0IGlzIHRvIGdlbmVyYWxpemUgcmVnaXN0ZXIgc2V0dGluZy4KClNl cGFyYXRlIHRoZW0gaW50byB0aHJlZSBwYXRjaGVzLgoKVGhhbmtzLApJbmtpIERhZQoKPiAKPiBT aWduZWQtb2ZmLWJ5OiBIeXVuZ3dvbiBId2FuZyA8aHVtYW4uaHdhbmdAc2Ftc3VuZy5jb20+Cj4g LS0tCj4gQ2hhbmdlcyBmb3IgdjM6Cj4gLSBTZXBhcmF0ZWQgZnJvbSB0aGUgcGF0Y2ggImRybS9l eHlub3M6IGRzaTogYWRkIHN1cHBvcnQgZm9yIEV4eW5vczU0MzMgU29DIgo+IGluIHZlcnNpb24g Mi4KPiAKPiBDaGFuZ2VzIGZvciB2NDoKPiAtIE5vbmUKPiAgZHJpdmVycy9ncHUvZHJtL2V4eW5v cy9leHlub3NfZHJtX2RzaS5jIHwgMzQ3ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t Cj4gIDEgZmlsZSBjaGFuZ2VkLCAyMTggaW5zZXJ0aW9ucygrKSwgMTI5IGRlbGV0aW9ucygtKQo+ IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHNpLmMg Yi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHNpLmMKPiBpbmRleCA0YWYxOGIy Zi4uMmQ5YTI0OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19k cm1fZHNpLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHNpLmMK PiBAQCAtMzMsMzggKzMzLDYgQEAKPiAgLyogcmV0dXJucyB0cnVlIGlmZiBib3RoIGFyZ3VtZW50 cyBsb2dpY2FsbHkgZGlmZmVycyAqLwo+ICAjZGVmaW5lIE5FUVYoYSwgYikgKCEoYSkgXiAhKGIp KQo+IAo+IC0jZGVmaW5lIERTSU1fU1RBVFVTX1JFRwkJMHgwCS8qIFN0YXR1cyByZWdpc3RlciAq Lwo+IC0jZGVmaW5lIERTSU1fU1dSU1RfUkVHCQkweDQJLyogU29mdHdhcmUgcmVzZXQgcmVnaXN0 ZXIgKi8KPiAtI2RlZmluZSBEU0lNX0NMS0NUUkxfUkVHCTB4OAkvKiBDbG9jayBjb250cm9sIHJl Z2lzdGVyICovCj4gLSNkZWZpbmUgRFNJTV9USU1FT1VUX1JFRwkweGMJLyogVGltZSBvdXQgcmVn aXN0ZXIgKi8KPiAtI2RlZmluZSBEU0lNX0NPTkZJR19SRUcJCTB4MTAJLyogQ29uZmlndXJhdGlv biByZWdpc3RlciAqLwo+IC0jZGVmaW5lIERTSU1fRVNDTU9ERV9SRUcJMHgxNAkvKiBFc2NhcGUg bW9kZSByZWdpc3RlciAqLwo+IC0KPiAtLyogTWFpbiBkaXNwbGF5IGltYWdlIHJlc29sdXRpb24g cmVnaXN0ZXIgKi8KPiAtI2RlZmluZSBEU0lNX01EUkVTT0xfUkVHCTB4MTgKPiAtI2RlZmluZSBE U0lNX01WUE9SQ0hfUkVHCTB4MWMJLyogTWFpbiBkaXNwbGF5IFZwb3JjaCByZWdpc3RlciAqLwo+ IC0jZGVmaW5lIERTSU1fTUhQT1JDSF9SRUcJMHgyMAkvKiBNYWluIGRpc3BsYXkgSHBvcmNoIHJl Z2lzdGVyICovCj4gLSNkZWZpbmUgRFNJTV9NU1lOQ19SRUcJCTB4MjQJLyogTWFpbiBkaXNwbGF5 IHN5bmMgYXJlYSByZWdpc3RlciAqLwo+IC0KPiAtLyogU3ViIGRpc3BsYXkgaW1hZ2UgcmVzb2x1 dGlvbiByZWdpc3RlciAqLwo+IC0jZGVmaW5lIERTSU1fU0RSRVNPTF9SRUcJMHgyOAo+IC0jZGVm aW5lIERTSU1fSU5UU1JDX1JFRwkJMHgyYwkvKiBJbnRlcnJ1cHQgc291cmNlIHJlZ2lzdGVyICov Cj4gLSNkZWZpbmUgRFNJTV9JTlRNU0tfUkVHCQkweDMwCS8qIEludGVycnVwdCBtYXNrIHJlZ2lz dGVyICovCj4gLSNkZWZpbmUgRFNJTV9QS1RIRFJfUkVHCQkweDM0CS8qIFBhY2tldCBIZWFkZXIg RklGTyByZWdpc3RlciAqLwo+IC0jZGVmaW5lIERTSU1fUEFZTE9BRF9SRUcJMHgzOAkvKiBQYXls b2FkIEZJRk8gcmVnaXN0ZXIgKi8KPiAtI2RlZmluZSBEU0lNX1JYRklGT19SRUcJCTB4M2MJLyog UmVhZCBGSUZPIHJlZ2lzdGVyICovCj4gLSNkZWZpbmUgRFNJTV9GSUZPVEhMRF9SRUcJMHg0MAkv KiBGSUZPIHRocmVzaG9sZCBsZXZlbCByZWdpc3RlciAqLwo+IC0jZGVmaW5lIERTSU1fRklGT0NU UkxfUkVHCTB4NDQJLyogRklGTyBzdGF0dXMgYW5kIGNvbnRyb2wgcmVnaXN0ZXIgKi8KPiAtCj4g LS8qIEZJRk8gbWVtb3J5IEFDIGNoYXJhY3RlcmlzdGljIHJlZ2lzdGVyICovCj4gLSNkZWZpbmUg RFNJTV9QTExDVFJMX1JFRwkweDRjCS8qIFBMTCBjb250cm9sIHJlZ2lzdGVyICovCj4gLSNkZWZp bmUgRFNJTV9QSFlBQ0NIUl9SRUcJMHg1NAkvKiBELVBIWSBBQyBjaGFyYWN0ZXJpc3RpYyByZWdp c3RlciAqLwo+IC0jZGVmaW5lIERTSU1fUEhZQUNDSFIxX1JFRwkweDU4CS8qIEQtUEhZIEFDIGNo YXJhY3RlcmlzdGljIHJlZ2lzdGVyMSAqLwo+IC0jZGVmaW5lIERTSU1fUEhZQ1RSTF9SRUcJMHg1 Ywo+IC0jZGVmaW5lIERTSU1fUEhZVElNSU5HX1JFRwkweDY0Cj4gLSNkZWZpbmUgRFNJTV9QSFlU SU1JTkcxX1JFRwkweDY4Cj4gLSNkZWZpbmUgRFNJTV9QSFlUSU1JTkcyX1JFRwkweDZjCj4gLQo+ ICAvKiBEU0lNX1NUQVRVUyAqLwo+ICAjZGVmaW5lIERTSU1fU1RPUF9TVEFURV9EQVQoeCkJCSgo KHgpICYgMHhmKSA8PCAwKQo+ICAjZGVmaW5lIERTSU1fU1RPUF9TVEFURV9DTEsJCSgxIDw8IDgp Cj4gQEAgLTEyOCw4ICs5Niw4IEBACj4gCj4gIC8qIERTSU1fTURSRVNPTCAqLwo+ICAjZGVmaW5l IERTSU1fTUFJTl9TVEFORF9CWQkJKDEgPDwgMzEpCj4gLSNkZWZpbmUgRFNJTV9NQUlOX1ZSRVNP TCh4KQkJKCgoeCkgJiAweDdmZikgPDwgMTYpCj4gLSNkZWZpbmUgRFNJTV9NQUlOX0hSRVNPTCh4 KQkJKCgoeCkgJiAwWDdmZikgPDwgMCkKPiArI2RlZmluZSBEU0lNX01BSU5fVlJFU09MKHgsIG51 bV9iaXRzKQkoKCh4KSAmICgoMSA8PCAobnVtX2JpdHMpKSAtIDEpKSA8PCAxNikKPiArI2RlZmlu ZSBEU0lNX01BSU5fSFJFU09MKHgsIG51bV9iaXRzKQkoKCh4KSAmICgoMSA8PCAobnVtX2JpdHMp KSAtIDEpKSA8PCAwKQo+IAo+ICAvKiBEU0lNX01WUE9SQ0ggKi8KPiAgI2RlZmluZSBEU0lNX0NN RF9BTExPVyh4KQkJKCh4KSA8PCAyOCkKPiBAQCAtMjM0LDYgKzIwMiwxMiBAQAo+ICAjZGVmaW5l IERTSV9YRkVSX1RJTUVPVVRfTVMJCTEwMAo+ICAjZGVmaW5lIERTSV9SWF9GSUZPX0VNUFRZCQkw eDMwODAwMDAyCj4gCj4gKyNkZWZpbmUgUkVHKGRzaSwgcmVnKQkoKGRzaSktPnJlZ19iYXNlICsg ZHNpLT5kcml2ZXJfZGF0YS0+cmVnc1socmVnKV0pCj4gKyNkZWZpbmUgRFNJX1dSSVRFKGRzaSwg cmVnLCB2YWwpCXdyaXRlbCgodmFsKSwgUkVHKChkc2kpLCAocmVnKSkpCj4gKyNkZWZpbmUgRFNJ X1JFQUQoZHNpLCByZWcpCQlyZWFkbChSRUcoKGRzaSksIChyZWcpKSkKPiArCj4gK3N0YXRpYyBj aGFyICpjbGtfbmFtZXNbMl0gPSB7ICJidXNfY2xrIiwgInNjbGtfbWlwaSIgfTsKPiArCj4gIGVu dW0gZXh5bm9zX2RzaV90cmFuc2Zlcl90eXBlIHsKPiAgCUVYWU5PU19EU0lfVFgsCj4gIAlFWFlO T1NfRFNJX1JYLAo+IEBAIC0yNjEsMTAgKzIzNSwxNSBAQCBzdHJ1Y3QgZXh5bm9zX2RzaV90cmFu c2ZlciB7Cj4gICNkZWZpbmUgRFNJTV9TVEFURV9DTURfTFBNCQlCSVQoMikKPiAKPiAgc3RydWN0 IGV4eW5vc19kc2lfZHJpdmVyX2RhdGEgewo+ICsJdW5zaWduZWQgaW50ICpyZWdzOwo+ICAJdW5z aWduZWQgaW50IHBsbHRtcl9yZWc7Cj4gLQo+ICAJdW5zaWduZWQgaW50IGhhc19mcmVxYmFuZDox Owo+ICAJdW5zaWduZWQgaW50IGhhc19jbGtsYW5lX3N0b3A6MTsKPiArCXVuc2lnbmVkIGludCBu dW1fY2xrczsKPiArCXVuc2lnbmVkIGludCBtYXhfZnJlcTsKPiArCXVuc2lnbmVkIGludCB3YWl0 X2Zvcl9yZXNldDsKPiArCXVuc2lnbmVkIGludCBudW1fYml0c19yZXNvbDsKPiArCXVuc2lnbmVk IGludCAqdmFsdWVzOwo+ICB9Owo+IAo+ICBzdHJ1Y3QgZXh5bm9zX2RzaSB7Cj4gQEAgLTI3Nyw4 ICsyNTYsNyBAQCBzdHJ1Y3QgZXh5bm9zX2RzaSB7Cj4gCj4gIAl2b2lkIF9faW9tZW0gKnJlZ19i YXNlOwo+ICAJc3RydWN0IHBoeSAqcGh5Owo+IC0Jc3RydWN0IGNsayAqc2Nsa19jbGs7Cj4gLQlz dHJ1Y3QgY2xrICpidXNfY2xrOwo+ICsJc3RydWN0IGNsayAqKmNsa3M7Cj4gIAlzdHJ1Y3QgcmVn dWxhdG9yX2J1bGtfZGF0YSBzdXBwbGllc1syXTsKPiAgCWludCBpcnE7Cj4gIAlpbnQgdGVfZ3Bp bzsKPiBAQCAtMzA5LDI1ICsyODcsMTMzIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGV4eW5vc19k c2kgKmRpc3BsYXlfdG9fZHNpKHN0cnVjdCBleHlub3NfZHJtX2Rpc3BsYXkgKmQpCj4gIAlyZXR1 cm4gY29udGFpbmVyX29mKGQsIHN0cnVjdCBleHlub3NfZHNpLCBkaXNwbGF5KTsKPiAgfQo+IAo+ ICtlbnVtIHJlZ3Mgewo+ICsJRFNJTV9TVEFUVVNfUkVHLAkvKiBTdGF0dXMgcmVnaXN0ZXIgKi8K PiArCURTSU1fU1dSU1RfUkVHLAkJLyogU29mdHdhcmUgcmVzZXQgcmVnaXN0ZXIgKi8KPiArCURT SU1fQ0xLQ1RSTF9SRUcsCS8qIENsb2NrIGNvbnRyb2wgcmVnaXN0ZXIgKi8KPiArCURTSU1fVElN RU9VVF9SRUcsCS8qIFRpbWUgb3V0IHJlZ2lzdGVyICovCj4gKwlEU0lNX0NPTkZJR19SRUcsCS8q IENvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgKi8KPiArCURTSU1fRVNDTU9ERV9SRUcsCS8qIEVzY2Fw ZSBtb2RlIHJlZ2lzdGVyICovCj4gKwlEU0lNX01EUkVTT0xfUkVHLAo+ICsJRFNJTV9NVlBPUkNI X1JFRywJLyogTWFpbiBkaXNwbGF5IFZwb3JjaCByZWdpc3RlciAqLwo+ICsJRFNJTV9NSFBPUkNI X1JFRywJLyogTWFpbiBkaXNwbGF5IEhwb3JjaCByZWdpc3RlciAqLwo+ICsJRFNJTV9NU1lOQ19S RUcsCQkvKiBNYWluIGRpc3BsYXkgc3luYyBhcmVhIHJlZ2lzdGVyICovCj4gKwlEU0lNX0lOVFNS Q19SRUcsCS8qIEludGVycnVwdCBzb3VyY2UgcmVnaXN0ZXIgKi8KPiArCURTSU1fSU5UTVNLX1JF RywJLyogSW50ZXJydXB0IG1hc2sgcmVnaXN0ZXIgKi8KPiArCURTSU1fUEtUSERSX1JFRywJLyog UGFja2V0IEhlYWRlciBGSUZPIHJlZ2lzdGVyICovCj4gKwlEU0lNX1BBWUxPQURfUkVHLAkvKiBQ YXlsb2FkIEZJRk8gcmVnaXN0ZXIgKi8KPiArCURTSU1fUlhGSUZPX1JFRywJLyogUmVhZCBGSUZP IHJlZ2lzdGVyICovCj4gKwlEU0lNX0ZJRk9DVFJMX1JFRywJLyogRklGTyBzdGF0dXMgYW5kIGNv bnRyb2wgcmVnaXN0ZXIgKi8KPiArCURTSU1fUExMQ1RSTF9SRUcsCS8qIFBMTCBjb250cm9sIHJl Z2lzdGVyICovCj4gKwlEU0lNX1BIWUNUUkxfUkVHLAo+ICsJRFNJTV9QSFlUSU1JTkdfUkVHLAo+ ICsJRFNJTV9QSFlUSU1JTkcxX1JFRywKPiArCURTSU1fUEhZVElNSU5HMl9SRUcsCj4gKwlOVU1f UkVHUwo+ICt9Owo+ICtzdGF0aWMgdW5zaWduZWQgaW50IHJlZ3NbXSA9IHsKPiArCVtEU0lNX1NU QVRVU19SRUddID0gIDB4MDAsCj4gKwlbRFNJTV9TV1JTVF9SRUddID0gIDB4MDQsCj4gKwlbRFNJ TV9DTEtDVFJMX1JFR10gPSAgMHgwOCwKPiArCVtEU0lNX1RJTUVPVVRfUkVHXSA9ICAweDBjLAo+ ICsJW0RTSU1fQ09ORklHX1JFR10gPSAgMHgxMCwKPiArCVtEU0lNX0VTQ01PREVfUkVHXSA9ICAw eDE0LAo+ICsJW0RTSU1fTURSRVNPTF9SRUddID0gIDB4MTgsCj4gKwlbRFNJTV9NVlBPUkNIX1JF R10gPSAgMHgxYywKPiArCVtEU0lNX01IUE9SQ0hfUkVHXSA9ICAweDIwLAo+ICsJW0RTSU1fTVNZ TkNfUkVHXSA9ICAweDI0LAo+ICsJW0RTSU1fSU5UU1JDX1JFR10gPSAgMHgyYywKPiArCVtEU0lN X0lOVE1TS19SRUddID0gIDB4MzAsCj4gKwlbRFNJTV9QS1RIRFJfUkVHXSA9ICAweDM0LAo+ICsJ W0RTSU1fUEFZTE9BRF9SRUddID0gIDB4MzgsCj4gKwlbRFNJTV9SWEZJRk9fUkVHXSA9ICAweDNj LAo+ICsJW0RTSU1fRklGT0NUUkxfUkVHXSA9ICAweDQ0LAo+ICsJW0RTSU1fUExMQ1RSTF9SRUdd ID0gIDB4NGMsCj4gKwlbRFNJTV9QSFlDVFJMX1JFR10gPSAgMHg1YywKPiArCVtEU0lNX1BIWVRJ TUlOR19SRUddID0gIDB4NjQsCj4gKwlbRFNJTV9QSFlUSU1JTkcxX1JFR10gPSAgMHg2OCwKPiAr CVtEU0lNX1BIWVRJTUlORzJfUkVHXSA9ICAweDZjLAo+ICt9Owo+ICsKPiArZW51bSB2YWx1ZXMg ewo+ICsJUkVTRVRfVFlQRSwKPiArCVBMTF9USU1FUiwKPiArCVNUT1BfU1RBVEVfQ05ULAo+ICsJ UEhZQ1RSTF9VTFBTX0VYSVQsCj4gKwlQSFlDVFJMX1ZSRUdfTFAsCj4gKwlQSFlDVFJMX1NMRVdf VVAsCj4gKwlQSFlUSU1JTkdfTFBYLAo+ICsJUEhZVElNSU5HX0hTX0VYSVQsCj4gKwlQSFlUSU1J TkdfQ0xLX1BSRVBBUkUsCj4gKwlQSFlUSU1JTkdfQ0xLX1pFUk8sCj4gKwlQSFlUSU1JTkdfQ0xL X1BPU1QsCj4gKwlQSFlUSU1JTkdfQ0xLX1RSQUlMLAo+ICsJUEhZVElNSU5HX0hTX1BSRVBBUkUs Cj4gKwlQSFlUSU1JTkdfSFNfWkVSTywKPiArCVBIWVRJTUlOR19IU19UUkFJTAo+ICt9Owo+ICsK PiArc3RhdGljIHVuc2lnbmVkIGludCB2YWx1ZXNbXSA9IHsKPiArCVtSRVNFVF9UWVBFXSA9IERT SU1fU1dSU1QsCj4gKwlbUExMX1RJTUVSXSA9IDUwMCwKPiArCVtTVE9QX1NUQVRFX0NOVF0gPSAw eGYsCj4gKwlbUEhZQ1RSTF9VTFBTX0VYSVRdID0gRFNJTV9QSFlDVFJMX1VMUFNfRVhJVCgweDBh ZiksCj4gKwlbUEhZQ1RSTF9WUkVHX0xQXSA9IDAsCj4gKwlbUEhZQ1RSTF9TTEVXX1VQXSA9IDAs Cj4gKwlbUEhZVElNSU5HX0xQWF0gPSBEU0lNX1BIWVRJTUlOR19MUFgoMHgwNiksCj4gKwlbUEhZ VElNSU5HX0hTX0VYSVRdID0gRFNJTV9QSFlUSU1JTkdfSFNfRVhJVCgweDBiKSwKPiArCVtQSFlU SU1JTkdfQ0xLX1BSRVBBUkVdID0gRFNJTV9QSFlUSU1JTkcxX0NMS19QUkVQQVJFKDB4MDcpLAo+ ICsJW1BIWVRJTUlOR19DTEtfWkVST10gPSBEU0lNX1BIWVRJTUlORzFfQ0xLX1pFUk8oMHgyNyks Cj4gKwlbUEhZVElNSU5HX0NMS19QT1NUXSA9IERTSU1fUEhZVElNSU5HMV9DTEtfUE9TVCgweDBk KSwKPiArCVtQSFlUSU1JTkdfQ0xLX1RSQUlMXSA9IERTSU1fUEhZVElNSU5HMV9DTEtfVFJBSUwo MHgwOCksCj4gKwlbUEhZVElNSU5HX0hTX1BSRVBBUkVdID0gRFNJTV9QSFlUSU1JTkcyX0hTX1BS RVBBUkUoMHgwOSksCj4gKwlbUEhZVElNSU5HX0hTX1pFUk9dID0gRFNJTV9QSFlUSU1JTkcyX0hT X1pFUk8oMHgwZCksCj4gKwlbUEhZVElNSU5HX0hTX1RSQUlMXSA9IERTSU1fUEhZVElNSU5HMl9I U19UUkFJTCgweDBiKSwKPiArfTsKPiArCj4gIHN0YXRpYyBzdHJ1Y3QgZXh5bm9zX2RzaV9kcml2 ZXJfZGF0YSBleHlub3MzX2RzaV9kcml2ZXJfZGF0YSA9IHsKPiArCS5yZWdzID0gcmVncywKPiAg CS5wbGx0bXJfcmVnID0gMHg1MCwKPiAgCS5oYXNfZnJlcWJhbmQgPSAxLAo+ICAJLmhhc19jbGts YW5lX3N0b3AgPSAxLAo+ICsJLm51bV9jbGtzID0gMiwKPiArCS5tYXhfZnJlcSA9IDEwMDAsCj4g Kwkud2FpdF9mb3JfcmVzZXQgPSAxLAo+ICsJLm51bV9iaXRzX3Jlc29sID0gMTEsCj4gKwkudmFs dWVzID0gdmFsdWVzLAo+ICB9Owo+IAo+ICBzdGF0aWMgc3RydWN0IGV4eW5vc19kc2lfZHJpdmVy X2RhdGEgZXh5bm9zNF9kc2lfZHJpdmVyX2RhdGEgPSB7Cj4gKwkucmVncyA9IHJlZ3MsCj4gIAku cGxsdG1yX3JlZyA9IDB4NTAsCj4gIAkuaGFzX2ZyZXFiYW5kID0gMSwKPiAgCS5oYXNfY2xrbGFu ZV9zdG9wID0gMSwKPiArCS5udW1fY2xrcyA9IDIsCj4gKwkubWF4X2ZyZXEgPSAxMDAwLAo+ICsJ LndhaXRfZm9yX3Jlc2V0ID0gMSwKPiArCS5udW1fYml0c19yZXNvbCA9IDExLAo+ICsJLnZhbHVl cyA9IHZhbHVlcywKPiAgfTsKPiAKPiAgc3RhdGljIHN0cnVjdCBleHlub3NfZHNpX2RyaXZlcl9k YXRhIGV4eW5vczQ0MTVfZHNpX2RyaXZlcl9kYXRhID0gewo+ICsJLnJlZ3MgPSByZWdzLAo+ICAJ LnBsbHRtcl9yZWcgPSAweDU4LAo+ICAJLmhhc19jbGtsYW5lX3N0b3AgPSAxLAo+ICsJLm51bV9j bGtzID0gMiwKPiArCS5tYXhfZnJlcSA9IDEwMDAsCj4gKwkud2FpdF9mb3JfcmVzZXQgPSAxLAo+ ICsJLm51bV9iaXRzX3Jlc29sID0gMTEsCj4gKwkudmFsdWVzID0gdmFsdWVzLAo+ICB9Owo+IAo+ ICBzdGF0aWMgc3RydWN0IGV4eW5vc19kc2lfZHJpdmVyX2RhdGEgZXh5bm9zNV9kc2lfZHJpdmVy X2RhdGEgPSB7Cj4gKwkucmVncyA9IHJlZ3MsCj4gIAkucGxsdG1yX3JlZyA9IDB4NTgsCj4gKwku bnVtX2Nsa3MgPSAyLAo+ICsJLm1heF9mcmVxID0gMTAwMCwKPiArCS53YWl0X2Zvcl9yZXNldCA9 IDEsCj4gKwkubnVtX2JpdHNfcmVzb2wgPSAxMSwKPiArCS52YWx1ZXMgPSB2YWx1ZXMsCj4gIH07 Cj4gCj4gIHN0YXRpYyBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGV4eW5vc19kc2lfb2ZfbWF0Y2hbXSA9 IHsKPiBAQCAtMzYxLDggKzQ0NywxMCBAQCBzdGF0aWMgdm9pZCBleHlub3NfZHNpX3dhaXRfZm9y X3Jlc2V0KHN0cnVjdCBleHlub3NfZHNpICpkc2kpCj4gCj4gIHN0YXRpYyB2b2lkIGV4eW5vc19k c2lfcmVzZXQoc3RydWN0IGV4eW5vc19kc2kgKmRzaSkKPiAgewo+ICsJc3RydWN0IGV4eW5vc19k c2lfZHJpdmVyX2RhdGEgKmRyaXZlcl9kYXRhID0gZHNpLT5kcml2ZXJfZGF0YTsKPiArCj4gIAly ZWluaXRfY29tcGxldGlvbigmZHNpLT5jb21wbGV0ZWQpOwo+IC0Jd3JpdGVsKERTSU1fU1dSU1Qs IGRzaS0+cmVnX2Jhc2UgKyBEU0lNX1NXUlNUX1JFRyk7Cj4gKwlEU0lfV1JJVEUoZHNpLCBEU0lN X1NXUlNUX1JFRywgZHJpdmVyX2RhdGEtPnZhbHVlc1tSRVNFVF9UWVBFXSk7Cj4gIH0KPiAKPiAg I2lmbmRlZiBNSFoKPiBAQCAtMzcyLDYgKzQ2MCw3IEBAIHN0YXRpYyB2b2lkIGV4eW5vc19kc2lf cmVzZXQoc3RydWN0IGV4eW5vc19kc2kgKmRzaSkKPiAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZXh5 bm9zX2RzaV9wbGxfZmluZF9wbXMoc3RydWN0IGV4eW5vc19kc2kgKmRzaSwKPiAgCQl1bnNpZ25l ZCBsb25nIGZpbiwgdW5zaWduZWQgbG9uZyBmb3V0LCB1OCAqcCwgdTE2ICptLCB1OCAqcykKPiAg ewo+ICsJc3RydWN0IGV4eW5vc19kc2lfZHJpdmVyX2RhdGEgKmRyaXZlcl9kYXRhID0gZHNpLT5k cml2ZXJfZGF0YTsKPiAgCXVuc2lnbmVkIGxvbmcgYmVzdF9mcmVxID0gMDsKPiAgCXUzMiBtaW5f ZGVsdGEgPSAweGZmZmZmZmZmOwo+ICAJdTggcF9taW4sIHBfbWF4Owo+IEBAIC0zOTUsNyArNDg0 LDggQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZXh5bm9zX2RzaV9wbGxfZmluZF9wbXMoc3RydWN0 IGV4eW5vc19kc2kgKmRzaSwKPiAKPiAgCQkJdG1wID0gKHU2NClfbSAqIGZpbjsKPiAgCQkJZG9f ZGl2KHRtcCwgX3ApOwo+IC0JCQlpZiAodG1wIDwgNTAwICogTUhaIHx8IHRtcCA+IDEwMDAgKiBN SFopCj4gKwkJCWlmICh0bXAgPCA1MDAgKiBNSFogfHwKPiArCQkJCQl0bXAgPiBkcml2ZXJfZGF0 YS0+bWF4X2ZyZXEgKiBNSFopCj4gIAkJCQljb250aW51ZTsKPiAKPiAgCQkJdG1wID0gKHU2NClf bSAqIGZpbjsKPiBAQCAtNDQwLDcgKzUzMCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGV4eW5v c19kc2lfc2V0X3BsbChzdHJ1Y3QgZXh5bm9zX2RzaSAqZHNpLAo+ICAJfQo+ICAJZGV2X2RiZyhk c2ktPmRldiwgIlBMTCBmcmVxICVsdSwgKHAgJWQsIG0gJWQsIHMgJWQpXG4iLCBmb3V0LCBwLCBt LCBzKTsKPiAKPiAtCXdyaXRlbCg1MDAsIGRzaS0+cmVnX2Jhc2UgKyBkcml2ZXJfZGF0YS0+cGxs dG1yX3JlZyk7Cj4gKwlEU0lfV1JJVEUoZHNpLCBkcml2ZXJfZGF0YS0+cGxsdG1yX3JlZywgZHJp dmVyX2RhdGEtPnZhbHVlc1tQTExfVElNRVJdKTsKPiAKPiAgCXJlZyA9IERTSU1fUExMX0VOIHwg RFNJTV9QTExfUChwKSB8IERTSU1fUExMX00obSkgfCBEU0lNX1BMTF9TKHMpOwo+IAo+IEBAIC00 NjIsNyArNTUyLDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZXh5bm9zX2RzaV9zZXRfcGxsKHN0 cnVjdCBleHlub3NfZHNpICpkc2ksCj4gIAkJcmVnIHw9IERTSU1fRlJFUV9CQU5EKGJhbmQpOwo+ ICAJfQo+IAo+IC0Jd3JpdGVsKHJlZywgZHNpLT5yZWdfYmFzZSArIERTSU1fUExMQ1RSTF9SRUcp Owo+ICsJRFNJX1dSSVRFKGRzaSwgRFNJTV9QTExDVFJMX1JFRywgcmVnKTsKPiAKPiAgCXRpbWVv dXQgPSAxMDAwOwo+ICAJZG8gewo+IEBAIC00NzAsNyArNTYwLDcgQEAgc3RhdGljIHVuc2lnbmVk IGxvbmcgZXh5bm9zX2RzaV9zZXRfcGxsKHN0cnVjdCBleHlub3NfZHNpICpkc2ksCj4gIAkJCWRl dl9lcnIoZHNpLT5kZXYsICJQTEwgZmFpbGVkIHRvIHN0YWJpbGl6ZVxuIik7Cj4gIAkJCXJldHVy biAwOwo+ICAJCX0KPiAtCQlyZWcgPSByZWFkbChkc2ktPnJlZ19iYXNlICsgRFNJTV9TVEFUVVNf UkVHKTsKPiArCQlyZWcgPSBEU0lfUkVBRChkc2ksIERTSU1fU1RBVFVTX1JFRyk7Cj4gIAl9IHdo aWxlICgocmVnICYgRFNJTV9QTExfU1RBQkxFKSA9PSAwKTsKPiAKPiAgCXJldHVybiBmb3V0Owo+ IEBAIC00ODIsNiArNTcyLDggQEAgc3RhdGljIGludCBleHlub3NfZHNpX2VuYWJsZV9jbG9jayhz dHJ1Y3QgZXh5bm9zX2RzaSAqZHNpKQo+ICAJdW5zaWduZWQgbG9uZyBlc2NfZGl2Owo+ICAJdTMy IHJlZzsKPiAKPiArCXJlZyA9IERTSV9SRUFEKGRzaSwgRFNJTV9TVEFUVVNfUkVHKTsKPiArCj4g IAloc19jbGsgPSBleHlub3NfZHNpX3NldF9wbGwoZHNpLCBkc2ktPmJ1cnN0X2Nsa19yYXRlKTsK PiAgCWlmICghaHNfY2xrKSB7Cj4gIAkJZGV2X2Vycihkc2ktPmRldiwgImZhaWxlZCB0byBjb25m aWd1cmUgRFNJIFBMTFxuIik7Cj4gQEAgLTUwMCw3ICs1OTIsNyBAQCBzdGF0aWMgaW50IGV4eW5v c19kc2lfZW5hYmxlX2Nsb2NrKHN0cnVjdCBleHlub3NfZHNpICpkc2kpCj4gIAlkZXZfZGJnKGRz aS0+ZGV2LCAiaHNfY2xrID0gJWx1LCBieXRlX2NsayA9ICVsdSwgZXNjX2NsayA9ICVsdVxuIiwK PiAgCQloc19jbGssIGJ5dGVfY2xrLCBlc2NfY2xrKTsKPiAKPiAtCXJlZyA9IHJlYWRsKGRzaS0+ cmVnX2Jhc2UgKyBEU0lNX0NMS0NUUkxfUkVHKTsKPiArCXJlZyA9IERTSV9SRUFEKGRzaSwgRFNJ TV9DTEtDVFJMX1JFRyk7Cj4gIAlyZWcgJj0gfihEU0lNX0VTQ19QUkVTQ0FMRVJfTUFTSyB8IERT SU1fTEFORV9FU0NfQ0xLX0VOX0NMSwo+ICAJCQl8IERTSU1fTEFORV9FU0NfQ0xLX0VOX0RBVEFf TUFTSyB8IERTSU1fUExMX0JZUEFTUwo+ICAJCQl8IERTSU1fQllURV9DTEtfU1JDX01BU0spOwo+ IEBAIC01MTAsNyArNjAyLDcgQEAgc3RhdGljIGludCBleHlub3NfZHNpX2VuYWJsZV9jbG9jayhz dHJ1Y3QgZXh5bm9zX2RzaSAqZHNpKQo+ICAJCQl8IERTSU1fTEFORV9FU0NfQ0xLX0VOX0RBVEEo QklUKGRzaS0+bGFuZXMpIC0gMSkKPiAgCQkJfCBEU0lNX0JZVEVfQ0xLX1NSQygwKQo+ICAJCQl8 IERTSU1fVFhfUkVRVUVTVF9IU0NMSzsKPiAtCXdyaXRlbChyZWcsIGRzaS0+cmVnX2Jhc2UgKyBE U0lNX0NMS0NUUkxfUkVHKTsKPiArCURTSV9XUklURShkc2ksIERTSU1fQ0xLQ1RSTF9SRUcsIHJl Zyk7Cj4gCj4gIAlyZXR1cm4gMDsKPiAgfQo+IEBAIC01MTgsMjIgKzYxMCwyNCBAQCBzdGF0aWMg aW50IGV4eW5vc19kc2lfZW5hYmxlX2Nsb2NrKHN0cnVjdCBleHlub3NfZHNpICpkc2kpCj4gIHN0 YXRpYyB2b2lkIGV4eW5vc19kc2lfc2V0X3BoeV9jdHJsKHN0cnVjdCBleHlub3NfZHNpICpkc2kp Cj4gIHsKPiAgCXN0cnVjdCBleHlub3NfZHNpX2RyaXZlcl9kYXRhICpkcml2ZXJfZGF0YSA9IGRz aS0+ZHJpdmVyX2RhdGE7Cj4gKwl1bnNpZ25lZCBpbnQgKnZhbHVlcyA9IGRyaXZlcl9kYXRhLT52 YWx1ZXM7Cj4gIAl1MzIgcmVnOwo+IAo+ICAJaWYgKGRyaXZlcl9kYXRhLT5oYXNfZnJlcWJhbmQp Cj4gIAkJcmV0dXJuOwo+IAo+ICAJLyogQiBELVBIWTogRC1QSFkgTWFzdGVyICYgU2xhdmUgQW5h bG9nIEJsb2NrIGNvbnRyb2wgKi8KPiAtCXJlZyA9IERTSU1fUEhZQ1RSTF9VTFBTX0VYSVQoMHgw YWYpOwo+IC0Jd3JpdGVsKHJlZywgZHNpLT5yZWdfYmFzZSArIERTSU1fUEhZQ1RSTF9SRUcpOwo+ ICsJcmVnID0gdmFsdWVzW1BIWUNUUkxfVUxQU19FWElUXSB8IHZhbHVlc1tQSFlDVFJMX1ZSRUdf TFBdIHwKPiArCQl2YWx1ZXNbUEhZQ1RSTF9TTEVXX1VQXTsKPiArCURTSV9XUklURShkc2ksIERT SU1fUEhZQ1RSTF9SRUcsIHJlZyk7Cj4gCj4gIAkvKgo+ICAJICogVCBMUFg6IFRyYW5zbWl0dGVk IGxlbmd0aCBvZiBhbnkgTG93LVBvd2VyIHN0YXRlIHBlcmlvZAo+ICAJICogVCBIUy1FWElUOiBU aW1lIHRoYXQgdGhlIHRyYW5zbWl0dGVyIGRyaXZlcyBMUC0xMSBmb2xsb3dpbmcgYSBIUwo+ICAJ ICoJYnVyc3QKPiAgCSAqLwo+IC0JcmVnID0gRFNJTV9QSFlUSU1JTkdfTFBYKDB4MDYpIHwgRFNJ TV9QSFlUSU1JTkdfSFNfRVhJVCgweDBiKTsKPiAtCXdyaXRlbChyZWcsIGRzaS0+cmVnX2Jhc2Ug KyBEU0lNX1BIWVRJTUlOR19SRUcpOwo+ICsJcmVnID0gdmFsdWVzW1BIWVRJTUlOR19MUFhdIHwg dmFsdWVzW1BIWVRJTUlOR19IU19FWElUXTsKPiArCURTSV9XUklURShkc2ksIERTSU1fUEhZVElN SU5HX1JFRywgcmVnKTsKPiAKPiAgCS8qCj4gIAkgKiBUIENMSy1QUkVQQVJFOiBUaW1lIHRoYXQg dGhlIHRyYW5zbWl0dGVyIGRyaXZlcyB0aGUgQ2xvY2sgTGFuZSBMUC0wMAo+IEBAIC01NDgsMTEg KzY0MiwxMCBAQCBzdGF0aWMgdm9pZCBleHlub3NfZHNpX3NldF9waHlfY3RybChzdHJ1Y3QgZXh5 bm9zX2RzaSAqZHNpKQo+ICAJICogVCBDTEstVFJBSUw6IFRpbWUgdGhhdCB0aGUgdHJhbnNtaXR0 ZXIgZHJpdmVzIHRoZSBIUy0wIHN0YXRlIGFmdGVyCj4gIAkgKgl0aGUgbGFzdCBwYXlsb2FkIGNs b2NrIGJpdCBvZiBhIEhTIHRyYW5zbWlzc2lvbiBidXJzdAo+ICAJICovCj4gLQlyZWcgPSBEU0lN X1BIWVRJTUlORzFfQ0xLX1BSRVBBUkUoMHgwNykgfAo+IC0JCQlEU0lNX1BIWVRJTUlORzFfQ0xL X1pFUk8oMHgyNykgfAo+IC0JCQlEU0lNX1BIWVRJTUlORzFfQ0xLX1BPU1QoMHgwZCkgfAo+IC0J CQlEU0lNX1BIWVRJTUlORzFfQ0xLX1RSQUlMKDB4MDgpOwo+IC0Jd3JpdGVsKHJlZywgZHNpLT5y ZWdfYmFzZSArIERTSU1fUEhZVElNSU5HMV9SRUcpOwo+ICsJcmVnID0gdmFsdWVzW1BIWVRJTUlO R19DTEtfUFJFUEFSRV0gfCB2YWx1ZXNbUEhZVElNSU5HX0NMS19aRVJPXSB8Cj4gKwkJdmFsdWVz W1BIWVRJTUlOR19DTEtfUE9TVF0gfCB2YWx1ZXNbUEhZVElNSU5HX0NMS19UUkFJTF07Cj4gKwo+ ICsJRFNJX1dSSVRFKGRzaSwgRFNJTV9QSFlUSU1JTkcxX1JFRywgcmVnKTsKPiAKPiAgCS8qCj4g IAkgKiBUIEhTLVBSRVBBUkU6IFRpbWUgdGhhdCB0aGUgdHJhbnNtaXR0ZXIgZHJpdmVzIHRoZSBE YXRhIExhbmUgTFAtMDAKPiBAQCAtNTYzLDIzICs2NTYsMjMgQEAgc3RhdGljIHZvaWQgZXh5bm9z X2RzaV9zZXRfcGh5X2N0cmwoc3RydWN0IGV4eW5vc19kc2kgKmRzaSkKPiAgCSAqIFQgSFMtVFJB SUw6IFRpbWUgdGhhdCB0aGUgdHJhbnNtaXR0ZXIgZHJpdmVzIHRoZSBmbGlwcGVkIGRpZmZlcmVu dGlhbAo+ICAJICoJc3RhdGUgYWZ0ZXIgbGFzdCBwYXlsb2FkIGRhdGEgYml0IG9mIGEgSFMgdHJh bnNtaXNzaW9uIGJ1cnN0Cj4gIAkgKi8KPiAtCXJlZyA9IERTSU1fUEhZVElNSU5HMl9IU19QUkVQ QVJFKDB4MDkpIHwgRFNJTV9QSFlUSU1JTkcyX0hTX1pFUk8oMHgwZCkgfAo+IC0JCQlEU0lNX1BI WVRJTUlORzJfSFNfVFJBSUwoMHgwYik7Cj4gLQl3cml0ZWwocmVnLCBkc2ktPnJlZ19iYXNlICsg RFNJTV9QSFlUSU1JTkcyX1JFRyk7Cj4gKwlyZWcgPSB2YWx1ZXNbUEhZVElNSU5HX0hTX1BSRVBB UkVdIHwgdmFsdWVzW1BIWVRJTUlOR19IU19aRVJPXSB8Cj4gKwkJdmFsdWVzW1BIWVRJTUlOR19I U19UUkFJTF07Cj4gKwlEU0lfV1JJVEUoZHNpLCBEU0lNX1BIWVRJTUlORzJfUkVHLCByZWcpOwo+ ICB9Cj4gCj4gIHN0YXRpYyB2b2lkIGV4eW5vc19kc2lfZGlzYWJsZV9jbG9jayhzdHJ1Y3QgZXh5 bm9zX2RzaSAqZHNpKQo+ICB7Cj4gIAl1MzIgcmVnOwo+IAo+IC0JcmVnID0gcmVhZGwoZHNpLT5y ZWdfYmFzZSArIERTSU1fQ0xLQ1RSTF9SRUcpOwo+ICsJcmVnID0gRFNJX1JFQUQoZHNpLCBEU0lN X0NMS0NUUkxfUkVHKTsKPiAgCXJlZyAmPSB+KERTSU1fTEFORV9FU0NfQ0xLX0VOX0NMSyB8IERT SU1fTEFORV9FU0NfQ0xLX0VOX0RBVEFfTUFTSwo+ICAJCQl8IERTSU1fRVNDX0NMS0VOIHwgRFNJ TV9CWVRFX0NMS0VOKTsKPiAtCXdyaXRlbChyZWcsIGRzaS0+cmVnX2Jhc2UgKyBEU0lNX0NMS0NU UkxfUkVHKTsKPiArCURTSV9XUklURShkc2ksIERTSU1fQ0xLQ1RSTF9SRUcsIHJlZyk7Cj4gCj4g LQlyZWcgPSByZWFkbChkc2ktPnJlZ19iYXNlICsgRFNJTV9QTExDVFJMX1JFRyk7Cj4gKwlyZWcg PSBEU0lfUkVBRChkc2ksIERTSU1fUExMQ1RSTF9SRUcpOwo+ICAJcmVnICY9IH5EU0lNX1BMTF9F TjsKPiAtCXdyaXRlbChyZWcsIGRzaS0+cmVnX2Jhc2UgKyBEU0lNX1BMTENUUkxfUkVHKTsKPiAr CURTSV9XUklURShkc2ksIERTSU1fUExMQ1RSTF9SRUcsIHJlZyk7Cj4gIH0KPiAKPiAgc3RhdGlj IGludCBleHlub3NfZHNpX2luaXRfbGluayhzdHJ1Y3QgZXh5bm9zX2RzaSAqZHNpKQo+IEBAIC01 OTAsMTUgKzY4MywxNCBAQCBzdGF0aWMgaW50IGV4eW5vc19kc2lfaW5pdF9saW5rKHN0cnVjdCBl eHlub3NfZHNpICpkc2kpCj4gIAl1MzIgbGFuZXNfbWFzazsKPiAKPiAgCS8qIEluaXRpYWxpemUg RklGTyBwb2ludGVycyAqLwo+IC0JcmVnID0gcmVhZGwoZHNpLT5yZWdfYmFzZSArIERTSU1fRklG T0NUUkxfUkVHKTsKPiArCXJlZyA9IERTSV9SRUFEKGRzaSwgRFNJTV9GSUZPQ1RSTF9SRUcpOwo+ ICAJcmVnICY9IH4weDFmOwo+IC0Jd3JpdGVsKHJlZywgZHNpLT5yZWdfYmFzZSArIERTSU1fRklG T0NUUkxfUkVHKTsKPiArCURTSV9XUklURShkc2ksIERTSU1fRklGT0NUUkxfUkVHLCByZWcpOwo+ IAo+ICAJdXNsZWVwX3JhbmdlKDkwMDAsIDExMDAwKTsKPiAKPiAgCXJlZyB8PSAweDFmOwo+IC0J d3JpdGVsKHJlZywgZHNpLT5yZWdfYmFzZSArIERTSU1fRklGT0NUUkxfUkVHKTsKPiAtCj4gKwlE U0lfV1JJVEUoZHNpLCBEU0lNX0ZJRk9DVFJMX1JFRywgcmVnKTsKPiAgCXVzbGVlcF9yYW5nZSg5 MDAwLCAxMTAwMCk7Cj4gCj4gIAkvKiBEU0kgY29uZmlndXJhdGlvbiAqLwo+IEBAIC02NTcsMTQg Kzc0OSwxNCBAQCBzdGF0aWMgaW50IGV4eW5vc19kc2lfaW5pdF9saW5rKHN0cnVjdCBleHlub3Nf ZHNpICpkc2kpCj4gCj4gIAlyZWcgfD0gRFNJTV9OVU1fT0ZfREFUQV9MQU5FKGRzaS0+bGFuZXMg LSAxKTsKPiAKPiAtCXdyaXRlbChyZWcsIGRzaS0+cmVnX2Jhc2UgKyBEU0lNX0NPTkZJR19SRUcp Owo+ICsJRFNJX1dSSVRFKGRzaSwgRFNJTV9DT05GSUdfUkVHLCByZWcpOwo+IAo+ICAJcmVnIHw9 IERTSU1fTEFORV9FTl9DTEs7Cj4gLQl3cml0ZWwocmVnLCBkc2ktPnJlZ19iYXNlICsgRFNJTV9D T05GSUdfUkVHKTsKPiArCURTSV9XUklURShkc2ksIERTSU1fQ09ORklHX1JFRywgcmVnKTsKPiAK PiAgCWxhbmVzX21hc2sgPSBCSVQoZHNpLT5sYW5lcykgLSAxOwo+ICAJcmVnIHw9IERTSU1fTEFO RV9FTihsYW5lc19tYXNrKTsKPiAtCXdyaXRlbChyZWcsIGRzaS0+cmVnX2Jhc2UgKyBEU0lNX0NP TkZJR19SRUcpOwo+ICsJRFNJX1dSSVRFKGRzaSwgRFNJTV9DT05GSUdfUkVHLCByZWcpOwo+IAo+ ICAJLyoKPiAgCSAqIFVzZSBub24tY29udGludW91cyBjbG9jayBtb2RlIGlmIHRoZSBwZXJpcGFy YWwgd2FudHMgYW5kCj4gQEAgLTY3Nyw3ICs3NjksNyBAQCBzdGF0aWMgaW50IGV4eW5vc19kc2lf aW5pdF9saW5rKHN0cnVjdCBleHlub3NfZHNpICpkc2kpCj4gIAlpZiAoZHJpdmVyX2RhdGEtPmhh c19jbGtsYW5lX3N0b3AgJiYKPiAgCQkJZHNpLT5tb2RlX2ZsYWdzICYgTUlQSV9EU0lfQ0xPQ0tf Tk9OX0NPTlRJTlVPVVMpIHsKPiAgCQlyZWcgfD0gRFNJTV9DTEtMQU5FX1NUT1A7Cj4gLQkJd3Jp dGVsKHJlZywgZHNpLT5yZWdfYmFzZSArIERTSU1fQ09ORklHX1JFRyk7Cj4gKwkJRFNJX1dSSVRF KGRzaSwgRFNJTV9DT05GSUdfUkVHLCByZWcpOwo+ICAJfQo+IAo+ICAJLyogQ2hlY2sgY2xvY2sg YW5kIGRhdGEgbGFuZSBzdGF0ZSBhcmUgc3RvcCBzdGF0ZSAqLwo+IEBAIC02ODgsMTkgKzc4MCwx OSBAQCBzdGF0aWMgaW50IGV4eW5vc19kc2lfaW5pdF9saW5rKHN0cnVjdCBleHlub3NfZHNpICpk c2kpCj4gIAkJCXJldHVybiAtRUZBVUxUOwo+ICAJCX0KPiAKPiAtCQlyZWcgPSByZWFkbChkc2kt PnJlZ19iYXNlICsgRFNJTV9TVEFUVVNfUkVHKTsKPiArCQlyZWcgPSBEU0lfUkVBRChkc2ksIERT SU1fU1RBVFVTX1JFRyk7Cj4gIAkJaWYgKChyZWcgJiBEU0lNX1NUT1BfU1RBVEVfREFUKGxhbmVz X21hc2spKQo+ICAJCSAgICAhPSBEU0lNX1NUT1BfU1RBVEVfREFUKGxhbmVzX21hc2spKQo+ICAJ CQljb250aW51ZTsKPiAgCX0gd2hpbGUgKCEocmVnICYgKERTSU1fU1RPUF9TVEFURV9DTEsgfCBE U0lNX1RYX1JFQURZX0hTX0NMSykpKTsKPiAKPiAtCXJlZyA9IHJlYWRsKGRzaS0+cmVnX2Jhc2Ug KyBEU0lNX0VTQ01PREVfUkVHKTsKPiArCXJlZyA9IERTSV9SRUFEKGRzaSwgRFNJTV9FU0NNT0RF X1JFRyk7Cj4gIAlyZWcgJj0gfkRTSU1fU1RPUF9TVEFURV9DTlRfTUFTSzsKPiAtCXJlZyB8PSBE U0lNX1NUT1BfU1RBVEVfQ05UKDB4Zik7Cj4gLQl3cml0ZWwocmVnLCBkc2ktPnJlZ19iYXNlICsg RFNJTV9FU0NNT0RFX1JFRyk7Cj4gKwlyZWcgfD0gRFNJTV9TVE9QX1NUQVRFX0NOVChkcml2ZXJf ZGF0YS0+dmFsdWVzW1NUT1BfU1RBVEVfQ05UXSk7Cj4gKwlEU0lfV1JJVEUoZHNpLCBEU0lNX0VT Q01PREVfUkVHLCByZWcpOwo+IAo+ICAJcmVnID0gRFNJTV9CVEFfVElNRU9VVCgweGZmKSB8IERT SU1fTFBEUl9USU1FT1VUKDB4ZmZmZik7Cj4gLQl3cml0ZWwocmVnLCBkc2ktPnJlZ19iYXNlICsg RFNJTV9USU1FT1VUX1JFRyk7Cj4gKwlEU0lfV1JJVEUoZHNpLCBEU0lNX1RJTUVPVVRfUkVHLCBy ZWcpOwo+IAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiBAQCAtNzA4LDI1ICs4MDAsMjcgQEAgc3RhdGlj IGludCBleHlub3NfZHNpX2luaXRfbGluayhzdHJ1Y3QgZXh5bm9zX2RzaSAqZHNpKQo+ICBzdGF0 aWMgdm9pZCBleHlub3NfZHNpX3NldF9kaXNwbGF5X21vZGUoc3RydWN0IGV4eW5vc19kc2kgKmRz aSkKPiAgewo+ICAJc3RydWN0IHZpZGVvbW9kZSAqdm0gPSAmZHNpLT52bTsKPiArCXVuc2lnbmVk IGludCBudW1fYml0c19yZXNvbCA9IGRzaS0+ZHJpdmVyX2RhdGEtPm51bV9iaXRzX3Jlc29sOwo+ ICAJdTMyIHJlZzsKPiAKPiAgCWlmIChkc2ktPm1vZGVfZmxhZ3MgJiBNSVBJX0RTSV9NT0RFX1ZJ REVPKSB7Cj4gIAkJcmVnID0gRFNJTV9DTURfQUxMT1coMHhmKQo+ICAJCQl8IERTSU1fU1RBQkxF X1ZGUCh2bS0+dmZyb250X3BvcmNoKQo+ICAJCQl8IERTSU1fTUFJTl9WQlAodm0tPnZiYWNrX3Bv cmNoKTsKPiAtCQl3cml0ZWwocmVnLCBkc2ktPnJlZ19iYXNlICsgRFNJTV9NVlBPUkNIX1JFRyk7 Cj4gKwkJRFNJX1dSSVRFKGRzaSwgRFNJTV9NVlBPUkNIX1JFRywgcmVnKTsKPiAKPiAgCQlyZWcg PSBEU0lNX01BSU5fSEZQKHZtLT5oZnJvbnRfcG9yY2gpCj4gIAkJCXwgRFNJTV9NQUlOX0hCUCh2 bS0+aGJhY2tfcG9yY2gpOwo+IC0JCXdyaXRlbChyZWcsIGRzaS0+cmVnX2Jhc2UgKyBEU0lNX01I UE9SQ0hfUkVHKTsKPiArCQlEU0lfV1JJVEUoZHNpLCBEU0lNX01IUE9SQ0hfUkVHLCByZWcpOwo+ IAo+ICAJCXJlZyA9IERTSU1fTUFJTl9WU0Eodm0tPnZzeW5jX2xlbikKPiAgCQkJfCBEU0lNX01B SU5fSFNBKHZtLT5oc3luY19sZW4pOwo+IC0JCXdyaXRlbChyZWcsIGRzaS0+cmVnX2Jhc2UgKyBE U0lNX01TWU5DX1JFRyk7Cj4gKwkJRFNJX1dSSVRFKGRzaSwgRFNJTV9NU1lOQ19SRUcsIHJlZyk7 Cj4gIAl9Cj4gKwlyZWcgPSAgRFNJTV9NQUlOX0hSRVNPTCh2bS0+aGFjdGl2ZSwgbnVtX2JpdHNf cmVzb2wpIHwKPiArCQlEU0lNX01BSU5fVlJFU09MKHZtLT52YWN0aXZlLCBudW1fYml0c19yZXNv bCk7Cj4gCj4gLQlyZWcgPSBEU0lNX01BSU5fSFJFU09MKHZtLT5oYWN0aXZlKSB8IERTSU1fTUFJ Tl9WUkVTT0wodm0tPnZhY3RpdmUpOwo+IC0Jd3JpdGVsKHJlZywgZHNpLT5yZWdfYmFzZSArIERT SU1fTURSRVNPTF9SRUcpOwo+ICsJRFNJX1dSSVRFKGRzaSwgRFNJTV9NRFJFU09MX1JFRywgcmVn KTsKPiAKPiAgCWRldl9kYmcoZHNpLT5kZXYsICJMQ0Qgc2l6ZSA9ICVkeCVkXG4iLCB2bS0+aGFj dGl2ZSwgdm0tPnZhY3RpdmUpOwo+ICB9Cj4gQEAgLTczNSwxMiArODI5LDEyIEBAIHN0YXRpYyB2 b2lkIGV4eW5vc19kc2lfc2V0X2Rpc3BsYXlfZW5hYmxlKHN0cnVjdCBleHlub3NfZHNpICpkc2ks IGJvb2wgZW5hYmxlKQo+ICB7Cj4gIAl1MzIgcmVnOwo+IAo+IC0JcmVnID0gcmVhZGwoZHNpLT5y ZWdfYmFzZSArIERTSU1fTURSRVNPTF9SRUcpOwo+ICsJcmVnID0gRFNJX1JFQUQoZHNpLCBEU0lN X01EUkVTT0xfUkVHKTsKPiAgCWlmIChlbmFibGUpCj4gIAkJcmVnIHw9IERTSU1fTUFJTl9TVEFO RF9CWTsKPiAgCWVsc2UKPiAgCQlyZWcgJj0gfkRTSU1fTUFJTl9TVEFORF9CWTsKPiAtCXdyaXRl bChyZWcsIGRzaS0+cmVnX2Jhc2UgKyBEU0lNX01EUkVTT0xfUkVHKTsKPiArCURTSV9XUklURShk c2ksIERTSU1fTURSRVNPTF9SRUcsIHJlZyk7Cj4gIH0KPiAKPiAgc3RhdGljIGludCBleHlub3Nf ZHNpX3dhaXRfZm9yX2hkcl9maWZvKHN0cnVjdCBleHlub3NfZHNpICpkc2kpCj4gQEAgLTc0OCw3 ICs4NDIsNyBAQCBzdGF0aWMgaW50IGV4eW5vc19kc2lfd2FpdF9mb3JfaGRyX2ZpZm8oc3RydWN0 IGV4eW5vc19kc2kgKmRzaSkKPiAgCWludCB0aW1lb3V0ID0gMjAwMDsKPiAKPiAgCWRvIHsKPiAt CQl1MzIgcmVnID0gcmVhZGwoZHNpLT5yZWdfYmFzZSArIERTSU1fRklGT0NUUkxfUkVHKTsKPiAr CQl1MzIgcmVnID0gRFNJX1JFQUQoZHNpLCBEU0lNX0ZJRk9DVFJMX1JFRyk7Cj4gCj4gIAkJaWYg KCEocmVnICYgRFNJTV9TRlJfSEVBREVSX0ZVTEwpKQo+ICAJCQlyZXR1cm4gMDsKPiBAQCAtNzYy LDIyICs4NTYsMjEgQEAgc3RhdGljIGludCBleHlub3NfZHNpX3dhaXRfZm9yX2hkcl9maWZvKHN0 cnVjdCBleHlub3NfZHNpICpkc2kpCj4gCj4gIHN0YXRpYyB2b2lkIGV4eW5vc19kc2lfc2V0X2Nt ZF9scG0oc3RydWN0IGV4eW5vc19kc2kgKmRzaSwgYm9vbCBscG0pCj4gIHsKPiAtCXUzMiB2ID0g cmVhZGwoZHNpLT5yZWdfYmFzZSArIERTSU1fRVNDTU9ERV9SRUcpOwo+ICsJdTMyIHYgPSBEU0lf UkVBRChkc2ksIERTSU1fRVNDTU9ERV9SRUcpOwo+IAo+ICAJaWYgKGxwbSkKPiAgCQl2IHw9IERT SU1fQ01EX0xQRFRfTFA7Cj4gIAllbHNlCj4gIAkJdiAmPSB+RFNJTV9DTURfTFBEVF9MUDsKPiAK PiAtCXdyaXRlbCh2LCBkc2ktPnJlZ19iYXNlICsgRFNJTV9FU0NNT0RFX1JFRyk7Cj4gKwlEU0lf V1JJVEUoZHNpLCBEU0lNX0VTQ01PREVfUkVHLCB2KTsKPiAgfQo+IAo+ICBzdGF0aWMgdm9pZCBl eHlub3NfZHNpX2ZvcmNlX2J0YShzdHJ1Y3QgZXh5bm9zX2RzaSAqZHNpKQo+ICB7Cj4gLQl1MzIg diA9IHJlYWRsKGRzaS0+cmVnX2Jhc2UgKyBEU0lNX0VTQ01PREVfUkVHKTsKPiAtCj4gKwl1MzIg diA9IERTSV9SRUFEKGRzaSwgRFNJTV9FU0NNT0RFX1JFRyk7Cj4gIAl2IHw9IERTSU1fRk9SQ0Vf QlRBOwo+IC0Jd3JpdGVsKHYsIGRzaS0+cmVnX2Jhc2UgKyBEU0lNX0VTQ01PREVfUkVHKTsKPiAr CURTSV9XUklURShkc2ksIERTSU1fRVNDTU9ERV9SRUcsIHYpOwo+ICB9Cj4gCj4gIHN0YXRpYyB2 b2lkIGV4eW5vc19kc2lfc2VuZF90b19maWZvKHN0cnVjdCBleHlub3NfZHNpICpkc2ksCj4gQEAg LTgwMSw3ICs4OTQsNyBAQCBzdGF0aWMgdm9pZCBleHlub3NfZHNpX3NlbmRfdG9fZmlmbyhzdHJ1 Y3QgZXh5bm9zX2RzaSAqZHNpLAo+ICAJd2hpbGUgKGxlbmd0aCA+PSA0KSB7Cj4gIAkJcmVnID0g KHBheWxvYWRbM10gPDwgMjQpIHwgKHBheWxvYWRbMl0gPDwgMTYpCj4gIAkJCQkJfCAocGF5bG9h ZFsxXSA8PCA4KSB8IHBheWxvYWRbMF07Cj4gLQkJd3JpdGVsKHJlZywgZHNpLT5yZWdfYmFzZSAr IERTSU1fUEFZTE9BRF9SRUcpOwo+ICsJCURTSV9XUklURShkc2ksIERTSU1fUEFZTE9BRF9SRUcs IHJlZyk7Cj4gIAkJcGF5bG9hZCArPSA0Owo+ICAJCWxlbmd0aCAtPSA0Owo+ICAJfQo+IEBAIC04 MTYsNyArOTA5LDcgQEAgc3RhdGljIHZvaWQgZXh5bm9zX2RzaV9zZW5kX3RvX2ZpZm8oc3RydWN0 IGV4eW5vc19kc2kgKmRzaSwKPiAgCQkvKiBGYWxsIHRocm91Z2ggKi8KPiAgCWNhc2UgMToKPiAg CQlyZWcgfD0gcGF5bG9hZFswXTsKPiAtCQl3cml0ZWwocmVnLCBkc2ktPnJlZ19iYXNlICsgRFNJ TV9QQVlMT0FEX1JFRyk7Cj4gKwkJRFNJX1dSSVRFKGRzaSwgRFNJTV9QQVlMT0FEX1JFRywgcmVn KTsKPiAgCQlicmVhazsKPiAgCWNhc2UgMDoKPiAgCQkvKiBEbyBub3RoaW5nICovCj4gQEAgLTgz OSw3ICs5MzIsNyBAQCBzdGF0aWMgdm9pZCBleHlub3NfZHNpX3NlbmRfdG9fZmlmbyhzdHJ1Y3Qg ZXh5bm9zX2RzaSAqZHNpLAo+ICAJCWRzaS0+c3RhdGUgXj0gRFNJTV9TVEFURV9DTURfTFBNOwo+ ICAJfQo+IAo+IC0Jd3JpdGVsKHJlZywgZHNpLT5yZWdfYmFzZSArIERTSU1fUEtUSERSX1JFRyk7 Cj4gKwlEU0lfV1JJVEUoZHNpLCBEU0lNX1BLVEhEUl9SRUcsIHJlZyk7Cj4gCj4gIAlpZiAoeGZl ci0+ZmxhZ3MgJiBNSVBJX0RTSV9NU0dfUkVRX0FDSykKPiAgCQlleHlub3NfZHNpX2ZvcmNlX2J0 YShkc2kpOwo+IEBAIC04NTUsNyArOTQ4LDcgQEAgc3RhdGljIHZvaWQgZXh5bm9zX2RzaV9yZWFk X2Zyb21fZmlmbyhzdHJ1Y3QgZXh5bm9zX2RzaSAqZHNpLAo+ICAJdTMyIHJlZzsKPiAKPiAgCWlm IChmaXJzdCkgewo+IC0JCXJlZyA9IHJlYWRsKGRzaS0+cmVnX2Jhc2UgKyBEU0lNX1JYRklGT19S RUcpOwo+ICsJCXJlZyA9IERTSV9SRUFEKGRzaSwgRFNJTV9SWEZJRk9fUkVHKTsKPiAKPiAgCQlz d2l0Y2ggKHJlZyAmIDB4M2YpIHsKPiAgCQljYXNlIE1JUElfRFNJX1JYX0dFTkVSSUNfU0hPUlRf UkVBRF9SRVNQT05TRV8yQllURToKPiBAQCAtODk0LDcgKzk4Nyw3IEBAIHN0YXRpYyB2b2lkIGV4 eW5vc19kc2lfcmVhZF9mcm9tX2ZpZm8oc3RydWN0IGV4eW5vc19kc2kgKmRzaSwKPiAKPiAgCS8q IFJlY2VpdmUgcGF5bG9hZCAqLwo+ICAJd2hpbGUgKGxlbmd0aCA+PSA0KSB7Cj4gLQkJcmVnID0g cmVhZGwoZHNpLT5yZWdfYmFzZSArIERTSU1fUlhGSUZPX1JFRyk7Cj4gKwkJcmVnID0gRFNJX1JF QUQoZHNpLCBEU0lNX1JYRklGT19SRUcpOwo+ICAJCXBheWxvYWRbMF0gPSAocmVnID4+ICAwKSAm IDB4ZmY7Cj4gIAkJcGF5bG9hZFsxXSA9IChyZWcgPj4gIDgpICYgMHhmZjsKPiAgCQlwYXlsb2Fk WzJdID0gKHJlZyA+PiAxNikgJiAweGZmOwo+IEBAIC05MDQsNyArOTk3LDcgQEAgc3RhdGljIHZv aWQgZXh5bm9zX2RzaV9yZWFkX2Zyb21fZmlmbyhzdHJ1Y3QgZXh5bm9zX2RzaSAqZHNpLAo+ICAJ fQo+IAo+ICAJaWYgKGxlbmd0aCkgewo+IC0JCXJlZyA9IHJlYWRsKGRzaS0+cmVnX2Jhc2UgKyBE U0lNX1JYRklGT19SRUcpOwo+ICsJCXJlZyA9IERTSV9SRUFEKGRzaSwgRFNJTV9SWEZJRk9fUkVH KTsKPiAgCQlzd2l0Y2ggKGxlbmd0aCkgewo+ICAJCWNhc2UgMzoKPiAgCQkJcGF5bG9hZFsyXSA9 IChyZWcgPj4gMTYpICYgMHhmZjsKPiBAQCAtMTA3OSwxOCArMTE3MiwxOCBAQCBzdGF0aWMgaXJx cmV0dXJuX3QgZXh5bm9zX2RzaV9pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKQo+ICAJc3RydWN0 IGV4eW5vc19kc2kgKmRzaSA9IGRldl9pZDsKPiAgCXUzMiBzdGF0dXM7Cj4gCj4gLQlzdGF0dXMg PSByZWFkbChkc2ktPnJlZ19iYXNlICsgRFNJTV9JTlRTUkNfUkVHKTsKPiArCXN0YXR1cyA9IERT SV9SRUFEKGRzaSwgRFNJTV9JTlRTUkNfUkVHKTsKPiAgCWlmICghc3RhdHVzKSB7Cj4gIAkJc3Rh dGljIHVuc2lnbmVkIGxvbmcgaW50IGo7Cj4gIAkJaWYgKHByaW50a190aW1lZF9yYXRlbGltaXQo JmosIDUwMCkpCj4gIAkJCWRldl93YXJuKGRzaS0+ZGV2LCAic3B1cmlvdXMgaW50ZXJydXB0XG4i KTsKPiAgCQlyZXR1cm4gSVJRX0hBTkRMRUQ7Cj4gIAl9Cj4gLQl3cml0ZWwoc3RhdHVzLCBkc2kt PnJlZ19iYXNlICsgRFNJTV9JTlRTUkNfUkVHKTsKPiArCURTSV9XUklURShkc2ksIERTSU1fSU5U U1JDX1JFRywgc3RhdHVzKTsKPiAKPiAgCWlmIChzdGF0dXMgJiBEU0lNX0lOVF9TV19SU1RfUkVM RUFTRSkgewo+ICAJCXUzMiBtYXNrID0gfihEU0lNX0lOVF9SWF9ET05FIHwgRFNJTV9JTlRfU0ZS X0ZJRk9fRU1QVFkpOwo+IC0JCXdyaXRlbChtYXNrLCBkc2ktPnJlZ19iYXNlICsgRFNJTV9JTlRN U0tfUkVHKTsKPiArCQlEU0lfV1JJVEUoZHNpLCBEU0lNX0lOVE1TS19SRUcsIG1hc2spOwo+ICAJ CWNvbXBsZXRlKCZkc2ktPmNvbXBsZXRlZCk7Cj4gIAkJcmV0dXJuIElSUV9IQU5ETEVEOwo+ICAJ fQo+IEBAIC0xMTMzLDEwICsxMjI2LDEzIEBAIHN0YXRpYyB2b2lkIGV4eW5vc19kc2lfZGlzYWJs ZV9pcnEoc3RydWN0IGV4eW5vc19kc2kgKmRzaSkKPiAKPiAgc3RhdGljIGludCBleHlub3NfZHNp X2luaXQoc3RydWN0IGV4eW5vc19kc2kgKmRzaSkKPiAgewo+ICsJc3RydWN0IGV4eW5vc19kc2lf ZHJpdmVyX2RhdGEgKmRyaXZlcl9kYXRhID0gZHNpLT5kcml2ZXJfZGF0YTsKPiArCj4gIAlleHlu b3NfZHNpX3Jlc2V0KGRzaSk7Cj4gIAlleHlub3NfZHNpX2VuYWJsZV9pcnEoZHNpKTsKPiAgCWV4 eW5vc19kc2lfZW5hYmxlX2Nsb2NrKGRzaSk7Cj4gLQlleHlub3NfZHNpX3dhaXRfZm9yX3Jlc2V0 KGRzaSk7Cj4gKwlpZiAoZHJpdmVyX2RhdGEtPndhaXRfZm9yX3Jlc2V0KQo+ICsJCWV4eW5vc19k c2lfd2FpdF9mb3JfcmVzZXQoZHNpKTsKPiAgCWV4eW5vc19kc2lfc2V0X3BoeV9jdHJsKGRzaSk7 Cj4gIAlleHlub3NfZHNpX2luaXRfbGluayhkc2kpOwo+IAo+IEBAIC0xMjg1LDcgKzEzODEsOCBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IG1pcGlfZHNpX2hvc3Rfb3BzIGV4eW5vc19kc2lfb3BzID0g ewo+IAo+ICBzdGF0aWMgaW50IGV4eW5vc19kc2lfcG93ZXJvbihzdHJ1Y3QgZXh5bm9zX2RzaSAq ZHNpKQo+ICB7Cj4gLQlpbnQgcmV0Owo+ICsJc3RydWN0IGV4eW5vc19kc2lfZHJpdmVyX2RhdGEg KmRyaXZlcl9kYXRhID0gZHNpLT5kcml2ZXJfZGF0YTsKPiArCWludCByZXQsIGk7Cj4gCj4gIAly ZXQgPSByZWd1bGF0b3JfYnVsa19lbmFibGUoQVJSQVlfU0laRShkc2ktPnN1cHBsaWVzKSwgZHNp LT5zdXBwbGllcyk7Cj4gIAlpZiAocmV0IDwgMCkgewo+IEBAIC0xMjkzLDMxICsxMzkwLDIzIEBA IHN0YXRpYyBpbnQgZXh5bm9zX2RzaV9wb3dlcm9uKHN0cnVjdCBleHlub3NfZHNpICpkc2kpCj4g IAkJcmV0dXJuIHJldDsKPiAgCX0KPiAKPiAtCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShkc2kt PmJ1c19jbGspOwo+IC0JaWYgKHJldCA8IDApIHsKPiAtCQlkZXZfZXJyKGRzaS0+ZGV2LCAiY2Fu bm90IGVuYWJsZSBidXMgY2xvY2sgJWRcbiIsIHJldCk7Cj4gLQkJZ290byBlcnJfYnVzX2NsazsK PiAtCX0KPiAtCj4gLQlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoZHNpLT5zY2xrX2Nsayk7Cj4g LQlpZiAocmV0IDwgMCkgewo+IC0JCWRldl9lcnIoZHNpLT5kZXYsICJjYW5ub3QgZW5hYmxlIHBs bCBjbG9jayAlZFxuIiwgcmV0KTsKPiAtCQlnb3RvIGVycl9zY2xrX2NsazsKPiArCWZvciAoaSA9 IDA7IGkgPCBkcml2ZXJfZGF0YS0+bnVtX2Nsa3M7IGkrKykgewo+ICsJCXJldCA9IGNsa19wcmVw YXJlX2VuYWJsZShkc2ktPmNsa3NbaV0pOwo+ICsJCWlmIChyZXQgPCAwKQo+ICsJCQlnb3RvIGVy cl9jbGs7Cj4gIAl9Cj4gCj4gIAlyZXQgPSBwaHlfcG93ZXJfb24oZHNpLT5waHkpOwo+ICAJaWYg KHJldCA8IDApIHsKPiAgCQlkZXZfZXJyKGRzaS0+ZGV2LCAiY2Fubm90IGVuYWJsZSBwaHkgJWRc biIsIHJldCk7Cj4gLQkJZ290byBlcnJfcGh5Owo+ICsJCWdvdG8gZXJyX2NsazsKPiAgCX0KPiAK PiAgCXJldHVybiAwOwo+IAo+IC1lcnJfcGh5Ogo+IC0JY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRz aS0+c2Nsa19jbGspOwo+IC1lcnJfc2Nsa19jbGs6Cj4gLQljbGtfZGlzYWJsZV91bnByZXBhcmUo ZHNpLT5idXNfY2xrKTsKPiAtZXJyX2J1c19jbGs6Cj4gK2Vycl9jbGs6Cj4gKwl3aGlsZSAoLS1p ID4gLTEpCj4gKwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRzaS0+Y2xrc1tpXSk7Cj4gIAlyZWd1 bGF0b3JfYnVsa19kaXNhYmxlKEFSUkFZX1NJWkUoZHNpLT5zdXBwbGllcyksIGRzaS0+c3VwcGxp ZXMpOwo+IAo+ICAJcmV0dXJuIHJldDsKPiBAQCAtMTMyNSw3ICsxNDE0LDggQEAgZXJyX2J1c19j bGs6Cj4gCj4gIHN0YXRpYyB2b2lkIGV4eW5vc19kc2lfcG93ZXJvZmYoc3RydWN0IGV4eW5vc19k c2kgKmRzaSkKPiAgewo+IC0JaW50IHJldDsKPiArCXN0cnVjdCBleHlub3NfZHNpX2RyaXZlcl9k YXRhICpkcml2ZXJfZGF0YSA9IGRzaS0+ZHJpdmVyX2RhdGE7Cj4gKwlpbnQgcmV0LCBpOwo+IAo+ ICAJdXNsZWVwX3JhbmdlKDEwMDAwLCAyMDAwMCk7Cj4gCj4gQEAgLTEzNDEsOCArMTQzMSw4IEBA IHN0YXRpYyB2b2lkIGV4eW5vc19kc2lfcG93ZXJvZmYoc3RydWN0IGV4eW5vc19kc2kgKmRzaSkK PiAKPiAgCXBoeV9wb3dlcl9vZmYoZHNpLT5waHkpOwo+IAo+IC0JY2xrX2Rpc2FibGVfdW5wcmVw YXJlKGRzaS0+c2Nsa19jbGspOwo+IC0JY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRzaS0+YnVzX2Ns ayk7Cj4gKwlmb3IgKGkgPSBkcml2ZXJfZGF0YS0+bnVtX2Nsa3MgLSAxOyBpID4gLTE7IGktLSkK PiArCQljbGtfZGlzYWJsZV91bnByZXBhcmUoZHNpLT5jbGtzW2ldKTsKPiAKPiAgCXJldCA9IHJl Z3VsYXRvcl9idWxrX2Rpc2FibGUoQVJSQVlfU0laRShkc2ktPnN1cHBsaWVzKSwgZHNpLT5zdXBw bGllcyk7Cj4gIAlpZiAocmV0IDwgMCkKPiBAQCAtMTY3MSw3ICsxNzYxLDcgQEAgc3RhdGljIGlu dCBleHlub3NfZHNpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIAlzdHJ1 Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Owo+ICAJc3RydWN0IHJlc291cmNlICpyZXM7Cj4g IAlzdHJ1Y3QgZXh5bm9zX2RzaSAqZHNpOwo+IC0JaW50IHJldDsKPiArCWludCByZXQsIGk7Cj4g Cj4gIAlkc2kgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmRzaSksIEdGUF9LRVJORUwpOwo+ ICAJaWYgKCFkc2kpCj4gQEAgLTE3MTEsMTggKzE4MDEsMTcgQEAgc3RhdGljIGludCBleHlub3Nf ZHNpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIAkJcmV0dXJuIC1FUFJP QkVfREVGRVI7Cj4gIAl9Cj4gCj4gLQlkc2ktPnNjbGtfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwg InNjbGtfbWlwaSIpOwo+IC0JaWYgKElTX0VSUihkc2ktPnNjbGtfY2xrKSkgewo+IC0JCWRldl9p bmZvKGRldiwgImZhaWxlZCB0byBnZXQgZHNpIHNjbGsgY2xvY2tcbiIpOwo+IC0JCXJldCA9IFBU Ul9FUlIoZHNpLT5zY2xrX2Nsayk7Cj4gLQkJZ290byBlcnJfZGVsX2NvbXBvbmVudDsKPiAtCX0K PiAtCj4gLQlkc2ktPmJ1c19jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCAiYnVzX2NsayIpOwo+IC0J aWYgKElTX0VSUihkc2ktPmJ1c19jbGspKSB7Cj4gLQkJZGV2X2luZm8oZGV2LCAiZmFpbGVkIHRv IGdldCBkc2kgYnVzIGNsb2NrXG4iKTsKPiAtCQlyZXQgPSBQVFJfRVJSKGRzaS0+YnVzX2Nsayk7 Cj4gLQkJZ290byBlcnJfZGVsX2NvbXBvbmVudDsKPiArCWRzaS0+Y2xrcyA9IGRldm1fa3phbGxv YyhkZXYsCj4gKwkJCXNpemVvZigqZHNpLT5jbGtzKSAqIGRzaS0+ZHJpdmVyX2RhdGEtPm51bV9j bGtzLAo+ICsJCQlHRlBfS0VSTkVMKTsKPiArCWZvciAoaSA9IDA7IGkgPCBkc2ktPmRyaXZlcl9k YXRhLT5udW1fY2xrczsgaSsrKSB7Cj4gKwkJZHNpLT5jbGtzW2ldID0gZGV2bV9jbGtfZ2V0KGRl diwgY2xrX25hbWVzW2ldKTsKPiArCQlpZiAoSVNfRVJSKGRzaS0+Y2xrc1tpXSkpIHsKPiArCQkJ ZGV2X2luZm8oZGV2LCAiZmFpbGVkIHRvIGdldCB0aGUgY2xvY2s6ICVzXG4iLAo+ICsJCQkJCQkJ CWNsa19uYW1lc1tpXSk7Cj4gKwkJCXJldCA9IFBUUl9FUlIoZHNpLT5jbGtzW2ldKTsKPiArCQkJ Z290byBlcnJfZGVsX2NvbXBvbmVudDsKPiArCQl9Cj4gIAl9Cj4gCj4gIAlyZXMgPSBwbGF0Zm9y bV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOwo+IC0tCj4gMS45LjEKPiAK PiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1k ZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==