From mboxrd@z Thu Jan 1 00:00:00 1970 From: Harry Wentland Subject: Re: [PATCH v4 4/4] drm/amd/display: Set FreeSync state using drm VRR properties Date: Thu, 11 Oct 2018 16:39:12 -0400 Message-ID: <42b237df-9c30-4cd0-0891-d0b05b54533e@amd.com> References: <20181011163942.28267-1-nicholas.kazlauskas@amd.com> <20181011163942.28267-5-nicholas.kazlauskas@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181011163942.28267-5-nicholas.kazlauskas-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Nicholas Kazlauskas , dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: daniel.vetter-/w4YWyX8dFk@public.gmane.org, michel-otUistvHUpPR7s880joybQ@public.gmane.org, manasi.d.navare-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org, Alexander.Deucher-5C7GfCeVMHo@public.gmane.org, Marek.Olsak-5C7GfCeVMHo@public.gmane.org, ville.syrjala-VuQAYsv1563Yd54FQh9/CA@public.gmane.org List-Id: dri-devel@lists.freedesktop.org T24gMjAxOC0xMC0xMSAxMjozOSBQTSwgTmljaG9sYXMgS2F6bGF1c2thcyB3cm90ZToKPiBTdXBw b3J0IGZvciBBTURHUFUgc3BlY2lmaWMgRnJlZVN5bmMgcHJvcGVydGllcyBhbmQgaW9jdGxzIGFy ZSBkcm9wcGVkCj4gZnJvbSBhbWRncHVfZG0gaW4gZmF2b3Igb2Ygc3VwcG9ydGluZyBkcm0gdmFy aWFibGUgcmVmcmVzaCByYXRlCj4gcHJvcGVydGllcy4KPiAKPiBUaGUgZHJtIHZycl9jYXBhYmxl IHByb3BlcnR5IGlzIG5vdyBhdHRhY2hlZCB0byBhbnkgRFAvSERNSSBjb25uZWN0b3IuCj4gSXRz IHZhbHVlIGlzIHVwZGF0ZWQgYWNjb3JkaW5nbHkgdG8gdGhlIGNvbm5lY3RvcidzIEZyZWVTeW5j IGNhcGFiaWx0aXkuCj4gCj4gVGhlIGZyZWVzeW5jX2VuYWJsZSBsb2dpYyBhbmQgaW9jdGwgY29u dHJvbCBoYXMgaGFzIGJlZW4gZHJvcHBlZCBpbgo+IGZhdm9yIG9mIHV0aWxpemluZyB0aGUgdnJy X2VuYWJsZWQgb24gdGhlIGRybSBDUlRDLiBUaGlzIGFsbG93cyBmb3IgbW9yZQo+IGZpbmUgZ3Jh aW5lZCBhdG9taWMgY29udHJvbCBvdmVyIHdoaWNoIENSVENzIHNob3VsZCBzdXBwb3J0IHZhcmlh YmxlCj4gcmVmcmVzaCByYXRlLgo+IAo+IFRvIGhhbmRsZSBzdGF0ZSBjaGFuZ2VzIGZvciB2cnJf ZW5hYmxlZCBpdCB3YXMgZWFzaWVzdCB0byBkcm9wIHRoZQo+IGZvcmNlZCBtb2Rlc2V0IG9uIGZy ZWVzeW5jX2VuYWJsZWQgY2hhbmdlLiBUaGlzIHBhdGNoIG5vdyBwZXJmb3JtcyB0aGUKPiByZXF1 aXJlZCBzdHJlYW0gdXBkYXRlcyB3aGVuIHBsYW5lcyBhcmUgZmxpcHBlZC4KPiAKPiBUaGlzIGlz IGRvbmUgZm9yIGEgZmV3IHJlYXNvbnM6Cj4gCj4gKDEpIFZSUiBzdHJlYW0gdXBkYXRlcyBjYW4g YmUgZG9uZSBpbiB0aGUgZmFzdCB1cGRhdGUgcGF0aAo+IAo+ICgyKSBhbWRncHVfZG1fYXRvbWlj X2NoZWNrIHdvdWxkIG5lZWQgdG8gYmUgaGFja2VkIGFwYXJ0IHRvIGNoZWNrCj4gICAgIGRlc2ly ZWQgdmFyaWFibGUgcmVmcmVzaCBzdGF0ZSBhbmQgY2FwYWJpbGl0eSBiZWZvcmUgdGhlIENSVEMK PiAgICAgZGlzYWJsZSBwYXNzLgo+IAo+ICgzKSBQZXJmb3JtaW5nIFZSUiBzdHJlYW0gdXBkYXRl cyBvbi1mbGlwIGlzIG5lZWRlZCBmb3IgZW5hYmxpbmcgQlRSCj4gICAgIHN1cHBvcnQuCj4gCj4g VlJSIHBhY2tldHMgYW5kIHRpbWluZyBhZGp1c3RtZW50cyBhcmUgbm93IHRyYWNrZWQgYW5kIGNv bXBhcmVkIHRvCj4gcHJldmlvdXMgdmFsdWVzIHNlbnQgdG8gdGhlIGhhcmR3YXJlLgo+IAo+IFNp Z25lZC1vZmYtYnk6IE5pY2hvbGFzIEthemxhdXNrYXMgPG5pY2hvbGFzLmthemxhdXNrYXNAYW1k LmNvbT4KPiAtLS0KPiAgLi4uL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9k bS5jIHwgMjU1ICsrKysrKysrKy0tLS0tLS0tLQo+ICAuLi4vZ3B1L2RybS9hbWQvZGlzcGxheS9h bWRncHVfZG0vYW1kZ3B1X2RtLmggfCAgIDcgKy0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMzggaW5z ZXJ0aW9ucygrKSwgMTI0IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYwo+IGluZGV4IDZhMjM0MmQ3Mjc0Mi4u ZDVkZTRiOTFlMTQ0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9h bWRncHVfZG0vYW1kZ3B1X2RtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkv YW1kZ3B1X2RtL2FtZGdwdV9kbS5jCj4gQEAgLTE4MDIsNzIgKzE4MDIsNiBAQCBzdGF0aWMgdm9p ZCBkbV9iYW5kd2lkdGhfdXBkYXRlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ICAJLyog VE9ETzogaW1wbGVtZW50IGxhdGVyICovCj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQgYW1kZ3B1X25v dGlmeV9mcmVlc3luYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+IC0JCQkJ c3RydWN0IGRybV9maWxlICpmaWxwKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGU7Cj4gLQlzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggY3R4Owo+IC0Jc3RydWN0 IGRybV9jcnRjICpjcnRjOwo+IC0Jc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiAt CXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRfY29uX3N0YXRlLCAqbmV3X2Nvbl9zdGF0 ZTsKPiAtCWludCByZXQgPSAwOwo+IC0JdWludDhfdCBpOwo+IC0JYm9vbCBlbmFibGUgPSBmYWxz ZTsKPiAtCj4gLQlkcm1fbW9kZXNldF9hY3F1aXJlX2luaXQoJmN0eCwgMCk7Cj4gLQo+IC0Jc3Rh dGUgPSBkcm1fYXRvbWljX3N0YXRlX2FsbG9jKGRldik7Cj4gLQlpZiAoIXN0YXRlKSB7Cj4gLQkJ cmV0ID0gLUVOT01FTTsKPiAtCQlnb3RvIG91dDsKPiAtCX0KPiAtCXN0YXRlLT5hY3F1aXJlX2N0 eCA9ICZjdHg7Cj4gLQo+IC1yZXRyeToKPiAtCWRybV9mb3JfZWFjaF9jcnRjKGNydGMsIGRldikg ewo+IC0JCXJldCA9IGRybV9hdG9taWNfYWRkX2FmZmVjdGVkX2Nvbm5lY3RvcnMoc3RhdGUsIGNy dGMpOwo+IC0JCWlmIChyZXQpCj4gLQkJCWdvdG8gZmFpbDsKPiAtCj4gLQkJLyogVE9ETyByZXdv cmsgYW1kZ3B1X2RtX2NvbW1pdF9wbGFuZXMgc28gd2UgZG9uJ3QgbmVlZCB0aGlzICovCj4gLQkJ cmV0ID0gZHJtX2F0b21pY19hZGRfYWZmZWN0ZWRfcGxhbmVzKHN0YXRlLCBjcnRjKTsKPiAtCQlp ZiAocmV0KQo+IC0JCQlnb3RvIGZhaWw7Cj4gLQl9Cj4gLQo+IC0JZm9yX2VhY2hfb2xkbmV3X2Nv bm5lY3Rvcl9pbl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9yLCBvbGRfY29uX3N0YXRlLCBuZXdfY29u X3N0YXRlLCBpKSB7Cj4gLQkJc3RydWN0IGRtX2Nvbm5lY3Rvcl9zdGF0ZSAqZG1fbmV3X2Nvbl9z dGF0ZSA9IHRvX2RtX2Nvbm5lY3Rvcl9zdGF0ZShuZXdfY29uX3N0YXRlKTsKPiAtCQlzdHJ1Y3Qg ZHJtX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlOwo+IC0JCXN0cnVjdCBhbWRncHVfY3J0YyAq YWNydGMgPSB0b19hbWRncHVfY3J0YyhkbV9uZXdfY29uX3N0YXRlLT5iYXNlLmNydGMpOwo+IC0J CXN0cnVjdCBkbV9jcnRjX3N0YXRlICpkbV9uZXdfY3J0Y19zdGF0ZTsKPiAtCj4gLQkJaWYgKCFh Y3J0Yykgewo+IC0JCQlBU1NFUlQoMCk7Cj4gLQkJCWNvbnRpbnVlOwo+IC0JCX0KPiAtCj4gLQkJ bmV3X2NydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgJmFj cnRjLT5iYXNlKTsKPiAtCQlkbV9uZXdfY3J0Y19zdGF0ZSA9IHRvX2RtX2NydGNfc3RhdGUobmV3 X2NydGNfc3RhdGUpOwo+IC0KPiAtCQlkbV9uZXdfY3J0Y19zdGF0ZS0+ZnJlZXN5bmNfZW5hYmxl ZCA9IGVuYWJsZTsKPiAtCX0KPiAtCj4gLQlyZXQgPSBkcm1fYXRvbWljX2NvbW1pdChzdGF0ZSk7 Cj4gLQo+IC1mYWlsOgo+IC0JaWYgKHJldCA9PSAtRURFQURMSykgewo+IC0JCWRybV9hdG9taWNf c3RhdGVfY2xlYXIoc3RhdGUpOwo+IC0JCWRybV9tb2Rlc2V0X2JhY2tvZmYoJmN0eCk7Cj4gLQkJ Z290byByZXRyeTsKPiAtCX0KPiAtCj4gLQlkcm1fYXRvbWljX3N0YXRlX3B1dChzdGF0ZSk7Cj4g LQo+IC1vdXQ6Cj4gLQlkcm1fbW9kZXNldF9kcm9wX2xvY2tzKCZjdHgpOwo+IC0JZHJtX21vZGVz ZXRfYWNxdWlyZV9maW5pKCZjdHgpOwo+IC0JcmV0dXJuIHJldDsKPiAtfQo+ICAKPiAgc3RhdGlj IGNvbnN0IHN0cnVjdCBhbWRncHVfZGlzcGxheV9mdW5jcyBkbV9kaXNwbGF5X2Z1bmNzID0gewo+ ICAJLmJhbmR3aWR0aF91cGRhdGUgPSBkbV9iYW5kd2lkdGhfdXBkYXRlLCAvKiBjYWxsZWQgdW5j b25kaXRpb25hbGx5ICovCj4gQEAgLTE4ODEsNyArMTgxNSw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgYW1kZ3B1X2Rpc3BsYXlfZnVuY3MgZG1fZGlzcGxheV9mdW5jcyA9IHsKPiAgCQlkbV9jcnRj X2dldF9zY2Fub3V0cG9zLC8qIGNhbGxlZCB1bmNvbmRpdGlvbmFsbHkgKi8KPiAgCS5hZGRfZW5j b2RlciA9IE5VTEwsIC8qIFZCSU9TIHBhcnNpbmcuIERBTCBkb2VzIGl0LiAqLwo+ICAJLmFkZF9j b25uZWN0b3IgPSBOVUxMLCAvKiBWQklPUyBwYXJzaW5nLiBEQUwgZG9lcyBpdC4gKi8KPiAtCS5u b3RpZnlfZnJlZXN5bmMgPSBhbWRncHVfbm90aWZ5X2ZyZWVzeW5jLAoKUGxlYXNlIGFsc28gZHJv cCBmcm9tIGFtZGdwdV9kaXNwbGF5X2Z1bmNzIGRlZmluaXRpb24gaW4gYW1kZ3B1X21vZGUuaC4g TWlnaHQgd2FudCB0byBkcm9wIHRoZSBzZXRfZnJlZXN5bmNfcHJvcGVydHkgZnJvbSB0aGVyZSBh cyB3ZWxsLgoKPiAgCj4gIH07Cj4gIAo+IEBAIC0yODM0LDcgKzI3NjcsOCBAQCBkbV9jcnRjX2R1 cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAo+ICAJc3RhdGUtPmFkanVz dCA9IGN1ci0+YWRqdXN0Owo+ICAJc3RhdGUtPnZycl9pbmZvcGFja2V0ID0gY3VyLT52cnJfaW5m b3BhY2tldDsKPiAtCXN0YXRlLT5mcmVlc3luY19lbmFibGVkID0gY3VyLT5mcmVlc3luY19lbmFi bGVkOwo+ICsJc3RhdGUtPnZycl9zdXBwb3J0ZWQgPSBjdXItPnZycl9zdXBwb3J0ZWQ7Cj4gKwlz dGF0ZS0+ZnJlZXN5bmNfY29uZmlnID0gY3VyLT5mcmVlc3luY19jb25maWc7Cj4gIAo+ICAJLyog VE9ETyBEdXBsaWNhdGUgZGNfc3RyZWFtIGFmdGVyIG9iamVjdHMgYXJlIHN0cmVhbSBvYmplY3Qg aXMgZmxhdHRlbmVkICovCj4gIAo+IEBAIC0zMDUzLDggKzI5ODcsNiBAQCBhbWRncHVfZG1fY29u bmVjdG9yX2F0b21pY19kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvcikKPiAgCV9fZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZShj b25uZWN0b3IsICZuZXdfc3RhdGUtPmJhc2UpOwo+ICAKPiAgCW5ld19zdGF0ZS0+ZnJlZXN5bmNf Y2FwYWJsZSA9IHN0YXRlLT5mcmVlc3luY19jYXBhYmxlOwo+IC0JbmV3X3N0YXRlLT5mcmVlc3lu Y19lbmFibGUgPSBzdGF0ZS0+ZnJlZXN5bmNfZW5hYmxlOwo+IC0KPiAgCXJldHVybiAmbmV3X3N0 YXRlLT5iYXNlOwo+ICB9Cj4gIAo+IEBAIC0zODAwLDYgKzM3MzIsMTEgQEAgdm9pZCBhbWRncHVf ZG1fY29ubmVjdG9yX2luaXRfaGVscGVyKHN0cnVjdCBhbWRncHVfZGlzcGxheV9tYW5hZ2VyICpk bSwKPiAgCQkJCWFkZXYtPm1vZGVfaW5mby51bmRlcnNjYW5fdmJvcmRlcl9wcm9wZXJ0eSwKPiAg CQkJCTApOwo+ICAKPiArCWlmIChjb25uZWN0b3JfdHlwZSA9PSBEUk1fTU9ERV9DT05ORUNUT1Jf SERNSUEgfHwKPiArCSAgICBjb25uZWN0b3JfdHlwZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfRGlz cGxheVBvcnQpIHsKPiArCQlkcm1fY29ubmVjdG9yX2F0dGFjaF92cnJfY2FwYWJsZV9wcm9wZXJ0 eSgKPiArCQkJJmFjb25uZWN0b3ItPmJhc2UpOwo+ICsJfQo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50 IGFtZGdwdV9kbV9pMmNfeGZlcihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmkyY19hZGFwLAo+IEBAIC00 MTc2LDYgKzQxMTMsNzcgQEAgc3RhdGljIHZvaWQgcHJlcGFyZV9mbGlwX2lzcihzdHJ1Y3QgYW1k Z3B1X2NydGMgKmFjcnRjKQo+ICAJCQkJCQkgYWNydGMtPmNydGNfaWQpOwo+ICB9Cj4gIAo+ICtz dGF0aWMgdm9pZCB1cGRhdGVfZnJlZXN5bmNfc3RhdGVfb25fc3RyZWFtKAo+ICsJc3RydWN0IGFt ZGdwdV9kaXNwbGF5X21hbmFnZXIgKmRtLAo+ICsJc3RydWN0IGRtX2NydGNfc3RhdGUgKm5ld19j cnRjX3N0YXRlLAo+ICsJc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqbmV3X3N0cmVhbSkKPiArewo+ ICsJc3RydWN0IG1vZF92cnJfcGFyYW1zIHZyciA9IHswfTsKPiArCXN0cnVjdCBkY19pbmZvX3Bh Y2tldCB2cnJfaW5mb3BhY2tldCA9IHswfTsKPiArCXN0cnVjdCBtb2RfZnJlZXN5bmNfY29uZmln IGNvbmZpZyA9IG5ld19jcnRjX3N0YXRlLT5mcmVlc3luY19jb25maWc7Cj4gKwo+ICsJaWYgKCFu ZXdfc3RyZWFtKQo+ICsJCXJldHVybjsKPiArCj4gKwkvKgo+ICsJICogVE9ETzogRGV0ZXJtaW5l IHdoeSBtaW4vbWF4IHRvdGFscyBhbmQgdnJlZnJlc2ggY2FuIGJlIDAgaGVyZS4KPiArCSAqIEZv ciBub3cgaXQncyBzdWZmaWNpZW50IHRvIGp1c3QgZ3VhcmQgYWdhaW5zdCB0aGVzZSBjb25kaXRp b25zLgo+ICsJICovCj4gKwo+ICsJaWYgKCFuZXdfc3RyZWFtLT50aW1pbmcuaF90b3RhbCB8fCAh bmV3X3N0cmVhbS0+dGltaW5nLnZfdG90YWwpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWlmIChuZXdf Y3J0Y19zdGF0ZS0+dnJyX3N1cHBvcnRlZCAmJgo+ICsJICAgIGNvbmZpZy5taW5fcmVmcmVzaF9p bl91aHogJiYKPiArCSAgICBjb25maWcubWF4X3JlZnJlc2hfaW5fdWh6KSB7Cj4gKwkJY29uZmln LnN0YXRlID0gbmV3X2NydGNfc3RhdGUtPmJhc2UudnJyX2VuYWJsZWQgPwo+ICsJCQlWUlJfU1RB VEVfQUNUSVZFX1ZBUklBQkxFIDoKPiArCQkJVlJSX1NUQVRFX0lOQUNUSVZFOwo+ICsJfSBlbHNl IHsKPiArCQljb25maWcuc3RhdGUgPSBWUlJfU1RBVEVfVU5TVVBQT1JURUQ7Cj4gKwl9Cj4gKwo+ ICsJbW9kX2ZyZWVzeW5jX2J1aWxkX3Zycl9wYXJhbXMoZG0tPmZyZWVzeW5jX21vZHVsZSwKPiAr CQkJCSAgICAgIG5ld19zdHJlYW0sCj4gKwkJCQkgICAgICAmY29uZmlnLCAmdnJyKTsKPiArCj4g Kwltb2RfZnJlZXN5bmNfYnVpbGRfdnJyX2luZm9wYWNrZXQoCj4gKwkJZG0tPmZyZWVzeW5jX21v ZHVsZSwKPiArCQluZXdfc3RyZWFtLAo+ICsJCSZ2cnIsCj4gKwkJcGFja2V0X3R5cGVfdnJyLAo+ ICsJCXRyYW5zZmVyX2Z1bmNfdW5rbm93biwKPiArCQkmdnJyX2luZm9wYWNrZXQpOwo+ICsKPiAr CW5ld19jcnRjX3N0YXRlLT5mcmVlc3luY190aW1pbmdfY2hhbmdlZCA9Cj4gKwkJKG1lbWNtcCgm bmV3X2NydGNfc3RhdGUtPmFkanVzdCwKPiArCQkJJnZyci5hZGp1c3QsCj4gKwkJCXNpemVvZih2 cnIuYWRqdXN0KSkgIT0gMCk7Cj4gKwo+ICsJbmV3X2NydGNfc3RhdGUtPmZyZWVzeW5jX3Zycl9p bmZvX2NoYW5nZWQgPQo+ICsJCShtZW1jbXAoJm5ld19jcnRjX3N0YXRlLT52cnJfaW5mb3BhY2tl dCwKPiArCQkJJnZycl9pbmZvcGFja2V0LAo+ICsJCQlzaXplb2YodnJyX2luZm9wYWNrZXQpKSAh PSAwKTsKPiArCj4gKwluZXdfY3J0Y19zdGF0ZS0+YWRqdXN0ID0gdnJyLmFkanVzdDsKPiArCW5l d19jcnRjX3N0YXRlLT52cnJfaW5mb3BhY2tldCA9IHZycl9pbmZvcGFja2V0Owo+ICsKPiArCW5l d19zdHJlYW0tPmFkanVzdCA9IG5ld19jcnRjX3N0YXRlLT5hZGp1c3Q7Cj4gKwluZXdfc3RyZWFt LT52cnJfaW5mb3BhY2tldCA9IHZycl9pbmZvcGFja2V0Owo+ICsKPiArCWlmIChuZXdfY3J0Y19z dGF0ZS0+ZnJlZXN5bmNfdnJyX2luZm9fY2hhbmdlZCkKPiArCQlEUk1fREVCVUdfS01TKCJWUlIg cGFja2V0IHVwZGF0ZTogY3J0Yz0ldSBlbmFibGVkPSVkIHN0YXRlPSVkIiwKPiArCQkJICAgICAg bmV3X2NydGNfc3RhdGUtPmJhc2UuY3J0Yy0+YmFzZS5pZCwKPiArCQkJICAgICAgKGludCluZXdf Y3J0Y19zdGF0ZS0+YmFzZS52cnJfZW5hYmxlZCwKPiArCQkJICAgICAgKGludCl2cnIuc3RhdGUp Owo+ICsKPiArCWlmIChuZXdfY3J0Y19zdGF0ZS0+ZnJlZXN5bmNfdGltaW5nX2NoYW5nZWQpCj4g KwkJRFJNX0RFQlVHX0tNUygiVlJSIHRpbWluZyB1cGRhdGU6IGNydGM9JXUgbWluPSV1IG1heD0l dVxuIiwKPiArCQkJICAgICAgbmV3X2NydGNfc3RhdGUtPmJhc2UuY3J0Yy0+YmFzZS5pZCwKPiAr CQkJICAgICAgdnJyLmFkanVzdC52X3RvdGFsX21pbiwKPiArCQkJICAgICAgdnJyLmFkanVzdC52 X3RvdGFsX21heCk7Cj4gK30KPiArCj4gIC8qCj4gICAqIEV4ZWN1dGVzIGZsaXAKPiAgICoKPiBA QCAtNDE5Nyw2ICs0MjA1LDcgQEAgc3RhdGljIHZvaWQgYW1kZ3B1X2RtX2RvX2ZsaXAoc3RydWN0 IGRybV9jcnRjICpjcnRjLAo+ICAJc3RydWN0IGRjX2ZsaXBfYWRkcnMgYWRkciA9IHsgezB9IH07 Cj4gIAkvKiBUT0RPIGVsaW1pbmF0ZSBvciByZW5hbWUgc3VyZmFjZV91cGRhdGUgKi8KPiAgCXN0 cnVjdCBkY19zdXJmYWNlX3VwZGF0ZSBzdXJmYWNlX3VwZGF0ZXNbMV0gPSB7IHswfSB9Owo+ICsJ c3RydWN0IGRjX3N0cmVhbV91cGRhdGUgc3RyZWFtX3VwZGF0ZSA9IHswfTsKPiAgCXN0cnVjdCBk bV9jcnRjX3N0YXRlICphY3J0Y19zdGF0ZSA9IHRvX2RtX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUp Owo+ICAJc3RydWN0IGRjX3N0cmVhbV9zdGF0dXMgKnN0cmVhbV9zdGF0dXM7Cj4gIAo+IEBAIC00 MjY5LDExICs0Mjc4LDI2IEBAIHN0YXRpYyB2b2lkIGFtZGdwdV9kbV9kb19mbGlwKHN0cnVjdCBk cm1fY3J0YyAqY3J0YywKPiAgCX0KPiAgCXN1cmZhY2VfdXBkYXRlcy0+ZmxpcF9hZGRyID0gJmFk ZHI7Cj4gIAo+ICsJaWYgKGFjcnRjX3N0YXRlLT5zdHJlYW0pIHsKPiArCQl1cGRhdGVfZnJlZXN5 bmNfc3RhdGVfb25fc3RyZWFtKAo+ICsJCQkmYWRldi0+ZG0sCj4gKwkJCWFjcnRjX3N0YXRlLAo+ ICsJCQlhY3J0Y19zdGF0ZS0+c3RyZWFtKTsKPiArCj4gKwkJaWYgKGFjcnRjX3N0YXRlLT5mcmVl c3luY190aW1pbmdfY2hhbmdlZCkKPiArCQkJc3RyZWFtX3VwZGF0ZS5hZGp1c3QgPQo+ICsJCQkJ JmFjcnRjX3N0YXRlLT5zdHJlYW0tPmFkanVzdDsKPiArCj4gKwkJaWYgKGFjcnRjX3N0YXRlLT5m cmVlc3luY192cnJfaW5mb19jaGFuZ2VkKQo+ICsJCQlzdHJlYW1fdXBkYXRlLnZycl9pbmZvcGFj a2V0ID0KPiArCQkJCSZhY3J0Y19zdGF0ZS0+c3RyZWFtLT52cnJfaW5mb3BhY2tldDsKPiArCX0K PiArCgpGb3IgY29uc2lzdGVuY3kgd2UgbWlnaHQgYWxzbyB3YW50IHRvIGRvIHRoaXMgaW4gY29t bWl0X3BsYW5lc190b19zdHJlYW0gYmVmb3JlIHRoZSBjYWxsIHRvIGRjX2NvbW1pdF91cGRhdGVz X2Zvcl9zdHJlYW0uCgpXZSBzaG91bGQgcmVhbGx5IG1lcmdlIHRoZSB0d28gY29kZXBhdGhzIGZv ciBkY19jb21taXRfdXBkYXRlc19mb3Jfc3RyZWFtIG9uZSBvZiB0aGVzZSBkYXlzLgoKPiAgCWRj X2NvbW1pdF91cGRhdGVzX2Zvcl9zdHJlYW0oYWRldi0+ZG0uZGMsCj4gIAkJCQkJICAgICBzdXJm YWNlX3VwZGF0ZXMsCj4gIAkJCQkJICAgICAxLAo+ICAJCQkJCSAgICAgYWNydGNfc3RhdGUtPnN0 cmVhbSwKPiAtCQkJCQkgICAgIE5VTEwsCj4gKwkJCQkJICAgICAmc3RyZWFtX3VwZGF0ZSwKPiAg CQkJCQkgICAgICZzdXJmYWNlX3VwZGF0ZXMtPnN1cmZhY2UsCj4gIAkJCQkJICAgICBzdGF0ZSk7 Cj4gIAo+IEBAIC00MzMzLDExICs0MzU3LDYgQEAgc3RhdGljIGJvb2wgY29tbWl0X3BsYW5lc190 b19zdHJlYW0oCj4gIAlzdHJlYW1fdXBkYXRlLT5kc3QgPSBkY19zdHJlYW0tPmRzdDsKPiAgCXN0 cmVhbV91cGRhdGUtPm91dF90cmFuc2Zlcl9mdW5jID0gZGNfc3RyZWFtLT5vdXRfdHJhbnNmZXJf ZnVuYzsKPiAgCj4gLQlpZiAoZG1fbmV3X2NydGNfc3RhdGUtPmZyZWVzeW5jX2VuYWJsZWQgIT0g ZG1fb2xkX2NydGNfc3RhdGUtPmZyZWVzeW5jX2VuYWJsZWQpIHsKPiAtCQlzdHJlYW1fdXBkYXRl LT52cnJfaW5mb3BhY2tldCA9ICZkY19zdHJlYW0tPnZycl9pbmZvcGFja2V0Owo+IC0JCXN0cmVh bV91cGRhdGUtPmFkanVzdCA9ICZkY19zdHJlYW0tPmFkanVzdDsKPiAtCX0KPiAtCj4gIAlmb3Ig KGkgPSAwOyBpIDwgbmV3X3BsYW5lX2NvdW50OyBpKyspIHsKPiAgCQl1cGRhdGVzW2ldLnN1cmZh Y2UgPSBwbGFuZV9zdGF0ZXNbaV07Cj4gIAkJdXBkYXRlc1tpXS5nYW1tYSA9Cj4gQEAgLTQ0NzMs OSArNDQ5Miw2IEBAIHN0YXRpYyB2b2lkIGFtZGdwdV9kbV9jb21taXRfcGxhbmVzKHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcGNy dGMtPmRldi0+ZXZlbnRfbG9jaywgZmxhZ3MpOwo+ICAJCX0KPiAgCj4gLQkJZGNfc3RyZWFtX2F0 dGFjaC0+YWRqdXN0ID0gYWNydGNfc3RhdGUtPmFkanVzdDsKPiAtCQlkY19zdHJlYW1fYXR0YWNo LT52cnJfaW5mb3BhY2tldCA9IGFjcnRjX3N0YXRlLT52cnJfaW5mb3BhY2tldDsKPiAtCj4gIAkJ aWYgKGZhbHNlID09IGNvbW1pdF9wbGFuZXNfdG9fc3RyZWFtKGRtLT5kYywKPiAgCQkJCQkJCXBs YW5lX3N0YXRlc19jb25zdHJ1Y3RlZCwKPiAgCQkJCQkJCXBsYW5lc19jb3VudCwKPiBAQCAtNDY3 OSw5ICs0Njk1LDYgQEAgc3RhdGljIHZvaWQgYW1kZ3B1X2RtX2F0b21pY19jb21taXRfdGFpbChz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAkJV0FSTl9PTighc3RhdHVzKTsKPiAg CQlXQVJOX09OKCFzdGF0dXMtPnBsYW5lX2NvdW50KTsKPiAgCj4gLQkJZG1fbmV3X2NydGNfc3Rh dGUtPnN0cmVhbS0+YWRqdXN0ID0gZG1fbmV3X2NydGNfc3RhdGUtPmFkanVzdDsKPiAtCQlkbV9u ZXdfY3J0Y19zdGF0ZS0+c3RyZWFtLT52cnJfaW5mb3BhY2tldCA9IGRtX25ld19jcnRjX3N0YXRl LT52cnJfaW5mb3BhY2tldDsKPiAtCj4gIAkJLypUT0RPIEhvdyBpdCB3b3JrcyB3aXRoIE1QTyA/ Ki8KPiAgCQlpZiAoIWNvbW1pdF9wbGFuZXNfdG9fc3RyZWFtKAo+ICAJCQkJZG0tPmRjLAo+IEBA IC00ODk5LDIwICs0OTEyLDE4IEBAIHN0YXRpYyBpbnQgZG9fYXF1aXJlX2dsb2JhbF9sb2NrKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlyZXR1cm4gcmV0IDwgMCA/IHJldCA6IDA7Cj4gIH0K PiAgCj4gLXZvaWQgc2V0X2ZyZWVzeW5jX29uX3N0cmVhbShzdHJ1Y3QgYW1kZ3B1X2Rpc3BsYXlf bWFuYWdlciAqZG0sCj4gLQkJCSAgICBzdHJ1Y3QgZG1fY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3Rh dGUsCj4gLQkJCSAgICBzdHJ1Y3QgZG1fY29ubmVjdG9yX3N0YXRlICpuZXdfY29uX3N0YXRlLAo+ IC0JCQkgICAgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqbmV3X3N0cmVhbSkKPiArc3RhdGljIHZv aWQgZ2V0X2ZyZWVzeW5jX2NvbmZpZ19mb3JfY3J0YygKPiArCXN0cnVjdCBkbV9jcnRjX3N0YXRl ICpuZXdfY3J0Y19zdGF0ZSwKPiArCXN0cnVjdCBkbV9jb25uZWN0b3Jfc3RhdGUgKm5ld19jb25f c3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBtb2RfZnJlZXN5bmNfY29uZmlnIGNvbmZpZyA9IHswfTsK PiAtCXN0cnVjdCBtb2RfdnJyX3BhcmFtcyB2cnIgPSB7MH07Cj4gLQlzdHJ1Y3QgZGNfaW5mb19w YWNrZXQgdnJyX2luZm9wYWNrZXQgPSB7MH07Cj4gIAlzdHJ1Y3QgYW1kZ3B1X2RtX2Nvbm5lY3Rv ciAqYWNvbm5lY3RvciA9Cj4gIAkJCXRvX2FtZGdwdV9kbV9jb25uZWN0b3IobmV3X2Nvbl9zdGF0 ZS0+YmFzZS5jb25uZWN0b3IpOwo+ICAKPiAtCWlmIChuZXdfY29uX3N0YXRlLT5mcmVlc3luY19j YXBhYmxlICYmCj4gLQkgICAgbmV3X2Nvbl9zdGF0ZS0+ZnJlZXN5bmNfZW5hYmxlKSB7Cj4gLQkJ Y29uZmlnLnN0YXRlID0gbmV3X2NydGNfc3RhdGUtPmZyZWVzeW5jX2VuYWJsZWQgPwo+ICsJbmV3 X2NydGNfc3RhdGUtPnZycl9zdXBwb3J0ZWQgPSBuZXdfY29uX3N0YXRlLT5mcmVlc3luY19jYXBh YmxlOwo+ICsKPiArCWlmIChuZXdfY29uX3N0YXRlLT5mcmVlc3luY19jYXBhYmxlKSB7Cj4gKwkJ Y29uZmlnLnN0YXRlID0gbmV3X2NydGNfc3RhdGUtPmJhc2UudnJyX2VuYWJsZWQgPwo+ICAJCQkJ VlJSX1NUQVRFX0FDVElWRV9WQVJJQUJMRSA6Cj4gIAkJCQlWUlJfU1RBVEVfSU5BQ1RJVkU7Cj4g IAkJY29uZmlnLm1pbl9yZWZyZXNoX2luX3VoeiA9Cj4gQEAgLTQ5MjIsMTkgKzQ5MzMsMTggQEAg dm9pZCBzZXRfZnJlZXN5bmNfb25fc3RyZWFtKHN0cnVjdCBhbWRncHVfZGlzcGxheV9tYW5hZ2Vy ICpkbSwKPiAgCQljb25maWcudnNpZl9zdXBwb3J0ZWQgPSB0cnVlOwo+ICAJfQo+ICAKPiAtCW1v ZF9mcmVlc3luY19idWlsZF92cnJfcGFyYW1zKGRtLT5mcmVlc3luY19tb2R1bGUsCj4gLQkJCQkg ICAgICBuZXdfc3RyZWFtLAo+IC0JCQkJICAgICAgJmNvbmZpZywgJnZycik7Cj4gKwluZXdfY3J0 Y19zdGF0ZS0+ZnJlZXN5bmNfY29uZmlnID0gY29uZmlnOwo+ICt9Cj4gIAo+IC0JbW9kX2ZyZWVz eW5jX2J1aWxkX3Zycl9pbmZvcGFja2V0KGRtLT5mcmVlc3luY19tb2R1bGUsCj4gLQkJCQkJICBu ZXdfc3RyZWFtLAo+IC0JCQkJCSAgJnZyciwKPiAtCQkJCQkgIHBhY2tldF90eXBlX2ZzMSwKPiAt CQkJCQkgIE5VTEwsCj4gLQkJCQkJICAmdnJyX2luZm9wYWNrZXQpOwo+ICtzdGF0aWMgdm9pZCBy ZXNldF9mcmVlc3luY19jb25maWdfZm9yX2NydGMoCj4gKwlzdHJ1Y3QgZG1fY3J0Y19zdGF0ZSAq bmV3X2NydGNfc3RhdGUpCj4gK3sKPiArCW5ld19jcnRjX3N0YXRlLT52cnJfc3VwcG9ydGVkID0g ZmFsc2U7Cj4gIAo+IC0JbmV3X2NydGNfc3RhdGUtPmFkanVzdCA9IHZyci5hZGp1c3Q7Cj4gLQlu ZXdfY3J0Y19zdGF0ZS0+dnJyX2luZm9wYWNrZXQgPSB2cnJfaW5mb3BhY2tldDsKPiArCW1lbXNl dCgmbmV3X2NydGNfc3RhdGUtPmFkanVzdCwgMCwKPiArCSAgICAgICBzaXplb2YobmV3X2NydGNf c3RhdGUtPmFkanVzdCkpOwo+ICsJbWVtc2V0KCZuZXdfY3J0Y19zdGF0ZS0+dnJyX2luZm9wYWNr ZXQsIDAsCj4gKwkgICAgICAgc2l6ZW9mKG5ld19jcnRjX3N0YXRlLT52cnJfaW5mb3BhY2tldCkp Owo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IGRtX3VwZGF0ZV9jcnRjc19zdGF0ZShzdHJ1Y3QgYW1k Z3B1X2Rpc3BsYXlfbWFuYWdlciAqZG0sCj4gQEAgLTUwMDksOSArNTAxOSw2IEBAIHN0YXRpYyBp bnQgZG1fdXBkYXRlX2NydGNzX3N0YXRlKHN0cnVjdCBhbWRncHVfZGlzcGxheV9tYW5hZ2VyICpk bSwKPiAgCQkJCWJyZWFrOwo+ICAJCQl9Cj4gIAo+IC0JCQlzZXRfZnJlZXN5bmNfb25fc3RyZWFt KGRtLCBkbV9uZXdfY3J0Y19zdGF0ZSwKPiAtCQkJCQkgICAgICAgZG1fbmV3X2Nvbm5fc3RhdGUs IG5ld19zdHJlYW0pOwo+IC0KPiAgCQkJaWYgKGRjX2lzX3N0cmVhbV91bmNoYW5nZWQobmV3X3N0 cmVhbSwgZG1fb2xkX2NydGNfc3RhdGUtPnN0cmVhbSkgJiYKPiAgCQkJICAgIGRjX2lzX3N0cmVh bV9zY2FsaW5nX3VuY2hhbmdlZChuZXdfc3RyZWFtLCBkbV9vbGRfY3J0Y19zdGF0ZS0+c3RyZWFt KSkgewo+ICAJCQkJbmV3X2NydGNfc3RhdGUtPm1vZGVfY2hhbmdlZCA9IGZhbHNlOwo+IEBAIC01 MDIwLDkgKzUwMjcsNiBAQCBzdGF0aWMgaW50IGRtX3VwZGF0ZV9jcnRjc19zdGF0ZShzdHJ1Y3Qg YW1kZ3B1X2Rpc3BsYXlfbWFuYWdlciAqZG0sCj4gIAkJCX0KPiAgCQl9Cj4gIAo+IC0JCWlmIChk bV9vbGRfY3J0Y19zdGF0ZS0+ZnJlZXN5bmNfZW5hYmxlZCAhPSBkbV9uZXdfY3J0Y19zdGF0ZS0+ ZnJlZXN5bmNfZW5hYmxlZCkKPiAtCQkJbmV3X2NydGNfc3RhdGUtPm1vZGVfY2hhbmdlZCA9IHRy dWU7Cj4gLQo+ICAJCWlmICghZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQobmV3X2NydGNf c3RhdGUpKQo+ICAJCQlnb3RvIG5leHRfY3J0YzsKPiAgCj4gQEAgLTUwNTksNiArNTA2Myw4IEBA IHN0YXRpYyBpbnQgZG1fdXBkYXRlX2NydGNzX3N0YXRlKHN0cnVjdCBhbWRncHVfZGlzcGxheV9t YW5hZ2VyICpkbSwKPiAgCQkJZGNfc3RyZWFtX3JlbGVhc2UoZG1fb2xkX2NydGNfc3RhdGUtPnN0 cmVhbSk7Cj4gIAkJCWRtX25ld19jcnRjX3N0YXRlLT5zdHJlYW0gPSBOVUxMOwo+ICAKPiArCQkJ cmVzZXRfZnJlZXN5bmNfY29uZmlnX2Zvcl9jcnRjKGRtX25ld19jcnRjX3N0YXRlKTsKPiArCj4g IAkJCSpsb2NrX2FuZF92YWxpZGF0aW9uX25lZWRlZCA9IHRydWU7Cj4gIAo+ICAJCX0gZWxzZSB7 LyogQWRkIHN0cmVhbSBmb3IgYW55IHVwZGF0ZWQvZW5hYmxlZCBDUlRDICovCj4gQEAgLTUxMzYs NyArNTE0Miw5IEBAIHN0YXRpYyBpbnQgZG1fdXBkYXRlX2NydGNzX3N0YXRlKHN0cnVjdCBhbWRn cHVfZGlzcGxheV9tYW5hZ2VyICpkbSwKPiAgCQkJYW1kZ3B1X2RtX3NldF9jdG0oZG1fbmV3X2Ny dGNfc3RhdGUpOwo+ICAJCX0KPiAgCj4gLQo+ICsJCS8qIFVwZGF0ZSBGcmVlc3luYyBzZXR0aW5n cy4gKi8KPiArCQlnZXRfZnJlZXN5bmNfY29uZmlnX2Zvcl9jcnRjKGRtX25ld19jcnRjX3N0YXRl LAo+ICsJCQkJCSAgICAgZG1fbmV3X2Nvbm5fc3RhdGUpOwo+ICAJfQo+ICAKPiAgCXJldHVybiBy ZXQ7Cj4gQEAgLTU0MDEsMTIgKzU0MDksOSBAQCBzdGF0aWMgaW50IGFtZGdwdV9kbV9hdG9taWNf Y2hlY2soc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQlnb3RvIGZhaWw7Cj4gIAo+ICAJZm9y X2VhY2hfb2xkbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBu ZXdfY3J0Y19zdGF0ZSwgaSkgewo+IC0JCXN0cnVjdCBkbV9jcnRjX3N0YXRlICpkbV9uZXdfY3J0 Y19zdGF0ZSA9IHRvX2RtX2NydGNfc3RhdGUobmV3X2NydGNfc3RhdGUpOwo+IC0JCXN0cnVjdCBk bV9jcnRjX3N0YXRlICpkbV9vbGRfY3J0Y19zdGF0ZSAgPSB0b19kbV9jcnRjX3N0YXRlKG9sZF9j cnRjX3N0YXRlKTsKPiAtCj4gIAkJaWYgKCFkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldChu ZXdfY3J0Y19zdGF0ZSkgJiYKPiAgCQkgICAgIW5ld19jcnRjX3N0YXRlLT5jb2xvcl9tZ210X2No YW5nZWQgJiYKPiAtCQkgICAgKGRtX29sZF9jcnRjX3N0YXRlLT5mcmVlc3luY19lbmFibGVkID09 IGRtX25ld19jcnRjX3N0YXRlLT5mcmVlc3luY19lbmFibGVkKSkKPiArCQkgICAgIW5ld19jcnRj X3N0YXRlLT52cnJfZW5hYmxlZCkKPiAgCQkJY29udGludWU7Cj4gIAo+ICAJCWlmICghbmV3X2Ny dGNfc3RhdGUtPmVuYWJsZSkKPiBAQCAtNTU1OCwxNCArNTU2MywxNSBAQCB2b2lkIGFtZGdwdV9k bV91cGRhdGVfZnJlZXN5bmNfY2FwcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ ICAJc3RydWN0IGRldGFpbGVkX2RhdGFfbW9uaXRvcl9yYW5nZSAqcmFuZ2U7Cj4gIAlzdHJ1Y3Qg YW1kZ3B1X2RtX2Nvbm5lY3RvciAqYW1kZ3B1X2RtX2Nvbm5lY3RvciA9Cj4gIAkJCXRvX2FtZGdw dV9kbV9jb25uZWN0b3IoY29ubmVjdG9yKTsKPiAtCXN0cnVjdCBkbV9jb25uZWN0b3Jfc3RhdGUg KmRtX2Nvbl9zdGF0ZTsKPiArCXN0cnVjdCBkbV9jb25uZWN0b3Jfc3RhdGUgKmRtX2Nvbl9zdGF0 ZSA9IE5VTEw7Cj4gIAo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+ZGV2 Owo+ICAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJ Ym9vbCBmcmVlc3luY19jYXBhYmxlID0gZmFsc2U7Cj4gIAo+ICAJaWYgKCFjb25uZWN0b3ItPnN0 YXRlKSB7Cj4gIAkJRFJNX0VSUk9SKCIlcyAtIENvbm5lY3RvciBoYXMgbm8gc3RhdGUiLCBfX2Z1 bmNfXyk7Cj4gLQkJcmV0dXJuOwo+ICsJCWdvdG8gdXBkYXRlOwo+ICAJfQo+ICAKPiAgCWlmICgh ZWRpZCkgewo+IEBAIC01NTc1LDkgKzU1ODEsNyBAQCB2b2lkIGFtZGdwdV9kbV91cGRhdGVfZnJl ZXN5bmNfY2FwcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAJCWFtZGdwdV9k bV9jb25uZWN0b3ItPm1heF92ZnJlcSA9IDA7Cj4gIAkJYW1kZ3B1X2RtX2Nvbm5lY3Rvci0+cGl4 ZWxfY2xvY2tfbWh6ID0gMDsKPiAgCj4gLQkJZG1fY29uX3N0YXRlLT5mcmVlc3luY19jYXBhYmxl ID0gZmFsc2U7Cj4gLQkJZG1fY29uX3N0YXRlLT5mcmVlc3luY19lbmFibGUgPSBmYWxzZTsKPiAt CQlyZXR1cm47Cj4gKwkJZ290byB1cGRhdGU7Cj4gIAl9Cj4gIAo+ICAJZG1fY29uX3N0YXRlID0g dG9fZG1fY29ubmVjdG9yX3N0YXRlKGNvbm5lY3Rvci0+c3RhdGUpOwo+IEBAIC01NTg1LDEwICs1 NTg5LDEwIEBAIHZvaWQgYW1kZ3B1X2RtX3VwZGF0ZV9mcmVlc3luY19jYXBzKHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IsCj4gIAllZGlkX2NoZWNrX3JlcXVpcmVkID0gZmFsc2U7Cj4g IAlpZiAoIWFtZGdwdV9kbV9jb25uZWN0b3ItPmRjX3NpbmspIHsKPiAgCQlEUk1fRVJST1IoImRj X3NpbmsgTlVMTCwgY291bGQgbm90IGFkZCBmcmVlX3N5bmMgbW9kdWxlLlxuIik7Cj4gLQkJcmV0 dXJuOwo+ICsJCWdvdG8gdXBkYXRlOwo+ICAJfQo+ICAJaWYgKCFhZGV2LT5kbS5mcmVlc3luY19t b2R1bGUpCj4gLQkJcmV0dXJuOwo+ICsJCWdvdG8gdXBkYXRlOwo+ICAJLyoKPiAgCSAqIGlmIGVk aWQgbm9uIHplcm8gcmVzdHJpY3QgZnJlZXN5bmMgb25seSBmb3IgZHAgYW5kIGVkcAo+ICAJICov Cj4gQEAgLTU2MDAsNyArNTYwNCw2IEBAIHZvaWQgYW1kZ3B1X2RtX3VwZGF0ZV9mcmVlc3luY19j YXBzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gIAkJCQkJCWFtZGdwdV9kbV9j b25uZWN0b3IpOwo+ICAJCX0KPiAgCX0KPiAtCWRtX2Nvbl9zdGF0ZS0+ZnJlZXN5bmNfY2FwYWJs ZSA9IGZhbHNlOwo+ICAJaWYgKGVkaWRfY2hlY2tfcmVxdWlyZWQgPT0gdHJ1ZSAmJiAoZWRpZC0+ dmVyc2lvbiA+IDEgfHwKPiAgCSAgIChlZGlkLT52ZXJzaW9uID09IDEgJiYgZWRpZC0+cmV2aXNp b24gPiAxKSkpIHsKPiAgCQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7Cj4gQEAgLTU2MzIsOCAr NTYzNSwxNiBAQCB2b2lkIGFtZGdwdV9kbV91cGRhdGVfZnJlZXN5bmNfY2FwcyhzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAJCWlmIChhbWRncHVfZG1fY29ubmVjdG9yLT5tYXhf dmZyZXEgLQo+ICAJCSAgICBhbWRncHVfZG1fY29ubmVjdG9yLT5taW5fdmZyZXEgPiAxMCkgewo+ ICAKPiAtCQkJZG1fY29uX3N0YXRlLT5mcmVlc3luY19jYXBhYmxlID0gdHJ1ZTsKPiArCQkJZnJl ZXN5bmNfY2FwYWJsZSA9IHRydWU7Cj4gIAkJfQo+ICAJfQo+ICsKPiArdXBkYXRlOgo+ICsJaWYg KGRtX2Nvbl9zdGF0ZSkKPiArCQlkbV9jb25fc3RhdGUtPmZyZWVzeW5jX2NhcGFibGUgPSBmcmVl c3luY19jYXBhYmxlOwo+ICsKCkludGVyZXN0aW5nLiBMb29rcyBsaWtlIHdlIGNvdWxkIGp1c3Qg Z3JhYiB0aGlzIGZyb20gdGhlIGRybV9jb25uZWN0b3IgcHJvcGVydHkgYXMgdGhpcyBpc24ndCBz b21ldGhpbmcgdGhhdCBjaGFuZ2VzIHdpdGggdGhlIHN0YXRlIGJ1dCBEUk0gZm9yY2VzIHVzIHRv IHRyYWNrIGl0IG9uIHRoZSBjb25uZWN0b3Igc3RhdGUgYXMgZHJtX29iamVjdF9wcm9wZXJ0eV9n ZXRfdmFsdWUoKSB0aHJvd3MgYSBXQVJOX09OIGZvciBhdG9taWMgZHJpdmVycy4gTm90IHN1cmUg SSBsaWtlIGl0IGJ1dCBpdCdzIHdoYXQgd2UgZ290LCBJIGd1ZXNzLgoKSGFycnkKCj4gKwlpZiAo Y29ubmVjdG9yLT52cnJfY2FwYWJsZV9wcm9wZXJ0eSkKPiArCQlkcm1fY29ubmVjdG9yX3NldF92 cnJfY2FwYWJsZV9wcm9wZXJ0eShjb25uZWN0b3IsCj4gKwkJCQkJCSAgICAgICBmcmVlc3luY19j YXBhYmxlKTsKPiAgfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNw bGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9h bWRncHVfZG0vYW1kZ3B1X2RtLmgKPiBpbmRleCA5NzhiMzRhNTAxMWMuLmE1YWFmOGIwODk2OCAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdw dV9kbS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRn cHVfZG0uaAo+IEBAIC0xODUsNyArMTg1LDExIEBAIHN0cnVjdCBkbV9jcnRjX3N0YXRlIHsKPiAg CWludCBjcmNfc2tpcF9jb3VudDsKPiAgCWJvb2wgY3JjX2VuYWJsZWQ7Cj4gIAo+IC0JYm9vbCBm cmVlc3luY19lbmFibGVkOwo+ICsJYm9vbCBmcmVlc3luY190aW1pbmdfY2hhbmdlZDsKPiArCWJv b2wgZnJlZXN5bmNfdnJyX2luZm9fY2hhbmdlZDsKPiArCj4gKwlib29sIHZycl9zdXBwb3J0ZWQ7 Cj4gKwlzdHJ1Y3QgbW9kX2ZyZWVzeW5jX2NvbmZpZyBmcmVlc3luY19jb25maWc7Cj4gIAlzdHJ1 Y3QgZGNfY3J0Y190aW1pbmdfYWRqdXN0IGFkanVzdDsKPiAgCXN0cnVjdCBkY19pbmZvX3BhY2tl dCB2cnJfaW5mb3BhY2tldDsKPiAgfTsKPiBAQCAtMjA3LDcgKzIxMSw2IEBAIHN0cnVjdCBkbV9j b25uZWN0b3Jfc3RhdGUgewo+ICAJdWludDhfdCB1bmRlcnNjYW5fdmJvcmRlcjsKPiAgCXVpbnQ4 X3QgdW5kZXJzY2FuX2hib3JkZXI7Cj4gIAlib29sIHVuZGVyc2Nhbl9lbmFibGU7Cj4gLQlib29s IGZyZWVzeW5jX2VuYWJsZTsKPiAgCWJvb2wgZnJlZXN5bmNfY2FwYWJsZTsKPiAgfTsKPiAgCj4g Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZngg bWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=