From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: Re: [PATCH v6] drm/i915/dsc: Add Per connector debugfs node for DSC support/enable Date: Wed, 05 Dec 2018 16:24:23 -0500 Message-ID: References: <20181204030749.29103-1-manasi.d.navare@intel.com> <20181204195537.5274-1-manasi.d.navare@intel.com> <0c4d34a69ba1a56e7be0d8932c1e057b37be03c3.camel@redhat.com> <20181205192940.GC2462@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qt1-f194.google.com (mail-qt1-f194.google.com [209.85.160.194]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8B6006E4F8 for ; Wed, 5 Dec 2018 21:24:26 +0000 (UTC) Received: by mail-qt1-f194.google.com with SMTP id n21so24027897qtl.6 for ; Wed, 05 Dec 2018 13:24:26 -0800 (PST) In-Reply-To: <20181205192940.GC2462@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Manasi Navare Cc: intel-gfx@lists.freedesktop.org, Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAyMDE4LTEyLTA1IGF0IDExOjI5IC0wODAwLCBNYW5hc2kgTmF2YXJlIHdyb3RlOgo+ IE9uIFdlZCwgRGVjIDA1LCAyMDE4IGF0IDAyOjAwOjM5UE0gLTA1MDAsIEx5dWRlIFBhdWwgd3Jv dGU6Cj4gPiBMb29rcyBnb29kLCBzb21lIHNtYWxsIG5pdHBpY2tzCj4gPiAKPiA+IE9uIFR1ZSwg MjAxOC0xMi0wNCBhdCAxMTo1NSAtMDgwMCwgTWFuYXNpIE5hdmFyZSB3cm90ZToKPiA+ID4gRFND IGNhbiBiZSBzdXBwb3J0ZWQgcGVyIERQIGNvbm5lY3Rvci4gVGhpcyBwYXRjaCBhZGRzIGEgcGVy IGNvbm5lY3Rvcgo+ID4gPiBkZWJ1Z2ZzIG5vZGUgdG8gZXhwb3NlIERTQyBzdXBwb3J0IGNhcGFi aWxpdHkgYnkgdGhlIGtlcm5lbC4KPiA+ID4gVGhlIHNhbWUgbm9kZSBjYW4gYmUgdXNlZCBmcm9t IHVzZXJzcGFjZSB0byBmb3JjZSBEU0MgZW5hYmxlLgo+ID4gPiAKPiA+ID4gZm9yY2VfZHNjX2Vu IHdyaXR0ZW4gdGhyb3VnaCB0aGlzIGRlYnVnZnMgbm9kZSBpcyB1c2VkIHRvIGZvcmNlCj4gPiA+ IERTQyBldmVuIGZvciBsb3dlciByZXNvbHV0aW9ucy4KPiA+ID4gCj4gPiA+IHY2Ogo+ID4gPiAq IFJlYWQgZmVjX2NhcGFibGUgb25seSBmb3Igbm9uIGVkcCAoTWFuYXNpKQo+ID4gPiB2NToKPiA+ ID4gKiBOYW1lIGl0IGRzYyBzaW5rIHN1cHBvcnQgYW5kIGFsc28gYWRkCj4gPiA+IGZlYyBzdXBw b3J0IGluIHRoZSBzYW1lIG5vZGUgKFZpbGxlKQo+ID4gPiB2NDoKPiA+ID4gKiBBZGQgbWlzc2Vk IGNvbm5lY3Rvcl9zdGF0dXMgY2hlY2sgKE1hbmFzaSkKPiA+ID4gKiBDcmVhdGUgaTkxNV9kc2Nf c3VwcG9ydCBub2RlIG9ubHkgZm9yIEdlbiA+PTEwIChtYW5hc2kpCj4gPiA+ICogQWNjZXNzIGlu dGVsX2RwLT5kc2NfZHBjZCBvbmx5IGlmIGl0cyBub3QgTlVMTCAoTWFuYXNpKQo+ID4gPiB2MzoK PiA+ID4gKiBDb21iaW5lIEZvcmNlX2RzY19lbiB3aXRoIHRoaXMgcGF0Y2ggKFZpbGxlKQo+ID4g PiB2MjoKPiA+ID4gKiBVc2Uga3N0cnRvYm9vbF9mcm9tX3VzZXIgdG8gYXZvaWQgZXhwbGljaXQg ZXJyb3IgY2hlY2tpbmcgKEx5dWRlKQo+ID4gPiAqIFJlYmFzZSBvbiBkcm0tdGlwIChNYW5hc2kp Cj4gPiA+IAo+ID4gPiBDYzogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgo+ ID4gPiBDYzogVmlsbGUgU3lyamFsYSA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4g PiA+IENjOiBBbnVzaGEgU3JpdmF0c2EgPGFudXNoYS5zcml2YXRzYUBpbnRlbC5jb20+Cj4gPiA+ IENjOiBMeXVkZSBQYXVsIDxseXVkZUByZWRoYXQuY29tPgo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBN YW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgo+ID4gPiAtLS0KPiA+ID4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIHwgODAgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAg IHwgIDMgKy0KPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgIHwgIDMg KysKPiA+ID4gIDMgZmlsZXMgY2hhbmdlZCwgODUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigt KQo+ID4gPiAKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiA+ID4g aW5kZXggMTI5YjlhNmY4MzA5Li5lYzEwYWIwMjdkMTggMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gPiA+IEBAIC01MDg2LDYgKzUwODYsNzkgQEAgc3RhdGlj IGludCBpOTE1X2hkY3Bfc2lua19jYXBhYmlsaXR5X3Nob3coc3RydWN0Cj4gPiA+IHNlcV9maWxl ICptLCB2b2lkICpkYXRhKQo+ID4gPiAgfQo+ID4gPiAgREVGSU5FX1NIT1dfQVRUUklCVVRFKGk5 MTVfaGRjcF9zaW5rX2NhcGFiaWxpdHkpOwo+ID4gPiAgCj4gPiA+ICtzdGF0aWMgaW50IGk5MTVf ZHNjX2ZlY19zdXBwb3J0X3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ID4g PiArewo+ID4gPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSBtLT5wcml2YXRl Owo+ID4gPiArCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gaW50ZWxfYXR0YWNoZWRf ZW5jb2Rlcihjb25uZWN0b3IpOwo+ID4gPiArCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPQo+ ID4gPiArCQllbmNfdG9faW50ZWxfZHAoJmVuY29kZXItPmJhc2UpOwo+ID4gPiArCXN0cnVjdCBp bnRlbF9jcnRjICpjcnRjOwo+ID4gPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlOwo+ID4gPiArCj4gPiA+ICsJaWYgKGNvbm5lY3Rvci0+c3RhdHVzICE9IGNvbm5lY3Rvcl9z dGF0dXNfY29ubmVjdGVkKQo+ID4gPiArCQlyZXR1cm4gLUVOT0RFVjsKPiA+ID4gKwo+ID4gPiAr CWNydGMgPSB0b19pbnRlbF9jcnRjKGVuY29kZXItPmJhc2UuY3J0Yyk7Cj4gPiA+ICsJY3J0Y19z dGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+YmFzZS5zdGF0ZSk7Cj4gCj4gSSBhbSBz ZWVpbmcgYSBrZXJuZWwgTlVMbCBwb2ludGVyIGRlcmVmZXJlbmNpbmcgaGVyZSBpbiBDSSBwb3Nz aWJseSBiZWNhdXNlCj4gdGhlIGNydGMgaXMgTlVMTCBhbmQgYXMgcGVyIFZpbGxlIGFuZCBEYW52 ZXQgSSBzaG91bGQgYmUgZ3JhYmJpbmcgYm90aAo+IGNvbm5lY3Rpb24gbXV0ZXgKPiBhbmQgY3J0 YyBtdXRleCBhbmQgdXNlIHRoZSBhY3F1aXJlIGN0eCBhbmQgYmFja29mZiBzdHVmZiBzbyBJIGFt IHRyeWluZyB0bwo+IHVuZGVyc3RhbmQgdGhhdCBwYXJ0Cj4gYW5kIHNlZWluZyBob3cgSSBjYW4g dXNlIHRoYXQuCj4gCj4gTGV0IG1lIGtub3cgaWYgeW91IGhhdmUgYW55IGlucHV0cy9leGFtcGxl cyBvbiB0aGF0IHRvby4uCgpNaG0sIHNvIGhlcmUncyB3aHkgdGhleSBhcmUgYXNraW5nIGZvciBl YWNoIGxvY2s6Cgpjb25uZWN0aW9uX211dGV4OiBQcm90ZWN0cyBhbnkgY29ubmVjdG9yLT5zdGF0 ZSwgYW5kIGNvbm5lY3Rvci0+c3RhdHVzLgoKKEFzIGFuIGV4dHJhIG5vdGU6IGlnbm9yZSBjb25u ZWN0b3ItPm11dGV4IGZvciBtb2Rlc2V0dGluZyBwdXJwb3Nlcywgb25seQogZGV2LT5tb2RlX2Nv bmZpZy5jb25uZWN0aW9uX211dGV4IGlzIGltcG9ydGFudC4pCgpjcnRjLT5tdXRleDogQW55dGhp bmcgaW4gY3J0Yy0+c3RhdGUgZm9yIHRoZSBnaXZlbiBjcnRjCgpJbiBvcmRlciB0byBhdm9pZCB0 byBhdm9pZCBhIE5VTEwgZGVyZWZlcmVuY2UgZHVlIHRvIGNvbm5lY3Rvci0+Y3J0Yy0+c3RhdGUK Y2hhbmdpbmcsIHlvdSdkIHN0YXJ0IGdyYWJiaW5nIGxvY2tzIHdpdGggc29tZXRoaW5nIGxpa2Ug dGhpczoKCgogIC8qIHByZXRlbmQgd2UgaGF2ZSAnY29ubmVjdG9yJyBhbHJlYWR5IHNldCB0byB0 aGUgZHJtX2Nvbm5lY3RvciAqLwogIC8qIGFsc28gcHJldGVuZCB3ZSBoYXZlICdkZXYnIHNldCB0 byB0aGUgc3RydWN0IGRybV9kZXZpY2UqICovCiAgc3RydWN0IGRybV9jcnRjICpjcnRjOwogIHN0 cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCBjdHg7CiAgYm9vbCB0cnlfYWdhaW4gPSBmYWxz ZTsKICBpbnQgcmV0ID0gMDsKCiAgZHJtX21vZGVzZXRfYWNxdWlyZV9pbml0KCZjdHgsIDApOwoK ICBkbyB7CiAgICAvKiBXZSBkb24ndCBjaGVjayB0aGUgcmV0dXJuIGNvZGUgaGVyZSBiZWNhdXNl IHNpbmNlIHRoaXMgaXMKICAgICAqIG91ciBmaXJzdCBsb2NrLCBzbyB0aGVyZSBpc24ndCBhbnkg Y2hhbmNlIG9mIHVzIGRlYWRsb2NraW5nCiAgICAgKiB5ZXQuCiAgICAgKi8KICAgIGRybV9tb2Rl c2V0X2xvY2soJmRldi0+bW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRleCwgJmN0eCk7CgogICAg LyogQ29vbCEgTm93IHRoYXQgd2UncmUgaG9sZGluZyBjb25uZWN0aW9uX211dGV4LCB3ZSBjYW4g c3RhcnQKICAgICAqIHJlYWRpbmcgZnJvbSB0aGUgY29ubmVjdG9yIHN0cnVjdCBhbmQgZnJpZW5k cwogICAgICovCiAgICBjcnRjID0gY29ubmVjdG9yLT5zdGF0ZS0+Y3J0YzsKICAgIGlmIChjb25u ZWN0b3ItPnN0YXR1cyAhPSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCB8fCAhY3J0Yykgewog ICAgICByZXQgPSAtRU5PREVWOwogICAgICBicmVhazsKICAgIH0KCiAgICAvKiBOb3cgd2UgbmVl ZCB0byBjaGVjayB0aGUgcmV0dXJuIGNvZGUgZnJvbQogICAgICogZHJtX21vZGVzZXRfbG9jaygp LCBiZWNhdXNlLi4uLi4uLgogICAgICovCiAgICByZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZjcnRj LT5tdXRleCwgJmN0eCk7CiAgICBpZiAocmV0ID09IC1FREVBRExLKSB7CiAgICAgIC8qIFdlIGNv dWxkIGRlYWRsb2NrISBJZiB3ZSdyZSBoZXJlLCB0aGVuIHRoaXMgaXMKICAgICAgICogcHJvYmFi bHkgd2hhdCBoYXBwZW5lZDoKICAgICAgICoKICAgICAgICogPENQVTE+ICh1cykgICAgICAgICAg ICAgICAgIDxDUFUyPgogICAgICAgKiBtb2Rlc2V0X2xvY2soJmNvbm5fbXV0ZXgpOyAgbW9kZXNl dF9sb2NrKCZjcnRjLT5tdXRleCk7CiAgICAgICAqIG1vZGVzZXRfbG9jaygmY3J0Yy0+bXV0ZXgp OyBtb2Rlc2V0X2xvY2soJmNvbm5fbXV0ZXgpOwogICAgICAgKgogICAgICAgKiBDUFUxIGlzIHdh aXRpbmcgZm9yIGNydGMtPm11dGV4IHdoaWNoIGlzIGhlbGQgYnkgQ1BVMiwgYnV0CiAgICAgICAq IENQVTIgaXMgd2FpdGluZyBmb3IgY29ubl9tdXRleCwgd2hpY2ggaXMgaGVsZCBieSBDUFUxCiAg ICAgICAqCiAgICAgICAqIE5vcm1hbGx5IHRoZSBrZXJuZWwgZG9lc24ndCBydW4gaW50byB0aGlz IGlzc3VlCiAgICAgICAqIGJlY2F1c2UgYSBsb3Qgb2YgY2FyZSBoYXMgYmVlbiBwdXQgaW50byBv cmRlcmluZwogICAgICAgKiBtdXRleF9sb2NrKCkgY2FsbHMgY29ycmVjdGx5LiBCdXQsIHdpdGgg bW9kZXNldHRpbmcKICAgICAgICogd2UgZG9uJ3QgaGF2ZSB0aGUgYmVuZWZpdCBvZiBrbm93aW5n IHdoYXQgb3JkZXIgdGhlc2UKICAgICAgICogbG9ja3Mgd2lsbCBiZSBhY3F1aXJlZCBpbi4gU2lu Y2UgZHJtX21vZGVzZXRfbG9jaygpCiAgICAgICAqIGhhcyBpbmZvcm1lZCB1cyBvZiB0aGlzIHNj ZW5hcmlvIGhvd2V2ZXIsIHdlIGNhbgogICAgICAgKiBhdm9pZCBoYW5naW5nIHRoZSBlbnRpcmUg a2VybmVsIGJ5IHNpbXBseSBkcm9wcGluZwogICAgICAgKiBvdXIgbG9ja3MsIGluIHRoaXMgY2Fz ZSB0aGF0IHdvdWxkIGp1c3QgaW5jbHVkZQogICAgICAgKiBjb25uZWN0aW9uX211dGV4LiBXZSBj YWxsIHRoaXMgImJhY2tpbmcgb2ZmIgogICAgICAgKi8KICAgICAgZHJtX21vZGVzZXRfYmFja29m ZigmY3R4KTsKCiAgICAgIC8qIE5vdywgdGhpbmdzIHdpbGwgbG9vayBsaWtlIHRoaXM6CiAgICAg ICAqCiAgICAgICAqIDxDUFUxPiAodXMpICAgICAgICAgICAgICAgICAgICA8Q1BVMj4KICAgICAg ICogbW9kZXNldF9sb2NrKCZjb25uX211dGV4KTsgICAgIG1vZGVzZXRfbG9jaygmY3J0Yy0+bXV0 ZXgpOwogICAgICAgKiBtb2Rlc2V0X2xvY2soJmNydGMtPm11dGV4KTsgICAgbW9kZXNldF9sb2Nr KCZjb25uX211dGV4KTsKICAgICAgICogKG9oIG5vLCBhIGRlYWRsb2NrISkgICAgICAgICAgIC4u LgogICAgICAgKiBtb2Rlc2V0X2JhY2tvZmYoKTsgICAgICAgICAgICAgKE9oIGhleSwgSSBsb2Nr ZWQgJmNvbm5fbXV0ZXgpCiAgICAgICAqIG1vZGVzZXRfbG9jaygmY29ubl9tdXRleCk7ICAgICAo bm93IEknbSBkb2luZyBzdHVmZiwgd2VlISkKICAgICAgICogLi4uICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG1vZGVzZXRfZHJvcF9sb2NrcygpOwogICAgICAgKiAoT2ggaGV5LCBJIGxvY2tl ZCAmY29ubl9tdXRleCkgLi4uCiAgICAgICAqIChkbyBzdHVmZikgICAgICAgICAgICAgICAgICAg ICAuLi4KICAgICAgICogKGV0Yy4gZXRjLikKICAgICAgICovCiAgICAgIGdvX2FnYWluID0gdHJ1 ZTsKICAgICAgY29udGludWU7CiAgICB9CgogICAgLyogTm93IGlmIHdlJ3JlIGhlcmUsIHdlIG1h bmFnZWQgdG8gZ3JhYiBib3RoIGxvY2tzIGNvcnJlY3RseSwKICAgICAqIGFuZCB3ZSBrbm93IG5l aXRoZXIgY29ubmVjdG9yLT5zdGF0ZSBvciBjcnRjLT5zdGF0ZSB3aWxsCiAgICAgKiBjaGFuZ2Uu CiAgICAgKi8KICAgIGludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGludGVsX2F0dGFjaGVkX2Vu Y29kZXIoY29ubmVjdG9yKSk7CiAgICBpZiAoaW50ZWxfZHAtPmRzY19kcGNkKQogICAgICAvKiBl dGMuIGV0Yy4gKi8KCiAgICAvKiAuLi4gKi8KCiAgfSB3aGlsZSAoZ29fYWdhaW4pOwoKICAvKiBO b3csIHdlIGNhbiBmaW5hbGx5IGRyb3AgYW55IGxvY2tzIHdlJ3JlIGhvbGRpbmcgKi8KICBkcm1f bW9kZXNldF9kcm9wX2xvY2tzKCZjdHgpOwogIC8qIEFuZCByZWxlYXNlIG91ciBhY3F1aXNpdGlv biBjb250ZXh0ICovCiAgZHJtX21vZGVzZXRfYWNxdWlyZV9maW5pKCZjdHgpOwoKICByZXR1cm4g cmV0OwoKCkRvZXMgdGhhdCBoZWxwIGV4cGxhaW4gdGhpbmdzPwoKPiAKPiA+ID4gKwlkcm1fbW9k ZXNldF9sb2NrKCZjcnRjLT5iYXNlLm11dGV4LCBOVUxMKTsKPiA+ID4gKwlzZXFfcHJpbnRmKG0s ICJEU0NfRW5hYmxlZDogJXNcbiIsCj4gPiA+ICsJCSAgIHllc25vKGNydGNfc3RhdGUtPmRzY19w YXJhbXMuY29tcHJlc3Npb25fZW5hYmxlKSk7Cj4gPiA+ICsJaWYgKGludGVsX2RwLT5kc2NfZHBj ZCkKPiA+ID4gKwkJc2VxX3ByaW50ZihtLCAiRFNDX1NpbmtfU3VwcG9ydDogJXNcbiIsCj4gPiA+ ICsJCQkgICB5ZXNubyhkcm1fZHBfc2lua19zdXBwb3J0c19kc2MoaW50ZWxfZHAtCj4gPiA+ID4g ZHNjX2RwY2QpKSk7Cj4gPiA+ICsJaWYgKCFpbnRlbF9kcF9pc19lZHAoaW50ZWxfZHApKQo+ID4g PiArCQlzZXFfcHJpbnRmKG0sICJGRUNfU2lua19TdXBwb3J0OiAlc1xuIiwKPiA+ID4gKwkJCSAg IHllc25vKGRybV9kcF9zaW5rX3N1cHBvcnRzX2ZlYyhpbnRlbF9kcC0KPiA+ID4gPiBmZWNfY2Fw YWJsZSkpKTsKPiA+ID4gKwlkcm1fbW9kZXNldF91bmxvY2soJmNydGMtPmJhc2UubXV0ZXgpOwo+ ID4gPiArCj4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBz c2l6ZV90IGk5MTVfZHNjX2ZlY19zdXBwb3J0X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLAo+ID4g PiArCQkJCQkgIGNvbnN0IGNoYXIgX191c2VyICp1YnVmLAo+ID4gPiArCQkJCQkgIHNpemVfdCBs ZW4sIGxvZmZfdCAqb2ZmcCkKPiA+ID4gK3sKPiA+ID4gKwlib29sIGRzY19lbmFibGUgPSBmYWxz ZTsKPiA+ID4gKwlpbnQgcmV0Owo+ID4gPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0 b3IgPQo+ID4gPiArCQkoKHN0cnVjdCBzZXFfZmlsZSAqKWZpbGUtPnByaXZhdGVfZGF0YSktPnBy aXZhdGU7Cj4gPiA+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSBpbnRlbF9hdHRh Y2hlZF9lbmNvZGVyKGNvbm5lY3Rvcik7Cj4gPiA+ICsJc3RydWN0IGludGVsX2RwICppbnRlbF9k cCA9IGVuY190b19pbnRlbF9kcCgmZW5jb2Rlci0+YmFzZSk7Cj4gPiA+ICsKPiA+ID4gKwlpZiAo bGVuID09IDApCj4gPiA+ICsJCXJldHVybiAwOwo+ID4gPiArCj4gPiA+ICsJRFJNX0RFQlVHX0RS SVZFUigiQ29waWVkICVkIGJ5dGVzIGZyb20gdXNlciB0byBmb3JjZSBEU0NcbiIsCj4gPiA+ICsJ CQkgKHVuc2lnbmVkIGludClsZW4pOwo+ID4gWW91IGNhbiBqdXN0IHVzZSAlenUgaW5zdGVhZCBv ZiAlZCBoZXJlLCBzZWU6Cj4gPiAKPiA+IGh0dHBzOi8vMDEub3JnL2xpbnV4Z3JhcGhpY3MvZ2Z4 LWRvY3MvZHJtL2NvcmUtYXBpL3ByaW50ay1mb3JtYXRzLmh0bWwKPiAKPiBDb29sIEkgd2lsbCBt YWtlIHRoaXMgY2hhbmdlLiBUaGFua3MgZm9yIHRoZSByZXZpZXcuCj4gCj4gUmVnYXJkcwo+IE1h bmFzaQo+IAo+ID4gT3RoZXIgdGhlbiB0aGF0LCBsb29rcyBnb29kIHRvIG1lISBXaXRoIHRoYXQg Y2hhbmdlOgo+ID4gCj4gPiBSZXZpZXdlZC1ieTogTHl1ZGUgUGF1bCA8bHl1ZGVAcmVkaGF0LmNv bT4KPiA+IAo+ID4gPiArCj4gPiA+ICsJcmV0ID0ga3N0cnRvYm9vbF9mcm9tX3VzZXIodWJ1Ziwg bGVuLCAmZHNjX2VuYWJsZSk7Cj4gPiA+ICsJaWYgKHJldCA8IDApCj4gPiA+ICsJCXJldHVybiBy ZXQ7Cj4gPiA+ICsKPiA+ID4gKwlEUk1fREVCVUdfRFJJVkVSKCJHb3QgJXMgZm9yIERTQyBFbmFi bGVcbiIsCj4gPiA+ICsJCQkgKGRzY19lbmFibGUpID8gInRydWUiIDogImZhbHNlIik7Cj4gPiA+ ICsJaW50ZWxfZHAtPmZvcmNlX2RzY19lbiA9IGRzY19lbmFibGU7Cj4gPiA+ICsKPiA+ID4gKwkq b2ZmcCArPSBsZW47Cj4gPiA+ICsJcmV0dXJuIGxlbjsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiAr c3RhdGljIGludCBpOTE1X2RzY19mZWNfc3VwcG9ydF9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUs Cj4gPiA+ICsJCQkJICAgICBzdHJ1Y3QgZmlsZSAqZmlsZSkKPiA+ID4gK3sKPiA+ID4gKwlyZXR1 cm4gc2luZ2xlX29wZW4oZmlsZSwgaTkxNV9kc2NfZmVjX3N1cHBvcnRfc2hvdywKPiA+ID4gKwkJ CSAgIGlub2RlLT5pX3ByaXZhdGUpOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgY29u c3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBpOTE1X2RzY19mZWNfc3VwcG9ydF9mb3BzID0gewo+ ID4gPiArCS5vd25lciA9IFRISVNfTU9EVUxFLAo+ID4gPiArCS5vcGVuID0gaTkxNV9kc2NfZmVj X3N1cHBvcnRfb3BlbiwKPiA+ID4gKwkucmVhZCA9IHNlcV9yZWFkLAo+ID4gPiArCS5sbHNlZWsg PSBzZXFfbHNlZWssCj4gPiA+ICsJLnJlbGVhc2UgPSBzaW5nbGVfcmVsZWFzZSwKPiA+ID4gKwku d3JpdGUgPSBpOTE1X2RzY19mZWNfc3VwcG9ydF93cml0ZQo+ID4gPiArfTsKPiA+ID4gKwo+ID4g PiAgLyoqCj4gPiA+ICAgKiBpOTE1X2RlYnVnZnNfY29ubmVjdG9yX2FkZCAtIGFkZCBpOTE1IHNw ZWNpZmljIGNvbm5lY3RvciBkZWJ1Z2ZzCj4gPiA+IGZpbGVzCj4gPiA+ICAgKiBAY29ubmVjdG9y OiBwb2ludGVyIHRvIGEgcmVnaXN0ZXJlZCBkcm1fY29ubmVjdG9yCj4gPiA+IEBAIC01MDk4LDYg KzUxNzEsNyBAQCBERUZJTkVfU0hPV19BVFRSSUJVVEUoaTkxNV9oZGNwX3NpbmtfY2FwYWJpbGl0 eSk7Cj4gPiA+ICBpbnQgaTkxNV9kZWJ1Z2ZzX2Nvbm5lY3Rvcl9hZGQoc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvcikKPiA+ID4gIHsKPiA+ID4gIAlzdHJ1Y3QgZGVudHJ5ICpyb290ID0g Y29ubmVjdG9yLT5kZWJ1Z2ZzX2VudHJ5Owo+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5kZXYpOwo+ID4gPiAgCj4gPiA+ICAJLyog VGhlIGNvbm5lY3RvciBtdXN0IGhhdmUgYmVlbiByZWdpc3RlcmVkIGJlZm9yZWhhbmRzLiAqLwo+ ID4gPiAgCWlmICghcm9vdCkKPiA+ID4gQEAgLTUxMjIsNSArNTE5NiwxMSBAQCBpbnQgaTkxNV9k ZWJ1Z2ZzX2Nvbm5lY3Rvcl9hZGQoc3RydWN0Cj4gPiA+IGRybV9jb25uZWN0b3IKPiA+ID4gKmNv bm5lY3RvcikKPiA+ID4gIAkJCQkgICAgY29ubmVjdG9yLAo+ID4gPiAmaTkxNV9oZGNwX3Npbmtf Y2FwYWJpbGl0eV9mb3BzKTsKPiA+ID4gIAl9Cj4gPiA+ICAKPiA+ID4gKwlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSAxMCAmJgo+ID4gPiArCSAgICAoY29ubmVjdG9yLT5jb25uZWN0b3JfdHlw ZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfRGlzcGxheVBvcnQgfHwKPiA+ID4gKwkgICAgIGNvbm5l Y3Rvci0+Y29ubmVjdG9yX3R5cGUgPT0gRFJNX01PREVfQ09OTkVDVE9SX2VEUCkpCj4gPiA+ICsJ CWRlYnVnZnNfY3JlYXRlX2ZpbGUoImk5MTVfZHNjX2ZlY19zdXBwb3J0IiwgU19JUlVHTywgcm9v dCwKPiA+ID4gKwkJCQkgICAgY29ubmVjdG9yLCAmaTkxNV9kc2NfZmVjX3N1cHBvcnRfZm9wcyk7 Cj4gPiA+ICsKPiA+ID4gIAlyZXR1cm4gMDsKPiA+ID4gIH0KPiA+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcC5jCj4gPiA+IGluZGV4IGE2OTA3YTE3NjFhYi4uMmUzMDk3Y2FlMjc3IDEwMDY0 NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiA+ID4gQEAgLTIwNTEsNyArMjA1MSw4 IEBAIGludGVsX2RwX2NvbXB1dGVfbGlua19jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIKPiA+ ID4gKmVuY29kZXIsCj4gPiA+ICAJCQkJCQkJJmxpbWl0cyk7Cj4gPiA+ICAKPiA+ID4gIAkvKiBl bmFibGUgY29tcHJlc3Npb24gaWYgdGhlIG1vZGUgZG9lc24ndCBmaXQgYXZhaWxhYmxlIEJXICov Cj4gPiA+IC0JaWYgKCFyZXQpIHsKPiA+ID4gKwlEUk1fREVCVUdfS01TKCJGb3JjZSBEU0MgZW4g PSAlZFxuIiwgaW50ZWxfZHAtPmZvcmNlX2RzY19lbik7Cj4gPiA+ICsJaWYgKCFyZXQgfHwgaW50 ZWxfZHAtPmZvcmNlX2RzY19lbikgewo+ID4gPiAgCQlpZiAoIWludGVsX2RwX2RzY19jb21wdXRl X2NvbmZpZyhpbnRlbF9kcCwgcGlwZV9jb25maWcsCj4gPiA+ICAJCQkJCQkgY29ubl9zdGF0ZSwg JmxpbWl0cykpCj4gPiA+ICAJCQlyZXR1cm4gZmFsc2U7Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCj4gPiA+IGluZGV4IGY5NGEwNGI0YWQ4Ny4uMGNlZGNlNDM4NDMzIDEwMDY0 NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gPiBAQCAtMTIwOSw2ICsxMjA5 LDkgQEAgc3RydWN0IGludGVsX2RwIHsKPiA+ID4gIAo+ID4gPiAgCS8qIERpc3BsYXlwb3J0IGNv bXBsaWFuY2UgdGVzdGluZyAqLwo+ID4gPiAgCXN0cnVjdCBpbnRlbF9kcF9jb21wbGlhbmNlIGNv bXBsaWFuY2U7Cj4gPiA+ICsKPiA+ID4gKwkvKiBEaXNwbGF5IHN0cmVhbSBjb21wcmVzc2lvbiB0 ZXN0aW5nICovCj4gPiA+ICsJYm9vbCBmb3JjZV9kc2NfZW47Cj4gPiA+ICB9Owo+ID4gPiAgCj4g PiA+ICBlbnVtIGxzcGNvbl92ZW5kb3Igewo+ID4gLS0gCj4gPiBDaGVlcnMsCj4gPiAJTHl1ZGUg UGF1bAo+ID4gCi0tIApDaGVlcnMsCglMeXVkZSBQYXVsCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK