From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v14 13/33] drm/i915: Implement the HDCP2.2 support for DP Date: Thu, 15 Aug 2019 11:43:54 +0300 Message-ID: <87o90qg6np.fsf@intel.com> References: <1550338640-17470-1-git-send-email-ramalingam.c@intel.com> <1550338640-17470-14-git-send-email-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1550338640-17470-14-git-send-email-ramalingam.c@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ramalingam C , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, daniel.vetter@ffwll.ch, tomas.winkler@intel.com, uma.shankar@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gU2F0LCAxNiBGZWIgMjAxOSwgUmFtYWxpbmdhbSBDIHZpYSBkcmktZGV2ZWwgPGRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmc+IHdyb3RlOgo+IEltcGxlbWVudHMgdGhlIERQIGFkYXB0 YXRpb24gc3BlY2lmaWMgSERDUDIuMiBmdW5jdGlvbnMuCj4KPiBUaGVzZSBmdW5jdGlvbnMgcGVy Zm9ybSB0aGUgRFBDRCByZWFkIGFuZCB3cml0ZSBmb3IgY29tbXVuaWNhdGluZyB0aGUKPiBIRENQ Mi4yIGF1dGggbWVzc2FnZSBiYWNrIGFuZCBmb3J0aC4KPgo+IHYyOgo+ICAgd2FpdCBmb3IgY3Bf aXJxIGlzIG1lcmdlZCB3aXRoIHRoaXMgcGF0Y2guIFJlYmFzZWQuCj4gdjM6Cj4gICB3YWl0X3F1 ZXVlIGlzIHVzZWQgZm9yIHdhaXQgZm9yIGNwX2lycSBbQ2hyaXMgV2lsc29uXQo+IHY0Ogo+ICAg U3R5bGUgZml4ZWQuCj4gICAlcy9QQVJJTkcvUEFJUklORwo+ICAgRmV3IHN0eWxlIGZpeGVzIFtV bWFdCj4gdjU6Cj4gICBMb29rdXAgdGFibGUgZm9yIERQIEhEQ1AyLjIgbXNnIGRldGFpbHMgW0Rh bmllbF0uCj4gICBFeHRyYSBsaW5lcyBhcmUgcmVtb3ZlZC4KPiB2NjogUmViYXNlZC4KPiB2NzoK PiAgIEZpeGVkIHNvbWUgcmVncmVzc2lvbiBpbnRyb2R1Y2VkIGF0IHY1LiBbQW5raXRdCj4gICBN YWNybyBIRENQXzJfMl9SWF9DQVBTX1ZFUlNJT05fVkFMIGlzIHJldXNlZCBbVW1hXQo+ICAgQ29u dmVydGVkIGEgZnVuY3Rpb24gdG8gaW5saW5lIFtVbWFdCj4gICAlcy91aW50eHhfdC91eHgKPiB2 ODoKPiAgIEVycm9yIGR1ZSB0byB0aGUgc2lua3MgYXJlIHJlcG9ydGVkIGFzIERFQlVHIGxvZ3Mu Cj4gICBBZGp1c3QgdG8gdGhlIG5ldyBtZWkgaW50ZXJmYWNlLgo+IHY5Ogo+ICAgQVJSQVlfU0la RSBmb3Igbm8gb2YgYXJyYXkgbWVtYmVycyBbSm9uICYgRGFuaWVsXQo+ICAgcmV0dXJuIG9mIHRo ZSB3YWl0X2Zvcl9jcF9pcnEgaXMgbWFkZSBhcyB2b2lkIFtEYW5pZWxdCj4gICBXYWl0IGZvciBI RENQMi4yIG1zZyBpcyBkb25lIGJhc2VkIG9uIHBvbGxpbmcgdGhlIHJlZyBiaXQgdGhhbgo+ICAg ICBDUF9JUlEgYmFzZWQuIFtEYW5pZWxdCj4gICBoZGNwIGFkYXB0YXRpb24gaXMgYWRkZWQgYXMg YSBjb25zdCBpbiB0aGUgaGRjcF9zaGltIFtEYW5pZWxdCj4gdjEwOgo+ICAgY29uZmlnX3N0cmVh bV90eXBlIGlzIHJlZGVmaW5lZCBbRGFuaWVsXQo+ICAgRFAgRXJyYXRhIHNwZWNpZmljIGRlZmlu ZXMgYXJlIG1vdmVkIGludG8gaW50ZWxfZHAuYy4KPgo+IFNpZ25lZC1vZmYtYnk6IFJhbWFsaW5n YW0gQyA8cmFtYWxpbmdhbS5jQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBBbmtpdCBLIE5h dXRpeWFsIDxhbmtpdC5rLm5hdXRpeWFsQGludGVsLmNvbT4KPiBSZXZpZXdlZC1ieTogVW1hIFNo YW5rYXIgPHVtYS5zaGFua2FyQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHAuYyB8IDMzMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCj4gIDEgZmlsZSBjaGFuZ2VkLCAzMzMgaW5zZXJ0aW9ucygrKQo+Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jCj4gaW5kZXggOWY3M2E0MjM5NTc0Li5lOWZlMjVmMjEyMDAgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RwLmMKPiBAQCAtNTg0Nyw2ICs1ODQ3LDMzMyBAQCBpbnQgaW50ZWxfZHBf aGRjcF9jYXBhYmxlKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gK3N0cnVjdCBoZGNwMl9kcF9lcnJhdGFfc3RyZWFtX3R5 cGUgewo+ICsJdTgJbXNnX2lkOwo+ICsJdTgJc3RyZWFtX3R5cGU7Cj4gK30gX19wYWNrZWQ7Cj4g Kwo+ICtzdGF0aWMgc3RydWN0IGhkY3AyX2RwX21zZ19kYXRhIHsKPiArCXU4IG1zZ19pZDsKPiAr CXUzMiBvZmZzZXQ7Cj4gKwlib29sIG1zZ19kZXRlY3RhYmxlOwo+ICsJdTMyIHRpbWVvdXQ7Cj4g Kwl1MzIgdGltZW91dDI7IC8qIEFkZGVkIGZvciBub25fcGFpcmVkIHNpdHVhdGlvbiAqLwo+ICsJ fSBoZGNwMl9tc2dfZGF0YVtdID0gewo+ICsJCXtIRENQXzJfMl9BS0VfSU5JVCwgRFBfSERDUF8y XzJfQUtFX0lOSVRfT0ZGU0VULCBmYWxzZSwgMCwgMH0sCj4gKwkJe0hEQ1BfMl8yX0FLRV9TRU5E X0NFUlQsIERQX0hEQ1BfMl8yX0FLRV9TRU5EX0NFUlRfT0ZGU0VULAo+ICsJCQkJZmFsc2UsIEhE Q1BfMl8yX0NFUlRfVElNRU9VVF9NUywgMH0sCj4gKwkJe0hEQ1BfMl8yX0FLRV9OT19TVE9SRURf S00sIERQX0hEQ1BfMl8yX0FLRV9OT19TVE9SRURfS01fT0ZGU0VULAo+ICsJCQkJZmFsc2UsIDAs IDB9LAo+ICsJCXtIRENQXzJfMl9BS0VfU1RPUkVEX0tNLCBEUF9IRENQXzJfMl9BS0VfU1RPUkVE X0tNX09GRlNFVCwKPiArCQkJCWZhbHNlLCAwLCAwfSwKPiArCQl7SERDUF8yXzJfQUtFX1NFTkRf SFBSSU1FLCBEUF9IRENQXzJfMl9BS0VfU0VORF9IUFJJTUVfT0ZGU0VULAo+ICsJCQkJdHJ1ZSwg SERDUF8yXzJfSFBSSU1FX1BBSVJFRF9USU1FT1VUX01TLAo+ICsJCQkJSERDUF8yXzJfSFBSSU1F X05PX1BBSVJFRF9USU1FT1VUX01TfSwKPiArCQl7SERDUF8yXzJfQUtFX1NFTkRfUEFJUklOR19J TkZPLAo+ICsJCQkJRFBfSERDUF8yXzJfQUtFX1NFTkRfUEFJUklOR19JTkZPX09GRlNFVCwgdHJ1 ZSwKPiArCQkJCUhEQ1BfMl8yX1BBSVJJTkdfVElNRU9VVF9NUywgMH0sCj4gKwkJe0hEQ1BfMl8y X0xDX0lOSVQsIERQX0hEQ1BfMl8yX0xDX0lOSVRfT0ZGU0VULCBmYWxzZSwgMCwgMH0sCj4gKwkJ e0hEQ1BfMl8yX0xDX1NFTkRfTFBSSU1FLCBEUF9IRENQXzJfMl9MQ19TRU5EX0xQUklNRV9PRkZT RVQsCj4gKwkJCQlmYWxzZSwgSERDUF8yXzJfRFBfTFBSSU1FX1RJTUVPVVRfTVMsIDB9LAo+ICsJ CXtIRENQXzJfMl9TS0VfU0VORF9FS1MsIERQX0hEQ1BfMl8yX1NLRV9TRU5EX0VLU19PRkZTRVQs IGZhbHNlLAo+ICsJCQkJMCwgMH0sCj4gKwkJe0hEQ1BfMl8yX1JFUF9TRU5EX1JFQ1ZJRF9MSVNU LAo+ICsJCQkJRFBfSERDUF8yXzJfUkVQX1NFTkRfUkVDVklEX0xJU1RfT0ZGU0VULCB0cnVlLAo+ ICsJCQkJSERDUF8yXzJfUkVDVklEX0xJU1RfVElNRU9VVF9NUywgMH0sCj4gKwkJe0hEQ1BfMl8y X1JFUF9TRU5EX0FDSywgRFBfSERDUF8yXzJfUkVQX1NFTkRfQUNLX09GRlNFVCwgZmFsc2UsCj4g KwkJCQkwLCAwfSwKPiArCQl7SERDUF8yXzJfUkVQX1NUUkVBTV9NQU5BR0UsCj4gKwkJCQlEUF9I RENQXzJfMl9SRVBfU1RSRUFNX01BTkFHRV9PRkZTRVQsIGZhbHNlLAo+ICsJCQkJMCwgMH0sCj4g KwkJe0hEQ1BfMl8yX1JFUF9TVFJFQU1fUkVBRFksIERQX0hEQ1BfMl8yX1JFUF9TVFJFQU1fUkVB RFlfT0ZGU0VULAo+ICsJCQkJZmFsc2UsIEhEQ1BfMl8yX1NUUkVBTV9SRUFEWV9USU1FT1VUX01T LCAwfSwKPiArLyogbG9jYWwgZGVmaW5lIHRvIHNob3ZlbCB0aGlzIHRocm91Z2ggdGhlIHdyaXRl XzJfMiBpbnRlcmZhY2UgKi8KPiArI2RlZmluZSBIRENQXzJfMl9FUlJBVEFfRFBfU1RSRUFNX1RZ UEUJNTAKPiArCQl7SERDUF8yXzJfRVJSQVRBX0RQX1NUUkVBTV9UWVBFLAo+ICsJCQkJRFBfSERD UF8yXzJfUkVHX1NUUkVBTV9UWVBFX09GRlNFVCwgZmFsc2UsCj4gKwkJCQkwLCAwfSwKPiArCQl9 OwoKSGF0ZSB0byBicmluZyB0aGlzIHVwIHNvIGZhciBhZnRlciB0aGlzIGhhcyBiZWVuIG1lcmdl ZCwgYnV0CmhkY3AyX21zZ19kYXRhW10gbXVzdCBiZSBtb3ZlZCBvdXQgb2YgZHJpdmVyIHN0YXRp YyBkYXRhLgoKQlIsCkphbmkuCgoKPiArCj4gK3N0YXRpYyBpbmxpbmUKPiAraW50IGludGVsX2Rw X2hkY3AyX3JlYWRfcnhfc3RhdHVzKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2Rp Z19wb3J0LAo+ICsJCQkJICB1OCAqcnhfc3RhdHVzKQo+ICt7Cj4gKwlzc2l6ZV90IHJldDsKPiAr Cj4gKwlyZXQgPSBkcm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9kaWdfcG9ydC0+ZHAuYXV4LAo+ICsJ CQkgICAgICAgRFBfSERDUF8yXzJfUkVHX1JYU1RBVFVTX09GRlNFVCwgcnhfc3RhdHVzLAo+ICsJ CQkgICAgICAgSERDUF8yXzJfRFBfUlhTVEFUVVNfTEVOKTsKPiArCWlmIChyZXQgIT0gSERDUF8y XzJfRFBfUlhTVEFUVVNfTEVOKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiUmVhZCBic3RhdHVzIGZy b20gRFAvQVVYIGZhaWxlZCAoJXpkKVxuIiwgcmV0KTsKPiArCQlyZXR1cm4gcmV0ID49IDAgPyAt RUlPIDogcmV0Owo+ICsJfQo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMKPiAr aW50IGhkY3AyX2RldGVjdF9tc2dfYXZhaWxhYmlsaXR5KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3Bv cnQgKmludGVsX2RpZ19wb3J0LAo+ICsJCQkJICB1OCBtc2dfaWQsIGJvb2wgKm1zZ19yZWFkeSkK PiArewo+ICsJdTggcnhfc3RhdHVzOwo+ICsJaW50IHJldDsKPiArCj4gKwkqbXNnX3JlYWR5ID0g ZmFsc2U7Cj4gKwlyZXQgPSBpbnRlbF9kcF9oZGNwMl9yZWFkX3J4X3N0YXR1cyhpbnRlbF9kaWdf cG9ydCwgJnJ4X3N0YXR1cyk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gcmV0Owo+ICsK PiArCXN3aXRjaCAobXNnX2lkKSB7Cj4gKwljYXNlIEhEQ1BfMl8yX0FLRV9TRU5EX0hQUklNRToK PiArCQlpZiAoSERDUF8yXzJfRFBfUlhTVEFUVVNfSF9QUklNRShyeF9zdGF0dXMpKQo+ICsJCQkq bXNnX3JlYWR5ID0gdHJ1ZTsKPiArCQlicmVhazsKPiArCWNhc2UgSERDUF8yXzJfQUtFX1NFTkRf UEFJUklOR19JTkZPOgo+ICsJCWlmIChIRENQXzJfMl9EUF9SWFNUQVRVU19QQUlSSU5HKHJ4X3N0 YXR1cykpCj4gKwkJCSptc2dfcmVhZHkgPSB0cnVlOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBIRENQ XzJfMl9SRVBfU0VORF9SRUNWSURfTElTVDoKPiArCQlpZiAoSERDUF8yXzJfRFBfUlhTVEFUVVNf UkVBRFkocnhfc3RhdHVzKSkKPiArCQkJKm1zZ19yZWFkeSA9IHRydWU7Cj4gKwkJYnJlYWs7Cj4g KwlkZWZhdWx0Ogo+ICsJCURSTV9FUlJPUigiVW5pZGVudGlmaWVkIG1zZ19pZDogJWRcbiIsIG1z Z19pZCk7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30K PiArCj4gK3N0YXRpYyBzc2l6ZV90Cj4gK2ludGVsX2RwX2hkY3AyX3dhaXRfZm9yX21zZyhzdHJ1 Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPiArCQkJICAgIHN0cnVjdCBo ZGNwMl9kcF9tc2dfZGF0YSAqaGRjcDJfbXNnX2RhdGEpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9k cCAqZHAgPSAmaW50ZWxfZGlnX3BvcnQtPmRwOwo+ICsJc3RydWN0IGludGVsX2hkY3AgKmhkY3Ag PSAmZHAtPmF0dGFjaGVkX2Nvbm5lY3Rvci0+aGRjcDsKPiArCXU4IG1zZ19pZCA9IGhkY3AyX21z Z19kYXRhLT5tc2dfaWQ7Cj4gKwlpbnQgcmV0LCB0aW1lb3V0Owo+ICsJYm9vbCBtc2dfcmVhZHkg PSBmYWxzZTsKPiArCj4gKwlpZiAobXNnX2lkID09IEhEQ1BfMl8yX0FLRV9TRU5EX0hQUklNRSAm JiAhaGRjcC0+aXNfcGFpcmVkKQo+ICsJCXRpbWVvdXQgPSBoZGNwMl9tc2dfZGF0YS0+dGltZW91 dDI7Cj4gKwllbHNlCj4gKwkJdGltZW91dCA9IGhkY3AyX21zZ19kYXRhLT50aW1lb3V0Owo+ICsK PiArCS8qCj4gKwkgKiBUaGVyZSBpcyBubyB3YXkgdG8gZGV0ZWN0IHRoZSBDRVJULCBMUFJJTUUg YW5kIFNUUkVBTV9SRUFEWQo+ICsJICogYXZhaWxhYmlsaXR5LiBTbyBXYWl0IGZvciB0aW1lb3V0 IGFuZCByZWFkIHRoZSBtc2cuCj4gKwkgKi8KPiArCWlmICghaGRjcDJfbXNnX2RhdGEtPm1zZ19k ZXRlY3RhYmxlKSB7Cj4gKwkJbWRlbGF5KHRpbWVvdXQpOwo+ICsJCXJldCA9IDA7Cj4gKwl9IGVs c2Ugewo+ICsJCS8qIFRPRE86IEluIGNhc2UgaWYgeW91IG5lZWQgdG8gd2FpdCBvbiBDUF9JUlEs IGRvIGl0IGhlcmUgKi8KPiArCQlyZXQgPSBfX3dhaXRfZm9yKHJldCA9Cj4gKwkJCQkgaGRjcDJf ZGV0ZWN0X21zZ19hdmFpbGFiaWxpdHkoaW50ZWxfZGlnX3BvcnQsCj4gKwkJCQkJCQkgICAgICAg bXNnX2lkLAo+ICsJCQkJCQkJICAgICAgICZtc2dfcmVhZHkpLAo+ICsJCQkJICFyZXQgJiYgbXNn X3JlYWR5LCB0aW1lb3V0ICogMTAwMCwKPiArCQkJCSAxMDAwLCA1ICogMTAwMCk7Cj4gKwo+ICsJ CWlmICghbXNnX3JlYWR5KQo+ICsJCQlyZXQgPSAtRVRJTUVET1VUOwo+ICsJfQo+ICsKPiArCWlm IChyZXQpCj4gKwkJRFJNX0RFQlVHX0tNUygibXNnX2lkICVkLCByZXQgJWQsIHRpbWVvdXQobVNl Yyk6ICVkXG4iLAo+ICsJCQkgICAgICBoZGNwMl9tc2dfZGF0YS0+bXNnX2lkLCByZXQsIHRpbWVv dXQpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgaGRjcDJf ZHBfbXNnX2RhdGEgKmdldF9oZGNwMl9kcF9tc2dfZGF0YSh1OCBtc2dfaWQpCj4gK3sKPiArCWlu dCBpOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGhkY3AyX21zZ19kYXRhKTsg aSsrKQo+ICsJCWlmIChoZGNwMl9tc2dfZGF0YVtpXS5tc2dfaWQgPT0gbXNnX2lkKQo+ICsJCQly ZXR1cm4gJmhkY3AyX21zZ19kYXRhW2ldOwo+ICsKPiArCXJldHVybiBOVUxMOwo+ICt9Cj4gKwo+ ICtzdGF0aWMKPiAraW50IGludGVsX2RwX2hkY3AyX3dyaXRlX21zZyhzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPiArCQkJICAgICB2b2lkICpidWYsIHNpemVfdCBz aXplKQo+ICt7Cj4gKwl1bnNpZ25lZCBpbnQgb2Zmc2V0Owo+ICsJdTggKmJ5dGUgPSBidWY7Cj4g Kwlzc2l6ZV90IHJldCwgYnl0ZXNfdG9fd3JpdGUsIGxlbjsKPiArCXN0cnVjdCBoZGNwMl9kcF9t c2dfZGF0YSAqaGRjcDJfbXNnX2RhdGE7Cj4gKwo+ICsJaGRjcDJfbXNnX2RhdGEgPSBnZXRfaGRj cDJfZHBfbXNnX2RhdGEoKmJ5dGUpOwo+ICsJaWYgKCFoZGNwMl9tc2dfZGF0YSkKPiArCQlyZXR1 cm4gLUVJTlZBTDsKPiArCj4gKwlvZmZzZXQgPSBoZGNwMl9tc2dfZGF0YS0+b2Zmc2V0Owo+ICsK PiArCS8qIE5vIG1zZ19pZCBpbiBEUCBIRENQMi4yIG1zZ3MgKi8KPiArCWJ5dGVzX3RvX3dyaXRl ID0gc2l6ZSAtIDE7Cj4gKwlieXRlKys7Cj4gKwo+ICsJd2hpbGUgKGJ5dGVzX3RvX3dyaXRlKSB7 Cj4gKwkJbGVuID0gYnl0ZXNfdG9fd3JpdGUgPiBEUF9BVVhfTUFYX1BBWUxPQURfQllURVMgPwo+ ICsJCQkJRFBfQVVYX01BWF9QQVlMT0FEX0JZVEVTIDogYnl0ZXNfdG9fd3JpdGU7Cj4gKwo+ICsJ CXJldCA9IGRybV9kcF9kcGNkX3dyaXRlKCZpbnRlbF9kaWdfcG9ydC0+ZHAuYXV4LAo+ICsJCQkJ CW9mZnNldCwgKHZvaWQgKilieXRlLCBsZW4pOwo+ICsJCWlmIChyZXQgPCAwKQo+ICsJCQlyZXR1 cm4gcmV0Owo+ICsKPiArCQlieXRlc190b193cml0ZSAtPSByZXQ7Cj4gKwkJYnl0ZSArPSByZXQ7 Cj4gKwkJb2Zmc2V0ICs9IHJldDsKPiArCX0KPiArCj4gKwlyZXR1cm4gc2l6ZTsKPiArfQo+ICsK PiArc3RhdGljCj4gK3NzaXplX3QgZ2V0X3JlY2VpdmVyX2lkX2xpc3Rfc2l6ZShzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCkKPiArewo+ICsJdTggcnhfaW5mb1tIRENQ XzJfMl9SWElORk9fTEVOXTsKPiArCXUzMiBkZXZfY250Owo+ICsJc3NpemVfdCByZXQ7Cj4gKwo+ ICsJcmV0ID0gZHJtX2RwX2RwY2RfcmVhZCgmaW50ZWxfZGlnX3BvcnQtPmRwLmF1eCwKPiArCQkJ ICAgICAgIERQX0hEQ1BfMl8yX1JFR19SWElORk9fT0ZGU0VULAo+ICsJCQkgICAgICAgKHZvaWQg KilyeF9pbmZvLCBIRENQXzJfMl9SWElORk9fTEVOKTsKPiArCWlmIChyZXQgIT0gSERDUF8yXzJf UlhJTkZPX0xFTikKPiArCQlyZXR1cm4gcmV0ID49IDAgPyAtRUlPIDogcmV0Owo+ICsKPiArCWRl dl9jbnQgPSAoSERDUF8yXzJfREVWX0NPVU5UX0hJKHJ4X2luZm9bMF0pIDw8IDQgfAo+ICsJCSAg IEhEQ1BfMl8yX0RFVl9DT1VOVF9MTyhyeF9pbmZvWzFdKSk7Cj4gKwo+ICsJaWYgKGRldl9jbnQg PiBIRENQXzJfMl9NQVhfREVWSUNFX0NPVU5UKQo+ICsJCWRldl9jbnQgPSBIRENQXzJfMl9NQVhf REVWSUNFX0NPVU5UOwo+ICsKPiArCXJldCA9IHNpemVvZihzdHJ1Y3QgaGRjcDJfcmVwX3NlbmRf cmVjZWl2ZXJpZF9saXN0KSAtCj4gKwkJSERDUF8yXzJfUkVDRUlWRVJfSURTX01BWF9MRU4gKwo+ ICsJCShkZXZfY250ICogSERDUF8yXzJfUkVDRUlWRVJfSURfTEVOKTsKPiArCj4gKwlyZXR1cm4g cmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMKPiAraW50IGludGVsX2RwX2hkY3AyX3JlYWRfbXNnKHN0 cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ICsJCQkgICAgdTggbXNn X2lkLCB2b2lkICpidWYsIHNpemVfdCBzaXplKQo+ICt7Cj4gKwl1bnNpZ25lZCBpbnQgb2Zmc2V0 Owo+ICsJdTggKmJ5dGUgPSBidWY7Cj4gKwlzc2l6ZV90IHJldCwgYnl0ZXNfdG9fcmVjdiwgbGVu Owo+ICsJc3RydWN0IGhkY3AyX2RwX21zZ19kYXRhICpoZGNwMl9tc2dfZGF0YTsKPiArCj4gKwlo ZGNwMl9tc2dfZGF0YSA9IGdldF9oZGNwMl9kcF9tc2dfZGF0YShtc2dfaWQpOwo+ICsJaWYgKCFo ZGNwMl9tc2dfZGF0YSkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCW9mZnNldCA9IGhkY3AyX21z Z19kYXRhLT5vZmZzZXQ7Cj4gKwo+ICsJcmV0ID0gaW50ZWxfZHBfaGRjcDJfd2FpdF9mb3JfbXNn KGludGVsX2RpZ19wb3J0LCBoZGNwMl9tc2dfZGF0YSk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQly ZXR1cm4gcmV0Owo+ICsKPiArCWlmIChtc2dfaWQgPT0gSERDUF8yXzJfUkVQX1NFTkRfUkVDVklE X0xJU1QpIHsKPiArCQlyZXQgPSBnZXRfcmVjZWl2ZXJfaWRfbGlzdF9zaXplKGludGVsX2RpZ19w b3J0KTsKPiArCQlpZiAocmV0IDwgMCkKPiArCQkJcmV0dXJuIHJldDsKPiArCj4gKwkJc2l6ZSA9 IHJldDsKPiArCX0KPiArCWJ5dGVzX3RvX3JlY3YgPSBzaXplIC0gMTsKPiArCj4gKwkvKiBEUCBh ZGFwdGF0aW9uIG1zZ3MgaGFzIG5vIG1zZ19pZCAqLwo+ICsJYnl0ZSsrOwo+ICsKPiArCXdoaWxl IChieXRlc190b19yZWN2KSB7Cj4gKwkJbGVuID0gYnl0ZXNfdG9fcmVjdiA+IERQX0FVWF9NQVhf UEFZTE9BRF9CWVRFUyA/Cj4gKwkJICAgICAgRFBfQVVYX01BWF9QQVlMT0FEX0JZVEVTIDogYnl0 ZXNfdG9fcmVjdjsKPiArCj4gKwkJcmV0ID0gZHJtX2RwX2RwY2RfcmVhZCgmaW50ZWxfZGlnX3Bv cnQtPmRwLmF1eCwgb2Zmc2V0LAo+ICsJCQkJICAgICAgICh2b2lkICopYnl0ZSwgbGVuKTsKPiAr CQlpZiAocmV0IDwgMCkgewo+ICsJCQlEUk1fREVCVUdfS01TKCJtc2dfaWQgJWQsIHJldCAlemRc biIsIG1zZ19pZCwgcmV0KTsKPiArCQkJcmV0dXJuIHJldDsKPiArCQl9Cj4gKwo+ICsJCWJ5dGVz X3RvX3JlY3YgLT0gcmV0Owo+ICsJCWJ5dGUgKz0gcmV0Owo+ICsJCW9mZnNldCArPSByZXQ7Cj4g Kwl9Cj4gKwlieXRlID0gYnVmOwo+ICsJKmJ5dGUgPSBtc2dfaWQ7Cj4gKwo+ICsJcmV0dXJuIHNp emU7Cj4gK30KPiArCj4gK3N0YXRpYwo+ICtpbnQgaW50ZWxfZHBfaGRjcDJfY29uZmlnX3N0cmVh bV90eXBlKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ICsJCQkJ ICAgICAgYm9vbCBpc19yZXBlYXRlciwgdTggY29udGVudF90eXBlKQo+ICt7Cj4gKwlzdHJ1Y3Qg aGRjcDJfZHBfZXJyYXRhX3N0cmVhbV90eXBlIHN0cmVhbV90eXBlX21zZzsKPiArCj4gKwlpZiAo aXNfcmVwZWF0ZXIpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJLyoKPiArCSAqIEVycmF0YSBmb3Ig RFA6IEFzIFN0cmVhbSB0eXBlIGlzIHVzZWQgZm9yIGVuY3J5cHRpb24sIFJlY2VpdmVyCj4gKwkg KiBzaG91bGQgYmUgY29tbXVuaWNhdGVkIHdpdGggc3RyZWFtIHR5cGUgZm9yIHRoZSBkZWNyeXB0 aW9uIG9mIHRoZQo+ICsJICogY29udGVudC4KPiArCSAqIFJlcGVhdGVyIHdpbGwgYmUgY29tbXVu aWNhdGVkIHdpdGggc3RyZWFtIHR5cGUgYXMgYSBwYXJ0IG9mIGl0J3MKPiArCSAqIGF1dGggbGF0 ZXIgaW4gdGltZS4KPiArCSAqLwo+ICsJc3RyZWFtX3R5cGVfbXNnLm1zZ19pZCA9IEhEQ1BfMl8y X0VSUkFUQV9EUF9TVFJFQU1fVFlQRTsKPiArCXN0cmVhbV90eXBlX21zZy5zdHJlYW1fdHlwZSA9 IGNvbnRlbnRfdHlwZTsKPiArCj4gKwlyZXR1cm4gaW50ZWxfZHBfaGRjcDJfd3JpdGVfbXNnKGlu dGVsX2RpZ19wb3J0LCAmc3RyZWFtX3R5cGVfbXNnLAo+ICsJCQkJCXNpemVvZihzdHJlYW1fdHlw ZV9tc2cpKTsKPiArfQo+ICsKPiArc3RhdGljCj4gK2ludCBpbnRlbF9kcF9oZGNwMl9jaGVja19s aW5rKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KQo+ICt7Cj4gKwl1 OCByeF9zdGF0dXM7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IGludGVsX2RwX2hkY3AyX3Jl YWRfcnhfc3RhdHVzKGludGVsX2RpZ19wb3J0LCAmcnhfc3RhdHVzKTsKPiArCWlmIChyZXQpCj4g KwkJcmV0dXJuIHJldDsKPiArCj4gKwlpZiAoSERDUF8yXzJfRFBfUlhTVEFUVVNfUkVBVVRIX1JF UShyeF9zdGF0dXMpKQo+ICsJCXJldCA9IEhEQ1BfUkVBVVRIX1JFUVVFU1Q7Cj4gKwllbHNlIGlm IChIRENQXzJfMl9EUF9SWFNUQVRVU19MSU5LX0ZBSUxFRChyeF9zdGF0dXMpKQo+ICsJCXJldCA9 IEhEQ1BfTElOS19JTlRFR1JJVFlfRkFJTFVSRTsKPiArCWVsc2UgaWYgKEhEQ1BfMl8yX0RQX1JY U1RBVFVTX1JFQURZKHJ4X3N0YXR1cykpCj4gKwkJcmV0ID0gSERDUF9UT1BPTE9HWV9DSEFOR0U7 Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljCj4gK2ludCBpbnRlbF9kcF9o ZGNwMl9jYXBhYmxlKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ ICsJCQkgICBib29sICpjYXBhYmxlKQo+ICt7Cj4gKwl1OCByeF9jYXBzWzNdOwo+ICsJaW50IHJl dDsKPiArCj4gKwkqY2FwYWJsZSA9IGZhbHNlOwo+ICsJcmV0ID0gZHJtX2RwX2RwY2RfcmVhZCgm aW50ZWxfZGlnX3BvcnQtPmRwLmF1eCwKPiArCQkJICAgICAgIERQX0hEQ1BfMl8yX1JFR19SWF9D QVBTX09GRlNFVCwKPiArCQkJICAgICAgIHJ4X2NhcHMsIEhEQ1BfMl8yX1JYQ0FQU19MRU4pOwo+ ICsJaWYgKHJldCAhPSBIRENQXzJfMl9SWENBUFNfTEVOKQo+ICsJCXJldHVybiByZXQgPj0gMCA/ IC1FSU8gOiByZXQ7Cj4gKwo+ICsJaWYgKHJ4X2NhcHNbMF0gPT0gSERDUF8yXzJfUlhfQ0FQU19W RVJTSU9OX1ZBTCAmJgo+ICsJICAgIEhEQ1BfMl8yX0RQX0hEQ1BfQ0FQQUJMRShyeF9jYXBzWzJd KSkKPiArCQkqY2FwYWJsZSA9IHRydWU7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltIGludGVsX2RwX2hkY3Bfc2hpbSA9IHsK PiAgCS53cml0ZV9hbl9ha3N2ID0gaW50ZWxfZHBfaGRjcF93cml0ZV9hbl9ha3N2LAo+ICAJLnJl YWRfYmtzdiA9IGludGVsX2RwX2hkY3BfcmVhZF9ia3N2LAo+IEBAIC01ODU5LDYgKzYxODYsMTIg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0gaW50ZWxfZHBfaGRjcF9zaGlt ID0gewo+ICAJLnRvZ2dsZV9zaWduYWxsaW5nID0gaW50ZWxfZHBfaGRjcF90b2dnbGVfc2lnbmFs bGluZywKPiAgCS5jaGVja19saW5rID0gaW50ZWxfZHBfaGRjcF9jaGVja19saW5rLAo+ICAJLmhk Y3BfY2FwYWJsZSA9IGludGVsX2RwX2hkY3BfY2FwYWJsZSwKPiArCS53cml0ZV8yXzJfbXNnID0g aW50ZWxfZHBfaGRjcDJfd3JpdGVfbXNnLAo+ICsJLnJlYWRfMl8yX21zZyA9IGludGVsX2RwX2hk Y3AyX3JlYWRfbXNnLAo+ICsJLmNvbmZpZ19zdHJlYW1fdHlwZSA9IGludGVsX2RwX2hkY3AyX2Nv bmZpZ19zdHJlYW1fdHlwZSwKPiArCS5jaGVja18yXzJfbGluayA9IGludGVsX2RwX2hkY3AyX2No ZWNrX2xpbmssCj4gKwkuaGRjcF8yXzJfY2FwYWJsZSA9IGludGVsX2RwX2hkY3AyX2NhcGFibGUs Cj4gKwkucHJvdG9jb2wgPSBIRENQX1BST1RPQ09MX0RQLAo+ICB9Owo+ICAKPiAgc3RhdGljIHZv aWQgaW50ZWxfZWRwX3BhbmVsX3ZkZF9zYW5pdGl6ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KQoKLS0gCkphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBHcmFwaGljcyBDZW50ZXIKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1h aWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs