From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v3 36/40] drm/i915: Implement gmbus burst read Date: Thu, 05 Apr 2018 12:12:15 +0300 Message-ID: <87370auids.fsf@intel.com> References: <1522763873-23041-1-git-send-email-ramalingam.c@intel.com> <1522763873-23041-37-git-send-email-ramalingam.c@intel.com> <20180403164014.GY3881@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180403164014.GY3881@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter , 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 T24gVHVlLCAwMyBBcHIgMjAxOCwgRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPiB3cm90 ZToKPiBPbiBUdWUsIEFwciAwMywgMjAxOCBhdCAwNzoyNzo0OVBNICswNTMwLCBSYW1hbGluZ2Ft IEMgd3JvdGU6Cj4+IEltcGxlbWVudHMgYSBpbnRlcmZhY2UgZm9yIHNpbmdsZSBidXJzdCByZWFk IG9mIGRhdGEgdGhhdCBpcyBsYXJnZXIKPj4gdGhhbiA1MTIgQnl0ZXMgdGhyb3VnaCBnbWJ1cy4K CldoZXJlIGRvZXMgNTEyIGNvbWUgZnJvbT8gQ3VycmVudCBjb2RlIGNodW5rcyBhdCBHTUJVU19C WVRFX0NPVU5UX01BWAppLmUuIDI1NiBieXRlcy4gU2hvdWxkIEdNQlVTX0JZVEVfQ09VTlRfTUFY IGJlIHBsYXRmb3JtIHNwZWNpZmljPwoKPj4gCj4+IEhEQ1AyLjIgc3BlYyBleHBlY3RzIEhEQ1Ay LjIgdHJhbnNtaXR0ZXIgdG8gcmVhZCA1MjJCeXRlcyBvZiBIRENQCj4+IHJlY2VpdmVyIGNlcnRp ZmljYXRlcyBpbiBzaW5nbGUgYnVyc3QgcmVhZC4gT24gZ21idXMsIHRvIHJlYWQgbW9yZQo+PiB0 aGFuIDUxMUJ5dGVzLCBIVyBwcm92aWRlcyBhIHdvcmthcm91bmQgZm9yIGJ1cnN0IHJlYWQuCj4+ IAo+PiBUaGlzIHBhdGNoIHBhc3NlcyB0aGUgYnVyc3QgcmVhZCByZXF1ZXN0IHRocm91Z2ggZ21i dXMgcmVhZCBmdW5jdGlvbnMuCj4+IEFuZCBpbXBsZW1lbnRzIHRoZSBzZXF1ZW5jZSBvZiBlbmFi bGluZyBhbmQgZGlzYWJsaW5nIHRoZSBidXJzdCByZWFkLgo+PiAKPj4gdjI6Cj4+ICAgTm8gQ2hh bmdlcy4KPj4gdjM6Cj4+ICAgTm8gQ2hhbmdlcy4KPj4gCj4+IFNpZ25lZC1vZmYtYnk6IFJhbWFs aW5nYW0gQyA8cmFtYWxpbmdhbS5jQGludGVsLmNvbT4KPgo+IFdoeSBvbmx5IGVuYWJsZSB0aGlz IGJ1cnN0X3JlYWQgbW9kZSBmb3IgaGRjcCwgYW5kIG5vdCBmb3IgYWxsIGkyYwo+IHRyYW5zYWN0 aW9ucz8gU2VlbXMgdG8gdW5lY2Vzc2FyaWx5IGNvbXBsaWNhdGUgdGhlIGNvZGUsIHNpbmNlIGl0 IHJlcXVpcmVzCj4gdGhhdCB5b3UgcGFzcyBidXJzdF9yZWFkIHRocm91Z2ggdGhlIGVudGlyZSBj YWxsIGNoYWluLiBGb3Igb3RoZXIgY2hhbmdlcwo+IHdlJ3ZlIGRvbmUgZm9yIGhkY3AgKGxpa2Ug ZW5hYmxpbmcgdGhlIHJlYWQvd3JpdGUgbW9kZSBhbmQgb3RoZXIgc3R1ZmYpCj4gd2UndmUgZW5h YmxlZCBpdCBmb3IgYWxsIGkyYyB0cmFuc2FjdGlvbnMuIFRoYXQgYWxzbyBtZWFucyBtb3JlIHRl c3RpbmcsCj4gc2luY2UgaXQgd2lsbCBiZSB1c2VkIGV2ZW4gd2hlbiBIRENQIGlzIG5vdCBpbiB1 c2UuCgpBZ3JlZWQuCgpTaG91bGRuJ3QgdGhlIGRlY2lzaW9uIHRvIHVzZSBidXJzdCByZWFkIGJl IGJhc2VkIG9uIHRoZSBsZW5ndGggdG8gYmUKcmVhZD8gTW9yZSB0aGFuIDI1NiBieXRlcywgdXNl IGJ1cnN0LCBvdGhlcndpc2Ugbm90LiBPciBhcmUgdGhlcmUKZnVuY3Rpb25hbCBkaWZmZXJlbmNl cyBvciBiZW5lZml0cyB0byB1c2luZyBidXJzdCBtb2RlIGZvciBzaG9ydGVyCnJlYWRzPwoKSSBn dWVzcyBJJ2Qgc3RpbGwgcHJlcGFyZSB0byBhZGQgc29tZSBidXJzdCBmaWVsZCB0byBzdHJ1Y3Qg aW50ZWxfZ21idXMsCm5vdCB1bmxpa2UgZm9yY2VfYml0LgoKU2lkZSBub3RlLCBJIHdvdWxkIHBy ZWZlciBzaWduaWZpY2FudCBjaGFuZ2VzIHRvIGJhc2ljIHBsdW1iaW5nIGxpa2UKZ21idXMgYmUg aGlnaGxpZ2h0ZWQgYmV0dGVyLiBQbGVhc2UgYXQgbGVhc3QgcHJlZml4IHRoZSBoZGNwIHBhdGNo ZXMKd2l0aCAiZHJtL2k5MTUvaGRjcCIgYW5kIGdtYnVzIHdpdGggImRybS9pOTE1L2dtYnVzIi4g VGhlIHBhdGNoIGF0IGhhbmQKaXMga2luZCBvZiBoaWRkZW4gaW4gdGhlIG1pZGRsZSBvZiBhIGxh cmdlIHRvcGljYWwgc2VyaWVzLCBhbmQgd291bGQKZGVzZXJ2ZSB0byBiZSBsb29rZWQgYXQgYnkg cGVvcGxlIHdobyBhcmVuJ3QgbmVjZXNzYXJpbHkgYWxsIHRoYXQgaW50bwpoZGNwLgoKCkJSLApK YW5pLgoKCj4gLURhbmllbAo+Cj4+IC0tLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaCAgfCAgIDIgKwo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgfCAgIDMg Kwo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaTJjLmMgfCAxMjQgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tCj4+ICAzIGZpbGVzIGNoYW5nZWQsIDExMiBpbnNl cnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKPj4gCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ PiBpbmRleCA2ZTc0MGY2ZmUzM2YuLjcyNTM0YTFlNTQ0YiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4+IEBAIC0zNjg4LDYgKzM2ODgsOCBAQCBleHRlcm4gdm9pZCBpbnRlbF90ZWFy ZG93bl9nbWJ1cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+PiAgZXh0ZXJu IGJvb2wgaW50ZWxfZ21idXNfaXNfdmFsaWRfcGluKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPj4gIAkJCQkgICAgIHVuc2lnbmVkIGludCBwaW4pOwo+PiAgZXh0ZXJuIGludCBp bnRlbF9nbWJ1c19vdXRwdXRfYWtzdihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpOwo+PiAr ZXh0ZXJuIGludCBpbnRlbF9nbWJ1c19idXJzdF9yZWFkKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRh cHRlciwKPj4gKwkJCQkgIHVuc2lnbmVkIGludCBvZmZzZXQsIHZvaWQgKmJ1Ziwgc2l6ZV90IHNp emUpOwo+PiAgCj4+ICBleHRlcm4gc3RydWN0IGkyY19hZGFwdGVyICoKPj4gIGludGVsX2dtYnVz X2dldF9hZGFwdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdW5zaWduZWQg aW50IHBpbik7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+PiBpbmRleCBmMDRhZDNjMTVhYmQu LjU2OTc5YmM0ZTlkOCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZWcuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4+IEBAIC0zMTIz LDYgKzMxMjMsNyBAQCBlbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCB7Cj4+ICAjZGVmaW5lICAgR01C VVNfUkFURV80MDBLSFoJKDI8PDgpIC8qIHJlc2VydmVkIG9uIFBpbmV2aWV3ICovCj4+ICAjZGVm aW5lICAgR01CVVNfUkFURV8xTUhaCSgzPDw4KSAvKiByZXNlcnZlZCBvbiBQaW5ldmlldyAqLwo+ PiAgI2RlZmluZSAgIEdNQlVTX0hPTERfRVhUCSgxPDw3KSAvKiAzMDBucyBob2xkIHRpbWUsIHJz dmQgb24gUGluZXZpZXcgKi8KPj4gKyNkZWZpbmUgICBHTUJVU19CWVRFX0NOVF9PVkVSUklERSAo MTw8NikKPj4gICNkZWZpbmUgICBHTUJVU19QSU5fRElTQUJMRUQJMAo+PiAgI2RlZmluZSAgIEdN QlVTX1BJTl9TU0MJCTEKPj4gICNkZWZpbmUgICBHTUJVU19QSU5fVkdBRERDCTIKPj4gQEAgLTMx NTAsOCArMzE1MSwxMCBAQCBlbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCB7Cj4+ICAjZGVmaW5lICAg R01CVVNfQ1lDTEVfV0FJVAkoMTw8MjUpCj4+ICAjZGVmaW5lICAgR01CVVNfQ1lDTEVfSU5ERVgJ KDI8PDI1KQo+PiAgI2RlZmluZSAgIEdNQlVTX0NZQ0xFX1NUT1AJKDQ8PDI1KQo+PiArI2RlZmlu ZSAgIEdNQlVTX0NZQ0xFX01BU0sJKDc8PDI1KQo+PiAgI2RlZmluZSAgIEdNQlVTX0JZVEVfQ09V TlRfU0hJRlQgMTYKPj4gICNkZWZpbmUgICBHTUJVU19CWVRFX0NPVU5UX01BWCAgIDI1NlUKPj4g KyNkZWZpbmUgICBHTUJVU19CWVRFX0NPVU5UX0hXX01BWCA1MTFVCj4+ICAjZGVmaW5lICAgR01C VVNfU0xBVkVfSU5ERVhfU0hJRlQgOAo+PiAgI2RlZmluZSAgIEdNQlVTX1NMQVZFX0FERFJfU0hJ RlQgMQo+PiAgI2RlZmluZSAgIEdNQlVTX1NMQVZFX1JFQUQJKDE8PDApCj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9pMmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2kyYy5jCj4+IGluZGV4IGU2ODc1NTA5YmNkOS4uZGNiMmJlMGQ1NGVlIDEwMDY0NAo+ PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9pMmMuYwo+PiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9pMmMuYwo+PiBAQCAtMzY0LDIxICszNjQsMzAgQEAgZ21idXNf d2FpdF9pZGxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gIHN0YXRpYyBp bnQKPj4gIGdtYnVzX3hmZXJfcmVhZF9jaHVuayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4+ICAJCSAgICAgIHVuc2lnbmVkIHNob3J0IGFkZHIsIHU4ICpidWYsIHVuc2lnbmVk IGludCBsZW4sCj4+IC0JCSAgICAgIHUzMiBnbWJ1czFfaW5kZXgpCj4+ICsJCSAgICAgIHUzMiBn bWJ1czFfaW5kZXgsIGJvb2wgYnVyc3RfcmVhZCkKPj4gIHsKPj4gKwl1bnNpZ25lZCBpbnQgc2l6 ZSA9IGxlbjsKPj4gKwlpbnQgcmV0Owo+PiArCj4+ICsJaWYgKGJ1cnN0X3JlYWQpIHsKPj4gKwkJ LyogU2VxIHRvIGVuYWJsZSBCdXJzdCBSZWFkICovCj4+ICsJCUk5MTVfV1JJVEVfRlcoR01CVVMw LCAoSTkxNV9SRUFEX0ZXKEdNQlVTMCkgfAo+PiArCQkJICAgICAgR01CVVNfQllURV9DTlRfT1ZF UlJJREUpKTsKPj4gKwkJc2l6ZSA9IEdNQlVTX0JZVEVfQ09VTlRfSFdfTUFYOwo+PiArCX0KPj4g Kwo+PiAgCUk5MTVfV1JJVEVfRlcoR01CVVMxLAo+PiAgCQkgICAgICBnbWJ1czFfaW5kZXggfAo+ PiAgCQkgICAgICBHTUJVU19DWUNMRV9XQUlUIHwKPj4gLQkJICAgICAgKGxlbiA8PCBHTUJVU19C WVRFX0NPVU5UX1NISUZUKSB8Cj4+ICsJCSAgICAgIChzaXplIDw8IEdNQlVTX0JZVEVfQ09VTlRf U0hJRlQpIHwKPj4gIAkJICAgICAgKGFkZHIgPDwgR01CVVNfU0xBVkVfQUREUl9TSElGVCkgfAo+ PiAgCQkgICAgICBHTUJVU19TTEFWRV9SRUFEIHwgR01CVVNfU1dfUkRZKTsKPj4gIAl3aGlsZSAo bGVuKSB7Cj4+IC0JCWludCByZXQ7Cj4+ICAJCXUzMiB2YWwsIGxvb3AgPSAwOwo+PiAgCj4+ICAJ CXJldCA9IGdtYnVzX3dhaXQoZGV2X3ByaXYsIEdNQlVTX0hXX1JEWSwgR01CVVNfSFdfUkRZX0VO KTsKPj4gIAkJaWYgKHJldCkKPj4gLQkJCXJldHVybiByZXQ7Cj4+ICsJCQlnb3RvIGV4aXQ7Cj4+ ICAKPj4gIAkJdmFsID0gSTkxNV9SRUFEX0ZXKEdNQlVTMyk7Cj4+ICAJCWRvIHsKPj4gQEAgLTM4 NywxMiArMzk2LDI5IEBAIGdtYnVzX3hmZXJfcmVhZF9jaHVuayhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4+ICAJCX0gd2hpbGUgKC0tbGVuICYmICsrbG9vcCA8IDQpOwo+PiAg CX0KPj4gIAo+PiAtCXJldHVybiAwOwo+PiArZXhpdDoKPj4gKwlpZiAoYnVyc3RfcmVhZCkgewo+ PiArCj4+ICsJCS8qIFNlcSB0byBkaXNhYmxlIHRoZSBCdXJzdCBSZWFkICovCj4+ICsJCUk5MTVf V1JJVEVfRlcoR01CVVMwLCAoSTkxNV9SRUFEX0ZXKEdNQlVTMCkgJgo+PiArCQkJICAgICAgfkdN QlVTX0JZVEVfQ05UX09WRVJSSURFKSk7Cj4+ICsJCUk5MTVfV1JJVEVfRlcoR01CVVMxLCAoSTkx NV9SRUFEX0ZXKEdNQlVTMSkgJgo+PiArCQkJICAgICAgfkdNQlVTX0NZQ0xFX01BU0spIHwgR01C VVNfQ1lDTEVfU1RPUCk7Cj4+ICsKPj4gKwkJLyoKPj4gKwkJICogT24gQnVyc3QgcmVhZCBkaXNh YmxlLCBHTUJVUyBuZWVkIG1vcmUgdGltZSB0byBzZXR0bGUKPj4gKwkJICogZG93biB0byBJZGxl IFN0YXRlLgo+PiArCQkgKi8KPj4gKwkJcmV0ID0gaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXJfZnco ZGV2X3ByaXYsIEdNQlVTMiwKPj4gKwkJCQkJCSBHTUJVU19BQ1RJVkUsIDAsIDUwKTsKPj4gKwl9 Cj4+ICsKPj4gKwlyZXR1cm4gcmV0Owo+PiAgfQo+PiAgCj4+ICBzdGF0aWMgaW50Cj4+ICBnbWJ1 c194ZmVyX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBzdHJ1Y3QgaTJj X21zZyAqbXNnLAo+PiAtCQl1MzIgZ21idXMxX2luZGV4KQo+PiArCQl1MzIgZ21idXMxX2luZGV4 LCBib29sIGJ1cnN0X3JlYWQpCj4+ICB7Cj4+ICAJdTggKmJ1ZiA9IG1zZy0+YnVmOwo+PiAgCXVu c2lnbmVkIGludCByeF9zaXplID0gbXNnLT5sZW47Cj4+IEBAIC00MDAsMTAgKzQyNiwxMyBAQCBn bWJ1c194ZmVyX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBzdHJ1Y3Qg aTJjX21zZyAqbXNnLAo+PiAgCWludCByZXQ7Cj4+ICAKPj4gIAlkbyB7Cj4+IC0JCWxlbiA9IG1p bihyeF9zaXplLCBHTUJVU19CWVRFX0NPVU5UX01BWCk7Cj4+ICsJCWlmIChidXJzdF9yZWFkKQo+ PiArCQkJbGVuID0gcnhfc2l6ZTsKPj4gKwkJZWxzZQo+PiArCQkJbGVuID0gbWluKHJ4X3NpemUs IEdNQlVTX0JZVEVfQ09VTlRfTUFYKTsKPj4gIAo+PiAtCQlyZXQgPSBnbWJ1c194ZmVyX3JlYWRf Y2h1bmsoZGV2X3ByaXYsIG1zZy0+YWRkciwKPj4gLQkJCQkJICAgIGJ1ZiwgbGVuLCBnbWJ1czFf aW5kZXgpOwo+PiArCQlyZXQgPSBnbWJ1c194ZmVyX3JlYWRfY2h1bmsoZGV2X3ByaXYsIG1zZy0+ YWRkciwgYnVmLCBsZW4sCj4+ICsJCQkJCSAgICBnbWJ1czFfaW5kZXgsIGJ1cnN0X3JlYWQpOwo+ PiAgCQlpZiAocmV0KQo+PiAgCQkJcmV0dXJuIHJldDsKPj4gIAo+PiBAQCAtNDkxLDcgKzUyMCw4 IEBAIGdtYnVzX2lzX2luZGV4X3hmZXIoc3RydWN0IGkyY19tc2cgKm1zZ3MsIGludCBpLCBpbnQg bnVtKQo+PiAgfQo+PiAgCj4+ICBzdGF0aWMgaW50Cj4+IC1nbWJ1c19pbmRleF94ZmVyKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgc3RydWN0IGkyY19tc2cgKm1zZ3MpCj4+ICtn bWJ1c19pbmRleF94ZmVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgc3RydWN0 IGkyY19tc2cgKm1zZ3MsCj4+ICsJCSBib29sIGJ1cnN0X3JlYWQpCj4+ICB7Cj4+ICAJdTMyIGdt YnVzMV9pbmRleCA9IDA7Cj4+ICAJdTMyIGdtYnVzNSA9IDA7Cj4+IEBAIC01MDksNyArNTM5LDgg QEAgZ21idXNfaW5kZXhfeGZlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHN0 cnVjdCBpMmNfbXNnICptc2dzKQo+PiAgCQlJOTE1X1dSSVRFX0ZXKEdNQlVTNSwgZ21idXM1KTsK Pj4gIAo+PiAgCWlmIChtc2dzWzFdLmZsYWdzICYgSTJDX01fUkQpCj4+IC0JCXJldCA9IGdtYnVz X3hmZXJfcmVhZChkZXZfcHJpdiwgJm1zZ3NbMV0sIGdtYnVzMV9pbmRleCk7Cj4+ICsJCXJldCA9 IGdtYnVzX3hmZXJfcmVhZChkZXZfcHJpdiwgJm1zZ3NbMV0sCj4+ICsJCQkJICAgICAgZ21idXMx X2luZGV4LCBidXJzdF9yZWFkKTsKPj4gIAllbHNlCj4+ICAJCXJldCA9IGdtYnVzX3hmZXJfd3Jp dGUoZGV2X3ByaXYsICZtc2dzWzFdLCBnbWJ1czFfaW5kZXgpOwo+PiAgCj4+IEBAIC01MjIsNyAr NTUzLDcgQEAgZ21idXNfaW5kZXhfeGZlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIHN0cnVjdCBpMmNfbXNnICptc2dzKQo+PiAgCj4+ICBzdGF0aWMgaW50Cj4+ICBkb19nbWJ1 c194ZmVyKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgc3RydWN0IGkyY19tc2cgKm1zZ3Ms IGludCBudW0sCj4+IC0JICAgICAgdTMyIGdtYnVzMF9zb3VyY2UpCj4+ICsJICAgICAgdTMyIGdt YnVzMF9zb3VyY2UsIGJvb2wgYnVyc3RfcmVhZCkKPj4gIHsKPj4gIAlzdHJ1Y3QgaW50ZWxfZ21i dXMgKmJ1cyA9IGNvbnRhaW5lcl9vZihhZGFwdGVyLAo+PiAgCQkJCQkgICAgICAgc3RydWN0IGlu dGVsX2dtYnVzLAo+PiBAQCAtNTQ0LDE1ICs1NzUsMjAgQEAgZG9fZ21idXNfeGZlcihzdHJ1Y3Qg aTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIHN0cnVjdCBpMmNfbXNnICptc2dzLCBpbnQgbnVtLAo+PiAg CWZvciAoOyBpIDwgbnVtOyBpICs9IGluYykgewo+PiAgCQlpbmMgPSAxOwo+PiAgCQlpZiAoZ21i dXNfaXNfaW5kZXhfeGZlcihtc2dzLCBpLCBudW0pKSB7Cj4+IC0JCQlyZXQgPSBnbWJ1c19pbmRl eF94ZmVyKGRldl9wcml2LCAmbXNnc1tpXSk7Cj4+ICsJCQlyZXQgPSBnbWJ1c19pbmRleF94ZmVy KGRldl9wcml2LCAmbXNnc1tpXSwgYnVyc3RfcmVhZCk7Cj4+ICAJCQlpbmMgPSAyOyAvKiBhbiBp bmRleCB0cmFuc21pc3Npb24gaXMgdHdvIG1zZ3MgKi8KPj4gIAkJfSBlbHNlIGlmIChtc2dzW2ld LmZsYWdzICYgSTJDX01fUkQpIHsKPj4gLQkJCXJldCA9IGdtYnVzX3hmZXJfcmVhZChkZXZfcHJp diwgJm1zZ3NbaV0sIDApOwo+PiArCQkJcmV0ID0gZ21idXNfeGZlcl9yZWFkKGRldl9wcml2LCAm bXNnc1tpXSwKPj4gKwkJCQkJICAgICAgMCwgYnVyc3RfcmVhZCk7Cj4+ICAJCX0gZWxzZSB7Cj4+ ICAJCQlyZXQgPSBnbWJ1c194ZmVyX3dyaXRlKGRldl9wcml2LCAmbXNnc1tpXSwgMCk7Cj4+ICAJ CX0KPj4gIAo+PiAtCQlpZiAoIXJldCkKPj4gKwkJLyoKPj4gKwkJICogQnVyc3QgcmVhZCBTZXF1 ZW5jZSBlbmRzIHdpdGggU1RPUC4gU28gRG9udCBleHBlY3QKPj4gKwkJICogSFcgd2FpdCBwaGFz ZS4KPj4gKwkJICovCj4+ICsJCWlmICghcmV0ICYmICFidXJzdF9yZWFkKQo+PiAgCQkJcmV0ID0g Z21idXNfd2FpdChkZXZfcHJpdiwKPj4gIAkJCQkJIEdNQlVTX0hXX1dBSVRfUEhBU0UsIEdNQlVT X0hXX1dBSVRfRU4pOwo+PiAgCQlpZiAocmV0ID09IC1FVElNRURPVVQpCj4+IEBAIC02NjQsNyAr NzAwLDcgQEAgZ21idXNfeGZlcihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIHN0cnVjdCBp MmNfbXNnICptc2dzLCBpbnQgbnVtKQo+PiAgCQlpZiAocmV0IDwgMCkKPj4gIAkJCWJ1cy0+Zm9y Y2VfYml0ICY9IH5HTUJVU19GT1JDRV9CSVRfUkVUUlk7Cj4+ICAJfSBlbHNlIHsKPj4gLQkJcmV0 ID0gZG9fZ21idXNfeGZlcihhZGFwdGVyLCBtc2dzLCBudW0sIDApOwo+PiArCQlyZXQgPSBkb19n bWJ1c194ZmVyKGFkYXB0ZXIsIG1zZ3MsIG51bSwgMCwgZmFsc2UpOwo+PiAgCQlpZiAocmV0ID09 IC1FQUdBSU4pCj4+ICAJCQlidXMtPmZvcmNlX2JpdCB8PSBHTUJVU19GT1JDRV9CSVRfUkVUUlk7 Cj4+ICAJfQo+PiBAQCAtNzA1LDcgKzc0MSw4IEBAIGludCBpbnRlbF9nbWJ1c19vdXRwdXRfYWtz dihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpCj4+ICAJICogcGFzcyB0aGUgaTJjIGNvbW1h bmQsIGFuZCB0ZWxsIEdNQlVTIHRvIHVzZSB0aGUgSFctcHJvdmlkZWQgdmFsdWUKPj4gIAkgKiBp bnN0ZWFkIG9mIHNvdXJjaW5nIEdNQlVTMyBmb3IgdGhlIGRhdGEuCj4+ICAJICovCj4+IC0JcmV0 ID0gZG9fZ21idXNfeGZlcihhZGFwdGVyLCBtc2dzLCBBUlJBWV9TSVpFKG1zZ3MpLCBHTUJVU19B S1NWX1NFTEVDVCk7Cj4+ICsJcmV0ID0gZG9fZ21idXNfeGZlcihhZGFwdGVyLCBtc2dzLCBBUlJB WV9TSVpFKG1zZ3MpLAo+PiArCQkJICAgIEdNQlVTX0FLU1ZfU0VMRUNULCBmYWxzZSk7Cj4+ICAK Pj4gIAltdXRleF91bmxvY2soJmRldl9wcml2LT5nbWJ1c19tdXRleCk7Cj4+ICAJaW50ZWxfZGlz cGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9HTUJVUyk7Cj4+IEBAIC03MTMs NiArNzUwLDU5IEBAIGludCBpbnRlbF9nbWJ1c19vdXRwdXRfYWtzdihzdHJ1Y3QgaTJjX2FkYXB0 ZXIgKmFkYXB0ZXIpCj4+ICAJcmV0dXJuIHJldDsKPj4gIH0KPj4gIAo+PiArc3RhdGljIGlubGlu ZQo+PiArYm9vbCBpbnRlbF9nbWJ1c19idXJzdF9yZWFkX3N1cHBvcnRlZChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICt7Cj4+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikg PiAxMCB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSB8fAo+PiArCSAgICBJU19LQUJZTEFLRShk ZXZfcHJpdikpCj4+ICsJCXJldHVybiB0cnVlOwo+PiArCXJldHVybiBmYWxzZTsKPj4gK30KPj4g Kwo+PiAraW50IGludGVsX2dtYnVzX2J1cnN0X3JlYWQoc3RydWN0IGkyY19hZGFwdGVyICphZGFw dGVyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAo+PiArCQkJICAgdm9pZCAqYnVmLCBzaXplX3Qgc2l6 ZSkKPj4gK3sKPj4gKwlzdHJ1Y3QgaW50ZWxfZ21idXMgKmJ1cyA9IGNvbnRhaW5lcl9vZihhZGFw dGVyLCBzdHJ1Y3QgaW50ZWxfZ21idXMsCj4+ICsJCQkJCSAgICAgICBhZGFwdGVyKTsKPj4gKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBidXMtPmRldl9wcml2Owo+PiArCWlu dCByZXQ7Cj4+ICsJdTggc3RhcnQgPSBvZmZzZXQgJiAweGZmOwo+PiArCXN0cnVjdCBpMmNfbXNn IG1zZ3NbXSA9IHsKPj4gKwkJewo+PiArCQkJLmFkZHIgPSBEUk1fSERDUF9ERENfQUREUiwKPj4g KwkJCS5mbGFncyA9IDAsCj4+ICsJCQkubGVuID0gMSwKPj4gKwkJCS5idWYgPSAmc3RhcnQsCj4+ ICsJCX0sCj4+ICsJCXsKPj4gKwkJCS5hZGRyID0gRFJNX0hEQ1BfRERDX0FERFIsCj4+ICsJCQku ZmxhZ3MgPSBJMkNfTV9SRCwKPj4gKwkJCS5sZW4gPSBzaXplLAo+PiArCQkJLmJ1ZiA9IGJ1ZiwK Pj4gKwkJfQo+PiArCX07Cj4+ICsKPj4gKwlpZiAoIWludGVsX2dtYnVzX2J1cnN0X3JlYWRfc3Vw cG9ydGVkKGRldl9wcml2KSkKPj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4gKwlpbnRlbF9k aXNwbGF5X3Bvd2VyX2dldChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX0dNQlVTKTsKPj4gKwltdXRl eF9sb2NrKCZkZXZfcHJpdi0+Z21idXNfbXV0ZXgpOwo+PiArCj4+ICsJLyoKPj4gKwkgKiBJbiBv cmRlciB0byByZWFkIHRoZSBjb21wbGV0ZSBsZW5ndGgoTW9yZSB0aGFuIEdNQnVzIExpbWl0KSBv ZiBkYXRhLAo+PiArCSAqIGluIGJ1cnN0IG1vZGUsIGltcGxlbWVudCB0aGUgV29ya2Fyb3VuZCBz dXBwb3J0ZWQgaW4gSFcuCj4+ICsJICovCj4+ICsJcmV0ID0gZG9fZ21idXNfeGZlcihhZGFwdGVy LCBtc2dzLCBBUlJBWV9TSVpFKG1zZ3MpLCAwLCB0cnVlKTsKPj4gKwo+PiArCW11dGV4X3VubG9j aygmZGV2X3ByaXYtPmdtYnVzX211dGV4KTsKPj4gKwlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChk ZXZfcHJpdiwgUE9XRVJfRE9NQUlOX0dNQlVTKTsKPj4gKwo+PiArCWlmIChyZXQgPT0gQVJSQVlf U0laRShtc2dzKSkKPj4gKwkJcmV0dXJuIDA7Cj4+ICsKPj4gKwlyZXR1cm4gcmV0ID49IDAgPyAt RUlPIDogcmV0Owo+PiArfQo+PiArCj4+ICBzdGF0aWMgdTMyIGdtYnVzX2Z1bmMoc3RydWN0IGky Y19hZGFwdGVyICphZGFwdGVyKQo+PiAgewo+PiAgCXJldHVybiBpMmNfYml0X2FsZ28uZnVuY3Rp b25hbGl0eShhZGFwdGVyKSAmCj4+IC0tIAo+PiAyLjcuNAo+PiAKCi0tIApKYW5pIE5pa3VsYSwg SW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==