From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: Re: [PATCH v3 36/40] drm/i915: Implement gmbus burst read Date: Thu, 5 Apr 2018 19:14:22 +0530 Message-ID: <0e03b8aa-b93d-779f-aef7-8285e836ae30@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> <87370auids.fsf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <87370auids.fsf@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula , Daniel Vetter , Ville Syrjala 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 CgpPbiBUaHVyc2RheSAwNSBBcHJpbCAyMDE4IDAyOjQyIFBNLCBKYW5pIE5pa3VsYSB3cm90ZToK PiBPbiBUdWUsIDAzIEFwciAyMDE4LCBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+IHdy b3RlOgo+PiBPbiBUdWUsIEFwciAwMywgMjAxOCBhdCAwNzoyNzo0OVBNICswNTMwLCBSYW1hbGlu Z2FtIEMgd3JvdGU6Cj4+PiBJbXBsZW1lbnRzIGEgaW50ZXJmYWNlIGZvciBzaW5nbGUgYnVyc3Qg cmVhZCBvZiBkYXRhIHRoYXQgaXMgbGFyZ2VyCj4+PiB0aGFuIDUxMiBCeXRlcyB0aHJvdWdoIGdt YnVzLgo+IFdoZXJlIGRvZXMgNTEyIGNvbWUgZnJvbT8gQ3VycmVudCBjb2RlIGNodW5rcyBhdCBH TUJVU19CWVRFX0NPVU5UX01BWAo+IGkuZS4gMjU2IGJ5dGVzLiBTaG91bGQgR01CVVNfQllURV9D T1VOVF9NQVggYmUgcGxhdGZvcm0gc3BlY2lmaWM/CkFjdHVhbGx5IEkgYW0gbm90IHN1cmUgd2h5 IDI1NiBpcyB0aGUgbWF4IGxpbWl0IGZvciBnbWJ1cyByZWFkL3dyaXRlIAp3aGVuIEhXIGFsbG93 cyB1cHRvIDUxMUJ5dGVzLiAyNDoxNiA5Yml0cyBvZiBHTUJVUyBpcyBUb3RhbCBieXRlIGNvdW50 LiAKU28gbWF4IHZhbHVlIGNvdWxkIGJlIDUxMUJ5dGVzLgoyNTYgaXMgY2hvb3NlbiBiZWNhdXNl IG9mIHNvbWUgcHJhY3RpY2FsIHJlYXNvbiBvciBhbnkgbGVnYWN5IHBsYXRmb3JtIApjYXBhYmls aXR5Pwo+Cj4+PiBIRENQMi4yIHNwZWMgZXhwZWN0cyBIRENQMi4yIHRyYW5zbWl0dGVyIHRvIHJl YWQgNTIyQnl0ZXMgb2YgSERDUAo+Pj4gcmVjZWl2ZXIgY2VydGlmaWNhdGVzIGluIHNpbmdsZSBi dXJzdCByZWFkLiBPbiBnbWJ1cywgdG8gcmVhZCBtb3JlCj4+PiB0aGFuIDUxMUJ5dGVzLCBIVyBw cm92aWRlcyBhIHdvcmthcm91bmQgZm9yIGJ1cnN0IHJlYWQuCj4+Pgo+Pj4gVGhpcyBwYXRjaCBw YXNzZXMgdGhlIGJ1cnN0IHJlYWQgcmVxdWVzdCB0aHJvdWdoIGdtYnVzIHJlYWQgZnVuY3Rpb25z Lgo+Pj4gQW5kIGltcGxlbWVudHMgdGhlIHNlcXVlbmNlIG9mIGVuYWJsaW5nIGFuZCBkaXNhYmxp bmcgdGhlIGJ1cnN0IHJlYWQuCj4+Pgo+Pj4gdjI6Cj4+PiAgICBObyBDaGFuZ2VzLgo+Pj4gdjM6 Cj4+PiAgICBObyBDaGFuZ2VzLgo+Pj4KPj4+IFNpZ25lZC1vZmYtYnk6IFJhbWFsaW5nYW0gQyA8 cmFtYWxpbmdhbS5jQGludGVsLmNvbT4KPj4gV2h5IG9ubHkgZW5hYmxlIHRoaXMgYnVyc3RfcmVh ZCBtb2RlIGZvciBoZGNwLCBhbmQgbm90IGZvciBhbGwgaTJjCj4+IHRyYW5zYWN0aW9ucz8gU2Vl bXMgdG8gdW5lY2Vzc2FyaWx5IGNvbXBsaWNhdGUgdGhlIGNvZGUsIHNpbmNlIGl0IHJlcXVpcmVz Cj4+IHRoYXQgeW91IHBhc3MgYnVyc3RfcmVhZCB0aHJvdWdoIHRoZSBlbnRpcmUgY2FsbCBjaGFp bi4gRm9yIG90aGVyIGNoYW5nZXMKPj4gd2UndmUgZG9uZSBmb3IgaGRjcCAobGlrZSBlbmFibGlu ZyB0aGUgcmVhZC93cml0ZSBtb2RlIGFuZCBvdGhlciBzdHVmZikKPj4gd2UndmUgZW5hYmxlZCBp dCBmb3IgYWxsIGkyYyB0cmFuc2FjdGlvbnMuIFRoYXQgYWxzbyBtZWFucyBtb3JlIHRlc3Rpbmcs Cj4+IHNpbmNlIGl0IHdpbGwgYmUgdXNlZCBldmVuIHdoZW4gSERDUCBpcyBub3QgaW4gdXNlLgo+ IEFncmVlZC4KPgo+IFNob3VsZG4ndCB0aGUgZGVjaXNpb24gdG8gdXNlIGJ1cnN0IHJlYWQgYmUg YmFzZWQgb24gdGhlIGxlbmd0aCB0byBiZQo+IHJlYWQ/IE1vcmUgdGhhbiAyNTYgYnl0ZXMsIHVz ZSBidXJzdCwgb3RoZXJ3aXNlIG5vdC4gT3IgYXJlIHRoZXJlCj4gZnVuY3Rpb25hbCBkaWZmZXJl bmNlcyBvciBiZW5lZml0cyB0byB1c2luZyBidXJzdCBtb2RlIGZvciBzaG9ydGVyCj4gcmVhZHM/ CkJ1c3J0IHJlYWQgaXMgZW5hYmxlZCBvbiBmZXcgbGF0ZXN0IHBsYXRmb3JtcyAoZnJvbSBLQkwr IGZvciBIRENQMi4yIApjb21wbGlhbmNlIHJlcXVpcmVtZW50LAp3aGVyZSBzcGxpdCBJMkMgcmVh ZCBvZiBhIG1zZyg1MzRCeXRlcykgaXMgbm90IGFjY2VwdGVkKQoKSWYgdGhlcmUgaXMgbm8gb2Jq ZWN0aW9uLCBleHRlbmQgdGhlIHNpbmdsZSBub3JtYWwgcmQvd3IgdG8gNTExQnl0ZXMgCmZyb20g MjU2Ynl0ZXMuCkFuZCBhbnkgcmVhZCBmb3IgbW9yZSB0aGFuIDUxMSBCeXRlcyB1c2UgdGhlIEJ1 cnN0IHJlYWQgb24gY2FwYWJsZSAKcGxhdGZvcm1zLgoKVGhvdWdoIHBlcnNvbmFsbHkgSSBkb250 IGJlbGlldmUgaXQgd2lsbCBnaXZlIG11Y2ggb2Ygb3B0aW1pemF0aW9uLCBhcyAKYnVyc3QgcmVh ZCBhbHNvIGJyaW5ncyBpbiBzb21lCmV4dHJhIHByb2dyYW1taW5nIHJlcXVpcmVtZW50cy4gQnV0 IG1pZ2h0IGF2b2lkIGV4dHJhIGRyaXZlciBlbnRyeSBwb2ludCAKZm9yIEdNQlVTIGxpa2UgaW50 ZWxfZ21idXNfYnVyc3RfcmVhZCgpLgoKPgo+IEkgZ3Vlc3MgSSdkIHN0aWxsIHByZXBhcmUgdG8g YWRkIHNvbWUgYnVyc3QgZmllbGQgdG8gc3RydWN0IGludGVsX2dtYnVzLAo+IG5vdCB1bmxpa2Ug Zm9yY2VfYml0Lgo+Cj4gU2lkZSBub3RlLCBJIHdvdWxkIHByZWZlciBzaWduaWZpY2FudCBjaGFu Z2VzIHRvIGJhc2ljIHBsdW1iaW5nIGxpa2UKPiBnbWJ1cyBiZSBoaWdobGlnaHRlZCBiZXR0ZXIu IFBsZWFzZSBhdCBsZWFzdCBwcmVmaXggdGhlIGhkY3AgcGF0Y2hlcwo+IHdpdGggImRybS9pOTE1 L2hkY3AiIGFuZCBnbWJ1cyB3aXRoICJkcm0vaTkxNS9nbWJ1cyIuIFRoZSBwYXRjaCBhdCBoYW5k Cj4gaXMga2luZCBvZiBoaWRkZW4gaW4gdGhlIG1pZGRsZSBvZiBhIGxhcmdlIHRvcGljYWwgc2Vy aWVzLCBhbmQgd291bGQKPiBkZXNlcnZlIHRvIGJlIGxvb2tlZCBhdCBieSBwZW9wbGUgd2hvIGFy ZW4ndCBuZWNlc3NhcmlseSBhbGwgdGhhdCBpbnRvCj4gaGRjcC4KU3VyZS4KCi0tUmFtCj4KPgo+ IEJSLAo+IEphbmkuCj4KPgo+PiAtRGFuaWVsCj4+Cj4+PiAtLS0KPj4+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaCAgfCAgIDIgKwo+Pj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3JlZy5oICB8ICAgMyArCj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2kyYy5j IHwgMTI0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQo+Pj4gICAzIGZp bGVzIGNoYW5nZWQsIDExMiBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKPj4+Cj4+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4+IGluZGV4IDZlNzQwZjZmZTMzZi4uNzI1MzRhMWU1NDRi IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+Pj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+Pj4gQEAgLTM2ODgsNiArMzY4OCw4 IEBAIGV4dGVybiB2b2lkIGludGVsX3RlYXJkb3duX2dtYnVzKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdik7Cj4+PiAgIGV4dGVybiBib29sIGludGVsX2dtYnVzX2lzX3ZhbGlkX3Bp bihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+PiAgIAkJCQkgICAgIHVuc2ln bmVkIGludCBwaW4pOwo+Pj4gICBleHRlcm4gaW50IGludGVsX2dtYnVzX291dHB1dF9ha3N2KHN0 cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcik7Cj4+PiArZXh0ZXJuIGludCBpbnRlbF9nbWJ1c19i dXJzdF9yZWFkKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwKPj4+ICsJCQkJICB1bnNpZ25l ZCBpbnQgb2Zmc2V0LCB2b2lkICpidWYsIHNpemVfdCBzaXplKTsKPj4+ICAgCj4+PiAgIGV4dGVy biBzdHJ1Y3QgaTJjX2FkYXB0ZXIgKgo+Pj4gICBpbnRlbF9nbWJ1c19nZXRfYWRhcHRlcihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHVuc2lnbmVkIGludCBwaW4pOwo+Pj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlZy5oCj4+PiBpbmRleCBmMDRhZDNjMTVhYmQuLjU2OTc5YmM0ZTlkOCAx MDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPj4+IEBAIC0zMTIzLDYgKzMxMjMsNyBA QCBlbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCB7Cj4+PiAgICNkZWZpbmUgICBHTUJVU19SQVRFXzQw MEtIWgkoMjw8OCkgLyogcmVzZXJ2ZWQgb24gUGluZXZpZXcgKi8KPj4+ICAgI2RlZmluZSAgIEdN QlVTX1JBVEVfMU1IWgkoMzw8OCkgLyogcmVzZXJ2ZWQgb24gUGluZXZpZXcgKi8KPj4+ICAgI2Rl ZmluZSAgIEdNQlVTX0hPTERfRVhUCSgxPDw3KSAvKiAzMDBucyBob2xkIHRpbWUsIHJzdmQgb24g UGluZXZpZXcgKi8KPj4+ICsjZGVmaW5lICAgR01CVVNfQllURV9DTlRfT1ZFUlJJREUgKDE8PDYp Cj4+PiAgICNkZWZpbmUgICBHTUJVU19QSU5fRElTQUJMRUQJMAo+Pj4gICAjZGVmaW5lICAgR01C VVNfUElOX1NTQwkJMQo+Pj4gICAjZGVmaW5lICAgR01CVVNfUElOX1ZHQUREQwkyCj4+PiBAQCAt MzE1MCw4ICszMTUxLDEwIEBAIGVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIHsKPj4+ICAgI2RlZmlu ZSAgIEdNQlVTX0NZQ0xFX1dBSVQJKDE8PDI1KQo+Pj4gICAjZGVmaW5lICAgR01CVVNfQ1lDTEVf SU5ERVgJKDI8PDI1KQo+Pj4gICAjZGVmaW5lICAgR01CVVNfQ1lDTEVfU1RPUAkoNDw8MjUpCj4+ PiArI2RlZmluZSAgIEdNQlVTX0NZQ0xFX01BU0sJKDc8PDI1KQo+Pj4gICAjZGVmaW5lICAgR01C VVNfQllURV9DT1VOVF9TSElGVCAxNgo+Pj4gICAjZGVmaW5lICAgR01CVVNfQllURV9DT1VOVF9N QVggICAyNTZVCj4+PiArI2RlZmluZSAgIEdNQlVTX0JZVEVfQ09VTlRfSFdfTUFYIDUxMVUKPj4+ ICAgI2RlZmluZSAgIEdNQlVTX1NMQVZFX0lOREVYX1NISUZUIDgKPj4+ICAgI2RlZmluZSAgIEdN QlVTX1NMQVZFX0FERFJfU0hJRlQgMQo+Pj4gICAjZGVmaW5lICAgR01CVVNfU0xBVkVfUkVBRAko MTw8MCkKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9pMmMuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2kyYy5jCj4+PiBpbmRleCBlNjg3NTUwOWJjZDku LmRjYjJiZTBkNTRlZSAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2kyYy5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9pMmMuYwo+Pj4gQEAg LTM2NCwyMSArMzY0LDMwIEBAIGdtYnVzX3dhaXRfaWRsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4+PiAgIHN0YXRpYyBpbnQKPj4+ICAgZ21idXNfeGZlcl9yZWFkX2NodW5r KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4+ICAgCQkgICAgICB1bnNpZ25l ZCBzaG9ydCBhZGRyLCB1OCAqYnVmLCB1bnNpZ25lZCBpbnQgbGVuLAo+Pj4gLQkJICAgICAgdTMy IGdtYnVzMV9pbmRleCkKPj4+ICsJCSAgICAgIHUzMiBnbWJ1czFfaW5kZXgsIGJvb2wgYnVyc3Rf cmVhZCkKPj4+ICAgewo+Pj4gKwl1bnNpZ25lZCBpbnQgc2l6ZSA9IGxlbjsKPj4+ICsJaW50IHJl dDsKPj4+ICsKPj4+ICsJaWYgKGJ1cnN0X3JlYWQpIHsKPj4+ICsJCS8qIFNlcSB0byBlbmFibGUg QnVyc3QgUmVhZCAqLwo+Pj4gKwkJSTkxNV9XUklURV9GVyhHTUJVUzAsIChJOTE1X1JFQURfRlco R01CVVMwKSB8Cj4+PiArCQkJICAgICAgR01CVVNfQllURV9DTlRfT1ZFUlJJREUpKTsKPj4+ICsJ CXNpemUgPSBHTUJVU19CWVRFX0NPVU5UX0hXX01BWDsKPj4+ICsJfQo+Pj4gKwo+Pj4gICAJSTkx NV9XUklURV9GVyhHTUJVUzEsCj4+PiAgIAkJICAgICAgZ21idXMxX2luZGV4IHwKPj4+ICAgCQkg ICAgICBHTUJVU19DWUNMRV9XQUlUIHwKPj4+IC0JCSAgICAgIChsZW4gPDwgR01CVVNfQllURV9D T1VOVF9TSElGVCkgfAo+Pj4gKwkJICAgICAgKHNpemUgPDwgR01CVVNfQllURV9DT1VOVF9TSElG VCkgfAo+Pj4gICAJCSAgICAgIChhZGRyIDw8IEdNQlVTX1NMQVZFX0FERFJfU0hJRlQpIHwKPj4+ ICAgCQkgICAgICBHTUJVU19TTEFWRV9SRUFEIHwgR01CVVNfU1dfUkRZKTsKPj4+ICAgCXdoaWxl IChsZW4pIHsKPj4+IC0JCWludCByZXQ7Cj4+PiAgIAkJdTMyIHZhbCwgbG9vcCA9IDA7Cj4+PiAg IAo+Pj4gICAJCXJldCA9IGdtYnVzX3dhaXQoZGV2X3ByaXYsIEdNQlVTX0hXX1JEWSwgR01CVVNf SFdfUkRZX0VOKTsKPj4+ICAgCQlpZiAocmV0KQo+Pj4gLQkJCXJldHVybiByZXQ7Cj4+PiArCQkJ Z290byBleGl0Owo+Pj4gICAKPj4+ICAgCQl2YWwgPSBJOTE1X1JFQURfRlcoR01CVVMzKTsKPj4+ ICAgCQlkbyB7Cj4+PiBAQCAtMzg3LDEyICszOTYsMjkgQEAgZ21idXNfeGZlcl9yZWFkX2NodW5r KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4+ICAgCQl9IHdoaWxlICgtLWxl biAmJiArK2xvb3AgPCA0KTsKPj4+ICAgCX0KPj4+ICAgCj4+PiAtCXJldHVybiAwOwo+Pj4gK2V4 aXQ6Cj4+PiArCWlmIChidXJzdF9yZWFkKSB7Cj4+PiArCj4+PiArCQkvKiBTZXEgdG8gZGlzYWJs ZSB0aGUgQnVyc3QgUmVhZCAqLwo+Pj4gKwkJSTkxNV9XUklURV9GVyhHTUJVUzAsIChJOTE1X1JF QURfRlcoR01CVVMwKSAmCj4+PiArCQkJICAgICAgfkdNQlVTX0JZVEVfQ05UX09WRVJSSURFKSk7 Cj4+PiArCQlJOTE1X1dSSVRFX0ZXKEdNQlVTMSwgKEk5MTVfUkVBRF9GVyhHTUJVUzEpICYKPj4+ ICsJCQkgICAgICB+R01CVVNfQ1lDTEVfTUFTSykgfCBHTUJVU19DWUNMRV9TVE9QKTsKPj4+ICsK Pj4+ICsJCS8qCj4+PiArCQkgKiBPbiBCdXJzdCByZWFkIGRpc2FibGUsIEdNQlVTIG5lZWQgbW9y ZSB0aW1lIHRvIHNldHRsZQo+Pj4gKwkJICogZG93biB0byBJZGxlIFN0YXRlLgo+Pj4gKwkJICov Cj4+PiArCQlyZXQgPSBpbnRlbF93YWl0X2Zvcl9yZWdpc3Rlcl9mdyhkZXZfcHJpdiwgR01CVVMy LAo+Pj4gKwkJCQkJCSBHTUJVU19BQ1RJVkUsIDAsIDUwKTsKPj4+ICsJfQo+Pj4gKwo+Pj4gKwly ZXR1cm4gcmV0Owo+Pj4gICB9Cj4+PiAgIAo+Pj4gICBzdGF0aWMgaW50Cj4+PiAgIGdtYnVzX3hm ZXJfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHN0cnVjdCBpMmNfbXNn ICptc2csCj4+PiAtCQl1MzIgZ21idXMxX2luZGV4KQo+Pj4gKwkJdTMyIGdtYnVzMV9pbmRleCwg Ym9vbCBidXJzdF9yZWFkKQo+Pj4gICB7Cj4+PiAgIAl1OCAqYnVmID0gbXNnLT5idWY7Cj4+PiAg IAl1bnNpZ25lZCBpbnQgcnhfc2l6ZSA9IG1zZy0+bGVuOwo+Pj4gQEAgLTQwMCwxMCArNDI2LDEz IEBAIGdtYnVzX3hmZXJfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHN0 cnVjdCBpMmNfbXNnICptc2csCj4+PiAgIAlpbnQgcmV0Owo+Pj4gICAKPj4+ICAgCWRvIHsKPj4+ IC0JCWxlbiA9IG1pbihyeF9zaXplLCBHTUJVU19CWVRFX0NPVU5UX01BWCk7Cj4+PiArCQlpZiAo YnVyc3RfcmVhZCkKPj4+ICsJCQlsZW4gPSByeF9zaXplOwo+Pj4gKwkJZWxzZQo+Pj4gKwkJCWxl biA9IG1pbihyeF9zaXplLCBHTUJVU19CWVRFX0NPVU5UX01BWCk7Cj4+PiAgIAo+Pj4gLQkJcmV0 ID0gZ21idXNfeGZlcl9yZWFkX2NodW5rKGRldl9wcml2LCBtc2ctPmFkZHIsCj4+PiAtCQkJCQkg ICAgYnVmLCBsZW4sIGdtYnVzMV9pbmRleCk7Cj4+PiArCQlyZXQgPSBnbWJ1c194ZmVyX3JlYWRf Y2h1bmsoZGV2X3ByaXYsIG1zZy0+YWRkciwgYnVmLCBsZW4sCj4+PiArCQkJCQkgICAgZ21idXMx X2luZGV4LCBidXJzdF9yZWFkKTsKPj4+ICAgCQlpZiAocmV0KQo+Pj4gICAJCQlyZXR1cm4gcmV0 Owo+Pj4gICAKPj4+IEBAIC00OTEsNyArNTIwLDggQEAgZ21idXNfaXNfaW5kZXhfeGZlcihzdHJ1 Y3QgaTJjX21zZyAqbXNncywgaW50IGksIGludCBudW0pCj4+PiAgIH0KPj4+ICAgCj4+PiAgIHN0 YXRpYyBpbnQKPj4+IC1nbWJ1c19pbmRleF94ZmVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgc3RydWN0IGkyY19tc2cgKm1zZ3MpCj4+PiArZ21idXNfaW5kZXhfeGZlcihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHN0cnVjdCBpMmNfbXNnICptc2dzLAo+Pj4g KwkJIGJvb2wgYnVyc3RfcmVhZCkKPj4+ICAgewo+Pj4gICAJdTMyIGdtYnVzMV9pbmRleCA9IDA7 Cj4+PiAgIAl1MzIgZ21idXM1ID0gMDsKPj4+IEBAIC01MDksNyArNTM5LDggQEAgZ21idXNfaW5k ZXhfeGZlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHN0cnVjdCBpMmNfbXNn ICptc2dzKQo+Pj4gICAJCUk5MTVfV1JJVEVfRlcoR01CVVM1LCBnbWJ1czUpOwo+Pj4gICAKPj4+ ICAgCWlmIChtc2dzWzFdLmZsYWdzICYgSTJDX01fUkQpCj4+PiAtCQlyZXQgPSBnbWJ1c194ZmVy X3JlYWQoZGV2X3ByaXYsICZtc2dzWzFdLCBnbWJ1czFfaW5kZXgpOwo+Pj4gKwkJcmV0ID0gZ21i dXNfeGZlcl9yZWFkKGRldl9wcml2LCAmbXNnc1sxXSwKPj4+ICsJCQkJICAgICAgZ21idXMxX2lu ZGV4LCBidXJzdF9yZWFkKTsKPj4+ICAgCWVsc2UKPj4+ICAgCQlyZXQgPSBnbWJ1c194ZmVyX3dy aXRlKGRldl9wcml2LCAmbXNnc1sxXSwgZ21idXMxX2luZGV4KTsKPj4+ICAgCj4+PiBAQCAtNTIy LDcgKzU1Myw3IEBAIGdtYnVzX2luZGV4X3hmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LCBzdHJ1Y3QgaTJjX21zZyAqbXNncykKPj4+ICAgCj4+PiAgIHN0YXRpYyBpbnQKPj4+ ICAgZG9fZ21idXNfeGZlcihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIHN0cnVjdCBpMmNf bXNnICptc2dzLCBpbnQgbnVtLAo+Pj4gLQkgICAgICB1MzIgZ21idXMwX3NvdXJjZSkKPj4+ICsJ ICAgICAgdTMyIGdtYnVzMF9zb3VyY2UsIGJvb2wgYnVyc3RfcmVhZCkKPj4+ICAgewo+Pj4gICAJ c3RydWN0IGludGVsX2dtYnVzICpidXMgPSBjb250YWluZXJfb2YoYWRhcHRlciwKPj4+ICAgCQkJ CQkgICAgICAgc3RydWN0IGludGVsX2dtYnVzLAo+Pj4gQEAgLTU0NCwxNSArNTc1LDIwIEBAIGRv X2dtYnVzX3hmZXIoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgaTJjX21zZyAq bXNncywgaW50IG51bSwKPj4+ICAgCWZvciAoOyBpIDwgbnVtOyBpICs9IGluYykgewo+Pj4gICAJ CWluYyA9IDE7Cj4+PiAgIAkJaWYgKGdtYnVzX2lzX2luZGV4X3hmZXIobXNncywgaSwgbnVtKSkg ewo+Pj4gLQkJCXJldCA9IGdtYnVzX2luZGV4X3hmZXIoZGV2X3ByaXYsICZtc2dzW2ldKTsKPj4+ ICsJCQlyZXQgPSBnbWJ1c19pbmRleF94ZmVyKGRldl9wcml2LCAmbXNnc1tpXSwgYnVyc3RfcmVh ZCk7Cj4+PiAgIAkJCWluYyA9IDI7IC8qIGFuIGluZGV4IHRyYW5zbWlzc2lvbiBpcyB0d28gbXNn cyAqLwo+Pj4gICAJCX0gZWxzZSBpZiAobXNnc1tpXS5mbGFncyAmIEkyQ19NX1JEKSB7Cj4+PiAt CQkJcmV0ID0gZ21idXNfeGZlcl9yZWFkKGRldl9wcml2LCAmbXNnc1tpXSwgMCk7Cj4+PiArCQkJ cmV0ID0gZ21idXNfeGZlcl9yZWFkKGRldl9wcml2LCAmbXNnc1tpXSwKPj4+ICsJCQkJCSAgICAg IDAsIGJ1cnN0X3JlYWQpOwo+Pj4gICAJCX0gZWxzZSB7Cj4+PiAgIAkJCXJldCA9IGdtYnVzX3hm ZXJfd3JpdGUoZGV2X3ByaXYsICZtc2dzW2ldLCAwKTsKPj4+ICAgCQl9Cj4+PiAgIAo+Pj4gLQkJ aWYgKCFyZXQpCj4+PiArCQkvKgo+Pj4gKwkJICogQnVyc3QgcmVhZCBTZXF1ZW5jZSBlbmRzIHdp dGggU1RPUC4gU28gRG9udCBleHBlY3QKPj4+ICsJCSAqIEhXIHdhaXQgcGhhc2UuCj4+PiArCQkg Ki8KPj4+ICsJCWlmICghcmV0ICYmICFidXJzdF9yZWFkKQo+Pj4gICAJCQlyZXQgPSBnbWJ1c193 YWl0KGRldl9wcml2LAo+Pj4gICAJCQkJCSBHTUJVU19IV19XQUlUX1BIQVNFLCBHTUJVU19IV19X QUlUX0VOKTsKPj4+ICAgCQlpZiAocmV0ID09IC1FVElNRURPVVQpCj4+PiBAQCAtNjY0LDcgKzcw MCw3IEBAIGdtYnVzX3hmZXIoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgaTJj X21zZyAqbXNncywgaW50IG51bSkKPj4+ICAgCQlpZiAocmV0IDwgMCkKPj4+ICAgCQkJYnVzLT5m b3JjZV9iaXQgJj0gfkdNQlVTX0ZPUkNFX0JJVF9SRVRSWTsKPj4+ICAgCX0gZWxzZSB7Cj4+PiAt CQlyZXQgPSBkb19nbWJ1c194ZmVyKGFkYXB0ZXIsIG1zZ3MsIG51bSwgMCk7Cj4+PiArCQlyZXQg PSBkb19nbWJ1c194ZmVyKGFkYXB0ZXIsIG1zZ3MsIG51bSwgMCwgZmFsc2UpOwo+Pj4gICAJCWlm IChyZXQgPT0gLUVBR0FJTikKPj4+ICAgCQkJYnVzLT5mb3JjZV9iaXQgfD0gR01CVVNfRk9SQ0Vf QklUX1JFVFJZOwo+Pj4gICAJfQo+Pj4gQEAgLTcwNSw3ICs3NDEsOCBAQCBpbnQgaW50ZWxfZ21i dXNfb3V0cHV0X2Frc3Yoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyKQo+Pj4gICAJICogcGFz cyB0aGUgaTJjIGNvbW1hbmQsIGFuZCB0ZWxsIEdNQlVTIHRvIHVzZSB0aGUgSFctcHJvdmlkZWQg dmFsdWUKPj4+ICAgCSAqIGluc3RlYWQgb2Ygc291cmNpbmcgR01CVVMzIGZvciB0aGUgZGF0YS4K Pj4+ICAgCSAqLwo+Pj4gLQlyZXQgPSBkb19nbWJ1c194ZmVyKGFkYXB0ZXIsIG1zZ3MsIEFSUkFZ X1NJWkUobXNncyksIEdNQlVTX0FLU1ZfU0VMRUNUKTsKPj4+ICsJcmV0ID0gZG9fZ21idXNfeGZl cihhZGFwdGVyLCBtc2dzLCBBUlJBWV9TSVpFKG1zZ3MpLAo+Pj4gKwkJCSAgICBHTUJVU19BS1NW X1NFTEVDVCwgZmFsc2UpOwo+Pj4gICAKPj4+ICAgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmdt YnVzX211dGV4KTsKPj4+ICAgCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBQT1dF Ul9ET01BSU5fR01CVVMpOwo+Pj4gQEAgLTcxMyw2ICs3NTAsNTkgQEAgaW50IGludGVsX2dtYnVz X291dHB1dF9ha3N2KHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcikKPj4+ICAgCXJldHVybiBy ZXQ7Cj4+PiAgIH0KPj4+ICAgCj4+PiArc3RhdGljIGlubGluZQo+Pj4gK2Jvb2wgaW50ZWxfZ21i dXNfYnVyc3RfcmVhZF9zdXBwb3J0ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+Pj4gK3sKPj4+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPiAxMCB8fCBJU19HRU1JTklM QUtFKGRldl9wcml2KSB8fAo+Pj4gKwkgICAgSVNfS0FCWUxBS0UoZGV2X3ByaXYpKQo+Pj4gKwkJ cmV0dXJuIHRydWU7Cj4+PiArCXJldHVybiBmYWxzZTsKPj4+ICt9Cj4+PiArCj4+PiAraW50IGlu dGVsX2dtYnVzX2J1cnN0X3JlYWQoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCB1bnNpZ25l ZCBpbnQgb2Zmc2V0LAo+Pj4gKwkJCSAgIHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUpCj4+PiArewo+ Pj4gKwlzdHJ1Y3QgaW50ZWxfZ21idXMgKmJ1cyA9IGNvbnRhaW5lcl9vZihhZGFwdGVyLCBzdHJ1 Y3QgaW50ZWxfZ21idXMsCj4+PiArCQkJCQkgICAgICAgYWRhcHRlcik7Cj4+PiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGJ1cy0+ZGV2X3ByaXY7Cj4+PiArCWludCByZXQ7 Cj4+PiArCXU4IHN0YXJ0ID0gb2Zmc2V0ICYgMHhmZjsKPj4+ICsJc3RydWN0IGkyY19tc2cgbXNn c1tdID0gewo+Pj4gKwkJewo+Pj4gKwkJCS5hZGRyID0gRFJNX0hEQ1BfRERDX0FERFIsCj4+PiAr CQkJLmZsYWdzID0gMCwKPj4+ICsJCQkubGVuID0gMSwKPj4+ICsJCQkuYnVmID0gJnN0YXJ0LAo+ Pj4gKwkJfSwKPj4+ICsJCXsKPj4+ICsJCQkuYWRkciA9IERSTV9IRENQX0REQ19BRERSLAo+Pj4g KwkJCS5mbGFncyA9IEkyQ19NX1JELAo+Pj4gKwkJCS5sZW4gPSBzaXplLAo+Pj4gKwkJCS5idWYg PSBidWYsCj4+PiArCQl9Cj4+PiArCX07Cj4+PiArCj4+PiArCWlmICghaW50ZWxfZ21idXNfYnVy c3RfcmVhZF9zdXBwb3J0ZWQoZGV2X3ByaXYpKQo+Pj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4+PiAr Cj4+PiArCWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fR01C VVMpOwo+Pj4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+Z21idXNfbXV0ZXgpOwo+Pj4gKwo+Pj4g KwkvKgo+Pj4gKwkgKiBJbiBvcmRlciB0byByZWFkIHRoZSBjb21wbGV0ZSBsZW5ndGgoTW9yZSB0 aGFuIEdNQnVzIExpbWl0KSBvZiBkYXRhLAo+Pj4gKwkgKiBpbiBidXJzdCBtb2RlLCBpbXBsZW1l bnQgdGhlIFdvcmthcm91bmQgc3VwcG9ydGVkIGluIEhXLgo+Pj4gKwkgKi8KPj4+ICsJcmV0ID0g ZG9fZ21idXNfeGZlcihhZGFwdGVyLCBtc2dzLCBBUlJBWV9TSVpFKG1zZ3MpLCAwLCB0cnVlKTsK Pj4+ICsKPj4+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+Z21idXNfbXV0ZXgpOwo+Pj4gKwlp bnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX0dNQlVTKTsKPj4+ ICsKPj4+ICsJaWYgKHJldCA9PSBBUlJBWV9TSVpFKG1zZ3MpKQo+Pj4gKwkJcmV0dXJuIDA7Cj4+ PiArCj4+PiArCXJldHVybiByZXQgPj0gMCA/IC1FSU8gOiByZXQ7Cj4+PiArfQo+Pj4gKwo+Pj4g ICBzdGF0aWMgdTMyIGdtYnVzX2Z1bmMoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyKQo+Pj4g ICB7Cj4+PiAgIAlyZXR1cm4gaTJjX2JpdF9hbGdvLmZ1bmN0aW9uYWxpdHkoYWRhcHRlcikgJgo+ Pj4gLS0gCj4+PiAyLjcuNAo+Pj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=