From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: Re: [PATCH v2 4/7] drm/i915: rename IS_GEN9_* to GT_GEN9_* Date: Wed, 21 Nov 2018 14:22:56 -0800 Message-ID: <20181121222256.GI13148@intel.com> References: <20181106215123.27568-1-lucas.demarchi@intel.com> <20181106215123.27568-5-lucas.demarchi@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 84DD189548 for ; Wed, 21 Nov 2018 22:22:57 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20181106215123.27568-5-lucas.demarchi@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lucas De Marchi Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBOb3YgMDYsIDIwMTggYXQgMDE6NTE6MjBQTSAtMDgwMCwgTHVjYXMgRGUgTWFyY2hp IHdyb3RlOgo+IExpa2UgaXQgd2FzIGRvbmUgZm9yIHRoZSBnZW5lcmljIElTX0dFTiAtPiBHVF9H RU4gcmVuYW1lLCBidXQgc2luY2UKPiB0aGUgTFAvQkMgdmFyaWFudHMgb25seSBleGlzdCBpbiBn ZW4gOSwga2VlcCB0aGUgc2luZ2xlIG1hY3JvCj4gZGVmaW5pdGlvbi4gQWxzbyBtb3ZlIHRoZSBk ZWZpbmUgdG8gYmUgdG9nZXRoZXIgd2l0aCBHVF9HRU4oKS4KPiAKPiBVc2VycyB3ZXJlIGNvbnZl cnRlZCB3aXRoOgo+IAo+IHNlZCAtaSAncy9JU19HRU45Xy9HVF9HRU45Xy9nJyBcCj4gCWRyaXZl cnMvZ3B1L2RybS9pOTE1Lyoue2MsaH0gXAo+IAlkcml2ZXJzL2dwdS9kcm0vaTkxNS8qLyoue2Ms aH0KPiAKPiBTaWduZWQtb2ZmLWJ5OiBMdWNhcyBEZSBNYXJjaGkgPGx1Y2FzLmRlbWFyY2hpQGlu dGVsLmNvbT4KClJldmlld2VkLWJ5OiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5j b20+Cgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgIHwg MjIgKysrKysrLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAg ICAgIHwgMTAgKysrLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAg ICAgfCAgOSArKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyAgICAg IHwgIDYgKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jICAgICAgICAgIHwg MTIgKysrLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAgICAgIHwg IDQgKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuYyAgICAgICAgfCAgNCAr LS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY2RjbGsuYyAgICAgICB8IDEwICsrKy0t LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jICAgICAgIHwgIDIgKy0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3NyLmMgICAgICAgICB8ICAyICstCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jICAgICAgICAgfCA0MiArKysrKysrKysrKystLS0t LS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYyB8IDEy ICsrKy0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgICB8IDE4 ICsrKysrLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAgICAgICB8 IDI4ICsrKysrKysrLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0 LmMgICAgICB8ICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMg ICAgfCAgNCArLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMgICAgICAgICB8 ICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19mdy5jICAgICAgfCAgMiAr LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgICAgICAgIHwgIDQgKy0tCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2kyYy5jICAgICAgICAgfCAxMiArKystLS0tCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3MuYyAgICAgICAgfCAgNCArLS0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYyAgICAgICB8ICAyICstCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICAgICAgfCAxOCArKysrKy0tLS0tCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYyAgfCAyMiArKysrKystLS0tLS0tCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcGNtLmMgICAgICAgfCAgMiArLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93b3JrYXJvdW5kcy5jIHwgIDQgKy0tCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L3Zsdl9kc2kuYyAgICAgICAgICAgfCA0MCArKysrKysrKysrKy0tLS0tLS0t LS0tCj4gIDI3IGZpbGVzIGNoYW5nZWQsIDE1MCBpbnNlcnRpb25zKCspLCAxNDkgZGVsZXRpb25z KC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCAyNTE0ZWM0ZDk3 ZDQuLjVlNGE5MzRjMGRlYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4g QEAgLTExMjMsNyArMTEyMyw3IEBAIHN0YXRpYyBpbnQgaTkxNV9mcmVxdWVuY3lfaW5mbyhzdHJ1 Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCQlpbnQgbWF4X2ZyZXE7Cj4gIAo+ICAJ CXJwX3N0YXRlX2xpbWl0cyA9IEk5MTVfUkVBRChHRU42X1JQX1NUQVRFX0xJTUlUUyk7Cj4gLQkJ aWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7Cj4gKwkJaWYgKEdUX0dFTjlfTFAoZGV2X3ByaXYp KSB7Cj4gIAkJCXJwX3N0YXRlX2NhcCA9IEk5MTVfUkVBRChCWFRfUlBfU1RBVEVfQ0FQKTsKPiAg CQkJZ3RfcGVyZl9zdGF0dXMgPSBJOTE1X1JFQUQoQlhUX0dUX1BFUkZfU1RBVFVTKTsKPiAgCQl9 IGVsc2Ugewo+IEBAIC0xMjMwLDIyICsxMjMwLDIyIEBAIHN0YXRpYyBpbnQgaTkxNV9mcmVxdWVu Y3lfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCQlzZXFfcHJpbnRm KG0sICJEb3duIHRocmVzaG9sZDogJWQlJVxuIiwKPiAgCQkJICAgcnBzLT5wb3dlci5kb3duX3Ro cmVzaG9sZCk7Cj4gIAo+IC0JCW1heF9mcmVxID0gKElTX0dFTjlfTFAoZGV2X3ByaXYpID8gcnBf c3RhdGVfY2FwID4+IDAgOgo+ICsJCW1heF9mcmVxID0gKEdUX0dFTjlfTFAoZGV2X3ByaXYpID8g cnBfc3RhdGVfY2FwID4+IDAgOgo+ICAJCQkgICAgcnBfc3RhdGVfY2FwID4+IDE2KSAmIDB4ZmY7 Cj4gLQkJbWF4X2ZyZXEgKj0gKElTX0dFTjlfQkMoZGV2X3ByaXYpIHx8Cj4gKwkJbWF4X2ZyZXEg Kj0gKEdUX0dFTjlfQkMoZGV2X3ByaXYpIHx8Cj4gIAkJCSAgICAgSU5URUxfR0VOKGRldl9wcml2 KSA+PSAxMCA/IEdFTjlfRlJFUV9TQ0FMRVIgOiAxKTsKPiAgCQlzZXFfcHJpbnRmKG0sICJMb3dl c3QgKFJQTikgZnJlcXVlbmN5OiAlZE1IelxuIiwKPiAgCQkJICAgaW50ZWxfZ3B1X2ZyZXEoZGV2 X3ByaXYsIG1heF9mcmVxKSk7Cj4gIAo+ICAJCW1heF9mcmVxID0gKHJwX3N0YXRlX2NhcCAmIDB4 ZmYwMCkgPj4gODsKPiAtCQltYXhfZnJlcSAqPSAoSVNfR0VOOV9CQyhkZXZfcHJpdikgfHwKPiAr CQltYXhfZnJlcSAqPSAoR1RfR0VOOV9CQyhkZXZfcHJpdikgfHwKPiAgCQkJICAgICBJTlRFTF9H RU4oZGV2X3ByaXYpID49IDEwID8gR0VOOV9GUkVRX1NDQUxFUiA6IDEpOwo+ICAJCXNlcV9wcmlu dGYobSwgIk5vbWluYWwgKFJQMSkgZnJlcXVlbmN5OiAlZE1IelxuIiwKPiAgCQkJICAgaW50ZWxf Z3B1X2ZyZXEoZGV2X3ByaXYsIG1heF9mcmVxKSk7Cj4gIAo+IC0JCW1heF9mcmVxID0gKElTX0dF TjlfTFAoZGV2X3ByaXYpID8gcnBfc3RhdGVfY2FwID4+IDE2IDoKPiArCQltYXhfZnJlcSA9IChH VF9HRU45X0xQKGRldl9wcml2KSA/IHJwX3N0YXRlX2NhcCA+PiAxNiA6Cj4gIAkJCSAgICBycF9z dGF0ZV9jYXAgPj4gMCkgJiAweGZmOwo+IC0JCW1heF9mcmVxICo9IChJU19HRU45X0JDKGRldl9w cml2KSB8fAo+ICsJCW1heF9mcmVxICo9IChHVF9HRU45X0JDKGRldl9wcml2KSB8fAo+ICAJCQkg ICAgIElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTAgPyBHRU45X0ZSRVFfU0NBTEVSIDogMSk7Cj4g IAkJc2VxX3ByaW50ZihtLCAiTWF4IG5vbi1vdmVyY2xvY2tlZCAoUlAwKSBmcmVxdWVuY3k6ICVk TUh6XG4iLAo+ICAJCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgbWF4X2ZyZXEpKTsKPiBA QCAtMTgyNCw3ICsxODI0LDcgQEAgc3RhdGljIGludCBpOTE1X3JpbmdfZnJlcV90YWJsZShzdHJ1 Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCj4gIAltaW5fZ3B1X2ZyZXEgPSBycHMt Pm1pbl9mcmVxOwo+ICAJbWF4X2dwdV9mcmVxID0gcnBzLT5tYXhfZnJlcTsKPiAtCWlmIChJU19H RU45X0JDKGRldl9wcml2KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwKSB7Cj4gKwlpZiAo R1RfR0VOOV9CQyhkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkgewo+ICAJ CS8qIENvbnZlcnQgR1QgZnJlcXVlbmN5IHRvIDUwIEhaIHVuaXRzICovCj4gIAkJbWluX2dwdV9m cmVxIC89IEdFTjlfRlJFUV9TQ0FMRVI7Cj4gIAkJbWF4X2dwdV9mcmVxIC89IEdFTjlfRlJFUV9T Q0FMRVI7Cj4gQEAgLTE4MzksNyArMTgzOSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9yaW5nX2ZyZXFf dGFibGUoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gIAkJCQkgICAgICAgJmlh X2ZyZXEpOwo+ICAJCXNlcV9wcmludGYobSwgIiVkXHRcdCVkXHRcdFx0XHQlZFxuIiwKPiAgCQkJ ICAgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIChncHVfZnJlcSAqCj4gLQkJCQkJCSAgICAgKElT X0dFTjlfQkMoZGV2X3ByaXYpIHx8Cj4gKwkJCQkJCSAgICAgKEdUX0dFTjlfQkMoZGV2X3ByaXYp IHx8Cj4gIAkJCQkJCSAgICAgIElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTAgPwo+ICAJCQkJCQkg ICAgICBHRU45X0ZSRVFfU0NBTEVSIDogMSkpKSwKPiAgCQkJICAgKChpYV9mcmVxID4+IDApICYg MHhmZikgKiAxMDAsCj4gQEAgLTI5MjIsNyArMjkyMiw3IEBAIHN0YXRpYyBpbnQgaTkxNV9kbWNf aW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCXNlcV9wcmludGYobSwg IkRDMyAtPiBEQzUgY291bnQ6ICVkXG4iLAo+ICAJCSAgIEk5MTVfUkVBRChJU19CUk9YVE9OKGRl dl9wcml2KSA/IEJYVF9DU1JfREMzX0RDNV9DT1VOVCA6Cj4gIAkJCQkJCSAgICBTS0xfQ1NSX0RD M19EQzVfQ09VTlQpKTsKPiAtCWlmICghSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gKwlpZiAoIUdU X0dFTjlfTFAoZGV2X3ByaXYpKQo+ICAJCXNlcV9wcmludGYobSwgIkRDNSAtPiBEQzYgY291bnQ6 ICVkXG4iLAo+ICAJCQkgICBJOTE1X1JFQUQoU0tMX0NTUl9EQzVfREM2X0NPVU5UKSk7Cj4gIAo+ IEBAIC00NDIzLDE0ICs0NDIzLDE0IEBAIHN0YXRpYyB2b2lkIGdlbjlfc3NldV9kZXZpY2Vfc3Rh dHVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCj4gIAkJc3NldS0+c2xp Y2VfbWFzayB8PSBCSVQocyk7Cj4gIAo+IC0JCWlmIChJU19HRU45X0JDKGRldl9wcml2KSkKPiAr CQlpZiAoR1RfR0VOOV9CQyhkZXZfcHJpdikpCj4gIAkJCXNzZXUtPnN1YnNsaWNlX21hc2tbc10g PQo+ICAJCQkJSU5URUxfSU5GTyhkZXZfcHJpdiktPnNzZXUuc3Vic2xpY2VfbWFza1tzXTsKPiAg Cj4gIAkJZm9yIChzcyA9IDA7IHNzIDwgaW5mby0+c3NldS5tYXhfc3Vic2xpY2VzOyBzcysrKSB7 Cj4gIAkJCXVuc2lnbmVkIGludCBldV9jbnQ7Cj4gIAo+IC0JCQlpZiAoSVNfR0VOOV9MUChkZXZf cHJpdikpIHsKPiArCQkJaWYgKEdUX0dFTjlfTFAoZGV2X3ByaXYpKSB7Cj4gIAkJCQlpZiAoIShz X3JlZ1tzXSAmIChHRU45X1BHQ1RMX1NTX0FDSyhzcykpKSkKPiAgCQkJCQkvKiBza2lwIGRpc2Fi bGVkIHN1YnNsaWNlICovCj4gIAkJCQkJY29udGludWU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5j Cj4gaW5kZXggZDJiZGQ3MTEyYzVkLi44ZmYyYWNkZWMxZjUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmMKPiBAQCAtMTMyMiw3ICsxMzIyLDcgQEAgaW50ZWxfZ2V0X2RyYW1faW5mbyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkgKiBUaGlzIGlzIG9ubHkgdXNlZCBm b3IgdGhlIGxldmVsIDAgd2F0ZXJtYXJrIGxhdGVuY3kKPiAgCSAqIHcvYSB3aGljaCBkb2VzIG5v dCBhcHBseSB0byBieHQvZ2xrLgo+ICAJICovCj4gLQlkcmFtX2luZm8tPmlzXzE2Z2JfZGltbSA9 ICFJU19HRU45X0xQKGRldl9wcml2KTsKPiArCWRyYW1faW5mby0+aXNfMTZnYl9kaW1tID0gIUdU X0dFTjlfTFAoZGV2X3ByaXYpOwo+ICAKPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSB8 fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSkKPiAgCQlyZXR1cm47Cj4gQEAgLTE5NjIsNyArMTk2 Miw3IEBAIHN0YXRpYyBpbnQgaTkxNV9kcm1fc3VzcGVuZF9sYXRlKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIGJvb2wgaGliZXJuYXRpb24pCj4gIAkJCQkgICAgZ2V0X3N1c3BlbmRfbW9kZShkZXZf cHJpdiwgaGliZXJuYXRpb24pKTsKPiAgCj4gIAlyZXQgPSAwOwo+IC0JaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gMTEgfHwgSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gKwlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSAxMSB8fCBHVF9HRU45X0xQKGRldl9wcml2KSkKPiAgCQlieHRfZW5hYmxl X2RjOShkZXZfcHJpdik7Cj4gIAllbHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19C Uk9BRFdFTEwoZGV2X3ByaXYpKQo+ICAJCWhzd19lbmFibGVfcGM4KGRldl9wcml2KTsKPiBAQCAt MjE1Miw3ICsyMTUyLDcgQEAgc3RhdGljIGludCBpOTE1X2RybV9yZXN1bWVfZWFybHkoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPiAgCj4gIAlpbnRlbF91bmNvcmVfcmVzdW1lX2Vhcmx5KGRldl9w cml2KTsKPiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSB8fCBJU19HRU45X0xQ KGRldl9wcml2KSkgewo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEgfHwgR1RfR0VO OV9MUChkZXZfcHJpdikpIHsKPiAgCQlnZW45X3Nhbml0aXplX2RjX3N0YXRlKGRldl9wcml2KTsK PiAgCQlieHRfZGlzYWJsZV9kYzkoZGV2X3ByaXYpOwo+ICAJfSBlbHNlIGlmIChJU19IQVNXRUxM KGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7Cj4gQEAgLTI5MjIsNyArMjky Miw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmtk ZXYpCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkgewo+ICAJCWljbF9kaXNwbGF5 X2NvcmVfdW5pbml0KGRldl9wcml2KTsKPiAgCQlieHRfZW5hYmxlX2RjOShkZXZfcHJpdik7Cj4g LQl9IGVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7Cj4gKwl9IGVsc2UgaWYgKEdUX0dF TjlfTFAoZGV2X3ByaXYpKSB7Cj4gIAkJYnh0X2Rpc3BsYXlfY29yZV91bmluaXQoZGV2X3ByaXYp Owo+ICAJCWJ4dF9lbmFibGVfZGM5KGRldl9wcml2KTsKPiAgCX0gZWxzZSBpZiAoSVNfSEFTV0VM TChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkgewo+IEBAIC0zMDE4LDcgKzMw MTgsNyBAQCBzdGF0aWMgaW50IGludGVsX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmtk ZXYpCj4gIAkJCQkgRENfU1RBVEVfRU5fVVBUT19EQzUpCj4gIAkJCQlnZW45X2VuYWJsZV9kYzUo ZGV2X3ByaXYpOwo+ICAJCX0KPiAtCX0gZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsK PiArCX0gZWxzZSBpZiAoR1RfR0VOOV9MUChkZXZfcHJpdikpIHsKPiAgCQlieHRfZGlzYWJsZV9k YzkoZGV2X3ByaXYpOwo+ICAJCWJ4dF9kaXNwbGF5X2NvcmVfaW5pdChkZXZfcHJpdiwgdHJ1ZSk7 Cj4gIAkJaWYgKGRldl9wcml2LT5jc3IuZG1jX3BheWxvYWQgJiYKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKPiBpbmRleCBmMTFhYWQ1Y2Q3ZmIuLjA4Yzg3OWYxN2I0MCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAo+IEBAIC0yMzYwLDYgKzIzNjAsOCBAQCBpbnRlbF9pbmZvKGNvbnN0IHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgI2RlZmluZSBSRVZJRF9GT1JFVkVS CQkweGZmCj4gICNkZWZpbmUgSU5URUxfUkVWSUQoZGV2X3ByaXYpCSgoZGV2X3ByaXYpLT5kcm0u cGRldi0+cmV2aXNpb24pCj4gIAo+ICsjZGVmaW5lIElTX0xQKGRldl9wcml2KQkJKElOVEVMX0lO Rk8oZGV2X3ByaXYpLT5pc19scCkKPiArCj4gICNkZWZpbmUgR0VOX0ZPUkVWRVIgKDApCj4gIAo+ ICAjZGVmaW5lIElOVEVMX0dFTl9NQVNLKHMsIGUpICggXAo+IEBAIC0yMzgxLDYgKzIzODMsOSBA QCBpbnRlbF9pbmZvKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg CShCVUlMRF9CVUdfT05fWkVSTyghX19idWlsdGluX2NvbnN0YW50X3AobikpICsgXAo+ICAJKCEh KChkZXZfcHJpdiktPmluZm8uZ2VuX21hc2sgJiBCSVQoKG4pIC0gMSkpKSkKPiAgCj4gKyNkZWZp bmUgR1RfR0VOOV9MUChkZXZfcHJpdikJKEdUX0dFTihkZXZfcHJpdiwgOSkgJiYgSVNfTFAoZGV2 X3ByaXYpKQo+ICsjZGVmaW5lIEdUX0dFTjlfQkMoZGV2X3ByaXYpCShHVF9HRU4oZGV2X3ByaXYs IDkpICYmICFJU19MUChkZXZfcHJpdikpCj4gKwo+ICAvKgo+ICAgKiBSZXR1cm4gdHJ1ZSBpZiBy ZXZpc2lvbiBpcyBpbiByYW5nZSBbc2luY2UsdW50aWxdIGluY2x1c2l2ZS4KPiAgICoKPiBAQCAt MjUzMiwxMCArMjUzNyw2IEBAIGludGVsX2luZm8oY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+ICAjZGVmaW5lIElTX0lDTF9SRVZJRChwLCBzaW5jZSwgdW50aWwpIFwK PiAgCShJU19JQ0VMQUtFKHApICYmIElTX1JFVklEKHAsIHNpbmNlLCB1bnRpbCkpCj4gIAo+IC0j ZGVmaW5lIElTX0xQKGRldl9wcml2KQkoSU5URUxfSU5GTyhkZXZfcHJpdiktPmlzX2xwKQo+IC0j ZGVmaW5lIElTX0dFTjlfTFAoZGV2X3ByaXYpCShHVF9HRU4oZGV2X3ByaXYsIDkpICYmIElTX0xQ KGRldl9wcml2KSkKPiAtI2RlZmluZSBJU19HRU45X0JDKGRldl9wcml2KQkoR1RfR0VOKGRldl9w cml2LCA5KSAmJiAhSVNfTFAoZGV2X3ByaXYpKQo+IC0KPiAgI2RlZmluZSBFTkdJTkVfTUFTSyhp ZCkJQklUKGlkKQo+ICAjZGVmaW5lIFJFTkRFUl9SSU5HCUVOR0lORV9NQVNLKFJDUykKPiAgI2Rl ZmluZSBCU0RfUklORwlFTkdJTkVfTUFTSyhWQ1MpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmMKPiBpbmRleCAxNzIzZjM3NGM1YTguLjRhZTYxNjZjNjU5MyAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gQEAgLTIxNjgsNyArMjE2OCw3IEBAIHN0YXRpYyB2b2lk IGd0dF93cml0ZV93b3JrYXJvdW5kcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gIAkJSTkxNV9XUklURShHRU44X0wzX0xSQV8xX0dQR1BVLCBHRU44X0wzX0xSQV8xX0dQR1BV X0RFRkFVTFRfVkFMVUVfQkRXKTsKPiAgCWVsc2UgaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYp KQo+ICAJCUk5MTVfV1JJVEUoR0VOOF9MM19MUkFfMV9HUEdQVSwgR0VOOF9MM19MUkFfMV9HUEdQ VV9ERUZBVUxUX1ZBTFVFX0NIVik7Cj4gLQllbHNlIGlmIChJU19HRU45X0xQKGRldl9wcml2KSkK PiArCWVsc2UgaWYgKEdUX0dFTjlfTFAoZGV2X3ByaXYpKQo+ICAJCUk5MTVfV1JJVEUoR0VOOF9M M19MUkFfMV9HUEdQVSwgR0VOOV9MM19MUkFfMV9HUEdQVV9ERUZBVUxUX1ZBTFVFX0JYVCk7Cj4g IAllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4gIAkJSTkxNV9XUklURShHRU44 X0wzX0xSQV8xX0dQR1BVLCBHRU45X0wzX0xSQV8xX0dQR1BVX0RFRkFVTFRfVkFMVUVfU0tMKTsK PiBAQCAtMzAwMiw3ICszMDAyLDcgQEAgc3RhdGljIGludCBnZ3R0X3Byb2JlX2NvbW1vbihzdHJ1 Y3QgaTkxNV9nZ3R0ICpnZ3R0LCB1NjQgc2l6ZSkKPiAgCSAqIHJlc29ydCB0byBhbiB1bmNhY2hl ZCBtYXBwaW5nLiBUaGUgV0MgaXNzdWUgaXMgZWFzaWx5IGNhdWdodCBieSB0aGUKPiAgCSAqIHJl YWRiYWNrIGNoZWNrIHdoZW4gd3JpdGluZyBHVFQgUFRFIGVudHJpZXMuCj4gIAkgKi8KPiAtCWlm IChJU19HRU45X0xQKGRldl9wcml2KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwKQo+ICsJ aWYgKEdUX0dFTjlfTFAoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTApCj4g IAkJZ2d0dC0+Z3NtID0gaW9yZW1hcF9ub2NhY2hlKHBoeXNfYWRkciwgc2l6ZSk7Cj4gIAllbHNl Cj4gIAkJZ2d0dC0+Z3NtID0gaW9yZW1hcF93YyhwaHlzX2FkZHIsIHNpemUpOwo+IEBAIC0zMzAz LDcgKzMzMDMsNyBAQCBzdGF0aWMgdm9pZCBzZXR1cF9wcml2YXRlX3BhdChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g MTApCj4gIAkJY25sX3NldHVwX3ByaXZhdGVfcHBhdChwcGF0KTsKPiAtCWVsc2UgaWYgKElTX0NI RVJSWVZJRVcoZGV2X3ByaXYpIHx8IElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAo SVNfQ0hFUlJZVklFVyhkZXZfcHJpdikgfHwgR1RfR0VOOV9MUChkZXZfcHJpdikpCj4gIAkJY2h2 X3NldHVwX3ByaXZhdGVfcHBhdChwcGF0KTsKPiAgCWVsc2UKPiAgCQliZHdfc2V0dXBfcHJpdmF0 ZV9wcGF0KHBwYXQpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2ly cS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+IGluZGV4IDNlZDU0NWMyZDUw OC4uZTUzZTljY2Y5MGY2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf aXJxLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gQEAgLTI3OTEs NyArMjc5MSw3IEBAIGdlbjhfZGVfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LCB1MzIgbWFzdGVyX2N0bCkKPiAgCQkJCWZvdW5kID0gdHJ1ZTsKPiAgCQkJfQo+ ICAKPiAtCQkJaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7Cj4gKwkJCWlmIChHVF9HRU45X0xQ KGRldl9wcml2KSkgewo+ICAJCQkJdG1wX21hc2sgPSBpaXIgJiBCWFRfREVfUE9SVF9IT1RQTFVH X01BU0s7Cj4gIAkJCQlpZiAodG1wX21hc2spIHsKPiAgCQkJCQlieHRfaHBkX2lycV9oYW5kbGVy KGRldl9wcml2LCB0bXBfbWFzaywKPiBAQCAtMjgwNyw3ICsyODA3LDcgQEAgZ2VuOF9kZV9pcnFf aGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBtYXN0ZXJfY3Rs KQo+ICAJCQkJfQo+ICAJCQl9Cj4gIAo+IC0JCQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikgJiYg KGlpciAmIEJYVF9ERV9QT1JUX0dNQlVTKSkgewo+ICsJCQlpZiAoR1RfR0VOOV9MUChkZXZfcHJp dikgJiYgKGlpciAmIEJYVF9ERV9QT1JUX0dNQlVTKSkgewo+ICAJCQkJZ21idXNfaXJxX2hhbmRs ZXIoZGV2X3ByaXYpOwo+ICAJCQkJZm91bmQgPSB0cnVlOwo+ICAJCQl9Cj4gQEAgLTQyMTEsNyAr NDIxMSw3IEBAIHN0YXRpYyB2b2lkIGdlbjhfZGVfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQlkZV9waXBlX21hc2tlZCB8PSBHRU45X0RFX1BJ UEVfSVJRX0ZBVUxUX0VSUk9SUzsKPiAgCQlkZV9wb3J0X21hc2tlZCB8PSBHRU45X0FVWF9DSEFO TkVMX0IgfCBHRU45X0FVWF9DSEFOTkVMX0MgfAo+ICAJCQkJICBHRU45X0FVWF9DSEFOTkVMX0Q7 Cj4gLQkJaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+ICsJCWlmIChHVF9HRU45X0xQKGRldl9w cml2KSkKPiAgCQkJZGVfcG9ydF9tYXNrZWQgfD0gQlhUX0RFX1BPUlRfR01CVVM7Cj4gIAl9IGVs c2Ugewo+ICAJCWRlX3BpcGVfbWFza2VkIHw9IEdFTjhfREVfUElQRV9JUlFfRkFVTFRfRVJST1JT Owo+IEBAIC00MjI3LDcgKzQyMjcsNyBAQCBzdGF0aWMgdm9pZCBnZW44X2RlX2lycV9wb3N0aW5z dGFsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJCQkJICAgR0VOOF9Q SVBFX0ZJRk9fVU5ERVJSVU47Cj4gIAo+ICAJZGVfcG9ydF9lbmFibGVzID0gZGVfcG9ydF9tYXNr ZWQ7Cj4gLQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gKwlpZiAoR1RfR0VOOV9MUChkZXZf cHJpdikpCj4gIAkJZGVfcG9ydF9lbmFibGVzIHw9IEJYVF9ERV9QT1JUX0hPVFBMVUdfTUFTSzsK PiAgCWVsc2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4gIAkJZGVfcG9ydF9lbmFibGVz IHw9IEdFTjhfUE9SVF9EUF9BX0hPVFBMVUc7Cj4gQEAgLTQyNTUsNyArNDI1NSw3IEBAIHN0YXRp YyB2b2lkIGdlbjhfZGVfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiAgCj4gIAkJR0VOM19JUlFfSU5JVChHRU4xMV9ERV9IUERfLCB+ZGVfaHBkX21h c2tlZCwgZGVfaHBkX2VuYWJsZXMpOwo+ICAJCWdlbjExX2hwZF9kZXRlY3Rpb25fc2V0dXAoZGV2 X3ByaXYpOwo+IC0JfSBlbHNlIGlmIChJU19HRU45X0xQKGRldl9wcml2KSkgewo+ICsJfSBlbHNl IGlmIChHVF9HRU45X0xQKGRldl9wcml2KSkgewo+ICAJCWJ4dF9ocGRfZGV0ZWN0aW9uX3NldHVw KGRldl9wcml2KTsKPiAgCX0gZWxzZSBpZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSkgewo+ICAJ CWlsa19ocGRfZGV0ZWN0aW9uX3NldHVwKGRldl9wcml2KTsKPiBAQCAtNDg5OCw3ICs0ODk4LDcg QEAgdm9pZCBpbnRlbF9pcnFfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gIAkJZGV2LT5kcml2ZXItPmlycV91bmluc3RhbGwgPSBnZW44X2lycV9yZXNldDsKPiAgCQlk ZXYtPmRyaXZlci0+ZW5hYmxlX3ZibGFuayA9IGdlbjhfZW5hYmxlX3ZibGFuazsKPiAgCQlkZXYt PmRyaXZlci0+ZGlzYWJsZV92YmxhbmsgPSBnZW44X2Rpc2FibGVfdmJsYW5rOwo+IC0JCWlmIChJ U19HRU45X0xQKGRldl9wcml2KSkKPiArCQlpZiAoR1RfR0VOOV9MUChkZXZfcHJpdikpCj4gIAkJ CWRldl9wcml2LT5kaXNwbGF5LmhwZF9pcnFfc2V0dXAgPSBieHRfaHBkX2lycV9zZXR1cDsKPiAg CQllbHNlIGlmIChIQVNfUENIX1NQVChkZXZfcHJpdikgfHwgSEFTX1BDSF9LQlAoZGV2X3ByaXYp IHx8Cj4gIAkJCSBIQVNfUENIX0NOUChkZXZfcHJpdikpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5o Cj4gaW5kZXggMTU4Y2Y0NzE2ZDAzLi4zM2ZlYmQ1YTllYWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVnLmgKPiBAQCAtMzgxNCw3ICszODE0LDcgQEAgZW51bSBpOTE1X3Bvd2VyX3dlbGxfaWQg ewo+ICAjZGVmaW5lIElOVEVSVkFMXzFfMzNfVVModXMpCSgoKHVzKSAqIDMpICAgPj4gMikKPiAg I2RlZmluZSBJTlRFUlZBTF8wXzgzM19VUyh1cykJKCgodXMpICogNikgLyA1KQo+ICAjZGVmaW5l IEdUX0lOVEVSVkFMX0ZST01fVVMoZGV2X3ByaXYsIHVzKSAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSA5ID8gXAo+IC0JCQkJKElTX0dFTjlfTFAoZGV2X3ByaXYpID8gXAo+ICsJCQkJKEdUX0dFTjlf TFAoZGV2X3ByaXYpID8gXAo+ICAJCQkJSU5URVJWQUxfMF84MzNfVVModXMpIDogXAo+ICAJCQkJ SU5URVJWQUxfMV8zM19VUyh1cykpIDogXAo+ICAJCQkJSU5URVJWQUxfMV8yOF9VUyh1cykpCj4g QEAgLTM4MjMsNyArMzgyMyw3IEBAIGVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIHsKPiAgI2RlZmlu ZSBJTlRFUlZBTF8xXzMzX1RPX1VTKGludGVydmFsKSAgKCgoaW50ZXJ2YWwpIDw8IDIpIC8gMykK PiAgI2RlZmluZSBJTlRFUlZBTF8wXzgzM19UT19VUyhpbnRlcnZhbCkgKCgoaW50ZXJ2YWwpICog NSkgIC8gNikKPiAgI2RlZmluZSBHVF9QTV9JTlRFUlZBTF9UT19VUyhkZXZfcHJpdiwgaW50ZXJ2 YWwpIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkgPyBcCj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgIChJU19HRU45X0xQKGRldl9wcml2KSA/IFwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgKEdUX0dFTjlfTFAoZGV2X3ByaXYpID8gXAo+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJTlRFUlZBTF8wXzgzM19UT19VUyhpbnRlcnZhbCkgOiBcCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIElOVEVSVkFMXzFfMzNfVE9fVVMoaW50ZXJ2YWwpKSA6IFwKPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSU5URVJWQUxfMV8yOF9UT19VUyhpbnRlcnZhbCkpCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Jpb3MuYwo+IGluZGV4IGZiOTE4ZTk0MmU5YS4uOGZhM2M3OWM1ZjRh IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuYwo+IEBAIC03MTEsNyArNzExLDcgQEAg cGFyc2VfcHNyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgY29uc3Qgc3RydWN0 IGJkYl9oZWFkZXIgKmJkYikKPiAgCSAqIE9sZCBkZWNpbWFsIHZhbHVlIGlzIHdha2UgdXAgdGlt ZSBpbiBtdWx0aXBsZXMgb2YgMTAwIHVzLgo+ICAJICovCj4gIAlpZiAoYmRiLT52ZXJzaW9uID49 IDIwNSAmJgo+IC0JICAgIChJU19HRU45X0JDKGRldl9wcml2KSB8fCBJU19HRU1JTklMQUtFKGRl dl9wcml2KSB8fAo+ICsJICAgIChHVF9HRU45X0JDKGRldl9wcml2KSB8fCBJU19HRU1JTklMQUtF KGRldl9wcml2KSB8fAo+ICAJICAgICBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwKSkgewo+ICAJ CXN3aXRjaCAocHNyX3RhYmxlLT50cDFfd2FrZXVwX3RpbWUpIHsKPiAgCQljYXNlIDA6Cj4gQEAg LTIwNzAsNyArMjA3MCw3IEBAIGludGVsX2Jpb3NfaXNfcG9ydF9ocGRfaW52ZXJ0ZWQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJY29uc3Qgc3RydWN0IGNoaWxkX2Rldmlj ZV9jb25maWcgKmNoaWxkOwo+ICAJaW50IGk7Cj4gIAo+IC0JaWYgKFdBUk5fT05fT05DRSghSVNf R0VOOV9MUChkZXZfcHJpdikpKQo+ICsJaWYgKFdBUk5fT05fT05DRSghR1RfR0VOOV9MUChkZXZf cHJpdikpKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gIAlmb3IgKGkgPSAwOyBpIDwgZGV2X3By aXYtPnZidC5jaGlsZF9kZXZfbnVtOyBpKyspIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfY2RjbGsuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xr LmMKPiBpbmRleCBkYjBlZGQwMWM5NzMuLjM3ODM1ZDU0N2Q2OCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfY2RjbGsuYwo+IEBAIC0yNTY1LDcgKzI1NjUsNyBAQCB2b2lkIGludGVsX3VwZGF0 ZV9tYXhfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCQlkZXZf cHJpdi0+bWF4X2NkY2xrX2ZyZXEgPSA2NTI4MDA7Cj4gIAl9IGVsc2UgaWYgKElTX0NBTk5PTkxB S0UoZGV2X3ByaXYpKSB7Cj4gIAkJZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxID0gNTI4MDAwOwo+ IC0JfSBlbHNlIGlmIChJU19HRU45X0JDKGRldl9wcml2KSkgewo+ICsJfSBlbHNlIGlmIChHVF9H RU45X0JDKGRldl9wcml2KSkgewo+ICAJCXUzMiBsaW1pdCA9IEk5MTVfUkVBRChTS0xfREZTTSkg JiBTS0xfREZTTV9DRENMS19MSU1JVF9NQVNLOwo+ICAJCWludCBtYXhfY2RjbGssIHZjbzsKPiAg Cj4gQEAgLTI3NzUsMTEgKzI3NzUsMTEgQEAgdm9pZCBpbnRlbF9pbml0X2NkY2xrX2hvb2tzKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5z ZXRfY2RjbGsgPSBiZHdfc2V0X2NkY2xrOwo+ICAJCWRldl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRf Y2FsY19jZGNsayA9Cj4gIAkJCWJkd19tb2Rlc2V0X2NhbGNfY2RjbGs7Cj4gLQl9IGVsc2UgaWYg KElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7Cj4gKwl9IGVsc2UgaWYgKEdUX0dFTjlfTFAoZGV2X3By aXYpKSB7Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuc2V0X2NkY2xrID0gYnh0X3NldF9jZGNsazsK PiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5tb2Rlc2V0X2NhbGNfY2RjbGsgPQo+ICAJCQlieHRfbW9k ZXNldF9jYWxjX2NkY2xrOwo+IC0JfSBlbHNlIGlmIChJU19HRU45X0JDKGRldl9wcml2KSkgewo+ ICsJfSBlbHNlIGlmIChHVF9HRU45X0JDKGRldl9wcml2KSkgewo+ICAJCWRldl9wcml2LT5kaXNw bGF5LnNldF9jZGNsayA9IHNrbF9zZXRfY2RjbGs7Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkubW9k ZXNldF9jYWxjX2NkY2xrID0KPiAgCQkJc2tsX21vZGVzZXRfY2FsY19jZGNsazsKPiBAQCAtMjc5 Niw5ICsyNzk2LDkgQEAgdm9pZCBpbnRlbF9pbml0X2NkY2xrX2hvb2tzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfY2RjbGsgPSBp Y2xfZ2V0X2NkY2xrOwo+ICAJZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikpCj4gIAkJ ZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2NkY2xrID0gY25sX2dldF9jZGNsazsKPiAtCWVsc2UgaWYg KElTX0dFTjlfQkMoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoR1RfR0VOOV9CQyhkZXZfcHJpdikp Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2NkY2xrID0gc2tsX2dldF9jZGNsazsKPiAtCWVs c2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoR1RfR0VOOV9MUChkZXZf cHJpdikpCj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2NkY2xrID0gYnh0X2dldF9jZGNsazsK PiAgCWVsc2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4gIAkJZGV2X3ByaXYtPmRpc3Bs YXkuZ2V0X2NkY2xrID0gYmR3X2dldF9jZGNsazsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfY29sb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9y LmMKPiBpbmRleCA1MTI3ZGEyODZhMmIuLjkxYTQ2ZTRmMzQ1MyAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfY29sb3IuYwo+IEBAIC02NTUsNyArNjU1LDcgQEAgdm9pZCBpbnRlbF9jb2xvcl9p bml0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCX0gZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZf cHJpdikpIHsKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2NzY19tYXRyaXggPSBpbGtfbG9h ZF9jc2NfbWF0cml4Owo+ICAJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfbHV0cyA9IGhhc3dlbGxf bG9hZF9sdXRzOwo+IC0JfSBlbHNlIGlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpIHx8IElTX0dF TjlfQkMoZGV2X3ByaXYpIHx8Cj4gKwl9IGVsc2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikg fHwgR1RfR0VOOV9CQyhkZXZfcHJpdikgfHwKPiAgCQkgICBJU19CUk9YVE9OKGRldl9wcml2KSkg ewo+ICAJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfY3NjX21hdHJpeCA9IGlsa19sb2FkX2NzY19t YXRyaXg7Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzID0gYnJvYWR3ZWxsX2xvYWRf bHV0czsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3NyLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jc3IuYwo+IGluZGV4IGZjN2JkMjFmYTU4Ni4uMmI1 NjU4MTQzZTE5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nzci5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3NyLmMKPiBAQCAtMjMyLDcgKzIz Miw3IEBAIHN0YXRpYyB2b2lkIGdlbjlfc2V0X2RjX3N0YXRlX2RlYnVnbWFzayhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICAJbWFzayA9IERDX1NUQVRFX0RFQlVHX01B U0tfTUVNT1JZX1VQOwo+ICAKPiAtCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkKPiArCWlmIChH VF9HRU45X0xQKGRldl9wcml2KSkKPiAgCQltYXNrIHw9IERDX1NUQVRFX0RFQlVHX01BU0tfQ09S RVM7Cj4gIAo+ICAJLyogVGhlIGJlbG93IGJpdCBkb2Vzbid0IG5lZWQgdG8gYmUgY2xlYXJlZCBl dmVyIGFmdGVyd2FyZHMgKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+IGluZGV4IGFiOWEz NmM0YmEzYi4uYzgzOTBlZWJlOGUzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RkaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiBA QCAtNzI4LDcgKzcyOCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqCj4g IGludGVsX2RkaV9nZXRfYnVmX3RyYW5zX2VkcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gIAkJCSAgICBlbnVtIHBvcnQgcG9ydCwgaW50ICpuX2VudHJpZXMpCj4gIHsKPiAt CWlmIChJU19HRU45X0JDKGRldl9wcml2KSkgewo+ICsJaWYgKEdUX0dFTjlfQkMoZGV2X3ByaXYp KSB7Cj4gIAkJY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKmRkaV90cmFuc2xhdGlvbnMgPQo+ ICAJCQlza2xfZ2V0X2J1Zl90cmFuc19lZHAoZGV2X3ByaXYsIG5fZW50cmllcyk7Cj4gIAkJKm5f ZW50cmllcyA9IHNrbF9idWZfdHJhbnNfbnVtX2VudHJpZXMocG9ydCwgKm5fZW50cmllcyk7Cj4g QEAgLTc2NCw3ICs3NjQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKgo+ ICBpbnRlbF9kZGlfZ2V0X2J1Zl90cmFuc19oZG1pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiAgCQkJICAgICBpbnQgKm5fZW50cmllcykKPiAgewo+IC0JaWYgKElTX0dFTjlf QkMoZGV2X3ByaXYpKSB7Cj4gKwlpZiAoR1RfR0VOOV9CQyhkZXZfcHJpdikpIHsKPiAgCQlyZXR1 cm4gc2tsX2dldF9idWZfdHJhbnNfaGRtaShkZXZfcHJpdiwgbl9lbnRyaWVzKTsKPiAgCX0gZWxz ZSBpZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSkgewo+ICAJCSpuX2VudHJpZXMgPSBBUlJBWV9T SVpFKGJkd19kZGlfdHJhbnNsYXRpb25zX2hkbWkpOwo+IEBAIC05MjUsMTAgKzkyNSwxMCBAQCBz dGF0aWMgaW50IGludGVsX2RkaV9oZG1pX2xldmVsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgZW51bSBwb3J0IHBvcgo+ICAJfSBlbHNlIGlmIChJU19DQU5OT05MQUtFKGRldl9w cml2KSkgewo+ICAJCWNubF9nZXRfYnVmX3RyYW5zX2hkbWkoZGV2X3ByaXYsICZuX2VudHJpZXMp Owo+ICAJCWRlZmF1bHRfZW50cnkgPSBuX2VudHJpZXMgLSAxOwo+IC0JfSBlbHNlIGlmIChJU19H RU45X0xQKGRldl9wcml2KSkgewo+ICsJfSBlbHNlIGlmIChHVF9HRU45X0xQKGRldl9wcml2KSkg ewo+ICAJCWJ4dF9nZXRfYnVmX3RyYW5zX2hkbWkoZGV2X3ByaXYsICZuX2VudHJpZXMpOwo+ICAJ CWRlZmF1bHRfZW50cnkgPSBuX2VudHJpZXMgLSAxOwo+IC0JfSBlbHNlIGlmIChJU19HRU45X0JD KGRldl9wcml2KSkgewo+ICsJfSBlbHNlIGlmIChHVF9HRU45X0JDKGRldl9wcml2KSkgewo+ICAJ CWludGVsX2RkaV9nZXRfYnVmX3RyYW5zX2hkbWkoZGV2X3ByaXYsICZuX2VudHJpZXMpOwo+ICAJ CWRlZmF1bHRfZW50cnkgPSA4Owo+ICAJfSBlbHNlIGlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYp KSB7Cj4gQEAgLTk3OSw3ICs5NzksNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wcmVwYXJlX2RwX2Rk aV9idWZmZXJzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCQkJCQkJICAgICAg Jm5fZW50cmllcyk7Cj4gIAo+ICAJLyogSWYgd2UncmUgYm9vc3RpbmcgdGhlIGN1cnJlbnQsIHNl dCBiaXQgMzEgb2YgdHJhbnMxICovCj4gLQlpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikgJiYKPiAr CWlmIChHVF9HRU45X0JDKGRldl9wcml2KSAmJgo+ICAJICAgIGRldl9wcml2LT52YnQuZGRpX3Bv cnRfaW5mb1twb3J0XS5kcF9ib29zdF9sZXZlbCkKPiAgCQlpYm9vc3RfYml0ID0gRERJX0JVRl9C QUxBTkNFX0xFR19FTkFCTEU7Cj4gIAo+IEBAIC0xMDEzLDcgKzEwMTMsNyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9wcmVwYXJlX2hkbWlfZGRpX2J1ZmZlcnMoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCj4gIAkJbGV2ZWwgPSBuX2VudHJpZXMgLSAxOwo+ICAKPiAgCS8qIElmIHdlJ3JlIGJv b3N0aW5nIHRoZSBjdXJyZW50LCBzZXQgYml0IDMxIG9mIHRyYW5zMSAqLwo+IC0JaWYgKElTX0dF TjlfQkMoZGV2X3ByaXYpICYmCj4gKwlpZiAoR1RfR0VOOV9CQyhkZXZfcHJpdikgJiYKPiAgCSAg ICBkZXZfcHJpdi0+dmJ0LmRkaV9wb3J0X2luZm9bcG9ydF0uaGRtaV9ib29zdF9sZXZlbCkKPiAg CQlpYm9vc3RfYml0ID0gRERJX0JVRl9CQUxBTkNFX0xFR19FTkFCTEU7Cj4gIAo+IEBAIC0xNzQx LDkgKzE3NDEsOSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfY2xvY2tfZ2V0KHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCWljbF9kZGlfY2xvY2tfZ2V0KGVuY29kZXIsIHBpcGVf Y29uZmlnKTsKPiAgCWVsc2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKQo+ICAJCWNubF9k ZGlfY2xvY2tfZ2V0KGVuY29kZXIsIHBpcGVfY29uZmlnKTsKPiAtCWVsc2UgaWYgKElTX0dFTjlf TFAoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoR1RfR0VOOV9MUChkZXZfcHJpdikpCj4gIAkJYnh0 X2RkaV9jbG9ja19nZXQoZW5jb2RlciwgcGlwZV9jb25maWcpOwo+IC0JZWxzZSBpZiAoSVNfR0VO OV9CQyhkZXZfcHJpdikpCj4gKwllbHNlIGlmIChHVF9HRU45X0JDKGRldl9wcml2KSkKPiAgCQlz a2xfZGRpX2Nsb2NrX2dldChlbmNvZGVyLCBwaXBlX2NvbmZpZyk7Cj4gIAllbHNlIGlmIChJTlRF TF9HRU4oZGV2X3ByaXYpIDw9IDgpCj4gIAkJaHN3X2RkaV9jbG9ja19nZXQoZW5jb2RlciwgcGlw ZV9jb25maWcpOwo+IEBAIC0yMDY3LDcgKzIwNjcsNyBAQCBib29sIGludGVsX2RkaV9nZXRfaHdf c3RhdGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAlEUk1fREVCVUdfS01TKCJO byBwaXBlIGZvciBkZGkgcG9ydCAlYyBmb3VuZFxuIiwgcG9ydF9uYW1lKHBvcnQpKTsKPiAgCj4g IG91dDoKPiAtCWlmIChyZXQgJiYgSVNfR0VOOV9MUChkZXZfcHJpdikpIHsKPiArCWlmIChyZXQg JiYgR1RfR0VOOV9MUChkZXZfcHJpdikpIHsKPiAgCQl0bXAgPSBJOTE1X1JFQUQoQlhUX1BIWV9D VEwocG9ydCkpOwo+ICAJCWlmICgodG1wICYgKEJYVF9QSFlfQ01OTEFORV9QT1dFUkRPV05fQUNL IHwKPiAgCQkJICAgIEJYVF9QSFlfTEFORV9QT1dFUkRPV05fQUNLIHwKPiBAQCAtMjI1NCw3ICsy MjU0LDcgQEAgdTggaW50ZWxfZGRpX2RwX3ZvbHRhZ2VfbWF4KHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyKQo+ICAJCQljbmxfZ2V0X2J1Zl90cmFuc19lZHAoZGV2X3ByaXYsICZuX2VudHJp ZXMpOwo+ICAJCWVsc2UKPiAgCQkJY25sX2dldF9idWZfdHJhbnNfZHAoZGV2X3ByaXYsICZuX2Vu dHJpZXMpOwo+IC0JfSBlbHNlIGlmIChJU19HRU45X0xQKGRldl9wcml2KSkgewo+ICsJfSBlbHNl IGlmIChHVF9HRU45X0xQKGRldl9wcml2KSkgewo+ICAJCWlmIChlbmNvZGVyLT50eXBlID09IElO VEVMX09VVFBVVF9FRFApCj4gIAkJCWJ4dF9nZXRfYnVmX3RyYW5zX2VkcChkZXZfcHJpdiwgJm5f ZW50cmllcyk7Cj4gIAkJZWxzZQo+IEBAIC0yNzM2LDcgKzI3MzYsNyBAQCB1aW50MzJfdCBkZGlf c2lnbmFsX2xldmVscyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAJc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIgPSAmZHBvcnQtPmJhc2U7Cj4gIAlpbnQgbGV2ZWwgPSBpbnRlbF9k ZGlfZHBfbGV2ZWwoaW50ZWxfZHApOwo+ICAKPiAtCWlmIChJU19HRU45X0JDKGRldl9wcml2KSkK PiArCWlmIChHVF9HRU45X0JDKGRldl9wcml2KSkKPiAgCQlza2xfZGRpX3NldF9pYm9vc3QoZW5j b2RlciwgbGV2ZWwsIGVuY29kZXItPnR5cGUpOwo+ICAKPiAgCXJldHVybiBERElfQlVGX1RSQU5T X1NFTEVDVChsZXZlbCk7Cj4gQEAgLTI4NzcsNyArMjg3Nyw3IEBAIHN0YXRpYyB2b2lkIGludGVs X2RkaV9jbGtfc2VsZWN0KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCXZhbCA9 IEk5MTVfUkVBRChEUENMS0FfQ0ZHQ1IwKTsKPiAgCQl2YWwgJj0gfkRQQ0xLQV9DRkdDUjBfRERJ X0NMS19PRkYocG9ydCk7Cj4gIAkJSTkxNV9XUklURShEUENMS0FfQ0ZHQ1IwLCB2YWwpOwo+IC0J fSBlbHNlIGlmIChJU19HRU45X0JDKGRldl9wcml2KSkgewo+ICsJfSBlbHNlIGlmIChHVF9HRU45 X0JDKGRldl9wcml2KSkgewo+ICAJCS8qIERESSAtPiBQTEwgbWFwcGluZyAgKi8KPiAgCQl2YWwg PSBJOTE1X1JFQUQoRFBMTF9DVFJMMik7Cj4gIAo+IEBAIC0yOTA2LDcgKzI5MDYsNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9kZGlfY2xrX2Rpc2FibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIpCj4gIAl9IGVsc2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKSB7Cj4gIAkJSTkxNV9X UklURShEUENMS0FfQ0ZHQ1IwLCBJOTE1X1JFQUQoRFBDTEtBX0NGR0NSMCkgfAo+ICAJCQkgICBE UENMS0FfQ0ZHQ1IwX0RESV9DTEtfT0ZGKHBvcnQpKTsKPiAtCX0gZWxzZSBpZiAoSVNfR0VOOV9C QyhkZXZfcHJpdikpIHsKPiArCX0gZWxzZSBpZiAoR1RfR0VOOV9CQyhkZXZfcHJpdikpIHsKPiAg CQlJOTE1X1dSSVRFKERQTExfQ1RSTDIsIEk5MTVfUkVBRChEUExMX0NUUkwyKSB8Cj4gIAkJCSAg IERQTExfQ1RSTDJfRERJX0NMS19PRkYocG9ydCkpOwo+ICAJfSBlbHNlIGlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpIDwgOSkgewo+IEBAIC0zMDc1LDcgKzMwNzUsNyBAQCBzdGF0aWMgdm9pZCBpbnRl bF9kZGlfcHJlX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkJ CQlsZXZlbCwgZW5jb2Rlci0+dHlwZSk7Cj4gIAllbHNlIGlmIChJU19DQU5OT05MQUtFKGRldl9w cml2KSkKPiAgCQljbmxfZGRpX3Zzd2luZ19zZXF1ZW5jZShlbmNvZGVyLCBsZXZlbCwgZW5jb2Rl ci0+dHlwZSk7Cj4gLQllbHNlIGlmIChJU19HRU45X0xQKGRldl9wcml2KSkKPiArCWVsc2UgaWYg KEdUX0dFTjlfTFAoZGV2X3ByaXYpKQo+ICAJCWJ4dF9kZGlfdnN3aW5nX3NlcXVlbmNlKGVuY29k ZXIsIGxldmVsLCBlbmNvZGVyLT50eXBlKTsKPiAgCWVsc2UKPiAgCQlpbnRlbF9wcmVwYXJlX2Rw X2RkaV9idWZmZXJzKGVuY29kZXIsIGNydGNfc3RhdGUpOwo+IEBAIC0zMTE3LDE0ICszMTE3LDE0 IEBAIHN0YXRpYyB2b2lkIGludGVsX2RkaV9wcmVfZW5hYmxlX2hkbWkoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsCj4gIAkJCQkJbGV2ZWwsIElOVEVMX09VVFBVVF9IRE1JKTsKPiAgCWVs c2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKQo+ICAJCWNubF9kZGlfdnN3aW5nX3NlcXVl bmNlKGVuY29kZXIsIGxldmVsLCBJTlRFTF9PVVRQVVRfSERNSSk7Cj4gLQllbHNlIGlmIChJU19H RU45X0xQKGRldl9wcml2KSkKPiArCWVsc2UgaWYgKEdUX0dFTjlfTFAoZGV2X3ByaXYpKQo+ICAJ CWJ4dF9kZGlfdnN3aW5nX3NlcXVlbmNlKGVuY29kZXIsIGxldmVsLCBJTlRFTF9PVVRQVVRfSERN SSk7Cj4gIAllbHNlCj4gIAkJaW50ZWxfcHJlcGFyZV9oZG1pX2RkaV9idWZmZXJzKGVuY29kZXIs IGxldmVsKTsKPiAgCj4gIAlpY2xfZW5hYmxlX3BoeV9jbG9ja19nYXRpbmcoZGlnX3BvcnQpOwo+ ICAKPiAtCWlmIChJU19HRU45X0JDKGRldl9wcml2KSkKPiArCWlmIChHVF9HRU45X0JDKGRldl9w cml2KSkKPiAgCQlza2xfZGRpX3NldF9pYm9vc3QoZW5jb2RlciwgbGV2ZWwsIElOVEVMX09VVFBV VF9IRE1JKTsKPiAgCj4gIAlpbnRlbF9kZGlfZW5hYmxlX3BpcGVfY2xvY2soY3J0Y19zdGF0ZSk7 Cj4gQEAgLTMzNDUsNyArMzM0NSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2VuYWJsZV9kZGlfaGRt aShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkJICBjb25uZWN0b3ItPmJhc2Uu aWQsIGNvbm5lY3Rvci0+bmFtZSk7Cj4gIAo+ICAJLyogRGlzcGxheSBXQSAjMTE0Mzogc2tsLGti bCxjZmwgKi8KPiAtCWlmIChJU19HRU45X0JDKGRldl9wcml2KSkgewo+ICsJaWYgKEdUX0dFTjlf QkMoZGV2X3ByaXYpKSB7Cj4gIAkJLyoKPiAgCQkgKiBGb3Igc29tZSByZWFzb24gdGhlc2UgY2hp Y2tlbiBiaXRzIGhhdmUgYmVlbgo+ICAJCSAqIHN0dWZmZWQgaW50byBhIHRyYW5zY29kZXIgcmVn aXN0ZXIsIGV2ZW50IHRob3VnaAo+IEBAIC0zNTAwLDcgKzM1MDAsNyBAQCBpbnRlbF9kZGlfcHJl X3BsbF9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkJaW50ZWxfZGlz cGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsCj4gIAkJCQkJaW50ZWxfZGRpX21haW5fbGlua19hdXhf ZG9tYWluKGRpZ19wb3J0KSk7Cj4gIAo+IC0JaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+ICsJ aWYgKEdUX0dFTjlfTFAoZGV2X3ByaXYpKQo+ICAJCWJ4dF9kZGlfcGh5X3NldF9sYW5lX29wdGlt X21hc2soZW5jb2RlciwKPiAgCQkJCQkJY3J0Y19zdGF0ZS0+bGFuZV9sYXRfb3B0aW1fbWFzayk7 Cj4gIAo+IEBAIC0zNzA0LDcgKzM3MDQsNyBAQCB2b2lkIGludGVsX2RkaV9nZXRfY29uZmlnKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAKPiAgCWludGVsX2RkaV9jbG9ja19nZXQo ZW5jb2RlciwgcGlwZV9jb25maWcpOwo+ICAKPiAtCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkK PiArCWlmIChHVF9HRU45X0xQKGRldl9wcml2KSkKPiAgCQlwaXBlX2NvbmZpZy0+bGFuZV9sYXRf b3B0aW1fbWFzayA9Cj4gIAkJCWJ4dF9kZGlfcGh5X2dldF9sYW5lX2xhdF9vcHRpbV9tYXNrKGVu Y29kZXIpOwo+ICAKPiBAQCAtMzc0NSw3ICszNzQ1LDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfZGRp X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJZWxzZQo+ ICAJCXJldCA9IGludGVsX2RwX2NvbXB1dGVfY29uZmlnKGVuY29kZXIsIHBpcGVfY29uZmlnLCBj b25uX3N0YXRlKTsKPiAgCj4gLQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikgJiYgcmV0KQo+ICsJ aWYgKEdUX0dFTjlfTFAoZGV2X3ByaXYpICYmIHJldCkKPiAgCQlwaXBlX2NvbmZpZy0+bGFuZV9s YXRfb3B0aW1fbWFzayA9Cj4gIAkJCWJ4dF9kZGlfcGh5X2NhbGNfbGFuZV9sYXRfb3B0aW1fbWFz ayhwaXBlX2NvbmZpZy0+bGFuZV9jb3VudCk7Cj4gIAo+IEBAIC0zOTUyLDcgKzM5NTIsNyBAQCBz dGF0aWMgYm9vbCBpbnRlbF9kZGlfYV9mb3JjZV80X2xhbmVzKHN0cnVjdCBpbnRlbF9kaWdpdGFs X3BvcnQgKmRwb3J0KQo+ICAJLyogQnJveHRvbi9HZW1pbmlsYWtlOiBCc3BlYyBzYXlzIHRoYXQg RERJX0FfNF9MQU5FUyBpcyB0aGUgb25seQo+ICAJICogICAgICAgICAgICAgICAgICAgICBzdXBw b3J0ZWQgY29uZmlndXJhdGlvbgo+ICAJICovCj4gLQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikp Cj4gKwlpZiAoR1RfR0VOOV9MUChkZXZfcHJpdikpCj4gIAkJcmV0dXJuIHRydWU7Cj4gIAo+ICAJ LyogQ2Fubm9ubGFrZTogTW9zdCBvZiBTS1VzIGRvbid0IHN1cHBvcnQgRERJX0UsIGFuZCB0aGUg b25seQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5m by5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYwo+IGluZGV4IDdm NzEyY2QyMzhmZS4uYWI5Njc3ODFmNDk1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RldmljZV9pbmZvLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kZXZpY2VfaW5mby5jCj4gQEAgLTMzOSw4ICszMzksOCBAQCBzdGF0aWMgdm9pZCBnZW45X3Nz ZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCXNzZXUt PnNsaWNlX21hc2sgPSAoZnVzZTIgJiBHRU44X0YyX1NfRU5BX01BU0spID4+IEdFTjhfRjJfU19F TkFfU0hJRlQ7Cj4gIAo+ICAJLyogQlhUIGhhcyBhIHNpbmdsZSBzbGljZSBhbmQgYXQgbW9zdCAz IHN1YnNsaWNlcy4gKi8KPiAtCXNzZXUtPm1heF9zbGljZXMgPSBJU19HRU45X0xQKGRldl9wcml2 KSA/IDEgOiAzOwo+IC0Jc3NldS0+bWF4X3N1YnNsaWNlcyA9IElTX0dFTjlfTFAoZGV2X3ByaXYp ID8gMyA6IDQ7Cj4gKwlzc2V1LT5tYXhfc2xpY2VzID0gR1RfR0VOOV9MUChkZXZfcHJpdikgPyAx IDogMzsKPiArCXNzZXUtPm1heF9zdWJzbGljZXMgPSBHVF9HRU45X0xQKGRldl9wcml2KSA/IDMg OiA0Owo+ICAJc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPSA4Owo+ICAKPiAgCS8qCj4gQEAg LTQwOSwxMiArNDA5LDEyIEBAIHN0YXRpYyB2b2lkIGdlbjlfc3NldV9pbmZvX2luaXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJICogcGFpciBwZXIgc3Vic2xpY2UuCj4g IAkqLwo+ICAJc3NldS0+aGFzX3NsaWNlX3BnID0KPiAtCQkhSVNfR0VOOV9MUChkZXZfcHJpdikg JiYgaHdlaWdodDgoc3NldS0+c2xpY2VfbWFzaykgPiAxOwo+ICsJCSFHVF9HRU45X0xQKGRldl9w cml2KSAmJiBod2VpZ2h0OChzc2V1LT5zbGljZV9tYXNrKSA+IDE7Cj4gIAlzc2V1LT5oYXNfc3Vi c2xpY2VfcGcgPQo+IC0JCUlTX0dFTjlfTFAoZGV2X3ByaXYpICYmIHNzZXVfc3Vic2xpY2VfdG90 YWwoc3NldSkgPiAxOwo+ICsJCUdUX0dFTjlfTFAoZGV2X3ByaXYpICYmIHNzZXVfc3Vic2xpY2Vf dG90YWwoc3NldSkgPiAxOwo+ICAJc3NldS0+aGFzX2V1X3BnID0gc3NldS0+ZXVfcGVyX3N1YnNs aWNlID4gMjsKPiAgCj4gLQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsKPiArCWlmIChHVF9H RU45X0xQKGRldl9wcml2KSkgewo+ICAjZGVmaW5lIElTX1NTX0RJU0FCTEVEKHNzKQkoIShzc2V1 LT5zdWJzbGljZV9tYXNrWzBdICYgQklUKHNzKSkpCj4gIAkJaW5mby0+aGFzX3Bvb2xlZF9ldSA9 IGh3ZWlnaHQ4KHNzZXUtPnN1YnNsaWNlX21hc2tbMF0pID09IDM7Cj4gIAo+IEBAIC02NzEsNyAr NjcxLDcgQEAgc3RhdGljIHUzMiByZWFkX3RpbWVzdGFtcF9mcmVxdWVuY3koc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCWlmICgoY3RjX3JlZyAmIENUQ19TT1VSQ0VfUEFS QU1FVEVSX01BU0spID09IENUQ19TT1VSQ0VfRElWSURFX0xPR0lDKSB7Cj4gIAkJCWZyZXEgPSBy ZWFkX3JlZmVyZW5jZV90c19mcmVxKGRldl9wcml2KTsKPiAgCQl9IGVsc2Ugewo+IC0JCQlmcmVx ID0gSVNfR0VOOV9MUChkZXZfcHJpdikgPyBmMTlfMl9taHogOiBmMjRfbWh6Owo+ICsJCQlmcmVx ID0gR1RfR0VOOV9MUChkZXZfcHJpdikgPyBmMTlfMl9taHogOiBmMjRfbWh6Owo+ICAKPiAgCQkJ LyogTm93IGZpZ3VyZSBvdXQgaG93IHRoZSBjb21tYW5kIHN0cmVhbSdzIHRpbWVzdGFtcAo+ICAJ CQkgKiByZWdpc3RlciBpbmNyZW1lbnRzIGZyb20gdGhpcyBmcmVxdWVuY3kgKGl0IG1pZ2h0Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDkwNDk1MGE2NWMxYi4uYjEz OTU2OTY2YTU4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC01 NTYsMTIgKzU1NiwxMiBAQCBzdGF0aWMgYm9vbCBpbnRlbF9QTExfaXNfdmFsaWQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCUlOVEVMUGxsSW52YWxpZCgibTEgb3V0IG9m IHJhbmdlXG4iKTsKPiAgCj4gIAlpZiAoIUlTX1BJTkVWSUVXKGRldl9wcml2KSAmJiAhSVNfVkFM TEVZVklFVyhkZXZfcHJpdikgJiYKPiAtCSAgICAhSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikgJiYg IUlTX0dFTjlfTFAoZGV2X3ByaXYpKQo+ICsJICAgICFJU19DSEVSUllWSUVXKGRldl9wcml2KSAm JiAhR1RfR0VOOV9MUChkZXZfcHJpdikpCj4gIAkJaWYgKGNsb2NrLT5tMSA8PSBjbG9jay0+bTIp Cj4gIAkJCUlOVEVMUGxsSW52YWxpZCgibTEgPD0gbTJcbiIpOwo+ICAKPiAgCWlmICghSVNfVkFM TEVZVklFVyhkZXZfcHJpdikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2X3ByaXYpICYmCj4gLQkgICAg IUlTX0dFTjlfTFAoZGV2X3ByaXYpKSB7Cj4gKwkgICAgIUdUX0dFTjlfTFAoZGV2X3ByaXYpKSB7 Cj4gIAkJaWYgKGNsb2NrLT5wIDwgbGltaXQtPnAubWluIHx8IGxpbWl0LT5wLm1heCA8IGNsb2Nr LT5wKQo+ICAJCQlJTlRFTFBsbEludmFsaWQoInAgb3V0IG9mIHJhbmdlXG4iKTsKPiAgCQlpZiAo Y2xvY2stPm0gPCBsaW1pdC0+bS5taW4gfHwgbGltaXQtPm0ubWF4IDwgY2xvY2stPm0pCj4gQEAg LTk0ODEsOSArOTQ4MSw5IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfZ2V0X2RkaV9wb3J0X3N0YXRl KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCWljZWxha2VfZ2V0X2RkaV9wbGwoZGV2X3By aXYsIHBvcnQsIHBpcGVfY29uZmlnKTsKPiAgCWVsc2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3By aXYpKQo+ICAJCWNhbm5vbmxha2VfZ2V0X2RkaV9wbGwoZGV2X3ByaXYsIHBvcnQsIHBpcGVfY29u ZmlnKTsKPiAtCWVsc2UgaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoR1Rf R0VOOV9CQyhkZXZfcHJpdikpCj4gIAkJc2t5bGFrZV9nZXRfZGRpX3BsbChkZXZfcHJpdiwgcG9y dCwgcGlwZV9jb25maWcpOwo+IC0JZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gKwll bHNlIGlmIChHVF9HRU45X0xQKGRldl9wcml2KSkKPiAgCQlieHRfZ2V0X2RkaV9wbGwoZGV2X3By aXYsIHBvcnQsIHBpcGVfY29uZmlnKTsKPiAgCWVsc2UKPiAgCQloYXN3ZWxsX2dldF9kZGlfcGxs KGRldl9wcml2LCBwb3J0LCBwaXBlX2NvbmZpZyk7Cj4gQEAgLTk1MzAsNyArOTUzMCw3IEBAIHN0 YXRpYyBib29sIGhhc3dlbGxfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRj LAo+ICAKPiAgCWFjdGl2ZSA9IGhzd19nZXRfdHJhbnNjb2Rlcl9zdGF0ZShjcnRjLCBwaXBlX2Nv bmZpZywgJnBvd2VyX2RvbWFpbl9tYXNrKTsKPiAgCj4gLQlpZiAoSVNfR0VOOV9MUChkZXZfcHJp dikgJiYKPiArCWlmIChHVF9HRU45X0xQKGRldl9wcml2KSAmJgo+ICAJICAgIGJ4dF9nZXRfZHNp X3RyYW5zY29kZXJfc3RhdGUoY3J0YywgcGlwZV9jb25maWcsICZwb3dlcl9kb21haW5fbWFzaykp IHsKPiAgCQlXQVJOX09OKGFjdGl2ZSk7Cj4gIAkJYWN0aXZlID0gdHJ1ZTsKPiBAQCAtMTQxMDEs NyArMTQxMDEsNyBAQCB2b2lkIGludGVsX3Bwc191bmxvY2tfcmVnc193YShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRlbF9wcHNfaW5pdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAtCWlmIChIQVNfUENIX1NQ TElUKGRldl9wcml2KSB8fCBJU19HRU45X0xQKGRldl9wcml2KSkKPiArCWlmIChIQVNfUENIX1NQ TElUKGRldl9wcml2KSB8fCBHVF9HRU45X0xQKGRldl9wcml2KSkKPiAgCQlkZXZfcHJpdi0+cHBz X21taW9fYmFzZSA9IFBDSF9QUFNfQkFTRTsKPiAgCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2 X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+ICAJCWRldl9wcml2LT5wcHNfbW1p b19iYXNlID0gVkxWX1BQU19CQVNFOwo+IEBAIC0xNDEzOSw3ICsxNDEzOSw3IEBAIHN0YXRpYyB2 b2lkIGludGVsX3NldHVwX291dHB1dHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAJCWludGVsX2RkaV9pbml0KGRldl9wcml2LCBQT1JUX0UpOwo+ICAJCWludGVsX2RkaV9p bml0KGRldl9wcml2LCBQT1JUX0YpOwo+ICAJCWljbF9kc2lfaW5pdChkZXZfcHJpdik7Cj4gLQl9 IGVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7Cj4gKwl9IGVsc2UgaWYgKEdUX0dFTjlf TFAoZGV2X3ByaXYpKSB7Cj4gIAkJLyoKPiAgCQkgKiBGSVhNRTogQnJveHRvbiBkb2Vzbid0IHN1 cHBvcnQgcG9ydCBkZXRlY3Rpb24gdmlhIHRoZQo+ICAJCSAqIERESV9CVUZfQ1RMX0Egb3IgU0ZV U0VfU1RSQVAgcmVnaXN0ZXJzLCBmaW5kIGFub3RoZXIgd2F5IHRvCj4gQEAgLTE0MTYwLDcgKzE0 MTYwLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2V0dXBfb3V0cHV0cyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJICovCj4gIAkJZm91bmQgPSBJOTE1X1JFQUQoRERJX0JV Rl9DVEwoUE9SVF9BKSkgJiBERElfSU5JVF9ESVNQTEFZX0RFVEVDVEVEOwo+ICAJCS8qIFdhSWdu b3JlRERJQVN0cmFwOiBza2wgKi8KPiAtCQlpZiAoZm91bmQgfHwgSVNfR0VOOV9CQyhkZXZfcHJp dikpCj4gKwkJaWYgKGZvdW5kIHx8IEdUX0dFTjlfQkMoZGV2X3ByaXYpKQo+ICAJCQlpbnRlbF9k ZGlfaW5pdChkZXZfcHJpdiwgUE9SVF9BKTsKPiAgCj4gIAkJLyogRERJIEIsIEMsIEQsIGFuZCBG IGRldGVjdGlvbiBpcyBpbmRpY2F0ZWQgYnkgdGhlIFNGVVNFX1NUUkFQCj4gQEAgLTE0MTc4LDcg KzE0MTc4LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2V0dXBfb3V0cHV0cyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJLyoKPiAgCQkgKiBPbiBTS0wgd2UgZG9uJ3QgaGF2 ZSBhIHdheSB0byBkZXRlY3QgRERJLUUgc28gd2UgcmVseSBvbiBWQlQuCj4gIAkJICovCj4gLQkJ aWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpICYmCj4gKwkJaWYgKEdUX0dFTjlfQkMoZGV2X3ByaXYp ICYmCj4gIAkJICAgIChkZXZfcHJpdi0+dmJ0LmRkaV9wb3J0X2luZm9bUE9SVF9FXS5zdXBwb3J0 c19kcCB8fAo+ICAJCSAgICAgZGV2X3ByaXYtPnZidC5kZGlfcG9ydF9pbmZvW1BPUlRfRV0uc3Vw cG9ydHNfZHZpIHx8Cj4gIAkJICAgICBkZXZfcHJpdi0+dmJ0LmRkaV9wb3J0X2luZm9bUE9SVF9F XS5zdXBwb3J0c19oZG1pKSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBpbmRleCA5ZTQxMGIw NGY5OWQuLjdmNmNlYjAwNTc0ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+IEBAIC0z NDYsMTAgKzM0NiwxMCBAQCBpbnRlbF9kcF9zZXRfc291cmNlX3JhdGVzKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHApCj4gIAkJCW1heF9yYXRlID0gY25sX21heF9zb3VyY2VfcmF0ZShpbnRlbF9k cCk7Cj4gIAkJZWxzZQo+ICAJCQltYXhfcmF0ZSA9IGljbF9tYXhfc291cmNlX3JhdGUoaW50ZWxf ZHApOwo+IC0JfSBlbHNlIGlmIChJU19HRU45X0xQKGRldl9wcml2KSkgewo+ICsJfSBlbHNlIGlm IChHVF9HRU45X0xQKGRldl9wcml2KSkgewo+ICAJCXNvdXJjZV9yYXRlcyA9IGJ4dF9yYXRlczsK PiAgCQlzaXplID0gQVJSQVlfU0laRShieHRfcmF0ZXMpOwo+IC0JfSBlbHNlIGlmIChJU19HRU45 X0JDKGRldl9wcml2KSkgewo+ICsJfSBlbHNlIGlmIChHVF9HRU45X0JDKGRldl9wcml2KSkgewo+ ICAJCXNvdXJjZV9yYXRlcyA9IHNrbF9yYXRlczsKPiAgCQlzaXplID0gQVJSQVlfU0laRShza2xf cmF0ZXMpOwo+ICAJfSBlbHNlIGlmICgoSVNfSEFTV0VMTChkZXZfcHJpdikgJiYgIUlTX0hTV19V TFgoZGV2X3ByaXYpKSB8fAo+IEBAIC04ODQsNyArODg0LDcgQEAgdm9pZCBpbnRlbF9wb3dlcl9z ZXF1ZW5jZXJfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7Cj4gIAo+ICAJaWYgKFdBUk5fT04oIUlTX1ZBTExF WVZJRVcoZGV2X3ByaXYpICYmICFJU19DSEVSUllWSUVXKGRldl9wcml2KSAmJgo+IC0JCSAgICAh SVNfR0VOOV9MUChkZXZfcHJpdikpKQo+ICsJCSAgICAhR1RfR0VOOV9MUChkZXZfcHJpdikpKQo+ ICAJCXJldHVybjsKPiAgCj4gIAkvKgo+IEBAIC05MDUsNyArOTA1LDcgQEAgdm9pZCBpbnRlbF9w b3dlcl9zZXF1ZW5jZXJfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ICAJCWlmIChlbmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9FRFApCj4gIAkJCWNvbnRpbnVl Owo+ICAKPiAtCQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gKwkJaWYgKEdUX0dFTjlfTFAo ZGV2X3ByaXYpKQo+ICAJCQlpbnRlbF9kcC0+cHBzX3Jlc2V0ID0gdHJ1ZTsKPiAgCQllbHNlCj4g IAkJCWludGVsX2RwLT5wcHNfcGlwZSA9IElOVkFMSURfUElQRTsKPiBAQCAtOTI4LDcgKzkyOCw3 IEBAIHN0YXRpYyB2b2lkIGludGVsX3Bwc19nZXRfcmVnaXN0ZXJzKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAsCj4gIAo+ICAJbWVtc2V0KHJlZ3MsIDAsIHNpemVvZigqcmVncykpOwo+ICAKPiAt CWlmIChJU19HRU45X0xQKGRldl9wcml2KSkKPiArCWlmIChHVF9HRU45X0xQKGRldl9wcml2KSkK PiAgCQlwcHNfaWR4ID0gYnh0X3Bvd2VyX3NlcXVlbmNlcl9pZHgoaW50ZWxfZHApOwo+ICAJZWxz ZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikp Cj4gIAkJcHBzX2lkeCA9IHZsdl9wb3dlcl9zZXF1ZW5jZXJfcGlwZShpbnRlbF9kcCk7Cj4gQEAg LTkzNyw3ICs5MzcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wcHNfZ2V0X3JlZ2lzdGVycyhzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAJcmVncy0+cHBfc3RhdCA9IFBQX1NUQVRVUyhwcHNf aWR4KTsKPiAgCXJlZ3MtPnBwX29uID0gUFBfT05fREVMQVlTKHBwc19pZHgpOwo+ICAJcmVncy0+ cHBfb2ZmID0gUFBfT0ZGX0RFTEFZUyhwcHNfaWR4KTsKPiAtCWlmICghSVNfR0VOOV9MUChkZXZf cHJpdikgJiYgIUhBU19QQ0hfQ05QKGRldl9wcml2KSAmJgo+ICsJaWYgKCFHVF9HRU45X0xQKGRl dl9wcml2KSAmJiAhSEFTX1BDSF9DTlAoZGV2X3ByaXYpICYmCj4gIAkgICAgIUhBU19QQ0hfSUNQ KGRldl9wcml2KSkKPiAgCQlyZWdzLT5wcF9kaXYgPSBQUF9ESVZJU09SKHBwc19pZHgpOwo+ICB9 Cj4gQEAgLTM2NDgsNyArMzY0OCw3IEBAIGludGVsX2RwX3NldF9zaWduYWxfbGV2ZWxzKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAl1aW50MzJfdCBzaWduYWxfbGV2ZWxzLCBtYXNrID0g MDsKPiAgCXVpbnQ4X3QgdHJhaW5fc2V0ID0gaW50ZWxfZHAtPnRyYWluX3NldFswXTsKPiAgCj4g LQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkg ewo+ICsJaWYgKEdUX0dFTjlfTFAoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihkZXZfcHJpdikgPj0g MTApIHsKPiAgCQlzaWduYWxfbGV2ZWxzID0gYnh0X3NpZ25hbF9sZXZlbHMoaW50ZWxfZHApOwo+ ICAJfSBlbHNlIGlmIChIQVNfRERJKGRldl9wcml2KSkgewo+ICAJCXNpZ25hbF9sZXZlbHMgPSBk ZGlfc2lnbmFsX2xldmVscyhpbnRlbF9kcCk7Cj4gQEAgLTUwMjYsOSArNTAyNiw5IEBAIGJvb2wg aW50ZWxfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl cikKPiAgCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkKPiAgCQlyZXR1cm4gaWNs X2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQoZW5jb2Rlcik7Cj4gLQllbHNlIGlmIChHVF9HRU4oZGV2 X3ByaXYsIDEwKSB8fCBJU19HRU45X0JDKGRldl9wcml2KSkKPiArCWVsc2UgaWYgKEdUX0dFTihk ZXZfcHJpdiwgMTApIHx8IEdUX0dFTjlfQkMoZGV2X3ByaXYpKQo+ICAJCXJldHVybiBzcHRfZGln aXRhbF9wb3J0X2Nvbm5lY3RlZChlbmNvZGVyKTsKPiAtCWVsc2UgaWYgKElTX0dFTjlfTFAoZGV2 X3ByaXYpKQo+ICsJZWxzZSBpZiAoR1RfR0VOOV9MUChkZXZfcHJpdikpCj4gIAkJcmV0dXJuIGJ4 dF9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKGVuY29kZXIpOwo+ICAJZWxzZSBpZiAoR1RfR0VOKGRl dl9wcml2LCA4KSkKPiAgCQlyZXR1cm4gYmR3X2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQoZW5jb2Rl cik7Cj4gQEAgLTU3ODAsNyArNTc4MCw3IEBAIGludGVsX3Bwc19yZWFkb3V0X2h3X3N0YXRlKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHN0cnVjdCBlZHBfcG93ZXJfc2VxICpzZXEpCj4gIAo+ ICAJcHBfb24gPSBJOTE1X1JFQUQocmVncy5wcF9vbik7Cj4gIAlwcF9vZmYgPSBJOTE1X1JFQUQo cmVncy5wcF9vZmYpOwo+IC0JaWYgKCFJU19HRU45X0xQKGRldl9wcml2KSAmJiAhSEFTX1BDSF9D TlAoZGV2X3ByaXYpICYmCj4gKwlpZiAoIUdUX0dFTjlfTFAoZGV2X3ByaXYpICYmICFIQVNfUENI X0NOUChkZXZfcHJpdikgJiYKPiAgCSAgICAhSEFTX1BDSF9JQ1AoZGV2X3ByaXYpKSB7Cj4gIAkJ STkxNV9XUklURShyZWdzLnBwX2N0cmwsIHBwX2N0bCk7Cj4gIAkJcHBfZGl2ID0gSTkxNV9SRUFE KHJlZ3MucHBfZGl2KTsKPiBAQCAtNTc5OSw3ICs1Nzk5LDcgQEAgaW50ZWxfcHBzX3JlYWRvdXRf aHdfc3RhdGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgc3RydWN0IGVkcF9wb3dlcl9zZXEg KnNlcSkKPiAgCXNlcS0+dDEwID0gKHBwX29mZiAmIFBBTkVMX1BPV0VSX0RPV05fREVMQVlfTUFT SykgPj4KPiAgCQkgICBQQU5FTF9QT1dFUl9ET1dOX0RFTEFZX1NISUZUOwo+ICAKPiAtCWlmIChJ U19HRU45X0xQKGRldl9wcml2KSB8fCBIQVNfUENIX0NOUChkZXZfcHJpdikgfHwKPiArCWlmIChH VF9HRU45X0xQKGRldl9wcml2KSB8fCBIQVNfUENIX0NOUChkZXZfcHJpdikgfHwKPiAgCSAgICBI QVNfUENIX0lDUChkZXZfcHJpdikpIHsKPiAgCQlzZXEtPnQxMV90MTIgPSAoKHBwX2N0bCAmIEJY VF9QT1dFUl9DWUNMRV9ERUxBWV9NQVNLKSA+Pgo+ICAJCQkJQlhUX1BPV0VSX0NZQ0xFX0RFTEFZ X1NISUZUKSAqIDEwMDA7Cj4gQEAgLTU5NzEsNyArNTk3MSw3IEBAIGludGVsX2RwX2luaXRfcGFu ZWxfcG93ZXJfc2VxdWVuY2VyX3JlZ2lzdGVycyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ ICAJCSAoc2VxLT50MTAgPDwgUEFORUxfUE9XRVJfRE9XTl9ERUxBWV9TSElGVCk7Cj4gIAkvKiBD b21wdXRlIHRoZSBkaXZpc29yIGZvciB0aGUgcHAgY2xvY2ssIHNpbXBseSBtYXRjaCB0aGUgQnNw ZWMKPiAgCSAqIGZvcm11bGEuICovCj4gLQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikgfHwgSEFT X1BDSF9DTlAoZGV2X3ByaXYpIHx8Cj4gKwlpZiAoR1RfR0VOOV9MUChkZXZfcHJpdikgfHwgSEFT X1BDSF9DTlAoZGV2X3ByaXYpIHx8Cj4gIAkgICAgSEFTX1BDSF9JQ1AoZGV2X3ByaXYpKSB7Cj4g IAkJcHBfZGl2ID0gSTkxNV9SRUFEKHJlZ3MucHBfY3RybCk7Cj4gIAkJcHBfZGl2ICY9IH5CWFRf UE9XRVJfQ1lDTEVfREVMQVlfTUFTSzsKPiBAQCAtNjAwOCw3ICs2MDA4LDcgQEAgaW50ZWxfZHBf aW5pdF9wYW5lbF9wb3dlcl9zZXF1ZW5jZXJfcmVnaXN0ZXJzKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHAsCj4gIAo+ICAJSTkxNV9XUklURShyZWdzLnBwX29uLCBwcF9vbik7Cj4gIAlJOTE1X1dS SVRFKHJlZ3MucHBfb2ZmLCBwcF9vZmYpOwo+IC0JaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpIHx8 IEhBU19QQ0hfQ05QKGRldl9wcml2KSB8fAo+ICsJaWYgKEdUX0dFTjlfTFAoZGV2X3ByaXYpIHx8 IEhBU19QQ0hfQ05QKGRldl9wcml2KSB8fAo+ICAJICAgIEhBU19QQ0hfSUNQKGRldl9wcml2KSkK PiAgCQlJOTE1X1dSSVRFKHJlZ3MucHBfY3RybCwgcHBfZGl2KTsKPiAgCWVsc2UKPiBAQCAtNjAx Nyw3ICs2MDE3LDcgQEAgaW50ZWxfZHBfaW5pdF9wYW5lbF9wb3dlcl9zZXF1ZW5jZXJfcmVnaXN0 ZXJzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAlEUk1fREVCVUdfS01TKCJwYW5lbCBw b3dlciBzZXF1ZW5jZXIgcmVnaXN0ZXIgc2V0dGluZ3M6IFBQX09OICUjeCwgUFBfT0ZGICUjeCwg UFBfRElWICUjeFxuIiwKPiAgCQkgICAgICBJOTE1X1JFQUQocmVncy5wcF9vbiksCj4gIAkJICAg ICAgSTkxNV9SRUFEKHJlZ3MucHBfb2ZmKSwKPiAtCQkgICAgICAoSVNfR0VOOV9MUChkZXZfcHJp dikgfHwgSEFTX1BDSF9DTlAoZGV2X3ByaXYpICB8fAo+ICsJCSAgICAgIChHVF9HRU45X0xQKGRl dl9wcml2KSB8fCBIQVNfUENIX0NOUChkZXZfcHJpdikgIHx8Cj4gIAkJICAgICAgIEhBU19QQ0hf SUNQKGRldl9wcml2KSkgPwo+ICAJCSAgICAgIChJOTE1X1JFQUQocmVncy5wcF9jdHJsKSAmIEJY VF9QT1dFUl9DWUNMRV9ERUxBWV9NQVNLKSA6Cj4gIAkJICAgICAgSTkxNV9SRUFEKHJlZ3MucHBf ZGl2KSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMKPiBpbmRleCA4YjcxZDY0ZWJk OWQuLjliZjhiODZjNjBkZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcF9tc3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jCj4g QEAgLTk4LDcgKzk4LDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfZHBfbXN0X2NvbXB1dGVfY29uZmln KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAKPiAgCXBpcGVfY29uZmlnLT5kcF9t X24udHUgPSBzbG90czsKPiAgCj4gLQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gKwlpZiAo R1RfR0VOOV9MUChkZXZfcHJpdikpCj4gIAkJcGlwZV9jb25maWctPmxhbmVfbGF0X29wdGltX21h c2sgPQo+ICAJCQlieHRfZGRpX3BoeV9jYWxjX2xhbmVfbGF0X29wdGltX21hc2socGlwZV9jb25m aWctPmxhbmVfY291bnQpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHBsbF9tZ3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMK PiBpbmRleCA5MDFlMTUwNjNiMjQuLjVkNzU2ZmRkMWU3ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHBsbF9tZ3IuYwo+IEBAIC0zMjEyLDkgKzMyMTIsOSBAQCB2b2lkIGludGVsX3No YXJlZF9kcGxsX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQlkcGxsX21nciA9ICZp Y2xfcGxsX21ncjsKPiAgCWVsc2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKQo+ICAJCWRw bGxfbWdyID0gJmNubF9wbGxfbWdyOwo+IC0JZWxzZSBpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikp Cj4gKwllbHNlIGlmIChHVF9HRU45X0JDKGRldl9wcml2KSkKPiAgCQlkcGxsX21nciA9ICZza2xf cGxsX21ncjsKPiAtCWVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAo R1RfR0VOOV9MUChkZXZfcHJpdikpCj4gIAkJZHBsbF9tZ3IgPSAmYnh0X3BsbF9tZ3I7Cj4gIAll bHNlIGlmIChIQVNfRERJKGRldl9wcml2KSkKPiAgCQlkcGxsX21nciA9ICZoc3dfcGxsX21ncjsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwo+IGluZGV4IDU0OWUzZGMwZTQ1Ny4uN2VkOTc2YWRh OTc5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMKPiBAQCAtNDQ0LDcgKzQ0NCw3IEBA IHN0YXRpYyBpbnQgZmluZF9jb21wcmVzc2lvbl90aHJlc2hvbGQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ICAJICogcmVzZXJ2ZWQgcmFuZ2Ugc2l6ZSwgc28gaXQgYWx3YXlz IGFzc3VtZXMgdGhlIG1heGltdW0gKDhtYikgaXMgdXNlZC4KPiAgCSAqIElmIHdlIGVuYWJsZSBG QkMgdXNpbmcgYSBDRkIgb24gdGhhdCBtZW1vcnkgcmFuZ2Ugd2UnbGwgZ2V0IEZJRk8KPiAgCSAq IHVuZGVycnVucywgZXZlbiBpZiB0aGF0IHJhbmdlIGlzIG5vdCByZXNlcnZlZCBieSB0aGUgQklP Uy4gKi8KPiAtCWlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpIHx8IElTX0dFTjlfQkMoZGV2X3By aXYpKQo+ICsJaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikgfHwgR1RfR0VOOV9CQyhkZXZfcHJp dikpCj4gIAkJZW5kID0gcmVzb3VyY2Vfc2l6ZSgmZGV2X3ByaXYtPmRzbSkgLSA4ICogMTAyNCAq IDEwMjQ7Cj4gIAllbHNlCj4gIAkJZW5kID0gVTY0X01BWDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2Z3LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWNfZncuYwo+IGluZGV4IDlmZGNlNDc3NTVlMi4uNTg2ZjQzNTYzM2M3IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19mdy5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2Z3LmMKPiBAQCAtMTA5LDcgKzEwOSw3IEBAIHN0YXRpYyB2 b2lkIGd1Y19wcmVwYXJlX3hmZXIoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICAJCQkJICAgICBH VUNfRU5BQkxFX1JFQURfQ0FDSEVfRk9SX1dPUENNX0RBVEEgfAo+ICAJCQkJICAgICBHVUNfRU5B QkxFX01JQV9DTE9DS19HQVRJTkcpOwo+ICAKPiAtCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkK PiArCWlmIChHVF9HRU45X0xQKGRldl9wcml2KSkKPiAgCQlJOTE1X1dSSVRFKEdFTjlMUF9HVF9Q TV9DT05GSUcsIEdUX0RPT1JCRUxMX0VOQUJMRSk7Cj4gIAllbHNlCj4gIAkJSTkxNV9XUklURShH RU45X0dUX1BNX0NPTkZJRywgR1RfRE9PUkJFTExfRU5BQkxFKTsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaGRtaS5jCj4gaW5kZXggYmM1Yjk0NWY5YTcxLi5mOTU0YzI4ODNmOTIgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4gQEAgLTE1MjksNyArMTUyOSw3IEBAIGhkbWlfcG9ydF9j bG9ja192YWxpZChzdHJ1Y3QgaW50ZWxfaGRtaSAqaGRtaSwKPiAgCQlyZXR1cm4gTU9ERV9DTE9D S19ISUdIOwo+ICAKPiAgCS8qIEJYVCBEUExMIGNhbid0IGdlbmVyYXRlIDIyMy0yNDAgTUh6ICov Cj4gLQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikgJiYgY2xvY2sgPiAyMjMzMzMgJiYgY2xvY2sg PCAyNDAwMDApCj4gKwlpZiAoR1RfR0VOOV9MUChkZXZfcHJpdikgJiYgY2xvY2sgPiAyMjMzMzMg JiYgY2xvY2sgPCAyNDAwMDApCj4gIAkJcmV0dXJuIE1PREVfQ0xPQ0tfUkFOR0U7Cj4gIAo+ICAJ LyogQ0hWIERQTEwgY2FuJ3QgZ2VuZXJhdGUgMjE2LTI0MCBNSHogKi8KPiBAQCAtMjMyMSw3ICsy MzIxLDcgQEAgc3RhdGljIHU4IGludGVsX2hkbWlfZGRjX3BpbihzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gIAo+ICAJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+ICAJ CWRkY19waW4gPSBjaHZfcG9ydF90b19kZGNfcGluKGRldl9wcml2LCBwb3J0KTsKPiAtCWVsc2Ug aWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoR1RfR0VOOV9MUChkZXZfcHJp dikpCj4gIAkJZGRjX3BpbiA9IGJ4dF9wb3J0X3RvX2RkY19waW4oZGV2X3ByaXYsIHBvcnQpOwo+ ICAJZWxzZSBpZiAoSEFTX1BDSF9DTlAoZGV2X3ByaXYpKQo+ICAJCWRkY19waW4gPSBjbnBfcG9y dF90b19kZGNfcGluKGRldl9wcml2LCBwb3J0KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaTJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9pMmMuYwo+ IGluZGV4IDMzZDg3YWI5M2ZkZC4uODZkODk4ODQ0YTk3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2kyYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaTJjLmMKPiBAQCAtOTMsOSArOTMsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGdtYnVzX3Bp biAqZ2V0X2dtYnVzX3BpbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJ cmV0dXJuICZnbWJ1c19waW5zX2ljcFtwaW5dOwo+ICAJZWxzZSBpZiAoSEFTX1BDSF9DTlAoZGV2 X3ByaXYpKQo+ICAJCXJldHVybiAmZ21idXNfcGluc19jbnBbcGluXTsKPiAtCWVsc2UgaWYgKElT X0dFTjlfTFAoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoR1RfR0VOOV9MUChkZXZfcHJpdikpCj4g IAkJcmV0dXJuICZnbWJ1c19waW5zX2J4dFtwaW5dOwo+IC0JZWxzZSBpZiAoSVNfR0VOOV9CQyhk ZXZfcHJpdikpCj4gKwllbHNlIGlmIChHVF9HRU45X0JDKGRldl9wcml2KSkKPiAgCQlyZXR1cm4g JmdtYnVzX3BpbnNfc2tsW3Bpbl07Cj4gIAllbHNlIGlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYp KQo+ICAJCXJldHVybiAmZ21idXNfcGluc19iZHdbcGluXTsKPiBAQCAtMTEyLDkgKzExMiw5IEBA IGJvb2wgaW50ZWxfZ21idXNfaXNfdmFsaWRfcGluKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiAgCQlzaXplID0gQVJSQVlfU0laRShnbWJ1c19waW5zX2ljcCk7Cj4gIAllbHNl IGlmIChIQVNfUENIX0NOUChkZXZfcHJpdikpCj4gIAkJc2l6ZSA9IEFSUkFZX1NJWkUoZ21idXNf cGluc19jbnApOwo+IC0JZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gKwllbHNlIGlm IChHVF9HRU45X0xQKGRldl9wcml2KSkKPiAgCQlzaXplID0gQVJSQVlfU0laRShnbWJ1c19waW5z X2J4dCk7Cj4gLQllbHNlIGlmIChJU19HRU45X0JDKGRldl9wcml2KSkKPiArCWVsc2UgaWYgKEdU X0dFTjlfQkMoZGV2X3ByaXYpKQo+ICAJCXNpemUgPSBBUlJBWV9TSVpFKGdtYnVzX3BpbnNfc2ts KTsKPiAgCWVsc2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4gIAkJc2l6ZSA9IEFSUkFZ X1NJWkUoZ21idXNfcGluc19iZHcpOwo+IEBAIC01NzYsNyArNTc2LDcgQEAgZG9fZ21idXNfeGZl cihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsIHN0cnVjdCBpMmNfbXNnICptc2dzLCBpbnQg bnVtLAo+ICAJaW50IHJldCA9IDA7Cj4gIAo+ICAJLyogRGlzcGxheSBXQSAjMDg2ODogc2tsLGJ4 dCxrYmwsY2ZsLGdsayxjbmwgKi8KPiAtCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkKPiArCWlm IChHVF9HRU45X0xQKGRldl9wcml2KSkKPiAgCQlieHRfZ21idXNfY2xvY2tfZ2F0aW5nKGRldl9w cml2LCBmYWxzZSk7Cj4gIAllbHNlIGlmIChIQVNfUENIX1NQVChkZXZfcHJpdikgfHwKPiAgCQkg SEFTX1BDSF9LQlAoZGV2X3ByaXYpIHx8IEhBU19QQ0hfQ05QKGRldl9wcml2KSkKPiBAQCAtNjg2 LDcgKzY4Niw3IEBAIGRvX2dtYnVzX3hmZXIoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCBz dHJ1Y3QgaTJjX21zZyAqbXNncywgaW50IG51bSwKPiAgCj4gIG91dDoKPiAgCS8qIERpc3BsYXkg V0EgIzA4Njg6IHNrbCxieHQsa2JsLGNmbCxnbGssY25sICovCj4gLQlpZiAoSVNfR0VOOV9MUChk ZXZfcHJpdikpCj4gKwlpZiAoR1RfR0VOOV9MUChkZXZfcHJpdikpCj4gIAkJYnh0X2dtYnVzX2Ns b2NrX2dhdGluZyhkZXZfcHJpdiwgdHJ1ZSk7Cj4gIAllbHNlIGlmIChIQVNfUENIX1NQVChkZXZf cHJpdikgfHwKPiAgCQkgSEFTX1BDSF9LQlAoZGV2X3ByaXYpIHx8IEhBU19QQ0hfQ05QKGRldl9w cml2KSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jCj4gaW5kZXggODIwMTc3NGMyYzBmLi42 YjkwNzZmZDU4MzYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9j cy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jCj4gQEAgLTE3OCwx MiArMTc4LDEyIEBAIHN0YXRpYyBib29sIGdldF9tb2NzX3NldHRpbmdzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPiAgewo+ICAJYm9vbCByZXN1bHQgPSBmYWxzZTsKPiAgCj4g LQlpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikgfHwgSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikgfHwK PiArCWlmIChHVF9HRU45X0JDKGRldl9wcml2KSB8fCBJU19DQU5OT05MQUtFKGRldl9wcml2KSB8 fAo+ICAJICAgIElTX0lDRUxBS0UoZGV2X3ByaXYpKSB7Cj4gIAkJdGFibGUtPnNpemUgID0gQVJS QVlfU0laRShza3lsYWtlX21vY3NfdGFibGUpOwo+ICAJCXRhYmxlLT50YWJsZSA9IHNreWxha2Vf bW9jc190YWJsZTsKPiAgCQlyZXN1bHQgPSB0cnVlOwo+IC0JfSBlbHNlIGlmIChJU19HRU45X0xQ KGRldl9wcml2KSkgewo+ICsJfSBlbHNlIGlmIChHVF9HRU45X0xQKGRldl9wcml2KSkgewo+ICAJ CXRhYmxlLT5zaXplICA9IEFSUkFZX1NJWkUoYnJveHRvbl9tb2NzX3RhYmxlKTsKPiAgCQl0YWJs ZS0+dGFibGUgPSBicm94dG9uX21vY3NfdGFibGU7Cj4gIAkJcmVzdWx0ID0gdHJ1ZTsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKPiBpbmRleCBlNjU4OTA0YzU1NzYuLjc4ZDViOWRhM2Ew MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+IEBAIC0xODM5LDcgKzE4Mzks NyBAQCBpbnRlbF9wYW5lbF9pbml0X2JhY2tsaWdodF9mdW5jcyhzdHJ1Y3QgaW50ZWxfcGFuZWwg KnBhbmVsKQo+ICAJICAgIGludGVsX2RzaV9kY3NfaW5pdF9iYWNrbGlnaHRfZnVuY3MoY29ubmVj dG9yKSA9PSAwKQo+ICAJCXJldHVybjsKPiAgCj4gLQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikp IHsKPiArCWlmIChHVF9HRU45X0xQKGRldl9wcml2KSkgewo+ICAJCXBhbmVsLT5iYWNrbGlnaHQu c2V0dXAgPSBieHRfc2V0dXBfYmFja2xpZ2h0Owo+ICAJCXBhbmVsLT5iYWNrbGlnaHQuZW5hYmxl ID0gYnh0X2VuYWJsZV9iYWNrbGlnaHQ7Cj4gIAkJcGFuZWwtPmJhY2tsaWdodC5kaXNhYmxlID0g Ynh0X2Rpc2FibGVfYmFja2xpZ2h0Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IGluZGV4IDc0 ZTE0ZDg4NDhmOC4uM2EzMjE2MDBiYjc4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3BtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4g QEAgLTM2MDIsNyArMzYwMiw3IEBAIHN0YXRpYyBib29sIHNrbF9uZWVkc19tZW1vcnlfYndfd2Eo c3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtPmJhc2UuZGV2KTsKPiAgCj4gLQlp ZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikgfHwgSVNfQlJPWFRPTihkZXZfcHJpdikpCj4gKwlpZiAo R1RfR0VOOV9CQyhkZXZfcHJpdikgfHwgSVNfQlJPWFRPTihkZXZfcHJpdikpCj4gIAkJcmV0dXJu IHRydWU7Cj4gIAo+ICAJcmV0dXJuIGZhbHNlOwo+IEBAIC0zNjExLDcgKzM2MTEsNyBAQCBzdGF0 aWMgYm9vbCBza2xfbmVlZHNfbWVtb3J5X2J3X3dhKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUg KnN0YXRlKQo+ICBzdGF0aWMgYm9vbAo+ICBpbnRlbF9oYXNfc2FndihzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAtCXJldHVybiAoSVNfR0VOOV9CQyhkZXZfcHJpdikg fHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkgJiYKPiArCXJldHVybiAoR1RfR0VOOV9CQyhk ZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkgJiYKPiAgCQlkZXZfcHJpdi0+ c2Fndl9zdGF0dXMgIT0gSTkxNV9TQUdWX05PVF9DT05UUk9MTEVEOwo+ICB9Cj4gIAo+IEBAIC02 ODk0LDcgKzY4OTQsNyBAQCBzdGF0aWMgYm9vbCBzYW5pdGl6ZV9yYzYoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUpCj4gIAkJaW5mby0+aGFzX3JjNiA9IDA7Cj4gIAo+ICAJaWYgKGluZm8t Pmhhc19yYzYgJiYKPiAtCSAgICBJU19HRU45X0xQKGk5MTUpICYmICFieHRfY2hlY2tfYmlvc19y YzZfc2V0dXAoaTkxNSkpIHsKPiArCSAgICBHVF9HRU45X0xQKGk5MTUpICYmICFieHRfY2hlY2tf Ymlvc19yYzZfc2V0dXAoaTkxNSkpIHsKPiAgCQlEUk1fSU5GTygiUkM2IGRpc2FibGVkIGJ5IEJJ T1NcbiIpOwo+ICAJCWluZm8tPmhhc19yYzYgPSAwOwo+ICAJfQo+IEBAIC02OTE4LDcgKzY5MTgs NyBAQCBzdGF0aWMgdm9pZCBnZW42X2luaXRfcnBzX2ZyZXF1ZW5jaWVzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgCS8qIEFsbCBvZiB0aGVzZSB2YWx1ZXMgYXJlIGluIHVu aXRzIG9mIDUwTUh6ICovCj4gIAo+ICAJLyogc3RhdGljIHZhbHVlcyBmcm9tIEhXOiBSUDAgPiBS UDEgPiBSUG4gKG1pbl9mcmVxKSAqLwo+IC0JaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7Cj4g KwlpZiAoR1RfR0VOOV9MUChkZXZfcHJpdikpIHsKPiAgCQl1MzIgcnBfc3RhdGVfY2FwID0gSTkx NV9SRUFEKEJYVF9SUF9TVEFURV9DQVApOwo+ICAJCXJwcy0+cnAwX2ZyZXEgPSAocnBfc3RhdGVf Y2FwID4+IDE2KSAmIDB4ZmY7Cj4gIAkJcnBzLT5ycDFfZnJlcSA9IChycF9zdGF0ZV9jYXAgPj4g IDgpICYgMHhmZjsKPiBAQCAtNjkzNCw3ICs2OTM0LDcgQEAgc3RhdGljIHZvaWQgZ2VuNl9pbml0 X3Jwc19mcmVxdWVuY2llcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ ICAJcnBzLT5lZmZpY2llbnRfZnJlcSA9IHJwcy0+cnAxX2ZyZXE7Cj4gIAlpZiAoSVNfSEFTV0VM TChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSB8fAo+IC0JICAgIElTX0dFTjlf QkMoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTApIHsKPiArCSAgICBHVF9H RU45X0JDKGRldl9wcml2KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwKSB7Cj4gIAkJdTMy IGRkY2Nfc3RhdHVzID0gMDsKPiAgCj4gIAkJaWYgKHNhbmR5YnJpZGdlX3Bjb2RlX3JlYWQoZGV2 X3ByaXYsCj4gQEAgLTY5NDcsNyArNjk0Nyw3IEBAIHN0YXRpYyB2b2lkIGdlbjZfaW5pdF9ycHNf ZnJlcXVlbmNpZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCQkJCXJw cy0+bWF4X2ZyZXEpOwo+ICAJfQo+ICAKPiAtCWlmIChJU19HRU45X0JDKGRldl9wcml2KSB8fCBJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDEwKSB7Cj4gKwlpZiAoR1RfR0VOOV9CQyhkZXZfcHJpdikg fHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkgewo+ICAJCS8qIFN0b3JlIHRoZSBmcmVxdWVu Y3kgdmFsdWVzIGluIDE2LjY2IE1IWiB1bml0cywgd2hpY2ggaXMKPiAgCQkgKiB0aGUgbmF0dXJh bCBoYXJkd2FyZSB1bml0IGZvciBTS0wKPiAgCQkgKi8KPiBAQCAtNzI4NSw3ICs3Mjg1LDcgQEAg c3RhdGljIHZvaWQgZ2VuNl91cGRhdGVfcmluZ19mcmVxKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgCj4gIAltaW5fZ3B1X2ZyZXEgPSBycHMtPm1pbl9mcmVxOwo+ICAJbWF4 X2dwdV9mcmVxID0gcnBzLT5tYXhfZnJlcTsKPiAtCWlmIChJU19HRU45X0JDKGRldl9wcml2KSB8 fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwKSB7Cj4gKwlpZiAoR1RfR0VOOV9CQyhkZXZfcHJp dikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkgewo+ICAJCS8qIENvbnZlcnQgR1QgZnJl cXVlbmN5IHRvIDUwIEhaIHVuaXRzICovCj4gIAkJbWluX2dwdV9mcmVxIC89IEdFTjlfRlJFUV9T Q0FMRVI7Cj4gIAkJbWF4X2dwdV9mcmVxIC89IEdFTjlfRlJFUV9TQ0FMRVI7Cj4gQEAgLTczMDAs NyArNzMwMCw3IEBAIHN0YXRpYyB2b2lkIGdlbjZfdXBkYXRlX3JpbmdfZnJlcShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJY29uc3QgaW50IGRpZmYgPSBtYXhfZ3B1X2Zy ZXEgLSBncHVfZnJlcTsKPiAgCQl1bnNpZ25lZCBpbnQgaWFfZnJlcSA9IDAsIHJpbmdfZnJlcSA9 IDA7Cj4gIAo+IC0JCWlmIChJU19HRU45X0JDKGRldl9wcml2KSB8fCBJTlRFTF9HRU4oZGV2X3By aXYpID49IDEwKSB7Cj4gKwkJaWYgKEdUX0dFTjlfQkMoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihk ZXZfcHJpdikgPj0gMTApIHsKPiAgCQkJLyoKPiAgCQkJICogcmluZ19mcmVxID0gMiAqIEdULiBy aW5nX2ZyZXEgaXMgaW4gMTAwTUh6IHVuaXRzCj4gIAkJCSAqIE5vIGZsb29yIHJlcXVpcmVkIGZv ciByaW5nIGZyZXF1ZW5jeSBvbiBTS0wuCj4gQEAgLTk4ODUsNyArOTg4NSw3IEBAIHU2NCBpbnRl bF9yYzZfcmVzaWRlbmN5X25zKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAg CQl0aW1lX2h3ID0gdmx2X3Jlc2lkZW5jeV9yYXcoZGV2X3ByaXYsIHJlZyk7Cj4gIAl9IGVsc2Ug ewo+ICAJCS8qIDgzMy4zM25zIHVuaXRzIG9uIEdlbjlMUCwgMS4yOHVzIGVsc2V3aGVyZS4gKi8K PiAtCQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsKPiArCQlpZiAoR1RfR0VOOV9MUChkZXZf cHJpdikpIHsKPiAgCQkJbXVsID0gMTAwMDA7Cj4gIAkJCWRpdiA9IDEyOwo+ICAJCX0gZWxzZSB7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYwo+IGluZGV4IGIxNjRhMmM0 YjA1OC4uM2I3OGFmZTBhNzkwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3J1bnRpbWVfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRp bWVfcG0uYwo+IEBAIC01ODEsNyArNTgxLDcgQEAgc3RhdGljIHUzMiBnZW45X2RjX21hc2soc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJbWFzayA9IERDX1NUQVRFX0VOX1VQ VE9fREM1Owo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEpCj4gIAkJbWFzayB8PSBE Q19TVEFURV9FTl9VUFRPX0RDNiB8IERDX1NUQVRFX0VOX0RDOTsKPiAtCWVsc2UgaWYgKElTX0dF TjlfTFAoZGV2X3ByaXYpKQo+ICsJZWxzZSBpZiAoR1RfR0VOOV9MUChkZXZfcHJpdikpCj4gIAkJ bWFzayB8PSBEQ19TVEFURV9FTl9EQzk7Cj4gIAllbHNlCj4gIAkJbWFzayB8PSBEQ19TVEFURV9F Tl9VUFRPX0RDNjsKPiBAQCAtNzI1LDcgKzcyNSw3IEBAIHZvaWQgZ2VuOV9lbmFibGVfZGM1KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCURSTV9ERUJVR19LTVMoIkVuYWJs aW5nIERDNVxuIik7Cj4gIAo+ICAJLyogV2EgRGlzcGxheSAjMTE4Mzogc2tsLGtibCxjZmwgKi8K PiAtCWlmIChJU19HRU45X0JDKGRldl9wcml2KSkKPiArCWlmIChHVF9HRU45X0JDKGRldl9wcml2 KSkKPiAgCQlJOTE1X1dSSVRFKEdFTjhfQ0hJQ0tFTl9EQ1BSXzEsIEk5MTVfUkVBRChHRU44X0NI SUNLRU5fRENQUl8xKSB8Cj4gIAkJCSAgIFNLTF9TRUxFQ1RfQUxURVJOQVRFX0RDX0VYSVQpOwo+ ICAKPiBAQCAtNzQ5LDcgKzc0OSw3IEBAIHZvaWQgc2tsX2VuYWJsZV9kYzYoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJRFJNX0RFQlVHX0tNUygiRW5hYmxpbmcgREM2XG4i KTsKPiAgCj4gIAkvKiBXYSBEaXNwbGF5ICMxMTgzOiBza2wsa2JsLGNmbCAqLwo+IC0JaWYgKElT X0dFTjlfQkMoZGV2X3ByaXYpKQo+ICsJaWYgKEdUX0dFTjlfQkMoZGV2X3ByaXYpKQo+ICAJCUk5 MTVfV1JJVEUoR0VOOF9DSElDS0VOX0RDUFJfMSwgSTkxNV9SRUFEKEdFTjhfQ0hJQ0tFTl9EQ1BS XzEpIHwKPiAgCQkJICAgU0tMX1NFTEVDVF9BTFRFUk5BVEVfRENfRVhJVCk7Cj4gIAo+IEBAIC04 NDEsNyArODQxLDcgQEAgc3RhdGljIHZvaWQgZ2VuOV9kY19vZmZfcG93ZXJfd2VsbF9lbmFibGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAKPiAgCWdlbjlfYXNzZXJ0X2Ri dWZfZW5hYmxlZChkZXZfcHJpdik7Cj4gIAo+IC0JaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+ ICsJaWYgKEdUX0dFTjlfTFAoZGV2X3ByaXYpKQo+ICAJCWJ4dF92ZXJpZnlfZGRpX3BoeV9wb3dl cl93ZWxscyhkZXZfcHJpdik7Cj4gIH0KPiAgCj4gQEAgLTMwMjcsMTAgKzMwMjcsMTAgQEAgc3Rh dGljIHVpbnQzMl90IGdldF9hbGxvd2VkX2RjX21hc2soY29uc3Qgc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ICAJCSAqIHN1c3BlbmQvcmVzdW1lLCBzbyBhbGxvdyBpdCB1bmNv bmRpdGlvbmFsbHkuCj4gIAkJICovCj4gIAkJbWFzayA9IERDX1NUQVRFX0VOX0RDOTsKPiAtCX0g ZWxzZSBpZiAoR1RfR0VOKGRldl9wcml2LCAxMCkgfHwgSVNfR0VOOV9CQyhkZXZfcHJpdikpIHsK PiArCX0gZWxzZSBpZiAoR1RfR0VOKGRldl9wcml2LCAxMCkgfHwgR1RfR0VOOV9CQyhkZXZfcHJp dikpIHsKPiAgCQltYXhfZGMgPSAyOwo+ICAJCW1hc2sgPSAwOwo+IC0JfSBlbHNlIGlmIChJU19H RU45X0xQKGRldl9wcml2KSkgewo+ICsJfSBlbHNlIGlmIChHVF9HRU45X0xQKGRldl9wcml2KSkg ewo+ICAJCW1heF9kYyA9IDE7Cj4gIAkJbWFzayA9IERDX1NUQVRFX0VOX0RDOTsKPiAgCX0gZWxz ZSB7Cj4gQEAgLTMxNDMsNyArMzE0Myw3IEBAIGludCBpbnRlbF9wb3dlcl9kb21haW5zX2luaXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCWVyciA9IHNldF9wb3dlcl93 ZWxscyhwb3dlcl9kb21haW5zLCBnbGtfcG93ZXJfd2VsbHMpOwo+ICAJfSBlbHNlIGlmIChJU19C Uk9YVE9OKGRldl9wcml2KSkgewo+ICAJCWVyciA9IHNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21h aW5zLCBieHRfcG93ZXJfd2VsbHMpOwo+IC0JfSBlbHNlIGlmIChJU19HRU45X0JDKGRldl9wcml2 KSkgewo+ICsJfSBlbHNlIGlmIChHVF9HRU45X0JDKGRldl9wcml2KSkgewo+ICAJCWVyciA9IHNl dF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLCBza2xfcG93ZXJfd2VsbHMpOwo+ICAJfSBlbHNl IGlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkgewo+ICAJCWVyciA9IHNldF9wb3dlcl93ZWxs cyhwb3dlcl9kb21haW5zLCBjaHZfcG93ZXJfd2VsbHMpOwo+IEBAIC0zODE0LDkgKzM4MTQsOSBA QCB2b2lkIGludGVsX3Bvd2VyX2RvbWFpbnNfaW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsIGJvb2wgcmVzdW1lKQo+ICAJCWljbF9kaXNwbGF5X2NvcmVfaW5pdChkZXZf cHJpdiwgcmVzdW1lKTsKPiAgCX0gZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikpIHsK PiAgCQljbmxfZGlzcGxheV9jb3JlX2luaXQoZGV2X3ByaXYsIHJlc3VtZSk7Cj4gLQl9IGVsc2Ug aWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKSB7Cj4gKwl9IGVsc2UgaWYgKEdUX0dFTjlfQkMoZGV2 X3ByaXYpKSB7Cj4gIAkJc2tsX2Rpc3BsYXlfY29yZV9pbml0KGRldl9wcml2LCByZXN1bWUpOwo+ IC0JfSBlbHNlIGlmIChJU19HRU45X0xQKGRldl9wcml2KSkgewo+ICsJfSBlbHNlIGlmIChHVF9H RU45X0xQKGRldl9wcml2KSkgewo+ICAJCWJ4dF9kaXNwbGF5X2NvcmVfaW5pdChkZXZfcHJpdiwg cmVzdW1lKTsKPiAgCX0gZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPiAgCQlt dXRleF9sb2NrKCZwb3dlcl9kb21haW5zLT5sb2NrKTsKPiBAQCAtMzk0NSw5ICszOTQ1LDkgQEAg dm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX3N1c3BlbmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ICAJCWljbF9kaXNwbGF5X2NvcmVfdW5pbml0KGRldl9wcml2KTsKPiAgCWVs c2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKQo+ICAJCWNubF9kaXNwbGF5X2NvcmVfdW5p bml0KGRldl9wcml2KTsKPiAtCWVsc2UgaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKQo+ICsJZWxz ZSBpZiAoR1RfR0VOOV9CQyhkZXZfcHJpdikpCj4gIAkJc2tsX2Rpc3BsYXlfY29yZV91bmluaXQo ZGV2X3ByaXYpOwo+IC0JZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gKwllbHNlIGlm IChHVF9HRU45X0xQKGRldl9wcml2KSkKPiAgCQlieHRfZGlzcGxheV9jb3JlX3VuaW5pdChkZXZf cHJpdik7Cj4gIAo+ICAJcG93ZXJfZG9tYWlucy0+ZGlzcGxheV9jb3JlX3N1c3BlbmRlZCA9IHRy dWU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcGNtLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93b3BjbS5jCj4gaW5kZXggMzk4NzIwN2NkZGQwLi4w YTVjNjhhY2YzZGQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd29w Y20uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcGNtLmMKPiBAQCAtNzgs NyArNzgsNyBAQCB2b2lkIGludGVsX3dvcGNtX2luaXRfZWFybHkoc3RydWN0IGludGVsX3dvcGNt ICp3b3BjbSkKPiAgCj4gIHN0YXRpYyBpbmxpbmUgdTMyIGNvbnRleHRfcmVzZXJ2ZWRfc2l6ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgewo+IC0JaWYgKElTX0dFTjlfTFAoaTkx NSkpCj4gKwlpZiAoR1RfR0VOOV9MUChpOTE1KSkKPiAgCQlyZXR1cm4gQlhUX1dPUENNX1JDNl9D VFhfUkVTRVJWRUQ7Cj4gIAllbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTApCj4gIAkJcmV0 dXJuIENOTF9XT1BDTV9IV19DVFhfUkVTRVJWRUQ7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3dvcmthcm91bmRzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF93b3JrYXJvdW5kcy5jCj4gaW5kZXggZDcxNzYyMTNlM2NlLi5kYjg5OWNjNWM5ODEgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd29ya2Fyb3VuZHMuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcmthcm91bmRzLmMKPiBAQCAtMzAwLDcgKzMw MCw3IEBAIHN0YXRpYyBpbnQgZ2VuOV9jdHhfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJCSAgICBHRU45X1BSRUVNUFRfR1BHUFVfQ09NTUFO RF9MRVZFTCk7Cj4gIAo+ICAJLyogV2FDbGVhckhJWl9XTV9DSElDS0VOMzpieHQsZ2xrICovCj4g LQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gKwlpZiAoR1RfR0VOOV9MUChkZXZfcHJpdikp Cj4gIAkJV0FfU0VUX0JJVF9NQVNLRUQoR0VOOV9XTV9DSElDS0VOMywgR0VOOV9GQUNUT1JfSU5f Q0xSX1ZBTF9ISVopOwo+ICAKPiAgCXJldHVybiAwOwo+IEBAIC02MjAsNyArNjIwLDcgQEAgc3Rh dGljIHZvaWQgZ2VuOV9ndF93b3JrYXJvdW5kc19hcHBseShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gIAkJICAgQkRXX0RJU0FCTEVfSERDX0lOVkFMSURBVElPTik7Cj4gIAo+ ICAJLyogV2FQcm9ncmFtTDNTcWNSZWcxRGVmYXVsdEZvclBlcmY6Ynh0LGdsayAqLwo+IC0JaWYg KElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7Cj4gKwlpZiAoR1RfR0VOOV9MUChkZXZfcHJpdikpIHsK PiAgCQl1MzIgdmFsID0gSTkxNV9SRUFEKEdFTjhfTDNTUUNSRUcxKTsKPiAgCj4gIAkJdmFsICY9 IH5MM19QUklPX0NSRURJVFNfTUFTSzsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvdmx2X2RzaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvdmx2X2RzaS5jCj4gaW5kZXggYmFi ODdiNjJiYzJkLi5hMDYyMjFkY2EwZWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvdmx2X2RzaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvdmx2X2RzaS5jCj4gQEAg LTI5MCw3ICsyOTAsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9kc2lfY29tcHV0ZV9jb25maWcoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkvKiBEU0kgdXNlcyBzaG9ydCBwYWNrZXRz IGZvciBzeW5jIGV2ZW50cywgc28gY2xlYXIgbW9kZSBmbGFncyBmb3IgRFNJICovCj4gIAlhZGp1 c3RlZF9tb2RlLT5mbGFncyA9IDA7Cj4gIAo+IC0JaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7 Cj4gKwlpZiAoR1RfR0VOOV9MUChkZXZfcHJpdikpIHsKPiAgCQkvKiBFbmFibGUgRnJhbWUgdGlt ZSBzdGFtcCBiYXNlZCBzY2FubGluZSByZXBvcnRpbmcgKi8KPiAgCQlhZGp1c3RlZF9tb2RlLT5w cml2YXRlX2ZsYWdzIHw9Cj4gIAkJCUk5MTVfTU9ERV9GTEFHX0dFVF9TQ0FOTElORV9GUk9NX1RJ TUVTVEFNUDsKPiBAQCAtNTEwLDcgKzUxMCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9kZXZp Y2VfcmVhZHkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIAo+ICAJaWYgKElTX0dF TUlOSUxBS0UoZGV2X3ByaXYpKQo+ICAJCWdsa19kc2lfZGV2aWNlX3JlYWR5KGVuY29kZXIpOwo+ IC0JZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gKwllbHNlIGlmIChHVF9HRU45X0xQ KGRldl9wcml2KSkKPiAgCQlieHRfZHNpX2RldmljZV9yZWFkeShlbmNvZGVyKTsKPiAgCWVsc2UK PiAgCQl2bHZfZHNpX2RldmljZV9yZWFkeShlbmNvZGVyKTsKPiBAQCAtNTkxLDcgKzU5MSw3IEBA IHN0YXRpYyB2b2lkIHZsdl9kc2lfY2xlYXJfZGV2aWNlX3JlYWR5KHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyKQo+ICAJRFJNX0RFQlVHX0tNUygiXG4iKTsKPiAgCWZvcl9lYWNoX2RzaV9w b3J0KHBvcnQsIGludGVsX2RzaS0+cG9ydHMpIHsKPiAgCQkvKiBDb21tb24gYml0IGZvciBib3Ro IE1JUEkgUG9ydCBBICYgTUlQSSBQb3J0IEMgb24gVkxWL0NIViAqLwo+IC0JCWk5MTVfcmVnX3Qg cG9ydF9jdHJsID0gSVNfR0VOOV9MUChkZXZfcHJpdikgPwo+ICsJCWk5MTVfcmVnX3QgcG9ydF9j dHJsID0gR1RfR0VOOV9MUChkZXZfcHJpdikgPwo+ICAJCQlCWFRfTUlQSV9QT1JUX0NUUkwocG9y dCkgOiBNSVBJX1BPUlRfQ1RSTChQT1JUX0EpOwo+ICAJCXUzMiB2YWw7Cj4gIAo+IEBAIC02MTEs NyArNjExLDcgQEAgc3RhdGljIHZvaWQgdmx2X2RzaV9jbGVhcl9kZXZpY2VfcmVhZHkoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIAkJICogT24gVkxWL0NIViwgd2FpdCB0aWxsIENs b2NrIGxhbmVzIGFyZSBpbiBMUC0wMCBzdGF0ZSBmb3IgTUlQSQo+ICAJCSAqIFBvcnQgQSBvbmx5 LiBNSVBJIFBvcnQgQyBoYXMgbm8gc2ltaWxhciBiaXQgZm9yIGNoZWNraW5nLgo+ICAJCSAqLwo+ IC0JCWlmICgoSVNfR0VOOV9MUChkZXZfcHJpdikgfHwgcG9ydCA9PSBQT1JUX0EpICYmCj4gKwkJ aWYgKChHVF9HRU45X0xQKGRldl9wcml2KSB8fCBwb3J0ID09IFBPUlRfQSkgJiYKPiAgCQkgICAg aW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoZGV2X3ByaXYsCj4gIAkJCQkJICAgIHBvcnRfY3RybCwg QUZFX0xBVENIT1VULCAwLAo+ICAJCQkJCSAgICAzMCkpCj4gQEAgLTYzNyw3ICs2MzcsNyBAQCBz dGF0aWMgdm9pZCBpbnRlbF9kc2lfcG9ydF9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCj4gIAo+ICAJaWYgKGludGVsX2RzaS0+ZHVhbF9saW5rID09IERTSV9EVUFMX0xJTktf RlJPTlRfQkFDSykgewo+ICAJCXUzMiB0ZW1wOwo+IC0JCWlmIChJU19HRU45X0xQKGRldl9wcml2 KSkgewo+ICsJCWlmIChHVF9HRU45X0xQKGRldl9wcml2KSkgewo+ICAJCQlmb3JfZWFjaF9kc2lf cG9ydChwb3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Cj4gIAkJCQl0ZW1wID0gSTkxNV9SRUFEKE1J UElfQ1RSTChwb3J0KSk7Cj4gIAkJCQl0ZW1wICY9IH5CWFRfUElYRUxfT1ZFUkxBUF9DTlRfTUFT SyB8Cj4gQEAgLTY1NSw3ICs2NTUsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kc2lfcG9ydF9lbmFi bGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAl9Cj4gIAo+ICAJZm9yX2VhY2hf ZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewo+IC0JCWk5MTVfcmVnX3QgcG9ydF9j dHJsID0gSVNfR0VOOV9MUChkZXZfcHJpdikgPwo+ICsJCWk5MTVfcmVnX3QgcG9ydF9jdHJsID0g R1RfR0VOOV9MUChkZXZfcHJpdikgPwo+ICAJCQlCWFRfTUlQSV9QT1JUX0NUUkwocG9ydCkgOiBN SVBJX1BPUlRfQ1RSTChwb3J0KTsKPiAgCQl1MzIgdGVtcDsKPiAgCj4gQEAgLTY4OCw3ICs2ODgs NyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kc2lfcG9ydF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyKQo+ICAJZW51bSBwb3J0IHBvcnQ7Cj4gIAo+ICAJZm9yX2VhY2hfZHNpX3Bv cnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewo+IC0JCWk5MTVfcmVnX3QgcG9ydF9jdHJsID0g SVNfR0VOOV9MUChkZXZfcHJpdikgPwo+ICsJCWk5MTVfcmVnX3QgcG9ydF9jdHJsID0gR1RfR0VO OV9MUChkZXZfcHJpdikgPwo+ICAJCQlCWFRfTUlQSV9QT1JUX0NUUkwocG9ydCkgOiBNSVBJX1BP UlRfQ1RSTChwb3J0KTsKPiAgCQl1MzIgdGVtcDsKPiAgCj4gQEAgLTc2NSw3ICs3NjUsNyBAQCBz dGF0aWMgdm9pZCBpbnRlbF9kc2lfcHJlX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlciwKPiAgCSAqIFRoZSBCSU9TIG1heSBsZWF2ZSB0aGUgUExMIGluIGEgd29ua3kgc3RhdGUg d2hlcmUgaXQgZG9lc24ndAo+ICAJICogbG9jay4gSXQgbmVlZHMgdG8gYmUgZnVsbHkgcG93ZXJl ZCBkb3duIHRvIGZpeCBpdC4KPiAgCSAqLwo+IC0JaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7 Cj4gKwlpZiAoR1RfR0VOOV9MUChkZXZfcHJpdikpIHsKPiAgCQlieHRfZHNpX3BsbF9kaXNhYmxl KGVuY29kZXIpOwo+ICAJCWJ4dF9kc2lfcGxsX2VuYWJsZShlbmNvZGVyLCBwaXBlX2NvbmZpZyk7 Cj4gIAl9IGVsc2Ugewo+IEBAIC05MjcsNyArOTI3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHNp X3Bvc3RfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkJCXZhbCAm IH5NSVBJT19SU1RfQ1RSTCk7Cj4gIAl9Cj4gIAo+IC0JaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYp KSB7Cj4gKwlpZiAoR1RfR0VOOV9MUChkZXZfcHJpdikpIHsKPiAgCQlieHRfZHNpX3BsbF9kaXNh YmxlKGVuY29kZXIpOwo+ICAJfSBlbHNlIHsKPiAgCQl1MzIgdmFsOwo+IEBAIC05NzQsMTIgKzk3 NCwxMiBAQCBzdGF0aWMgYm9vbCBpbnRlbF9kc2lfZ2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLAo+ICAJICogY29uZmlndXJhdGlvbiwgb3RoZXJ3aXNlIGFjY2Vzc2lu ZyBEU0kgcmVnaXN0ZXJzIHdpbGwgaGFuZyB0aGUKPiAgCSAqIG1hY2hpbmUuIFNlZSBCU3BlYyBO b3J0aCBEaXNwbGF5IEVuZ2luZSByZWdpc3RlcnMvTUlQSVtCWFRdLgo+ICAJICovCj4gLQlpZiAo SVNfR0VOOV9MUChkZXZfcHJpdikgJiYgIWJ4dF9kc2lfcGxsX2lzX2VuYWJsZWQoZGV2X3ByaXYp KQo+ICsJaWYgKEdUX0dFTjlfTFAoZGV2X3ByaXYpICYmICFieHRfZHNpX3BsbF9pc19lbmFibGVk KGRldl9wcml2KSkKPiAgCQlnb3RvIG91dF9wdXRfcG93ZXI7Cj4gIAo+ICAJLyogWFhYOiB0aGlz IG9ubHkgd29ya3MgZm9yIG9uZSBEU0kgb3V0cHV0ICovCj4gIAlmb3JfZWFjaF9kc2lfcG9ydChw b3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Cj4gLQkJaTkxNV9yZWdfdCBjdHJsX3JlZyA9IElTX0dF TjlfTFAoZGV2X3ByaXYpID8KPiArCQlpOTE1X3JlZ190IGN0cmxfcmVnID0gR1RfR0VOOV9MUChk ZXZfcHJpdikgPwo+ICAJCQlCWFRfTUlQSV9QT1JUX0NUUkwocG9ydCkgOiBNSVBJX1BPUlRfQ1RS TChwb3J0KTsKPiAgCQlib29sIGVuYWJsZWQgPSBJOTE1X1JFQUQoY3RybF9yZWcpICYgRFBJX0VO QUJMRTsKPiAgCj4gQEAgLTEwMDQsNyArMTAwNCw3IEBAIHN0YXRpYyBib29sIGludGVsX2RzaV9n ZXRfaHdfc3RhdGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkJaWYgKCEoSTkx NV9SRUFEKE1JUElfREVWSUNFX1JFQURZKHBvcnQpKSAmIERFVklDRV9SRUFEWSkpCj4gIAkJCWNv bnRpbnVlOwo+ICAKPiAtCQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsKPiArCQlpZiAoR1Rf R0VOOV9MUChkZXZfcHJpdikpIHsKPiAgCQkJdTMyIHRtcCA9IEk5MTVfUkVBRChNSVBJX0NUUkwo cG9ydCkpOwo+ICAJCQl0bXAgJj0gQlhUX1BJUEVfU0VMRUNUX01BU0s7Cj4gIAkJCXRtcCA+Pj0g QlhUX1BJUEVfU0VMRUNUX1NISUZUOwo+IEBAIC0xMTk3LDcgKzExOTcsNyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9kc2lfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAg Cj4gIAlwaXBlX2NvbmZpZy0+b3V0cHV0X3R5cGVzIHw9IEJJVChJTlRFTF9PVVRQVVRfRFNJKTsK PiAgCj4gLQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsKPiArCWlmIChHVF9HRU45X0xQKGRl dl9wcml2KSkgewo+ICAJCWJ4dF9kc2lfZ2V0X3BpcGVfY29uZmlnKGVuY29kZXIsIHBpcGVfY29u ZmlnKTsKPiAgCQlwY2xrID0gYnh0X2RzaV9nZXRfcGNsayhlbmNvZGVyLCBwaXBlX2NvbmZpZy0+ cGlwZV9icHAsCj4gIAkJCQkJcGlwZV9jb25maWcpOwo+IEBAIC0xMjY1LDcgKzEyNjUsNyBAQCBz dGF0aWMgdm9pZCBzZXRfZHNpX3RpbWluZ3Moc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAo+ ICAJaGJwID0gdHhieXRlY2xraHMoaGJwLCBicHAsIGxhbmVfY291bnQsIGludGVsX2RzaS0+YnVy c3RfbW9kZV9yYXRpbyk7Cj4gIAo+ICAJZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNp LT5wb3J0cykgewo+IC0JCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkgewo+ICsJCWlmIChHVF9H RU45X0xQKGRldl9wcml2KSkgewo+ICAJCQkvKgo+ICAJCQkgKiBQcm9ncmFtIGhkaXNwbGF5IGFu ZCB2ZGlzcGxheSBvbiBNSVBJIHRyYW5zY29kZXIuCj4gIAkJCSAqIFRoaXMgaXMgZGlmZmVyZW50 IGZyb20gY2FsY3VsYXRlZCBoYWN0aXZlIGFuZAo+IEBAIC0xMzUyLDcgKzEzNTIsNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9kc2lfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5j b2RlciwKPiAgCQkJdG1wICY9IH5SRUFEX1JFUVVFU1RfUFJJT1JJVFlfTUFTSzsKPiAgCQkJSTkx NV9XUklURShNSVBJX0NUUkwocG9ydCksIHRtcCB8Cj4gIAkJCQkJUkVBRF9SRVFVRVNUX1BSSU9S SVRZX0hJR0gpOwo+IC0JCX0gZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsKPiArCQl9 IGVsc2UgaWYgKEdUX0dFTjlfTFAoZGV2X3ByaXYpKSB7Cj4gIAkJCWVudW0gcGlwZSBwaXBlID0g aW50ZWxfY3J0Yy0+cGlwZTsKPiAgCj4gIAkJCXRtcCA9IEk5MTVfUkVBRChNSVBJX0NUUkwocG9y dCkpOwo+IEBAIC0xMzkwLDcgKzEzOTAsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kc2lfcHJlcGFy ZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKPiAgCWlmIChpbnRlbF9kc2kt PmNsb2NrX3N0b3ApCj4gIAkJdG1wIHw9IENMT0NLU1RPUDsKPiAgCj4gLQlpZiAoSVNfR0VOOV9M UChkZXZfcHJpdikpIHsKPiArCWlmIChHVF9HRU45X0xQKGRldl9wcml2KSkgewo+ICAJCXRtcCB8 PSBCWFRfRFBIWV9ERUZFQVRVUkVfRU47Cj4gIAkJaWYgKCFpc19jbWRfbW9kZShpbnRlbF9kc2kp KQo+ICAJCQl0bXAgfD0gQlhUX0RFRkVBVFVSRV9EUElfRklGT19DVFI7Cj4gQEAgLTE0NDEsNyAr MTQ0MSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICppbnRlbF9lbmNvZGVyLAo+ICAJCUk5MTVfV1JJVEUoTUlQSV9JTklUX0NPVU5UKHBvcnQp LAo+ICAJCQkJdHhjbGtlc2MoaW50ZWxfZHNpLT5lc2NhcGVfY2xrX2RpdiwgMTAwKSk7Cj4gIAo+ IC0JCWlmIChJU19HRU45X0xQKGRldl9wcml2KSAmJiAoIWludGVsX2RzaS0+ZHVhbF9saW5rKSkg ewo+ICsJCWlmIChHVF9HRU45X0xQKGRldl9wcml2KSAmJiAoIWludGVsX2RzaS0+ZHVhbF9saW5r KSkgewo+ICAJCQkvKgo+ICAJCQkgKiBCWFQgc3BlYyBzYXlzIHdyaXRlIE1JUElfSU5JVF9DT1VO VCBmb3IKPiAgCQkJICogYm90aCB0aGUgcG9ydHMsIGV2ZW4gaWYgb25seSBvbmUgaXMKPiBAQCAt MTUyMCw3ICsxNTIwLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHNpX3VucHJlcGFyZShzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgCQkvKiBQYW5lbCBjb21tYW5kcyBjYW4gYmUgc2Vu dCB3aGVuIGNsb2NrIGlzIGluIExQMTEgKi8KPiAgCQlJOTE1X1dSSVRFKE1JUElfREVWSUNFX1JF QURZKHBvcnQpLCAweDApOwo+ICAKPiAtCQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gKwkJ aWYgKEdUX0dFTjlfTFAoZGV2X3ByaXYpKQo+ICAJCQlieHRfZHNpX3Jlc2V0X2Nsb2NrcyhlbmNv ZGVyLCBwb3J0KTsKPiAgCQllbHNlCj4gIAkJCXZsdl9kc2lfcmVzZXRfY2xvY2tzKGVuY29kZXIs IHBvcnQpOwo+IEBAIC0xNjI5LDcgKzE2MjksNyBAQCB2b2lkIHZsdl9kc2lfaW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlpZiAoIWludGVsX2Jpb3NfaXNfZHNpX3By ZXNlbnQoZGV2X3ByaXYsICZwb3J0KSkKPiAgCQlyZXR1cm47Cj4gIAo+IC0JaWYgKElTX0dFTjlf TFAoZGV2X3ByaXYpKQo+ICsJaWYgKEdUX0dFTjlfTFAoZGV2X3ByaXYpKQo+ICAJCWRldl9wcml2 LT5taXBpX21taW9fYmFzZSA9IEJYVF9NSVBJX0JBU0U7Cj4gIAllbHNlCj4gIAkJZGV2X3ByaXYt Pm1pcGlfbW1pb19iYXNlID0gVkxWX01JUElfQkFTRTsKPiBAQCAtMTY2OCw3ICsxNjY4LDcgQEAg dm9pZCB2bHZfZHNpX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJ ICogT24gQllUL0NIViwgcGlwZSBBIG1hcHMgdG8gTUlQSSBEU0kgcG9ydCBBLCBwaXBlIEIgbWFw cyB0byBNSVBJIERTSQo+ICAJICogcG9ydCBDLiBCWFQgaXNuJ3QgbGltaXRlZCBsaWtlIHRoaXMu Cj4gIAkgKi8KPiAtCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkKPiArCWlmIChHVF9HRU45X0xQ KGRldl9wcml2KSkKPiAgCQlpbnRlbF9lbmNvZGVyLT5jcnRjX21hc2sgPSBCSVQoUElQRV9BKSB8 IEJJVChQSVBFX0IpIHwgQklUKFBJUEVfQyk7Cj4gIAllbHNlIGlmIChwb3J0ID09IFBPUlRfQSkK PiAgCQlpbnRlbF9lbmNvZGVyLT5jcnRjX21hc2sgPSBCSVQoUElQRV9BKTsKPiAtLSAKPiAyLjE5 LjEuMS5nNTZjNDY4M2U2OAo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK