From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan De Oliveira Subject: Re: [PATCH v2] drm/i915/glk: Reuse broxton code for geminilake Date: Fri, 11 Nov 2016 15:53:23 +0200 Message-ID: <1478872403.5129.7.camel@gmail.com> References: <1478871063-7238-1-git-send-email-ander.conselvan.de.oliveira@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pg0-x242.google.com (mail-pg0-x242.google.com [IPv6:2607:f8b0:400e:c05::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 872436E8EC for ; Fri, 11 Nov 2016 13:53:30 +0000 (UTC) Received: by mail-pg0-x242.google.com with SMTP id e9so1648669pgc.1 for ; Fri, 11 Nov 2016 05:53:30 -0800 (PST) In-Reply-To: <1478871063-7238-1-git-send-email-ander.conselvan.de.oliveira@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org, rodrigo.vivi@gmail.com List-Id: intel-gfx@lists.freedesktop.org UmVzZW50IHdpdGggcHJvcGVyIC0taW4tcmVwbHktdG8gLiBQbGVhc2UgaWdub3JlLgoKT24gRnJp LCAyMDE2LTExLTExIGF0IDE1OjMxICswMjAwLCBBbmRlciBDb25zZWx2YW4gZGUgT2xpdmVpcmEg d3JvdGU6Cj4gR2VtaW5pbGFrZSBpcyBtb3N0bHkgYmFja3dhcmRzIGNvbXBhdGlibGUgd2l0aCBi cm94dG9uLCBzbyBjaGFuZ2UgbW9zdAo+IG9mIHRoZSBJU19CUk9YVE9OKCkgY2hlY2tzIHRvIElT X0dFTjlfTFAoKS4gRGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUKPiBwbGF0Zm9ybXMgd2lsbCBiZSBp bXBsZW1lbnRlZCBpbiBmb2xsb3ctdXAgcGF0Y2hlcy4KPiAKPiB2MjogRG9uJ3QgcmV1c2UgYnJv eHRvbidzIHBhdGggaW4gaW50ZWxfdXBkYXRlX21heF9jZGNsaygpLgo+IMKgwqDCoMKgRG9uJ3Qg c2V0IHBsYW5lIGNvdW50IGFzIGluIGJyb3h0b24uCj4gCj4gdjM6IFJlYmFzZQo+IAo+IHY0OiBJ bmNsdWRlIHRoZSBjaGVjayBpbnRlbF9iaW9zX2lzX3BvcnRfaHBkX2ludmVydGVkKCkuCj4gwqDC oMKgwqBDb21taXQgbWVzc2FnZS4KPiAKPiB2NTogTGVhdmUgaTkxNV9kbWNfaW5mbygpIG91dDsg Z2xrJ3MgY3NyIHZlcnNpb24gIT0gYnh0J3MuIChSb2RyaWdvKQo+IAo+IFNpZ25lZC1vZmYtYnk6 IEFuZGVyIENvbnNlbHZhbiBkZSBPbGl2ZWlyYSA8YW5kZXIuY29uc2VsdmFuLmRlLm9saXZlaXJh QGludGVsLgo+IGNvbT4KPiAtLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jwqDCoMKgwqDCoHwgMTAgKysrKystLS0tLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZ3R0LmPCoMKgwqDCoMKgfMKgwqA4ICsrKystLS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2lycS5jwqDCoMKgwqDCoMKgwqDCoMKgfCAxMCArKysrKy0tLS0tCj4gwqBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5owqDCoMKgwqDCoMKgwqDCoMKgfMKgwqA0ICsrLS0K PiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuY8KgwqDCoMKgwqDCoMKgfMKgwqAy ICstCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuY8KgwqDCoMKgwqDCoMKgwqB8 IDEwICsrKysrLS0tLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuY8Kg wqDCoMKgfMKgwqA4ICsrKystLS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5j wqDCoMKgwqDCoMKgwqDCoMKgfCAyMCArKysrKysrKysrLS0tLS0tLS0tLQo+IMKgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuY8KgwqDCoHzCoMKgMiArLQo+IMKgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHNpLmPCoMKgwqDCoMKgwqDCoMKgfCAyOCArKysrKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfcGxsLmPC oMKgwqDCoHwgMTIgKysrKysrLS0tLS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9o ZG1pLmPCoMKgwqDCoMKgwqDCoHzCoMKgNiArKystLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2kyYy5jwqDCoMKgwqDCoMKgwqDCoHzCoMKgNCArKy0tCj4gwqBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9tb2NzLmPCoMKgwqDCoMKgwqDCoHzCoMKgMiArLQo+IMKgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuY8KgwqDCoMKgwqDCoHzCoMKgMiArLQo+IMKgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uY8KgwqDCoMKgwqDCoMKgwqDCoHzCoMKgNiArKystLS0K PiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYyB8wqDCoDYgKysrLS0t Cj4gwqAxNyBmaWxlcyBjaGFuZ2VkLCA3MCBpbnNlcnRpb25zKCspLCA3MCBkZWxldGlvbnMoLSkK PiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gaW5kZXggYjY4MWQ0Mi4uNWQz NDlkNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTExMjgsNyAr MTEyOCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9mcmVxdWVuY3lfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUg Km0sIHZvaWQKPiAqdW51c2VkKQo+IMKgCQlpbnQgbWF4X2ZyZXE7Cj4gwqAKPiDCoAkJcnBfc3Rh dGVfbGltaXRzID0gSTkxNV9SRUFEKEdFTjZfUlBfU1RBVEVfTElNSVRTKTsKPiAtCQlpZiAoSVNf QlJPWFRPTihkZXZfcHJpdikpIHsKPiArCQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsKPiDC oAkJCXJwX3N0YXRlX2NhcCA9IEk5MTVfUkVBRChCWFRfUlBfU1RBVEVfQ0FQKTsKPiDCoAkJCWd0 X3BlcmZfc3RhdHVzID0gSTkxNV9SRUFEKEJYVF9HVF9QRVJGX1NUQVRVUyk7Cj4gwqAJCX0gZWxz ZSB7Cj4gQEAgLTEyMjQsNyArMTIyNCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9mcmVxdWVuY3lfaW5m byhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQKPiAqdW51c2VkKQo+IMKgCQlzZXFfcHJpbnRmKG0s ICJEb3duIHRocmVzaG9sZDogJWQlJVxuIiwKPiDCoAkJCcKgwqDCoGRldl9wcml2LT5ycHMuZG93 bl90aHJlc2hvbGQpOwo+IMKgCj4gLQkJbWF4X2ZyZXEgPSAoSVNfQlJPWFRPTihkZXZfcHJpdikg PyBycF9zdGF0ZV9jYXAgPj4gMCA6Cj4gKwkJbWF4X2ZyZXEgPSAoSVNfR0VOOV9MUChkZXZfcHJp dikgPyBycF9zdGF0ZV9jYXAgPj4gMCA6Cj4gwqAJCQnCoMKgwqDCoHJwX3N0YXRlX2NhcCA+PiAx NikgJiAweGZmOwo+IMKgCQltYXhfZnJlcSAqPSAoSVNfU0tZTEFLRShkZXZfcHJpdikgfHwgSVNf S0FCWUxBS0UoZGV2X3ByaXYpID8KPiDCoAkJCcKgwqDCoMKgwqBHRU45X0ZSRVFfU0NBTEVSIDog MSk7Cj4gQEAgLTEyMzcsNyArMTIzNyw3IEBAIHN0YXRpYyBpbnQgaTkxNV9mcmVxdWVuY3lfaW5m byhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQKPiAqdW51c2VkKQo+IMKgCQlzZXFfcHJpbnRmKG0s ICJOb21pbmFsIChSUDEpIGZyZXF1ZW5jeTogJWRNSHpcbiIsCj4gwqAJCQnCoMKgwqBpbnRlbF9n cHVfZnJlcShkZXZfcHJpdiwgbWF4X2ZyZXEpKTsKPiDCoAo+IC0JCW1heF9mcmVxID0gKElTX0JS T1hUT04oZGV2X3ByaXYpID8gcnBfc3RhdGVfY2FwID4+IDE2IDoKPiArCQltYXhfZnJlcSA9IChJ U19HRU45X0xQKGRldl9wcml2KSA/IHJwX3N0YXRlX2NhcCA+PiAxNiA6Cj4gwqAJCQnCoMKgwqDC oHJwX3N0YXRlX2NhcCA+PiAwKSAmIDB4ZmY7Cj4gwqAJCW1heF9mcmVxICo9IChJU19TS1lMQUtF KGRldl9wcml2KSB8fCBJU19LQUJZTEFLRShkZXZfcHJpdikgPwo+IMKgCQkJwqDCoMKgwqDCoEdF TjlfRlJFUV9TQ0FMRVIgOiAxKTsKPiBAQCAtNTE4NSw3ICs1MTg1LDcgQEAgc3RhdGljIHZvaWQg Z2VuOV9zc2V1X2RldmljZV9zdGF0dXMoc3RydWN0Cj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gwqAJdTMyIHNfcmVnW3NfbWF4XSwgZXVfcmVnWzIqc19tYXhdLCBldV9tYXNrWzJdOwo+ IMKgCj4gwqAJLyogQlhUIGhhcyBhIHNpbmdsZSBzbGljZSBhbmQgYXQgbW9zdCAzIHN1YnNsaWNl cy4gKi8KPiAtCWlmIChJU19CUk9YVE9OKGRldl9wcml2KSkgewo+ICsJaWYgKElTX0dFTjlfTFAo ZGV2X3ByaXYpKSB7Cj4gwqAJCXNfbWF4ID0gMTsKPiDCoAkJc3NfbWF4ID0gMzsKPiDCoAl9Cj4g QEAgLTUyMTksNyArNTIxOSw3IEBAIHN0YXRpYyB2b2lkIGdlbjlfc3NldV9kZXZpY2Vfc3RhdHVz KHN0cnVjdAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IMKgCQlmb3IgKHNzID0gMDsg c3MgPCBzc19tYXg7IHNzKyspIHsKPiDCoAkJCXVuc2lnbmVkIGludCBldV9jbnQ7Cj4gwqAKPiAt CQkJaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKSB7Cj4gKwkJCWlmIChJU19HRU45X0xQKGRldl9w cml2KSkgewo+IMKgCQkJCWlmICghKHNfcmVnW3NdICYgKEdFTjlfUEdDVExfU1NfQUNLKHNzKSkp KQo+IMKgCQkJCQkvKiBza2lwIGRpc2FibGVkIHN1YnNsaWNlICovCj4gwqAJCQkJCWNvbnRpbnVl Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+IGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBpbmRleCBhNWZhZmEzLi4zNjQ4 M2EyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBAQCAtMzc3LDcgKzM3 Nyw3IEBAIHN0YXRpYyB2b2lkIGt1bm1hcF9wYWdlX2RtYShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZQo+ICpkZXZfcHJpdiwgdm9pZCAqdmFkZHIpCj4gwqAJLyogVGhlcmUgYXJlIG9ubHkgZmV3IGV4 Y2VwdGlvbnMgZm9yIGdlbiA+PTYuIGNodiBhbmQgYnh0Lgo+IMKgCcKgKiBBbmQgd2UgYXJlIG5v dCBzdXJlIGFib3V0IHRoZSBsYXR0ZXIgc28gcGxheSBzYWZlIGZvciBub3cuCj4gwqAJwqAqLwo+ IC0JaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpIHx8IElTX0JST1hUT04oZGV2X3ByaXYpKQo+ ICsJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpIHx8IElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+ IMKgCQlkcm1fY2xmbHVzaF92aXJ0X3JhbmdlKHZhZGRyLCBQQUdFX1NJWkUpOwo+IMKgCj4gwqAJ a3VubWFwX2F0b21pYyh2YWRkcik7Cj4gQEAgLTI5NDYsNyArMjk0Niw3IEBAIHN0YXRpYyBpbnQg Z2d0dF9wcm9iZV9jb21tb24oc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCwgdTY0Cj4gc2l6ZSkKPiDC oAnCoCogcmVzb3J0IHRvIGFuIHVuY2FjaGVkIG1hcHBpbmcuIFRoZSBXQyBpc3N1ZSBpcyBlYXNp bHkgY2F1Z2h0IGJ5Cj4gdGhlCj4gwqAJwqAqIHJlYWRiYWNrIGNoZWNrIHdoZW4gd3JpdGluZyBH VFQgUFRFIGVudHJpZXMuCj4gwqAJwqAqLwo+IC0JaWYgKElTX0JST1hUT04odG9faTkxNShnZ3R0 LT5iYXNlLmRldikpKQo+ICsJaWYgKElTX0dFTjlfTFAodG9faTkxNShnZ3R0LT5iYXNlLmRldikp KQo+IMKgCQlnZ3R0LT5nc20gPSBpb3JlbWFwX25vY2FjaGUocGh5c19hZGRyLCBzaXplKTsKPiDC oAllbHNlCj4gwqAJCWdndHQtPmdzbSA9IGlvcmVtYXBfd2MocGh5c19hZGRyLCBzaXplKTsKPiBA QCAtMzA3OCw3ICszMDc4LDcgQEAgc3RhdGljIGludCBnZW44X2dtY2hfcHJvYmUoc3RydWN0IGk5 MTVfZ2d0dCAqZ2d0dCkKPiDCoAo+IMKgCWdndHQtPmJhc2UudG90YWwgPSAoc2l6ZSAvIHNpemVv ZihnZW44X3B0ZV90KSkgPDwgUEFHRV9TSElGVDsKPiDCoAo+IC0JaWYgKElTX0NIRVJSWVZJRVco ZGV2X3ByaXYpIHx8IElTX0JST1hUT04oZGV2X3ByaXYpKQo+ICsJaWYgKElTX0NIRVJSWVZJRVco ZGV2X3ByaXYpIHx8IElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+IMKgCQljaHZfc2V0dXBfcHJpdmF0 ZV9wcGF0KGRldl9wcml2KTsKPiDCoAllbHNlCj4gwqAJCWJkd19zZXR1cF9wcml2YXRlX3BwYXQo ZGV2X3ByaXYpOwo+IEBAIC0zMzE5LDcgKzMzMTksNyBAQCB2b2lkIGk5MTVfZ2VtX3Jlc3RvcmVf Z3R0X21hcHBpbmdzKHN0cnVjdCBkcm1fZGV2aWNlCj4gKmRldikKPiDCoAlnZ3R0LT5iYXNlLmNs b3NlZCA9IGZhbHNlOwo+IMKgCj4gwqAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDgpIHsK PiAtCQlpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikgfHwgSVNfQlJPWFRPTihkZXZfcHJpdikp Cj4gKwkJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpIHx8IElTX0dFTjlfTFAoZGV2X3ByaXYp KQo+IMKgCQkJY2h2X3NldHVwX3ByaXZhdGVfcHBhdChkZXZfcHJpdik7Cj4gwqAJCWVsc2UKPiDC oAkJCWJkd19zZXR1cF9wcml2YXRlX3BwYXQoZGV2X3ByaXYpOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9p cnEuYwo+IGluZGV4IDZkNzUwNWIuLjA4MWIzYjcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9pcnEuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJx LmMKPiBAQCAtMjQzNSw3ICsyNDM1LDcgQEAgZ2VuOF9kZV9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gdTMyIG1hc3Rlcl9jdGwpCj4gwqAJCQkJZm91bmQg PSB0cnVlOwo+IMKgCQkJfQo+IMKgCj4gLQkJCWlmIChJU19CUk9YVE9OKGRldl9wcml2KSkgewo+ ICsJCQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsKPiDCoAkJCQl0bXBfbWFzayA9IGlpciAm IEJYVF9ERV9QT1JUX0hPVFBMVUdfTUFTSzsKPiDCoAkJCQlpZiAodG1wX21hc2spIHsKPiDCoAkJ CQkJYnh0X2hwZF9pcnFfaGFuZGxlcihkZXZfcHJpdiwKPiB0bXBfbWFzaywKPiBAQCAtMjQ1MSw3 ICsyNDUxLDcgQEAgZ2VuOF9kZV9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gdTMyIG1hc3Rlcl9jdGwpCj4gwqAJCQkJfQo+IMKgCQkJfQo+IMKgCj4gLQkJ CWlmIChJU19CUk9YVE9OKGRldl9wcml2KSAmJiAoaWlyICYKPiBCWFRfREVfUE9SVF9HTUJVUykp IHsKPiArCQkJaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpICYmIChpaXIgJgo+IEJYVF9ERV9QT1JU X0dNQlVTKSkgewo+IMKgCQkJCWdtYnVzX2lycV9oYW5kbGVyKGRldl9wcml2KTsKPiDCoAkJCQlm b3VuZCA9IHRydWU7Cj4gwqAJCQl9Cj4gQEAgLTMzNzksNyArMzM3OSw3IEBAIHN0YXRpYyB2b2lk IGdlbjhfZGVfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+IMKgCQkJCcKgwqBHRU45X0RFX1BJUEVfSVJRX0ZBVUxUX0VSUk9SUzsKPiDCoAkJZGVf cG9ydF9tYXNrZWQgfD0gR0VOOV9BVVhfQ0hBTk5FTF9CIHwgR0VOOV9BVVhfQ0hBTk5FTF9DIHwK PiDCoAkJCQnCoMKgR0VOOV9BVVhfQ0hBTk5FTF9EOwo+IC0JCWlmIChJU19CUk9YVE9OKGRldl9w cml2KSkKPiArCQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gwqAJCQlkZV9wb3J0X21hc2tl ZCB8PSBCWFRfREVfUE9SVF9HTUJVUzsKPiDCoAl9IGVsc2Ugewo+IMKgCQlkZV9waXBlX21hc2tl ZCB8PSBHRU44X1BJUEVfUFJJTUFSWV9GTElQX0RPTkUgfAo+IEBAIC0zMzkwLDcgKzMzOTAsNyBA QCBzdGF0aWMgdm9pZCBnZW44X2RlX2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QKPiBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiDCoAkJCQkJwqDCoMKgR0VOOF9QSVBFX0ZJRk9fVU5ERVJSVU47 Cj4gwqAKPiDCoAlkZV9wb3J0X2VuYWJsZXMgPSBkZV9wb3J0X21hc2tlZDsKPiAtCWlmIChJU19C Uk9YVE9OKGRldl9wcml2KSkKPiArCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkKPiDCoAkJZGVf cG9ydF9lbmFibGVzIHw9IEJYVF9ERV9QT1JUX0hPVFBMVUdfTUFTSzsKPiDCoAllbHNlIGlmIChJ U19CUk9BRFdFTEwoZGV2X3ByaXYpKQo+IMKgCQlkZV9wb3J0X2VuYWJsZXMgfD0gR0VOOF9QT1JU X0RQX0FfSE9UUExVRzsKPiBAQCAtNDIxNSw3ICs0MjE1LDcgQEAgdm9pZCBpbnRlbF9pcnFfaW5p dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqAJCWRldi0+ZHJpdmVyLT5p cnFfdW5pbnN0YWxsID0gZ2VuOF9pcnFfdW5pbnN0YWxsOwo+IMKgCQlkZXYtPmRyaXZlci0+ZW5h YmxlX3ZibGFuayA9IGdlbjhfZW5hYmxlX3ZibGFuazsKPiDCoAkJZGV2LT5kcml2ZXItPmRpc2Fi bGVfdmJsYW5rID0gZ2VuOF9kaXNhYmxlX3ZibGFuazsKPiAtCQlpZiAoSVNfQlJPWFRPTihkZXZf cHJpdikpCj4gKwkJaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+IMKgCQkJZGV2X3ByaXYtPmRp c3BsYXkuaHBkX2lycV9zZXR1cCA9IGJ4dF9ocGRfaXJxX3NldHVwOwo+IMKgCQllbHNlIGlmIChI QVNfUENIX1NQVChkZXZfcHJpdikgfHwgSEFTX1BDSF9LQlAoZGV2X3ByaXYpKQo+IMKgCQkJZGV2 X3ByaXYtPmRpc3BsYXkuaHBkX2lycV9zZXR1cCA9IHNwdF9ocGRfaXJxX3NldHVwOwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZWcuaAo+IGluZGV4IDMzNjFkN2YuLjFiZTJhN2QgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVnLmgKPiBAQCAtMjkyMCw3ICsyOTIwLDcgQEAgZW51bSBza2xfZGlzcF9wb3dl cl93ZWxscyB7Cj4gwqAjZGVmaW5lIElOVEVSVkFMXzFfMzNfVVModXMpCSgoKHVzKSAqIDMpwqDC oMKgPj4gMikKPiDCoCNkZWZpbmUgSU5URVJWQUxfMF84MzNfVVModXMpCSgoKHVzKSAqIDYpIC8g NSkKPiDCoCNkZWZpbmUgR1RfSU5URVJWQUxfRlJPTV9VUyhkZXZfcHJpdiwgdXMpIChJU19HRU45 KGRldl9wcml2KSA/IFwKPiAtCQkJCShJU19CUk9YVE9OKGRldl9wcml2KSA/IFwKPiArCQkJCShJ U19HRU45X0xQKGRldl9wcml2KSA/IFwKPiDCoAkJCQlJTlRFUlZBTF8wXzgzM19VUyh1cykgOiBc Cj4gwqAJCQkJSU5URVJWQUxfMV8zM19VUyh1cykpIDogXAo+IMKgCQkJCUlOVEVSVkFMXzFfMjhf VVModXMpKQo+IEBAIC0yOTI5LDcgKzI5MjksNyBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxz IHsKPiDCoCNkZWZpbmUgSU5URVJWQUxfMV8zM19UT19VUyhpbnRlcnZhbCnCoMKgKCgoaW50ZXJ2 YWwpIDw8IDIpIC8gMykKPiDCoCNkZWZpbmUgSU5URVJWQUxfMF84MzNfVE9fVVMoaW50ZXJ2YWwp ICgoKGludGVydmFsKSAqIDUpwqDCoC8gNikKPiDCoCNkZWZpbmUgR1RfUE1fSU5URVJWQUxfVE9f VVMoZGV2X3ByaXYsIGludGVydmFsKSAoSVNfR0VOOShkZXZfcHJpdikgPyBcCj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoChJU19CUk9YVE9O KGRldl9wcml2KSA/IFwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgKElTX0dFTjlfTFAoZGV2X3ByaXYpID8gXAo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgSU5URVJWQUxfMF84MzNf VE9fVVMoaW50ZXJ2YWwpIDogXAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgSU5URVJWQUxfMV8zM19UT19VUyhpbnRlcnZhbCkpIDogXAo+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg SU5URVJWQUxfMV8yOF9UT19VUyhpbnRlcnZhbCkpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Jpb3MuYwo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYmlv cy5jCj4gaW5kZXggNWFiNjQ2ZS4uYmQ3MDVmOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9iaW9zLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9i aW9zLmMKPiBAQCAtMTc2NSw3ICsxNzY1LDcgQEAgaW50ZWxfYmlvc19pc19wb3J0X2hwZF9pbnZl cnRlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ICpkZXZfcHJpdiwKPiDCoHsKPiDCoAlpbnQg aTsKPiDCoAo+IC0JaWYgKFdBUk5fT05fT05DRSghSVNfQlJPWFRPTihkZXZfcHJpdikpKQo+ICsJ aWYgKFdBUk5fT05fT05DRSghSVNfR0VOOV9MUChkZXZfcHJpdikpKQo+IMKgCQlyZXR1cm4gZmFs c2U7Cj4gwqAKPiDCoAlmb3IgKGkgPSAwOyBpIDwgZGV2X3ByaXYtPnZidC5jaGlsZF9kZXZfbnVt OyBpKyspIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMK PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gaW5kZXggMGFkNGUxNi4uYTEy OWZmYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gQEAgLTQ0Miw3ICs0NDIsNyBA QCBzdGF0aWMgaW50IGludGVsX2RkaV9oZG1pX2xldmVsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl Cj4gKmRldl9wcml2LCBlbnVtIHBvcnQgcG9yCj4gwqAKPiDCoAloZG1pX2xldmVsID0gZGV2X3By aXYtPnZidC5kZGlfcG9ydF9pbmZvW3BvcnRdLmhkbWlfbGV2ZWxfc2hpZnQ7Cj4gwqAKPiAtCWlm IChJU19CUk9YVE9OKGRldl9wcml2KSkKPiArCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkKPiDC oAkJcmV0dXJuIGhkbWlfbGV2ZWw7Cj4gwqAKPiDCoAlpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikg fHwgSVNfS0FCWUxBS0UoZGV2X3ByaXYpKSB7Cj4gQEAgLTEwOTEsNyArMTA5MSw3IEBAIHZvaWQg aW50ZWxfZGRpX2Nsb2NrX2dldChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiDCoAkJ aHN3X2RkaV9jbG9ja19nZXQoZW5jb2RlciwgcGlwZV9jb25maWcpOwo+IMKgCWVsc2UgaWYgKElT X1NLWUxBS0UoZGV2X3ByaXYpIHx8IElTX0tBQllMQUtFKGRldl9wcml2KSkKPiDCoAkJc2tsX2Rk aV9jbG9ja19nZXQoZW5jb2RlciwgcGlwZV9jb25maWcpOwo+IC0JZWxzZSBpZiAoSVNfQlJPWFRP TihkZXZfcHJpdikpCj4gKwllbHNlIGlmIChJU19HRU45X0xQKGRldl9wcml2KSkKPiDCoAkJYnh0 X2RkaV9jbG9ja19nZXQoZW5jb2RlciwgcGlwZV9jb25maWcpOwo+IMKgfQo+IMKgCj4gQEAgLTEx NTMsNyArMTE1Myw3IEBAIGJvb2wgaW50ZWxfZGRpX3BsbF9zZWxlY3Qoc3RydWN0IGludGVsX2Ny dGMgKmludGVsX2NydGMsCj4gwqAJaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpIHx8IElTX0tBQllM QUtFKGRldl9wcml2KSkKPiDCoAkJcmV0dXJuIHNrbF9kZGlfcGxsX3NlbGVjdChpbnRlbF9jcnRj LCBjcnRjX3N0YXRlLAo+IMKgCQkJCQnCoMKgaW50ZWxfZW5jb2Rlcik7Cj4gLQllbHNlIGlmIChJ U19CUk9YVE9OKGRldl9wcml2KSkKPiArCWVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+ IMKgCQlyZXR1cm4gYnh0X2RkaV9wbGxfc2VsZWN0KGludGVsX2NydGMsIGNydGNfc3RhdGUsCj4g wqAJCQkJCcKgwqBpbnRlbF9lbmNvZGVyKTsKPiDCoAllbHNlCj4gQEAgLTE2NDMsNyArMTY0Myw3 IEBAIHVpbnQzMl90IGRkaV9zaWduYWxfbGV2ZWxzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAp Cj4gwqAKPiDCoAlpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikgfHwgSVNfS0FCWUxBS0UoZGV2X3By aXYpKQo+IMKgCQlza2xfZGRpX3NldF9pYm9vc3QoZW5jb2RlciwgbGV2ZWwpOwo+IC0JZWxzZSBp ZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpCj4gKwllbHNlIGlmIChJU19HRU45X0xQKGRldl9wcml2 KSkKPiDCoAkJYnh0X2RkaV92c3dpbmdfc2VxdWVuY2UoZGV2X3ByaXYsIGxldmVsLCBwb3J0LCBl bmNvZGVyLQo+ID50eXBlKTsKPiDCoAo+IMKgCXJldHVybiBERElfQlVGX1RSQU5TX1NFTEVDVChs ZXZlbCk7Cj4gQEAgLTIyNDYsNyArMjI0Niw3IEBAIHZvaWQgaW50ZWxfZGRpX2luaXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgZW51bSBwb3J0Cj4gcG9ydCkKPiDCoAnCoCogY29uZmlndXJhdGlv biBzbyB0aGF0IHdlIHVzZSB0aGUgcHJvcGVyIGxhbmUgY291bnQgZm9yIG91cgo+IMKgCcKgKiBj YWxjdWxhdGlvbnMuCj4gwqAJwqAqLwo+IC0JaWYgKElTX0JST1hUT04oZGV2X3ByaXYpICYmIHBv cnQgPT0gUE9SVF9BKSB7Cj4gKwlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikgJiYgcG9ydCA9PSBQ T1JUX0EpIHsKPiDCoAkJaWYgKCEoaW50ZWxfZGlnX3BvcnQtPnNhdmVkX3BvcnRfYml0cyAmIERE SV9BXzRfTEFORVMpKSB7Cj4gwqAJCQlEUk1fREVCVUdfS01TKCJCWFQgQklPUyBmb3Jnb3QgdG8g c2V0IERESV9BXzRfTEFORVMKPiBmb3IgcG9ydCBBOyBmaXhpbmdcbiIpOwo+IMKgCQkJaW50ZWxf ZGlnX3BvcnQtPnNhdmVkX3BvcnRfYml0cyB8PSBERElfQV80X0xBTkVTOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDAxZGJmMWIuLjcyM2ZmOWQgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTYxNCwxMiArNjE0LDEyIEBAIHN0 YXRpYyBib29sIGludGVsX1BMTF9pc192YWxpZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ICpk ZXZfcHJpdiwKPiDCoAkJSU5URUxQbGxJbnZhbGlkKCJtMSBvdXQgb2YgcmFuZ2VcbiIpOwo+IMKg Cj4gwqAJaWYgKCFJU19QSU5FVklFVyhkZXZfcHJpdikgJiYgIUlTX1ZBTExFWVZJRVcoZGV2X3By aXYpICYmCj4gLQnCoMKgwqDCoCFJU19DSEVSUllWSUVXKGRldl9wcml2KSAmJiAhSVNfQlJPWFRP TihkZXZfcHJpdikpCj4gKwnCoMKgwqDCoCFJU19DSEVSUllWSUVXKGRldl9wcml2KSAmJiAhSVNf R0VOOV9MUChkZXZfcHJpdikpCj4gwqAJCWlmIChjbG9jay0+bTEgPD0gY2xvY2stPm0yKQo+IMKg CQkJSU5URUxQbGxJbnZhbGlkKCJtMSA8PSBtMlxuIik7Cj4gwqAKPiDCoAlpZiAoIUlTX1ZBTExF WVZJRVcoZGV2X3ByaXYpICYmICFJU19DSEVSUllWSUVXKGRldl9wcml2KSAmJgo+IC0JwqDCoMKg wqAhSVNfQlJPWFRPTihkZXZfcHJpdikpIHsKPiArCcKgwqDCoMKgIUlTX0dFTjlfTFAoZGV2X3By aXYpKSB7Cj4gwqAJCWlmIChjbG9jay0+cCA8IGxpbWl0LT5wLm1pbiB8fCBsaW1pdC0+cC5tYXgg PCBjbG9jay0+cCkKPiDCoAkJCUlOVEVMUGxsSW52YWxpZCgicCBvdXQgb2YgcmFuZ2VcbiIpOwo+ IMKgCQlpZiAoY2xvY2stPm0gPCBsaW1pdC0+bS5taW4gfHwgbGltaXQtPm0ubWF4IDwgY2xvY2st Pm0pCj4gQEAgLTEwNjc1LDcgKzEwNjc1LDcgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9nZXRfZGRp X3BvcnRfc3RhdGUoc3RydWN0Cj4gaW50ZWxfY3J0YyAqY3J0YywKPiDCoAo+IMKgCWlmIChJU19T S1lMQUtFKGRldl9wcml2KSB8fCBJU19LQUJZTEFLRShkZXZfcHJpdikpCj4gwqAJCXNreWxha2Vf Z2V0X2RkaV9wbGwoZGV2X3ByaXYsIHBvcnQsIHBpcGVfY29uZmlnKTsKPiAtCWVsc2UgaWYgKElT X0JST1hUT04oZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCj4g wqAJCWJ4dF9nZXRfZGRpX3BsbChkZXZfcHJpdiwgcG9ydCwgcGlwZV9jb25maWcpOwo+IMKgCWVs c2UKPiDCoAkJaGFzd2VsbF9nZXRfZGRpX3BsbChkZXZfcHJpdiwgcG9ydCwgcGlwZV9jb25maWcp Owo+IEBAIC0xMDcyMSw3ICsxMDcyMSw3IEBAIHN0YXRpYyBib29sIGhhc3dlbGxfZ2V0X3BpcGVf Y29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjCj4gKmNydGMsCj4gwqAKPiDCoAlhY3RpdmUgPSBoc3df Z2V0X3RyYW5zY29kZXJfc3RhdGUoY3J0YywgcGlwZV9jb25maWcsCj4gJnBvd2VyX2RvbWFpbl9t YXNrKTsKPiDCoAo+IC0JaWYgKElTX0JST1hUT04oZGV2X3ByaXYpICYmCj4gKwlpZiAoSVNfR0VO OV9MUChkZXZfcHJpdikgJiYKPiDCoAnCoMKgwqDCoGJ4dF9nZXRfZHNpX3RyYW5zY29kZXJfc3Rh dGUoY3J0YywgcGlwZV9jb25maWcsCj4gJnBvd2VyX2RvbWFpbl9tYXNrKSkgewo+IMKgCQlXQVJO X09OKGFjdGl2ZSk7Cj4gwqAJCWFjdGl2ZSA9IHRydWU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5j Cj4gaW5kZXggMTE3YTcxNC4uNjc1ZTEwMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ IEBAIC0yMzMsNyArMjMzLDcgQEAgaW50ZWxfZHBfc291cmNlX3JhdGVzKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAsIGNvbnN0IGludAo+ICoqc291cmNlX3JhdGVzKQo+IMKgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXYp Owo+IMKgCWludCBzaXplOwo+IMKgCj4gLQlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpIHsKPiAr CWlmIChJU19HRU45X0xQKGRldl9wcml2KSkgewo+IMKgCQkqc291cmNlX3JhdGVzID0gYnh0X3Jh dGVzOwo+IMKgCQlzaXplID0gQVJSQVlfU0laRShieHRfcmF0ZXMpOwo+IMKgCX0gZWxzZSBpZiAo SVNfU0tZTEFLRShkZXZfcHJpdikgfHwgSVNfS0FCWUxBS0UoZGV2X3ByaXYpKSB7Cj4gQEAgLTY4 OCw3ICs2ODgsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wcHNfZ2V0X3JlZ2lzdGVycyhzdHJ1Y3QK PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiDCoAo+IMKgCW1lbXNldChyZWdzLCAwLCBz aXplb2YoKnJlZ3MpKTsKPiDCoAo+IC0JaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKQo+ICsJaWYg KElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+IMKgCQlwcHNfaWR4ID0gYnh0X3Bvd2VyX3NlcXVlbmNl cl9pZHgoaW50ZWxfZHApOwo+IMKgCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8 IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+IMKgCQlwcHNfaWR4ID0gdmx2X3Bvd2VyX3NlcXVl bmNlcl9waXBlKGludGVsX2RwKTsKPiBAQCAtNjk3LDcgKzY5Nyw3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX3Bwc19nZXRfcmVnaXN0ZXJzKHN0cnVjdAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+IMKgCXJlZ3MtPnBwX3N0YXQgPSBQUF9TVEFUVVMocHBzX2lkeCk7Cj4gwqAJcmVncy0+cHBf b24gPSBQUF9PTl9ERUxBWVMocHBzX2lkeCk7Cj4gwqAJcmVncy0+cHBfb2ZmID0gUFBfT0ZGX0RF TEFZUyhwcHNfaWR4KTsKPiAtCWlmICghSVNfQlJPWFRPTihkZXZfcHJpdikpCj4gKwlpZiAoIUlT X0dFTjlfTFAoZGV2X3ByaXYpKQo+IMKgCQlyZWdzLT5wcF9kaXYgPSBQUF9ESVZJU09SKHBwc19p ZHgpOwo+IMKgfQo+IMKgCj4gQEAgLTI5ODQsNyArMjk4NCw3IEBAIGludGVsX2RwX3ZvbHRhZ2Vf bWF4KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gwqAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+IMKgCWVudW0gcG9ydCBwb3J0ID0gZHBfdG9f ZGlnX3BvcnQoaW50ZWxfZHApLT5wb3J0Owo+IMKgCj4gLQlpZiAoSVNfQlJPWFRPTihkZXZfcHJp dikpCj4gKwlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gwqAJCXJldHVybiBEUF9UUkFJTl9W T0xUQUdFX1NXSU5HX0xFVkVMXzM7Cj4gwqAJZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4g Pj0gOSkgewo+IMKgCQlpZiAoZGV2X3ByaXYtPnZidC5lZHAubG93X3Zzd2luZyAmJiBwb3J0ID09 IFBPUlRfQSkKPiBAQCAtNDMwMCw3ICs0MzAwLDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfZGlnaXRh bF9wb3J0X2Nvbm5lY3RlZChzdHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiDC oAkJcmV0dXJuIGlieF9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKGRldl9wcml2LCBwb3J0KTsKPiDC oAllbHNlIGlmIChIQVNfUENIX1NQTElUKGRldl9wcml2KSkKPiDCoAkJcmV0dXJuIGNwdF9kaWdp dGFsX3BvcnRfY29ubmVjdGVkKGRldl9wcml2LCBwb3J0KTsKPiAtCWVsc2UgaWYgKElTX0JST1hU T04oZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gwqAJCXJl dHVybiBieHRfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChkZXZfcHJpdiwgcG9ydCk7Cj4gwqAJZWxz ZSBpZiAoSVNfR000NShkZXZfcHJpdikpCj4gwqAJCXJldHVybiBnbTQ1X2RpZ2l0YWxfcG9ydF9j b25uZWN0ZWQoZGV2X3ByaXYsIHBvcnQpOwo+IEBAIC00OTMyLDcgKzQ5MzIsNyBAQCBpbnRlbF9w cHNfcmVhZG91dF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ICpkZXZfcHJpdiwK PiDCoAo+IMKgCXBwX29uID0gSTkxNV9SRUFEKHJlZ3MucHBfb24pOwo+IMKgCXBwX29mZiA9IEk5 MTVfUkVBRChyZWdzLnBwX29mZik7Cj4gLQlpZiAoIUlTX0JST1hUT04oZGV2X3ByaXYpKSB7Cj4g KwlpZiAoIUlTX0dFTjlfTFAoZGV2X3ByaXYpKSB7Cj4gwqAJCUk5MTVfV1JJVEUocmVncy5wcF9j dHJsLCBwcF9jdGwpOwo+IMKgCQlwcF9kaXYgPSBJOTE1X1JFQUQocmVncy5wcF9kaXYpOwo+IMKg CX0KPiBAQCAtNDk1MCw3ICs0OTUwLDcgQEAgaW50ZWxfcHBzX3JlYWRvdXRfaHdfc3RhdGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUKPiAqZGV2X3ByaXYsCj4gwqAJc2VxLT50MTAgPSAocHBfb2Zm ICYgUEFORUxfUE9XRVJfRE9XTl9ERUxBWV9NQVNLKSA+Pgo+IMKgCQnCoMKgwqBQQU5FTF9QT1dF Ul9ET1dOX0RFTEFZX1NISUZUOwo+IMKgCj4gLQlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpIHsK PiArCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkgewo+IMKgCQl1MTYgdG1wID0gKHBwX2N0bCAm IEJYVF9QT1dFUl9DWUNMRV9ERUxBWV9NQVNLKSA+Pgo+IMKgCQkJQlhUX1BPV0VSX0NZQ0xFX0RF TEFZX1NISUZUOwo+IMKgCQlpZiAodG1wID4gMCkKPiBAQCAtNTA4MSw3ICs1MDgxLDcgQEAgaW50 ZWxfZHBfaW5pdF9wYW5lbF9wb3dlcl9zZXF1ZW5jZXJfcmVnaXN0ZXJzKHN0cnVjdAo+IGRybV9k ZXZpY2UgKmRldiwKPiDCoAkJwqAoc2VxLT50MTAgPDwgUEFORUxfUE9XRVJfRE9XTl9ERUxBWV9T SElGVCk7Cj4gwqAJLyogQ29tcHV0ZSB0aGUgZGl2aXNvciBmb3IgdGhlIHBwIGNsb2NrLCBzaW1w bHkgbWF0Y2ggdGhlIEJzcGVjCj4gwqAJwqAqIGZvcm11bGEuICovCj4gLQlpZiAoSVNfQlJPWFRP TihkZXZfcHJpdikpIHsKPiArCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkgewo+IMKgCQlwcF9k aXYgPSBJOTE1X1JFQUQocmVncy5wcF9jdHJsKTsKPiDCoAkJcHBfZGl2ICY9IH5CWFRfUE9XRVJf Q1lDTEVfREVMQVlfTUFTSzsKPiDCoAkJcHBfZGl2IHw9IChESVZfUk9VTkRfVVAoKHNlcS0+dDEx X3QxMiArIDEpLCAxMDAwKQo+IEBAIC01MTA3LDcgKzUxMDcsNyBAQCBpbnRlbF9kcF9pbml0X3Bh bmVsX3Bvd2VyX3NlcXVlbmNlcl9yZWdpc3RlcnMoc3RydWN0Cj4gZHJtX2RldmljZSAqZGV2LAo+ IMKgCj4gwqAJSTkxNV9XUklURShyZWdzLnBwX29uLCBwcF9vbik7Cj4gwqAJSTkxNV9XUklURShy ZWdzLnBwX29mZiwgcHBfb2ZmKTsKPiAtCWlmIChJU19CUk9YVE9OKGRldl9wcml2KSkKPiArCWlm IChJU19HRU45X0xQKGRldl9wcml2KSkKPiDCoAkJSTkxNV9XUklURShyZWdzLnBwX2N0cmwsIHBw X2Rpdik7Cj4gwqAJZWxzZQo+IMKgCQlJOTE1X1dSSVRFKHJlZ3MucHBfZGl2LCBwcF9kaXYpOwo+ IEBAIC01MTE1LDcgKzUxMTUsNyBAQCBpbnRlbF9kcF9pbml0X3BhbmVsX3Bvd2VyX3NlcXVlbmNl cl9yZWdpc3RlcnMoc3RydWN0Cj4gZHJtX2RldmljZSAqZGV2LAo+IMKgCURSTV9ERUJVR19LTVMo InBhbmVsIHBvd2VyIHNlcXVlbmNlciByZWdpc3RlciBzZXR0aW5nczogUFBfT04gJSN4LAo+IFBQ X09GRiAlI3gsIFBQX0RJViAlI3hcbiIsCj4gwqAJCcKgwqDCoMKgwqDCoEk5MTVfUkVBRChyZWdz LnBwX29uKSwKPiDCoAkJwqDCoMKgwqDCoMKgSTkxNV9SRUFEKHJlZ3MucHBfb2ZmKSwKPiAtCQnC oMKgwqDCoMKgwqBJU19CUk9YVE9OKGRldl9wcml2KSA/Cj4gKwkJwqDCoMKgwqDCoMKgSVNfR0VO OV9MUChkZXZfcHJpdikgPwo+IMKgCQnCoMKgwqDCoMKgwqAoSTkxNV9SRUFEKHJlZ3MucHBfY3Ry bCkgJiBCWFRfUE9XRVJfQ1lDTEVfREVMQVlfTUFTSykKPiA6Cj4gwqAJCcKgwqDCoMKgwqDCoEk5 MTVfUkVBRChyZWdzLnBwX2RpdikpOwo+IMKgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcGxsX21nci5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cGxsX21nci5jCj4gaW5kZXggMjE4NTNhMS4uODIwNWMxYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHBsbF9tZ3IuYwo+IEBAIC0xODYxLDcgKzE4NjEsNyBAQCB2b2lkIGludGVsX3No YXJlZF9kcGxsX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiDCoAo+IMKgCWlmIChJU19T S1lMQUtFKGRldl9wcml2KSB8fCBJU19LQUJZTEFLRShkZXZfcHJpdikpCj4gwqAJCWRwbGxfbWdy ID0gJnNrbF9wbGxfbWdyOwo+IC0JZWxzZSBpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpCj4gKwll bHNlIGlmIChJU19HRU45X0xQKGRldl9wcml2KSkKPiDCoAkJZHBsbF9tZ3IgPSAmYnh0X3BsbF9t Z3I7Cj4gwqAJZWxzZSBpZiAoSEFTX0RESShkZXZfcHJpdikpCj4gwqAJCWRwbGxfbWdyID0gJmhz d19wbGxfbWdyOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2ku Ywo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmMKPiBpbmRleCA0ZTBkMDI1Li40 ZTE5ZmJjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmMKPiBAQCAtMzQwLDcgKzM0MCw3 IEBAIHN0YXRpYyBib29sIGludGVsX2RzaV9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5j b2Rlcgo+ICplbmNvZGVyLAo+IMKgCS8qIERTSSB1c2VzIHNob3J0IHBhY2tldHMgZm9yIHN5bmMg ZXZlbnRzLCBzbyBjbGVhciBtb2RlIGZsYWdzIGZvcgo+IERTSSAqLwo+IMKgCWFkanVzdGVkX21v ZGUtPmZsYWdzID0gMDsKPiDCoAo+IC0JaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKSB7Cj4gKwlp ZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsKPiDCoAkJLyogRHVhbCBsaW5rIGdvZXMgdG8gRFNJ IHRyYW5zY29kZXIgQS4gKi8KPiDCoAkJaWYgKGludGVsX2RzaS0+cG9ydHMgPT0gQklUKFBPUlRf QykpCj4gwqAJCQlwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29kZXIgPSBUUkFOU0NPREVSX0RTSV9D Owo+IEBAIC00NDEsNyArNDQxLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHNpX2RldmljZV9yZWFk eShzdHJ1Y3QgaW50ZWxfZW5jb2Rlcgo+ICplbmNvZGVyKQo+IMKgCj4gwqAJaWYgKElTX1ZBTExF WVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+IMKgCQl2bHZfZHNp X2RldmljZV9yZWFkeShlbmNvZGVyKTsKPiAtCWVsc2UgaWYgKElTX0JST1hUT04oZGV2X3ByaXYp KQo+ICsJZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gwqAJCWJ4dF9kc2lfZGV2aWNl X3JlYWR5KGVuY29kZXIpOwo+IMKgfQo+IMKgCj4gQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGF0aWMg dm9pZCBpbnRlbF9kc2lfcG9ydF9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIKPiAqZW5jb2Rl cikKPiDCoAl9Cj4gwqAKPiDCoAlmb3JfZWFjaF9kc2lfcG9ydChwb3J0LCBpbnRlbF9kc2ktPnBv cnRzKSB7Cj4gLQkJaTkxNV9yZWdfdCBwb3J0X2N0cmwgPSBJU19CUk9YVE9OKGRldl9wcml2KSA/ Cj4gKwkJaTkxNV9yZWdfdCBwb3J0X2N0cmwgPSBJU19HRU45X0xQKGRldl9wcml2KSA/Cj4gwqAJ CQlCWFRfTUlQSV9QT1JUX0NUUkwocG9ydCkgOiBNSVBJX1BPUlRfQ1RSTChwb3J0KTsKPiDCoAkJ dTMyIHRlbXA7Cj4gwqAKPiBAQCAtNDk0LDcgKzQ5NCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2Rz aV9wb3J0X2Rpc2FibGUoc3RydWN0IGludGVsX2VuY29kZXIKPiAqZW5jb2RlcikKPiDCoAllbnVt IHBvcnQgcG9ydDsKPiDCoAo+IMKgCWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQsIGludGVsX2RzaS0+ cG9ydHMpIHsKPiAtCQlpOTE1X3JlZ190IHBvcnRfY3RybCA9IElTX0JST1hUT04oZGV2X3ByaXYp ID8KPiArCQlpOTE1X3JlZ190IHBvcnRfY3RybCA9IElTX0dFTjlfTFAoZGV2X3ByaXYpID8KPiDC oAkJCUJYVF9NSVBJX1BPUlRfQ1RSTChwb3J0KSA6IE1JUElfUE9SVF9DVFJMKHBvcnQpOwo+IMKg CQl1MzIgdGVtcDsKPiDCoAo+IEBAIC02NjMsNyArNjYzLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf ZHNpX2NsZWFyX2RldmljZV9yZWFkeShzdHJ1Y3QKPiBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ IMKgCURSTV9ERUJVR19LTVMoIlxuIik7Cj4gwqAJZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50 ZWxfZHNpLT5wb3J0cykgewo+IMKgCQkvKiBDb21tb24gYml0IGZvciBib3RoIE1JUEkgUG9ydCBB ICYgTUlQSSBQb3J0IEMgb24gVkxWL0NIVgo+ICovCj4gLQkJaTkxNV9yZWdfdCBwb3J0X2N0cmwg PSBJU19CUk9YVE9OKGRldl9wcml2KSA/Cj4gKwkJaTkxNV9yZWdfdCBwb3J0X2N0cmwgPSBJU19H RU45X0xQKGRldl9wcml2KSA/Cj4gwqAJCQlCWFRfTUlQSV9QT1JUX0NUUkwocG9ydCkgOiBNSVBJ X1BPUlRfQ1RSTChQT1JUX0EpOwo+IMKgCQl1MzIgdmFsOwo+IMKgCj4gQEAgLTc1NSwxMiArNzU1 LDEyIEBAIHN0YXRpYyBib29sIGludGVsX2RzaV9nZXRfaHdfc3RhdGUoc3RydWN0IGludGVsX2Vu Y29kZXIKPiAqZW5jb2RlciwKPiDCoAnCoCogY29uZmlndXJhdGlvbiwgb3RoZXJ3aXNlIGFjY2Vz c2luZyBEU0kgcmVnaXN0ZXJzIHdpbGwgaGFuZyB0aGUKPiDCoAnCoCogbWFjaGluZS4gU2VlIEJT cGVjIE5vcnRoIERpc3BsYXkgRW5naW5lIHJlZ2lzdGVycy9NSVBJW0JYVF0uCj4gwqAJwqAqLwo+ IC0JaWYgKElTX0JST1hUT04oZGV2X3ByaXYpICYmICFpbnRlbF9kc2lfcGxsX2lzX2VuYWJsZWQo ZGV2X3ByaXYpKQo+ICsJaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpICYmICFpbnRlbF9kc2lfcGxs X2lzX2VuYWJsZWQoZGV2X3ByaXYpKQo+IMKgCQlnb3RvIG91dF9wdXRfcG93ZXI7Cj4gwqAKPiDC oAkvKiBYWFg6IHRoaXMgb25seSB3b3JrcyBmb3Igb25lIERTSSBvdXRwdXQgKi8KPiDCoAlmb3Jf ZWFjaF9kc2lfcG9ydChwb3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Cj4gLQkJaTkxNV9yZWdfdCBj dHJsX3JlZyA9IElTX0JST1hUT04oZGV2X3ByaXYpID8KPiArCQlpOTE1X3JlZ190IGN0cmxfcmVn ID0gSVNfR0VOOV9MUChkZXZfcHJpdikgPwo+IMKgCQkJQlhUX01JUElfUE9SVF9DVFJMKHBvcnQp IDogTUlQSV9QT1JUX0NUUkwocG9ydCk7Cj4gwqAJCWJvb2wgZW5hYmxlZCA9IEk5MTVfUkVBRChj dHJsX3JlZykgJiBEUElfRU5BQkxFOwo+IMKgCj4gQEAgLTc4NSw3ICs3ODUsNyBAQCBzdGF0aWMg Ym9vbCBpbnRlbF9kc2lfZ2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9lbmNvZGVyCj4gKmVuY29k ZXIsCj4gwqAJCWlmICghKEk5MTVfUkVBRChNSVBJX0RFVklDRV9SRUFEWShwb3J0KSkgJiBERVZJ Q0VfUkVBRFkpKQo+IMKgCQkJY29udGludWU7Cj4gwqAKPiAtCQlpZiAoSVNfQlJPWFRPTihkZXZf cHJpdikpIHsKPiArCQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsKPiDCoAkJCXUzMiB0bXAg PSBJOTE1X1JFQUQoTUlQSV9DVFJMKHBvcnQpKTsKPiDCoAkJCXRtcCAmPSBCWFRfUElQRV9TRUxF Q1RfTUFTSzsKPiDCoAkJCXRtcCA+Pj0gQlhUX1BJUEVfU0VMRUNUX1NISUZUOwo+IEBAIC05NzMs NyArOTczLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHNpX2dldF9jb25maWcoc3RydWN0IGludGVs X2VuY29kZXIKPiAqZW5jb2RlciwKPiDCoAl1MzIgcGNsazsKPiDCoAlEUk1fREVCVUdfS01TKCJc biIpOwo+IMKgCj4gLQlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpCj4gKwlpZiAoSVNfR0VOOV9M UChkZXZfcHJpdikpCj4gwqAJCWJ4dF9kc2lfZ2V0X3BpcGVfY29uZmlnKGVuY29kZXIsIHBpcGVf Y29uZmlnKTsKPiDCoAo+IMKgCXBjbGsgPSBpbnRlbF9kc2lfZ2V0X3BjbGsoZW5jb2RlciwgcGlw ZV9jb25maWctPnBpcGVfYnBwLAo+IEBAIC0xMDY1LDcgKzEwNjUsNyBAQCBzdGF0aWMgdm9pZCBz ZXRfZHNpX3RpbWluZ3Moc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAo+IMKgCWhicCA9IHR4 Ynl0ZWNsa2hzKGhicCwgYnBwLCBsYW5lX2NvdW50LCBpbnRlbF9kc2ktPmJ1cnN0X21vZGVfcmF0 aW8pOwo+IMKgCj4gwqAJZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykg ewo+IC0JCWlmIChJU19CUk9YVE9OKGRldl9wcml2KSkgewo+ICsJCWlmIChJU19HRU45X0xQKGRl dl9wcml2KSkgewo+IMKgCQkJLyoKPiDCoAkJCcKgKiBQcm9ncmFtIGhkaXNwbGF5IGFuZCB2ZGlz cGxheSBvbiBNSVBJIHRyYW5zY29kZXIuCj4gwqAJCQnCoCogVGhpcyBpcyBkaWZmZXJlbnQgZnJv bSBjYWxjdWxhdGVkIGhhY3RpdmUgYW5kCj4gQEAgLTExNTIsNyArMTE1Miw3IEBAIHN0YXRpYyB2 b2lkIGludGVsX2RzaV9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmNvZGVyCj4gKmludGVsX2VuY29k ZXIsCj4gwqAJCQl0bXAgJj0gflJFQURfUkVRVUVTVF9QUklPUklUWV9NQVNLOwo+IMKgCQkJSTkx NV9XUklURShNSVBJX0NUUkwocG9ydCksIHRtcCB8Cj4gwqAJCQkJCVJFQURfUkVRVUVTVF9QUklP UklUWV9ISUdIKTsKPiAtCQl9IGVsc2UgaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKSB7Cj4gKwkJ fSBlbHNlIGlmIChJU19HRU45X0xQKGRldl9wcml2KSkgewo+IMKgCQkJZW51bSBwaXBlIHBpcGUg PSBpbnRlbF9jcnRjLT5waXBlOwo+IMKgCj4gwqAJCQl0bXAgPSBJOTE1X1JFQUQoTUlQSV9DVFJM KHBvcnQpKTsKPiBAQCAtMTI0MSw3ICsxMjQxLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHNpX3By ZXBhcmUoc3RydWN0IGludGVsX2VuY29kZXIKPiAqaW50ZWxfZW5jb2RlciwKPiDCoAkJSTkxNV9X UklURShNSVBJX0lOSVRfQ09VTlQocG9ydCksCj4gwqAJCQkJdHhjbGtlc2MoaW50ZWxfZHNpLT5l c2NhcGVfY2xrX2RpdiwgMTAwKSk7Cj4gwqAKPiAtCQlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikg JiYgKCFpbnRlbF9kc2ktPmR1YWxfbGluaykpIHsKPiArCQlpZiAoSVNfR0VOOV9MUChkZXZfcHJp dikgJiYgKCFpbnRlbF9kc2ktPmR1YWxfbGluaykpIHsKPiDCoAkJCS8qCj4gwqAJCQnCoCogQlhU IHNwZWMgc2F5cyB3cml0ZSBNSVBJX0lOSVRfQ09VTlQgZm9yCj4gwqAJCQnCoCogYm90aCB0aGUg cG9ydHMsIGV2ZW4gaWYgb25seSBvbmUgaXMKPiBAQCAtMTQ1MSw3ICsxNDUxLDcgQEAgdm9pZCBp bnRlbF9kc2lfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgCj4gwqAJaWYgKElTX1ZB TExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7Cj4gwqAJCWRl dl9wcml2LT5taXBpX21taW9fYmFzZSA9IFZMVl9NSVBJX0JBU0U7Cj4gLQl9IGVsc2UgaWYgKElT X0JST1hUT04oZGV2X3ByaXYpKSB7Cj4gKwl9IGVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYp KSB7Cj4gwqAJCWRldl9wcml2LT5taXBpX21taW9fYmFzZSA9IEJYVF9NSVBJX0JBU0U7Cj4gwqAJ fSBlbHNlIHsKPiDCoAkJRFJNX0VSUk9SKCJVbnN1cHBvcnRlZCBNaXBpIGRldmljZSB0byByZWcg YmFzZSIpOwo+IEBAIC0xNDkyLDcgKzE0OTIsNyBAQCB2b2lkIGludGVsX2RzaV9pbml0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJwqAqIE9uIEJZVC9DSFYsIHBpcGUgQSBtYXBzIHRvIE1J UEkgRFNJIHBvcnQgQSwgcGlwZSBCIG1hcHMgdG8gTUlQSQo+IERTSQo+IMKgCcKgKiBwb3J0IEMu IEJYVCBpc24ndCBsaW1pdGVkIGxpa2UgdGhpcy4KPiDCoAnCoCovCj4gLQlpZiAoSVNfQlJPWFRP TihkZXZfcHJpdikpCj4gKwlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gwqAJCWludGVsX2Vu Y29kZXItPmNydGNfbWFzayA9IEJJVChQSVBFX0EpIHwgQklUKFBJUEVfQikgfAo+IEJJVChQSVBF X0MpOwo+IMKgCWVsc2UgaWYgKHBvcnQgPT0gUE9SVF9BKQo+IMKgCQlpbnRlbF9lbmNvZGVyLT5j cnRjX21hc2sgPSBCSVQoUElQRV9BKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHNpX3BsbC5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfcGxs LmMKPiBpbmRleCA1NmVmZjYwLi5jZjhjMWIwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RzaV9wbGwuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RzaV9wbGwuYwo+IEBAIC0zNTEsNyArMzUxLDcgQEAgc3RhdGljIHUzMiBieHRfZHNpX2dldF9w Y2xrKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+IGludCBwaXBlX2JwcCwKPiDCoHUz MiBpbnRlbF9kc2lfZ2V0X3BjbGsoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCBw aXBlX2JwcCwKPiDCoAkJwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY29u ZmlnKQo+IMKgewo+IC0JaWYgKElTX0JST1hUT04odG9faTkxNShlbmNvZGVyLT5iYXNlLmRldikp KQo+ICsJaWYgKElTX0dFTjlfTFAodG9faTkxNShlbmNvZGVyLT5iYXNlLmRldikpKQo+IMKgCQly ZXR1cm4gYnh0X2RzaV9nZXRfcGNsayhlbmNvZGVyLCBwaXBlX2JwcCwgY29uZmlnKTsKPiDCoAll bHNlCj4gwqAJCXJldHVybiB2bHZfZHNpX2dldF9wY2xrKGVuY29kZXIsIHBpcGVfYnBwLCBjb25m aWcpOwo+IEBAIC01MDQsNyArNTA0LDcgQEAgc3RhdGljIHZvaWQgYnh0X2VuYWJsZV9kc2lfcGxs KHN0cnVjdCBpbnRlbF9lbmNvZGVyCj4gKmVuY29kZXIsCj4gwqAKPiDCoGJvb2wgaW50ZWxfZHNp X3BsbF9pc19lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoHsK PiAtCWlmIChJU19CUk9YVE9OKGRldl9wcml2KSkKPiArCWlmIChJU19HRU45X0xQKGRldl9wcml2 KSkKPiDCoAkJcmV0dXJuIGJ4dF9kc2lfcGxsX2lzX2VuYWJsZWQoZGV2X3ByaXYpOwo+IMKgCj4g wqAJTUlTU0lOR19DQVNFKElOVEVMX0RFVklEKGRldl9wcml2KSk7Cj4gQEAgLTUxOSw3ICs1MTks NyBAQCBpbnQgaW50ZWxfY29tcHV0ZV9kc2lfcGxsKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyLAo+IMKgCj4gwqAJaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJ RVcoZGV2X3ByaXYpKQo+IMKgCQlyZXR1cm4gdmx2X2NvbXB1dGVfZHNpX3BsbChlbmNvZGVyLCBj b25maWcpOwo+IC0JZWxzZSBpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpCj4gKwllbHNlIGlmIChJ U19HRU45X0xQKGRldl9wcml2KSkKPiDCoAkJcmV0dXJuIGJ4dF9jb21wdXRlX2RzaV9wbGwoZW5j b2RlciwgY29uZmlnKTsKPiDCoAo+IMKgCXJldHVybiAtRU5PREVWOwo+IEBAIC01MzIsNyArNTMy LDcgQEAgdm9pZCBpbnRlbF9lbmFibGVfZHNpX3BsbChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlciwKPiDCoAo+IMKgCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllW SUVXKGRldl9wcml2KSkKPiDCoAkJdmx2X2VuYWJsZV9kc2lfcGxsKGVuY29kZXIsIGNvbmZpZyk7 Cj4gLQllbHNlIGlmIChJU19CUk9YVE9OKGRldl9wcml2KSkKPiArCWVsc2UgaWYgKElTX0dFTjlf TFAoZGV2X3ByaXYpKQo+IMKgCQlieHRfZW5hYmxlX2RzaV9wbGwoZW5jb2RlciwgY29uZmlnKTsK PiDCoH0KPiDCoAo+IEBAIC01NDIsNyArNTQyLDcgQEAgdm9pZCBpbnRlbF9kaXNhYmxlX2RzaV9w bGwoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gwqAKPiDCoAlpZiAoSVNfVkFMTEVZ VklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4gwqAJCXZsdl9kaXNh YmxlX2RzaV9wbGwoZW5jb2Rlcik7Cj4gLQllbHNlIGlmIChJU19CUk9YVE9OKGRldl9wcml2KSkK PiArCWVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+IMKgCQlieHRfZGlzYWJsZV9kc2lf cGxsKGVuY29kZXIpOwo+IMKgfQo+IMKgCj4gQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIGludGVs X2RzaV9yZXNldF9jbG9ja3Moc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gZW51bSBw b3J0IHBvcnQpCj4gwqB7Cj4gwqAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gwqAKPiAtCWlmIChJU19CUk9YVE9OKGRldl9w cml2KSkKPiArCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkKPiDCoAkJYnh0X2RzaV9yZXNldF9j bG9ja3MoZW5jb2RlciwgcG9ydCk7Cj4gwqAJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJp dikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4gwqAJCXZsdl9kc2lfcmVzZXRfY2xvY2tz KGVuY29kZXIsIHBvcnQpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9oZG1pLmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+IGluZGV4IGZi ODhlMzIuLjAzNGVjMWEyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2hkbWkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+IEBAIC0x MjQ2LDcgKzEyNDYsNyBAQCBoZG1pX3BvcnRfY2xvY2tfdmFsaWQoc3RydWN0IGludGVsX2hkbWkg KmhkbWksCj4gwqAJCXJldHVybiBNT0RFX0NMT0NLX0hJR0g7Cj4gwqAKPiDCoAkvKiBCWFQgRFBM TCBjYW4ndCBnZW5lcmF0ZSAyMjMtMjQwIE1IeiAqLwo+IC0JaWYgKElTX0JST1hUT04oZGV2X3By aXYpICYmIGNsb2NrID4gMjIzMzMzICYmIGNsb2NrIDwgMjQwMDAwKQo+ICsJaWYgKElTX0dFTjlf TFAoZGV2X3ByaXYpICYmIGNsb2NrID4gMjIzMzMzICYmIGNsb2NrIDwgMjQwMDAwKQo+IMKgCQly ZXR1cm4gTU9ERV9DTE9DS19SQU5HRTsKPiDCoAo+IMKgCS8qIENIViBEUExMIGNhbid0IGdlbmVy YXRlIDIxNi0yNDAgTUh6ICovCj4gQEAgLTE4MDksMTMgKzE4MDksMTMgQEAgc3RhdGljIHU4IGlu dGVsX2hkbWlfZGRjX3BpbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ICpkZXZfcHJpdiwKPiDC oAo+IMKgCXN3aXRjaCAocG9ydCkgewo+IMKgCWNhc2UgUE9SVF9COgo+IC0JCWlmIChJU19CUk9Y VE9OKGRldl9wcml2KSkKPiArCQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gwqAJCQlkZGNf cGluID0gR01CVVNfUElOXzFfQlhUOwo+IMKgCQllbHNlCj4gwqAJCQlkZGNfcGluID0gR01CVVNf UElOX0RQQjsKPiDCoAkJYnJlYWs7Cj4gwqAJY2FzZSBQT1JUX0M6Cj4gLQkJaWYgKElTX0JST1hU T04oZGV2X3ByaXYpKQo+ICsJCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkKPiDCoAkJCWRkY19w aW4gPSBHTUJVU19QSU5fMl9CWFQ7Cj4gwqAJCWVsc2UKPiDCoAkJCWRkY19waW4gPSBHTUJVU19Q SU5fRFBDOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9pMmMuYwo+ IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaTJjLmMKPiBpbmRleCA4M2YyNjBiLi4xNjA2 ZTMxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2kyYy5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaTJjLmMKPiBAQCAtNzIsNyArNzIsNyBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGdtYnVzX3BpbiBnbWJ1c19waW5zX2J4dFtdID0gewo+IMKgc3Rh dGljIGNvbnN0IHN0cnVjdCBnbWJ1c19waW4gKmdldF9nbWJ1c19waW4oc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUKPiAqZGV2X3ByaXYsCj4gwqAJCQkJCcKgwqDCoMKgwqB1bnNpZ25lZCBpbnQgcGlu KQo+IMKgewo+IC0JaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKQo+ICsJaWYgKElTX0dFTjlfTFAo ZGV2X3ByaXYpKQo+IMKgCQlyZXR1cm4gJmdtYnVzX3BpbnNfYnh0W3Bpbl07Cj4gwqAJZWxzZSBp ZiAoSVNfU0tZTEFLRShkZXZfcHJpdikgfHwgSVNfS0FCWUxBS0UoZGV2X3ByaXYpKQo+IMKgCQly ZXR1cm4gJmdtYnVzX3BpbnNfc2tsW3Bpbl07Cj4gQEAgLTg3LDcgKzg3LDcgQEAgYm9vbCBpbnRl bF9nbWJ1c19pc192YWxpZF9waW4oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiAqZGV2X3ByaXYs Cj4gwqB7Cj4gwqAJdW5zaWduZWQgaW50IHNpemU7Cj4gwqAKPiAtCWlmIChJU19CUk9YVE9OKGRl dl9wcml2KSkKPiArCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkKPiDCoAkJc2l6ZSA9IEFSUkFZ X1NJWkUoZ21idXNfcGluc19ieHQpOwo+IMKgCWVsc2UgaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYp IHx8IElTX0tBQllMQUtFKGRldl9wcml2KSkKPiDCoAkJc2l6ZSA9IEFSUkFZX1NJWkUoZ21idXNf cGluc19za2wpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2Nz LmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3MuYwo+IGluZGV4IDgwYmI5MjQu LmVlZDA3MDcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jCj4gQEAgLTE4Miw3ICsx ODIsNyBAQCBzdGF0aWMgYm9vbCBnZXRfbW9jc19zZXR0aW5ncyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZQo+ICpkZXZfcHJpdiwKPiDCoAkJdGFibGUtPnNpemXCoMKgPSBBUlJBWV9TSVpFKHNreWxh a2VfbW9jc190YWJsZSk7Cj4gwqAJCXRhYmxlLT50YWJsZSA9IHNreWxha2VfbW9jc190YWJsZTsK PiDCoAkJcmVzdWx0ID0gdHJ1ZTsKPiAtCX0gZWxzZSBpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikp IHsKPiArCX0gZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsKPiDCoAkJdGFibGUtPnNp emXCoMKgPSBBUlJBWV9TSVpFKGJyb3h0b25fbW9jc190YWJsZSk7Cj4gwqAJCXRhYmxlLT50YWJs ZSA9IGJyb3h0b25fbW9jc190YWJsZTsKPiDCoAkJcmVzdWx0ID0gdHJ1ZTsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+IGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcGFuZWwuYwo+IGluZGV4IGJlNGI0ZDUuLmJmMjg5OWQgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKPiBAQCAtMTc1Niw3ICsxNzU2LDcgQEAgaW50ZWxfcGFu ZWxfaW5pdF9iYWNrbGlnaHRfZnVuY3Moc3RydWN0IGludGVsX3BhbmVsCj4gKnBhbmVsKQo+IMKg CcKgwqDCoMKgaW50ZWxfZHNpX2Rjc19pbml0X2JhY2tsaWdodF9mdW5jcyhjb25uZWN0b3IpID09 IDApCj4gwqAJCXJldHVybjsKPiDCoAo+IC0JaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKSB7Cj4g KwlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsKPiDCoAkJcGFuZWwtPmJhY2tsaWdodC5zZXR1 cCA9IGJ4dF9zZXR1cF9iYWNrbGlnaHQ7Cj4gwqAJCXBhbmVsLT5iYWNrbGlnaHQuZW5hYmxlID0g Ynh0X2VuYWJsZV9iYWNrbGlnaHQ7Cj4gwqAJCXBhbmVsLT5iYWNrbGlnaHQuZGlzYWJsZSA9IGJ4 dF9kaXNhYmxlX2JhY2tsaWdodDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBpbmRleCBjYzll MGMwLi5kY2Y1Y2Q0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bt LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gQEAgLTUyMjgsNyAr NTIyOCw3IEBAIGludCBzYW5pdGl6ZV9yYzZfb3B0aW9uKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl Cj4gKmRldl9wcml2LCBpbnQgZW5hYmxlX3JjNikKPiDCoAlpZiAoIWVuYWJsZV9yYzYpCj4gwqAJ CXJldHVybiAwOwo+IMKgCj4gLQlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikgJiYgIWJ4dF9jaGVj a19iaW9zX3JjNl9zZXR1cChkZXZfcHJpdikpIHsKPiArCWlmIChJU19HRU45X0xQKGRldl9wcml2 KSAmJiAhYnh0X2NoZWNrX2Jpb3NfcmM2X3NldHVwKGRldl9wcml2KSkgewo+IMKgCQlEUk1fSU5G TygiUkM2IGRpc2FibGVkIGJ5IEJJT1NcbiIpOwo+IMKgCQlyZXR1cm4gMDsKPiDCoAl9Cj4gQEAg LTUyNjIsNyArNTI2Miw3IEBAIHN0YXRpYyB2b2lkIGdlbjZfaW5pdF9ycHNfZnJlcXVlbmNpZXMo c3RydWN0Cj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqAJLyogQWxsIG9mIHRoZXNl IHZhbHVlcyBhcmUgaW4gdW5pdHMgb2YgNTBNSHogKi8KPiDCoAo+IMKgCS8qIHN0YXRpYyB2YWx1 ZXMgZnJvbSBIVzogUlAwID4gUlAxID4gUlBuIChtaW5fZnJlcSkgKi8KPiAtCWlmIChJU19CUk9Y VE9OKGRldl9wcml2KSkgewo+ICsJaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7Cj4gwqAJCXUz MiBycF9zdGF0ZV9jYXAgPSBJOTE1X1JFQUQoQlhUX1JQX1NUQVRFX0NBUCk7Cj4gwqAJCWRldl9w cml2LT5ycHMucnAwX2ZyZXEgPSAocnBfc3RhdGVfY2FwID4+IDE2KSAmIDB4ZmY7Cj4gwqAJCWRl dl9wcml2LT5ycHMucnAxX2ZyZXEgPSAocnBfc3RhdGVfY2FwID4+wqDCoDgpICYgMHhmZjsKPiBA QCAtNzY0Miw3ICs3NjQyLDcgQEAgdm9pZCBpbnRlbF9pbml0X2Nsb2NrX2dhdGluZ19ob29rcyhz dHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoAkJZGV2X3ByaXYtPmRpc3Bs YXkuaW5pdF9jbG9ja19nYXRpbmcgPQo+IHNreWxha2VfaW5pdF9jbG9ja19nYXRpbmc7Cj4gwqAJ ZWxzZSBpZiAoSVNfS0FCWUxBS0UoZGV2X3ByaXYpKQo+IMKgCQlkZXZfcHJpdi0+ZGlzcGxheS5p bml0X2Nsb2NrX2dhdGluZyA9Cj4ga2FieWxha2VfaW5pdF9jbG9ja19nYXRpbmc7Cj4gLQllbHNl IGlmIChJU19CUk9YVE9OKGRldl9wcml2KSkKPiArCWVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3By aXYpKQo+IMKgCQlkZXZfcHJpdi0+ZGlzcGxheS5pbml0X2Nsb2NrX2dhdGluZyA9IGJ4dF9pbml0 X2Nsb2NrX2dhdGluZzsKPiDCoAllbHNlIGlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQo+IMKg CQlkZXZfcHJpdi0+ZGlzcGxheS5pbml0X2Nsb2NrX2dhdGluZyA9Cj4gYnJvYWR3ZWxsX2luaXRf Y2xvY2tfZ2F0aW5nOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y dW50aW1lX3BtLmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYwo+ IGluZGV4IDA1OTk0MDguLjY5NzU3NGYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cnVudGltZV9wbS5jCj4gQEAgLTUzMCw3ICs1MzAsNyBAQCBzdGF0aWMgdTMyIGdlbjlfZGNfbWFz ayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqAJdTMyIG1hc2s7Cj4gwqAK PiDCoAltYXNrID0gRENfU1RBVEVfRU5fVVBUT19EQzU7Cj4gLQlpZiAoSVNfQlJPWFRPTihkZXZf cHJpdikpCj4gKwlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gwqAJCW1hc2sgfD0gRENfU1RB VEVfRU5fREM5Owo+IMKgCWVsc2UKPiDCoAkJbWFzayB8PSBEQ19TVEFURV9FTl9VUFRPX0RDNjsK PiBAQCAtOTExLDcgKzkxMSw3IEBAIHN0YXRpYyB2b2lkIGdlbjlfZGNfb2ZmX3Bvd2VyX3dlbGxf ZW5hYmxlKHN0cnVjdAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IMKgCj4gwqAJZ2Vu OV9hc3NlcnRfZGJ1Zl9lbmFibGVkKGRldl9wcml2KTsKPiDCoAo+IC0JaWYgKElTX0JST1hUT04o ZGV2X3ByaXYpKQo+ICsJaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+IMKgCQlieHRfdmVyaWZ5 X2RkaV9waHlfcG93ZXJfd2VsbHMoZGV2X3ByaXYpOwo+IMKgfQo+IMKgCj4gQEAgLTIxNzAsNyAr MjE3MCw3IEBAIHN0YXRpYyB1aW50MzJfdCBnZXRfYWxsb3dlZF9kY19tYXNrKGNvbnN0IHN0cnVj dAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IMKgCWlmIChJU19TS1lMQUtFKGRldl9w cml2KSB8fCBJU19LQUJZTEFLRShkZXZfcHJpdikpIHsKPiDCoAkJbWF4X2RjID0gMjsKPiDCoAkJ bWFzayA9IDA7Cj4gLQl9IGVsc2UgaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKSB7Cj4gKwl9IGVs c2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7Cj4gwqAJCW1heF9kYyA9IDE7Cj4gwqAJCS8q Cj4gwqAJCcKgKiBEQzkgaGFzIGEgc2VwYXJhdGUgSFcgZmxvdyBmcm9tIHRoZSByZXN0IG9mIHRo ZSBEQyBzdGF0ZXMsCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo=