From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH v6 3/9] drm/hisilicon/hibmc: Add support for frame buffer Date: Fri, 11 Nov 2016 08:27:18 -0500 Message-ID: References: <1477639682-22520-1-git-send-email-zourongrong@gmail.com> <1477639682-22520-4-git-send-email-zourongrong@gmail.com> <5825C496.5070905@huawei.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-yw0-x22e.google.com (mail-yw0-x22e.google.com [IPv6:2607:f8b0:4002:c05::22e]) by gabe.freedesktop.org (Postfix) with ESMTPS id 072196E8EF for ; Fri, 11 Nov 2016 13:27:42 +0000 (UTC) Received: by mail-yw0-x22e.google.com with SMTP id a10so10822805ywa.3 for ; Fri, 11 Nov 2016 05:27:41 -0800 (PST) Received: from mail-yb0-f175.google.com (mail-yb0-f175.google.com. [209.85.213.175]) by smtp.gmail.com with ESMTPSA id k14sm378817ywi.11.2016.11.11.05.27.39 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 11 Nov 2016 05:27:39 -0800 (PST) Received: by mail-yb0-f175.google.com with SMTP id d128so4932610ybh.2 for ; Fri, 11 Nov 2016 05:27:39 -0800 (PST) In-Reply-To: <5825C496.5070905@huawei.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Rongrong Zou Cc: Mark Rutland , lijianhua@huawei.com, Will Deacon , Tomeu Vizoso , Jonathan Corbet , catalin.marinas@arm.com, Emil Velikov , linuxarm@huawei.com, dri-devel , james.xiong@huawei.com, shenhui@huawei.com, Rongrong Zou , Linux ARM Kernel List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBOb3YgMTEsIDIwMTYgYXQgODoxNiBBTSwgUm9uZ3JvbmcgWm91IDx6b3Vyb25ncm9u Z0BodWF3ZWkuY29tPiB3cm90ZToKPiDlnKggMjAxNi8xMS8xMSAyOjMwLCBTZWFuIFBhdWwg5YaZ 6YGTOgo+Pgo+PiBPbiBGcmksIE9jdCAyOCwgMjAxNiBhdCAzOjI3IEFNLCBSb25ncm9uZyBab3Ug PHpvdXJvbmdyb25nQGdtYWlsLmNvbT4KPj4gd3JvdGU6Cj4+Pgo+Pj4gQWRkIHN1cHBvcnQgZm9y IGZiZGV2IGFuZCBrbXMgZmIgbWFuYWdlbWVudC4KPj4+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBSb25n cm9uZyBab3UgPHpvdXJvbmdyb25nQGdtYWlsLmNvbT4KPj4+IC0tLQo+Pj4gICBkcml2ZXJzL2dw dS9kcm0vaGlzaWxpY29uL2hpYm1jL01ha2VmaWxlICAgICAgICAgIHwgICAyICstCj4+PiAgIGRy aXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGlibWMvaGlibWNfZHJtX2Rydi5jICAgfCAgMTcgKysK Pj4+ICAgZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9oaWJtY19kcm1fZHJ2LmggICB8 ICAyNCArKwo+Pj4gICBkcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2hpYm1jL2hpYm1jX2RybV9m YmRldi5jIHwgMjU1Cj4+PiArKysrKysrKysrKysrKysrKysrKysrCj4+PiAgIGRyaXZlcnMvZ3B1 L2RybS9oaXNpbGljb24vaGlibWMvaGlibWNfdHRtLmMgICAgICAgfCAgNjYgKysrKysrCj4+PiAg IDUgZmlsZXMgY2hhbmdlZCwgMzYzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPj4+ICAg Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGlibWMvaGlibWNf ZHJtX2ZiZGV2LmMKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNv bi9oaWJtYy9NYWtlZmlsZQo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2hpYm1jL01h a2VmaWxlCj4+PiBpbmRleCBkNWM0MGI4Li44MTBhMzdlIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9NYWtlZmlsZQo+Pj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2hpc2lsaWNvbi9oaWJtYy9NYWtlZmlsZQo+Pj4gQEAgLTEsNSArMSw1IEBACj4+PiAgIGNj ZmxhZ3MteSA6PSAtSWluY2x1ZGUvZHJtCj4+PiAtaGlibWMtZHJtLXkgOj0gaGlibWNfZHJtX2Ry di5vIGhpYm1jX2RybV9wb3dlci5vIGhpYm1jX3R0bS5vCj4+PiAraGlibWMtZHJtLXkgOj0gaGli bWNfZHJtX2Rydi5vIGhpYm1jX2RybV9mYmRldi5vIGhpYm1jX2RybV9wb3dlci5vCj4+PiBoaWJt Y190dG0ubwo+Pj4KPj4+ICAgb2JqLSQoQ09ORklHX0RSTV9ISVNJX0hJQk1DKSAgICs9aGlibWMt ZHJtLm8KPj4+ICAgI29iai15ICs9IGhpYm1jLWRybS5vCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9oaWJtY19kcm1fZHJ2LmMKPj4+IGIvZHJpdmVycy9n cHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9oaWJtY19kcm1fZHJ2LmMKPj4+IGluZGV4IDgxZjQzMDEu LjVhYzdhN2UgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2hpYm1j L2hpYm1jX2RybV9kcnYuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9oaWJt Yy9oaWJtY19kcm1fZHJ2LmMKPj4+IEBAIC02NiwxMSArNjYsMjMgQEAgc3RhdGljIHZvaWQgaGli bWNfZGlzYWJsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UKPj4+ICpkZXYsIHVuc2lnbmVkIGlu dCBwaXBlKQo+Pj4KPj4+ICAgc3RhdGljIGludCBoaWJtY19wbV9zdXNwZW5kKHN0cnVjdCBkZXZp Y2UgKmRldikKPj4+ICAgewo+Pj4gKyAgICAgICBzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3Bj aV9kZXYoZGV2KTsKPj4+ICsgICAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXYgPSBwY2lf Z2V0X2RydmRhdGEocGRldik7Cj4+PiArICAgICAgIHN0cnVjdCBoaWJtY19kcm1fZGV2aWNlICpo aWRldiA9IGRybV9kZXYtPmRldl9wcml2YXRlOwo+Pj4gKwo+Pj4gKyAgICAgICBkcm1fZmJfaGVs cGVyX3NldF9zdXNwZW5kX3VubG9ja2VkKCZoaWRldi0+ZmJkZXYtPmhlbHBlciwgMSk7Cj4+PiAr Cj4+Cj4+Cj4+IFdlIGhhdmUgYXRvbWljIGhlbHBlcnMgZm9yIHN1c3BlbmQvcmVzdW1lIG5vdy4g UGxlYXNlIHVzZSB0aG9zZS4KPgo+Cj4gZHJtX2F0b21pY19oZWxwZXJfc3VzcGVuZC9yZXN1bWUo KT8KPgoKQ29ycmVjdAoKPgo+Pgo+Pj4gICAgICAgICAgcmV0dXJuIDA7Cj4+PiAgIH0KPj4+Cj4+ PiAgIHN0YXRpYyBpbnQgaGlibWNfcG1fcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKPj4+ICAg ewo+Pj4gKyAgICAgICBzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoZGV2KTsKPj4+ ICsgICAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXYgPSBwY2lfZ2V0X2RydmRhdGEocGRl dik7Cj4+PiArICAgICAgIHN0cnVjdCBoaWJtY19kcm1fZGV2aWNlICpoaWRldiA9IGRybV9kZXYt PmRldl9wcml2YXRlOwo+Pj4gKwo+Pj4gKyAgICAgICBkcm1fZmJfaGVscGVyX3NldF9zdXNwZW5k X3VubG9ja2VkKCZoaWRldi0+ZmJkZXYtPmhlbHBlciwgMCk7Cj4+PiArCj4+PiAgICAgICAgICBy ZXR1cm4gMDsKPj4+ICAgfQo+Pj4KPj4+IEBAIC0xNzAsNiArMTgyLDcgQEAgc3RhdGljIGludCBo aWJtY191bmxvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4+ICAgewo+Pj4gICAgICAgICAg c3RydWN0IGhpYm1jX2RybV9kZXZpY2UgKmhpZGV2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4+Cj4+ PiArICAgICAgIGhpYm1jX2ZiZGV2X2ZpbmkoaGlkZXYpOwo+Pj4gICAgICAgICAgaGlibWNfbW1f ZmluaShoaWRldik7Cj4+PiAgICAgICAgICBoaWJtY19od19maW5pKGhpZGV2KTsKPj4+ICAgICAg ICAgIGRldi0+ZGV2X3ByaXZhdGUgPSBOVUxMOwo+Pj4gQEAgLTE5NSw2ICsyMDgsMTAgQEAgc3Rh dGljIGludCBoaWJtY19sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+PiB1bnNpZ25lZCBs b25nIGZsYWdzKQo+Pj4gICAgICAgICAgaWYgKHJldCkKPj4+ICAgICAgICAgICAgICAgICAgZ290 byBlcnI7Cj4+Pgo+Pj4gKyAgICAgICByZXQgPSBoaWJtY19mYmRldl9pbml0KGhpZGV2KTsKPj4+ ICsgICAgICAgaWYgKHJldCkKPj4+ICsgICAgICAgICAgICAgICBnb3RvIGVycjsKPj4+ICsKPj4+ ICAgICAgICAgIHJldHVybiAwOwo+Pj4KPj4+ICAgZXJyOgo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9oaXNpbGljb24vaGlibWMvaGlibWNfZHJtX2Rydi5oCj4+PiBiL2RyaXZlcnMv Z3B1L2RybS9oaXNpbGljb24vaGlibWMvaGlibWNfZHJtX2Rydi5oCj4+PiBpbmRleCBkYjhkODBl Li5hNDBlOWE3IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9oaWJt Yy9oaWJtY19kcm1fZHJ2LmgKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGli bWMvaGlibWNfZHJtX2Rydi5oCj4+PiBAQCAtMjAsOSArMjAsMjIgQEAKPj4+ICAgI2RlZmluZSBI SUJNQ19EUk1fRFJWX0gKPj4+Cj4+PiAgICNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+Pj4gKyNpbmNs dWRlIDxkcm0vZHJtX2ZiX2hlbHBlci5oPgo+Pj4gICAjaW5jbHVkZSA8ZHJtL3R0bS90dG1fYm9f ZHJpdmVyLmg+Cj4+PiAgICNpbmNsdWRlIDxkcm0vZHJtX2dlbS5oPgo+Pj4KPj4+ICtzdHJ1Y3Qg aGlibWNfZnJhbWVidWZmZXIgewo+Pj4gKyAgICAgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyIGZi Owo+Pj4gKyAgICAgICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKPj4+ICsgICAgICAgYm9v bCBpc19mYmRldl9mYjsKPj4+ICt9Owo+Pj4gKwo+Pj4gK3N0cnVjdCBoaWJtY19mYmRldiB7Cj4+ PiArICAgICAgIHN0cnVjdCBkcm1fZmJfaGVscGVyIGhlbHBlcjsKPj4+ICsgICAgICAgc3RydWN0 IGhpYm1jX2ZyYW1lYnVmZmVyICpmYjsKPj4+ICsgICAgICAgaW50IHNpemU7Cj4+PiArfTsKPj4+ ICsKPj4+ICAgc3RydWN0IGhpYm1jX2RybV9kZXZpY2Ugewo+Pj4gICAgICAgICAgLyogaHcgKi8K Pj4+ICAgICAgICAgIHZvaWQgX19pb21lbSAgICptbWlvOwo+Pj4gQEAgLTQxLDkgKzU0LDEzIEBA IHN0cnVjdCBoaWJtY19kcm1fZGV2aWNlIHsKPj4+ICAgICAgICAgICAgICAgICAgYm9vbCBpbml0 aWFsaXplZDsKPj4+ICAgICAgICAgIH0gdHRtOwo+Pj4KPj4+ICsgICAgICAgLyogZmJkZXYgKi8K Pj4+ICsgICAgICAgc3RydWN0IGhpYm1jX2ZiZGV2ICpmYmRldjsKPj4+ICAgICAgICAgIGJvb2wg bW1faW5pdGVkOwo+Pj4gICB9Owo+Pj4KPj4+ICsjZGVmaW5lIHRvX2hpYm1jX2ZyYW1lYnVmZmVy KHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QKPj4+IGhpYm1jX2ZyYW1lYnVmZmVyLCBmYikKPj4+ ICsKPj4+ICAgc3RydWN0IGhpYm1jX2JvIHsKPj4+ICAgICAgICAgIHN0cnVjdCB0dG1fYnVmZmVy X29iamVjdCBibzsKPj4+ICAgICAgICAgIHN0cnVjdCB0dG1fcGxhY2VtZW50IHBsYWNlbWVudDsK Pj4+IEBAIC02NSw4ICs4MiwxNSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBoaWJtY19ibyAqZ2Vt X3RvX2hpYm1jX2JvKHN0cnVjdAo+Pj4gZHJtX2dlbV9vYmplY3QgKmdlbSkKPj4+Cj4+PiAgICNk ZWZpbmUgRFJNX0ZJTEVfUEFHRV9PRkZTRVQgKDB4MTAwMDAwMDAwVUxMID4+IFBBR0VfU0hJRlQp Cj4+Pgo+Pj4gK2ludCBoaWJtY19mYmRldl9pbml0KHN0cnVjdCBoaWJtY19kcm1fZGV2aWNlICpo aWRldik7Cj4+PiArdm9pZCBoaWJtY19mYmRldl9maW5pKHN0cnVjdCBoaWJtY19kcm1fZGV2aWNl ICpoaWRldik7Cj4+PiArCj4+PiAgIGludCBoaWJtY19nZW1fY3JlYXRlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHUzMiBzaXplLCBib29sIGlza2VybmVsLAo+Pj4gICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqKm9iaik7Cj4+PiArc3RydWN0IGhpYm1jX2ZyYW1l YnVmZmVyICoKPj4+ICtoaWJtY19mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4+PiArICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9mYl9j bWQyICptb2RlX2NtZCwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9nZW1f b2JqZWN0ICpvYmopOwo+Pj4KPj4+ICAgaW50IGhpYm1jX21tX2luaXQoc3RydWN0IGhpYm1jX2Ry bV9kZXZpY2UgKmhpYm1jKTsKPj4+ICAgdm9pZCBoaWJtY19tbV9maW5pKHN0cnVjdCBoaWJtY19k cm1fZGV2aWNlICpoaWJtYyk7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2hpc2ls aWNvbi9oaWJtYy9oaWJtY19kcm1fZmJkZXYuYwo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaGlzaWxp Y29uL2hpYm1jL2hpYm1jX2RybV9mYmRldi5jCj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4g aW5kZXggMDAwMDAwMC4uNjMwMTI0Ygo+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9oaWJtY19kcm1fZmJkZXYuYwo+Pj4gQEAgLTAsMCAr MSwyNTUgQEAKPj4+ICsvKiBIaXNpbGljb24gSGlibWMgU29DIGRybSBkcml2ZXIKPj4+ICsgKgo+ Pj4gKyAqIEJhc2VkIG9uIHRoZSBib2NocyBkcm0gZHJpdmVyLgo+Pj4gKyAqCj4+PiArICogQ29w eXJpZ2h0IChjKSAyMDE2IEh1YXdlaSBMaW1pdGVkLgo+Pj4gKyAqCj4+PiArICogQXV0aG9yOgo+ Pj4gKyAqICAgICBSb25ncm9uZyBab3UgPHpvdXJvbmdyb25nQGh1YXdlaS5jb20+Cj4+PiArICog ICAgIFJvbmdyb25nIFpvdSA8em91cm9uZ3JvbmdAZ21haWwuY29tPgo+Pj4gKyAqICAgICBKaWFu aHVhIExpIDxsaWppYW5odWFAaHVhd2VpLmNvbT4KPj4+ICsgKgo+Pj4gKyAqIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Cj4+PiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKPj4+ICsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgo+Pj4gKyAqIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4+PiArICoKPj4+ICsgKi8KPj4+ICsKPj4+ICsjaW5j bHVkZSA8ZHJtL2RybV9jcnRjLmg+Cj4+PiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIu aD4KPj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4KPj4+ICsKPj4+ICsjaW5jbHVk ZSAiaGlibWNfZHJtX2Rydi5oIgo+Pj4gKwo+Pj4gKy8qCj4+PiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCj4+ Cj4+Cj4+IFBsZWFzZSByZW1vdmUKPgo+Cj4gd2lsbCBkbyB0aGF0LCB0aGFua3MuCj4KPgo+Pgo+ Pj4gKwo+Pj4gK3N0YXRpYyBpbnQgaGlibWNmYl9jcmVhdGVfb2JqZWN0KAo+Pj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaGlibWNfZHJtX2RldmljZSAqaGlkZXYsCj4+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9m Yl9jbWQyICptb2RlX2NtZCwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICoqZ29ial9wKQo+Pj4gK3sKPj4+ICsgICAgICAgc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpnb2JqOwo+Pj4gKyAgICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g aGlkZXYtPmRldjsKPj4+ICsgICAgICAgdTMyIHNpemU7Cj4+PiArICAgICAgIGludCByZXQgPSAw Owo+Pj4gKwo+Pj4gKyAgICAgICBzaXplID0gbW9kZV9jbWQtPnBpdGNoZXNbMF0gKiBtb2RlX2Nt ZC0+aGVpZ2h0Owo+Pj4gKyAgICAgICByZXQgPSBoaWJtY19nZW1fY3JlYXRlKGRldiwgc2l6ZSwg dHJ1ZSwgJmdvYmopOwo+Pj4gKyAgICAgICBpZiAocmV0KQo+Pj4gKyAgICAgICAgICAgICAgIHJl dHVybiByZXQ7Cj4+PiArCj4+PiArICAgICAgICpnb2JqX3AgPSBnb2JqOwo+Pj4gKyAgICAgICBy ZXR1cm4gcmV0Owo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgc3RydWN0IGZiX29wcyBoaWJtY19k cm1fZmJfb3BzID0gewo+Pj4gKyAgICAgICAub3duZXIgPSBUSElTX01PRFVMRSwKPj4+ICsgICAg ICAgLmZiX2NoZWNrX3ZhciA9IGRybV9mYl9oZWxwZXJfY2hlY2tfdmFyLAo+Pj4gKyAgICAgICAu ZmJfc2V0X3BhciA9IGRybV9mYl9oZWxwZXJfc2V0X3BhciwKPj4+ICsgICAgICAgLmZiX2ZpbGxy ZWN0ID0gZHJtX2ZiX2hlbHBlcl9zeXNfZmlsbHJlY3QsCj4+PiArICAgICAgIC5mYl9jb3B5YXJl YSA9IGRybV9mYl9oZWxwZXJfc3lzX2NvcHlhcmVhLAo+Pj4gKyAgICAgICAuZmJfaW1hZ2VibGl0 ID0gZHJtX2ZiX2hlbHBlcl9zeXNfaW1hZ2VibGl0LAo+Pj4gKyAgICAgICAuZmJfcGFuX2Rpc3Bs YXkgPSBkcm1fZmJfaGVscGVyX3Bhbl9kaXNwbGF5LAo+Pj4gKyAgICAgICAuZmJfYmxhbmsgPSBk cm1fZmJfaGVscGVyX2JsYW5rLAo+Pj4gKyAgICAgICAuZmJfc2V0Y21hcCA9IGRybV9mYl9oZWxw ZXJfc2V0Y21hcCwKPj4+ICt9Owo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQgaGlibWNfZHJtX2ZiX2Ny ZWF0ZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyLAo+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBkcm1fZmJfaGVscGVyX3N1cmZhY2Vfc2l6ZSAqc2l6ZXMpCj4+ PiArewo+Pj4gKyAgICAgICBzdHJ1Y3QgaGlibWNfZmJkZXYgKmhpX2ZiZGV2ID0KPj4+ICsgICAg ICAgICAgICAgICBjb250YWluZXJfb2YoaGVscGVyLCBzdHJ1Y3QgaGlibWNfZmJkZXYsIGhlbHBl cik7Cj4+PiArICAgICAgIHN0cnVjdCBoaWJtY19kcm1fZGV2aWNlICpoaWRldiA9Cj4+PiArICAg ICAgICAgICAgICAgKHN0cnVjdCBoaWJtY19kcm1fZGV2aWNlICopaGVscGVyLT5kZXYtPmRldl9w cml2YXRlOwo+Pj4gKyAgICAgICBzdHJ1Y3QgZmJfaW5mbyAqaW5mbzsKPj4+ICsgICAgICAgc3Ry dWN0IGhpYm1jX2ZyYW1lYnVmZmVyICpoaWJtY19mYjsKPj4+ICsgICAgICAgc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmI7Cj4+PiArICAgICAgIHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyIG1vZGVf Y21kOwo+Pj4gKyAgICAgICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdvYmogPSBOVUxMOwo+Pj4g KyAgICAgICBpbnQgcmV0ID0gMDsKPj4+ICsgICAgICAgc2l6ZV90IHNpemU7Cj4+PiArICAgICAg IHVuc2lnbmVkIGludCBieXRlc19wZXJfcGl4ZWw7Cj4+PiArICAgICAgIHN0cnVjdCBoaWJtY19i byAqYm8gPSBOVUxMOwo+Pj4gKwo+Pj4gKyAgICAgICBEUk1fREVCVUdfRFJJVkVSKCJzdXJmYWNl IHdpZHRoKCVkKSwgaGVpZ2h0KCVkKSBhbmQgYnBwKCVkKVxuIiwKPj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICBzaXplcy0+c3VyZmFjZV93aWR0aCwgc2l6ZXMtPnN1cmZhY2VfaGVpZ2h0LAo+ Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzLT5zdXJmYWNlX2JwcCk7Cj4+PiArICAg ICAgIHNpemVzLT5zdXJmYWNlX2RlcHRoID0gMzI7Cj4+PiArCj4+PiArICAgICAgIGJ5dGVzX3Bl cl9waXhlbCA9IERJVl9ST1VORF9VUChzaXplcy0+c3VyZmFjZV9icHAsIDgpOwo+Pj4gKwo+Pj4g KyAgICAgICBtb2RlX2NtZC53aWR0aCA9IHNpemVzLT5zdXJmYWNlX3dpZHRoOwo+Pj4gKyAgICAg ICBtb2RlX2NtZC5oZWlnaHQgPSBzaXplcy0+c3VyZmFjZV9oZWlnaHQ7Cj4+PiArICAgICAgIG1v ZGVfY21kLnBpdGNoZXNbMF0gPSBtb2RlX2NtZC53aWR0aCAqIGJ5dGVzX3Blcl9waXhlbDsKPj4+ ICsgICAgICAgbW9kZV9jbWQucGl4ZWxfZm9ybWF0ID0KPj4+IGRybV9tb2RlX2xlZ2FjeV9mYl9m b3JtYXQoc2l6ZXMtPnN1cmZhY2VfYnBwLAo+Pj4gKwo+Pj4gc2l6ZXMtPnN1cmZhY2VfZGVwdGgp Owo+Pj4gKwo+Pj4gKyAgICAgICBzaXplID0gcm91bmR1cChtb2RlX2NtZC5waXRjaGVzWzBdICog bW9kZV9jbWQuaGVpZ2h0LCBQQUdFX1NJWkUpOwo+Pgo+Pgo+PiBJdCdzIHNvbWV3aGF0IGN1cmlv dXMgdGhhdCB5b3UgdXNlZCBBTElHTiBpbiB0aGUgcHJldmlvdXMgcGF0Y2ggYW5kCj4+IHJvdW5k dXAgaGVyZS4gQnV0IGFueXdheXMsIEkgdGhpbmsgUEFHRV9BTElHTiB3b3VsZCBiZSB0aGUgbW9z dAo+PiBhcHByb3ByaWF0ZSB0aGluZyB0byBkbyBoZXJlLgo+Cj4KPiBhZ3JlZWQsIHRoYW5rcy4K Pgo+Pgo+Pj4gKwo+Pj4gKyAgICAgICByZXQgPSBoaWJtY2ZiX2NyZWF0ZV9vYmplY3QoaGlkZXYs ICZtb2RlX2NtZCwgJmdvYmopOwo+Pj4gKyAgICAgICBpZiAocmV0KSB7Cj4+PiArICAgICAgICAg ICAgICAgRFJNX0VSUk9SKCJmYWlsZWQgdG8gY3JlYXRlIGZiY29uIGJhY2tpbmcgb2JqZWN0ICVk XHJcbiIsCj4+Cj4+IHJldCk7Cj4+Cj4+IFxyLCB5aWtlcyEhIQo+Cj4KPiB3aWxsIGRlbGV0ZSBp dCwgdGhhbmtzLgo+Cj4+Cj4+PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4+PiAr ICAgICAgIH0KPj4+ICsKPj4+ICsgICAgICAgYm8gPSBnZW1fdG9faGlibWNfYm8oZ29iaik7Cj4+ PiArCj4+PiArICAgICAgIHJldCA9IHR0bV9ib19yZXNlcnZlKCZiby0+Ym8sIHRydWUsIGZhbHNl LCBOVUxMKTsKPj4+ICsgICAgICAgaWYgKHJldCkKPj4KPj4KPj4gUHJpbnQgZXJyb3IgaGVyZT8K Pgo+Cj4gd2lsbCBkby4KPgo+Pgo+PiBIb3cgYWJvdXQgY2xlYW5pbmcgdXAgZ29iaj8KPgo+Cj4g eW91IGFyZSByaWdodCwKPgo+Pgo+Pj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+PiAr Cj4+PiArICAgICAgIHJldCA9IGhpYm1jX2JvX3BpbihibywgVFRNX1BMX0ZMQUdfVlJBTSwgTlVM TCk7Cj4+PiArICAgICAgIGlmIChyZXQpIHsKPj4+ICsgICAgICAgICAgICAgICBEUk1fRVJST1Io ImZhaWxlZCB0byBwaW4gZmJjb25cbiIpOwo+Pgo+Pgo+PiBQcmludCByZXQKPj4KPj4gdHRtX2Jv X3VucmVzZXJ2ZT8gSXQgc2VlbXMgbGlrZSB5b3UncmUgbWlzc2luZyBjbGVhbi11cCBpbiBhbGwg b2YgdGhlCj4+IGVycm9yIHBhdGhzIGluIHRoaXMgZnVuY3Rpb24uIENhbiB5b3UgcGxlYXNlIG1h a2Ugc3VyZSBldmVyeXRoaW5nIGlzCj4+IHRpZGllZCB1cD8KPgo+Cj4gb2ssIHRoYW5rcy4KPgo+ Pgo+Pj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+PiArICAgICAgIH0KPj4+ICsKPj4+ ICsgICAgICAgcmV0ID0gdHRtX2JvX2ttYXAoJmJvLT5ibywgMCwgYm8tPmJvLm51bV9wYWdlcywg JmJvLT5rbWFwKTsKPj4+ICsKPj4KPj4KPj4gbml0OiBleHRyYSBzcGFjZQo+Cj4KPiBkbyB5b3Ug bWVhbiBleHRyYSBsaW5lPwo+Cgp5ZXMsIGFwb2xvZ2llcy4KCj4+Cj4+PiArICAgICAgIGlmIChy ZXQpIHsKPj4+ICsgICAgICAgICAgICAgICBEUk1fRVJST1IoImZhaWxlZCB0byBrbWFwIGZiY29u XG4iKTsKPj4KPj4KPj4gUHJpbnQgcmV0Cj4KPgo+IG9rLCB0aGFua3MuCj4KPj4KPj4+ICsgICAg ICAgICAgICAgICB0dG1fYm9fdW5yZXNlcnZlKCZiby0+Ym8pOwo+Pj4gKyAgICAgICAgICAgICAg IHJldHVybiByZXQ7Cj4+PiArICAgICAgIH0KPj4+ICsKPj4+ICsgICAgICAgdHRtX2JvX3VucmVz ZXJ2ZSgmYm8tPmJvKTsKPj4KPj4KPj4gTW92ZSB0aGlzIGJldHdlZW4gdHRtX2JvX2ttYXAgYW5k IGlmIChyZXQpLCB0aGVuIHJlbW92ZSBpdCBmcm9tIGluc2lkZQo+PiB0aGUgY29uZGl0aW9uYWwu Cj4KPgo+IFRoaXMgaXMgZmluZSB3aXRoIG1lLCB0aGFua3MuCj4KPj4KPj4+ICsKPj4+ICsgICAg ICAgaW5mbyA9IGRybV9mYl9oZWxwZXJfYWxsb2NfZmJpKGhlbHBlcik7Cj4+PiArICAgICAgIGlm IChJU19FUlIoaW5mbykpCj4+Cj4+Cj4+IFByaW50IGVycm9yCj4KPgo+IG9rLCB0aGFua3MuCj4K Pj4KPj4+ICsgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihpbmZvKTsKPj4+ICsKPj4+ICsg ICAgICAgaW5mby0+cGFyID0gaGlfZmJkZXY7Cj4+PiArCj4+PiArICAgICAgIGhpYm1jX2ZiID0g aGlibWNfZnJhbWVidWZmZXJfaW5pdChoaWRldi0+ZGV2LCAmbW9kZV9jbWQsIGdvYmopOwo+Pj4g KyAgICAgICBpZiAoSVNfRVJSKGhpYm1jX2ZiKSkgewo+Pj4gKyAgICAgICAgICAgICAgIGRybV9m Yl9oZWxwZXJfcmVsZWFzZV9mYmkoaGVscGVyKTsKPj4+ICsgICAgICAgICAgICAgICByZXR1cm4g UFRSX0VSUihoaWJtY19mYik7Cj4+PiArICAgICAgIH0KPj4+ICsKPj4+ICsgICAgICAgaGlfZmJk ZXYtPmZiID0gaGlibWNfZmI7Cj4+PiArICAgICAgIGhpZGV2LT5mYmRldi0+c2l6ZSA9IHNpemU7 Cj4+PiArICAgICAgIGZiID0gJmhpYm1jX2ZiLT5mYjsKPj4KPj4KPj4gVGhlIGZiIHZhcmlhYmxl IGlzbid0IG5lY2Vzc2FyeSwgYW5kIHJlYWxseSwgdGhlIGhpYm1jX2ZiIGRvZXNuJ3QKPj4gcmVh bGx5IGhlbHAgZWl0aGVyLCBpdCBqdXN0IG1hc2tzIHdoYXQncyBhY3R1YWxseSBoYXBwZW5pbmcg SU1PLgo+Cj4KPiBpIHdpbGwgY2xlYW4gdGhlIHR3byB2YXJpYWJsZXMuCj4KPgo+Pgo+Pj4gKyAg ICAgICBpZiAoIWZiKSB7Cj4+PiArICAgICAgICAgICAgICAgRFJNX0lORk8oImZiIGlzIE5VTExc biIpOwo+Pj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Pj4gKyAgICAgICB9Cj4+ PiArCj4+PiArICAgICAgIGhpX2ZiZGV2LT5oZWxwZXIuZmIgPSBmYjsKPj4+ICsKPj4+ICsgICAg ICAgc3RyY3B5KGluZm8tPmZpeC5pZCwgImhpYm1jZHJtZmIiKTsKPj4+ICsKPj4+ICsgICAgICAg aW5mby0+ZmxhZ3MgPSBGQklORk9fREVGQVVMVDsKPj4+ICsgICAgICAgaW5mby0+ZmJvcHMgPSAm aGlibWNfZHJtX2ZiX29wczsKPj4+ICsKPj4+ICsgICAgICAgZHJtX2ZiX2hlbHBlcl9maWxsX2Zp eChpbmZvLCBmYi0+cGl0Y2hlc1swXSwgZmItPmRlcHRoKTsKPj4+ICsgICAgICAgZHJtX2ZiX2hl bHBlcl9maWxsX3ZhcihpbmZvLCAmaGlkZXYtPmZiZGV2LT5oZWxwZXIsCj4+PiBzaXplcy0+ZmJf d2lkdGgsCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXMtPmZiX2hlaWdo dCk7Cj4+PiArCj4+PiArICAgICAgIGluZm8tPnNjcmVlbl9iYXNlID0gYm8tPmttYXAudmlydHVh bDsKPj4+ICsgICAgICAgaW5mby0+c2NyZWVuX3NpemUgPSBzaXplOwo+Pj4gKwo+Pj4gKyAgICAg ICBpbmZvLT5maXguc21lbV9zdGFydCA9IGJvLT5iby5tZW0uYnVzLm9mZnNldCArCj4+PiBiby0+ Ym8ubWVtLmJ1cy5iYXNlOwo+Pj4gKyAgICAgICBpbmZvLT5maXguc21lbV9sZW4gPSBzaXplOwo+ Pj4gKwo+Pj4gKyAgICAgICByZXR1cm4gMDsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIHZvaWQg aGlibWNfZmJkZXZfZGVzdHJveShzdHJ1Y3QgaGlibWNfZmJkZXYgKmZiZGV2KQo+Pj4gK3sKPj4+ ICsgICAgICAgc3RydWN0IGhpYm1jX2ZyYW1lYnVmZmVyICpnZmIgPSBmYmRldi0+ZmI7Cj4+PiAr ICAgICAgIHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYmggPSAmZmJkZXYtPmhlbHBlcjsKPj4+ICsK Pj4+ICsgICAgICAgRFJNX0RFQlVHX0RSSVZFUigiaGlibWNfZmJkZXZfZGVzdHJveVxuIik7Cj4+ Cj4+Cj4+IE5vdCB1c2VmdWwKPgo+Cj4gb2ssIHdpbGwgcmVtb3ZlLgo+Cj4KPj4KPj4+ICsKPj4+ ICsgICAgICAgZHJtX2ZiX2hlbHBlcl91bnJlZ2lzdGVyX2ZiaShmYmgpOwo+Pj4gKyAgICAgICBk cm1fZmJfaGVscGVyX3JlbGVhc2VfZmJpKGZiaCk7Cj4+PiArCj4+PiArICAgICAgIGRybV9mYl9o ZWxwZXJfZmluaShmYmgpOwo+Pj4gKwo+Pj4gKyAgICAgICBpZiAoZ2ZiKQo+Pj4gKyAgICAgICAg ICAgICAgIGRybV9mcmFtZWJ1ZmZlcl91bnJlZmVyZW5jZSgmZ2ZiLT5mYik7Cj4+PiArCj4+PiAr ICAgICAgIGtmcmVlKGZiZGV2KTsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGNvbnN0IHN0cnVj dCBkcm1fZmJfaGVscGVyX2Z1bmNzIGhpYm1jX2ZiZGV2X2hlbHBlcl9mdW5jcyA9IHsKPj4+ICsg ICAgICAgLmZiX3Byb2JlID0gaGlibWNfZHJtX2ZiX2NyZWF0ZSwKPj4+ICt9Owo+Pj4gKwo+Pj4g K2ludCBoaWJtY19mYmRldl9pbml0KHN0cnVjdCBoaWJtY19kcm1fZGV2aWNlICpoaWRldikKPj4+ ICt7Cj4+PiArICAgICAgIGludCByZXQ7Cj4+PiArICAgICAgIHN0cnVjdCBmYl92YXJfc2NyZWVu aW5mbyAqdmFyOwo+Pj4gKyAgICAgICBzdHJ1Y3QgZmJfZml4X3NjcmVlbmluZm8gKmZpeDsKPj4+ ICsgICAgICAgc3RydWN0IGhpYm1jX2ZiZGV2ICpoaWZiZGV2Owo+Pj4gKwo+Pj4gKyAgICAgICBo aWZiZGV2ID0ga3phbGxvYyhzaXplb2YoKmhpZmJkZXYpLCBHRlBfS0VSTkVMKTsKPj4KPj4KPj4g ZGV2bV9remFsbG9jPwo+Cj4KPiBzb3VuZHMgZ29vZCwgc28gdGhlcmUgbmVlZCBubyBrZnJlZSBh dCBoaWJtY19mYmRldl9kZXN0cm95KCksCj4gdGhhbmtzLgo+Cgp5ZXAsIGV4YWN0bHkKCj4+Cj4+ PiArICAgICAgIGlmICghaGlmYmRldikKPj4+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT01F TTsKPj4+ICsKPj4+ICsgICAgICAgaGlkZXYtPmZiZGV2ID0gaGlmYmRldjsKPj4+ICsgICAgICAg ZHJtX2ZiX2hlbHBlcl9wcmVwYXJlKGhpZGV2LT5kZXYsICZoaWZiZGV2LT5oZWxwZXIsCj4+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGlibWNfZmJkZXZfaGVscGVyX2Z1bmNzKTsK Pj4+ICsKPj4+ICsgICAgICAgLyogTm93IGp1c3Qgb25lIGNydGMgYW5kIG9uZSBjaGFubmVsICov Cj4+PiArICAgICAgIHJldCA9IGRybV9mYl9oZWxwZXJfaW5pdChoaWRldi0+ZGV2LAo+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhpZmJkZXYtPmhlbHBlciwgMSwgMSk7Cj4+ PiArCj4+Cj4+Cj4+IG5pdDogZXh0cmEgbGluZQo+Cj4KPiBvaywgdGhhbmtzLgo+Cj4KPj4KPj4+ ICsgICAgICAgaWYgKHJldCkKPj4+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+Pj4gKwo+ Pj4gKyAgICAgICByZXQgPSBkcm1fZmJfaGVscGVyX3NpbmdsZV9hZGRfYWxsX2Nvbm5lY3RvcnMo JmhpZmJkZXYtPmhlbHBlcik7Cj4+PiArICAgICAgIGlmIChyZXQpCj4+PiArICAgICAgICAgICAg ICAgZ290byBmaW5pOwo+Pj4gKwo+Pj4gKyAgICAgICByZXQgPSBkcm1fZmJfaGVscGVyX2luaXRp YWxfY29uZmlnKCZoaWZiZGV2LT5oZWxwZXIsIDE2KTsKPj4+ICsgICAgICAgaWYgKHJldCkKPj4+ ICsgICAgICAgICAgICAgICBnb3RvIGZpbmk7Cj4+PiArCj4+PiArICAgICAgIHZhciA9ICZoaWZi ZGV2LT5oZWxwZXIuZmJkZXYtPnZhcjsKPj4+ICsgICAgICAgZml4ID0gJmhpZmJkZXYtPmhlbHBl ci5mYmRldi0+Zml4Owo+Pj4gKwo+Pj4gKyAgICAgICBEUk1fREVCVUcoIk1lbWJlciBvZiBpbmZv LT52YXIgaXMgOlxuIgo+Pj4gKyAgICAgICAgICAgICAgICAieHJlcz0lZFxuIgo+Pj4gKyAgICAg ICAgICAgICAgICAieXJlcz0lZFxuIgo+Pj4gKyAgICAgICAgICAgICAgICAieHJlc192aXJ0dWFs PSVkXG4iCj4+PiArICAgICAgICAgICAgICAgICJ5cmVzX3ZpcnR1YWw9JWRcbiIKPj4+ICsgICAg ICAgICAgICAgICAgInhvZmZzZXQ9JWRcbiIKPj4+ICsgICAgICAgICAgICAgICAgInlvZmZzZXQ9 JWRcbiIKPj4+ICsgICAgICAgICAgICAgICAgImJpdHNfcGVyX3BpeGVsPSVkXG4iCj4+PiArICAg ICAgICAgICAgICAgICIuLi5cbiIsIHZhci0+eHJlcywgdmFyLT55cmVzLCB2YXItPnhyZXNfdmly dHVhbCwKPj4+ICsgICAgICAgICAgICAgICAgdmFyLT55cmVzX3ZpcnR1YWwsIHZhci0+eG9mZnNl dCwgdmFyLT55b2Zmc2V0LAo+Pj4gKyAgICAgICAgICAgICAgICB2YXItPmJpdHNfcGVyX3BpeGVs KTsKPj4+ICsgICAgICAgRFJNX0RFQlVHKCJNZW1iZXIgb2YgaW5mby0+Zml4IGlzIDpcbiIKPj4+ ICsgICAgICAgICAgICAgICAgInNtZW1fc3RhcnQ9JWx4XG4iCj4+PiArICAgICAgICAgICAgICAg ICJzbWVtX2xlbj0lZFxuIgo+Pj4gKyAgICAgICAgICAgICAgICAidHlwZT0lZFxuIgo+Pj4gKyAg ICAgICAgICAgICAgICAidHlwZV9hdXg9JWRcbiIKPj4+ICsgICAgICAgICAgICAgICAgInZpc3Vh bD0lZFxuIgo+Pj4gKyAgICAgICAgICAgICAgICAieHBhbnN0ZXA9JWRcbiIKPj4+ICsgICAgICAg ICAgICAgICAgInlwYW5zdGVwPSVkXG4iCj4+PiArICAgICAgICAgICAgICAgICJ5d3JhcHN0ZXA9 JWRcbiIKPj4+ICsgICAgICAgICAgICAgICAgImxpbmVfbGVuZ3RoPSVkXG4iCj4+PiArICAgICAg ICAgICAgICAgICJhY2NlbD0lZFxuIgo+Pj4gKyAgICAgICAgICAgICAgICAiY2FwYWJpbGl0aWVz PSVkXG4iCj4+PiArICAgICAgICAgICAgICAgICIuLi5cbiIsIGZpeC0+c21lbV9zdGFydCwgZml4 LT5zbWVtX2xlbiwgZml4LT50eXBlLAo+Pj4gKyAgICAgICAgICAgICAgICBmaXgtPnR5cGVfYXV4 LCBmaXgtPnZpc3VhbCwgZml4LT54cGFuc3RlcCwKPj4+ICsgICAgICAgICAgICAgICAgZml4LT55 cGFuc3RlcCwgZml4LT55d3JhcHN0ZXAsIGZpeC0+bGluZV9sZW5ndGgsCj4+PiArICAgICAgICAg ICAgICAgIGZpeC0+YWNjZWwsIGZpeC0+Y2FwYWJpbGl0aWVzKTsKPj4KPj4KPj4gWW91J3ZlIGJl ZW4gdXNpbmcgRFJNX0RFQlVHX0RSSVZFUiBlbHNld2hlcmUsIHlvdSBzaG91bGQgcHJvYmFibHkg dXNlCj4+IGl0IGhlcmUsIHRvby4KPgo+Cj4gb2ssIHRoYW5rcy4KPgo+Cj4+Cj4+PiArCj4+PiAr ICAgICAgIHJldHVybiAwOwo+Pj4gKwo+Pj4gK2Zpbmk6Cj4+PiArICAgICAgIGRybV9mYl9oZWxw ZXJfZmluaSgmaGlmYmRldi0+aGVscGVyKTsKPj4+ICsgICAgICAgcmV0dXJuIHJldDsKPj4+ICt9 Cj4+PiArCj4+PiArdm9pZCBoaWJtY19mYmRldl9maW5pKHN0cnVjdCBoaWJtY19kcm1fZGV2aWNl ICpoaWRldikKPj4+ICt7Cj4+PiArICAgICAgIGlmICghaGlkZXYtPmZiZGV2KQo+Pj4gKyAgICAg ICAgICAgICAgIHJldHVybjsKPj4+ICsKPj4+ICsgICAgICAgaGlibWNfZmJkZXZfZGVzdHJveSho aWRldi0+ZmJkZXYpOwo+Pj4gKyAgICAgICBoaWRldi0+ZmJkZXYgPSBOVUxMOwo+Pj4gK30KPj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2hpYm1jL2hpYm1jX3R0bS5j Cj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGlibWMvaGlibWNfdHRtLmMKPj4+IGlu ZGV4IDA4MDJlYmQuLjk4MjJmNjIgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaGlz aWxpY29uL2hpYm1jL2hpYm1jX3R0bS5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaGlzaWxp Y29uL2hpYm1jL2hpYm1jX3R0bS5jCj4+PiBAQCAtNDg4LDMgKzQ4OCw2OSBAQCBpbnQgaGlibWNf ZHVtYl9tbWFwX29mZnNldChzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCj4+PiBzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+Pj4gICAgICAgICAgZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2VfdW5sb2Nr ZWQob2JqKTsKPj4+ICAgICAgICAgIHJldHVybiAwOwo+Pj4gICB9Cj4+PiArCj4+PiArLyoKPj4+ IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0gKi8KPj4+ICsKPj4KPj4KPj4gUGxlYXNlIHJlbW92ZQo+Cj4KPiB3aWxs IGRvLgo+Cj4+Cj4+PiArc3RhdGljIHZvaWQgaGlibWNfdXNlcl9mcmFtZWJ1ZmZlcl9kZXN0cm95 KHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiKQo+Pj4gK3sKPj4+ICsgICAgICAgc3RydWN0IGhp Ym1jX2ZyYW1lYnVmZmVyICpoaWJtY19mYiA9IHRvX2hpYm1jX2ZyYW1lYnVmZmVyKGZiKTsKPj4+ ICsKPj4+ICsgICAgICAgZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2VfdW5sb2NrZWQoaGlibWNf ZmItPm9iaik7Cj4+PiArICAgICAgIGRybV9mcmFtZWJ1ZmZlcl9jbGVhbnVwKGZiKTsKPj4+ICsg ICAgICAga2ZyZWUoaGlibWNfZmIpOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlcl9mdW5jcyBoaWJtY19mYl9mdW5jcyA9IHsKPj4+ICsgICAgICAg LmRlc3Ryb3kgPSBoaWJtY191c2VyX2ZyYW1lYnVmZmVyX2Rlc3Ryb3ksCj4+PiArfTsKPj4+ICsK Pj4+ICtzdHJ1Y3QgaGlibWNfZnJhbWVidWZmZXIgKgo+Pj4gK2hpYm1jX2ZyYW1lYnVmZmVyX2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgY29u c3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1vZGVfY21kLAo+Pj4gKyAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKPj4+ICt7Cj4+PiArICAgICAgIHN0 cnVjdCBoaWJtY19mcmFtZWJ1ZmZlciAqaGlibWNfZmI7Cj4+PiArICAgICAgIGludCByZXQ7Cj4+ PiArCj4+PiArICAgICAgIGhpYm1jX2ZiID0ga3phbGxvYyhzaXplb2YoKmhpYm1jX2ZiKSwgR0ZQ X0tFUk5FTCk7Cj4+PiArICAgICAgIGlmICghaGlibWNfZmIpCj4+Cj4+Cj4+IFByaW50IGVycm9y Cj4KPgo+IG9rLCB0aGFua3MuCj4KPiBSZWdhcmRzLAo+IFJvbmdyb25nLgo+Cj4+Cj4+PiArICAg ICAgICAgICAgICAgcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4+PiArCj4+PiArICAgICAgIGRy bV9oZWxwZXJfbW9kZV9maWxsX2ZiX3N0cnVjdCgmaGlibWNfZmItPmZiLCBtb2RlX2NtZCk7Cj4+ PiArICAgICAgIGhpYm1jX2ZiLT5vYmogPSBvYmo7Cj4+PiArICAgICAgIHJldCA9IGRybV9mcmFt ZWJ1ZmZlcl9pbml0KGRldiwgJmhpYm1jX2ZiLT5mYiwgJmhpYm1jX2ZiX2Z1bmNzKTsKPj4+ICsg ICAgICAgaWYgKHJldCkgewo+Pj4gKyAgICAgICAgICAgICAgIERSTV9FUlJPUigiZHJtX2ZyYW1l YnVmZmVyX2luaXQgZmFpbGVkOiAlZFxuIiwgcmV0KTsKPj4+ICsgICAgICAgICAgICAgICBrZnJl ZShoaWJtY19mYik7Cj4+PiArICAgICAgICAgICAgICAgcmV0dXJuIEVSUl9QVFIocmV0KTsKPj4+ ICsgICAgICAgfQo+Pj4gKwo+Pj4gKyAgICAgICByZXR1cm4gaGlibWNfZmI7Cj4+PiArfQo+Pj4g Kwo+Pj4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICoKPj4+ICtoaWJtY191c2VyX2Zy YW1lYnVmZmVyX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+Pj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9maWxlICpmaWxwLAo+Pj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1vZGVfY21k KQo+Pj4gK3sKPj4+ICsgICAgICAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmo7Cj4+PiArICAg ICAgIHN0cnVjdCBoaWJtY19mcmFtZWJ1ZmZlciAqaGlibWNfZmI7Cj4+PiArCj4+PiArICAgICAg IERSTV9ERUJVR19EUklWRVIoIiVkeCVkLCBmb3JtYXQgJWMlYyVjJWNcbiIsCj4+PiArICAgICAg ICAgICAgICAgICAgICAgICAgbW9kZV9jbWQtPndpZHRoLCBtb2RlX2NtZC0+aGVpZ2h0LAo+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0KSAmIDB4ZmYs Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVfY21kLT5waXhlbF9mb3JtYXQgPj4g OCkgICYgMHhmZiwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAobW9kZV9jbWQtPnBpeGVs X2Zvcm1hdCA+PiAxNikgJiAweGZmLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgIChtb2Rl X2NtZC0+cGl4ZWxfZm9ybWF0ID4+IDI0KSAmIDB4ZmYpOwo+Pj4gKwo+Pj4gKyAgICAgICBvYmog PSBkcm1fZ2VtX29iamVjdF9sb29rdXAoZmlscCwgbW9kZV9jbWQtPmhhbmRsZXNbMF0pOwo+Pj4g KyAgICAgICBpZiAoIW9iaikKPj4+ICsgICAgICAgICAgICAgICByZXR1cm4gRVJSX1BUUigtRU5P RU5UKTsKPj4+ICsKPj4+ICsgICAgICAgaGlibWNfZmIgPSBoaWJtY19mcmFtZWJ1ZmZlcl9pbml0 KGRldiwgbW9kZV9jbWQsIG9iaik7Cj4+PiArICAgICAgIGlmIChJU19FUlIoaGlibWNfZmIpKSB7 Cj4+PiArICAgICAgICAgICAgICAgZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2VfdW5sb2NrZWQo b2JqKTsKPj4+ICsgICAgICAgICAgICAgICByZXR1cm4gRVJSX1BUUigobG9uZyloaWJtY19mYik7 Cj4+PiArICAgICAgIH0KPj4+ICsgICAgICAgcmV0dXJuICZoaWJtY19mYi0+ZmI7Cj4+PiArfQo+ Pj4gLS0KPj4+IDEuOS4xCj4+Pgo+Pj4KPj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCj4+PiBsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdAo+Pj4g bGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCj4+PiBodHRwOi8vbGlzdHMuaW5m cmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwKPj4KPj4gX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gbGludXhhcm0gbWFp bGluZyBsaXN0Cj4+IGxpbnV4YXJtQGh1YXdlaS5jb20KPj4gaHR0cDovL3JuZC1vcGVuZXVsZXIu aHVhd2VpLmNvbS9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4YXJtCj4+Cj4+IC4KPj4KPgo+IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gbGludXgtYXJtLWtl cm5lbCBtYWlsaW5nIGxpc3QKPiBsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcK PiBodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1r ZXJuZWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJp LWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==