From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: Re: [PATCH] drm/i915: Control PSR at runtime through debugfs only Date: Wed, 14 Mar 2018 14:53:18 -0700 Message-ID: <20180314215315.GW3945@intel.com> References: <20180314114658.61861-1-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3A73B6E763 for ; Wed, 14 Mar 2018 21:53:23 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20180314114658.61861-1-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBNYXIgMTQsIDIwMTggYXQgMTI6NDY6NThQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gQWxsb3cgY29udHJvbGxpbmcgbGluayBzdGF0dXMgdGhyb3VnaCBpOTE1X2Vk cF9wc3Jfc3RhdHVzLCBpbiB0aGUgc2FtZSB3YXkga2VybmVsIGRvZXMuCj4gVGhpcyByZXBsYWNl cyBjaGFuZ2luZyB0aGUgbW9kdWxlIHBhcmFtZXRlciBhdCBydW50aW1lLCB0aGVuIGZvcmNpbmcg YSBtb2Rlc2V0Lgo+IAo+IFdyaXRpbmcgLTEgcmVzdG9yZXMgdGhlIG9yaWdpbmFsIFBTUiBtb2Rl IHNldCB0aHJvdWdoIHRoZSBtb2R1bGUgcGFyYW1ldGVyLgo+IFdyaXRpbmcgMCBkaXNhYmxlcyBQ U1IuCj4gV3JpdGluZyAxIGVuYWJsZXMgUFNSIHdpdGggZGVmYXVsdCBsaW5rIHN0YW5kYnkgbW9k ZS4KPiBXcml0aW5nIDIgZW5hYmxlcyBQU1Igd2l0aCBsaW5rIHN0YW5kYnkuCj4gV3JpdGluZyAz IGVuYWJsZXMgUFNSIHdpdGggbGluayBzdGFuZGJ5IGRpc2FibGVkLgo+IAo+IFNpZ25lZC1vZmYt Ynk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+ Cj4gLS0tCj4gVGhpcyBicmVha3Mga21zX2Zyb250YnVmZmVyX3RyYWNraW5nLCBhbmQgbmVlZHMg dGhlIGZvbGxvd2luZyBwYXRjaCB0byB3b3JrOgo+IGh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNr dG9wLm9yZy9wYXRjaC8yMDk5NTYvCj4gCj4gWFhYOiBNYWtlIGdsb2JhbF9lbmFibGUgYSB0cmlz dGF0ZSwgdG8ga2VlcCBvbGRlciB2ZXJzaW9ucyBvZiBrbXNfZnJvbnRidWZmZXJfdHJhY2tpbmcg d29ya2luZz8KPiAKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgfCAxODIg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmggICAgIHwgICAyICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9w YXJhbXMuYyAgfCAgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAg fCAgIDcgKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMgICAgfCAxMzkgKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tCj4gIDUgZmlsZXMgY2hhbmdlZCwgMjcxIGluc2VydGlv bnMoKyksIDYxIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5j Cj4gaW5kZXggNTc0ZmNmMjM0MDA3Li41MzRhM2IwNGU2YTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RlYnVnZnMuYwo+IEBAIC0yNTQ2LDE2ICsyNTQ2LDEzIEBAIHN0YXRpYyBjb25zdCBj aGFyICpwc3IyX2xpdmVfc3RhdHVzKHUzMiB2YWwpCj4gIAo+ICBzdGF0aWMgaW50IGk5MTVfZWRw X3Bzcl9zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICB7Cj4gLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7 Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBtLT5wcml2YXRlOwo+ICAJ dTMyIHBzcnBlcmYgPSAwOwo+ICAJdTMyIHN0YXRbM107Cj4gIAllbnVtIHBpcGUgcGlwZTsKPiAg CWJvb2wgZW5hYmxlZCA9IGZhbHNlOwo+ICAJYm9vbCBzaW5rX3N1cHBvcnQ7Cj4gIAo+IC0JaWYg KCFIQVNfUFNSKGRldl9wcml2KSkKPiAtCQlyZXR1cm4gLUVOT0RFVjsKPiAtCj4gIAlzaW5rX3N1 cHBvcnQgPSBkZXZfcHJpdi0+cHNyLnNpbmtfc3VwcG9ydDsKPiAgCXNlcV9wcmludGYobSwgIlNp bmtfU3VwcG9ydDogJXNcbiIsIHllc25vKHNpbmtfc3VwcG9ydCkpOwo+ICAJaWYgKCFzaW5rX3N1 cHBvcnQpCj4gQEAgLTI2MzEsNiArMjYyOCwxODEgQEAgc3RhdGljIGludCBpOTE1X2VkcF9wc3Jf c3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgCXJldHVybiAwOwo+ICB9 Cj4gIAo+ICtzdGF0aWMgYm9vbCBwc3JfbmVlZHNfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gKwkJCSAgICAgIGJvb2wgZW5hYmxlLCBib29sIGxpbmtfc3RhbmRi eSkKPiArewo+ICsJaWYgKCFkZXZfcHJpdi0+cHNyLmdsb2JhbF9lbmFibGUpCj4gKwkJcmV0dXJu IGZhbHNlOwo+ICsKPiArCWlmICghZW5hYmxlKQo+ICsJCXJldHVybiB0cnVlOwo+ICsKPiArCWlm IChkZXZfcHJpdi0+cHNyLmxpbmtfc3RhbmRieSAhPSBsaW5rX3N0YW5kYnkpCj4gKwkJcmV0dXJu IHRydWU7Cj4gKwo+ICsJcmV0dXJuIGZhbHNlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9vbCBwc3Jf bmVlZHNfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJICAg ICBib29sIGVuYWJsZSkKPiArewo+ICsJaWYgKCFlbmFibGUpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ ICsKPiArCXJldHVybiAhZGV2X3ByaXYtPnBzci5nbG9iYWxfZW5hYmxlOwo+ICt9Cj4gKwo+ICtz dGF0aWMgaW50IF9faTkxNV9lZHBfcHNyX3dyaXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiArCQkJCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCAqY3R4LAo+ICsJ CQkJYm9vbCBlbmFibGUsIGJvb2wgbGlua19zdGFuZGJ5KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gJmRldl9wcml2LT5kcm07Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9saXN0 X2l0ZXIgY29ubl9pdGVyOwo+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiAr CXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsK PiArCWludCByZXQ7Cj4gKwlib29sIG5lZWRzX2VuYWJsZSwgZm91bmQ7Cj4gKwo+ICsJcmV0ID0g ZHJtX21vZGVzZXRfbG9jaygmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4LCBjdHgp Owo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCW11dGV4X2xvY2soJmRldl9w cml2LT5wc3IubG9jayk7Cj4gK3JldHJ5Ogo+ICsJaWYgKCFkZXZfcHJpdi0+cHNyLmVuYWJsZWQp IHsKPiArCQlkZXZfcHJpdi0+cHNyLmdsb2JhbF9lbmFibGUgPSBlbmFibGU7Cj4gKwkJZGV2X3By aXYtPnBzci5saW5rX3N0YW5kYnkgPSBsaW5rX3N0YW5kYnk7Cj4gKwkJZ290byBlbmQ7Cj4gKwl9 Cj4gKwllbmNvZGVyID0gJmRwX3RvX2RpZ19wb3J0KGRldl9wcml2LT5wc3IuZW5hYmxlZCktPmJh c2UuYmFzZTsKPiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPiArCj4gKwlm b3VuZCA9IGZhbHNlOwo+ICsJZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXJfYmVnaW4oZGV2LCAmY29u bl9pdGVyKTsKPiArCWRybV9mb3JfZWFjaF9jb25uZWN0b3JfaXRlcihjb25uZWN0b3IsICZjb25u X2l0ZXIpCj4gKwkJaWYgKGNvbm5lY3Rvci0+c3RhdGUtPmJlc3RfZW5jb2RlciA9PSBlbmNvZGVy KSB7Cj4gKwkJCWZvdW5kID0gdHJ1ZTsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsJZHJtX2Nvbm5l Y3Rvcl9saXN0X2l0ZXJfZW5kKCZjb25uX2l0ZXIpOwo+ICsKPiArCWlmIChXQVJOX09OKCFmb3Vu ZCkpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJY3J0YyA9IGNvbm5lY3Rvci0+c3RhdGUt PmNydGM7Cj4gKwlyZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZjcnRjLT5tdXRleCwgY3R4KTsKPiAr CWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+ cHNyLmxvY2spOwo+ICsJaWYgKGRldl9wcml2LT5wc3IuZW5hYmxlZCAhPSBlbmNfdG9faW50ZWxf ZHAoZW5jb2RlcikpCj4gKwkJZ290byByZXRyeTsKPiArCj4gKwlpZiAoKGNvbm5lY3Rvci0+c3Rh dGUtPmNvbW1pdCAmJiAhdHJ5X3dhaXRfZm9yX2NvbXBsZXRpb24oJmNvbm5lY3Rvci0+c3RhdGUt PmNvbW1pdC0+aHdfZG9uZSkpIHx8Cj4gKwkgICAgKGNydGMtPnN0YXRlLT5jb21taXQgJiYgIXRy eV93YWl0X2Zvcl9jb21wbGV0aW9uKCZjcnRjLT5zdGF0ZS0+Y29tbWl0LT5od19kb25lKSkpIHsK PiArCQlyZXQgPSAtRUJVU1k7Cj4gKwkJZ290byBlbmQ7Cj4gKwl9Cj4gKwo+ICsJaWYgKHBzcl9u ZWVkc19kaXNhYmxlKGRldl9wcml2LCBlbmFibGUsIGxpbmtfc3RhbmRieSkpIHsKPiArCQlfX2lu dGVsX3Bzcl9kaXNhYmxlKGRldl9wcml2LCBkZXZfcHJpdi0+cHNyLmVuYWJsZWQsIHRvX2ludGVs X2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpKTsKPiArCQlkZXZfcHJpdi0+cHNyLmdsb2JhbF9lbmFi bGUgPSBmYWxzZTsKPiArCX0KPiArCj4gKwluZWVkc19lbmFibGUgPSBwc3JfbmVlZHNfZW5hYmxl KGRldl9wcml2LCBlbmFibGUpOwo+ICsJZGV2X3ByaXYtPnBzci5nbG9iYWxfZW5hYmxlID0gZW5h YmxlOwo+ICsJZGV2X3ByaXYtPnBzci5saW5rX3N0YW5kYnkgPSBsaW5rX3N0YW5kYnk7Cj4gKwo+ ICsJaWYgKG5lZWRzX2VuYWJsZSkKPiArCQlfX2ludGVsX3Bzcl9lbmFibGUoZGV2X3ByaXYsIGRl dl9wcml2LT5wc3IuZW5hYmxlZCwgdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSkpOwo+ ICsKPiArZW5kOgo+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+ICsJcmV0 dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIHNzaXplX3QgaTkxNV9lZHBfcHNyX3dyaXRlKHN0 cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1ZiwKPiArCQkJCSAgc2l6ZV90 IGxlbiwgbG9mZl90ICpvZmZwKQo+ICt7Cj4gKwlzdHJ1Y3Qgc2VxX2ZpbGUgKm0gPSBmaWxlLT5w cml2YXRlX2RhdGE7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBtLT5w cml2YXRlOwo+ICsJc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4IGN0eDsKPiArCWludCBy ZXQsIHZhbDsKPiArCWJvb2wgbGlua19zdGFuZGJ5Owo+ICsKPiArCWlmICghZGV2X3ByaXYtPnBz ci5zaW5rX3N1cHBvcnQpCj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwo+ICsJcmV0ID0ga3N0cnRv aW50X2Zyb21fdXNlcih1YnVmLCBsZW4sIDEwLCAmdmFsKTsKPiArCWlmIChyZXQgPCAwKSB7Cj4g KwkJYm9vbCBlbmFibGU7Cj4gKwkJcmV0ID0ga3N0cnRvYm9vbF9mcm9tX3VzZXIodWJ1ZiwgbGVu LCAmZW5hYmxlKTsKPiArCj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCXJldHVybiByZXQ7Cj4gKwo+ ICsJCXZhbCA9IGVuYWJsZTsKPiArCX0KPiArCj4gKwkvKiAtMSAtPiByZXNldCB0byBkZWZhdWx0 ICovCj4gKwlpZiAodmFsID09IC0xKQo+ICsJCXZhbCA9IGk5MTVfbW9kcGFyYW1zLmVuYWJsZV9w c3I7Cj4gKwo+ICsJc3dpdGNoICh2YWwpIHsKPiArCWNhc2UgMDoKPiArCWNhc2UgMToKPiArCQls aW5rX3N0YW5kYnkgPSBpbnRlbF9wc3JfZGVmYXVsdF9saW5rX3N0YW5kYnkoZGV2X3ByaXYpOwo+ ICsJCWJyZWFrOwo+ICsJY2FzZSAyOgo+ICsJCWxpbmtfc3RhbmRieSA9IHRydWU7Cj4gKwkJYnJl YWs7Cj4gKwljYXNlIDM6Cj4gKwkJbGlua19zdGFuZGJ5ID0gZmFsc2U7Cj4gKwkJYnJlYWs7Cj4g KwlkZWZhdWx0Ogo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCWludGVsX3J1bnRp bWVfcG1fZ2V0KGRldl9wcml2KTsKPiArCj4gKwlkcm1fbW9kZXNldF9hY3F1aXJlX2luaXQoJmN0 eCwgRFJNX01PREVTRVRfQUNRVUlSRV9JTlRFUlJVUFRJQkxFKTsKPiArCj4gK3JldHJ5Ogo+ICsJ cmV0ID0gX19pOTE1X2VkcF9wc3Jfd3JpdGUoZGV2X3ByaXYsICZjdHgsIHZhbCwgbGlua19zdGFu ZGJ5KTsKPiArCWlmIChyZXQgPT0gLUVCVVNZKSB7Cj4gKwkJcmV0ID0gZHJtX21vZGVzZXRfYmFj a29mZigmY3R4KTsKPiArCQlpZiAoIXJldCkKPiArCQkJZ290byByZXRyeTsKPiArCX0KPiArCj4g Kwlkcm1fbW9kZXNldF9kcm9wX2xvY2tzKCZjdHgpOwo+ICsJZHJtX21vZGVzZXRfYWNxdWlyZV9m aW5pKCZjdHgpOwo+ICsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiArCj4g KwlyZXR1cm4gcmV0ID86IGxlbjsKPiArfQo+ICsKPiArc3RhdGljIGludCBpOTE1X2VkcF9wc3Jf b3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKPiArewo+ICsJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gaW5vZGUtPmlfcHJpdmF0ZTsKPiArCj4g KwlpZiAoIUhBU19QU1IoZGV2X3ByaXYpKQo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsKPiArCXJl dHVybiBzaW5nbGVfb3BlbihmaWxlLCBpOTE1X2VkcF9wc3Jfc3RhdHVzLCBkZXZfcHJpdik7Cj4g K30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGk5MTVfZWRwX3Bz cl9vcHMgPSB7Cj4gKwkub3duZXIgPSBUSElTX01PRFVMRSwKPiArCS5vcGVuID0gaTkxNV9lZHBf cHNyX29wZW4sCj4gKwkucmVhZCA9IHNlcV9yZWFkLAo+ICsJLmxsc2VlayA9IHNlcV9sc2VlaywK PiArCS5yZWxlYXNlID0gc2luZ2xlX3JlbGVhc2UsCj4gKwkud3JpdGUgPSBpOTE1X2VkcF9wc3Jf d3JpdGUKPiArfTsKPiArCj4gIHN0YXRpYyBpbnQgaTkxNV9zaW5rX2NyYyhzdHJ1Y3Qgc2VxX2Zp bGUgKm0sIHZvaWQgKmRhdGEpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsKPiBAQCAtNDczNCw3ICs0OTA2LDYgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faW5mb19saXN0IGk5MTVfZGVidWdmc19saXN0W10gPSB7 Cj4gIAl7Imk5MTVfc3dpenpsZV9pbmZvIiwgaTkxNV9zd2l6emxlX2luZm8sIDB9LAo+ICAJeyJp OTE1X3BwZ3R0X2luZm8iLCBpOTE1X3BwZ3R0X2luZm8sIDB9LAo+ICAJeyJpOTE1X2xsYyIsIGk5 MTVfbGxjLCAwfSwKPiAtCXsiaTkxNV9lZHBfcHNyX3N0YXR1cyIsIGk5MTVfZWRwX3Bzcl9zdGF0 dXMsIDB9LAo+ICAJeyJpOTE1X3NpbmtfY3JjX2VEUDEiLCBpOTE1X3NpbmtfY3JjLCAwfSwKPiAg CXsiaTkxNV9lbmVyZ3lfdUoiLCBpOTE1X2VuZXJneV91SiwgMH0sCj4gIAl7Imk5MTVfcnVudGlt ZV9wbV9zdGF0dXMiLCBpOTE1X3J1bnRpbWVfcG1fc3RhdHVzLCAwfSwKPiBAQCAtNDc2MSw2ICs0 OTMyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X2RlYnVnZnNfZmlsZXMgewo+ICAJeyJp OTE1X3dlZGdlZCIsICZpOTE1X3dlZGdlZF9mb3BzfSwKPiAgCXsiaTkxNV9tYXhfZnJlcSIsICZp OTE1X21heF9mcmVxX2ZvcHN9LAo+ICAJeyJpOTE1X21pbl9mcmVxIiwgJmk5MTVfbWluX2ZyZXFf Zm9wc30sCj4gKwl7Imk5MTVfZWRwX3Bzcl9zdGF0dXMiLCAmaTkxNV9lZHBfcHNyX29wc30sCj4g IAl7Imk5MTVfY2FjaGVfc2hhcmluZyIsICZpOTE1X2NhY2hlX3NoYXJpbmdfZm9wc30sCj4gIAl7 Imk5MTVfcmluZ19taXNzZWRfaXJxIiwgJmk5MTVfcmluZ19taXNzZWRfaXJxX2ZvcHN9LAo+ICAJ eyJpOTE1X3JpbmdfdGVzdF9pcnEiLCAmaTkxNV9yaW5nX3Rlc3RfaXJxX2ZvcHN9LAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IGIzOWM1ZjY4ZWZiMi4uZGJjOWMwNjJjNjU4IDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTYwOCw2ICs2MDgsOCBAQCBzdHJ1Y3QgaTkx NV9wc3Igewo+ICAJYm9vbCBhbHBtOwo+ICAJYm9vbCBoYXNfaHdfdHJhY2tpbmc7Cj4gIAo+ICsJ Ym9vbCBnbG9iYWxfZW5hYmxlOwo+ICsKPiAgCXZvaWQgKCplbmFibGVfc291cmNlKShzdHJ1Y3Qg aW50ZWxfZHAgKiwKPiAgCQkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKik7 Cj4gIAl2b2lkICgqZGlzYWJsZV9zb3VyY2UpKHN0cnVjdCBpbnRlbF9kcCAqLAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9wYXJhbXMuYwo+IGluZGV4IDA4MTA4Y2U1YmUyMS4uMGQwMjk4MGIzYTJjIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5jCj4gQEAgLTkwLDcgKzkwLDcgQEAgaTkx NV9wYXJhbV9uYW1lZF91bnNhZmUoZW5hYmxlX3BwZ3R0LCBpbnQsIDA0MDAsCj4gIAkiT3ZlcnJp ZGUgUFBHVFQgdXNhZ2UuICIKPiAgCSIoLTE9YXV0byBbZGVmYXVsdF0sIDA9ZGlzYWJsZWQsIDE9 YWxpYXNpbmcsIDI9ZnVsbCwgMz1mdWxsIHdpdGggZXh0ZW5kZWQgYWRkcmVzcyBzcGFjZSkiKTsK PiAgCj4gLWk5MTVfcGFyYW1fbmFtZWRfdW5zYWZlKGVuYWJsZV9wc3IsIGludCwgMDYwMCwKPiAr aTkxNV9wYXJhbV9uYW1lZF91bnNhZmUoZW5hYmxlX3BzciwgaW50LCAwNDAwLAo+ICAJIkVuYWJs ZSBQU1IgIgo+ICAJIigwPWRpc2FibGVkLCAxPWVuYWJsZWQgLSBsaW5rIG1vZGUgY2hvc2VuIHBl ci1wbGF0Zm9ybSwgMj1mb3JjZSBsaW5rLXN0YW5kYnkgbW9kZSwgMz1mb3JjZSBsaW5rLW9mZiBt b2RlKSAiCj4gIAkiRGVmYXVsdDogLTEgKHVzZSBwZXItY2hpcCBkZWZhdWx0KSIpOwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggMWYwZThmMWU0NTk0Li5jNDg2MDkwZjRmNTIgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC0xODcxLDExICsxODcxLDE4IEBAIGJv b2wgaXNfaGRjcF9zdXBwb3J0ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBl bnVtIHBvcnQgcG9ydCk7Cj4gIAo+ICAvKiBpbnRlbF9wc3IuYyAqLwo+ICAjZGVmaW5lIENBTl9Q U1IoZGV2X3ByaXYpIChIQVNfUFNSKGRldl9wcml2KSAmJiBkZXZfcHJpdi0+cHNyLnNpbmtfc3Vw cG9ydCkKPiArYm9vbCBpbnRlbF9wc3JfZGVmYXVsdF9saW5rX3N0YW5kYnkoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgdm9pZCBpbnRlbF9wc3JfaW5pdF9kcGNkKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+ICB2b2lkIGludGVsX3Bzcl9lbmFibGUoc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCwKPiAgCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSk7Cj4gK3ZvaWQgX19pbnRlbF9wc3JfZW5hYmxlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiAr CQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+ICB2b2lkIGlu dGVsX3Bzcl9kaXNhYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAkJICAgICAgY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKTsKPiArdm9pZCBfX2lu dGVsX3Bzcl9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJ IHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gKwkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUpOwoKSSBkb24ndCBsaWtlIGV4cG9ydGluZyBhcm91bmQg ZnVuY3Rpb25zIHdpdGggIl8iCgphbHNvIEkgZG9uJ3QgYmVsaWV2ZSB5b3UgbmVlZCBkZXZfcHJp diBhbmQgaW50ZWxfZHAuCgpCdXQgd2h5IGRvbid0IHNpbXBseSBhZGQgYW5vdGhlciBmdW5jdGlv biBwYXJhbWV0ZXIgZm9yIGRpc2FibGUgYW5kIGVuYWJsZT8Kc29tZXRoaW5nIGxpa2U6CnZvaWQg aW50ZWxfcHNyX2Rpc2FibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAkJICAgICAgY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLCBib29sIGJsb2NrKTsK CnZvaWQgaW50ZWxfcHNyX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogIAkJICAg ICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsIGJvb2wgdW5ibG9j ayk7CgpBbmQgbWF5YmUgd2Ugd2lsbCBuZWVkIGEgc29ydCBmb3IgcmVmZXJyZW5jZSBjb3VudCBv biB0aGlzIGJsb2NrCmJlY2F1c2UgdGhlIHNhbWUgbWVjaGFuaXNtIGNvdWxkIGJlIHVzZWQgd2hl biB3ZSBuZWVkIHRvIGRpc2FibGUgYXV4IGZvciBtdXRleAp0cmFuc2FjdGlvbnMgZm9yIGluc3Rh bmNlLgoKPiAgdm9pZCBpbnRlbF9wc3JfaW52YWxpZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gIAkJCSAgdW5zaWduZWQgZnJvbnRidWZmZXJfYml0cywKPiAgCQkJICBl bnVtIGZiX29wX29yaWdpbiBvcmlnaW4pOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wc3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCj4gaW5k ZXggMzE3Y2I0YTEyNjkzLi43ZjU5ZmFlZjdlYTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcHNyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9w c3IuYwo+IEBAIC01Niw2ICs1NiwzNiBAQAo+ICAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4gICNp bmNsdWRlICJpOTE1X2Rydi5oIgo+ICAKPiArYm9vbCBpbnRlbF9wc3JfZGVmYXVsdF9saW5rX3N0 YW5kYnkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt7Cj4gKwkvKiBPdmVy cmlkZSBsaW5rX3N0YW5kYnkgeCBsaW5rX29mZiBkZWZhdWx0cyAqLwo+ICsJaWYgKGk5MTVfbW9k cGFyYW1zLmVuYWJsZV9wc3IgPT0gMikgewo+ICsJCURSTV9ERUJVR19LTVMoIlBTUjogRm9yY2lu ZyBsaW5rIHN0YW5kYnlcbiIpOwo+ICsJCXJldHVybiB0cnVlOwo+ICsJfQo+ICsKPiArCWlmIChp OTE1X21vZHBhcmFtcy5lbmFibGVfcHNyID09IDMpIHsKPiArCQlEUk1fREVCVUdfS01TKCJQU1I6 IEZvcmNpbmcgbWFpbiBsaW5rIG9mZlxuIik7Cj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsJfQo+ICsK PiArCS8qIFNldCBsaW5rX3N0YW5kYnkgeCBsaW5rX29mZiBkZWZhdWx0cyAqLwo+ICsJaWYgKElT X0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4gKwkJLyogSFNX IGFuZCBCRFcgcmVxdWlyZSB3b3JrYXJvdW5kcyB0aGF0IHdlIGRvbid0IGltcGxlbWVudC4gKi8K PiArCQlyZXR1cm4gZmFsc2U7Cj4gKwllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8 fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiArCQkvKiBPbiBWTFYgYW5kIENIViBvbmx5IHN0 YW5kYnkgbW9kZSBpcyBzdXBwb3J0ZWQuICovCj4gKwkJcmV0dXJuIHRydWU7Cj4gKwllbHNlCj4g KwkJLyogRm9yIG5ldyBwbGF0Zm9ybXMgbGV0J3MgcmVzcGVjdCBWQlQgYmFjayBhZ2FpbiAqLwo+ ICsJCXJldHVybiBkZXZfcHJpdi0+dmJ0LnBzci5mdWxsX2xpbms7Cj4gK30KPiArCj4gK3N0YXRp YyBib29sIGludGVsX3Bzcl9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiArewo+ICsJcmV0dXJuIGRldl9wcml2LT5wc3IuZW5hYmxlZCAmJiBkZXZfcHJpdi0+cHNy Lmdsb2JhbF9lbmFibGU7Cj4gK30KPiArCj4gIHN0YXRpYyBpbmxpbmUgZW51bSBpbnRlbF9kaXNw bGF5X3Bvd2VyX2RvbWFpbgo+ICBwc3JfYXV4X2RvbWFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwKQo+ICB7Cj4gQEAgLTUwMiwxMSArNTMyLDYgQEAgdm9pZCBpbnRlbF9wc3JfY29tcHV0ZV9j b25maWcoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiAgCWlmICghQ0FOX1BTUihkZXZfcHJp dikpCj4gIAkJcmV0dXJuOwo+ICAKPiAtCWlmICghaTkxNV9tb2RwYXJhbXMuZW5hYmxlX3Bzcikg ewo+IC0JCURSTV9ERUJVR19LTVMoIlBTUiBkaXNhYmxlIGJ5IGZsYWdcbiIpOwo+IC0JCXJldHVy bjsKPiAtCX0KPiAtCj4gIAkvKgo+ICAJICogSFNXIHNwZWMgZXhwbGljaXRseSBzYXlzIFBTUiBp cyB0aWVkIHRvIHBvcnQgQS4KPiAgCSAqIEJEVysgcGxhdGZvcm1zIHdpdGggRERJIGltcGxlbWVu dGF0aW9uIG9mIFBTUiBoYXZlIGRpZmZlcmVudAo+IEBAIC01NTksNyArNTg0LDExIEBAIHZvaWQg aW50ZWxfcHNyX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAo+ ICAJY3J0Y19zdGF0ZS0+aGFzX3BzciA9IHRydWU7Cj4gIAljcnRjX3N0YXRlLT5oYXNfcHNyMiA9 IGludGVsX3BzcjJfY29uZmlnX3ZhbGlkKGludGVsX2RwLCBjcnRjX3N0YXRlKTsKPiAtCURSTV9E RUJVR19LTVMoIkVuYWJsaW5nIFBTUiVzXG4iLCBjcnRjX3N0YXRlLT5oYXNfcHNyMiA/ICIyIiA6 ICIiKTsKPiArCj4gKwlpZiAoZGV2X3ByaXYtPnBzci5nbG9iYWxfZW5hYmxlKQo+ICsJCURSTV9E RUJVR19LTVMoIkVuYWJsaW5nIFBTUiVzXG4iLCBjcnRjX3N0YXRlLT5oYXNfcHNyMiA/ICIyIiA6 ICIiKTsKPiArCWVsc2UKPiArCQlEUk1fREVCVUdfS01TKCJQU1IgZGlzYWJsZSBieSBmbGFnXG4i KTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2FjdGl2YXRlKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApCj4gQEAgLTYxNyw2ICs2NDYsMzIgQEAgc3RhdGljIHZvaWQgaHN3X3Bz cl9lbmFibGVfc291cmNlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAl9Cj4gIH0KPiAg Cj4gK3ZvaWQgX19pbnRlbF9wc3JfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiArCQkJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiArCQkJY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gK3sKPiArCWRldl9wcml2LT5wc3Iuc2V0 dXBfdnNjKGludGVsX2RwLCBjcnRjX3N0YXRlKTsKPiArCWRldl9wcml2LT5wc3IuZW5hYmxlX3Np bmsoaW50ZWxfZHApOwo+ICsJZGV2X3ByaXYtPnBzci5lbmFibGVfc291cmNlKGludGVsX2RwLCBj cnRjX3N0YXRlKTsKPiArCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7Cj4gKwkJ aW50ZWxfcHNyX2FjdGl2YXRlKGludGVsX2RwKTsKPiArCX0gZWxzZSB7Cj4gKwkJLyoKPiArCQkg KiBGSVhNRTogQWN0aXZhdGlvbiBzaG91bGQgaGFwcGVuIGltbWVkaWF0ZWx5IHNpbmNlIHRoaXMK PiArCQkgKiBmdW5jdGlvbiBpcyBqdXN0IGNhbGxlZCBhZnRlciBwaXBlIGlzIGZ1bGx5IHRyYWlu ZWQgYW5kCj4gKwkJICogZW5hYmxlZC4KPiArCQkgKiBIb3dldmVyIG9uIHNvbWUgcGxhdGZvcm1z IHdlIGZhY2UgaXNzdWVzIHdoZW4gZmlyc3QKPiArCQkgKiBhY3RpdmF0aW9uIGZvbGxvd3MgYSBt b2Rlc2V0IHNvIHF1aWNrbHkuCj4gKwkJICogICAgIC0gT24gVkxWL0NIViB3ZSBnZXQgYmFuayBz Y3JlZW4gb24gZmlyc3QgYWN0aXZhdGlvbgo+ICsJCSAqICAgICAtIE9uIEhTVy9CRFcgd2UgZ2V0 IGEgcmVjb3ZlcmFibGUgZnJvemVuIHNjcmVlbiB1bnRpbAo+ICsJCSAqICAgICAgIG5leHQgZXhp dC1hY3RpdmF0ZSBzZXF1ZW5jZS4KPiArCQkgKi8KPiArCQlzY2hlZHVsZV9kZWxheWVkX3dvcmso JmRldl9wcml2LT5wc3Iud29yaywKPiArCQkJCSAgICAgIG1zZWNzX3RvX2ppZmZpZXMoaW50ZWxf ZHAtPnBhbmVsX3Bvd2VyX2N5Y2xlX2RlbGF5ICogNSkpOwo+ICsJfQo+ICt9Cj4gKwo+ICAvKioK PiAgICogaW50ZWxfcHNyX2VuYWJsZSAtIEVuYWJsZSBQU1IKPiAgICogQGludGVsX2RwOiBJbnRl bCBEUAo+IEBAIC02NDcsMjcgKzcwMiwxMCBAQCB2b2lkIGludGVsX3Bzcl9lbmFibGUoc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCwKPiAgCWRldl9wcml2LT5wc3IucHNyMl9zdXBwb3J0ID0gY3J0 Y19zdGF0ZS0+aGFzX3BzcjI7Cj4gIAlkZXZfcHJpdi0+cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0 cyA9IDA7Cj4gIAo+IC0JZGV2X3ByaXYtPnBzci5zZXR1cF92c2MoaW50ZWxfZHAsIGNydGNfc3Rh dGUpOwo+IC0JZGV2X3ByaXYtPnBzci5lbmFibGVfc2luayhpbnRlbF9kcCk7Cj4gLQlkZXZfcHJp di0+cHNyLmVuYWJsZV9zb3VyY2UoaW50ZWxfZHAsIGNydGNfc3RhdGUpOwo+ICAJZGV2X3ByaXYt PnBzci5lbmFibGVkID0gaW50ZWxfZHA7Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gOSkgewo+IC0JCWludGVsX3Bzcl9hY3RpdmF0ZShpbnRlbF9kcCk7Cj4gLQl9IGVsc2Ugewo+ IC0JCS8qCj4gLQkJICogRklYTUU6IEFjdGl2YXRpb24gc2hvdWxkIGhhcHBlbiBpbW1lZGlhdGVs eSBzaW5jZSB0aGlzCj4gLQkJICogZnVuY3Rpb24gaXMganVzdCBjYWxsZWQgYWZ0ZXIgcGlwZSBp cyBmdWxseSB0cmFpbmVkIGFuZAo+IC0JCSAqIGVuYWJsZWQuCj4gLQkJICogSG93ZXZlciBvbiBz b21lIHBsYXRmb3JtcyB3ZSBmYWNlIGlzc3VlcyB3aGVuIGZpcnN0Cj4gLQkJICogYWN0aXZhdGlv biBmb2xsb3dzIGEgbW9kZXNldCBzbyBxdWlja2x5Lgo+IC0JCSAqICAgICAtIE9uIFZMVi9DSFYg d2UgZ2V0IGJhbmsgc2NyZWVuIG9uIGZpcnN0IGFjdGl2YXRpb24KPiAtCQkgKiAgICAgLSBPbiBI U1cvQkRXIHdlIGdldCBhIHJlY292ZXJhYmxlIGZyb3plbiBzY3JlZW4gdW50aWwKPiAtCQkgKiAg ICAgICBuZXh0IGV4aXQtYWN0aXZhdGUgc2VxdWVuY2UuCj4gLQkJICovCj4gLQkJc2NoZWR1bGVf ZGVsYXllZF93b3JrKCZkZXZfcHJpdi0+cHNyLndvcmssCj4gLQkJCQkgICAgICBtc2Vjc190b19q aWZmaWVzKGludGVsX2RwLT5wYW5lbF9wb3dlcl9jeWNsZV9kZWxheSAqIDUpKTsKPiAtCX0KPiAr CWlmIChkZXZfcHJpdi0+cHNyLmdsb2JhbF9lbmFibGUpCj4gKwkJX19pbnRlbF9wc3JfZW5hYmxl KGRldl9wcml2LCBpbnRlbF9kcCwgY3J0Y19zdGF0ZSk7Cj4gIAo+ICB1bmxvY2s6Cj4gIAltdXRl eF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7Cj4gQEAgLTc1Miw2ICs3OTAsMTYgQEAgc3Rh dGljIHZvaWQgaHN3X3Bzcl9kaXNhYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAlw c3JfYXV4X2lvX3Bvd2VyX3B1dChpbnRlbF9kcCk7Cj4gIH0KPiAgCj4gK3ZvaWQgX19pbnRlbF9w c3JfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCSBzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICsJCQkgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKm9sZF9jcnRjX3N0YXRlKQo+ICt7Cj4gKwlkZXZfcHJpdi0+cHNyLmRpc2FibGVfc291cmNl KGludGVsX2RwLCBvbGRfY3J0Y19zdGF0ZSk7Cj4gKwo+ICsJLyogRGlzYWJsZSBQU1Igb24gU2lu ayAqLwo+ICsJZHJtX2RwX2RwY2Rfd3JpdGViKCZpbnRlbF9kcC0+YXV4LCBEUF9QU1JfRU5fQ0ZH LCAwKTsKPiArfQo+ICsKPiAgLyoqCj4gICAqIGludGVsX3Bzcl9kaXNhYmxlIC0gRGlzYWJsZSBQ U1IKPiAgICogQGludGVsX2RwOiBJbnRlbCBEUAo+IEBAIC03NzMsMTUgKzgyMSwxMyBAQCB2b2lk IGludGVsX3Bzcl9kaXNhYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAkJcmV0dXJu Owo+ICAKPiAgCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7Cj4gLQlpZiAoIWRldl9w cml2LT5wc3IuZW5hYmxlZCkgewo+ICsJaWYgKGludGVsX2RwICE9IGRldl9wcml2LT5wc3IuZW5h YmxlZCkgewo+ICAJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPiAgCQlyZXR1 cm47Cj4gIAl9Cj4gIAo+IC0JZGV2X3ByaXYtPnBzci5kaXNhYmxlX3NvdXJjZShpbnRlbF9kcCwg b2xkX2NydGNfc3RhdGUpOwo+IC0KPiAtCS8qIERpc2FibGUgUFNSIG9uIFNpbmsgKi8KPiAtCWRy bV9kcF9kcGNkX3dyaXRlYigmaW50ZWxfZHAtPmF1eCwgRFBfUFNSX0VOX0NGRywgMCk7Cj4gKwlp ZiAoaW50ZWxfcHNyX2VuYWJsZWQoZGV2X3ByaXYpKQo+ICsJCV9faW50ZWxfcHNyX2Rpc2FibGUo ZGV2X3ByaXYsIGludGVsX2RwLCBvbGRfY3J0Y19zdGF0ZSk7Cj4gIAo+ICAJZGV2X3ByaXYtPnBz ci5lbmFibGVkID0gTlVMTDsKPiAgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsK PiBAQCAtODMzLDExICs4NzksMTEgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX3dvcmsoc3RydWN0 IHdvcmtfc3RydWN0ICp3b3JrKQo+ICAJCX0KPiAgCX0KPiAgCW11dGV4X2xvY2soJmRldl9wcml2 LT5wc3IubG9jayk7Cj4gLQlpbnRlbF9kcCA9IGRldl9wcml2LT5wc3IuZW5hYmxlZDsKPiAtCj4g LQlpZiAoIWludGVsX2RwKQo+ICsJaWYgKCFpbnRlbF9wc3JfZW5hYmxlZChkZXZfcHJpdikpCj4g IAkJZ290byB1bmxvY2s7Cj4gIAo+ICsJaW50ZWxfZHAgPSBkZXZfcHJpdi0+cHNyLmVuYWJsZWQ7 Cj4gKwo+ICAJLyoKPiAgCSAqIFRoZSBkZWxheWVkIHdvcmsgY2FuIHJhY2Ugd2l0aCBhbiBpbnZh bGlkYXRlIGhlbmNlIHdlIG5lZWQgdG8KPiAgCSAqIHJlY2hlY2suIFNpbmNlIHBzcl9mbHVzaCBm aXJzdCBjbGVhcnMgdGhpcyBhbmQgdGhlbiByZXNjaGVkdWxlcyB3ZQo+IEBAIC05MzMsNyArOTc5 LDcgQEAgdm9pZCBpbnRlbF9wc3Jfc2luZ2xlX2ZyYW1lX3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJcmV0dXJuOwo+ICAKPiAgCW11dGV4X2xvY2soJmRldl9w cml2LT5wc3IubG9jayk7Cj4gLQlpZiAoIWRldl9wcml2LT5wc3IuZW5hYmxlZCkgewo+ICsJaWYg KCFpbnRlbF9wc3JfZW5hYmxlZChkZXZfcHJpdikpIHsKPiAgCQltdXRleF91bmxvY2soJmRldl9w cml2LT5wc3IubG9jayk7Cj4gIAkJcmV0dXJuOwo+ICAJfQo+IEBAIC05NzksNyArMTAyNSw3IEBA IHZvaWQgaW50ZWxfcHNyX2ludmFsaWRhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ICAJCXJldHVybjsKPiAgCj4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2sp Owo+IC0JaWYgKCFkZXZfcHJpdi0+cHNyLmVuYWJsZWQpIHsKPiArCWlmICghaW50ZWxfcHNyX2Vu YWJsZWQoZGV2X3ByaXYpKSB7Cj4gIAkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2sp Owo+ICAJCXJldHVybjsKPiAgCX0KPiBAQCAtMTAyMiw3ICsxMDY4LDcgQEAgdm9pZCBpbnRlbF9w c3JfZmx1c2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCXJldHVybjsK PiAgCj4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+IC0JaWYgKCFkZXZfcHJp di0+cHNyLmVuYWJsZWQpIHsKPiArCWlmICghaW50ZWxfcHNyX2VuYWJsZWQoZGV2X3ByaXYpKSB7 Cj4gIAkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+ICAJCXJldHVybjsKPiAg CX0KPiBAQCAtMTA4MSwyNiArMTEyNyw5IEBAIHZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJaWYgKGk5MTVfbW9kcGFyYW1zLmVuYWJsZV9w c3IgPT0gLTEpCj4gIAkJaTkxNV9tb2RwYXJhbXMuZW5hYmxlX3BzciA9IDA7Cj4gIAo+IC0JLyog U2V0IGxpbmtfc3RhbmRieSB4IGxpbmtfb2ZmIGRlZmF1bHRzICovCj4gLQlpZiAoSVNfSEFTV0VM TChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkKPiAtCQkvKiBIU1cgYW5kIEJE VyByZXF1aXJlIHdvcmthcm91bmRzIHRoYXQgd2UgZG9uJ3QgaW1wbGVtZW50LiAqLwo+IC0JCWRl dl9wcml2LT5wc3IubGlua19zdGFuZGJ5ID0gZmFsc2U7Cj4gLQllbHNlIGlmIChJU19WQUxMRVlW SUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiAtCQkvKiBPbiBWTFYg YW5kIENIViBvbmx5IHN0YW5kYnkgbW9kZSBpcyBzdXBwb3J0ZWQuICovCj4gLQkJZGV2X3ByaXYt PnBzci5saW5rX3N0YW5kYnkgPSB0cnVlOwo+IC0JZWxzZQo+IC0JCS8qIEZvciBuZXcgcGxhdGZv cm1zIGxldCdzIHJlc3BlY3QgVkJUIGJhY2sgYWdhaW4gKi8KPiAtCQlkZXZfcHJpdi0+cHNyLmxp bmtfc3RhbmRieSA9IGRldl9wcml2LT52YnQucHNyLmZ1bGxfbGluazsKPiArCWRldl9wcml2LT5w c3IubGlua19zdGFuZGJ5ID0gaW50ZWxfcHNyX2RlZmF1bHRfbGlua19zdGFuZGJ5KGRldl9wcml2 KTsKPiAgCj4gLQkvKiBPdmVycmlkZSBsaW5rX3N0YW5kYnkgeCBsaW5rX29mZiBkZWZhdWx0cyAq Lwo+IC0JaWYgKGk5MTVfbW9kcGFyYW1zLmVuYWJsZV9wc3IgPT0gMiAmJiAhZGV2X3ByaXYtPnBz ci5saW5rX3N0YW5kYnkpIHsKPiAtCQlEUk1fREVCVUdfS01TKCJQU1I6IEZvcmNpbmcgbGluayBz dGFuZGJ5XG4iKTsKPiAtCQlkZXZfcHJpdi0+cHNyLmxpbmtfc3RhbmRieSA9IHRydWU7Cj4gLQl9 Cj4gLQlpZiAoaTkxNV9tb2RwYXJhbXMuZW5hYmxlX3BzciA9PSAzICYmIGRldl9wcml2LT5wc3Iu bGlua19zdGFuZGJ5KSB7Cj4gLQkJRFJNX0RFQlVHX0tNUygiUFNSOiBGb3JjaW5nIG1haW4gbGlu ayBvZmZcbiIpOwo+IC0JCWRldl9wcml2LT5wc3IubGlua19zdGFuZGJ5ID0gZmFsc2U7Cj4gLQl9 Cj4gKwlkZXZfcHJpdi0+cHNyLmdsb2JhbF9lbmFibGUgPSBpOTE1X21vZHBhcmFtcy5lbmFibGVf cHNyOwo+ICAKPiAgCUlOSVRfREVMQVlFRF9XT1JLKCZkZXZfcHJpdi0+cHNyLndvcmssIGludGVs X3Bzcl93b3JrKTsKPiAgCW11dGV4X2luaXQoJmRldl9wcml2LT5wc3IubG9jayk7Cj4gLS0gCj4g Mi4xNi4yCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=