From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v3 36/40] drm/i915: Implement gmbus burst read Date: Tue, 3 Apr 2018 18:40:14 +0200 Message-ID: <20180403164014.GY3881@phenom.ffwll.local> References: <1522763873-23041-1-git-send-email-ramalingam.c@intel.com> <1522763873-23041-37-git-send-email-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1522763873-23041-37-git-send-email-ramalingam.c@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ramalingam C Cc: intel-gfx@lists.freedesktop.org, alexander.usyskin@intel.com, dri-devel@lists.freedesktop.org, rodrigo.vivi@intel.com, tomas.winkler@intel.com List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBBcHIgMDMsIDIwMTggYXQgMDc6Mjc6NDlQTSArMDUzMCwgUmFtYWxpbmdhbSBDIHdy b3RlOgo+IEltcGxlbWVudHMgYSBpbnRlcmZhY2UgZm9yIHNpbmdsZSBidXJzdCByZWFkIG9mIGRh dGEgdGhhdCBpcyBsYXJnZXIKPiB0aGFuIDUxMiBCeXRlcyB0aHJvdWdoIGdtYnVzLgo+IAo+IEhE Q1AyLjIgc3BlYyBleHBlY3RzIEhEQ1AyLjIgdHJhbnNtaXR0ZXIgdG8gcmVhZCA1MjJCeXRlcyBv ZiBIRENQCj4gcmVjZWl2ZXIgY2VydGlmaWNhdGVzIGluIHNpbmdsZSBidXJzdCByZWFkLiBPbiBn bWJ1cywgdG8gcmVhZCBtb3JlCj4gdGhhbiA1MTFCeXRlcywgSFcgcHJvdmlkZXMgYSB3b3JrYXJv dW5kIGZvciBidXJzdCByZWFkLgo+IAo+IFRoaXMgcGF0Y2ggcGFzc2VzIHRoZSBidXJzdCByZWFk IHJlcXVlc3QgdGhyb3VnaCBnbWJ1cyByZWFkIGZ1bmN0aW9ucy4KPiBBbmQgaW1wbGVtZW50cyB0 aGUgc2VxdWVuY2Ugb2YgZW5hYmxpbmcgYW5kIGRpc2FibGluZyB0aGUgYnVyc3QgcmVhZC4KPiAK PiB2MjoKPiAgIE5vIENoYW5nZXMuCj4gdjM6Cj4gICBObyBDaGFuZ2VzLgo+IAo+IFNpZ25lZC1v ZmYtYnk6IFJhbWFsaW5nYW0gQyA8cmFtYWxpbmdhbS5jQGludGVsLmNvbT4KCldoeSBvbmx5IGVu YWJsZSB0aGlzIGJ1cnN0X3JlYWQgbW9kZSBmb3IgaGRjcCwgYW5kIG5vdCBmb3IgYWxsIGkyYwp0 cmFuc2FjdGlvbnM/IFNlZW1zIHRvIHVuZWNlc3NhcmlseSBjb21wbGljYXRlIHRoZSBjb2RlLCBz aW5jZSBpdCByZXF1aXJlcwp0aGF0IHlvdSBwYXNzIGJ1cnN0X3JlYWQgdGhyb3VnaCB0aGUgZW50 aXJlIGNhbGwgY2hhaW4uIEZvciBvdGhlciBjaGFuZ2VzCndlJ3ZlIGRvbmUgZm9yIGhkY3AgKGxp a2UgZW5hYmxpbmcgdGhlIHJlYWQvd3JpdGUgbW9kZSBhbmQgb3RoZXIgc3R1ZmYpCndlJ3ZlIGVu YWJsZWQgaXQgZm9yIGFsbCBpMmMgdHJhbnNhY3Rpb25zLiBUaGF0IGFsc28gbWVhbnMgbW9yZSB0 ZXN0aW5nLApzaW5jZSBpdCB3aWxsIGJlIHVzZWQgZXZlbiB3aGVuIEhEQ1AgaXMgbm90IGluIHVz ZS4KLURhbmllbAoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgfCAg IDIgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICB8ICAgMyArCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2kyYy5jIHwgMTI0ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0tLQo+ICAzIGZpbGVzIGNoYW5nZWQsIDExMiBpbnNlcnRpb25zKCspLCAx NyBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCA2ZTc0MGY2 ZmUzM2YuLjcyNTM0YTFlNTQ0YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0z Njg4LDYgKzM2ODgsOCBAQCBleHRlcm4gdm9pZCBpbnRlbF90ZWFyZG93bl9nbWJ1cyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICBleHRlcm4gYm9vbCBpbnRlbF9nbWJ1c19p c192YWxpZF9waW4oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJICAg ICB1bnNpZ25lZCBpbnQgcGluKTsKPiAgZXh0ZXJuIGludCBpbnRlbF9nbWJ1c19vdXRwdXRfYWtz dihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpOwo+ICtleHRlcm4gaW50IGludGVsX2dtYnVz X2J1cnN0X3JlYWQoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLAo+ICsJCQkJICB1bnNpZ25l ZCBpbnQgb2Zmc2V0LCB2b2lkICpidWYsIHNpemVfdCBzaXplKTsKPiAgCj4gIGV4dGVybiBzdHJ1 Y3QgaTJjX2FkYXB0ZXIgKgo+ICBpbnRlbF9nbWJ1c19nZXRfYWRhcHRlcihzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHVuc2lnbmVkIGludCBwaW4pOwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZWcuaAo+IGluZGV4IGYwNGFkM2MxNWFiZC4uNTY5NzliYzRlOWQ4IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3JlZy5oCj4gQEAgLTMxMjMsNiArMzEyMyw3IEBAIGVudW0gaTkxNV9wb3dlcl93 ZWxsX2lkIHsKPiAgI2RlZmluZSAgIEdNQlVTX1JBVEVfNDAwS0haCSgyPDw4KSAvKiByZXNlcnZl ZCBvbiBQaW5ldmlldyAqLwo+ICAjZGVmaW5lICAgR01CVVNfUkFURV8xTUhaCSgzPDw4KSAvKiBy ZXNlcnZlZCBvbiBQaW5ldmlldyAqLwo+ICAjZGVmaW5lICAgR01CVVNfSE9MRF9FWFQJKDE8PDcp IC8qIDMwMG5zIGhvbGQgdGltZSwgcnN2ZCBvbiBQaW5ldmlldyAqLwo+ICsjZGVmaW5lICAgR01C VVNfQllURV9DTlRfT1ZFUlJJREUgKDE8PDYpCj4gICNkZWZpbmUgICBHTUJVU19QSU5fRElTQUJM RUQJMAo+ICAjZGVmaW5lICAgR01CVVNfUElOX1NTQwkJMQo+ICAjZGVmaW5lICAgR01CVVNfUElO X1ZHQUREQwkyCj4gQEAgLTMxNTAsOCArMzE1MSwxMCBAQCBlbnVtIGk5MTVfcG93ZXJfd2VsbF9p ZCB7Cj4gICNkZWZpbmUgICBHTUJVU19DWUNMRV9XQUlUCSgxPDwyNSkKPiAgI2RlZmluZSAgIEdN QlVTX0NZQ0xFX0lOREVYCSgyPDwyNSkKPiAgI2RlZmluZSAgIEdNQlVTX0NZQ0xFX1NUT1AJKDQ8 PDI1KQo+ICsjZGVmaW5lICAgR01CVVNfQ1lDTEVfTUFTSwkoNzw8MjUpCj4gICNkZWZpbmUgICBH TUJVU19CWVRFX0NPVU5UX1NISUZUIDE2Cj4gICNkZWZpbmUgICBHTUJVU19CWVRFX0NPVU5UX01B WCAgIDI1NlUKPiArI2RlZmluZSAgIEdNQlVTX0JZVEVfQ09VTlRfSFdfTUFYIDUxMVUKPiAgI2Rl ZmluZSAgIEdNQlVTX1NMQVZFX0lOREVYX1NISUZUIDgKPiAgI2RlZmluZSAgIEdNQlVTX1NMQVZF X0FERFJfU0hJRlQgMQo+ICAjZGVmaW5lICAgR01CVVNfU0xBVkVfUkVBRAkoMTw8MCkKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaTJjLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9pMmMuYwo+IGluZGV4IGU2ODc1NTA5YmNkOS4uZGNiMmJlMGQ1NGVlIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2kyYy5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaTJjLmMKPiBAQCAtMzY0LDIxICszNjQsMzAgQEAgZ21i dXNfd2FpdF9pZGxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgc3RhdGlj IGludAo+ICBnbWJ1c194ZmVyX3JlYWRfY2h1bmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICAJCSAgICAgIHVuc2lnbmVkIHNob3J0IGFkZHIsIHU4ICpidWYsIHVuc2lnbmVk IGludCBsZW4sCj4gLQkJICAgICAgdTMyIGdtYnVzMV9pbmRleCkKPiArCQkgICAgICB1MzIgZ21i dXMxX2luZGV4LCBib29sIGJ1cnN0X3JlYWQpCj4gIHsKPiArCXVuc2lnbmVkIGludCBzaXplID0g bGVuOwo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAoYnVyc3RfcmVhZCkgewo+ICsJCS8qIFNlcSB0 byBlbmFibGUgQnVyc3QgUmVhZCAqLwo+ICsJCUk5MTVfV1JJVEVfRlcoR01CVVMwLCAoSTkxNV9S RUFEX0ZXKEdNQlVTMCkgfAo+ICsJCQkgICAgICBHTUJVU19CWVRFX0NOVF9PVkVSUklERSkpOwo+ ICsJCXNpemUgPSBHTUJVU19CWVRFX0NPVU5UX0hXX01BWDsKPiArCX0KPiArCj4gIAlJOTE1X1dS SVRFX0ZXKEdNQlVTMSwKPiAgCQkgICAgICBnbWJ1czFfaW5kZXggfAo+ICAJCSAgICAgIEdNQlVT X0NZQ0xFX1dBSVQgfAo+IC0JCSAgICAgIChsZW4gPDwgR01CVVNfQllURV9DT1VOVF9TSElGVCkg fAo+ICsJCSAgICAgIChzaXplIDw8IEdNQlVTX0JZVEVfQ09VTlRfU0hJRlQpIHwKPiAgCQkgICAg ICAoYWRkciA8PCBHTUJVU19TTEFWRV9BRERSX1NISUZUKSB8Cj4gIAkJICAgICAgR01CVVNfU0xB VkVfUkVBRCB8IEdNQlVTX1NXX1JEWSk7Cj4gIAl3aGlsZSAobGVuKSB7Cj4gLQkJaW50IHJldDsK PiAgCQl1MzIgdmFsLCBsb29wID0gMDsKPiAgCj4gIAkJcmV0ID0gZ21idXNfd2FpdChkZXZfcHJp diwgR01CVVNfSFdfUkRZLCBHTUJVU19IV19SRFlfRU4pOwo+ICAJCWlmIChyZXQpCj4gLQkJCXJl dHVybiByZXQ7Cj4gKwkJCWdvdG8gZXhpdDsKPiAgCj4gIAkJdmFsID0gSTkxNV9SRUFEX0ZXKEdN QlVTMyk7Cj4gIAkJZG8gewo+IEBAIC0zODcsMTIgKzM5NiwyOSBAQCBnbWJ1c194ZmVyX3JlYWRf Y2h1bmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCX0gd2hpbGUgKC0t bGVuICYmICsrbG9vcCA8IDQpOwo+ICAJfQo+ICAKPiAtCXJldHVybiAwOwo+ICtleGl0Ogo+ICsJ aWYgKGJ1cnN0X3JlYWQpIHsKPiArCj4gKwkJLyogU2VxIHRvIGRpc2FibGUgdGhlIEJ1cnN0IFJl YWQgKi8KPiArCQlJOTE1X1dSSVRFX0ZXKEdNQlVTMCwgKEk5MTVfUkVBRF9GVyhHTUJVUzApICYK PiArCQkJICAgICAgfkdNQlVTX0JZVEVfQ05UX09WRVJSSURFKSk7Cj4gKwkJSTkxNV9XUklURV9G VyhHTUJVUzEsIChJOTE1X1JFQURfRlcoR01CVVMxKSAmCj4gKwkJCSAgICAgIH5HTUJVU19DWUNM RV9NQVNLKSB8IEdNQlVTX0NZQ0xFX1NUT1ApOwo+ICsKPiArCQkvKgo+ICsJCSAqIE9uIEJ1cnN0 IHJlYWQgZGlzYWJsZSwgR01CVVMgbmVlZCBtb3JlIHRpbWUgdG8gc2V0dGxlCj4gKwkJICogZG93 biB0byBJZGxlIFN0YXRlLgo+ICsJCSAqLwo+ICsJCXJldCA9IGludGVsX3dhaXRfZm9yX3JlZ2lz dGVyX2Z3KGRldl9wcml2LCBHTUJVUzIsCj4gKwkJCQkJCSBHTUJVU19BQ1RJVkUsIDAsIDUwKTsK PiArCX0KPiArCj4gKwlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50Cj4gIGdtYnVz X3hmZXJfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHN0cnVjdCBpMmNf bXNnICptc2csCj4gLQkJdTMyIGdtYnVzMV9pbmRleCkKPiArCQl1MzIgZ21idXMxX2luZGV4LCBi b29sIGJ1cnN0X3JlYWQpCj4gIHsKPiAgCXU4ICpidWYgPSBtc2ctPmJ1ZjsKPiAgCXVuc2lnbmVk IGludCByeF9zaXplID0gbXNnLT5sZW47Cj4gQEAgLTQwMCwxMCArNDI2LDEzIEBAIGdtYnVzX3hm ZXJfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHN0cnVjdCBpMmNfbXNn ICptc2csCj4gIAlpbnQgcmV0Owo+ICAKPiAgCWRvIHsKPiAtCQlsZW4gPSBtaW4ocnhfc2l6ZSwg R01CVVNfQllURV9DT1VOVF9NQVgpOwo+ICsJCWlmIChidXJzdF9yZWFkKQo+ICsJCQlsZW4gPSBy eF9zaXplOwo+ICsJCWVsc2UKPiArCQkJbGVuID0gbWluKHJ4X3NpemUsIEdNQlVTX0JZVEVfQ09V TlRfTUFYKTsKPiAgCj4gLQkJcmV0ID0gZ21idXNfeGZlcl9yZWFkX2NodW5rKGRldl9wcml2LCBt c2ctPmFkZHIsCj4gLQkJCQkJICAgIGJ1ZiwgbGVuLCBnbWJ1czFfaW5kZXgpOwo+ICsJCXJldCA9 IGdtYnVzX3hmZXJfcmVhZF9jaHVuayhkZXZfcHJpdiwgbXNnLT5hZGRyLCBidWYsIGxlbiwKPiAr CQkJCQkgICAgZ21idXMxX2luZGV4LCBidXJzdF9yZWFkKTsKPiAgCQlpZiAocmV0KQo+ICAJCQly ZXR1cm4gcmV0Owo+ICAKPiBAQCAtNDkxLDcgKzUyMCw4IEBAIGdtYnVzX2lzX2luZGV4X3hmZXIo c3RydWN0IGkyY19tc2cgKm1zZ3MsIGludCBpLCBpbnQgbnVtKQo+ICB9Cj4gIAo+ICBzdGF0aWMg aW50Cj4gLWdtYnVzX2luZGV4X3hmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCBzdHJ1Y3QgaTJjX21zZyAqbXNncykKPiArZ21idXNfaW5kZXhfeGZlcihzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHN0cnVjdCBpMmNfbXNnICptc2dzLAo+ICsJCSBib29sIGJ1 cnN0X3JlYWQpCj4gIHsKPiAgCXUzMiBnbWJ1czFfaW5kZXggPSAwOwo+ICAJdTMyIGdtYnVzNSA9 IDA7Cj4gQEAgLTUwOSw3ICs1MzksOCBAQCBnbWJ1c19pbmRleF94ZmVyKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgc3RydWN0IGkyY19tc2cgKm1zZ3MpCj4gIAkJSTkxNV9XUklU RV9GVyhHTUJVUzUsIGdtYnVzNSk7Cj4gIAo+ICAJaWYgKG1zZ3NbMV0uZmxhZ3MgJiBJMkNfTV9S RCkKPiAtCQlyZXQgPSBnbWJ1c194ZmVyX3JlYWQoZGV2X3ByaXYsICZtc2dzWzFdLCBnbWJ1czFf aW5kZXgpOwo+ICsJCXJldCA9IGdtYnVzX3hmZXJfcmVhZChkZXZfcHJpdiwgJm1zZ3NbMV0sCj4g KwkJCQkgICAgICBnbWJ1czFfaW5kZXgsIGJ1cnN0X3JlYWQpOwo+ICAJZWxzZQo+ICAJCXJldCA9 IGdtYnVzX3hmZXJfd3JpdGUoZGV2X3ByaXYsICZtc2dzWzFdLCBnbWJ1czFfaW5kZXgpOwo+ICAK PiBAQCAtNTIyLDcgKzU1Myw3IEBAIGdtYnVzX2luZGV4X3hmZXIoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCBzdHJ1Y3QgaTJjX21zZyAqbXNncykKPiAgCj4gIHN0YXRpYyBpbnQK PiAgZG9fZ21idXNfeGZlcihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIHN0cnVjdCBpMmNf bXNnICptc2dzLCBpbnQgbnVtLAo+IC0JICAgICAgdTMyIGdtYnVzMF9zb3VyY2UpCj4gKwkgICAg ICB1MzIgZ21idXMwX3NvdXJjZSwgYm9vbCBidXJzdF9yZWFkKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50 ZWxfZ21idXMgKmJ1cyA9IGNvbnRhaW5lcl9vZihhZGFwdGVyLAo+ICAJCQkJCSAgICAgICBzdHJ1 Y3QgaW50ZWxfZ21idXMsCj4gQEAgLTU0NCwxNSArNTc1LDIwIEBAIGRvX2dtYnVzX3hmZXIoc3Ry dWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgaTJjX21zZyAqbXNncywgaW50IG51bSwK PiAgCWZvciAoOyBpIDwgbnVtOyBpICs9IGluYykgewo+ICAJCWluYyA9IDE7Cj4gIAkJaWYgKGdt YnVzX2lzX2luZGV4X3hmZXIobXNncywgaSwgbnVtKSkgewo+IC0JCQlyZXQgPSBnbWJ1c19pbmRl eF94ZmVyKGRldl9wcml2LCAmbXNnc1tpXSk7Cj4gKwkJCXJldCA9IGdtYnVzX2luZGV4X3hmZXIo ZGV2X3ByaXYsICZtc2dzW2ldLCBidXJzdF9yZWFkKTsKPiAgCQkJaW5jID0gMjsgLyogYW4gaW5k ZXggdHJhbnNtaXNzaW9uIGlzIHR3byBtc2dzICovCj4gIAkJfSBlbHNlIGlmIChtc2dzW2ldLmZs YWdzICYgSTJDX01fUkQpIHsKPiAtCQkJcmV0ID0gZ21idXNfeGZlcl9yZWFkKGRldl9wcml2LCAm bXNnc1tpXSwgMCk7Cj4gKwkJCXJldCA9IGdtYnVzX3hmZXJfcmVhZChkZXZfcHJpdiwgJm1zZ3Nb aV0sCj4gKwkJCQkJICAgICAgMCwgYnVyc3RfcmVhZCk7Cj4gIAkJfSBlbHNlIHsKPiAgCQkJcmV0 ID0gZ21idXNfeGZlcl93cml0ZShkZXZfcHJpdiwgJm1zZ3NbaV0sIDApOwo+ICAJCX0KPiAgCj4g LQkJaWYgKCFyZXQpCj4gKwkJLyoKPiArCQkgKiBCdXJzdCByZWFkIFNlcXVlbmNlIGVuZHMgd2l0 aCBTVE9QLiBTbyBEb250IGV4cGVjdAo+ICsJCSAqIEhXIHdhaXQgcGhhc2UuCj4gKwkJICovCj4g KwkJaWYgKCFyZXQgJiYgIWJ1cnN0X3JlYWQpCj4gIAkJCXJldCA9IGdtYnVzX3dhaXQoZGV2X3By aXYsCj4gIAkJCQkJIEdNQlVTX0hXX1dBSVRfUEhBU0UsIEdNQlVTX0hXX1dBSVRfRU4pOwo+ICAJ CWlmIChyZXQgPT0gLUVUSU1FRE9VVCkKPiBAQCAtNjY0LDcgKzcwMCw3IEBAIGdtYnVzX3hmZXIo c3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgaTJjX21zZyAqbXNncywgaW50IG51 bSkKPiAgCQlpZiAocmV0IDwgMCkKPiAgCQkJYnVzLT5mb3JjZV9iaXQgJj0gfkdNQlVTX0ZPUkNF X0JJVF9SRVRSWTsKPiAgCX0gZWxzZSB7Cj4gLQkJcmV0ID0gZG9fZ21idXNfeGZlcihhZGFwdGVy LCBtc2dzLCBudW0sIDApOwo+ICsJCXJldCA9IGRvX2dtYnVzX3hmZXIoYWRhcHRlciwgbXNncywg bnVtLCAwLCBmYWxzZSk7Cj4gIAkJaWYgKHJldCA9PSAtRUFHQUlOKQo+ICAJCQlidXMtPmZvcmNl X2JpdCB8PSBHTUJVU19GT1JDRV9CSVRfUkVUUlk7Cj4gIAl9Cj4gQEAgLTcwNSw3ICs3NDEsOCBA QCBpbnQgaW50ZWxfZ21idXNfb3V0cHV0X2Frc3Yoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVy KQo+ICAJICogcGFzcyB0aGUgaTJjIGNvbW1hbmQsIGFuZCB0ZWxsIEdNQlVTIHRvIHVzZSB0aGUg SFctcHJvdmlkZWQgdmFsdWUKPiAgCSAqIGluc3RlYWQgb2Ygc291cmNpbmcgR01CVVMzIGZvciB0 aGUgZGF0YS4KPiAgCSAqLwo+IC0JcmV0ID0gZG9fZ21idXNfeGZlcihhZGFwdGVyLCBtc2dzLCBB UlJBWV9TSVpFKG1zZ3MpLCBHTUJVU19BS1NWX1NFTEVDVCk7Cj4gKwlyZXQgPSBkb19nbWJ1c194 ZmVyKGFkYXB0ZXIsIG1zZ3MsIEFSUkFZX1NJWkUobXNncyksCj4gKwkJCSAgICBHTUJVU19BS1NW X1NFTEVDVCwgZmFsc2UpOwo+ICAKPiAgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmdtYnVzX211 dGV4KTsKPiAgCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBQT1dFUl9ET01BSU5f R01CVVMpOwo+IEBAIC03MTMsNiArNzUwLDU5IEBAIGludCBpbnRlbF9nbWJ1c19vdXRwdXRfYWtz dihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+ ICtzdGF0aWMgaW5saW5lCj4gK2Jvb2wgaW50ZWxfZ21idXNfYnVyc3RfcmVhZF9zdXBwb3J0ZWQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt7Cj4gKwlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+IDEwIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpIHx8Cj4gKwkgICAgSVNf S0FCWUxBS0UoZGV2X3ByaXYpKQo+ICsJCXJldHVybiB0cnVlOwo+ICsJcmV0dXJuIGZhbHNlOwo+ ICt9Cj4gKwo+ICtpbnQgaW50ZWxfZ21idXNfYnVyc3RfcmVhZChzdHJ1Y3QgaTJjX2FkYXB0ZXIg KmFkYXB0ZXIsIHVuc2lnbmVkIGludCBvZmZzZXQsCj4gKwkJCSAgIHZvaWQgKmJ1Ziwgc2l6ZV90 IHNpemUpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9nbWJ1cyAqYnVzID0gY29udGFpbmVyX29mKGFk YXB0ZXIsIHN0cnVjdCBpbnRlbF9nbWJ1cywKPiArCQkJCQkgICAgICAgYWRhcHRlcik7Cj4gKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBidXMtPmRldl9wcml2Owo+ICsJaW50 IHJldDsKPiArCXU4IHN0YXJ0ID0gb2Zmc2V0ICYgMHhmZjsKPiArCXN0cnVjdCBpMmNfbXNnIG1z Z3NbXSA9IHsKPiArCQl7Cj4gKwkJCS5hZGRyID0gRFJNX0hEQ1BfRERDX0FERFIsCj4gKwkJCS5m bGFncyA9IDAsCj4gKwkJCS5sZW4gPSAxLAo+ICsJCQkuYnVmID0gJnN0YXJ0LAo+ICsJCX0sCj4g KwkJewo+ICsJCQkuYWRkciA9IERSTV9IRENQX0REQ19BRERSLAo+ICsJCQkuZmxhZ3MgPSBJMkNf TV9SRCwKPiArCQkJLmxlbiA9IHNpemUsCj4gKwkJCS5idWYgPSBidWYsCj4gKwkJfQo+ICsJfTsK PiArCj4gKwlpZiAoIWludGVsX2dtYnVzX2J1cnN0X3JlYWRfc3VwcG9ydGVkKGRldl9wcml2KSkK PiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChkZXZf cHJpdiwgUE9XRVJfRE9NQUlOX0dNQlVTKTsKPiArCW11dGV4X2xvY2soJmRldl9wcml2LT5nbWJ1 c19tdXRleCk7Cj4gKwo+ICsJLyoKPiArCSAqIEluIG9yZGVyIHRvIHJlYWQgdGhlIGNvbXBsZXRl IGxlbmd0aChNb3JlIHRoYW4gR01CdXMgTGltaXQpIG9mIGRhdGEsCj4gKwkgKiBpbiBidXJzdCBt b2RlLCBpbXBsZW1lbnQgdGhlIFdvcmthcm91bmQgc3VwcG9ydGVkIGluIEhXLgo+ICsJICovCj4g KwlyZXQgPSBkb19nbWJ1c194ZmVyKGFkYXB0ZXIsIG1zZ3MsIEFSUkFZX1NJWkUobXNncyksIDAs IHRydWUpOwo+ICsKPiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmdtYnVzX211dGV4KTsKPiAr CWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fR01CVVMpOwo+ ICsKPiArCWlmIChyZXQgPT0gQVJSQVlfU0laRShtc2dzKSkKPiArCQlyZXR1cm4gMDsKPiArCj4g KwlyZXR1cm4gcmV0ID49IDAgPyAtRUlPIDogcmV0Owo+ICt9Cj4gKwo+ICBzdGF0aWMgdTMyIGdt YnVzX2Z1bmMoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyKQo+ICB7Cj4gIAlyZXR1cm4gaTJj X2JpdF9hbGdvLmZ1bmN0aW9uYWxpdHkoYWRhcHRlcikgJgo+IC0tIAo+IDIuNy40Cj4gCgotLSAK RGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDov L2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==