From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kazlauskas, Nicholas" Subject: Re: [PATCH v4 4/4] drm/amd/display: Set FreeSync state using drm VRR properties Date: Thu, 11 Oct 2018 16:56:58 -0400 Message-ID: References: <20181011163942.28267-1-nicholas.kazlauskas@amd.com> <20181011163942.28267-5-nicholas.kazlauskas@amd.com> <42b237df-9c30-4cd0-0891-d0b05b54533e@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <42b237df-9c30-4cd0-0891-d0b05b54533e-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: Harry Wentland , 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 T24gMTAvMTEvMjAxOCAwNDozOSBQTSwgSGFycnkgV2VudGxhbmQgd3JvdGU6Cj4gT24gMjAxOC0x MC0xMSAxMjozOSBQTSwgTmljaG9sYXMgS2F6bGF1c2thcyB3cm90ZToKPj4gU3VwcG9ydCBmb3Ig QU1ER1BVIHNwZWNpZmljIEZyZWVTeW5jIHByb3BlcnRpZXMgYW5kIGlvY3RscyBhcmUgZHJvcHBl ZAo+PiBmcm9tIGFtZGdwdV9kbSBpbiBmYXZvciBvZiBzdXBwb3J0aW5nIGRybSB2YXJpYWJsZSBy ZWZyZXNoIHJhdGUKPj4gcHJvcGVydGllcy4KPj4KPj4gVGhlIGRybSB2cnJfY2FwYWJsZSBwcm9w ZXJ0eSBpcyBub3cgYXR0YWNoZWQgdG8gYW55IERQL0hETUkgY29ubmVjdG9yLgo+PiBJdHMgdmFs dWUgaXMgdXBkYXRlZCBhY2NvcmRpbmdseSB0byB0aGUgY29ubmVjdG9yJ3MgRnJlZVN5bmMgY2Fw YWJpbHRpeS4KPj4KPj4gVGhlIGZyZWVzeW5jX2VuYWJsZSBsb2dpYyBhbmQgaW9jdGwgY29udHJv bCBoYXMgaGFzIGJlZW4gZHJvcHBlZCBpbgo+PiBmYXZvciBvZiB1dGlsaXppbmcgdGhlIHZycl9l bmFibGVkIG9uIHRoZSBkcm0gQ1JUQy4gVGhpcyBhbGxvd3MgZm9yIG1vcmUKPj4gZmluZSBncmFp bmVkIGF0b21pYyBjb250cm9sIG92ZXIgd2hpY2ggQ1JUQ3Mgc2hvdWxkIHN1cHBvcnQgdmFyaWFi bGUKPj4gcmVmcmVzaCByYXRlLgo+Pgo+PiBUbyBoYW5kbGUgc3RhdGUgY2hhbmdlcyBmb3IgdnJy X2VuYWJsZWQgaXQgd2FzIGVhc2llc3QgdG8gZHJvcCB0aGUKPj4gZm9yY2VkIG1vZGVzZXQgb24g ZnJlZXN5bmNfZW5hYmxlZCBjaGFuZ2UuIFRoaXMgcGF0Y2ggbm93IHBlcmZvcm1zIHRoZQo+PiBy ZXF1aXJlZCBzdHJlYW0gdXBkYXRlcyB3aGVuIHBsYW5lcyBhcmUgZmxpcHBlZC4KPj4KPj4gVGhp cyBpcyBkb25lIGZvciBhIGZldyByZWFzb25zOgo+Pgo+PiAoMSkgVlJSIHN0cmVhbSB1cGRhdGVz IGNhbiBiZSBkb25lIGluIHRoZSBmYXN0IHVwZGF0ZSBwYXRoCj4+Cj4+ICgyKSBhbWRncHVfZG1f YXRvbWljX2NoZWNrIHdvdWxkIG5lZWQgdG8gYmUgaGFja2VkIGFwYXJ0IHRvIGNoZWNrCj4+ICAg ICAgZGVzaXJlZCB2YXJpYWJsZSByZWZyZXNoIHN0YXRlIGFuZCBjYXBhYmlsaXR5IGJlZm9yZSB0 aGUgQ1JUQwo+PiAgICAgIGRpc2FibGUgcGFzcy4KPj4KPj4gKDMpIFBlcmZvcm1pbmcgVlJSIHN0 cmVhbSB1cGRhdGVzIG9uLWZsaXAgaXMgbmVlZGVkIGZvciBlbmFibGluZyBCVFIKPj4gICAgICBz dXBwb3J0Lgo+Pgo+PiBWUlIgcGFja2V0cyBhbmQgdGltaW5nIGFkanVzdG1lbnRzIGFyZSBub3cg dHJhY2tlZCBhbmQgY29tcGFyZWQgdG8KPj4gcHJldmlvdXMgdmFsdWVzIHNlbnQgdG8gdGhlIGhh cmR3YXJlLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBOaWNob2xhcyBLYXpsYXVza2FzIDxuaWNob2xh cy5rYXpsYXVza2FzQGFtZC5jb20+Cj4+IC0tLQo+PiAgIC4uLi9ncHUvZHJtL2FtZC9kaXNwbGF5 L2FtZGdwdV9kbS9hbWRncHVfZG0uYyB8IDI1NSArKysrKysrKystLS0tLS0tLS0KPj4gICAuLi4v Z3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmggfCAgIDcgKy0KPj4gICAy IGZpbGVzIGNoYW5nZWQsIDEzOCBpbnNlcnRpb25zKCspLCAxMjQgZGVsZXRpb25zKC0pCj4+Cj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdw dV9kbS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0u Ywo+PiBpbmRleCA2YTIzNDJkNzI3NDIuLmQ1ZGU0YjkxZTE0NCAxMDA2NDQKPj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYwo+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jCj4+IEBAIC0x ODAyLDcyICsxODAyLDYgQEAgc3RhdGljIHZvaWQgZG1fYmFuZHdpZHRoX3VwZGF0ZShzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldikKPj4gICAJLyogVE9ETzogaW1wbGVtZW50IGxhdGVyICovCj4+ ICAgfQo+PiAgIAo+PiAtc3RhdGljIGludCBhbWRncHVfbm90aWZ5X2ZyZWVzeW5jKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4+IC0JCQkJc3RydWN0IGRybV9maWxlICpmaWxw KQo+PiAtewo+PiAtCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsKPj4gLQlzdHJ1Y3Qg ZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggY3R4Owo+PiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsK Pj4gLQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwo+PiAtCXN0cnVjdCBkcm1fY29u bmVjdG9yX3N0YXRlICpvbGRfY29uX3N0YXRlLCAqbmV3X2Nvbl9zdGF0ZTsKPj4gLQlpbnQgcmV0 ID0gMDsKPj4gLQl1aW50OF90IGk7Cj4+IC0JYm9vbCBlbmFibGUgPSBmYWxzZTsKPj4gLQo+PiAt CWRybV9tb2Rlc2V0X2FjcXVpcmVfaW5pdCgmY3R4LCAwKTsKPj4gLQo+PiAtCXN0YXRlID0gZHJt X2F0b21pY19zdGF0ZV9hbGxvYyhkZXYpOwo+PiAtCWlmICghc3RhdGUpIHsKPj4gLQkJcmV0ID0g LUVOT01FTTsKPj4gLQkJZ290byBvdXQ7Cj4+IC0JfQo+PiAtCXN0YXRlLT5hY3F1aXJlX2N0eCA9 ICZjdHg7Cj4+IC0KPj4gLXJldHJ5Ogo+PiAtCWRybV9mb3JfZWFjaF9jcnRjKGNydGMsIGRldikg ewo+PiAtCQlyZXQgPSBkcm1fYXRvbWljX2FkZF9hZmZlY3RlZF9jb25uZWN0b3JzKHN0YXRlLCBj cnRjKTsKPj4gLQkJaWYgKHJldCkKPj4gLQkJCWdvdG8gZmFpbDsKPj4gLQo+PiAtCQkvKiBUT0RP IHJld29yayBhbWRncHVfZG1fY29tbWl0X3BsYW5lcyBzbyB3ZSBkb24ndCBuZWVkIHRoaXMgKi8K Pj4gLQkJcmV0ID0gZHJtX2F0b21pY19hZGRfYWZmZWN0ZWRfcGxhbmVzKHN0YXRlLCBjcnRjKTsK Pj4gLQkJaWYgKHJldCkKPj4gLQkJCWdvdG8gZmFpbDsKPj4gLQl9Cj4+IC0KPj4gLQlmb3JfZWFj aF9vbGRuZXdfY29ubmVjdG9yX2luX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IsIG9sZF9jb25fc3Rh dGUsIG5ld19jb25fc3RhdGUsIGkpIHsKPj4gLQkJc3RydWN0IGRtX2Nvbm5lY3Rvcl9zdGF0ZSAq ZG1fbmV3X2Nvbl9zdGF0ZSA9IHRvX2RtX2Nvbm5lY3Rvcl9zdGF0ZShuZXdfY29uX3N0YXRlKTsK Pj4gLQkJc3RydWN0IGRybV9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZTsKPj4gLQkJc3RydWN0 IGFtZGdwdV9jcnRjICphY3J0YyA9IHRvX2FtZGdwdV9jcnRjKGRtX25ld19jb25fc3RhdGUtPmJh c2UuY3J0Yyk7Cj4+IC0JCXN0cnVjdCBkbV9jcnRjX3N0YXRlICpkbV9uZXdfY3J0Y19zdGF0ZTsK Pj4gLQo+PiAtCQlpZiAoIWFjcnRjKSB7Cj4+IC0JCQlBU1NFUlQoMCk7Cj4+IC0JCQljb250aW51 ZTsKPj4gLQkJfQo+PiAtCj4+IC0JCW5ld19jcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfbmV3 X2NydGNfc3RhdGUoc3RhdGUsICZhY3J0Yy0+YmFzZSk7Cj4+IC0JCWRtX25ld19jcnRjX3N0YXRl ID0gdG9fZG1fY3J0Y19zdGF0ZShuZXdfY3J0Y19zdGF0ZSk7Cj4+IC0KPj4gLQkJZG1fbmV3X2Ny dGNfc3RhdGUtPmZyZWVzeW5jX2VuYWJsZWQgPSBlbmFibGU7Cj4+IC0JfQo+PiAtCj4+IC0JcmV0 ID0gZHJtX2F0b21pY19jb21taXQoc3RhdGUpOwo+PiAtCj4+IC1mYWlsOgo+PiAtCWlmIChyZXQg PT0gLUVERUFETEspIHsKPj4gLQkJZHJtX2F0b21pY19zdGF0ZV9jbGVhcihzdGF0ZSk7Cj4+IC0J CWRybV9tb2Rlc2V0X2JhY2tvZmYoJmN0eCk7Cj4+IC0JCWdvdG8gcmV0cnk7Cj4+IC0JfQo+PiAt Cj4+IC0JZHJtX2F0b21pY19zdGF0ZV9wdXQoc3RhdGUpOwo+PiAtCj4+IC1vdXQ6Cj4+IC0JZHJt X21vZGVzZXRfZHJvcF9sb2NrcygmY3R4KTsKPj4gLQlkcm1fbW9kZXNldF9hY3F1aXJlX2Zpbmko JmN0eCk7Cj4+IC0JcmV0dXJuIHJldDsKPj4gLX0KPj4gICAKPj4gICBzdGF0aWMgY29uc3Qgc3Ry dWN0IGFtZGdwdV9kaXNwbGF5X2Z1bmNzIGRtX2Rpc3BsYXlfZnVuY3MgPSB7Cj4+ICAgCS5iYW5k d2lkdGhfdXBkYXRlID0gZG1fYmFuZHdpZHRoX3VwZGF0ZSwgLyogY2FsbGVkIHVuY29uZGl0aW9u YWxseSAqLwo+PiBAQCAtMTg4MSw3ICsxODE1LDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhbWRn cHVfZGlzcGxheV9mdW5jcyBkbV9kaXNwbGF5X2Z1bmNzID0gewo+PiAgIAkJZG1fY3J0Y19nZXRf c2Nhbm91dHBvcywvKiBjYWxsZWQgdW5jb25kaXRpb25hbGx5ICovCj4+ICAgCS5hZGRfZW5jb2Rl ciA9IE5VTEwsIC8qIFZCSU9TIHBhcnNpbmcuIERBTCBkb2VzIGl0LiAqLwo+PiAgIAkuYWRkX2Nv bm5lY3RvciA9IE5VTEwsIC8qIFZCSU9TIHBhcnNpbmcuIERBTCBkb2VzIGl0LiAqLwo+PiAtCS5u b3RpZnlfZnJlZXN5bmMgPSBhbWRncHVfbm90aWZ5X2ZyZWVzeW5jLAo+IAo+IFBsZWFzZSBhbHNv IGRyb3AgZnJvbSBhbWRncHVfZGlzcGxheV9mdW5jcyBkZWZpbml0aW9uIGluIGFtZGdwdV9tb2Rl LmguIE1pZ2h0IHdhbnQgdG8gZHJvcCB0aGUgc2V0X2ZyZWVzeW5jX3Byb3BlcnR5IGZyb20gdGhl cmUgYXMgd2VsbC4KCk9oIHJpZ2h0LCBJIGZvcmdvdCBhYm91dCB0aG9zZS4gV2lsbCBkby4KCj4g Cj4+ICAgCj4+ICAgfTsKPj4gICAKPj4gQEAgLTI4MzQsNyArMjc2Nyw4IEBAIGRtX2NydGNfZHVw bGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPj4gICAKPj4gICAJc3RhdGUtPmFk anVzdCA9IGN1ci0+YWRqdXN0Owo+PiAgIAlzdGF0ZS0+dnJyX2luZm9wYWNrZXQgPSBjdXItPnZy cl9pbmZvcGFja2V0Owo+PiAtCXN0YXRlLT5mcmVlc3luY19lbmFibGVkID0gY3VyLT5mcmVlc3lu Y19lbmFibGVkOwo+PiArCXN0YXRlLT52cnJfc3VwcG9ydGVkID0gY3VyLT52cnJfc3VwcG9ydGVk Owo+PiArCXN0YXRlLT5mcmVlc3luY19jb25maWcgPSBjdXItPmZyZWVzeW5jX2NvbmZpZzsKPj4g ICAKPj4gICAJLyogVE9ETyBEdXBsaWNhdGUgZGNfc3RyZWFtIGFmdGVyIG9iamVjdHMgYXJlIHN0 cmVhbSBvYmplY3QgaXMgZmxhdHRlbmVkICovCj4+ICAgCj4+IEBAIC0zMDUzLDggKzI5ODcsNiBA QCBhbWRncHVfZG1fY29ubmVjdG9yX2F0b21pY19kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvcikKPj4gICAJX19kcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3Jf ZHVwbGljYXRlX3N0YXRlKGNvbm5lY3RvciwgJm5ld19zdGF0ZS0+YmFzZSk7Cj4+ICAgCj4+ICAg CW5ld19zdGF0ZS0+ZnJlZXN5bmNfY2FwYWJsZSA9IHN0YXRlLT5mcmVlc3luY19jYXBhYmxlOwo+ PiAtCW5ld19zdGF0ZS0+ZnJlZXN5bmNfZW5hYmxlID0gc3RhdGUtPmZyZWVzeW5jX2VuYWJsZTsK Pj4gLQo+PiAgIAlyZXR1cm4gJm5ld19zdGF0ZS0+YmFzZTsKPj4gICB9Cj4+ICAgCj4+IEBAIC0z ODAwLDYgKzM3MzIsMTEgQEAgdm9pZCBhbWRncHVfZG1fY29ubmVjdG9yX2luaXRfaGVscGVyKHN0 cnVjdCBhbWRncHVfZGlzcGxheV9tYW5hZ2VyICpkbSwKPj4gICAJCQkJYWRldi0+bW9kZV9pbmZv LnVuZGVyc2Nhbl92Ym9yZGVyX3Byb3BlcnR5LAo+PiAgIAkJCQkwKTsKPj4gICAKPj4gKwlpZiAo Y29ubmVjdG9yX3R5cGUgPT0gRFJNX01PREVfQ09OTkVDVE9SX0hETUlBIHx8Cj4+ICsJICAgIGNv bm5lY3Rvcl90eXBlID09IERSTV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5UG9ydCkgewo+PiArCQlk cm1fY29ubmVjdG9yX2F0dGFjaF92cnJfY2FwYWJsZV9wcm9wZXJ0eSgKPj4gKwkJCSZhY29ubmVj dG9yLT5iYXNlKTsKPj4gKwl9Cj4+ICAgfQo+PiAgIAo+PiAgIHN0YXRpYyBpbnQgYW1kZ3B1X2Rt X2kyY194ZmVyKHN0cnVjdCBpMmNfYWRhcHRlciAqaTJjX2FkYXAsCj4+IEBAIC00MTc2LDYgKzQx MTMsNzcgQEAgc3RhdGljIHZvaWQgcHJlcGFyZV9mbGlwX2lzcihzdHJ1Y3QgYW1kZ3B1X2NydGMg KmFjcnRjKQo+PiAgIAkJCQkJCSBhY3J0Yy0+Y3J0Y19pZCk7Cj4+ICAgfQo+PiAgIAo+PiArc3Rh dGljIHZvaWQgdXBkYXRlX2ZyZWVzeW5jX3N0YXRlX29uX3N0cmVhbSgKPj4gKwlzdHJ1Y3QgYW1k Z3B1X2Rpc3BsYXlfbWFuYWdlciAqZG0sCj4+ICsJc3RydWN0IGRtX2NydGNfc3RhdGUgKm5ld19j cnRjX3N0YXRlLAo+PiArCXN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKm5ld19zdHJlYW0pCj4+ICt7 Cj4+ICsJc3RydWN0IG1vZF92cnJfcGFyYW1zIHZyciA9IHswfTsKPj4gKwlzdHJ1Y3QgZGNfaW5m b19wYWNrZXQgdnJyX2luZm9wYWNrZXQgPSB7MH07Cj4+ICsJc3RydWN0IG1vZF9mcmVlc3luY19j b25maWcgY29uZmlnID0gbmV3X2NydGNfc3RhdGUtPmZyZWVzeW5jX2NvbmZpZzsKPj4gKwo+PiAr CWlmICghbmV3X3N0cmVhbSkKPj4gKwkJcmV0dXJuOwo+PiArCj4+ICsJLyoKPj4gKwkgKiBUT0RP OiBEZXRlcm1pbmUgd2h5IG1pbi9tYXggdG90YWxzIGFuZCB2cmVmcmVzaCBjYW4gYmUgMCBoZXJl Lgo+PiArCSAqIEZvciBub3cgaXQncyBzdWZmaWNpZW50IHRvIGp1c3QgZ3VhcmQgYWdhaW5zdCB0 aGVzZSBjb25kaXRpb25zLgo+PiArCSAqLwo+PiArCj4+ICsJaWYgKCFuZXdfc3RyZWFtLT50aW1p bmcuaF90b3RhbCB8fCAhbmV3X3N0cmVhbS0+dGltaW5nLnZfdG90YWwpCj4+ICsJCXJldHVybjsK Pj4gKwo+PiArCWlmIChuZXdfY3J0Y19zdGF0ZS0+dnJyX3N1cHBvcnRlZCAmJgo+PiArCSAgICBj b25maWcubWluX3JlZnJlc2hfaW5fdWh6ICYmCj4+ICsJICAgIGNvbmZpZy5tYXhfcmVmcmVzaF9p bl91aHopIHsKPj4gKwkJY29uZmlnLnN0YXRlID0gbmV3X2NydGNfc3RhdGUtPmJhc2UudnJyX2Vu YWJsZWQgPwo+PiArCQkJVlJSX1NUQVRFX0FDVElWRV9WQVJJQUJMRSA6Cj4+ICsJCQlWUlJfU1RB VEVfSU5BQ1RJVkU7Cj4+ICsJfSBlbHNlIHsKPj4gKwkJY29uZmlnLnN0YXRlID0gVlJSX1NUQVRF X1VOU1VQUE9SVEVEOwo+PiArCX0KPj4gKwo+PiArCW1vZF9mcmVlc3luY19idWlsZF92cnJfcGFy YW1zKGRtLT5mcmVlc3luY19tb2R1bGUsCj4+ICsJCQkJICAgICAgbmV3X3N0cmVhbSwKPj4gKwkJ CQkgICAgICAmY29uZmlnLCAmdnJyKTsKPj4gKwo+PiArCW1vZF9mcmVlc3luY19idWlsZF92cnJf aW5mb3BhY2tldCgKPj4gKwkJZG0tPmZyZWVzeW5jX21vZHVsZSwKPj4gKwkJbmV3X3N0cmVhbSwK Pj4gKwkJJnZyciwKPj4gKwkJcGFja2V0X3R5cGVfdnJyLAo+PiArCQl0cmFuc2Zlcl9mdW5jX3Vu a25vd24sCj4+ICsJCSZ2cnJfaW5mb3BhY2tldCk7Cj4+ICsKPj4gKwluZXdfY3J0Y19zdGF0ZS0+ ZnJlZXN5bmNfdGltaW5nX2NoYW5nZWQgPQo+PiArCQkobWVtY21wKCZuZXdfY3J0Y19zdGF0ZS0+ YWRqdXN0LAo+PiArCQkJJnZyci5hZGp1c3QsCj4+ICsJCQlzaXplb2YodnJyLmFkanVzdCkpICE9 IDApOwo+PiArCj4+ICsJbmV3X2NydGNfc3RhdGUtPmZyZWVzeW5jX3Zycl9pbmZvX2NoYW5nZWQg PQo+PiArCQkobWVtY21wKCZuZXdfY3J0Y19zdGF0ZS0+dnJyX2luZm9wYWNrZXQsCj4+ICsJCQkm dnJyX2luZm9wYWNrZXQsCj4+ICsJCQlzaXplb2YodnJyX2luZm9wYWNrZXQpKSAhPSAwKTsKPj4g Kwo+PiArCW5ld19jcnRjX3N0YXRlLT5hZGp1c3QgPSB2cnIuYWRqdXN0Owo+PiArCW5ld19jcnRj X3N0YXRlLT52cnJfaW5mb3BhY2tldCA9IHZycl9pbmZvcGFja2V0Owo+PiArCj4+ICsJbmV3X3N0 cmVhbS0+YWRqdXN0ID0gbmV3X2NydGNfc3RhdGUtPmFkanVzdDsKPj4gKwluZXdfc3RyZWFtLT52 cnJfaW5mb3BhY2tldCA9IHZycl9pbmZvcGFja2V0Owo+PiArCj4+ICsJaWYgKG5ld19jcnRjX3N0 YXRlLT5mcmVlc3luY192cnJfaW5mb19jaGFuZ2VkKQo+PiArCQlEUk1fREVCVUdfS01TKCJWUlIg cGFja2V0IHVwZGF0ZTogY3J0Yz0ldSBlbmFibGVkPSVkIHN0YXRlPSVkIiwKPj4gKwkJCSAgICAg IG5ld19jcnRjX3N0YXRlLT5iYXNlLmNydGMtPmJhc2UuaWQsCj4+ICsJCQkgICAgICAoaW50KW5l d19jcnRjX3N0YXRlLT5iYXNlLnZycl9lbmFibGVkLAo+PiArCQkJICAgICAgKGludCl2cnIuc3Rh dGUpOwo+PiArCj4+ICsJaWYgKG5ld19jcnRjX3N0YXRlLT5mcmVlc3luY190aW1pbmdfY2hhbmdl ZCkKPj4gKwkJRFJNX0RFQlVHX0tNUygiVlJSIHRpbWluZyB1cGRhdGU6IGNydGM9JXUgbWluPSV1 IG1heD0ldVxuIiwKPj4gKwkJCSAgICAgIG5ld19jcnRjX3N0YXRlLT5iYXNlLmNydGMtPmJhc2Uu aWQsCj4+ICsJCQkgICAgICB2cnIuYWRqdXN0LnZfdG90YWxfbWluLAo+PiArCQkJICAgICAgdnJy LmFkanVzdC52X3RvdGFsX21heCk7Cj4+ICt9Cj4+ICsKPj4gICAvKgo+PiAgICAqIEV4ZWN1dGVz IGZsaXAKPj4gICAgKgo+PiBAQCAtNDE5Nyw2ICs0MjA1LDcgQEAgc3RhdGljIHZvaWQgYW1kZ3B1 X2RtX2RvX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+PiAgIAlzdHJ1Y3QgZGNfZmxpcF9h ZGRycyBhZGRyID0geyB7MH0gfTsKPj4gICAJLyogVE9ETyBlbGltaW5hdGUgb3IgcmVuYW1lIHN1 cmZhY2VfdXBkYXRlICovCj4+ICAgCXN0cnVjdCBkY19zdXJmYWNlX3VwZGF0ZSBzdXJmYWNlX3Vw ZGF0ZXNbMV0gPSB7IHswfSB9Owo+PiArCXN0cnVjdCBkY19zdHJlYW1fdXBkYXRlIHN0cmVhbV91 cGRhdGUgPSB7MH07Cj4+ICAgCXN0cnVjdCBkbV9jcnRjX3N0YXRlICphY3J0Y19zdGF0ZSA9IHRv X2RtX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+PiAgIAlzdHJ1Y3QgZGNfc3RyZWFtX3N0YXR1 cyAqc3RyZWFtX3N0YXR1czsKPj4gICAKPj4gQEAgLTQyNjksMTEgKzQyNzgsMjYgQEAgc3RhdGlj IHZvaWQgYW1kZ3B1X2RtX2RvX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+PiAgIAl9Cj4+ ICAgCXN1cmZhY2VfdXBkYXRlcy0+ZmxpcF9hZGRyID0gJmFkZHI7Cj4+ICAgCj4+ICsJaWYgKGFj cnRjX3N0YXRlLT5zdHJlYW0pIHsKPj4gKwkJdXBkYXRlX2ZyZWVzeW5jX3N0YXRlX29uX3N0cmVh bSgKPj4gKwkJCSZhZGV2LT5kbSwKPj4gKwkJCWFjcnRjX3N0YXRlLAo+PiArCQkJYWNydGNfc3Rh dGUtPnN0cmVhbSk7Cj4+ICsKPj4gKwkJaWYgKGFjcnRjX3N0YXRlLT5mcmVlc3luY190aW1pbmdf Y2hhbmdlZCkKPj4gKwkJCXN0cmVhbV91cGRhdGUuYWRqdXN0ID0KPj4gKwkJCQkmYWNydGNfc3Rh dGUtPnN0cmVhbS0+YWRqdXN0Owo+PiArCj4+ICsJCWlmIChhY3J0Y19zdGF0ZS0+ZnJlZXN5bmNf dnJyX2luZm9fY2hhbmdlZCkKPj4gKwkJCXN0cmVhbV91cGRhdGUudnJyX2luZm9wYWNrZXQgPQo+ PiArCQkJCSZhY3J0Y19zdGF0ZS0+c3RyZWFtLT52cnJfaW5mb3BhY2tldDsKPj4gKwl9Cj4+ICsK PiAKPiBGb3IgY29uc2lzdGVuY3kgd2UgbWlnaHQgYWxzbyB3YW50IHRvIGRvIHRoaXMgaW4gY29t bWl0X3BsYW5lc190b19zdHJlYW0gYmVmb3JlIHRoZSBjYWxsIHRvIGRjX2NvbW1pdF91cGRhdGVz X2Zvcl9zdHJlYW0uCj4gCj4gV2Ugc2hvdWxkIHJlYWxseSBtZXJnZSB0aGUgdHdvIGNvZGVwYXRo cyBmb3IgZGNfY29tbWl0X3VwZGF0ZXNfZm9yX3N0cmVhbSBvbmUgb2YgdGhlc2UgZGF5cy4KCklu IGEgcHJpb3IgcmV2aXNpb24gdG8gdGhpcyBwYXRjaCBJIGFjdHVhbGx5IGRpZCBkbyB0aGlzIG9u IGJvdGggYnV0IApyZWR1Y2VkIGl0IHRvIGp1c3QgdGhlIGZsaXAgLSB0aGUgcmVhc29uIGJlaW5n IHRoYXQgdGhlcmUncyBubyBwb2ludCBpbiAKZW5hYmxpbmcgdGhpcyB3aGVuIHdlJ3JlICpub3Qq IGZsaXBwaW5nIHNpbmNlIGl0J3MgbmVlZGVkIGZvciB0aGlzIHRvIApmdW5jdGlvbiBwcm9wZXJs eS4KClRoZSBtZXJnZSBpcyBwcm9iYWJseSBhIGdvb2QgaWRlYSBkb3duIHRoZSBsaW5lIHRvIGN1 dCBkb3duIG9uIGNvZGUgCmR1cGxpY2F0aW9uIGV2ZW4gZnVydGhlci4KCj4gCj4+ICAgCWRjX2Nv bW1pdF91cGRhdGVzX2Zvcl9zdHJlYW0oYWRldi0+ZG0uZGMsCj4+ICAgCQkJCQkgICAgIHN1cmZh Y2VfdXBkYXRlcywKPj4gICAJCQkJCSAgICAgMSwKPj4gICAJCQkJCSAgICAgYWNydGNfc3RhdGUt PnN0cmVhbSwKPj4gLQkJCQkJICAgICBOVUxMLAo+PiArCQkJCQkgICAgICZzdHJlYW1fdXBkYXRl LAo+PiAgIAkJCQkJICAgICAmc3VyZmFjZV91cGRhdGVzLT5zdXJmYWNlLAo+PiAgIAkJCQkJICAg ICBzdGF0ZSk7Cj4+ICAgCj4+IEBAIC00MzMzLDExICs0MzU3LDYgQEAgc3RhdGljIGJvb2wgY29t bWl0X3BsYW5lc190b19zdHJlYW0oCj4+ICAgCXN0cmVhbV91cGRhdGUtPmRzdCA9IGRjX3N0cmVh bS0+ZHN0Owo+PiAgIAlzdHJlYW1fdXBkYXRlLT5vdXRfdHJhbnNmZXJfZnVuYyA9IGRjX3N0cmVh bS0+b3V0X3RyYW5zZmVyX2Z1bmM7Cj4+ICAgCj4+IC0JaWYgKGRtX25ld19jcnRjX3N0YXRlLT5m cmVlc3luY19lbmFibGVkICE9IGRtX29sZF9jcnRjX3N0YXRlLT5mcmVlc3luY19lbmFibGVkKSB7 Cj4+IC0JCXN0cmVhbV91cGRhdGUtPnZycl9pbmZvcGFja2V0ID0gJmRjX3N0cmVhbS0+dnJyX2lu Zm9wYWNrZXQ7Cj4+IC0JCXN0cmVhbV91cGRhdGUtPmFkanVzdCA9ICZkY19zdHJlYW0tPmFkanVz dDsKPj4gLQl9Cj4+IC0KPj4gICAJZm9yIChpID0gMDsgaSA8IG5ld19wbGFuZV9jb3VudDsgaSsr KSB7Cj4+ICAgCQl1cGRhdGVzW2ldLnN1cmZhY2UgPSBwbGFuZV9zdGF0ZXNbaV07Cj4+ICAgCQl1 cGRhdGVzW2ldLmdhbW1hID0KPj4gQEAgLTQ0NzMsOSArNDQ5Miw2IEBAIHN0YXRpYyB2b2lkIGFt ZGdwdV9kbV9jb21taXRfcGxhbmVzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPj4g ICAJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwY3J0Yy0+ZGV2LT5ldmVudF9sb2NrLCBmbGFn cyk7Cj4+ICAgCQl9Cj4+ICAgCj4+IC0JCWRjX3N0cmVhbV9hdHRhY2gtPmFkanVzdCA9IGFjcnRj X3N0YXRlLT5hZGp1c3Q7Cj4+IC0JCWRjX3N0cmVhbV9hdHRhY2gtPnZycl9pbmZvcGFja2V0ID0g YWNydGNfc3RhdGUtPnZycl9pbmZvcGFja2V0Owo+PiAtCj4+ICAgCQlpZiAoZmFsc2UgPT0gY29t bWl0X3BsYW5lc190b19zdHJlYW0oZG0tPmRjLAo+PiAgIAkJCQkJCQlwbGFuZV9zdGF0ZXNfY29u c3RydWN0ZWQsCj4+ICAgCQkJCQkJCXBsYW5lc19jb3VudCwKPj4gQEAgLTQ2NzksOSArNDY5NSw2 IEBAIHN0YXRpYyB2b2lkIGFtZGdwdV9kbV9hdG9taWNfY29tbWl0X3RhaWwoc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlKQo+PiAgIAkJV0FSTl9PTighc3RhdHVzKTsKPj4gICAJCVdBUk5f T04oIXN0YXR1cy0+cGxhbmVfY291bnQpOwo+PiAgIAo+PiAtCQlkbV9uZXdfY3J0Y19zdGF0ZS0+ c3RyZWFtLT5hZGp1c3QgPSBkbV9uZXdfY3J0Y19zdGF0ZS0+YWRqdXN0Owo+PiAtCQlkbV9uZXdf Y3J0Y19zdGF0ZS0+c3RyZWFtLT52cnJfaW5mb3BhY2tldCA9IGRtX25ld19jcnRjX3N0YXRlLT52 cnJfaW5mb3BhY2tldDsKPj4gLQo+PiAgIAkJLypUT0RPIEhvdyBpdCB3b3JrcyB3aXRoIE1QTyA/ Ki8KPj4gICAJCWlmICghY29tbWl0X3BsYW5lc190b19zdHJlYW0oCj4+ICAgCQkJCWRtLT5kYywK Pj4gQEAgLTQ4OTksMjAgKzQ5MTIsMTggQEAgc3RhdGljIGludCBkb19hcXVpcmVfZ2xvYmFsX2xv Y2soc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4gICAJcmV0dXJuIHJldCA8IDAgPyByZXQgOiAw Owo+PiAgIH0KPj4gICAKPj4gLXZvaWQgc2V0X2ZyZWVzeW5jX29uX3N0cmVhbShzdHJ1Y3QgYW1k Z3B1X2Rpc3BsYXlfbWFuYWdlciAqZG0sCj4+IC0JCQkgICAgc3RydWN0IGRtX2NydGNfc3RhdGUg Km5ld19jcnRjX3N0YXRlLAo+PiAtCQkJICAgIHN0cnVjdCBkbV9jb25uZWN0b3Jfc3RhdGUgKm5l d19jb25fc3RhdGUsCj4+IC0JCQkgICAgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqbmV3X3N0cmVh bSkKPj4gK3N0YXRpYyB2b2lkIGdldF9mcmVlc3luY19jb25maWdfZm9yX2NydGMoCj4+ICsJc3Ry dWN0IGRtX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlLAo+PiArCXN0cnVjdCBkbV9jb25uZWN0 b3Jfc3RhdGUgKm5ld19jb25fc3RhdGUpCj4+ICAgewo+PiAgIAlzdHJ1Y3QgbW9kX2ZyZWVzeW5j X2NvbmZpZyBjb25maWcgPSB7MH07Cj4+IC0Jc3RydWN0IG1vZF92cnJfcGFyYW1zIHZyciA9IHsw fTsKPj4gLQlzdHJ1Y3QgZGNfaW5mb19wYWNrZXQgdnJyX2luZm9wYWNrZXQgPSB7MH07Cj4+ICAg CXN0cnVjdCBhbWRncHVfZG1fY29ubmVjdG9yICphY29ubmVjdG9yID0KPj4gICAJCQl0b19hbWRn cHVfZG1fY29ubmVjdG9yKG5ld19jb25fc3RhdGUtPmJhc2UuY29ubmVjdG9yKTsKPj4gICAKPj4g LQlpZiAobmV3X2Nvbl9zdGF0ZS0+ZnJlZXN5bmNfY2FwYWJsZSAmJgo+PiAtCSAgICBuZXdfY29u X3N0YXRlLT5mcmVlc3luY19lbmFibGUpIHsKPj4gLQkJY29uZmlnLnN0YXRlID0gbmV3X2NydGNf c3RhdGUtPmZyZWVzeW5jX2VuYWJsZWQgPwo+PiArCW5ld19jcnRjX3N0YXRlLT52cnJfc3VwcG9y dGVkID0gbmV3X2Nvbl9zdGF0ZS0+ZnJlZXN5bmNfY2FwYWJsZTsKPj4gKwo+PiArCWlmIChuZXdf Y29uX3N0YXRlLT5mcmVlc3luY19jYXBhYmxlKSB7Cj4+ICsJCWNvbmZpZy5zdGF0ZSA9IG5ld19j cnRjX3N0YXRlLT5iYXNlLnZycl9lbmFibGVkID8KPj4gICAJCQkJVlJSX1NUQVRFX0FDVElWRV9W QVJJQUJMRSA6Cj4+ICAgCQkJCVZSUl9TVEFURV9JTkFDVElWRTsKPj4gICAJCWNvbmZpZy5taW5f cmVmcmVzaF9pbl91aHogPQo+PiBAQCAtNDkyMiwxOSArNDkzMywxOCBAQCB2b2lkIHNldF9mcmVl c3luY19vbl9zdHJlYW0oc3RydWN0IGFtZGdwdV9kaXNwbGF5X21hbmFnZXIgKmRtLAo+PiAgIAkJ Y29uZmlnLnZzaWZfc3VwcG9ydGVkID0gdHJ1ZTsKPj4gICAJfQo+PiAgIAo+PiAtCW1vZF9mcmVl c3luY19idWlsZF92cnJfcGFyYW1zKGRtLT5mcmVlc3luY19tb2R1bGUsCj4+IC0JCQkJICAgICAg bmV3X3N0cmVhbSwKPj4gLQkJCQkgICAgICAmY29uZmlnLCAmdnJyKTsKPj4gKwluZXdfY3J0Y19z dGF0ZS0+ZnJlZXN5bmNfY29uZmlnID0gY29uZmlnOwo+PiArfQo+PiAgIAo+PiAtCW1vZF9mcmVl c3luY19idWlsZF92cnJfaW5mb3BhY2tldChkbS0+ZnJlZXN5bmNfbW9kdWxlLAo+PiAtCQkJCQkg IG5ld19zdHJlYW0sCj4+IC0JCQkJCSAgJnZyciwKPj4gLQkJCQkJICBwYWNrZXRfdHlwZV9mczEs Cj4+IC0JCQkJCSAgTlVMTCwKPj4gLQkJCQkJICAmdnJyX2luZm9wYWNrZXQpOwo+PiArc3RhdGlj IHZvaWQgcmVzZXRfZnJlZXN5bmNfY29uZmlnX2Zvcl9jcnRjKAo+PiArCXN0cnVjdCBkbV9jcnRj X3N0YXRlICpuZXdfY3J0Y19zdGF0ZSkKPj4gK3sKPj4gKwluZXdfY3J0Y19zdGF0ZS0+dnJyX3N1 cHBvcnRlZCA9IGZhbHNlOwo+PiAgIAo+PiAtCW5ld19jcnRjX3N0YXRlLT5hZGp1c3QgPSB2cnIu YWRqdXN0Owo+PiAtCW5ld19jcnRjX3N0YXRlLT52cnJfaW5mb3BhY2tldCA9IHZycl9pbmZvcGFj a2V0Owo+PiArCW1lbXNldCgmbmV3X2NydGNfc3RhdGUtPmFkanVzdCwgMCwKPj4gKwkgICAgICAg c2l6ZW9mKG5ld19jcnRjX3N0YXRlLT5hZGp1c3QpKTsKPj4gKwltZW1zZXQoJm5ld19jcnRjX3N0 YXRlLT52cnJfaW5mb3BhY2tldCwgMCwKPj4gKwkgICAgICAgc2l6ZW9mKG5ld19jcnRjX3N0YXRl LT52cnJfaW5mb3BhY2tldCkpOwo+PiAgIH0KPj4gICAKPj4gICBzdGF0aWMgaW50IGRtX3VwZGF0 ZV9jcnRjc19zdGF0ZShzdHJ1Y3QgYW1kZ3B1X2Rpc3BsYXlfbWFuYWdlciAqZG0sCj4+IEBAIC01 MDA5LDkgKzUwMTksNiBAQCBzdGF0aWMgaW50IGRtX3VwZGF0ZV9jcnRjc19zdGF0ZShzdHJ1Y3Qg YW1kZ3B1X2Rpc3BsYXlfbWFuYWdlciAqZG0sCj4+ICAgCQkJCWJyZWFrOwo+PiAgIAkJCX0KPj4g ICAKPj4gLQkJCXNldF9mcmVlc3luY19vbl9zdHJlYW0oZG0sIGRtX25ld19jcnRjX3N0YXRlLAo+ PiAtCQkJCQkgICAgICAgZG1fbmV3X2Nvbm5fc3RhdGUsIG5ld19zdHJlYW0pOwo+PiAtCj4+ICAg CQkJaWYgKGRjX2lzX3N0cmVhbV91bmNoYW5nZWQobmV3X3N0cmVhbSwgZG1fb2xkX2NydGNfc3Rh dGUtPnN0cmVhbSkgJiYKPj4gICAJCQkgICAgZGNfaXNfc3RyZWFtX3NjYWxpbmdfdW5jaGFuZ2Vk KG5ld19zdHJlYW0sIGRtX29sZF9jcnRjX3N0YXRlLT5zdHJlYW0pKSB7Cj4+ICAgCQkJCW5ld19j cnRjX3N0YXRlLT5tb2RlX2NoYW5nZWQgPSBmYWxzZTsKPj4gQEAgLTUwMjAsOSArNTAyNyw2IEBA IHN0YXRpYyBpbnQgZG1fdXBkYXRlX2NydGNzX3N0YXRlKHN0cnVjdCBhbWRncHVfZGlzcGxheV9t YW5hZ2VyICpkbSwKPj4gICAJCQl9Cj4+ICAgCQl9Cj4+ICAgCj4+IC0JCWlmIChkbV9vbGRfY3J0 Y19zdGF0ZS0+ZnJlZXN5bmNfZW5hYmxlZCAhPSBkbV9uZXdfY3J0Y19zdGF0ZS0+ZnJlZXN5bmNf ZW5hYmxlZCkKPj4gLQkJCW5ld19jcnRjX3N0YXRlLT5tb2RlX2NoYW5nZWQgPSB0cnVlOwo+PiAt Cj4+ICAgCQlpZiAoIWRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rlc2V0KG5ld19jcnRjX3N0YXRl KSkKPj4gICAJCQlnb3RvIG5leHRfY3J0YzsKPj4gICAKPj4gQEAgLTUwNTksNiArNTA2Myw4IEBA IHN0YXRpYyBpbnQgZG1fdXBkYXRlX2NydGNzX3N0YXRlKHN0cnVjdCBhbWRncHVfZGlzcGxheV9t YW5hZ2VyICpkbSwKPj4gICAJCQlkY19zdHJlYW1fcmVsZWFzZShkbV9vbGRfY3J0Y19zdGF0ZS0+ c3RyZWFtKTsKPj4gICAJCQlkbV9uZXdfY3J0Y19zdGF0ZS0+c3RyZWFtID0gTlVMTDsKPj4gICAK Pj4gKwkJCXJlc2V0X2ZyZWVzeW5jX2NvbmZpZ19mb3JfY3J0YyhkbV9uZXdfY3J0Y19zdGF0ZSk7 Cj4+ICsKPj4gICAJCQkqbG9ja19hbmRfdmFsaWRhdGlvbl9uZWVkZWQgPSB0cnVlOwo+PiAgIAo+ PiAgIAkJfSBlbHNlIHsvKiBBZGQgc3RyZWFtIGZvciBhbnkgdXBkYXRlZC9lbmFibGVkIENSVEMg Ki8KPj4gQEAgLTUxMzYsNyArNTE0Miw5IEBAIHN0YXRpYyBpbnQgZG1fdXBkYXRlX2NydGNzX3N0 YXRlKHN0cnVjdCBhbWRncHVfZGlzcGxheV9tYW5hZ2VyICpkbSwKPj4gICAJCQlhbWRncHVfZG1f c2V0X2N0bShkbV9uZXdfY3J0Y19zdGF0ZSk7Cj4+ICAgCQl9Cj4+ICAgCj4+IC0KPj4gKwkJLyog VXBkYXRlIEZyZWVzeW5jIHNldHRpbmdzLiAqLwo+PiArCQlnZXRfZnJlZXN5bmNfY29uZmlnX2Zv cl9jcnRjKGRtX25ld19jcnRjX3N0YXRlLAo+PiArCQkJCQkgICAgIGRtX25ld19jb25uX3N0YXRl KTsKPj4gICAJfQo+PiAgIAo+PiAgIAlyZXR1cm4gcmV0Owo+PiBAQCAtNTQwMSwxMiArNTQwOSw5 IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2RtX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAo+PiAgIAkJZ290byBmYWlsOwo+PiAgIAo+PiAgIAlmb3JfZWFjaF9vbGRuZXdfY3J0Y19p bl9zdGF0ZShzdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlLCBpKSB7 Cj4+IC0JCXN0cnVjdCBkbV9jcnRjX3N0YXRlICpkbV9uZXdfY3J0Y19zdGF0ZSA9IHRvX2RtX2Ny dGNfc3RhdGUobmV3X2NydGNfc3RhdGUpOwo+PiAtCQlzdHJ1Y3QgZG1fY3J0Y19zdGF0ZSAqZG1f b2xkX2NydGNfc3RhdGUgID0gdG9fZG1fY3J0Y19zdGF0ZShvbGRfY3J0Y19zdGF0ZSk7Cj4+IC0K Pj4gICAJCWlmICghZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQobmV3X2NydGNfc3RhdGUp ICYmCj4+ICAgCQkgICAgIW5ld19jcnRjX3N0YXRlLT5jb2xvcl9tZ210X2NoYW5nZWQgJiYKPj4g LQkJICAgIChkbV9vbGRfY3J0Y19zdGF0ZS0+ZnJlZXN5bmNfZW5hYmxlZCA9PSBkbV9uZXdfY3J0 Y19zdGF0ZS0+ZnJlZXN5bmNfZW5hYmxlZCkpCj4+ICsJCSAgICAhbmV3X2NydGNfc3RhdGUtPnZy cl9lbmFibGVkKQo+PiAgIAkJCWNvbnRpbnVlOwo+PiAgIAo+PiAgIAkJaWYgKCFuZXdfY3J0Y19z dGF0ZS0+ZW5hYmxlKQo+PiBAQCAtNTU1OCwxNCArNTU2MywxNSBAQCB2b2lkIGFtZGdwdV9kbV91 cGRhdGVfZnJlZXN5bmNfY2FwcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+PiAg IAlzdHJ1Y3QgZGV0YWlsZWRfZGF0YV9tb25pdG9yX3JhbmdlICpyYW5nZTsKPj4gICAJc3RydWN0 IGFtZGdwdV9kbV9jb25uZWN0b3IgKmFtZGdwdV9kbV9jb25uZWN0b3IgPQo+PiAgIAkJCXRvX2Ft ZGdwdV9kbV9jb25uZWN0b3IoY29ubmVjdG9yKTsKPj4gLQlzdHJ1Y3QgZG1fY29ubmVjdG9yX3N0 YXRlICpkbV9jb25fc3RhdGU7Cj4+ICsJc3RydWN0IGRtX2Nvbm5lY3Rvcl9zdGF0ZSAqZG1fY29u X3N0YXRlID0gTlVMTDsKPj4gICAKPj4gICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5l Y3Rvci0+ZGV2Owo+PiAgIAlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGRldi0+ZGV2X3By aXZhdGU7Cj4+ICsJYm9vbCBmcmVlc3luY19jYXBhYmxlID0gZmFsc2U7Cj4+ICAgCj4+ICAgCWlm ICghY29ubmVjdG9yLT5zdGF0ZSkgewo+PiAgIAkJRFJNX0VSUk9SKCIlcyAtIENvbm5lY3RvciBo YXMgbm8gc3RhdGUiLCBfX2Z1bmNfXyk7Cj4+IC0JCXJldHVybjsKPj4gKwkJZ290byB1cGRhdGU7 Cj4+ICAgCX0KPj4gICAKPj4gICAJaWYgKCFlZGlkKSB7Cj4+IEBAIC01NTc1LDkgKzU1ODEsNyBA QCB2b2lkIGFtZGdwdV9kbV91cGRhdGVfZnJlZXN5bmNfY2FwcyhzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yLAo+PiAgIAkJYW1kZ3B1X2RtX2Nvbm5lY3Rvci0+bWF4X3ZmcmVxID0gMDsK Pj4gICAJCWFtZGdwdV9kbV9jb25uZWN0b3ItPnBpeGVsX2Nsb2NrX21oeiA9IDA7Cj4+ICAgCj4+ IC0JCWRtX2Nvbl9zdGF0ZS0+ZnJlZXN5bmNfY2FwYWJsZSA9IGZhbHNlOwo+PiAtCQlkbV9jb25f c3RhdGUtPmZyZWVzeW5jX2VuYWJsZSA9IGZhbHNlOwo+PiAtCQlyZXR1cm47Cj4+ICsJCWdvdG8g dXBkYXRlOwo+PiAgIAl9Cj4+ICAgCj4+ICAgCWRtX2Nvbl9zdGF0ZSA9IHRvX2RtX2Nvbm5lY3Rv cl9zdGF0ZShjb25uZWN0b3ItPnN0YXRlKTsKPj4gQEAgLTU1ODUsMTAgKzU1ODksMTAgQEAgdm9p ZCBhbWRncHVfZG1fdXBkYXRlX2ZyZWVzeW5jX2NhcHMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvciwKPj4gICAJZWRpZF9jaGVja19yZXF1aXJlZCA9IGZhbHNlOwo+PiAgIAlpZiAoIWFt ZGdwdV9kbV9jb25uZWN0b3ItPmRjX3NpbmspIHsKPj4gICAJCURSTV9FUlJPUigiZGNfc2luayBO VUxMLCBjb3VsZCBub3QgYWRkIGZyZWVfc3luYyBtb2R1bGUuXG4iKTsKPj4gLQkJcmV0dXJuOwo+ PiArCQlnb3RvIHVwZGF0ZTsKPj4gICAJfQo+PiAgIAlpZiAoIWFkZXYtPmRtLmZyZWVzeW5jX21v ZHVsZSkKPj4gLQkJcmV0dXJuOwo+PiArCQlnb3RvIHVwZGF0ZTsKPj4gICAJLyoKPj4gICAJICog aWYgZWRpZCBub24gemVybyByZXN0cmljdCBmcmVlc3luYyBvbmx5IGZvciBkcCBhbmQgZWRwCj4+ ICAgCSAqLwo+PiBAQCAtNTYwMCw3ICs1NjA0LDYgQEAgdm9pZCBhbWRncHVfZG1fdXBkYXRlX2Zy ZWVzeW5jX2NhcHMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPj4gICAJCQkJCQlh bWRncHVfZG1fY29ubmVjdG9yKTsKPj4gICAJCX0KPj4gICAJfQo+PiAtCWRtX2Nvbl9zdGF0ZS0+ ZnJlZXN5bmNfY2FwYWJsZSA9IGZhbHNlOwo+PiAgIAlpZiAoZWRpZF9jaGVja19yZXF1aXJlZCA9 PSB0cnVlICYmIChlZGlkLT52ZXJzaW9uID4gMSB8fAo+PiAgIAkgICAoZWRpZC0+dmVyc2lvbiA9 PSAxICYmIGVkaWQtPnJldmlzaW9uID4gMSkpKSB7Cj4+ICAgCQlmb3IgKGkgPSAwOyBpIDwgNDsg aSsrKSB7Cj4+IEBAIC01NjMyLDggKzU2MzUsMTYgQEAgdm9pZCBhbWRncHVfZG1fdXBkYXRlX2Zy ZWVzeW5jX2NhcHMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPj4gICAJCWlmIChh bWRncHVfZG1fY29ubmVjdG9yLT5tYXhfdmZyZXEgLQo+PiAgIAkJICAgIGFtZGdwdV9kbV9jb25u ZWN0b3ItPm1pbl92ZnJlcSA+IDEwKSB7Cj4+ICAgCj4+IC0JCQlkbV9jb25fc3RhdGUtPmZyZWVz eW5jX2NhcGFibGUgPSB0cnVlOwo+PiArCQkJZnJlZXN5bmNfY2FwYWJsZSA9IHRydWU7Cj4+ICAg CQl9Cj4+ICAgCX0KPj4gKwo+PiArdXBkYXRlOgo+PiArCWlmIChkbV9jb25fc3RhdGUpCj4+ICsJ CWRtX2Nvbl9zdGF0ZS0+ZnJlZXN5bmNfY2FwYWJsZSA9IGZyZWVzeW5jX2NhcGFibGU7Cj4+ICsK PiAKPiBJbnRlcmVzdGluZy4gTG9va3MgbGlrZSB3ZSBjb3VsZCBqdXN0IGdyYWIgdGhpcyBmcm9t IHRoZSBkcm1fY29ubmVjdG9yIHByb3BlcnR5IGFzIHRoaXMgaXNuJ3Qgc29tZXRoaW5nIHRoYXQg Y2hhbmdlcyB3aXRoIHRoZSBzdGF0ZSBidXQgRFJNIGZvcmNlcyB1cyB0byB0cmFjayBpdCBvbiB0 aGUgY29ubmVjdG9yIHN0YXRlIGFzIGRybV9vYmplY3RfcHJvcGVydHlfZ2V0X3ZhbHVlKCkgdGhy b3dzIGEgV0FSTl9PTiBmb3IgYXRvbWljIGRyaXZlcnMuIE5vdCBzdXJlIEkgbGlrZSBpdCBidXQg aXQncyB3aGF0IHdlIGdvdCwgSSBndWVzcy4KPiAKPiBIYXJyeQoKVGhhdCB3YXMgbXkgb3JpZ2lu YWwgcGxhbiwgYnV0IEkgdGhpbmsgSSB1bmRlcnN0YW5kIHRoZSByZWFzb25pbmcgYmVoaW5kIAp0 aGUgc2VwYXJhdGlvbiBvZiBzdGF0ZSBhbmQgcHJvcGVydHkuCgpJIGRvbid0IG1pbmQgdGhpcyBh cHByb2FjaCB0b28gbXVjaCBiZWNhdXNlIHRoZSB2YWx1ZSByZWFsbHkgZmVlbHMgbGlrZSAKYW4g aW1wbGVtZW50YXRpb24gZGV0YWlsIHNwZWNpZmljIHRvIG91ciBkcml2ZXIgaW4gdGhpcyBjYXNl LgoKSXQncyBub3QgcmVhbGx5IGRlc2NyaWJpbmcgd2hldGhlciB0aGUgY29ubmVjdG9yIGlzIGFj dHVhbGx5IGNhcGFibGUgb3IgCm5vdCwgYnV0IHdoZXRoZXIgaXQncyBmaW5lIHRvIHBlcmZvcm0g dnJyIHVwZGF0ZXMgbGF0ZXIgd2hlbiB3ZSdyZSAKdXBkYXRpbmcgdGhlIHBsYW5lcy4KCj4gCj4+ ICsJaWYgKGNvbm5lY3Rvci0+dnJyX2NhcGFibGVfcHJvcGVydHkpCj4+ICsJCWRybV9jb25uZWN0 b3Jfc2V0X3Zycl9jYXBhYmxlX3Byb3BlcnR5KGNvbm5lY3RvciwKPj4gKwkJCQkJCSAgICAgICBm cmVlc3luY19jYXBhYmxlKTsKPj4gICB9Cj4+ICAgCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5oIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uaAo+PiBpbmRleCA5NzhiMzRhNTAxMWMu LmE1YWFmOGIwODk2OCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5 L2FtZGdwdV9kbS9hbWRncHVfZG0uaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3Bs YXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5oCj4+IEBAIC0xODUsNyArMTg1LDExIEBAIHN0cnVjdCBk bV9jcnRjX3N0YXRlIHsKPj4gICAJaW50IGNyY19za2lwX2NvdW50Owo+PiAgIAlib29sIGNyY19l bmFibGVkOwo+PiAgIAo+PiAtCWJvb2wgZnJlZXN5bmNfZW5hYmxlZDsKPj4gKwlib29sIGZyZWVz eW5jX3RpbWluZ19jaGFuZ2VkOwo+PiArCWJvb2wgZnJlZXN5bmNfdnJyX2luZm9fY2hhbmdlZDsK Pj4gKwo+PiArCWJvb2wgdnJyX3N1cHBvcnRlZDsKPj4gKwlzdHJ1Y3QgbW9kX2ZyZWVzeW5jX2Nv bmZpZyBmcmVlc3luY19jb25maWc7Cj4+ICAgCXN0cnVjdCBkY19jcnRjX3RpbWluZ19hZGp1c3Qg YWRqdXN0Owo+PiAgIAlzdHJ1Y3QgZGNfaW5mb19wYWNrZXQgdnJyX2luZm9wYWNrZXQ7Cj4+ICAg fTsKPj4gQEAgLTIwNyw3ICsyMTEsNiBAQCBzdHJ1Y3QgZG1fY29ubmVjdG9yX3N0YXRlIHsKPj4g ICAJdWludDhfdCB1bmRlcnNjYW5fdmJvcmRlcjsKPj4gICAJdWludDhfdCB1bmRlcnNjYW5faGJv cmRlcjsKPj4gICAJYm9vbCB1bmRlcnNjYW5fZW5hYmxlOwo+PiAtCWJvb2wgZnJlZXN5bmNfZW5h YmxlOwo+PiAgIAlib29sIGZyZWVzeW5jX2NhcGFibGU7Cj4+ICAgfTsKPj4gICAKPj4KCk5pY2hv bGFzIEthemxhdXNrYXMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==