From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Michal Wajdeczko" Subject: Re: [PATCH 10/12] drm/i915/uc: prefer intel_gt over i915 in GuC/HuC paths Date: Wed, 10 Jul 2019 20:35:27 +0200 Message-ID: References: <20190710005437.3496-1-daniele.ceraolospurio@intel.com> <20190710005437.3496-11-daniele.ceraolospurio@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed"; DelSp="yes" Content-Transfer-Encoding: base64 Return-path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7DA0F6E11E for ; Wed, 10 Jul 2019 18:35:31 +0000 (UTC) In-Reply-To: <20190710005437.3496-11-daniele.ceraolospurio@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, Daniele Ceraolo Spurio List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAxMCBKdWwgMjAxOSAwMjo1NDozNSArMDIwMCwgRGFuaWVsZSBDZXJhb2xvIFNwdXJp byAgCjxkYW5pZWxlLmNlcmFvbG9zcHVyaW9AaW50ZWwuY29tPiB3cm90ZToKCj4gV2l0aCBvdXIg SFcgaW50ZXJmYWNlIGxvZ2ljIG1vdmluZyBmcm9tIGk5MTUgdG8gZ3QgYW5kIHdpdGggR3VDIGFu ZCBIdUMKPiBiZWluZyBwYXJ0IG9mIHRoZSBndCBIVywgaXQgbWFrZXMgc2Vuc2UgdG8gdXNlIHRo ZSBpbnRlbF9ndCBzdHJ1Y3R1cmUKPiBpbnN0ZWFkIG9mIGk5MTUgYXMgb3VyIHJlZmVyZW5jZSBv YmplY3QgaW4gR3VDL0h1QyBwYXRocy4KPgo+IFNpZ25lZC1vZmYtYnk6IERhbmllbGUgQ2VyYW9s byBTcHVyaW8gPGRhbmllbGUuY2VyYW9sb3NwdXJpb0BpbnRlbC5jb20+Cj4gQ2M6IE1pY2hhbCBX YWpkZWN6a28gPG1pY2hhbC53YWpkZWN6a29AaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5oICAgICAgICAgICAgfCAxMCArKysKPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmMgICAgICAgIHwgNTIgKysrKysrLS0tLS0tCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19mdy5jICAgICB8IDgxICsrKysr KysrKystLS0tLS0tLS0KPiAgLi4uL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlz c2lvbi5jIHwgNDMgKysrKystLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRl bF9odWMuYyAgICAgICAgfCAyMiArKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF9odWNfZncuYyAgICAgfCAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF91Yy5jICAgICAgICAgfCAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuYyAgICAgICAgICAgfCAgOCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuaCAgICAgICAgICAgfCAgNCArLQo+ICA5IGZpbGVzIGNoYW5nZWQsIDEyMCBpbnNlcnRp b25zKCspLCAxMDggZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfZ3QuaCAgCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9n dC5oCj4gaW5kZXggODgwYmUwNWEzZjRhLi5lMTgyNTA5ZDQ0YmEgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2d0LmgKPiBAQCAtMTYsNiArMTYsMTYgQEAgc3RhdGljIGlubGluZSBzdHJ1 Y3QgaW50ZWxfZ3QgKnVjX3RvX2d0KHN0cnVjdCAgCj4gaW50ZWxfdWMgKnVjKQo+ICAJcmV0dXJu IGNvbnRhaW5lcl9vZih1Yywgc3RydWN0IGludGVsX2d0LCB1Yyk7Cj4gIH0KPiArc3RhdGljIGlu bGluZSBzdHJ1Y3QgaW50ZWxfZ3QgKmd1Y190b19ndChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4g K3sKPiArCXJldHVybiBjb250YWluZXJfb2YoZ3VjLCBzdHJ1Y3QgaW50ZWxfZ3QsIHVjLmd1Yyk7 Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGludGVsX2d0ICpodWNfdG9fZ3Qoc3Ry dWN0IGludGVsX2h1YyAqaHVjKQo+ICt7Cj4gKwlyZXR1cm4gY29udGFpbmVyX29mKGh1Yywgc3Ry dWN0IGludGVsX2d0LCB1Yy5odWMpOwo+ICt9Cj4gKwo+ICB2b2lkIGludGVsX2d0X2luaXRfZWFy bHkoc3RydWN0IGludGVsX2d0ICpndCwgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgIAo+ICppOTE1 KTsKPiAgdm9pZCBpbnRlbF9ndF9pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmMg IAo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmMKPiBpbmRleCA0MTcz YjM1YmYxMDQuLjZiNTZmMzkwNzJiMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC91Yy9pbnRlbF9ndWMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2lu dGVsX2d1Yy5jCj4gQEAgLTIyLDYgKzIyLDcgQEAKPiAgICoKPiAgICovCj4gKyNpbmNsdWRlICJn dC9pbnRlbF9ndC5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfZ3VjLmgiCj4gICNpbmNsdWRlICJpbnRl bF9ndWNfYWRzLmgiCj4gICNpbmNsdWRlICJpbnRlbF9ndWNfc3VibWlzc2lvbi5oIgo+IEBAIC0y OSwxNiArMzAsMTYgQEAKPiBzdGF0aWMgdm9pZCBnZW44X2d1Y19yYWlzZV9pcnEoc3RydWN0IGlu dGVsX2d1YyAqZ3VjKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBndWNfdG9faTkxNShndWMpOwo+ICsJc3RydWN0IGludGVsX2d0ICpndCA9IGd1Y190b19ndChn dWMpOwo+IC0JSTkxNV9XUklURShHVUNfU0VORF9JTlRFUlJVUFQsIEdVQ19TRU5EX1RSSUdHRVIp Owo+ICsJaW50ZWxfdW5jb3JlX3dyaXRlKGd0LT51bmNvcmUsIEdVQ19TRU5EX0lOVEVSUlVQVCwg R1VDX1NFTkRfVFJJR0dFUik7Cj4gIH0KPiBzdGF0aWMgdm9pZCBnZW4xMV9ndWNfcmFpc2VfaXJx KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZ3VjX3RvX2k5MTUoZ3VjKTsKPiArCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBn dWNfdG9fZ3QoZ3VjKTsKPiAtCUk5MTVfV1JJVEUoR0VOMTFfR1VDX0hPU1RfSU5URVJSVVBULCAw KTsKPiArCWludGVsX3VuY29yZV93cml0ZShndC0+dW5jb3JlLCBHRU4xMV9HVUNfSE9TVF9JTlRF UlJVUFQsIDApOwo+ICB9Cj4gc3RhdGljIGlubGluZSBpOTE1X3JlZ190IGd1Y19zZW5kX3JlZyhz dHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHUzMiBpKQo+IEBAIC01MiwxMSArNTMsMTEgQEAgc3RhdGlj IGlubGluZSBpOTE1X3JlZ190IGd1Y19zZW5kX3JlZyhzdHJ1Y3QgIAo+IGludGVsX2d1YyAqZ3Vj LCB1MzIgaSkKPiB2b2lkIGludGVsX2d1Y19pbml0X3NlbmRfcmVncyhzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGd1Y190 b19pOTE1KGd1Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gZ3VjX3RvX2d0KGd1Yyk7Cj4g IAllbnVtIGZvcmNld2FrZV9kb21haW5zIGZ3X2RvbWFpbnMgPSAwOwo+ICAJdW5zaWduZWQgaW50 IGk7Cj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkgewo+ICsJaWYgKElOVEVMX0dF TihndC0+aTkxNSkgPj0gMTEpIHsKPiAgCQlndWMtPnNlbmRfcmVncy5iYXNlID0KPiAgCQkJCWk5 MTVfbW1pb19yZWdfb2Zmc2V0KEdFTjExX1NPRlRfU0NSQVRDSCgwKSk7Cj4gIAkJZ3VjLT5zZW5k X3JlZ3MuY291bnQgPSBHRU4xMV9TT0ZUX1NDUkFUQ0hfQ09VTlQ7Cj4gQEAgLTY3LDcgKzY4LDcg QEAgdm9pZCBpbnRlbF9ndWNfaW5pdF9zZW5kX3JlZ3Moc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ ICAJfQo+IAlmb3IgKGkgPSAwOyBpIDwgZ3VjLT5zZW5kX3JlZ3MuY291bnQ7IGkrKykgewo+IC0J CWZ3X2RvbWFpbnMgfD0gaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9mb3JfcmVnKCZkZXZfcHJpdi0+ dW5jb3JlLAo+ICsJCWZ3X2RvbWFpbnMgfD0gaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9mb3JfcmVn KGd0LT51bmNvcmUsCj4gIAkJCQkJZ3VjX3NlbmRfcmVnKGd1YywgaSksCj4gIAkJCQkJRldfUkVH X1JFQUQgfCBGV19SRUdfV1JJVEUpOwo+ICAJfQo+IEBAIC0xMjcsNyArMTI4LDcgQEAgc3RhdGlj IHZvaWQgZ3VjX3NoYXJlZF9kYXRhX2Rlc3Ryb3koc3RydWN0IGludGVsX2d1YyAgCj4gKmd1YykK PiBpbnQgaW50ZWxfZ3VjX2luaXQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICB7Cj4gLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBndWNfdG9faTkxNShndWMpOwo+ICsJc3Ry dWN0IGludGVsX2d0ICpndCA9IGd1Y190b19ndChndWMpOwo+ICAJaW50IHJldDsKPiAJcmV0ID0g aW50ZWxfdWNfZndfaW5pdCgmZ3VjLT5mdyk7Cj4gQEAgLTE1Myw3ICsxNTQsNyBAQCBpbnQgaW50 ZWxfZ3VjX2luaXQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICAJCWdvdG8gZXJyX2FkczsKPiAJ LyogV2UgbmVlZCB0byBub3RpZnkgdGhlIGd1YyB3aGVuZXZlciB3ZSBjaGFuZ2UgdGhlIEdHVFQg Ki8KPiAtCWk5MTVfZ2d0dF9lbmFibGVfZ3VjKGRldl9wcml2KTsKPiArCWk5MTVfZ2d0dF9lbmFi bGVfZ3VjKGd0LT5nZ3R0KTsKPiAJcmV0dXJuIDA7Cj4gQEAgLTE3Miw5ICsxNzMsOSBAQCBpbnQg aW50ZWxfZ3VjX2luaXQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+IHZvaWQgaW50ZWxfZ3VjX2Zp bmkoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBndWNfdG9faTkxNShndWMpOwo+ICsJc3RydWN0IGludGVsX2d0ICpndCA9 IGd1Y190b19ndChndWMpOwo+IC0JaTkxNV9nZ3R0X2Rpc2FibGVfZ3VjKGRldl9wcml2KTsKPiAr CWk5MTVfZ2d0dF9kaXNhYmxlX2d1YyhndC0+Z2d0dCk7Cj4gCWludGVsX2d1Y19jdF9maW5pKCZn dWMtPmN0KTsKPiBAQCAtMjgyLDcgKzI4Myw3IEBAIHN0YXRpYyB1MzIgZ3VjX2N0bF9hZHNfZmxh Z3Moc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICAgKi8KPiAgdm9pZCBpbnRlbF9ndWNfaW5pdF9w YXJhbXMoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBndWNfdG9faTkxNShndWMpOwo+ICsJc3RydWN0IGludGVsX3VuY29y ZSAqdW5jb3JlID0gZ3VjX3RvX2d0KGd1YyktPnVuY29yZTsKPiAgCXUzMiBwYXJhbXNbR1VDX0NU TF9NQVhfRFdPUkRTXTsKPiAgCWludCBpOwo+IEBAIC0zMDIsMTQgKzMwMywxNCBAQCB2b2lkIGlu dGVsX2d1Y19pbml0X3BhcmFtcyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4gIAkgKiB0aGV5IGFy ZSBwb3dlciBjb250ZXh0IHNhdmVkIHNvIGl0J3Mgb2sgdG8gcmVsZWFzZSBmb3JjZXdha2UKPiAg CSAqIHdoZW4gd2UgYXJlIGRvbmUgaGVyZSBhbmQgdGFrZSBpdCBhZ2FpbiBhdCB4ZmVyIHRpbWUu Cj4gIAkgKi8KPiAtCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KCZkZXZfcHJpdi0+dW5jb3Jl LCBGT1JDRVdBS0VfQkxJVFRFUik7Cj4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldCh1bmNv cmUsIEZPUkNFV0FLRV9CTElUVEVSKTsKPiAtCUk5MTVfV1JJVEUoU09GVF9TQ1JBVENIKDApLCAw KTsKPiArCWludGVsX3VuY29yZV93cml0ZSh1bmNvcmUsIFNPRlRfU0NSQVRDSCgwKSwgMCk7Cj4g CWZvciAoaSA9IDA7IGkgPCBHVUNfQ1RMX01BWF9EV09SRFM7IGkrKykKPiAtCQlJOTE1X1dSSVRF KFNPRlRfU0NSQVRDSCgxICsgaSksIHBhcmFtc1tpXSk7Cj4gKwkJaW50ZWxfdW5jb3JlX3dyaXRl KHVuY29yZSwgU09GVF9TQ1JBVENIKDEgKyBpKSwgcGFyYW1zW2ldKTsKPiAtCWludGVsX3VuY29y ZV9mb3JjZXdha2VfcHV0KCZkZXZfcHJpdi0+dW5jb3JlLCBGT1JDRVdBS0VfQkxJVFRFUik7Cj4g KwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dCh1bmNvcmUsIEZPUkNFV0FLRV9CTElUVEVSKTsK PiAgfQo+IGludCBpbnRlbF9ndWNfc2VuZF9ub3Aoc3RydWN0IGludGVsX2d1YyAqZ3VjLCBjb25z dCB1MzIgKmFjdGlvbiwgdTMyIGxlbiwKPiBAQCAtMzMwLDggKzMzMSw3IEBAIHZvaWQgaW50ZWxf Z3VjX3RvX2hvc3RfZXZlbnRfaGFuZGxlcl9ub3Aoc3RydWN0ICAKPiBpbnRlbF9ndWMgKmd1YykK PiAgaW50IGludGVsX2d1Y19zZW5kX21taW8oc3RydWN0IGludGVsX2d1YyAqZ3VjLCBjb25zdCB1 MzIgKmFjdGlvbiwgdTMyICAKPiBsZW4sCj4gIAkJCXUzMiAqcmVzcG9uc2VfYnVmLCB1MzIgcmVz cG9uc2VfYnVmX3NpemUpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGd1Y190b19pOTE1KGd1Yyk7Cj4gLQlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSAm ZGV2X3ByaXYtPnVuY29yZTsKPiArCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9IGd1Y190 b19ndChndWMpLT51bmNvcmU7Cj4gIAl1MzIgc3RhdHVzOwo+ICAJaW50IGk7Cj4gIAlpbnQgcmV0 Owo+IEBAIC0zODAsNyArMzgwLDggQEAgaW50IGludGVsX2d1Y19zZW5kX21taW8oc3RydWN0IGlu dGVsX2d1YyAqZ3VjLCBjb25zdCAgCj4gdTMyICphY3Rpb24sIHUzMiBsZW4sCj4gIAkJaW50IGNv dW50ID0gbWluKHJlc3BvbnNlX2J1Zl9zaXplLCBndWMtPnNlbmRfcmVncy5jb3VudCAtIDEpOwo+ IAkJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCj4gLQkJCXJlc3BvbnNlX2J1ZltpXSA9IEk5 MTVfUkVBRChndWNfc2VuZF9yZWcoZ3VjLCBpICsgMSkpOwo+ICsJCQlyZXNwb25zZV9idWZbaV0g PSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsCj4gKwkJCQkJCQkgICAgZ3VjX3NlbmRfcmVnKGd1 YywgaSArIDEpKTsKPiAgCX0KPiAJLyogVXNlIGRhdGEgZnJvbSB0aGUgR3VDIHJlc3BvbnNlIGFz IG91ciByZXR1cm4gdmFsdWUgKi8KPiBAQCAtNDU0LDcgKzQ1NSw3IEBAIGludCBpbnRlbF9ndWNf YXV0aF9odWMoc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1MzIgIAo+IHJzYV9vZmZzZXQpCj4gICAq Lwo+ICBpbnQgaW50ZWxfZ3VjX3N1c3BlbmQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICB7Cj4g LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBndWNfdG9faTkxNShndWMpOwo+ ICsJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gZ3VjX3RvX2d0KGd1YyktPnVuY29yZTsK PiAgCWludCByZXQ7Cj4gIAl1MzIgc3RhdHVzOwo+ICAJdTMyIGFjdGlvbltdID0gewo+IEBAIC00 NzIsMTMgKzQ3MywxNCBAQCBpbnQgaW50ZWxfZ3VjX3N1c3BlbmQoc3RydWN0IGludGVsX2d1YyAq Z3VjKQo+ICAJICogaW4gcHJvZ3Jlc3Mgc28gd2UgbmVlZCB0byB0YWtlIGNhcmUgb2YgdGhhdCBv dXJzZWx2ZXMgYXMgd2VsbC4KPiAgCSAqLwo+IC0JSTkxNV9XUklURShTT0ZUX1NDUkFUQ0goMTQp LCBJTlRFTF9HVUNfU0xFRVBfU1RBVEVfSU5WQUxJRF9NQVNLKTsKPiArCWludGVsX3VuY29yZV93 cml0ZSh1bmNvcmUsIFNPRlRfU0NSQVRDSCgxNCksCj4gKwkJCSAgIElOVEVMX0dVQ19TTEVFUF9T VEFURV9JTlZBTElEX01BU0spOwo+IAlyZXQgPSBpbnRlbF9ndWNfc2VuZChndWMsIGFjdGlvbiwg QVJSQVlfU0laRShhY3Rpb24pKTsKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAtCXJl dCA9IF9faW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoJmRldl9wcml2LT51bmNvcmUsIFNPRlRfU0NS QVRDSCgxNCksCj4gKwlyZXQgPSBfX2ludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKHVuY29yZSwgU09G VF9TQ1JBVENIKDE0KSwKPiAgCQkJCQlJTlRFTF9HVUNfU0xFRVBfU1RBVEVfSU5WQUxJRF9NQVNL LAo+ICAJCQkJCTAsIDAsIDEwLCAmc3RhdHVzKTsKPiAgCWlmIChyZXQpCj4gQEAgLTU3NCwxNyAr NTc2LDE3IEBAIGludCBpbnRlbF9ndWNfcmVzdW1lKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAg ICovCj4gIHN0cnVjdCBpOTE1X3ZtYSAqaW50ZWxfZ3VjX2FsbG9jYXRlX3ZtYShzdHJ1Y3QgaW50 ZWxfZ3VjICpndWMsIHUzMiBzaXplKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBndWNfdG9faTkxNShndWMpOwo+ICsJc3RydWN0IGludGVsX2d0ICpndCA9IGd1 Y190b19ndChndWMpOwo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiAgCXN0 cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICAJdTY0IGZsYWdzOwo+ICAJaW50IHJldDsKPiAtCW9iaiA9 IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc2htZW0oZGV2X3ByaXYsIHNpemUpOwo+ICsJb2JqID0g aTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zaG1lbShndC0+aTkxNSwgc2l6ZSk7Cj4gIAlpZiAoSVNf RVJSKG9iaikpCj4gIAkJcmV0dXJuIEVSUl9DQVNUKG9iaik7Cj4gLQl2bWEgPSBpOTE1X3ZtYV9p bnN0YW5jZShvYmosICZkZXZfcHJpdi0+Z2d0dC52bSwgTlVMTCk7Cj4gKwl2bWEgPSBpOTE1X3Zt YV9pbnN0YW5jZShvYmosICZndC0+Z2d0dC0+dm0sIE5VTEwpOwo+ICAJaWYgKElTX0VSUih2bWEp KQo+ICAJCWdvdG8gZXJyOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91 Yy9pbnRlbF9ndWNfZncuYyAgCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9n dWNfZncuYwo+IGluZGV4IGVlOTVkNDk2MGM1Yy4uOTgzMDVlM2ZkNDJjIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19mdy5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3LmMKPiBAQCAtMjcsNiArMjcsNyBAQAo+ ICAgKiAgICBBbGV4IERhaSA8eXUuZGFpQGludGVsLmNvbT4KPiAgICovCj4gKyNpbmNsdWRlICJn dC9pbnRlbF9ndC5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfZ3VjX2Z3LmgiCj4gICNpbmNsdWRlICJp OTE1X2Rydi5oIgo+IEBAIC0xMjksMzUgKzEzMCwzNyBAQCB2b2lkIGludGVsX2d1Y19md19pbml0 X2Vhcmx5KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiBzdGF0aWMgdm9pZCBndWNfcHJlcGFyZV94 ZmVyKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZ3VjX3RvX2k5MTUoZ3VjKTsKPiArCXN0cnVjdCBpbnRlbF9ndCAqZ3Qg PSBndWNfdG9fZ3QoZ3VjKTsKPiArCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9IGd0LT51 bmNvcmU7Cj4gKwl1MzIgc2hpbV9mbGFncyA9IEdVQ19ESVNBQkxFX1NSQU1fSU5JVF9UT19aRVJP RVMgfAo+ICsJCQkgR1VDX0VOQUJMRV9SRUFEX0NBQ0hFX0xPR0lDIHwKPiArCQkJIEdVQ19FTkFC TEVfTUlBX0NBQ0hJTkcgfAo+ICsJCQkgR1VDX0VOQUJMRV9SRUFEX0NBQ0hFX0ZPUl9TUkFNX0RB VEEgfAo+ICsJCQkgR1VDX0VOQUJMRV9SRUFEX0NBQ0hFX0ZPUl9XT1BDTV9EQVRBIHwKPiArCQkJ IEdVQ19FTkFCTEVfTUlBX0NMT0NLX0dBVElORzsKPiAJLyogTXVzdCBwcm9ncmFtIHRoaXMgcmVn aXN0ZXIgYmVmb3JlIGxvYWRpbmcgdGhlIHVjb2RlIHdpdGggRE1BICovCj4gLQlJOTE1X1dSSVRF KEdVQ19TSElNX0NPTlRST0wsIEdVQ19ESVNBQkxFX1NSQU1fSU5JVF9UT19aRVJPRVMgfAo+IC0J CQkJICAgICBHVUNfRU5BQkxFX1JFQURfQ0FDSEVfTE9HSUMgfAo+IC0JCQkJICAgICBHVUNfRU5B QkxFX01JQV9DQUNISU5HIHwKPiAtCQkJCSAgICAgR1VDX0VOQUJMRV9SRUFEX0NBQ0hFX0ZPUl9T UkFNX0RBVEEgfAo+IC0JCQkJICAgICBHVUNfRU5BQkxFX1JFQURfQ0FDSEVfRk9SX1dPUENNX0RB VEEgfAo+IC0JCQkJICAgICBHVUNfRU5BQkxFX01JQV9DTE9DS19HQVRJTkcpOwo+IC0KPiAtCWlm IChJU19HRU45X0xQKGRldl9wcml2KSkKPiAtCQlJOTE1X1dSSVRFKEdFTjlMUF9HVF9QTV9DT05G SUcsIEdUX0RPT1JCRUxMX0VOQUJMRSk7Cj4gKwlpbnRlbF91bmNvcmVfd3JpdGUodW5jb3JlLCBH VUNfU0hJTV9DT05UUk9MLCBzaGltX2ZsYWdzKTsKPiArCj4gKwlpZiAoSVNfR0VOOV9MUChndC0+ aTkxNSkpCj4gKwkJaW50ZWxfdW5jb3JlX3dyaXRlKHVuY29yZSwgR0VOOUxQX0dUX1BNX0NPTkZJ RywgR1RfRE9PUkJFTExfRU5BQkxFKTsKPiAgCWVsc2UKPiAtCQlJOTE1X1dSSVRFKEdFTjlfR1Rf UE1fQ09ORklHLCBHVF9ET09SQkVMTF9FTkFCTEUpOwo+ICsJCWludGVsX3VuY29yZV93cml0ZSh1 bmNvcmUsIEdFTjlfR1RfUE1fQ09ORklHLCBHVF9ET09SQkVMTF9FTkFCTEUpOwo+IC0JaWYgKElT X0dFTihkZXZfcHJpdiwgOSkpIHsKPiArCWlmIChJU19HRU4oZ3QtPmk5MTUsIDkpKSB7Cj4gIAkJ LyogRE9QIENsb2NrIEdhdGluZyBFbmFibGUgZm9yIEd1QyBjbG9ja3MgKi8KPiAtCQlJOTE1X1dS SVRFKEdFTjdfTUlTQ0NQQ1RMLCAoR0VOOF9ET1BfQ0xPQ0tfR0FURV9HVUNfRU5BQkxFIHwKPiAt CQkJCQkgICAgSTkxNV9SRUFEKEdFTjdfTUlTQ0NQQ1RMKSkpOwo+ICsJCWludGVsX3VuY29yZV9y bXcodW5jb3JlLCBHRU43X01JU0NDUENUTCwKPiArCQkJCSAwLCBHRU44X0RPUF9DTE9DS19HQVRF X0dVQ19FTkFCTEUpOwo+IAkJLyogYWxsb3dzIGZvciA1dXMgKGluIDEwbnMgdW5pdHMpIGJlZm9y ZSBHVCBjYW4gZ28gdG8gUkM2ICovCj4gLQkJSTkxNV9XUklURShHVUNfQVJBVF9DNkRJUywgMHgx RkYpOwo+ICsJCWludGVsX3VuY29yZV93cml0ZSh1bmNvcmUsIEdVQ19BUkFUX0M2RElTLCAweDFG Rik7Cj4gIAl9Cj4gIH0KPiAvKiBDb3B5IFJTQSBzaWduYXR1cmUgZnJvbSB0aGUgZncgaW1hZ2Ug dG8gSFcgZm9yIHZlcmlmaWNhdGlvbiAqLwo+ICBzdGF0aWMgdm9pZCBndWNfeGZlcl9yc2Eoc3Ry dWN0IGludGVsX2d1YyAqZ3VjKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBndWNfdG9faTkxNShndWMpOwo+ICsJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3Jl ID0gZ3VjX3RvX2d0KGd1YyktPnVuY29yZTsKPiAgCXN0cnVjdCBpbnRlbF91Y19mdyAqZncgPSAm Z3VjLT5mdzsKPiAgCXN0cnVjdCBzZ190YWJsZSAqcGFnZXMgPSBmdy0+b2JqLT5tbS5wYWdlczsK PiAgCXUzMiByc2FbVU9TX1JTQV9TQ1JBVENIX0NPVU5UXTsKPiBAQCAtMTY3LDE1ICsxNzAsMTMg QEAgc3RhdGljIHZvaWQgZ3VjX3hmZXJfcnNhKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgCQkJ ICAgcnNhLCBzaXplb2YocnNhKSwgZnctPnJzYV9vZmZzZXQpOwo+IAlmb3IgKGkgPSAwOyBpIDwg VU9TX1JTQV9TQ1JBVENIX0NPVU5UOyBpKyspCj4gLQkJSTkxNV9XUklURShVT1NfUlNBX1NDUkFU Q0goaSksIHJzYVtpXSk7Cj4gKwkJaW50ZWxfdW5jb3JlX3dyaXRlKHVuY29yZSwgVU9TX1JTQV9T Q1JBVENIKGkpLCByc2FbaV0pOwo+ICB9Cj4gLXN0YXRpYyBib29sIGd1Y194ZmVyX2NvbXBsZXRl ZChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHUzMiAqc3RhdHVzKQo+ICtzdGF0aWMgYm9vbCBndWNf eGZlcl9jb21wbGV0ZWQoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlLCB1MzIgKnN0YXR1cykK PiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZ3VjX3RvX2k5MTUo Z3VjKTsKPiAtCj4gIAkvKiBEaWQgd2UgY29tcGxldGUgdGhlIHhmZXI/ICovCj4gLQkqc3RhdHVz ID0gSTkxNV9SRUFEKERNQV9DVFJMKTsKPiArCSpzdGF0dXMgPSBpbnRlbF91bmNvcmVfcmVhZCh1 bmNvcmUsIERNQV9DVFJMKTsKPiAgCXJldHVybiAhKCpzdGF0dXMgJiBTVEFSVF9ETUEpOwo+ICB9 Cj4gQEAgLTE4OCwxMCArMTg5LDkgQEAgc3RhdGljIGJvb2wgZ3VjX3hmZXJfY29tcGxldGVkKHN0 cnVjdCBpbnRlbF9ndWMgIAo+ICpndWMsIHUzMiAqc3RhdHVzKQo+ICAgKiBUaGlzIGlzIHVzZWQg Zm9yIHBvbGxpbmcgdGhlIEd1QyBzdGF0dXMgaW4gYSB3YWl0X2ZvcigpCj4gICAqIGxvb3AgYmVs b3cuCj4gICAqLwo+IC1zdGF0aWMgaW5saW5lIGJvb2wgZ3VjX3JlYWR5KHN0cnVjdCBpbnRlbF9n dWMgKmd1YywgdTMyICpzdGF0dXMpCj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBndWNfcmVhZHkoc3Ry dWN0IGludGVsX3VuY29yZSAqdW5jb3JlLCB1MzIgKnN0YXR1cykKPiAgewo+IC0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZ3VjX3RvX2k5MTUoZ3VjKTsKPiAtCXUzMiB2YWwg PSBJOTE1X1JFQUQoR1VDX1NUQVRVUyk7Cj4gKwl1MzIgdmFsID0gaW50ZWxfdW5jb3JlX3JlYWQo dW5jb3JlLCBHVUNfU1RBVFVTKTsKPiAgCXUzMiB1a192YWwgPSB2YWwgJiBHU19VS0VSTkVMX01B U0s7Cj4gCSpzdGF0dXMgPSB2YWw7Cj4gQEAgLTE5OSw5ICsxOTksOCBAQCBzdGF0aWMgaW5saW5l IGJvb2wgZ3VjX3JlYWR5KHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgIAo+IHUzMiAqc3RhdHVzKQo+ ICAJCSgodmFsICYgR1NfTUlBX0NPUkVfU1RBVEUpICYmICh1a192YWwgPT0gR1NfVUtFUk5FTF9M QVBJQ19ET05FKSk7Cj4gIH0KPiAtc3RhdGljIGludCBndWNfd2FpdF91Y29kZShzdHJ1Y3QgaW50 ZWxfZ3VjICpndWMpCj4gK3N0YXRpYyBpbnQgZ3VjX3dhaXRfdWNvZGUoc3RydWN0IGludGVsX3Vu Y29yZSAqdW5jb3JlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGd1 Y190b19pOTE1KGd1Yyk7Cj4gIAl1MzIgc3RhdHVzOwo+ICAJaW50IHJldDsKPiBAQCAtMjEzLDcg KzIxMiw3IEBAIHN0YXRpYyBpbnQgZ3VjX3dhaXRfdWNvZGUoc3RydWN0IGludGVsX2d1YyAqZ3Vj KQo+ICAJICogKEhpZ2hlciBsZXZlbHMgb2YgdGhlIGRyaXZlciBtYXkgZGVjaWRlIHRvIHJlc2V0 IHRoZSBHdUMgYW5kCj4gIAkgKiBhdHRlbXB0IHRoZSB1Y29kZSBsb2FkIGFnYWluIGlmIHRoaXMg aGFwcGVucy4pCj4gIAkgKi8KPiAtCXJldCA9IHdhaXRfZm9yKGd1Y19yZWFkeShndWMsICZzdGF0 dXMpLCAxMDApOwo+ICsJcmV0ID0gd2FpdF9mb3IoZ3VjX3JlYWR5KHVuY29yZSwgJnN0YXR1cyks IDEwMCk7Cj4gIAlEUk1fREVCVUdfRFJJVkVSKCJHdUMgc3RhdHVzICUjeFxuIiwgc3RhdHVzKTsK PiAJaWYgKChzdGF0dXMgJiBHU19CT09UUk9NX01BU0spID09IEdTX0JPT1RST01fUlNBX0ZBSUxF RCkgewo+IEBAIC0yMjMsMTEgKzIyMiwxMSBAQCBzdGF0aWMgaW50IGd1Y193YWl0X3Vjb2RlKHN0 cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAJaWYgKChzdGF0dXMgJiBHU19VS0VSTkVMX01BU0spID09 IEdTX1VLRVJORUxfRVhDRVBUSU9OKSB7Cj4gIAkJRFJNX0VSUk9SKCJHdUMgZmlybXdhcmUgZXhj ZXB0aW9uLiBFSVA6ICUjeFxuIiwKPiAtCQkJICBpbnRlbF91bmNvcmVfcmVhZCgmaTkxNS0+dW5j b3JlLCBTT0ZUX1NDUkFUQ0goMTMpKSk7Cj4gKwkJCSAgaW50ZWxfdW5jb3JlX3JlYWQodW5jb3Jl LCBTT0ZUX1NDUkFUQ0goMTMpKSk7Cj4gIAkJcmV0ID0gLUVOWElPOwo+ICAJfQo+IC0JaWYgKHJl dCA9PSAwICYmICFndWNfeGZlcl9jb21wbGV0ZWQoZ3VjLCAmc3RhdHVzKSkgewo+ICsJaWYgKHJl dCA9PSAwICYmICFndWNfeGZlcl9jb21wbGV0ZWQodW5jb3JlLCAmc3RhdHVzKSkgewo+ICAJCURS TV9FUlJPUigiR3VDIGlzIHJlYWR5LCBidXQgdGhlIHhmZXIgJTA4eCBpcyBpbmNvbXBsZXRlXG4i LAo+ICAJCQkgIHN0YXR1cyk7Cj4gIAkJcmV0ID0gLUVOWElPOwo+IEBAIC0yNDUsNyArMjQ0LDcg QEAgc3RhdGljIGludCBndWNfd2FpdF91Y29kZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4gICAq Lwo+ICBzdGF0aWMgaW50IGd1Y194ZmVyX3Vjb2RlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAg ewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZ3VjX3RvX2k5MTUoZ3Vj KTsKPiArCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9IGd1Y190b19ndChndWMpLT51bmNv cmU7Cj4gIAlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9ICZndWMtPmZ3Owo+ICAJdW5zaWdu ZWQgbG9uZyBvZmZzZXQ7Cj4gQEAgLTI1MywyNCArMjUyLDI2IEBAIHN0YXRpYyBpbnQgZ3VjX3hm ZXJfdWNvZGUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICAJICogVGhlIGhlYWRlciBwbHVzIHVD b2RlIHdpbGwgYmUgY29waWVkIHRvIFdPUENNIHZpYSBETUEsIGV4Y2x1ZGluZyBhbnkKPiAgCSAq IG90aGVyIGNvbXBvbmVudHMKPiAgCSAqLwo+IC0JSTkxNV9XUklURShETUFfQ09QWV9TSVpFLCBn dWNfZnctPmhlYWRlcl9zaXplICsgZ3VjX2Z3LT51Y29kZV9zaXplKTsKPiArCWludGVsX3VuY29y ZV93cml0ZSh1bmNvcmUsIERNQV9DT1BZX1NJWkUsCj4gKwkJCSAgIGd1Y19mdy0+aGVhZGVyX3Np emUgKyBndWNfZnctPnVjb2RlX3NpemUpOwo+IAkvKiBTZXQgdGhlIHNvdXJjZSBhZGRyZXNzIGZv ciB0aGUgbmV3IGJsb2IgKi8KPiAgCW9mZnNldCA9IGludGVsX3VjX2Z3X2dndHRfb2Zmc2V0KGd1 Y19mdykgKyBndWNfZnctPmhlYWRlcl9vZmZzZXQ7Cj4gLQlJOTE1X1dSSVRFKERNQV9BRERSXzBf TE9XLCBsb3dlcl8zMl9iaXRzKG9mZnNldCkpOwo+IC0JSTkxNV9XUklURShETUFfQUREUl8wX0hJ R0gsIHVwcGVyXzMyX2JpdHMob2Zmc2V0KSAmIDB4RkZGRik7Cj4gKwlpbnRlbF91bmNvcmVfd3Jp dGUodW5jb3JlLCBETUFfQUREUl8wX0xPVywgbG93ZXJfMzJfYml0cyhvZmZzZXQpKTsKPiArCWlu dGVsX3VuY29yZV93cml0ZSh1bmNvcmUsIERNQV9BRERSXzBfSElHSCwgdXBwZXJfMzJfYml0cyhv ZmZzZXQpICYgIAo+IDB4RkZGRik7Cj4gCS8qCj4gIAkgKiBTZXQgdGhlIERNQSBkZXN0aW5hdGlv bi4gQ3VycmVudCB1Q29kZSBleHBlY3RzIHRoZSBjb2RlIHRvIGJlCj4gIAkgKiBsb2FkZWQgYXQg OGs7IGxvY2F0aW9ucyBiZWxvdyB0aGlzIGFyZSB1c2VkIGZvciB0aGUgc3RhY2suCj4gIAkgKi8K PiAtCUk5MTVfV1JJVEUoRE1BX0FERFJfMV9MT1csIDB4MjAwMCk7Cj4gLQlJOTE1X1dSSVRFKERN QV9BRERSXzFfSElHSCwgRE1BX0FERFJFU1NfU1BBQ0VfV09QQ00pOwo+ICsJaW50ZWxfdW5jb3Jl X3dyaXRlKHVuY29yZSwgRE1BX0FERFJfMV9MT1csIDB4MjAwMCk7Cj4gKwlpbnRlbF91bmNvcmVf d3JpdGUodW5jb3JlLCBETUFfQUREUl8xX0hJR0gsIERNQV9BRERSRVNTX1NQQUNFX1dPUENNKTsK PiAJLyogRmluYWxseSBzdGFydCB0aGUgRE1BICovCj4gLQlJOTE1X1dSSVRFKERNQV9DVFJMLCBf TUFTS0VEX0JJVF9FTkFCTEUoVU9TX01PVkUgfCBTVEFSVF9ETUEpKTsKPiArCWludGVsX3VuY29y ZV93cml0ZSh1bmNvcmUsIERNQV9DVFJMLAo+ICsJCQkgICBfTUFTS0VEX0JJVF9FTkFCTEUoVU9T X01PVkUgfCBTVEFSVF9ETUEpKTsKPiAtCXJldHVybiBndWNfd2FpdF91Y29kZShndWMpOwo+ICsJ cmV0dXJuIGd1Y193YWl0X3Vjb2RlKHVuY29yZSk7Cj4gIH0KPiAgLyoKPiAgICogTG9hZCB0aGUg R3VDIGZpcm13YXJlIGJsb2IgaW50byB0aGUgTWludXRlSUEuCj4gQEAgLTI3OCwxMiArMjc5LDEy IEBAIHN0YXRpYyBpbnQgZ3VjX3hmZXJfdWNvZGUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICBz dGF0aWMgaW50IGd1Y19md194ZmVyKHN0cnVjdCBpbnRlbF91Y19mdyAqZ3VjX2Z3KQo+ICB7Cj4g IAlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSBjb250YWluZXJfb2YoZ3VjX2Z3LCBzdHJ1Y3QgaW50 ZWxfZ3VjLCBmdyk7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBndWNf dG9faTkxNShndWMpOwo+ICsJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gZ3VjX3RvX2d0 KGd1YyktPnVuY29yZTsKPiAgCWludCByZXQ7Cj4gCUdFTV9CVUdfT04oZ3VjX2Z3LT50eXBlICE9 IElOVEVMX1VDX0ZXX1RZUEVfR1VDKTsKPiAtCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KCZk ZXZfcHJpdi0+dW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKPiArCWludGVsX3VuY29yZV9mb3JjZXdh a2VfZ2V0KHVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7Cj4gCWd1Y19wcmVwYXJlX3hmZXIoZ3VjKTsK PiBAQCAtMjk2LDcgKzI5Nyw3IEBAIHN0YXRpYyBpbnQgZ3VjX2Z3X3hmZXIoc3RydWN0IGludGVs X3VjX2Z3ICpndWNfZncpCj4gCXJldCA9IGd1Y194ZmVyX3Vjb2RlKGd1Yyk7Cj4gLQlpbnRlbF91 bmNvcmVfZm9yY2V3YWtlX3B1dCgmZGV2X3ByaXYtPnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7Cj4g KwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dCh1bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+IAly ZXR1cm4gcmV0Owo+ICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Vj L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMgIAo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMv aW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwo+IGluZGV4IDIzOTA2MjI4YjliNC4uOWVjNmViNzFmMzdk IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJt aXNzaW9uLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3Vi bWlzc2lvbi5jCj4gQEAgLTI4LDYgKzI4LDcgQEAKPiAjaW5jbHVkZSAiZ3QvaW50ZWxfY29udGV4 dC5oIgo+ICAjaW5jbHVkZSAiZ3QvaW50ZWxfZW5naW5lX3BtLmgiCj4gKyNpbmNsdWRlICJndC9p bnRlbF9ndC5oIgo+ICAjaW5jbHVkZSAiZ3QvaW50ZWxfbHJjX3JlZy5oIgo+ICAjaW5jbHVkZSAi aW50ZWxfZ3VjX3N1Ym1pc3Npb24uaCIKPiBAQCAtMjAxLDEwICsyMDIsMTAgQEAgc3RhdGljIHN0 cnVjdCBndWNfZG9vcmJlbGxfaW5mbyAgCj4gKl9fZ2V0X2Rvb3JiZWxsKHN0cnVjdCBpbnRlbF9n dWNfY2xpZW50ICpjbGllbnQpCj4gc3RhdGljIGJvb2wgX19kb29yYmVsbF92YWxpZChzdHJ1Y3Qg aW50ZWxfZ3VjICpndWMsIHUxNiBkYl9pZCkKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZ3VjX3RvX2k5MTUoZ3VjKTsKPiArCXN0cnVjdCBpbnRlbF91bmNvcmUg KnVuY29yZSA9IGd1Y190b19ndChndWMpLT51bmNvcmU7Cj4gCUdFTV9CVUdfT04oZGJfaWQgPj0g R1VDX05VTV9ET09SQkVMTFMpOwo+IC0JcmV0dXJuIEk5MTVfUkVBRChHRU44X0RSQlJFR0woZGJf aWQpKSAmIEdFTjhfRFJCX1ZBTElEOwo+ICsJcmV0dXJuIGludGVsX3VuY29yZV9yZWFkKHVuY29y ZSwgR0VOOF9EUkJSRUdMKGRiX2lkKSkgJiBHRU44X0RSQl9WQUxJRDsKPiAgfQo+IHN0YXRpYyB2 b2lkIF9faW5pdF9kb29yYmVsbChzdHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50KQo+IEBA IC0xMDAzLDkgKzEwMDQsMTAgQEAgdm9pZCBpbnRlbF9ndWNfc3VibWlzc2lvbl9maW5pKHN0cnVj dCBpbnRlbF9ndWMgIAo+ICpndWMpCj4gIAkJZ3VjX3N0YWdlX2Rlc2NfcG9vbF9kZXN0cm95KGd1 Yyk7Cj4gIH0KPiAtc3RhdGljIHZvaWQgZ3VjX2ludGVycnVwdHNfY2FwdHVyZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3N0YXRpYyB2b2lkIGd1Y19pbnRlcnJ1cHRzX2Nh cHR1cmUoc3RydWN0IGludGVsX2d0ICpndCkKCm1heWJlIGZvciBndWNfaW50ZXJydXB0c19jYXB0 dXJlfHJlbGVhc2UoKSB3ZSBjYW4gcGFzcyBndWMgaW5zdGVhZCBvZiBndAphbmQgZGVyaXZlIGd0 IGluc2lkZSBmdW5jdGlvbiB1c2luZyBndWNfdG9fZ3QoKSA/Cgp0aGVuIGZpbmFsbHkgbmFtaW5n IG9mIGd1Y19pbnRlcnJ1cHRzXyogZnVuY3Rpb25zIGFuZCAxc3QgcGFyYW0gd2lsbCBtYXRjaAoK PiAgewo+IC0Jc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmRldl9wcml2LT5ndF9wbS5ycHM7Cj4g KwlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmZ3QtPmk5MTUtPmd0X3BtLnJwczsKPiArCXN0cnVj dCBpbnRlbF91bmNvcmUgKnVuY29yZSA9IGd0LT51bmNvcmU7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmU7Cj4gIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiAgCWludCBpcnFz Owo+IEBAIC0xMDE0LDE2ICsxMDE2LDE2IEBAIHN0YXRpYyB2b2lkIGd1Y19pbnRlcnJ1cHRzX2Nh cHR1cmUoc3RydWN0ICAKPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCSAqIHRvIEd1 Qwo+ICAJICovCj4gIAlpcnFzID0gX01BU0tFRF9CSVRfRU5BQkxFKEdGWF9JTlRFUlJVUFRfU1RF RVJJTkcpOwo+IC0JZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYsIGlkKQo+ICsJZm9y X2VhY2hfZW5naW5lKGVuZ2luZSwgZ3QtPmk5MTUsIGlkKQo+ICAJCUVOR0lORV9XUklURShlbmdp bmUsIFJJTkdfTU9ERV9HRU43LCBpcnFzKTsKPiAJLyogcm91dGUgVVNFUl9JTlRFUlJVUFQgdG8g SG9zdCwgYWxsIG90aGVycyBhcmUgc2VudCB0byBHdUMuICovCj4gIAlpcnFzID0gR1RfUkVOREVS X1VTRVJfSU5URVJSVVBUIDw8IEdFTjhfUkNTX0lSUV9TSElGVCB8Cj4gIAkgICAgICAgR1RfUkVO REVSX1VTRVJfSU5URVJSVVBUIDw8IEdFTjhfQkNTX0lSUV9TSElGVDsKPiAgCS8qIFRoZXNlIHRo cmVlIHJlZ2lzdGVycyBoYXZlIHRoZSBzYW1lIGJpdCBkZWZpbml0aW9ucyAqLwo+IC0JSTkxNV9X UklURShHVUNfQkNTX1JDU19JRVIsIH5pcnFzKTsKPiAtCUk5MTVfV1JJVEUoR1VDX1ZDUzJfVkNT MV9JRVIsIH5pcnFzKTsKPiAtCUk5MTVfV1JJVEUoR1VDX1dEX1ZFQ1NfSUVSLCB+aXJxcyk7Cj4g KwlpbnRlbF91bmNvcmVfd3JpdGUodW5jb3JlLCBHVUNfQkNTX1JDU19JRVIsIH5pcnFzKTsKPiAr CWludGVsX3VuY29yZV93cml0ZSh1bmNvcmUsIEdVQ19WQ1MyX1ZDUzFfSUVSLCB+aXJxcyk7Cj4g KwlpbnRlbF91bmNvcmVfd3JpdGUodW5jb3JlLCBHVUNfV0RfVkVDU19JRVIsIH5pcnFzKTsKPiAJ LyoKPiAgCSAqIFRoZSBSRURJUkVDVF9UT19HVUMgYml0IG9mIHRoZSBQTUlOVFJNU0sgcmVnaXN0 ZXIgZGlyZWN0cyBhbGwKPiBAQCAtMTA0OCw5ICsxMDUwLDEwIEBAIHN0YXRpYyB2b2lkIGd1Y19p bnRlcnJ1cHRzX2NhcHR1cmUoc3RydWN0ICAKPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiAgCXJwcy0+cG1faW50cm1za19tYnogJj0gfkdFTjhfUE1JTlRSX0RJU0FCTEVfUkVESVJFQ1Rf VE9fR1VDOwo+ICB9Cj4gLXN0YXRpYyB2b2lkIGd1Y19pbnRlcnJ1cHRzX3JlbGVhc2Uoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICtzdGF0aWMgdm9pZCBndWNfaW50ZXJydXB0 c19yZWxlYXNlKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9ycHMg KnJwcyA9ICZkZXZfcHJpdi0+Z3RfcG0ucnBzOwo+ICsJc3RydWN0IGludGVsX3JwcyAqcnBzID0g Jmd0LT5pOTE1LT5ndF9wbS5ycHM7Cj4gKwlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSBn dC0+dW5jb3JlOwo+ICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICAJZW51bSBp bnRlbF9lbmdpbmVfaWQgaWQ7Cj4gIAlpbnQgaXJxczsKPiBAQCAtMTA2MSwxMyArMTA2NCwxMyBA QCBzdGF0aWMgdm9pZCBndWNfaW50ZXJydXB0c19yZWxlYXNlKHN0cnVjdCAgCj4gZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkgKi8KPiAgCWlycXMgPSBfTUFTS0VEX0ZJRUxEKEdGWF9G T1JXQVJEX1ZCTEFOS19NQVNLLCAgCj4gR0ZYX0ZPUldBUkRfVkJMQU5LX05FVkVSKTsKPiAgCWly cXMgfD0gX01BU0tFRF9CSVRfRElTQUJMRShHRlhfSU5URVJSVVBUX1NURUVSSU5HKTsKPiAtCWZv cl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2LCBpZCkKPiArCWZvcl9lYWNoX2VuZ2luZShl bmdpbmUsIGd0LT5pOTE1LCBpZCkKPiAgCQlFTkdJTkVfV1JJVEUoZW5naW5lLCBSSU5HX01PREVf R0VONywgaXJxcyk7Cj4gCS8qIHJvdXRlIGFsbCBHVCBpbnRlcnJ1cHRzIHRvIHRoZSBob3N0ICov Cj4gLQlJOTE1X1dSSVRFKEdVQ19CQ1NfUkNTX0lFUiwgMCk7Cj4gLQlJOTE1X1dSSVRFKEdVQ19W Q1MyX1ZDUzFfSUVSLCAwKTsKPiAtCUk5MTVfV1JJVEUoR1VDX1dEX1ZFQ1NfSUVSLCAwKTsKPiAr CWludGVsX3VuY29yZV93cml0ZSh1bmNvcmUsIEdVQ19CQ1NfUkNTX0lFUiwgMCk7Cj4gKwlpbnRl bF91bmNvcmVfd3JpdGUodW5jb3JlLCBHVUNfVkNTMl9WQ1MxX0lFUiwgMCk7Cj4gKwlpbnRlbF91 bmNvcmVfd3JpdGUodW5jb3JlLCBHVUNfV0RfVkVDU19JRVIsIDApOwo+IAlycHMtPnBtX2ludHJt c2tfbWJ6IHw9IEdFTjhfUE1JTlRSX0RJU0FCTEVfUkVESVJFQ1RfVE9fR1VDOwo+ICAJcnBzLT5w bV9pbnRybXNrX21ieiAmPSB+QVJBVF9FWFBJUkVEX0lOVFJNU0s7Cj4gQEAgLTExMTcsNyArMTEy MCw3IEBAIHN0YXRpYyB2b2lkIGd1Y19zZXRfZGVmYXVsdF9zdWJtaXNzaW9uKHN0cnVjdCAgCj4g aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gaW50IGludGVsX2d1Y19zdWJtaXNzaW9uX2VuYWJs ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGd1Y190b19pOTE1KGd1Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0g Z3VjX3RvX2d0KGd1Yyk7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gIAll bnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiAgCWludCBlcnI7Cj4gQEAgLTExNDIsOSArMTE0NSw5 IEBAIGludCBpbnRlbF9ndWNfc3VibWlzc2lvbl9lbmFibGUoc3RydWN0IGludGVsX2d1YyAgCj4g Kmd1YykKPiAgCQlyZXR1cm4gZXJyOwo+IAkvKiBUYWtlIG92ZXIgZnJvbSBtYW51YWwgY29udHJv bCBvZiBFTFNQIChleGVjbGlzdHMpICovCj4gLQlndWNfaW50ZXJydXB0c19jYXB0dXJlKGRldl9w cml2KTsKPiArCWd1Y19pbnRlcnJ1cHRzX2NhcHR1cmUoZ3QpOwo+IC0JZm9yX2VhY2hfZW5naW5l KGVuZ2luZSwgZGV2X3ByaXYsIGlkKSB7Cj4gKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBndC0+ aTkxNSwgaWQpIHsKPiAgCQllbmdpbmUtPnNldF9kZWZhdWx0X3N1Ym1pc3Npb24gPSBndWNfc2V0 X2RlZmF1bHRfc3VibWlzc2lvbjsKPiAgCQllbmdpbmUtPnNldF9kZWZhdWx0X3N1Ym1pc3Npb24o ZW5naW5lKTsKPiAgCX0KPiBAQCAtMTE1NCwxMSArMTE1NywxMSBAQCBpbnQgaW50ZWxfZ3VjX3N1 Ym1pc3Npb25fZW5hYmxlKHN0cnVjdCBpbnRlbF9ndWMgIAo+ICpndWMpCj4gdm9pZCBpbnRlbF9n dWNfc3VibWlzc2lvbl9kaXNhYmxlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgewo+IC0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZ3VjX3RvX2k5MTUoZ3VjKTsKPiArCXN0 cnVjdCBpbnRlbF9ndCAqZ3QgPSBndWNfdG9fZ3QoZ3VjKTsKPiAtCUdFTV9CVUdfT04oZGV2X3By aXYtPmd0LmF3YWtlKTsgLyogR1Qgc2hvdWxkIGJlIHBhcmtlZCBmaXJzdCAqLwo+ICsJR0VNX0JV R19PTihndC0+YXdha2UpOyAvKiBHVCBzaG91bGQgYmUgcGFya2VkIGZpcnN0ICovCj4gLQlndWNf aW50ZXJydXB0c19yZWxlYXNlKGRldl9wcml2KTsKPiArCWd1Y19pbnRlcnJ1cHRzX3JlbGVhc2Uo Z3QpOwo+ICAJZ3VjX2NsaWVudHNfZGlzYWJsZShndWMpOwo+ICB9Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2h1Yy5jICAKPiBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3VjL2ludGVsX2h1Yy5jCj4gaW5kZXggNTgxYzljM2Q0ZmMwLi45OWYwZmEyZThm ZjUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfaHVjLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9odWMuYwo+IEBAIC0yNCw2 ICsyNCw3IEBACj4gI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4gKyNpbmNsdWRlICJndC9pbnRl bF9ndC5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfaHVjLmgiCj4gICNpbmNsdWRlICJpOTE1X2Rydi5o Igo+IEBAIC00Niw4ICs0Nyw4IEBAIHZvaWQgaW50ZWxfaHVjX2luaXRfZWFybHkoc3RydWN0IGlu dGVsX2h1YyAqaHVjKQo+IHN0YXRpYyBpbnQgaW50ZWxfaHVjX3JzYV9kYXRhX2NyZWF0ZShzdHJ1 Y3QgaW50ZWxfaHVjICpodWMpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 ID0gaHVjX3RvX2k5MTUoaHVjKTsKPiAtCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZpOTE1LT5n dC51Yy5ndWM7Cj4gKwlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gaHVjX3RvX2d0KGh1Yyk7Cj4gKwlz dHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmZ3QtPnVjLmd1YzsKPiAgCXN0cnVjdCBpOTE1X3ZtYSAq dm1hOwo+ICAJdm9pZCAqdmFkZHI7Cj4gQEAgLTExMiw4ICsxMTMsOCBAQCB2b2lkIGludGVsX2h1 Y19maW5pKHN0cnVjdCBpbnRlbF9odWMgKmh1YykKPiAgICovCj4gIGludCBpbnRlbF9odWNfYXV0 aChzdHJ1Y3QgaW50ZWxfaHVjICpodWMpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1ID0gaHVjX3RvX2k5MTUoaHVjKTsKPiAtCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZp OTE1LT5ndC51Yy5ndWM7Cj4gKwlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gaHVjX3RvX2d0KGh1Yyk7 Cj4gKwlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmZ3QtPnVjLmd1YzsKPiAgCWludCByZXQ7Cj4g CWlmIChodWMtPmZ3LmxvYWRfc3RhdHVzICE9IElOVEVMX1VDX0ZJUk1XQVJFX1NVQ0NFU1MpCj4g QEAgLTEyNyw3ICsxMjgsNyBAQCBpbnQgaW50ZWxfaHVjX2F1dGgoc3RydWN0IGludGVsX2h1YyAq aHVjKQo+ICAJfQo+IAkvKiBDaGVjayBhdXRoZW50aWNhdGlvbiBzdGF0dXMsIGl0IHNob3VsZCBi ZSBkb25lIGJ5IG5vdyAqLwo+IC0JcmV0ID0gX19pbnRlbF93YWl0X2Zvcl9yZWdpc3RlcigmaTkx NS0+dW5jb3JlLAo+ICsJcmV0ID0gX19pbnRlbF93YWl0X2Zvcl9yZWdpc3RlcihndC0+dW5jb3Jl LAo+ICAJCQkJCWh1Yy0+c3RhdHVzLnJlZywKPiAgCQkJCQlodWMtPnN0YXR1cy5tYXNrLAo+ICAJ CQkJCWh1Yy0+c3RhdHVzLnZhbHVlLAo+IEBAIC0xNTksMTYgKzE2MCwxNSBAQCBpbnQgaW50ZWxf aHVjX2F1dGgoc3RydWN0IGludGVsX2h1YyAqaHVjKQo+ICAgKi8KPiAgaW50IGludGVsX2h1Y19j aGVja19zdGF0dXMoc3RydWN0IGludGVsX2h1YyAqaHVjKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBodWNfdG9faTkxNShodWMpOwo+ICsJc3RydWN0IGludGVs X2d0ICpndCA9IGh1Y190b19ndChodWMpOwo+ICAJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4g IAlib29sIHN0YXR1cyA9IGZhbHNlOwo+IC0JaWYgKCFIQVNfSFVDKGRldl9wcml2KSkKPiArCWlm ICghaW50ZWxfdWNfaXNfdXNpbmdfaHVjKCZndC0+dWMpKQo+ICAJCXJldHVybiAtRU5PREVWOwo+ IC0Jd2l0aF9pbnRlbF9ydW50aW1lX3BtKCZkZXZfcHJpdi0+cnVudGltZV9wbSwgd2FrZXJlZikK PiAtCQlzdGF0dXMgPSAoSTkxNV9SRUFEKGh1Yy0+c3RhdHVzLnJlZykgJiBodWMtPnN0YXR1cy5t YXNrKSA9PQo+IC0JCQkgIGh1Yy0+c3RhdHVzLnZhbHVlOwo+ICsJd2l0aF9pbnRlbF9ydW50aW1l X3BtKCZndC0+aTkxNS0+cnVudGltZV9wbSwgd2FrZXJlZikKPiArCQlzdGF0dXMgPSBpbnRlbF91 bmNvcmVfcmVhZChndC0+dW5jb3JlLCBodWMtPnN0YXR1cy5yZWcpOwo+IC0JcmV0dXJuIHN0YXR1 czsKPiArCXJldHVybiAoc3RhdHVzICYgaHVjLT5zdGF0dXMubWFzaykgPT0gaHVjLT5zdGF0dXMu dmFsdWU7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50 ZWxfaHVjX2Z3LmMgIAo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfaHVjX2Z3 LmMKPiBpbmRleCAwNmU3MjZiYTk4NjMuLmJlY2ZkMzRhMjZjMSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9odWNfZncuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3VjL2ludGVsX2h1Y19mdy5jCj4gQEAgLTQsNiArNCw3IEBACj4gICAqIENv cHlyaWdodCDCqSAyMDE0LTIwMTggSW50ZWwgQ29ycG9yYXRpb24KPiAgICovCj4gKyNpbmNsdWRl ICJndC9pbnRlbF9ndC5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfaHVjX2Z3LmgiCj4gICNpbmNsdWRl ICJpOTE1X2Rydi5oIgo+IEBAIC0xMzksOCArMTQwLDcgQEAgc3RhdGljIHZvaWQgaHVjX3hmZXJf cnNhKHN0cnVjdCBpbnRlbF9odWMgKmh1YykKPiAgc3RhdGljIGludCBodWNfeGZlcl91Y29kZShz dHJ1Y3QgaW50ZWxfaHVjICpodWMpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF91Y19mdyAqaHVjX2Z3 ID0gJmh1Yy0+Znc7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBodWNf dG9faTkxNShodWMpOwo+IC0Jc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gJmRldl9wcml2 LT51bmNvcmU7Cj4gKwlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSBodWNfdG9fZ3QoaHVj KS0+dW5jb3JlOwo+ICAJdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwOwo+ICAJdTMyIHNpemU7Cj4g IAlpbnQgcmV0Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRl bF91Yy5jICAKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmMKPiBpbmRl eCAyMDYyZTdmZjA1ZTguLjNmZWFkMmRjOWQzMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv dWMvaW50ZWxfdWMuYwo+IEBAIC0yMjQsNyArMjI0LDcgQEAgc3RhdGljIHZvaWQgZ3VjX2ZyZWVf bG9hZF9lcnJfbG9nKHN0cnVjdCBpbnRlbF9ndWMgIAo+ICpndWMpCj4gICAqLwo+ICBzdGF0aWMg dm9pZCBndWNfY2xlYXJfbW1pb19tc2coc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICB7Cj4gLQlp bnRlbF91bmNvcmVfd3JpdGUoJmd1Y190b19pOTE1KGd1YyktPnVuY29yZSwgU09GVF9TQ1JBVENI KDE1KSwgMCk7Cj4gKwlpbnRlbF91bmNvcmVfd3JpdGUoZ3VjX3RvX2d0KGd1YyktPnVuY29yZSwg U09GVF9TQ1JBVENIKDE1KSwgMCk7Cj4gIH0KPiBzdGF0aWMgdm9pZCBndWNfZ2V0X21taW9fbXNn KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiBAQCAtMjMzLDcgKzIzMyw3IEBAIHN0YXRpYyB2b2lk IGd1Y19nZXRfbW1pb19tc2coc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+IAlzcGluX2xvY2tfaXJx KCZndWMtPmlycV9sb2NrKTsKPiAtCXZhbCA9IGludGVsX3VuY29yZV9yZWFkKCZndWNfdG9faTkx NShndWMpLT51bmNvcmUsIFNPRlRfU0NSQVRDSCgxNSkpOwo+ICsJdmFsID0gaW50ZWxfdW5jb3Jl X3JlYWQoZ3VjX3RvX2d0KGd1YyktPnVuY29yZSwgU09GVF9TQ1JBVENIKDE1KSk7Cj4gIAlndWMt Pm1taW9fbXNnIHw9IHZhbCAmIGd1Yy0+bXNnX2VuYWJsZWRfbWFzazsKPiAJLyoKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgIAo+IGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBpbmRleCAyMzZjOTY0ZGQ3NjEuLjRkNjk0YmZm MDhjZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCgpobW0sIHRoaXMgY2h1 bmsgYmVsb3csIG1heWJlIGl0IHNob3VsZCBiZSBpbiBzZXBhcmF0ZSBwYXRjaCA/Cgo+IEBAIC0z Mzk1LDEwICszMzk1LDggQEAgaW50IGk5MTVfZ2d0dF9lbmFibGVfaHcoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgIAo+ICpkZXZfcHJpdikKPiAgCXJldHVybiAwOwo+ICB9Cj4gLXZvaWQgaTkxNV9n Z3R0X2VuYWJsZV9ndWMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gK3ZvaWQgaTkx NV9nZ3R0X2VuYWJsZV9ndWMoc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCkKPiAgewo+IC0Jc3RydWN0 IGk5MTVfZ2d0dCAqZ2d0dCA9ICZpOTE1LT5nZ3R0Owo+IC0KPiAgCUdFTV9CVUdfT04oZ2d0dC0+ aW52YWxpZGF0ZSAhPSBnZW42X2dndHRfaW52YWxpZGF0ZSk7Cj4gCWdndHQtPmludmFsaWRhdGUg PSBndWNfZ2d0dF9pbnZhbGlkYXRlOwo+IEBAIC0zNDA2LDEwICszNDA0LDggQEAgdm9pZCBpOTE1 X2dndHRfZW5hYmxlX2d1YyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAgCj4gKmk5MTUpCj4gIAln Z3R0LT5pbnZhbGlkYXRlKGdndHQpOwo+ICB9Cj4gLXZvaWQgaTkxNV9nZ3R0X2Rpc2FibGVfZ3Vj KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICt2b2lkIGk5MTVfZ2d0dF9kaXNhYmxl X2d1YyhzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0KQo+ICB7Cj4gLQlzdHJ1Y3QgaTkxNV9nZ3R0ICpn Z3R0ID0gJmk5MTUtPmdndHQ7Cj4gLQo+ICAJLyogWFhYIFRlbXBvcmFyeSBwYXJkb24gZm9yIGVy cm9yIHVubG9hZCAqLwo+ICAJaWYgKGdndHQtPmludmFsaWRhdGUgPT0gZ2VuNl9nZ3R0X2ludmFs aWRhdGUpCj4gIAkJcmV0dXJuOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuaCAgCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+ IGluZGV4IDU3YTY4ZWY0ZWRhNy4uNjY2Y2Q1MDVjOTliIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZ3R0LmgKPiBAQCAtNjE0LDggKzYxNCw4IEBAIGk5MTVfdm1fdG9fcHBndHQoc3Ry dWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4gIGludCBpOTE1X2dndHRfcHJvYmVfaHcoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgaW50IGk5MTVfZ2d0dF9pbml0X2h3 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIGludCBpOTE1X2dndHRfZW5h YmxlX2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gLXZvaWQgaTkxNV9n Z3R0X2VuYWJsZV9ndWMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+IC12b2lkIGk5 MTVfZ2d0dF9kaXNhYmxlX2d1YyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gK3Zv aWQgaTkxNV9nZ3R0X2VuYWJsZV9ndWMoc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCk7Cj4gK3ZvaWQg aTkxNV9nZ3R0X2Rpc2FibGVfZ3VjKHN0cnVjdCBpOTE1X2dndHQgKmdndHQpOwo+ICBpbnQgaTkx NV9pbml0X2dndHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgdm9pZCBp OTE1X2dndHRfY2xlYW51cF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=