From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2 5/7] drm/i915: use id from intel_shared_dpll.info Date: Fri, 23 Mar 2018 18:21:36 +0200 Message-ID: <20180323162136.GD5453@intel.com> References: <20180320220637.21480-1-lucas.demarchi@intel.com> <20180320220637.21480-6-lucas.demarchi@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 014456E219 for ; Fri, 23 Mar 2018 16:21:40 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20180320220637.21480-6-lucas.demarchi@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lucas De Marchi Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBNYXIgMjAsIDIwMTggYXQgMDM6MDY6MzVQTSAtMDcwMCwgTHVjYXMgRGUgTWFyY2hp IHdyb3RlOgo+IFJlcGxhY2UgYWxsIHVzZXJzIG9mIHBsbC0+aWQgdG8gdXNlIHBsbC0+aW5mby0+ aWQuIEluIGZ1bmN0aW9ucyB1c2luZwo+IHRoaXMgbW9yZSB0aGFuIG9uY2UgaXQgd2FzIHByZWZl cnJlZCB0byBhZGQgYW4gaWQgdmFyaWFibGUgdG8gbWFrZSB0aGUKPiBjb2RlIGVhc2llciB0byBy ZWFkLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEx1Y2FzIERlIE1hcmNoaSA8bHVjYXMuZGVtYXJjaGlA aW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAg IHwgICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jICAgICAgfCAgIDgg Ky0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYyB8IDE2MCArKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RwbGxfbWdyLmggfCAgMTAgKy0tCj4gIDQgZmlsZXMgY2hhbmdlZCwgOTggaW5zZXJ0aW9ucygr KSwgODIgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBp bmRleCAwNTdmZTEyMTI0ZDguLmZmOTA1NzdkYTQ1MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jCj4gQEAgLTMyODYsNyArMzI4Niw3IEBAIHN0YXRpYyBpbnQgaTkxNV9zaGFy ZWRfZHBsbHNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCQlzdHJ1 Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCA9ICZkZXZfcHJpdi0+c2hhcmVkX2RwbGxzW2ldOwo+ ICAKPiAgCQlzZXFfcHJpbnRmKG0sICJEUExMJWk6ICVzLCBpZDogJWlcbiIsIGksIHBsbC0+aW5m by0+bmFtZSwKPiAtCQkJICAgcGxsLT5pZCk7Cj4gKwkJCSAgIHBsbC0+aW5mby0+aWQpOwo+ICAJ CXNlcV9wcmludGYobSwgIiBjcnRjX21hc2s6IDB4JTA4eCwgYWN0aXZlOiAweCV4LCBvbjogJXNc biIsCj4gIAkJCSAgIHBsbC0+c3RhdGUuY3J0Y19tYXNrLCBwbGwtPmFjdGl2ZV9tYXNrLCB5ZXNu byhwbGwtPm9uKSk7Cj4gIAkJc2VxX3ByaW50ZihtLCAiIHRyYWNrZWQgaGFyZHdhcmUgc3RhdGU6 XG4iKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+IGluZGV4IDhjMmQ3Nzg1NjBmMC4uOTBh ZDYyMWU5MmJkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiBAQCAtODc1LDcgKzg3 NSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3dhaXRfZGRpX2J1Zl9pZGxlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCj4gIHN0YXRpYyB1aW50MzJfdCBoc3dfcGxsX3RvX2Rk aV9wbGxfc2VsKGNvbnN0IHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsKQo+ICB7Cj4gLQlz d2l0Y2ggKHBsbC0+aWQpIHsKPiArCXN3aXRjaCAocGxsLT5pbmZvLT5pZCkgewo+ICAJY2FzZSBE UExMX0lEX1dSUExMMToKPiAgCQlyZXR1cm4gUE9SVF9DTEtfU0VMX1dSUExMMTsKPiAgCWNhc2Ug RFBMTF9JRF9XUlBMTDI6Cj4gQEAgLTg4OSw3ICs4ODksNyBAQCBzdGF0aWMgdWludDMyX3QgaHN3 X3BsbF90b19kZGlfcGxsX3NlbChjb25zdCBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCkK PiAgCWNhc2UgRFBMTF9JRF9MQ1BMTF8yNzAwOgo+ICAJCXJldHVybiBQT1JUX0NMS19TRUxfTENQ TExfMjcwMDsKPiAgCWRlZmF1bHQ6Cj4gLQkJTUlTU0lOR19DQVNFKHBsbC0+aWQpOwo+ICsJCU1J U1NJTkdfQ0FTRShwbGwtPmluZm8tPmlkKTsKPiAgCQlyZXR1cm4gUE9SVF9DTEtfU0VMX05PTkU7 Cj4gIAl9Cj4gIH0KPiBAQCAtMjEzMSw3ICsyMTMxLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRp X2Nsa19zZWxlY3Qoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkJLyogQ29uZmln dXJlIERQQ0xLQV9DRkdDUjAgdG8gbWFwIHRoZSBEUExMIHRvIHRoZSBEREkuICovCj4gIAkJdmFs ID0gSTkxNV9SRUFEKERQQ0xLQV9DRkdDUjApOwo+ICAJCXZhbCAmPSB+RFBDTEtBX0NGR0NSMF9E RElfQ0xLX1NFTF9NQVNLKHBvcnQpOwo+IC0JCXZhbCB8PSBEUENMS0FfQ0ZHQ1IwX0RESV9DTEtf U0VMKHBsbC0+aWQsIHBvcnQpOwo+ICsJCXZhbCB8PSBEUENMS0FfQ0ZHQ1IwX0RESV9DTEtfU0VM KHBsbC0+aW5mby0+aWQsIHBvcnQpOwo+ICAJCUk5MTVfV1JJVEUoRFBDTEtBX0NGR0NSMCwgdmFs KTsKPiAgCj4gIAkJLyoKPiBAQCAtMjE0OCw3ICsyMTQ4LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf ZGRpX2Nsa19zZWxlY3Qoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAo+ICAJCXZh bCAmPSB+KERQTExfQ1RSTDJfRERJX0NMS19PRkYocG9ydCkgfAo+ICAJCQkgRFBMTF9DVFJMMl9E RElfQ0xLX1NFTF9NQVNLKHBvcnQpKTsKPiAtCQl2YWwgfD0gKERQTExfQ1RSTDJfRERJX0NMS19T RUwocGxsLT5pZCwgcG9ydCkgfAo+ICsJCXZhbCB8PSAoRFBMTF9DVFJMMl9ERElfQ0xLX1NFTChw bGwtPmluZm8tPmlkLCBwb3J0KSB8Cj4gIAkJCURQTExfQ1RSTDJfRERJX1NFTF9PVkVSUklERShw b3J0KSk7Cj4gIAo+ICAJCUk5MTVfV1JJVEUoRFBMTF9DVFJMMiwgdmFsKTsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RwbGxfbWdyLmMKPiBpbmRleCBlZDQ2YWRlMGVmZmYuLjQ4NDY2YjE5ZDFm NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYwo+IEBAIC0yOTEsMTkg KzI5MSwxOSBAQCBpbnRlbF9yZWZlcmVuY2Vfc2hhcmVkX2RwbGwoc3RydWN0IGludGVsX3NoYXJl ZF9kcGxsICpwbGwsCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbF9zdGF0ZSAqc2hh cmVkX2RwbGw7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiAtCWVudW0gaW50ZWxfZHBsbF9pZCBpID0gcGxsLT5pZDsK PiArCWNvbnN0IGVudW0gaW50ZWxfZHBsbF9pZCBpZCA9IHBsbC0+aW5mby0+aWQ7CgpXZSBkb24n dCBnZW5lcmFsbHkgbWFrZSB2YXJhaWJsZXMgY29uc3QuIEkgZ3Vlc3MgdGhlcmUgYXJlIGEgZmV3 CmV4Y2VwdGlvbnMgaGVyZSBhbmQgdGhlcmUgdGhvdWdoLgoKQW55d2F5cyBwYXRoZXMgMS01IGFy ZQpSZXZpZXdlZC1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVs LmNvbT4KCj4gIAo+ICAJc2hhcmVkX2RwbGwgPSBpbnRlbF9hdG9taWNfZ2V0X3NoYXJlZF9kcGxs X3N0YXRlKGNydGNfc3RhdGUtPmJhc2Uuc3RhdGUpOwo+ICAKPiAtCWlmIChzaGFyZWRfZHBsbFtp XS5jcnRjX21hc2sgPT0gMCkKPiAtCQlzaGFyZWRfZHBsbFtpXS5od19zdGF0ZSA9Cj4gKwlpZiAo c2hhcmVkX2RwbGxbaWRdLmNydGNfbWFzayA9PSAwKQo+ICsJCXNoYXJlZF9kcGxsW2lkXS5od19z dGF0ZSA9Cj4gIAkJCWNydGNfc3RhdGUtPmRwbGxfaHdfc3RhdGU7Cj4gIAo+ICAJY3J0Y19zdGF0 ZS0+c2hhcmVkX2RwbGwgPSBwbGw7Cj4gIAlEUk1fREVCVUdfRFJJVkVSKCJ1c2luZyAlcyBmb3Ig cGlwZSAlY1xuIiwgcGxsLT5pbmZvLT5uYW1lLAo+ICAJCQkgcGlwZV9uYW1lKGNydGMtPnBpcGUp KTsKPiAgCj4gLQlzaGFyZWRfZHBsbFtwbGwtPmlkXS5jcnRjX21hc2sgfD0gMSA8PCBjcnRjLT5w aXBlOwo+ICsJc2hhcmVkX2RwbGxbaWRdLmNydGNfbWFzayB8PSAxIDw8IGNydGMtPnBpcGU7Cj4g IH0KPiAgCj4gIC8qKgo+IEBAIC0zNDMsMTUgKzM0MywxNiBAQCBzdGF0aWMgYm9vbCBpYnhfcGNo X2RwbGxfZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAg CQkJCSAgICAgIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsLAo+ICAJCQkJICAgICAgc3Ry dWN0IGludGVsX2RwbGxfaHdfc3RhdGUgKmh3X3N0YXRlKQo+ICB7Cj4gKwljb25zdCBlbnVtIGlu dGVsX2RwbGxfaWQgaWQgPSBwbGwtPmluZm8tPmlkOwo+ICAJdWludDMyX3QgdmFsOwo+ICAKPiAg CWlmICghaW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwgUE9XRVJf RE9NQUlOX1BMTFMpKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gLQl2YWwgPSBJOTE1X1JFQUQo UENIX0RQTEwocGxsLT5pZCkpOwo+ICsJdmFsID0gSTkxNV9SRUFEKFBDSF9EUExMKGlkKSk7Cj4g IAlod19zdGF0ZS0+ZHBsbCA9IHZhbDsKPiAtCWh3X3N0YXRlLT5mcDAgPSBJOTE1X1JFQUQoUENI X0ZQMChwbGwtPmlkKSk7Cj4gLQlod19zdGF0ZS0+ZnAxID0gSTkxNV9SRUFEKFBDSF9GUDEocGxs LT5pZCkpOwo+ICsJaHdfc3RhdGUtPmZwMCA9IEk5MTVfUkVBRChQQ0hfRlAwKGlkKSk7Cj4gKwlo d19zdGF0ZS0+ZnAxID0gSTkxNV9SRUFEKFBDSF9GUDEoaWQpKTsKPiAgCj4gIAlpbnRlbF9kaXNw bGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX1BMTFMpOwo+ICAKPiBAQCAtMzYx LDggKzM2MiwxMCBAQCBzdGF0aWMgYm9vbCBpYnhfcGNoX2RwbGxfZ2V0X2h3X3N0YXRlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgc3RhdGljIHZvaWQgaWJ4X3BjaF9kcGxs X3ByZXBhcmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJIHN0cnVj dCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsKQo+ICB7Cj4gLQlJOTE1X1dSSVRFKFBDSF9GUDAocGxs LT5pZCksIHBsbC0+c3RhdGUuaHdfc3RhdGUuZnAwKTsKPiAtCUk5MTVfV1JJVEUoUENIX0ZQMShw bGwtPmlkKSwgcGxsLT5zdGF0ZS5od19zdGF0ZS5mcDEpOwo+ICsJY29uc3QgZW51bSBpbnRlbF9k cGxsX2lkIGlkID0gcGxsLT5pbmZvLT5pZDsKPiArCj4gKwlJOTE1X1dSSVRFKFBDSF9GUDAoaWQp LCBwbGwtPnN0YXRlLmh3X3N0YXRlLmZwMCk7Cj4gKwlJOTE1X1dSSVRFKFBDSF9GUDEoaWQpLCBw bGwtPnN0YXRlLmh3X3N0YXRlLmZwMSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGlieF9hc3Nl cnRfcGNoX3JlZmNsa19lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiBAQCAtMzgxLDEzICszODQsMTUgQEAgc3RhdGljIHZvaWQgaWJ4X2Fzc2VydF9wY2hfcmVmY2xr X2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICBzdGF0aWMgdm9p ZCBpYnhfcGNoX2RwbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiAgCQkJCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsKQo+ICB7Cj4gKwljb25zdCBlbnVt IGludGVsX2RwbGxfaWQgaWQgPSBwbGwtPmluZm8tPmlkOwo+ICsKPiAgCS8qIFBDSCByZWZjbG9j ayBtdXN0IGJlIGVuYWJsZWQgZmlyc3QgKi8KPiAgCWlieF9hc3NlcnRfcGNoX3JlZmNsa19lbmFi bGVkKGRldl9wcml2KTsKPiAgCj4gLQlJOTE1X1dSSVRFKFBDSF9EUExMKHBsbC0+aWQpLCBwbGwt PnN0YXRlLmh3X3N0YXRlLmRwbGwpOwo+ICsJSTkxNV9XUklURShQQ0hfRFBMTChpZCksIHBsbC0+ c3RhdGUuaHdfc3RhdGUuZHBsbCk7Cj4gIAo+ICAJLyogV2FpdCBmb3IgdGhlIGNsb2NrcyB0byBz dGFiaWxpemUuICovCj4gLQlQT1NUSU5HX1JFQUQoUENIX0RQTEwocGxsLT5pZCkpOwo+ICsJUE9T VElOR19SRUFEKFBDSF9EUExMKGlkKSk7Cj4gIAl1ZGVsYXkoMTUwKTsKPiAgCj4gIAkvKiBUaGUg cGl4ZWwgbXVsdGlwbGllciBjYW4gb25seSBiZSB1cGRhdGVkIG9uY2UgdGhlCj4gQEAgLTM5NSwx NCArNDAwLDE1IEBAIHN0YXRpYyB2b2lkIGlieF9wY2hfZHBsbF9lbmFibGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJICoKPiAgCSAqIFNvIHdyaXRlIGl0IGFnYWluLgo+ ICAJICovCj4gLQlJOTE1X1dSSVRFKFBDSF9EUExMKHBsbC0+aWQpLCBwbGwtPnN0YXRlLmh3X3N0 YXRlLmRwbGwpOwo+IC0JUE9TVElOR19SRUFEKFBDSF9EUExMKHBsbC0+aWQpKTsKPiArCUk5MTVf V1JJVEUoUENIX0RQTEwoaWQpLCBwbGwtPnN0YXRlLmh3X3N0YXRlLmRwbGwpOwo+ICsJUE9TVElO R19SRUFEKFBDSF9EUExMKGlkKSk7Cj4gIAl1ZGVsYXkoMjAwKTsKPiAgfQo+ICAKPiAgc3RhdGlj IHZvaWQgaWJ4X3BjaF9kcGxsX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ICAJCQkJIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsKQo+ICB7Cj4gKwljb25z dCBlbnVtIGludGVsX2RwbGxfaWQgaWQgPSBwbGwtPmluZm8tPmlkOwo+ICAJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9ICZkZXZfcHJpdi0+ZHJtOwo+ICAJc3RydWN0IGludGVsX2NydGMgKmNydGM7 Cj4gIAo+IEBAIC00MTIsOCArNDE4LDggQEAgc3RhdGljIHZvaWQgaWJ4X3BjaF9kcGxsX2Rpc2Fi bGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQlhc3NlcnRfcGNoX3Ry YW5zY29kZXJfZGlzYWJsZWQoZGV2X3ByaXYsIGNydGMtPnBpcGUpOwo+ICAJfQo+ICAKPiAtCUk5 MTVfV1JJVEUoUENIX0RQTEwocGxsLT5pZCksIDApOwo+IC0JUE9TVElOR19SRUFEKFBDSF9EUExM KHBsbC0+aWQpKTsKPiArCUk5MTVfV1JJVEUoUENIX0RQTEwoaWQpLCAwKTsKPiArCVBPU1RJTkdf UkVBRChQQ0hfRFBMTChpZCkpOwo+ICAJdWRlbGF5KDIwMCk7Cj4gIH0KPiAgCj4gQEAgLTQ2OSw4 ICs0NzUsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbF9mdW5jcyBp YnhfcGNoX2RwbGxfZnVuY3MgPSB7Cj4gIHN0YXRpYyB2b2lkIGhzd19kZGlfd3JwbGxfZW5hYmxl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJICAgICAgIHN0cnVjdCBp bnRlbF9zaGFyZWRfZHBsbCAqcGxsKQo+ICB7Cj4gLQlJOTE1X1dSSVRFKFdSUExMX0NUTChwbGwt PmlkKSwgcGxsLT5zdGF0ZS5od19zdGF0ZS53cnBsbCk7Cj4gLQlQT1NUSU5HX1JFQUQoV1JQTExf Q1RMKHBsbC0+aWQpKTsKPiArCWNvbnN0IGVudW0gaW50ZWxfZHBsbF9pZCBpZCA9IHBsbC0+aW5m by0+aWQ7Cj4gKwo+ICsJSTkxNV9XUklURShXUlBMTF9DVEwoaWQpLCBwbGwtPnN0YXRlLmh3X3N0 YXRlLndycGxsKTsKPiArCVBPU1RJTkdfUkVBRChXUlBMTF9DVEwoaWQpKTsKPiAgCXVkZWxheSgy MCk7Cj4gIH0KPiAgCj4gQEAgLTQ4NSwxMSArNDkzLDEyIEBAIHN0YXRpYyB2b2lkIGhzd19kZGlf c3BsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICBzdGF0aWMg dm9pZCBoc3dfZGRpX3dycGxsX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ICAJCQkJICBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCkKPiAgewo+ICsJY29u c3QgZW51bSBpbnRlbF9kcGxsX2lkIGlkID0gcGxsLT5pbmZvLT5pZDsKPiAgCXVpbnQzMl90IHZh bDsKPiAgCj4gLQl2YWwgPSBJOTE1X1JFQUQoV1JQTExfQ1RMKHBsbC0+aWQpKTsKPiAtCUk5MTVf V1JJVEUoV1JQTExfQ1RMKHBsbC0+aWQpLCB2YWwgJiB+V1JQTExfUExMX0VOQUJMRSk7Cj4gLQlQ T1NUSU5HX1JFQUQoV1JQTExfQ1RMKHBsbC0+aWQpKTsKPiArCXZhbCA9IEk5MTVfUkVBRChXUlBM TF9DVEwoaWQpKTsKPiArCUk5MTVfV1JJVEUoV1JQTExfQ1RMKGlkKSwgdmFsICYgfldSUExMX1BM TF9FTkFCTEUpOwo+ICsJUE9TVElOR19SRUFEKFdSUExMX0NUTChpZCkpOwo+ICB9Cj4gIAo+ICBz dGF0aWMgdm9pZCBoc3dfZGRpX3NwbGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gQEAgLTUwNiwxMiArNTE1LDEzIEBAIHN0YXRpYyBib29sIGhzd19kZGlfd3Jw bGxfZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJ CSAgICAgICBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCwKPiAgCQkJCSAgICAgICBzdHJ1 Y3QgaW50ZWxfZHBsbF9od19zdGF0ZSAqaHdfc3RhdGUpCj4gIHsKPiArCWNvbnN0IGVudW0gaW50 ZWxfZHBsbF9pZCBpZCA9IHBsbC0+aW5mby0+aWQ7Cj4gIAl1aW50MzJfdCB2YWw7Cj4gIAo+ICAJ aWYgKCFpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9pZl9lbmFibGVkKGRldl9wcml2LCBQT1dFUl9E T01BSU5fUExMUykpCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiAtCXZhbCA9IEk5MTVfUkVBRChX UlBMTF9DVEwocGxsLT5pZCkpOwo+ICsJdmFsID0gSTkxNV9SRUFEKFdSUExMX0NUTChpZCkpOwo+ ICAJaHdfc3RhdGUtPndycGxsID0gdmFsOwo+ICAKPiAgCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0 KGRldl9wcml2LCBQT1dFUl9ET01BSU5fUExMUyk7Cj4gQEAgLTkxNywxMyArOTI3LDE1IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3Qgc2tsX2RwbGxfcmVncyBza2xfZHBsbF9yZWdzWzRdID0gewo+ICBz dGF0aWMgdm9pZCBza2xfZGRpX3BsbF93cml0ZV9jdHJsMShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gIAkJCQkgICAgc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGwpCj4g IHsKPiArCWNvbnN0IGVudW0gaW50ZWxfZHBsbF9pZCBpZCA9IHBsbC0+aW5mby0+aWQ7Cj4gIAl1 aW50MzJfdCB2YWw7Cj4gIAo+ICAJdmFsID0gSTkxNV9SRUFEKERQTExfQ1RSTDEpOwo+ICAKPiAt CXZhbCAmPSB+KERQTExfQ1RSTDFfSERNSV9NT0RFKHBsbC0+aWQpIHwgRFBMTF9DVFJMMV9TU0Mo cGxsLT5pZCkgfAo+IC0JCSBEUExMX0NUUkwxX0xJTktfUkFURV9NQVNLKHBsbC0+aWQpKTsKPiAt CXZhbCB8PSBwbGwtPnN0YXRlLmh3X3N0YXRlLmN0cmwxIDw8IChwbGwtPmlkICogNik7Cj4gKwl2 YWwgJj0gfihEUExMX0NUUkwxX0hETUlfTU9ERShpZCkgfAo+ICsJCSBEUExMX0NUUkwxX1NTQyhp ZCkgfAo+ICsJCSBEUExMX0NUUkwxX0xJTktfUkFURV9NQVNLKGlkKSk7Cj4gKwl2YWwgfD0gcGxs LT5zdGF0ZS5od19zdGF0ZS5jdHJsMSA8PCAoaWQgKiA2KTsKPiAgCj4gIAlJOTE1X1dSSVRFKERQ TExfQ1RSTDEsIHZhbCk7Cj4gIAlQT1NUSU5HX1JFQUQoRFBMTF9DVFJMMSk7Cj4gQEAgLTkzMywy NCArOTQ1LDI1IEBAIHN0YXRpYyB2b2lkIHNrbF9kZGlfcGxsX2VuYWJsZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2Rw bGwgKnBsbCkKPiAgewo+ICAJY29uc3Qgc3RydWN0IHNrbF9kcGxsX3JlZ3MgKnJlZ3MgPSBza2xf ZHBsbF9yZWdzOwo+ICsJY29uc3QgZW51bSBpbnRlbF9kcGxsX2lkIGlkID0gcGxsLT5pbmZvLT5p ZDsKPiAgCj4gIAlza2xfZGRpX3BsbF93cml0ZV9jdHJsMShkZXZfcHJpdiwgcGxsKTsKPiAgCj4g LQlJOTE1X1dSSVRFKHJlZ3NbcGxsLT5pZF0uY2ZnY3IxLCBwbGwtPnN0YXRlLmh3X3N0YXRlLmNm Z2NyMSk7Cj4gLQlJOTE1X1dSSVRFKHJlZ3NbcGxsLT5pZF0uY2ZnY3IyLCBwbGwtPnN0YXRlLmh3 X3N0YXRlLmNmZ2NyMik7Cj4gLQlQT1NUSU5HX1JFQUQocmVnc1twbGwtPmlkXS5jZmdjcjEpOwo+ IC0JUE9TVElOR19SRUFEKHJlZ3NbcGxsLT5pZF0uY2ZnY3IyKTsKPiArCUk5MTVfV1JJVEUocmVn c1tpZF0uY2ZnY3IxLCBwbGwtPnN0YXRlLmh3X3N0YXRlLmNmZ2NyMSk7Cj4gKwlJOTE1X1dSSVRF KHJlZ3NbaWRdLmNmZ2NyMiwgcGxsLT5zdGF0ZS5od19zdGF0ZS5jZmdjcjIpOwo+ICsJUE9TVElO R19SRUFEKHJlZ3NbaWRdLmNmZ2NyMSk7Cj4gKwlQT1NUSU5HX1JFQUQocmVnc1tpZF0uY2ZnY3Iy KTsKPiAgCj4gIAkvKiB0aGUgZW5hYmxlIGJpdCBpcyBhbHdheXMgYml0IDMxICovCj4gLQlJOTE1 X1dSSVRFKHJlZ3NbcGxsLT5pZF0uY3RsLAo+IC0JCSAgIEk5MTVfUkVBRChyZWdzW3BsbC0+aWRd LmN0bCkgfCBMQ1BMTF9QTExfRU5BQkxFKTsKPiArCUk5MTVfV1JJVEUocmVnc1tpZF0uY3RsLAo+ ICsJCSAgIEk5MTVfUkVBRChyZWdzW2lkXS5jdGwpIHwgTENQTExfUExMX0VOQUJMRSk7Cj4gIAo+ ICAJaWYgKGludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LAo+ICAJCQkJICAgIERQTExf U1RBVFVTLAo+IC0JCQkJICAgIERQTExfTE9DSyhwbGwtPmlkKSwKPiAtCQkJCSAgICBEUExMX0xP Q0socGxsLT5pZCksCj4gKwkJCQkgICAgRFBMTF9MT0NLKGlkKSwKPiArCQkJCSAgICBEUExMX0xP Q0soaWQpLAo+ICAJCQkJICAgIDUpKQo+IC0JCURSTV9FUlJPUigiRFBMTCAlZCBub3QgbG9ja2Vk XG4iLCBwbGwtPmlkKTsKPiArCQlEUk1fRVJST1IoIkRQTEwgJWQgbm90IGxvY2tlZFxuIiwgaWQp Owo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBza2xfZGRpX2RwbGwwX2VuYWJsZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gQEAgLTk2MywxMSArOTc2LDEyIEBAIHN0YXRpYyB2 b2lkIHNrbF9kZGlfcGxsX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+ICAJCQkJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGwpCj4gIHsKPiAgCWNvbnN0IHN0 cnVjdCBza2xfZHBsbF9yZWdzICpyZWdzID0gc2tsX2RwbGxfcmVnczsKPiArCWNvbnN0IGVudW0g aW50ZWxfZHBsbF9pZCBpZCA9IHBsbC0+aW5mby0+aWQ7Cj4gIAo+ICAJLyogdGhlIGVuYWJsZSBi aXQgaXMgYWx3YXlzIGJpdCAzMSAqLwo+IC0JSTkxNV9XUklURShyZWdzW3BsbC0+aWRdLmN0bCwK PiAtCQkgICBJOTE1X1JFQUQocmVnc1twbGwtPmlkXS5jdGwpICYgfkxDUExMX1BMTF9FTkFCTEUp Owo+IC0JUE9TVElOR19SRUFEKHJlZ3NbcGxsLT5pZF0uY3RsKTsKPiArCUk5MTVfV1JJVEUocmVn c1tpZF0uY3RsLAo+ICsJCSAgIEk5MTVfUkVBRChyZWdzW2lkXS5jdGwpICYgfkxDUExMX1BMTF9F TkFCTEUpOwo+ICsJUE9TVElOR19SRUFEKHJlZ3NbaWRdLmN0bCk7Cj4gIH0KPiAgCj4gIHN0YXRp YyB2b2lkIHNrbF9kZGlfZHBsbDBfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gQEAgLTk4MSw2ICs5OTUsNyBAQCBzdGF0aWMgYm9vbCBza2xfZGRpX3BsbF9nZXRf aHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICB7Cj4gIAl1aW50 MzJfdCB2YWw7Cj4gIAljb25zdCBzdHJ1Y3Qgc2tsX2RwbGxfcmVncyAqcmVncyA9IHNrbF9kcGxs X3JlZ3M7Cj4gKwljb25zdCBlbnVtIGludGVsX2RwbGxfaWQgaWQgPSBwbGwtPmluZm8tPmlkOwo+ ICAJYm9vbCByZXQ7Cj4gIAo+ICAJaWYgKCFpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9pZl9lbmFi bGVkKGRldl9wcml2LCBQT1dFUl9ET01BSU5fUExMUykpCj4gQEAgLTk4OCwxNyArMTAwMywxNyBA QCBzdGF0aWMgYm9vbCBza2xfZGRpX3BsbF9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ICAKPiAgCXJldCA9IGZhbHNlOwo+ICAKPiAtCXZhbCA9IEk5MTVf UkVBRChyZWdzW3BsbC0+aWRdLmN0bCk7Cj4gKwl2YWwgPSBJOTE1X1JFQUQocmVnc1tpZF0uY3Rs KTsKPiAgCWlmICghKHZhbCAmIExDUExMX1BMTF9FTkFCTEUpKQo+ICAJCWdvdG8gb3V0Owo+ICAK PiAgCXZhbCA9IEk5MTVfUkVBRChEUExMX0NUUkwxKTsKPiAtCWh3X3N0YXRlLT5jdHJsMSA9ICh2 YWwgPj4gKHBsbC0+aWQgKiA2KSkgJiAweDNmOwo+ICsJaHdfc3RhdGUtPmN0cmwxID0gKHZhbCA+ PiAoaWQgKiA2KSkgJiAweDNmOwo+ICAKPiAgCS8qIGF2b2lkIHJlYWRpbmcgYmFjayBzdGFsZSB2 YWx1ZXMgaWYgSERNSSBtb2RlIGlzIG5vdCBlbmFibGVkICovCj4gLQlpZiAodmFsICYgRFBMTF9D VFJMMV9IRE1JX01PREUocGxsLT5pZCkpIHsKPiAtCQlod19zdGF0ZS0+Y2ZnY3IxID0gSTkxNV9S RUFEKHJlZ3NbcGxsLT5pZF0uY2ZnY3IxKTsKPiAtCQlod19zdGF0ZS0+Y2ZnY3IyID0gSTkxNV9S RUFEKHJlZ3NbcGxsLT5pZF0uY2ZnY3IyKTsKPiArCWlmICh2YWwgJiBEUExMX0NUUkwxX0hETUlf TU9ERShpZCkpIHsKPiArCQlod19zdGF0ZS0+Y2ZnY3IxID0gSTkxNV9SRUFEKHJlZ3NbaWRdLmNm Z2NyMSk7Cj4gKwkJaHdfc3RhdGUtPmNmZ2NyMiA9IEk5MTVfUkVBRChyZWdzW2lkXS5jZmdjcjIp Owo+ICAJfQo+ICAJcmV0ID0gdHJ1ZTsKPiAgCj4gQEAgLTEwMTQsNiArMTAyOSw3IEBAIHN0YXRp YyBib29sIHNrbF9kZGlfZHBsbDBfZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiAgewo+ICAJdWludDMyX3QgdmFsOwo+ICAJY29uc3Qgc3RydWN0IHNrbF9k cGxsX3JlZ3MgKnJlZ3MgPSBza2xfZHBsbF9yZWdzOwo+ICsJY29uc3QgZW51bSBpbnRlbF9kcGxs X2lkIGlkID0gcGxsLT5pbmZvLT5pZDsKPiAgCWJvb2wgcmV0Owo+ICAKPiAgCWlmICghaW50ZWxf ZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX1BMTFMp KQo+IEBAIC0xMDIyLDEyICsxMDM4LDEyIEBAIHN0YXRpYyBib29sIHNrbF9kZGlfZHBsbDBfZ2V0 X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCXJldCA9IGZh bHNlOwo+ICAKPiAgCS8qIERQTEwwIGlzIGFsd2F5cyBlbmFibGVkIHNpbmNlIGl0IGRyaXZlcyBD RENMSyAqLwo+IC0JdmFsID0gSTkxNV9SRUFEKHJlZ3NbcGxsLT5pZF0uY3RsKTsKPiArCXZhbCA9 IEk5MTVfUkVBRChyZWdzW2lkXS5jdGwpOwo+ICAJaWYgKFdBUk5fT04oISh2YWwgJiBMQ1BMTF9Q TExfRU5BQkxFKSkpCj4gIAkJZ290byBvdXQ7Cj4gIAo+ICAJdmFsID0gSTkxNV9SRUFEKERQTExf Q1RSTDEpOwo+IC0JaHdfc3RhdGUtPmN0cmwxID0gKHZhbCA+PiAocGxsLT5pZCAqIDYpKSAmIDB4 M2Y7Cj4gKwlod19zdGF0ZS0+Y3RybDEgPSAodmFsID4+IChpZCAqIDYpKSAmIDB4M2Y7Cj4gIAo+ ICAJcmV0ID0gdHJ1ZTsKPiAgCj4gQEAgLTE0MjcsNyArMTQ0Myw3IEBAIHN0YXRpYyB2b2lkIGJ4 dF9kZGlfcGxsX2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJ CQlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCkKPiAgewo+ICAJdWludDMyX3QgdGVtcDsK PiAtCWVudW0gcG9ydCBwb3J0ID0gKGVudW0gcG9ydClwbGwtPmlkOwkvKiAxOjEgcG9ydC0+UExM IG1hcHBpbmcgKi8KPiArCWVudW0gcG9ydCBwb3J0ID0gKGVudW0gcG9ydClwbGwtPmluZm8tPmlk OyAvKiAxOjEgcG9ydC0+UExMIG1hcHBpbmcgKi8KPiAgCWVudW0gZHBpb19waHkgcGh5Owo+ICAJ ZW51bSBkcGlvX2NoYW5uZWwgY2g7Cj4gIAo+IEBAIC0xNTQ2LDcgKzE1NjIsNyBAQCBzdGF0aWMg dm9pZCBieHRfZGRpX3BsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+ICBzdGF0aWMgdm9pZCBieHRfZGRpX3BsbF9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiAgCQkJCQlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCkKPiAg ewo+IC0JZW51bSBwb3J0IHBvcnQgPSAoZW51bSBwb3J0KXBsbC0+aWQ7CS8qIDE6MSBwb3J0LT5Q TEwgbWFwcGluZyAqLwo+ICsJZW51bSBwb3J0IHBvcnQgPSAoZW51bSBwb3J0KXBsbC0+aW5mby0+ aWQ7IC8qIDE6MSBwb3J0LT5QTEwgbWFwcGluZyAqLwo+ICAJdWludDMyX3QgdGVtcDsKPiAgCj4g IAl0ZW1wID0gSTkxNV9SRUFEKEJYVF9QT1JUX1BMTF9FTkFCTEUocG9ydCkpOwo+IEBAIC0xNTY5 LDcgKzE1ODUsNyBAQCBzdGF0aWMgYm9vbCBieHRfZGRpX3BsbF9nZXRfaHdfc3RhdGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJCXN0cnVjdCBpbnRlbF9zaGFyZWRf ZHBsbCAqcGxsLAo+ICAJCQkJCXN0cnVjdCBpbnRlbF9kcGxsX2h3X3N0YXRlICpod19zdGF0ZSkK PiAgewo+IC0JZW51bSBwb3J0IHBvcnQgPSAoZW51bSBwb3J0KXBsbC0+aWQ7CS8qIDE6MSBwb3J0 LT5QTEwgbWFwcGluZyAqLwo+ICsJZW51bSBwb3J0IHBvcnQgPSAoZW51bSBwb3J0KXBsbC0+aW5m by0+aWQ7IC8qIDE6MSBwb3J0LT5QTEwgbWFwcGluZyAqLwo+ICAJdWludDMyX3QgdmFsOwo+ICAJ Ym9vbCByZXQ7Cj4gIAllbnVtIGRwaW9fcGh5IHBoeTsKPiBAQCAtMTk0OSwzOCArMTk2NSwzOSBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RwbGxfbWdyIGJ4dF9wbGxfbWdyID0gewo+ICBz dGF0aWMgdm9pZCBjbmxfZGRpX3BsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICAJCQkgICAgICAgc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGwpCj4gIHsK PiArCWNvbnN0IGVudW0gaW50ZWxfZHBsbF9pZCBpZCA9IHBsbC0+aW5mby0+aWQ7Cj4gIAl1aW50 MzJfdCB2YWw7Cj4gIAo+ICAJLyogMS4gRW5hYmxlIERQTEwgcG93ZXIgaW4gRFBMTF9FTkFCTEUu ICovCj4gLQl2YWwgPSBJOTE1X1JFQUQoQ05MX0RQTExfRU5BQkxFKHBsbC0+aWQpKTsKPiArCXZh bCA9IEk5MTVfUkVBRChDTkxfRFBMTF9FTkFCTEUoaWQpKTsKPiAgCXZhbCB8PSBQTExfUE9XRVJf RU5BQkxFOwo+IC0JSTkxNV9XUklURShDTkxfRFBMTF9FTkFCTEUocGxsLT5pZCksIHZhbCk7Cj4g KwlJOTE1X1dSSVRFKENOTF9EUExMX0VOQUJMRShpZCksIHZhbCk7Cj4gIAo+ICAJLyogMi4gV2Fp dCBmb3IgRFBMTCBwb3dlciBzdGF0ZSBlbmFibGVkIGluIERQTExfRU5BQkxFLiAqLwo+ICAJaWYg KGludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LAo+IC0JCQkJICAgIENOTF9EUExMX0VO QUJMRShwbGwtPmlkKSwKPiArCQkJCSAgICBDTkxfRFBMTF9FTkFCTEUoaWQpLAo+ICAJCQkJICAg IFBMTF9QT1dFUl9TVEFURSwKPiAgCQkJCSAgICBQTExfUE9XRVJfU1RBVEUsCj4gIAkJCQkgICAg NSkpCj4gLQkJRFJNX0VSUk9SKCJQTEwgJWQgUG93ZXIgbm90IGVuYWJsZWRcbiIsIHBsbC0+aWQp Owo+ICsJCURSTV9FUlJPUigiUExMICVkIFBvd2VyIG5vdCBlbmFibGVkXG4iLCBpZCk7Cj4gIAo+ ICAJLyoKPiAgCSAqIDMuIENvbmZpZ3VyZSBEUExMX0NGR0NSMCB0byBzZXQgU1NDIGVuYWJsZS9k aXNhYmxlLAo+ICAJICogc2VsZWN0IERQIG1vZGUsIGFuZCBzZXQgRFAgbGluayByYXRlLgo+ICAJ ICovCj4gIAl2YWwgPSBwbGwtPnN0YXRlLmh3X3N0YXRlLmNmZ2NyMDsKPiAtCUk5MTVfV1JJVEUo Q05MX0RQTExfQ0ZHQ1IwKHBsbC0+aWQpLCB2YWwpOwo+ICsJSTkxNV9XUklURShDTkxfRFBMTF9D RkdDUjAoaWQpLCB2YWwpOwo+ICAKPiAgCS8qIDQuIFJlYWIgYmFjayB0byBlbnN1cmUgd3JpdGVz IGNvbXBsZXRlZCAqLwo+IC0JUE9TVElOR19SRUFEKENOTF9EUExMX0NGR0NSMChwbGwtPmlkKSk7 Cj4gKwlQT1NUSU5HX1JFQUQoQ05MX0RQTExfQ0ZHQ1IwKGlkKSk7Cj4gIAo+ICAJLyogMy4gQ29u ZmlndXJlIERQTExfQ0ZHQ1IwICovCj4gIAkvKiBBdm9pZCB0b3VjaCBDRkdDUjEgaWYgSERNSSBt b2RlIGlzIG5vdCBlbmFibGVkICovCj4gIAlpZiAocGxsLT5zdGF0ZS5od19zdGF0ZS5jZmdjcjAg JiBEUExMX0NGR0NSMF9IRE1JX01PREUpIHsKPiAgCQl2YWwgPSBwbGwtPnN0YXRlLmh3X3N0YXRl LmNmZ2NyMTsKPiAtCQlJOTE1X1dSSVRFKENOTF9EUExMX0NGR0NSMShwbGwtPmlkKSwgdmFsKTsK PiArCQlJOTE1X1dSSVRFKENOTF9EUExMX0NGR0NSMShpZCksIHZhbCk7Cj4gIAkJLyogNC4gUmVh YiBiYWNrIHRvIGVuc3VyZSB3cml0ZXMgY29tcGxldGVkICovCj4gLQkJUE9TVElOR19SRUFEKENO TF9EUExMX0NGR0NSMShwbGwtPmlkKSk7Cj4gKwkJUE9TVElOR19SRUFEKENOTF9EUExMX0NGR0NS MShpZCkpOwo+ICAJfQo+ICAKPiAgCS8qCj4gQEAgLTE5OTMsMTcgKzIwMTAsMTcgQEAgc3RhdGlj IHZvaWQgY25sX2RkaV9wbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiAgCSAqLwo+ICAKPiAgCS8qIDYuIEVuYWJsZSBEUExMIGluIERQTExfRU5BQkxFLiAqLwo+ IC0JdmFsID0gSTkxNV9SRUFEKENOTF9EUExMX0VOQUJMRShwbGwtPmlkKSk7Cj4gKwl2YWwgPSBJ OTE1X1JFQUQoQ05MX0RQTExfRU5BQkxFKGlkKSk7Cj4gIAl2YWwgfD0gUExMX0VOQUJMRTsKPiAt CUk5MTVfV1JJVEUoQ05MX0RQTExfRU5BQkxFKHBsbC0+aWQpLCB2YWwpOwo+ICsJSTkxNV9XUklU RShDTkxfRFBMTF9FTkFCTEUoaWQpLCB2YWwpOwo+ICAKPiAgCS8qIDcuIFdhaXQgZm9yIFBMTCBs b2NrIHN0YXR1cyBpbiBEUExMX0VOQUJMRS4gKi8KPiAgCWlmIChpbnRlbF93YWl0X2Zvcl9yZWdp c3RlcihkZXZfcHJpdiwKPiAtCQkJCSAgICBDTkxfRFBMTF9FTkFCTEUocGxsLT5pZCksCj4gKwkJ CQkgICAgQ05MX0RQTExfRU5BQkxFKGlkKSwKPiAgCQkJCSAgICBQTExfTE9DSywKPiAgCQkJCSAg ICBQTExfTE9DSywKPiAgCQkJCSAgICA1KSkKPiAtCQlEUk1fRVJST1IoIlBMTCAlZCBub3QgbG9j a2VkXG4iLCBwbGwtPmlkKTsKPiArCQlEUk1fRVJST1IoIlBMTCAlZCBub3QgbG9ja2VkXG4iLCBp ZCk7Cj4gIAo+ICAJLyoKPiAgCSAqIDguIElmIHRoZSBmcmVxdWVuY3kgd2lsbCByZXN1bHQgaW4g YSBjaGFuZ2UgdG8gdGhlIHZvbHRhZ2UKPiBAQCAtMjAyMyw2ICsyMDQwLDcgQEAgc3RhdGljIHZv aWQgY25sX2RkaV9wbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiAgc3RhdGljIHZvaWQgY25sX2RkaV9wbGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gIAkJCQlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCkKPiAgewo+ ICsJY29uc3QgZW51bSBpbnRlbF9kcGxsX2lkIGlkID0gcGxsLT5pbmZvLT5pZDsKPiAgCXVpbnQz Ml90IHZhbDsKPiAgCj4gIAkvKgo+IEBAIC0yMDQwLDE3ICsyMDU4LDE3IEBAIHN0YXRpYyB2b2lk IGNubF9kZGlfcGxsX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ICAJICovCj4gIAo+ICAJLyogMy4gRGlzYWJsZSBEUExMIHRocm91Z2ggRFBMTF9FTkFCTEUuICov Cj4gLQl2YWwgPSBJOTE1X1JFQUQoQ05MX0RQTExfRU5BQkxFKHBsbC0+aWQpKTsKPiArCXZhbCA9 IEk5MTVfUkVBRChDTkxfRFBMTF9FTkFCTEUoaWQpKTsKPiAgCXZhbCAmPSB+UExMX0VOQUJMRTsK PiAtCUk5MTVfV1JJVEUoQ05MX0RQTExfRU5BQkxFKHBsbC0+aWQpLCB2YWwpOwo+ICsJSTkxNV9X UklURShDTkxfRFBMTF9FTkFCTEUoaWQpLCB2YWwpOwo+ICAKPiAgCS8qIDQuIFdhaXQgZm9yIFBM TCBub3QgbG9ja2VkIHN0YXR1cyBpbiBEUExMX0VOQUJMRS4gKi8KPiAgCWlmIChpbnRlbF93YWl0 X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwKPiAtCQkJCSAgICBDTkxfRFBMTF9FTkFCTEUocGxsLT5p ZCksCj4gKwkJCQkgICAgQ05MX0RQTExfRU5BQkxFKGlkKSwKPiAgCQkJCSAgICBQTExfTE9DSywK PiAgCQkJCSAgICAwLAo+ICAJCQkJICAgIDUpKQo+IC0JCURSTV9FUlJPUigiUExMICVkIGxvY2tl ZFxuIiwgcGxsLT5pZCk7Cj4gKwkJRFJNX0VSUk9SKCJQTEwgJWQgbG9ja2VkXG4iLCBpZCk7Cj4g IAo+ICAJLyoKPiAgCSAqIDUuIElmIHRoZSBmcmVxdWVuY3kgd2lsbCByZXN1bHQgaW4gYSBjaGFu Z2UgdG8gdGhlIHZvbHRhZ2UKPiBAQCAtMjA2MiwyMyArMjA4MCwyNCBAQCBzdGF0aWMgdm9pZCBj bmxfZGRpX3BsbF9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAg CSAqLwo+ICAKPiAgCS8qIDYuIERpc2FibGUgRFBMTCBwb3dlciBpbiBEUExMX0VOQUJMRS4gKi8K PiAtCXZhbCA9IEk5MTVfUkVBRChDTkxfRFBMTF9FTkFCTEUocGxsLT5pZCkpOwo+ICsJdmFsID0g STkxNV9SRUFEKENOTF9EUExMX0VOQUJMRShpZCkpOwo+ICAJdmFsICY9IH5QTExfUE9XRVJfRU5B QkxFOwo+IC0JSTkxNV9XUklURShDTkxfRFBMTF9FTkFCTEUocGxsLT5pZCksIHZhbCk7Cj4gKwlJ OTE1X1dSSVRFKENOTF9EUExMX0VOQUJMRShpZCksIHZhbCk7Cj4gIAo+ICAJLyogNy4gV2FpdCBm b3IgRFBMTCBwb3dlciBzdGF0ZSBkaXNhYmxlZCBpbiBEUExMX0VOQUJMRS4gKi8KPiAgCWlmIChp bnRlbF93YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwKPiAtCQkJCSAgICBDTkxfRFBMTF9FTkFC TEUocGxsLT5pZCksCj4gKwkJCQkgICAgQ05MX0RQTExfRU5BQkxFKGlkKSwKPiAgCQkJCSAgICBQ TExfUE9XRVJfU1RBVEUsCj4gIAkJCQkgICAgMCwKPiAgCQkJCSAgICA1KSkKPiAtCQlEUk1fRVJS T1IoIlBMTCAlZCBQb3dlciBub3QgZGlzYWJsZWRcbiIsIHBsbC0+aWQpOwo+ICsJCURSTV9FUlJP UigiUExMICVkIFBvd2VyIG5vdCBkaXNhYmxlZFxuIiwgaWQpOwo+ICB9Cj4gIAo+ICBzdGF0aWMg Ym9vbCBjbmxfZGRpX3BsbF9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICAJCQkJICAgICBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCwKPiAgCQkJ CSAgICAgc3RydWN0IGludGVsX2RwbGxfaHdfc3RhdGUgKmh3X3N0YXRlKQo+ICB7Cj4gKwljb25z dCBlbnVtIGludGVsX2RwbGxfaWQgaWQgPSBwbGwtPmluZm8tPmlkOwo+ICAJdWludDMyX3QgdmFs Owo+ICAJYm9vbCByZXQ7Cj4gIAo+IEBAIC0yMDg3LDE2ICsyMTA2LDE2IEBAIHN0YXRpYyBib29s IGNubF9kZGlfcGxsX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gIAo+ICAJcmV0ID0gZmFsc2U7Cj4gIAo+IC0JdmFsID0gSTkxNV9SRUFEKENOTF9EUExM X0VOQUJMRShwbGwtPmlkKSk7Cj4gKwl2YWwgPSBJOTE1X1JFQUQoQ05MX0RQTExfRU5BQkxFKGlk KSk7Cj4gIAlpZiAoISh2YWwgJiBQTExfRU5BQkxFKSkKPiAgCQlnb3RvIG91dDsKPiAgCj4gLQl2 YWwgPSBJOTE1X1JFQUQoQ05MX0RQTExfQ0ZHQ1IwKHBsbC0+aWQpKTsKPiArCXZhbCA9IEk5MTVf UkVBRChDTkxfRFBMTF9DRkdDUjAoaWQpKTsKPiAgCWh3X3N0YXRlLT5jZmdjcjAgPSB2YWw7Cj4g IAo+ICAJLyogYXZvaWQgcmVhZGluZyBiYWNrIHN0YWxlIHZhbHVlcyBpZiBIRE1JIG1vZGUgaXMg bm90IGVuYWJsZWQgKi8KPiAgCWlmICh2YWwgJiBEUExMX0NGR0NSMF9IRE1JX01PREUpIHsKPiAt CQlod19zdGF0ZS0+Y2ZnY3IxID0gSTkxNV9SRUFEKENOTF9EUExMX0NGR0NSMShwbGwtPmlkKSk7 Cj4gKwkJaHdfc3RhdGUtPmNmZ2NyMSA9IEk5MTVfUkVBRChDTkxfRFBMTF9DRkdDUjEoaWQpKTsK PiAgCX0KPiAgCXJldCA9IHRydWU7Cj4gIAo+IEBAIC0yNDE1LDcgKzI0MzQsNiBAQCB2b2lkIGlu dGVsX3NoYXJlZF9kcGxsX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQlXQVJOX09O KGkgIT0gZHBsbF9pbmZvW2ldLmlkKTsKPiAgCQlkZXZfcHJpdi0+c2hhcmVkX2RwbGxzW2ldLmlu Zm8gPSAmZHBsbF9pbmZvW2ldOwo+ICAKPiAtCQlkZXZfcHJpdi0+c2hhcmVkX2RwbGxzW2ldLmlk ID0gZHBsbF9pbmZvW2ldLmlkOwo+ICAJCWRldl9wcml2LT5zaGFyZWRfZHBsbHNbaV0uZmxhZ3Mg PSBkcGxsX2luZm9baV0uZmxhZ3M7Cj4gIAl9Cj4gIAo+IEBAIC0yNDc2LDcgKzI0OTQsNyBAQCB2 b2lkIGludGVsX3JlbGVhc2Vfc2hhcmVkX2RwbGwoc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpk cGxsLAo+ICAJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsX3N0YXRlICpzaGFyZWRfZHBsbF9zdGF0 ZTsKPiAgCj4gIAlzaGFyZWRfZHBsbF9zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfc2hhcmVkX2Rw bGxfc3RhdGUoc3RhdGUpOwo+IC0Jc2hhcmVkX2RwbGxfc3RhdGVbZHBsbC0+aWRdLmNydGNfbWFz ayAmPSB+KDEgPDwgY3J0Yy0+cGlwZSk7Cj4gKwlzaGFyZWRfZHBsbF9zdGF0ZVtkcGxsLT5pbmZv LT5pZF0uY3J0Y19tYXNrICY9IH4oMSA8PCBjcnRjLT5waXBlKTsKPiAgfQo+ICAKPiAgLyoqCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5oCj4gaW5kZXggZTVlZDNlMDI2OWUzLi43 Yzk1ZWNjZTQxZWUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBs bF9tZ3IuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmgKPiBA QCAtMjEzLDYgKzIxMywxMCBAQCBzdHJ1Y3QgZHBsbF9pbmZvIHsKPiAgCSAqIEBuYW1lOiBEUExM IG5hbWU7IHVzZWQgZm9yIGxvZ2dpbmcKPiAgCSAqLwo+ICAJY29uc3QgY2hhciAqbmFtZTsKPiAr CS8qKgo+ICsJICogQGlkOiB1bmlxdWUgaW5kZW50aWZpZXIgZm9yIHRoaXMgRFBMTDsgc2hvdWxk IG1hdGNoIHRoZSBpbmRleCBpbiB0aGUKPiArCSAqIGRldl9wcml2LT5zaGFyZWRfZHBsbHMgYXJy YXkKPiArCSAqLwo+ICAJY29uc3QgaW50IGlkOwo+ICAJLyoqCj4gIAkgKiBAZnVuY3M6IHBsYXRm b3JtIHNwZWNpZmljIGhvb2tzCj4gQEAgLTI0MywxMiArMjQ3LDYgQEAgc3RydWN0IGludGVsX3No YXJlZF9kcGxsIHsKPiAgCSAqLwo+ICAJYm9vbCBvbjsKPiAgCj4gLQkvKioKPiAtCSAqIEBpZDog dW5pcXVlIGluZGVudGlmaWVyIGZvciB0aGlzIERQTEw7IHNob3VsZCBtYXRjaCB0aGUgaW5kZXgg aW4gdGhlCj4gLQkgKiBkZXZfcHJpdi0+c2hhcmVkX2RwbGxzIGFycmF5Cj4gLQkgKi8KPiAtCWVu dW0gaW50ZWxfZHBsbF9pZCBpZDsKPiAtCj4gIAkvKioKPiAgCSAqIEBpbmZvOiBwbGF0Zm9ybSBz cGVjaWZpYyBpbmZvCj4gIAkgKi8KPiAtLSAKPiAyLjE0LjMKCi0tIApWaWxsZSBTeXJqw6Rsw6QK SW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=