From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v3 13/24] x86/emul: Rework emulator event injection Date: Wed, 30 Nov 2016 14:26:09 +0000 Message-ID: References: <1480513841-7565-1-git-send-email-andrew.cooper3@citrix.com> <1480513841-7565-14-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1480513841-7565-14-git-send-email-andrew.cooper3@citrix.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , "Tim (Xen.org)" , George Dunlap , Jan Beulich List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IEFuZHJldyBDb29wZXIgW21haWx0 bzphbmRyZXcuY29vcGVyM0BjaXRyaXguY29tXQo+IFNlbnQ6IDMwIE5vdmVtYmVyIDIwMTYgMTM6 NTEKPiBUbzogWGVuLWRldmVsIDx4ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZz4KPiBDYzogQW5kcmV3 IENvb3BlciA8QW5kcmV3LkNvb3BlcjNAY2l0cml4LmNvbT47IEphbiBCZXVsaWNoCj4gPEpCZXVs aWNoQHN1c2UuY29tPjsgUGF1bCBEdXJyYW50IDxQYXVsLkR1cnJhbnRAY2l0cml4LmNvbT47IFRp bQo+IChYZW4ub3JnKSA8dGltQHhlbi5vcmc+OyBHZW9yZ2UgRHVubGFwIDxHZW9yZ2UuRHVubGFw QGNpdHJpeC5jb20+Cj4gU3ViamVjdDogW1BBVENIIHYzIDEzLzI0XSB4ODYvZW11bDogUmV3b3Jr IGVtdWxhdG9yIGV2ZW50IGluamVjdGlvbgo+IAo+IFRoZSBlbXVsYXRvciBuZWVkcyB0byBnYWlu IGFuIHVuZGVyc3RhbmRpbmcgb2YgaW50ZXJydXB0cyBhbmQgZXhjZXB0aW9ucwo+IGdlbmVyYXRl ZCBieSBpdHMgYWN0aW9ucy4KPiAKPiBNb3ZlIGh2bV9lbXVsYXRlX2N0eHQue2V4bl9wZW5kaW5n LHRyYXB9IGludG8gc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQKPiBzbyB0aGV5Cj4gYXJlIHZpc2li bGUgdG8gdGhlIGVtdWxhdG9yLiAgVGhpcyByZW1vdmVzIHRoZSBuZWVkIGZvciB0aGUKPiBpbmpl Y3Rfe2h3X2V4Y2VwdGlvbixzd19pbnRlcnJ1cHR9KCkgaG9va3MsIHdoaWNoIGFyZSBkcm9wcGVk IGFuZAo+IHJlcGxhY2VkCj4gd2l0aCB4ODZfZW11bF97aHdfZXhjZXB0aW9uLHNvZnR3YXJlX2V2 ZW50LHJlc2V0X2V2ZW50fSgpIGluc3RlYWQuCj4gCj4gRm9yIGV4Y2VwdGlvbnMgcmFpc2VkIGJ5 IHg4Nl9lbXVsYXRlKCkgaXRzZWxmIChyYXRoZXIgdGhhbiBpdHMgY2FsbGJhY2tzKSwgdGhlCj4g c2hhZG93IHBhZ2V0YWJsZSBhbmQgUFYgdXNlcyBvZiB4ODZfZW11bGF0ZSgpIHByZXZpb3VzbHkg ZmFpbGVkIHdpdGgKPiBYODZFTVVMX1VOSEFORExFQUJMRSBkdWUgdG8gdGhlIGxhY2sgb2YgaW5q ZWN0XyooKSBob29rcy4KPiAKPiBUaGlzIGJlaGF2aW91ciBoYXMgY2hhbmdlZCwgYW5kIHN1Y2gg Y2FzZXMgd2lsbCBub3cgcmV0dXJuCj4gWDg2RU1VTF9FWENFUFRJT04KPiB3aXRoIGV2ZW50X3Bl bmRpbmcgc2V0LiAgVW50aWwgdGhlIGNhbGxlcnMgb2YgeDg2X2VtdWxhdGUoKSBoYXZlIGJlZW4K PiB1cGRhdGVkCj4gdG8gaW5qZWN0IGV2ZW50cyBiYWNrIGludG8gdGhlIGd1ZXN0LCBkaXZlcnQg dGhlIGV2ZW50X3BlbmRpbmcgY2FzZSBiYWNrIGludG8KPiB0aGUgWDg2RU1VTF9VTkhBTkRMRUFC TEUgcGF0aCB0byBtYWludGFpbiB0aGUgc2FtZSBndWVzdC12aXNpYmxlCj4gYmVoYXZpb3VyLgo+ IAo+IE5vIG92ZXJhbGwgZnVuY3Rpb25hbCBjaGFuZ2UuCj4gCj4gU2lnbmVkLW9mZi1ieTogQW5k cmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KPiBSZXZpZXdlZC1ieTogQm9y aXMgT3N0cm92c2t5IDxib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbT4KPiBSZXZpZXdlZC1ieTog S2V2aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRlbC5jb20+Cj4gLS0tCj4gQ0M6IEphbiBCZXVsaWNo IDxKQmV1bGljaEBzdXNlLmNvbT4KPiBDQzogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0 cml4LmNvbT4KClJldmlld2VkLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXgu Y29tPgoKPiBDQzogVGltIERlZWdhbiA8dGltQHhlbi5vcmc+Cj4gQ0M6IEdlb3JnZSBEdW5sYXAg PGdlb3JnZS5kdW5sYXBAZXUuY2l0cml4LmNvbT4KPiAKPiB2MzoKPiAgKiBSZXdvcmsgaG93IHRo ZSBldmVudF9wZW5kaW5nIGNhc2UgaXMgY3VycmVudGx5IGhhbmRsZWQKPiB2MjoKPiAgKiBDaGFu Z2UgeDg2X2VtdWxfaHdfZXhjZXB0aW9uKCkncyBlcnJvcl9jb2RlIHBhcmFtZXRlciB0byBiZWlu Zwo+IHNpZ25lZAo+ICAqIENsYXJpZnkgaG93IHNvZnR3YXJlIGludGVycnVwdCBpbmplY3Rpb24g aGFwcGVucy4KPiAgKiBNb3JlIEFTU0VSVCgpJ3MgYW5kIGRlc2NyaXB0aW9uIG9mIGhvdyBldmVu dF9wZW5kaW5nIHdvcmtzIHdpdGhvdXQgdGhlCj4gICAgaW5qZWN0X3N3X2ludGVycnVwdCgpIGhv b2sKPiAtLS0KPiAgeGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMgICAgICAgICAgICAgfCA4MSAr KysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIHhlbi9hcmNoL3g4Ni9odm0vaHZt LmMgICAgICAgICAgICAgICAgIHwgIDQgKy0KPiAgeGVuL2FyY2gveDg2L2h2bS9pby5jICAgICAg ICAgICAgICAgICAgfCAgNCArLQo+ICB4ZW4vYXJjaC94ODYvaHZtL3ZteC9yZWFsbW9kZS5jICAg ICAgICB8IDE2ICsrKy0tLS0KPiAgeGVuL2FyY2gveDg2L21tLmMgICAgICAgICAgICAgICAgICAg ICAgfCAyNiArKysrKysrKysrKwo+ICB4ZW4vYXJjaC94ODYvbW0vc2hhZG93L211bHRpLmMgICAg ICAgICB8IDE3ICsrKysrKysKPiAgeGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRl LmMgfCAxMiArKystLQo+ICB4ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuaCB8 IDc2Cj4gKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQo+ICB4ZW4vaW5jbHVkZS9hc20t eDg2L2h2bS9lbXVsYXRlLmggICAgICB8ICAzIC0tCj4gIDkgZmlsZXMgY2hhbmdlZCwgMTMyIGlu c2VydGlvbnMoKyksIDEwNyBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L2h2bS9lbXVsYXRlLmMgYi94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYwo+IGluZGV4IDkx Yzc5ZmEuLjRiOGM5YTAgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMK PiArKysgYi94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYwo+IEBAIC01NjgsMTIgKzU2OCw5IEBA IHN0YXRpYyBpbnQgaHZtZW11bF92aXJ0dWFsX3RvX2xpbmVhcigKPiAgICAgICAgICByZXR1cm4g WDg2RU1VTF9VTkhBTkRMRUFCTEU7Cj4gCj4gICAgICAvKiBUaGlzIGlzIGEgc2luZ2xldG9uIG9w ZXJhdGlvbjogZmFpbCBpdCB3aXRoIGFuIGV4Y2VwdGlvbi4gKi8KPiAtICAgIGh2bWVtdWxfY3R4 dC0+ZXhuX3BlbmRpbmcgPSAxOwo+IC0gICAgaHZtZW11bF9jdHh0LT50cmFwLnZlY3RvciA9Cj4g LSAgICAgICAgKHNlZyA9PSB4ODZfc2VnX3NzKSA/IFRSQVBfc3RhY2tfZXJyb3IgOiBUUkFQX2dw X2ZhdWx0Owo+IC0gICAgaHZtZW11bF9jdHh0LT50cmFwLnR5cGUgPSBYODZfRVZFTlRUWVBFX0hX X0VYQ0VQVElPTjsKPiAtICAgIGh2bWVtdWxfY3R4dC0+dHJhcC5lcnJvcl9jb2RlID0gMDsKPiAt ICAgIGh2bWVtdWxfY3R4dC0+dHJhcC5pbnNuX2xlbiA9IDA7Cj4gKyAgICB4ODZfZW11bF9od19l eGNlcHRpb24oKHNlZyA9PSB4ODZfc2VnX3NzKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ID8gVFJBUF9zdGFja19lcnJvcgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIDogVFJBUF9n cF9mYXVsdCwgMCwgJmh2bWVtdWxfY3R4dC0+Y3R4dCk7Cj4gICAgICByZXR1cm4gWDg2RU1VTF9F WENFUFRJT047Cj4gIH0KPiAKPiBAQCAtMTU2Miw1OSArMTU1OSw2IEBAIGludCBodm1lbXVsX2Nw dWlkKAo+ICAgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKPiAgfQo+IAo+IC1zdGF0aWMgaW50IGh2 bWVtdWxfaW5qZWN0X2h3X2V4Y2VwdGlvbigKPiAtICAgIHVpbnQ4X3QgdmVjdG9yLAo+IC0gICAg aW50MzJfdCBlcnJvcl9jb2RlLAo+IC0gICAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQp Cj4gLXsKPiAtICAgIHN0cnVjdCBodm1fZW11bGF0ZV9jdHh0ICpodm1lbXVsX2N0eHQgPQo+IC0g ICAgICAgIGNvbnRhaW5lcl9vZihjdHh0LCBzdHJ1Y3QgaHZtX2VtdWxhdGVfY3R4dCwgY3R4dCk7 Cj4gLQo+IC0gICAgaHZtZW11bF9jdHh0LT5leG5fcGVuZGluZyA9IDE7Cj4gLSAgICBodm1lbXVs X2N0eHQtPnRyYXAudmVjdG9yID0gdmVjdG9yOwo+IC0gICAgaHZtZW11bF9jdHh0LT50cmFwLnR5 cGUgPSBYODZfRVZFTlRUWVBFX0hXX0VYQ0VQVElPTjsKPiAtICAgIGh2bWVtdWxfY3R4dC0+dHJh cC5lcnJvcl9jb2RlID0gZXJyb3JfY29kZTsKPiAtICAgIGh2bWVtdWxfY3R4dC0+dHJhcC5pbnNu X2xlbiA9IDA7Cj4gLQo+IC0gICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKPiAtfQo+IC0KPiAtc3Rh dGljIGludCBodm1lbXVsX2luamVjdF9zd19pbnRlcnJ1cHQoCj4gLSAgICBlbnVtIHg4Nl9zd2lu dF90eXBlIHR5cGUsCj4gLSAgICB1aW50OF90IHZlY3RvciwKPiAtICAgIHVpbnQ4X3QgaW5zbl9s ZW4sCj4gLSAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKPiAtewo+IC0gICAgc3Ry dWN0IGh2bV9lbXVsYXRlX2N0eHQgKmh2bWVtdWxfY3R4dCA9Cj4gLSAgICAgICAgY29udGFpbmVy X29mKGN0eHQsIHN0cnVjdCBodm1fZW11bGF0ZV9jdHh0LCBjdHh0KTsKPiAtCj4gLSAgICBzd2l0 Y2ggKCB0eXBlICkKPiAtICAgIHsKPiAtICAgIGNhc2UgeDg2X3N3aW50X2ljZWJwOgo+IC0gICAg ICAgIGh2bWVtdWxfY3R4dC0+dHJhcC50eXBlID0gWDg2X0VWRU5UVFlQRV9QUklfU1dfRVhDRVBU SU9OOwo+IC0gICAgICAgIGJyZWFrOwo+IC0KPiAtICAgIGNhc2UgeDg2X3N3aW50X2ludDM6Cj4g LSAgICBjYXNlIHg4Nl9zd2ludF9pbnRvOgo+IC0gICAgICAgIGh2bWVtdWxfY3R4dC0+dHJhcC50 eXBlID0gWDg2X0VWRU5UVFlQRV9TV19FWENFUFRJT047Cj4gLSAgICAgICAgYnJlYWs7Cj4gLQo+ IC0gICAgY2FzZSB4ODZfc3dpbnRfaW50Ogo+IC0gICAgICAgIGh2bWVtdWxfY3R4dC0+dHJhcC50 eXBlID0gWDg2X0VWRU5UVFlQRV9TV19JTlRFUlJVUFQ7Cj4gLSAgICAgICAgYnJlYWs7Cj4gLQo+ IC0gICAgZGVmYXVsdDoKPiAtICAgICAgICByZXR1cm4gWDg2RU1VTF9VTkhBTkRMRUFCTEU7Cj4g LSAgICB9Cj4gLQo+IC0gICAgaHZtZW11bF9jdHh0LT5leG5fcGVuZGluZyA9IDE7Cj4gLSAgICBo dm1lbXVsX2N0eHQtPnRyYXAudmVjdG9yID0gdmVjdG9yOwo+IC0gICAgaHZtZW11bF9jdHh0LT50 cmFwLmVycm9yX2NvZGUgPSBYODZfRVZFTlRfTk9fRUM7Cj4gLSAgICBodm1lbXVsX2N0eHQtPnRy YXAuaW5zbl9sZW4gPSBpbnNuX2xlbjsKPiAtCj4gLSAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwo+ IC19Cj4gLQo+ICBzdGF0aWMgaW50IGh2bWVtdWxfZ2V0X2ZwdSgKPiAgICAgIHZvaWQgKCpleGNl cHRpb25fY2FsbGJhY2spKHZvaWQgKiwgc3RydWN0IGNwdV91c2VyX3JlZ3MgKiksCj4gICAgICB2 b2lkICpleGNlcHRpb25fY2FsbGJhY2tfYXJnLAo+IEBAIC0xNjc4LDggKzE2MjIsNyBAQCBzdGF0 aWMgaW50IGh2bWVtdWxfaW52bHBnKAo+ICAgICAgICAgICAqIGh2bWVtdWxfdmlydHVhbF90b19s aW5lYXIoKSByYWlzZXMgZXhjZXB0aW9ucyBmb3IgdHlwZS9saW1pdAo+ICAgICAgICAgICAqIHZp b2xhdGlvbnMsIHNvIHNxdWFzaCB0aGVtLgo+ICAgICAgICAgICAqLwo+IC0gICAgICAgIGh2bWVt dWxfY3R4dC0+ZXhuX3BlbmRpbmcgPSAwOwo+IC0gICAgICAgIGh2bWVtdWxfY3R4dC0+dHJhcCA9 IChzdHJ1Y3QgeDg2X2V2ZW50KXt9Owo+ICsgICAgICAgIHg4Nl9lbXVsX3Jlc2V0X2V2ZW50KGN0 eHQpOwo+ICAgICAgICAgIHJjID0gWDg2RU1VTF9PS0FZOwo+ICAgICAgfQo+IAo+IEBAIC0xNjk2 LDcgKzE2MzksNyBAQCBzdGF0aWMgaW50IGh2bWVtdWxfdm1mdW5jKAo+IAo+ICAgICAgcmMgPSBo dm1fZnVuY3MuYWx0cDJtX3ZjcHVfZW11bGF0ZV92bWZ1bmMoY3R4dC0+cmVncyk7Cj4gICAgICBp ZiAoIHJjICE9IFg4NkVNVUxfT0tBWSApCj4gLSAgICAgICAgaHZtZW11bF9pbmplY3RfaHdfZXhj ZXB0aW9uKFRSQVBfaW52YWxpZF9vcCwgWDg2X0VWRU5UX05PX0VDLAo+IGN0eHQpOwo+ICsgICAg ICAgIHg4Nl9lbXVsX2h3X2V4Y2VwdGlvbihUUkFQX2ludmFsaWRfb3AsIFg4Nl9FVkVOVF9OT19F QywgY3R4dCk7Cj4gCj4gICAgICByZXR1cm4gcmM7Cj4gIH0KPiBAQCAtMTcyMCw4ICsxNjYzLDYg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCB4ODZfZW11bGF0ZV9vcHMKPiBodm1fZW11bGF0ZV9vcHMg PSB7Cj4gICAgICAud3JpdGVfbXNyICAgICA9IGh2bWVtdWxfd3JpdGVfbXNyLAo+ICAgICAgLndi aW52ZCAgICAgICAgPSBodm1lbXVsX3diaW52ZCwKPiAgICAgIC5jcHVpZCAgICAgICAgID0gaHZt ZW11bF9jcHVpZCwKPiAtICAgIC5pbmplY3RfaHdfZXhjZXB0aW9uID0gaHZtZW11bF9pbmplY3Rf aHdfZXhjZXB0aW9uLAo+IC0gICAgLmluamVjdF9zd19pbnRlcnJ1cHQgPSBodm1lbXVsX2luamVj dF9zd19pbnRlcnJ1cHQsCj4gICAgICAuZ2V0X2ZwdSAgICAgICA9IGh2bWVtdWxfZ2V0X2ZwdSwK PiAgICAgIC5wdXRfZnB1ICAgICAgID0gaHZtZW11bF9wdXRfZnB1LAo+ICAgICAgLmludmxwZyAg ICAgICAgPSBodm1lbXVsX2ludmxwZywKPiBAQCAtMTc0Nyw4ICsxNjg4LDYgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCB4ODZfZW11bGF0ZV9vcHMKPiBodm1fZW11bGF0ZV9vcHNfbm9fd3JpdGUgPSB7 Cj4gICAgICAud3JpdGVfbXNyICAgICA9IGh2bWVtdWxfd3JpdGVfbXNyX2Rpc2NhcmQsCj4gICAg ICAud2JpbnZkICAgICAgICA9IGh2bWVtdWxfd2JpbnZkX2Rpc2NhcmQsCj4gICAgICAuY3B1aWQg ICAgICAgICA9IGh2bWVtdWxfY3B1aWQsCj4gLSAgICAuaW5qZWN0X2h3X2V4Y2VwdGlvbiA9IGh2 bWVtdWxfaW5qZWN0X2h3X2V4Y2VwdGlvbiwKPiAtICAgIC5pbmplY3Rfc3dfaW50ZXJydXB0ID0g aHZtZW11bF9pbmplY3Rfc3dfaW50ZXJydXB0LAo+ICAgICAgLmdldF9mcHUgICAgICAgPSBodm1l bXVsX2dldF9mcHUsCj4gICAgICAucHV0X2ZwdSAgICAgICA9IGh2bWVtdWxfcHV0X2ZwdSwKPiAg ICAgIC5pbnZscGcgICAgICAgID0gaHZtZW11bF9pbnZscGcsCj4gQEAgLTE4NzAsOCArMTgwOSw4 IEBAIGludCBodm1fZW11bGF0ZV9vbmVfbW1pbyh1bnNpZ25lZCBsb25nIG1mbiwKPiB1bnNpZ25l ZCBsb25nIGdsYSkKPiAgICAgICAgICBodm1fZHVtcF9lbXVsYXRpb25fc3RhdGUoWEVOTE9HX0df V0FSTklORyAiTU1DRkciLCAmY3R4dCk7Cj4gICAgICAgICAgYnJlYWs7Cj4gICAgICBjYXNlIFg4 NkVNVUxfRVhDRVBUSU9OOgo+IC0gICAgICAgIGlmICggY3R4dC5leG5fcGVuZGluZyApCj4gLSAg ICAgICAgICAgIGh2bV9pbmplY3RfZXZlbnQoJmN0eHQudHJhcCk7Cj4gKyAgICAgICAgaWYgKCBj dHh0LmN0eHQuZXZlbnRfcGVuZGluZyApCj4gKyAgICAgICAgICAgIGh2bV9pbmplY3RfZXZlbnQo JmN0eHQuY3R4dC5ldmVudCk7Cj4gICAgICAgICAgLyogZmFsbHRocm91Z2ggKi8KPiAgICAgIGRl ZmF1bHQ6Cj4gICAgICAgICAgaHZtX2VtdWxhdGVfd3JpdGViYWNrKCZjdHh0KTsKPiBAQCAtMTkz MCw4ICsxODY5LDggQEAgdm9pZCBodm1fZW11bGF0ZV9vbmVfdm1fZXZlbnQoZW51bQo+IGVtdWxf a2luZCBraW5kLCB1bnNpZ25lZCBpbnQgdHJhcG5yLAo+ICAgICAgICAgIGh2bV9pbmplY3RfaHdf ZXhjZXB0aW9uKHRyYXBuciwgZXJyY29kZSk7Cj4gICAgICAgICAgYnJlYWs7Cj4gICAgICBjYXNl IFg4NkVNVUxfRVhDRVBUSU9OOgo+IC0gICAgICAgIGlmICggY3R4LmV4bl9wZW5kaW5nICkKPiAt ICAgICAgICAgICAgaHZtX2luamVjdF9ldmVudCgmY3R4LnRyYXApOwo+ICsgICAgICAgIGlmICgg Y3R4LmN0eHQuZXZlbnRfcGVuZGluZyApCj4gKyAgICAgICAgICAgIGh2bV9pbmplY3RfZXZlbnQo JmN0eC5jdHh0LmV2ZW50KTsKPiAgICAgICAgICBicmVhazsKPiAgICAgIH0KPiAKPiBAQCAtMjAw Niw4ICsxOTQ1LDYgQEAgdm9pZCBodm1fZW11bGF0ZV9pbml0X3Blcl9pbnNuKAo+ICAgICAgICAg IGh2bWVtdWxfY3R4dC0+aW5zbl9idWZfYnl0ZXMgPSBpbnNuX2J5dGVzOwo+ICAgICAgICAgIG1l bWNweShodm1lbXVsX2N0eHQtPmluc25fYnVmLCBpbnNuX2J1ZiwgaW5zbl9ieXRlcyk7Cj4gICAg ICB9Cj4gLQo+IC0gICAgaHZtZW11bF9jdHh0LT5leG5fcGVuZGluZyA9IDA7Cj4gIH0KPiAKPiAg dm9pZCBodm1fZW11bGF0ZV93cml0ZWJhY2soCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9o dm0vaHZtLmMgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCj4gaW5kZXggYjk1MDg0Mi4uZWY4MzEw MCAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCj4gKysrIGIveGVuL2FyY2gv eDg2L2h2bS9odm0uYwo+IEBAIC00MDc2LDggKzQwNzYsOCBAQCB2b2lkIGh2bV91ZF9pbnRlcmNl cHQoc3RydWN0IGNwdV91c2VyX3JlZ3MKPiAqcmVncykKPiAgICAgICAgICBodm1faW5qZWN0X2h3 X2V4Y2VwdGlvbihUUkFQX2ludmFsaWRfb3AsIFg4Nl9FVkVOVF9OT19FQyk7Cj4gICAgICAgICAg YnJlYWs7Cj4gICAgICBjYXNlIFg4NkVNVUxfRVhDRVBUSU9OOgo+IC0gICAgICAgIGlmICggY3R4 dC5leG5fcGVuZGluZyApCj4gLSAgICAgICAgICAgIGh2bV9pbmplY3RfZXZlbnQoJmN0eHQudHJh cCk7Cj4gKyAgICAgICAgaWYgKCBjdHh0LmN0eHQuZXZlbnRfcGVuZGluZyApCj4gKyAgICAgICAg ICAgIGh2bV9pbmplY3RfZXZlbnQoJmN0eHQuY3R4dC5ldmVudCk7Cj4gICAgICAgICAgLyogZmFs bCB0aHJvdWdoICovCj4gICAgICBkZWZhdWx0Ogo+ICAgICAgICAgIGh2bV9lbXVsYXRlX3dyaXRl YmFjaygmY3R4dCk7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaW8uYyBiL3hlbi9h cmNoL3g4Ni9odm0vaW8uYwo+IGluZGV4IDEyNzlmNjguLmFiYjlkNTEgMTAwNjQ0Cj4gLS0tIGEv eGVuL2FyY2gveDg2L2h2bS9pby5jCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS9pby5jCj4gQEAg LTEwMiw4ICsxMDIsOCBAQCBpbnQgaGFuZGxlX21taW8odm9pZCkKPiAgICAgICAgICBodm1fZHVt cF9lbXVsYXRpb25fc3RhdGUoWEVOTE9HX0dfV0FSTklORyAiTU1JTyIsICZjdHh0KTsKPiAgICAg ICAgICByZXR1cm4gMDsKPiAgICAgIGNhc2UgWDg2RU1VTF9FWENFUFRJT046Cj4gLSAgICAgICAg aWYgKCBjdHh0LmV4bl9wZW5kaW5nICkKPiAtICAgICAgICAgICAgaHZtX2luamVjdF9ldmVudCgm Y3R4dC50cmFwKTsKPiArICAgICAgICBpZiAoIGN0eHQuY3R4dC5ldmVudF9wZW5kaW5nICkKPiAr ICAgICAgICAgICAgaHZtX2luamVjdF9ldmVudCgmY3R4dC5jdHh0LmV2ZW50KTsKPiAgICAgICAg ICBicmVhazsKPiAgICAgIGRlZmF1bHQ6Cj4gICAgICAgICAgYnJlYWs7Cj4gZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9odm0vdm14L3JlYWxtb2RlLmMKPiBiL3hlbi9hcmNoL3g4Ni9odm0vdm14 L3JlYWxtb2RlLmMKPiBpbmRleCA5MDAyNjM4Li5kYzNhYjQ0IDEwMDY0NAo+IC0tLSBhL3hlbi9h cmNoL3g4Ni9odm0vdm14L3JlYWxtb2RlLmMKPiArKysgYi94ZW4vYXJjaC94ODYvaHZtL3ZteC9y ZWFsbW9kZS5jCj4gQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIHZteF9yZWFsbW9kZV9lbXVsYXRl X29uZShzdHJ1Y3QKPiBodm1fZW11bGF0ZV9jdHh0ICpodm1lbXVsX2N0eHQpCj4gCj4gICAgICBp ZiAoIHJjID09IFg4NkVNVUxfRVhDRVBUSU9OICkKPiAgICAgIHsKPiAtICAgICAgICBpZiAoICFo dm1lbXVsX2N0eHQtPmV4bl9wZW5kaW5nICkKPiArICAgICAgICBpZiAoICFodm1lbXVsX2N0eHQt PmN0eHQuZXZlbnRfcGVuZGluZyApCj4gICAgICAgICAgewo+ICAgICAgICAgICAgICB1bnNpZ25l ZCBsb25nIGludHJfaW5mbzsKPiAKPiBAQCAtMTMzLDI3ICsxMzMsMjcgQEAgdm9pZCB2bXhfcmVh bG1vZGVfZW11bGF0ZV9vbmUoc3RydWN0Cj4gaHZtX2VtdWxhdGVfY3R4dCAqaHZtZW11bF9jdHh0 KQo+ICAgICAgICAgICAgICAgICAgZ2RwcmludGsoWEVOTE9HX0VSUiwgIkV4Y2VwdGlvbiBwZW5k aW5nIGJ1dCBubyBpbmZvLlxuIik7Cj4gICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Cj4gICAg ICAgICAgICAgIH0KPiAtICAgICAgICAgICAgaHZtZW11bF9jdHh0LT50cmFwLnZlY3RvciA9ICh1 aW50OF90KWludHJfaW5mbzsKPiAtICAgICAgICAgICAgaHZtZW11bF9jdHh0LT50cmFwLmluc25f bGVuID0gMDsKPiArICAgICAgICAgICAgaHZtZW11bF9jdHh0LT5jdHh0LmV2ZW50LnZlY3RvciA9 ICh1aW50OF90KWludHJfaW5mbzsKPiArICAgICAgICAgICAgaHZtZW11bF9jdHh0LT5jdHh0LmV2 ZW50Lmluc25fbGVuID0gMDsKPiAgICAgICAgICB9Cj4gCj4gICAgICAgICAgaWYgKCB1bmxpa2Vs eShjdXJyLT5kb21haW4tPmRlYnVnZ2VyX2F0dGFjaGVkKSAmJgo+IC0gICAgICAgICAgICAgKCho dm1lbXVsX2N0eHQtPnRyYXAudmVjdG9yID09IFRSQVBfZGVidWcpIHx8Cj4gLSAgICAgICAgICAg ICAgKGh2bWVtdWxfY3R4dC0+dHJhcC52ZWN0b3IgPT0gVFJBUF9pbnQzKSkgKQo+ICsgICAgICAg ICAgICAgKChodm1lbXVsX2N0eHQtPmN0eHQuZXZlbnQudmVjdG9yID09IFRSQVBfZGVidWcpIHx8 Cj4gKyAgICAgICAgICAgICAgKGh2bWVtdWxfY3R4dC0+Y3R4dC5ldmVudC52ZWN0b3IgPT0gVFJB UF9pbnQzKSkgKQo+ICAgICAgICAgIHsKPiAgICAgICAgICAgICAgZG9tYWluX3BhdXNlX2Zvcl9k ZWJ1Z2dlcigpOwo+ICAgICAgICAgIH0KPiAgICAgICAgICBlbHNlIGlmICggY3Vyci0+YXJjaC5o dm1fdmNwdS5ndWVzdF9jclswXSAmIFg4Nl9DUjBfUEUgKQo+ICAgICAgICAgIHsKPiAgICAgICAg ICAgICAgZ2RwcmludGsoWEVOTE9HX0VSUiwgIkV4Y2VwdGlvbiAlMDJ4IGluIHByb3RlY3RlZCBt b2RlLlxuIiwKPiAtICAgICAgICAgICAgICAgICAgICAgaHZtZW11bF9jdHh0LT50cmFwLnZlY3Rv cik7Cj4gKyAgICAgICAgICAgICAgICAgICAgIGh2bWVtdWxfY3R4dC0+Y3R4dC5ldmVudC52ZWN0 b3IpOwo+ICAgICAgICAgICAgICBnb3RvIGZhaWw7Cj4gICAgICAgICAgfQo+ICAgICAgICAgIGVs c2UKPiAgICAgICAgICB7Cj4gICAgICAgICAgICAgIHJlYWxtb2RlX2RlbGl2ZXJfZXhjZXB0aW9u KAo+IC0gICAgICAgICAgICAgICAgaHZtZW11bF9jdHh0LT50cmFwLnZlY3RvciwKPiAtICAgICAg ICAgICAgICAgIGh2bWVtdWxfY3R4dC0+dHJhcC5pbnNuX2xlbiwKPiArICAgICAgICAgICAgICAg IGh2bWVtdWxfY3R4dC0+Y3R4dC5ldmVudC52ZWN0b3IsCj4gKyAgICAgICAgICAgICAgICBodm1l bXVsX2N0eHQtPmN0eHQuZXZlbnQuaW5zbl9sZW4sCj4gICAgICAgICAgICAgICAgICBodm1lbXVs X2N0eHQpOwo+ICAgICAgICAgIH0KPiAgICAgIH0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L21tLmMgYi94ZW4vYXJjaC94ODYvbW0uYwo+IGluZGV4IDIzMWM3YmYuLjVkNTk0NzkgMTAwNjQ0 Cj4gLS0tIGEveGVuL2FyY2gveDg2L21tLmMKPiArKysgYi94ZW4vYXJjaC94ODYvbW0uYwo+IEBA IC01Mzc5LDYgKzUzNzksMTkgQEAgaW50IHB0d3JfZG9fcGFnZV9mYXVsdChzdHJ1Y3QgdmNwdSAq diwgdW5zaWduZWQKPiBsb25nIGFkZHIsCj4gICAgICBwYWdlX3VubG9jayhwYWdlKTsKPiAgICAg IHB1dF9wYWdlKHBhZ2UpOwo+IAo+ICsgICAgLyoKPiArICAgICAqIFRoZSBwcmV2aW91cyBsYWNr IG9mIGluamVjdF97c3csaHd9KigpIGhvb2tzIGNhdXNlZCBleGNlcHRpb25zIHJhaXNlZAo+ICsg ICAgICogYnkgdGhlIGVtdWxhdG9yIGl0c2VsZiB0byBiZWNvbWUgWDg2RU1VTF9VTkhBTkRMRUFC TEUuICBTdWNoCj4gZXhjZXB0aW9ucwo+ICsgICAgICogbm93IHNldCBldmVudF9wZW5kaW5nIGlu c3RlYWQuICBFeGNlcHRpb25zIHJhaXNlZCBiZWhpbmQgdGhlIGJhY2sgb2YKPiArICAgICAqIHRo ZSBlbXVsYXRvciBkb24ndCB5ZXQgc2V0IGV2ZW50X3BlbmRpbmcuCj4gKyAgICAgKgo+ICsgICAg ICogRm9yIG5vdywgY2F1c2Ugc3VjaCBjYXNlcyB0byByZXR1cm4gdG8gdGhlIFg4NkVNVUxfVU5I QU5ETEVBQkxFCj4gcGF0aCwKPiArICAgICAqIGZvciBubyBmdW5jdGlvbmFsIGNoYW5nZSBmcm9t IGJlZm9yZS4gIEZ1dHVyZSBwYXRjaGVzIHdpbGwgZml4IHRoaXMKPiArICAgICAqIHByb3Blcmx5 Lgo+ICsgICAgICovCj4gKyAgICBpZiAoIHJjID09IFg4NkVNVUxfRVhDRVBUSU9OICYmIHB0d3Jf Y3R4dC5jdHh0LmV2ZW50X3BlbmRpbmcgKQo+ICsgICAgICAgIHJjID0gWDg2RU1VTF9VTkhBTkRM RUFCTEU7Cj4gKwo+ICAgICAgaWYgKCByYyA9PSBYODZFTVVMX1VOSEFORExFQUJMRSApCj4gICAg ICAgICAgZ290byBiYWlsOwo+IAo+IEBAIC01NTA2LDYgKzU1MTksMTkgQEAgaW50IG1taW9fcm9f ZG9fcGFnZV9mYXVsdChzdHJ1Y3QgdmNwdSAqdiwKPiB1bnNpZ25lZCBsb25nIGFkZHIsCj4gICAg ICBlbHNlCj4gICAgICAgICAgcmMgPSB4ODZfZW11bGF0ZSgmY3R4dCwgJm1taW9fcm9fZW11bGF0 ZV9vcHMpOwo+IAo+ICsgICAgLyoKPiArICAgICAqIFRoZSBwcmV2aW91cyBsYWNrIG9mIGluamVj dF97c3csaHd9KigpIGhvb2tzIGNhdXNlZCBleGNlcHRpb25zIHJhaXNlZAo+ICsgICAgICogYnkg dGhlIGVtdWxhdG9yIGl0c2VsZiB0byBiZWNvbWUgWDg2RU1VTF9VTkhBTkRMRUFCTEUuICBTdWNo Cj4gZXhjZXB0aW9ucwo+ICsgICAgICogbm93IHNldCBldmVudF9wZW5kaW5nIGluc3RlYWQuICBF eGNlcHRpb25zIHJhaXNlZCBiZWhpbmQgdGhlIGJhY2sgb2YKPiArICAgICAqIHRoZSBlbXVsYXRv ciBkb24ndCB5ZXQgc2V0IGV2ZW50X3BlbmRpbmcuCj4gKyAgICAgKgo+ICsgICAgICogRm9yIG5v dywgY2F1c2Ugc3VjaCBjYXNlcyB0byByZXR1cm4gdG8gdGhlIFg4NkVNVUxfVU5IQU5ETEVBQkxF Cj4gcGF0aCwKPiArICAgICAqIGZvciBubyBmdW5jdGlvbmFsIGNoYW5nZSBmcm9tIGJlZm9yZS4g IEZ1dHVyZSBwYXRjaGVzIHdpbGwgZml4IHRoaXMKPiArICAgICAqIHByb3Blcmx5Lgo+ICsgICAg ICovCj4gKyAgICBpZiAoIHJjID09IFg4NkVNVUxfRVhDRVBUSU9OICYmIGN0eHQuZXZlbnRfcGVu ZGluZyApCj4gKyAgICAgICAgcmMgPSBYODZFTVVMX1VOSEFORExFQUJMRTsKPiArCj4gICAgICBp ZiAoIHJjID09IFg4NkVNVUxfVU5IQU5ETEVBQkxFICkKPiAgICAgICAgICByZXR1cm4gMDsKPiAK PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jCj4gYi94ZW4vYXJj aC94ODYvbW0vc2hhZG93L211bHRpLmMKPiBpbmRleCBkZGZiODE1Li41NmM0MGY4IDEwMDY0NAo+ IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYwo+ICsrKyBiL3hlbi9hcmNoL3g4 Ni9tbS9zaGFkb3cvbXVsdGkuYwo+IEBAIC0zMzc0LDYgKzMzNzQsMTkgQEAgc3RhdGljIGludCBz aF9wYWdlX2ZhdWx0KHN0cnVjdCB2Y3B1ICp2LAo+ICAgICAgciA9IHg4Nl9lbXVsYXRlKCZlbXVs X2N0eHQuY3R4dCwgZW11bF9vcHMpOwo+IAo+ICAgICAgLyoKPiArICAgICAqIFRoZSBwcmV2aW91 cyBsYWNrIG9mIGluamVjdF97c3csaHd9KigpIGhvb2tzIGNhdXNlZCBleGNlcHRpb25zIHJhaXNl ZAo+ICsgICAgICogYnkgdGhlIGVtdWxhdG9yIGl0c2VsZiB0byBiZWNvbWUgWDg2RU1VTF9VTkhB TkRMRUFCTEUuICBTdWNoCj4gZXhjZXB0aW9ucwo+ICsgICAgICogbm93IHNldCBldmVudF9wZW5k aW5nIGluc3RlYWQuICBFeGNlcHRpb25zIHJhaXNlZCBiZWhpbmQgdGhlIGJhY2sgb2YKPiArICAg ICAqIHRoZSBlbXVsYXRvciBkb24ndCB5ZXQgc2V0IGV2ZW50X3BlbmRpbmcuCj4gKyAgICAgKgo+ ICsgICAgICogRm9yIG5vdywgY2F1c2Ugc3VjaCBjYXNlcyB0byByZXR1cm4gdG8gdGhlIFg4NkVN VUxfVU5IQU5ETEVBQkxFCj4gcGF0aCwKPiArICAgICAqIGZvciBubyBmdW5jdGlvbmFsIGNoYW5n ZSBmcm9tIGJlZm9yZS4gIEZ1dHVyZSBwYXRjaGVzIHdpbGwgZml4IHRoaXMKPiArICAgICAqIHBy b3Blcmx5Lgo+ICsgICAgICovCj4gKyAgICBpZiAoIHIgPT0gWDg2RU1VTF9FWENFUFRJT04gJiYg ZW11bF9jdHh0LmN0eHQuZXZlbnRfcGVuZGluZyApCj4gKyAgICAgICAgciA9IFg4NkVNVUxfVU5I QU5ETEVBQkxFOwo+ICsKPiArICAgIC8qCj4gICAgICAgKiBOQi4gV2UgZG8gbm90IHVuc2hhZG93 IG9uIFg4NkVNVUxfRVhDRVBUSU9OLiBJdCdzIG5vdCBjbGVhciB0aGF0IGl0Cj4gICAgICAgKiB3 b3VsZCBiZSBhIGdvb2QgdW5zaGFkb3cgaGludC4gSWYgd2UgKmRvKiBkZWNpZGUgdG8gdW5zaGFk b3ctb24tCj4gZmF1bHQKPiAgICAgICAqIHRoZW4gaXQgbXVzdCBiZSAnZmFpbGFibGUnOiB3ZSBj YW5ub3QgcmVxdWlyZSB0aGUgdW5zaGFkb3cgdG8gc3VjY2VlZC4KPiBAQCAtMzQ0Myw2ICszNDU2 LDEwIEBAIHN0YXRpYyBpbnQgc2hfcGFnZV9mYXVsdChzdHJ1Y3QgdmNwdSAqdiwKPiAgICAgICAg ICAgICAgc2hhZG93X2NvbnRpbnVlX2VtdWxhdGlvbigmZW11bF9jdHh0LCByZWdzKTsKPiAgICAg ICAgICAgICAgdi0+YXJjaC5wYWdpbmcubGFzdF93cml0ZV93YXNfcHQgPSAwOwo+ICAgICAgICAg ICAgICByID0geDg2X2VtdWxhdGUoJmVtdWxfY3R4dC5jdHh0LCBlbXVsX29wcyk7Cj4gKwo+ICsg ICAgICAgICAgICBpZiAoIHIgPT0gWDg2RU1VTF9FWENFUFRJT04gJiYgZW11bF9jdHh0LmN0eHQu ZXZlbnRfcGVuZGluZyApCj4gKyAgICAgICAgICAgICAgICByID0gWDg2RU1VTF9VTkhBTkRMRUFC TEU7Cj4gKwo+ICAgICAgICAgICAgICBpZiAoIHIgPT0gWDg2RU1VTF9PS0FZICYmICFlbXVsX2N0 eHQuY3R4dC5yZXRpcmUucmF3ICkKPiAgICAgICAgICAgICAgewo+ICAgICAgICAgICAgICAgICAg ZW11bGF0aW9uX2NvdW50Kys7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0 ZS94ODZfZW11bGF0ZS5jCj4gYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUu Ywo+IGluZGV4IDZhZGZkYmUuLjBmYjJjMDkgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L3g4 Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMKPiArKysgYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUv eDg2X2VtdWxhdGUuYwo+IEBAIC02ODAsOSArNjgwLDggQEAgc3RhdGljIGlubGluZSBpbnQgbWtl Yyh1aW50OF90IGUsIGludDMyX3QgZWMsIC4uLikKPiAKPiAgI2RlZmluZSBnZW5lcmF0ZV9leGNl cHRpb25faWYocCwgZSwgZWMuLi4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4g ICh7ICBpZiAoIChwKSApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAo+IC0gICAgICAgIGZhaWxfaWYob3BzLT5pbmplY3RfaHdfZXhj ZXB0aW9uID09IE5VTEwpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAtICAgICAgICByYyA9 IG9wcy0+aW5qZWN0X2h3X2V4Y2VwdGlvbihlLCBta2VjKGUsICMjZWMsIDApLCBjdHh0KSAgICAg ICAgICBcCj4gLSAgICAgICAgICAgID8gOiBYODZFTVVMX0VYQ0VQVElPTjsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIHg4Nl9lbXVsX2h3X2V4Y2Vw dGlvbihlLCBta2VjKGUsICMjZWMsIDApLCBjdHh0KTsgICAgICAgICAgICAgICAgIFwKPiArICAg ICAgICByYyA9IFg4NkVNVUxfRVhDRVBUSU9OOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCj4gICAgICAgICAgZ290byBkb25lOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICAgICAgfSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKPiAgfSkKPiBAQCAtMTYwNCw5ICsxNjAzLDYgQEAgc3RhdGljIGludCBpbmplY3Rfc3dpbnQo ZW51bSB4ODZfc3dpbnRfdHlwZSB0eXBlLAo+ICB7Cj4gICAgICBpbnQgcmMsIGVycm9yX2NvZGUs IGZhdWx0X3R5cGUgPSBFWENfR1A7Cj4gCj4gLSAgICBmYWlsX2lmKG9wcy0+aW5qZWN0X3N3X2lu dGVycnVwdCA9PSBOVUxMKTsKPiAtICAgIGZhaWxfaWYob3BzLT5pbmplY3RfaHdfZXhjZXB0aW9u ID09IE5VTEwpOwo+IC0KPiAgICAgIC8qCj4gICAgICAgKiBXaXRob3V0IGhhcmR3YXJlIHN1cHBv cnQsIGluamVjdGluZyBzb2Z0d2FyZSBpbnRlcnJ1cHRzL2V4Y2VwdGlvbnMgaXMKPiAgICAgICAq IHByb2JsZW1hdGljLgo+IEBAIC0xNzAxLDcgKzE2OTcsOCBAQCBzdGF0aWMgaW50IGluamVjdF9z d2ludChlbnVtIHg4Nl9zd2ludF90eXBlIHR5cGUsCj4gICAgICAgICAgfQo+ICAgICAgfQo+IAo+ IC0gICAgcmMgPSBvcHMtPmluamVjdF9zd19pbnRlcnJ1cHQodHlwZSwgdmVjdG9yLCBpbnNuX2xl biwgY3R4dCk7Cj4gKyAgICB4ODZfZW11bF9zb2Z0d2FyZV9ldmVudCh0eXBlLCB2ZWN0b3IsIGlu c25fbGVuLCBjdHh0KTsKPiArICAgIHJjID0gWDg2RU1VTF9PS0FZOwo+IAo+ICAgZG9uZToKPiAg ICAgIHJldHVybiByYzsKPiBAQCAtMTkwOSw2ICsxOTA2LDcgQEAgeDg2X2RlY29kZSgKPiAKPiAg ICAgIC8qIEluaXRpYWxpc2Ugb3V0cHV0IHN0YXRlIGluIHg4Nl9lbXVsYXRlX2N0eHQgKi8KPiAg ICAgIGN0eHQtPnJldGlyZS5yYXcgPSAwOwo+ICsgICAgeDg2X2VtdWxfcmVzZXRfZXZlbnQoY3R4 dCk7Cj4gCj4gICAgICBvcF9ieXRlcyA9IGRlZl9vcF9ieXRlcyA9IGFkX2J5dGVzID0gZGVmX2Fk X2J5dGVzID0gY3R4dC0KPiA+YWRkcl9zaXplLzg7Cj4gICAgICBpZiAoIG9wX2J5dGVzID09IDgg KQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuaAo+ IGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmgKPiBpbmRleCBkYTg5MjRi Li4zYzBiMjVkIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11 bGF0ZS5oCj4gKysrIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmgKPiBA QCAtMzk2LDE5ICszOTYsNiBAQCBzdHJ1Y3QgeDg2X2VtdWxhdGVfb3BzCj4gICAgICAgICAgdW5z aWduZWQgaW50ICplZHgsCj4gICAgICAgICAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQp Owo+IAo+IC0gICAgLyogaW5qZWN0X2h3X2V4Y2VwdGlvbiAqLwo+IC0gICAgaW50ICgqaW5qZWN0 X2h3X2V4Y2VwdGlvbikoCj4gLSAgICAgICAgdWludDhfdCB2ZWN0b3IsCj4gLSAgICAgICAgaW50 MzJfdCBlcnJvcl9jb2RlLAo+IC0gICAgICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0 KTsKPiAtCj4gLSAgICAvKiBpbmplY3Rfc3dfaW50ZXJydXB0ICovCj4gLSAgICBpbnQgKCppbmpl Y3Rfc3dfaW50ZXJydXB0KSgKPiAtICAgICAgICBlbnVtIHg4Nl9zd2ludF90eXBlIHR5cGUsCj4g LSAgICAgICAgdWludDhfdCB2ZWN0b3IsCj4gLSAgICAgICAgdWludDhfdCBpbnNuX2xlbiwKPiAt ICAgICAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCk7Cj4gLQo+ICAgICAgLyoKPiAg ICAgICAqIGdldF9mcHU6IExvYWQgZW11bGF0ZWQgZW52aXJvbm1lbnQncyBGUFUgc3RhdGUgb250 byBwcm9jZXNzb3IuCj4gICAgICAgKiAgQGV4bl9jYWxsYmFjazogT24gYW55IEZQVSBvciBTSU1E IGV4Y2VwdGlvbiwgcGFzcyBjb250cm9sIHRvCj4gQEAgLTQ4Niw2ICs0NzMsOSBAQCBzdHJ1Y3Qg eDg2X2VtdWxhdGVfY3R4dAo+ICAgICAgICAgICAgICBib29sIHNpbmdsZXN0ZXA6MTsgICAvKiBT aW5nbGVzdGVwcGluZyB3YXMgYWN0aXZlLiAqLwo+ICAgICAgICAgIH07Cj4gICAgICB9IHJldGly ZTsKPiArCj4gKyAgICBib29sIGV2ZW50X3BlbmRpbmc7Cj4gKyAgICBzdHJ1Y3QgeDg2X2V2ZW50 IGV2ZW50Owo+ICB9Owo+IAo+ICAvKgo+IEBAIC01ODQsNiArNTc0LDE5IEBAIHN0YXRpYyBpbmxp bmUgaW50IHg4Nl9lbXVsYXRlX3dyYXBwZXIoCj4gICAgICBpZiAoIHJjID09IFg4NkVNVUxfRVhD RVBUSU9OICkKPiAgICAgICAgICBBU1NFUlQoY3R4dC0+cmVncy0+ZWlwID09IG9yaWdfZWlwKTsK PiAKPiArICAgIC8qCj4gKyAgICAgKiBUT0RPOiBNYWtlIHRoaXMgdHJ1ZToKPiArICAgICAqCj4g KyAgICBBU1NFUlQoY3R4dC0+ZXZlbnRfcGVuZGluZyA9PSAocmMgPT0gWDg2RU1VTF9FWENFUFRJ T04pKTsKPiArICAgICAqCj4gKyAgICAgKiBTb21lIGNvZGVwYXRocyBzdGlsbCByYWlzZSBleGNl cHRpb25zIGJlaGluZCB0aGUgYmFjayBvZiB0aGUKPiArICAgICAqIGVtdWxhdG9yLiAoaS5lLiBy ZXR1cm4gWDg2RU1VTF9FWENFUFRJT04gYnV0IHdpdGhvdXQKPiArICAgICAqIGV2ZW50X3BlbmRp bmcgYmVpbmcgc2V0KS4gIEluIHRoZSBtZWFudGltZSwgdXNlIGEgc2xpZ2h0bHkKPiArICAgICAq IHJlbGF4ZWQgY2hlY2suLi4KPiArICAgICAqLwo+ICsgICAgaWYgKCBjdHh0LT5ldmVudF9wZW5k aW5nICkKPiArICAgICAgICBBU1NFUlQocmMgPT0gWDg2RU1VTF9FWENFUFRJT04pOwo+ICsKPiAg ICAgIHJldHVybiByYzsKPiAgfQo+IAo+IEBAIC02MzMsNCArNjM2LDUxIEBAIHZvaWQgeDg2X2Vt dWxhdGVfZnJlZV9zdGF0ZShzdHJ1Y3QKPiB4ODZfZW11bGF0ZV9zdGF0ZSAqc3RhdGUpOwo+IAo+ ICAjZW5kaWYKPiAKPiArc3RhdGljIGlubGluZSB2b2lkIHg4Nl9lbXVsX2h3X2V4Y2VwdGlvbigK PiArICAgIHVuc2lnbmVkIGludCB2ZWN0b3IsIGludCBlcnJvcl9jb2RlLCBzdHJ1Y3QgeDg2X2Vt dWxhdGVfY3R4dCAqY3R4dCkKPiArewo+ICsgICAgQVNTRVJUKCFjdHh0LT5ldmVudF9wZW5kaW5n KTsKPiArCj4gKyAgICBjdHh0LT5ldmVudC52ZWN0b3IgPSB2ZWN0b3I7Cj4gKyAgICBjdHh0LT5l dmVudC50eXBlID0gWDg2X0VWRU5UVFlQRV9IV19FWENFUFRJT047Cj4gKyAgICBjdHh0LT5ldmVu dC5lcnJvcl9jb2RlID0gZXJyb3JfY29kZTsKPiArCj4gKyAgICBjdHh0LT5ldmVudF9wZW5kaW5n ID0gdHJ1ZTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkIHg4Nl9lbXVsX3NvZnR3YXJl X2V2ZW50KAo+ICsgICAgZW51bSB4ODZfc3dpbnRfdHlwZSB0eXBlLCB1aW50OF90IHZlY3Rvciwg dWludDhfdCBpbnNuX2xlbiwKPiArICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQo+ ICt7Cj4gKyAgICBBU1NFUlQoIWN0eHQtPmV2ZW50X3BlbmRpbmcpOwo+ICsKPiArICAgIHN3aXRj aCAoIHR5cGUgKQo+ICsgICAgewo+ICsgICAgY2FzZSB4ODZfc3dpbnRfaWNlYnA6Cj4gKyAgICAg ICAgY3R4dC0+ZXZlbnQudHlwZSA9IFg4Nl9FVkVOVFRZUEVfUFJJX1NXX0VYQ0VQVElPTjsKPiAr ICAgICAgICBicmVhazsKPiArCj4gKyAgICBjYXNlIHg4Nl9zd2ludF9pbnQzOgo+ICsgICAgY2Fz ZSB4ODZfc3dpbnRfaW50bzoKPiArICAgICAgICBjdHh0LT5ldmVudC50eXBlID0gWDg2X0VWRU5U VFlQRV9TV19FWENFUFRJT047Cj4gKyAgICAgICAgYnJlYWs7Cj4gKwo+ICsgICAgY2FzZSB4ODZf c3dpbnRfaW50Ogo+ICsgICAgICAgIGN0eHQtPmV2ZW50LnR5cGUgPSBYODZfRVZFTlRUWVBFX1NX X0lOVEVSUlVQVDsKPiArICAgICAgICBicmVhazsKPiArICAgIH0KPiArCj4gKyAgICBjdHh0LT5l dmVudC52ZWN0b3IgPSB2ZWN0b3I7Cj4gKyAgICBjdHh0LT5ldmVudC5lcnJvcl9jb2RlID0gWDg2 X0VWRU5UX05PX0VDOwo+ICsgICAgY3R4dC0+ZXZlbnQuaW5zbl9sZW4gPSBpbnNuX2xlbjsKPiAr Cj4gKyAgICBjdHh0LT5ldmVudF9wZW5kaW5nID0gdHJ1ZTsKPiArfQo+ICsKPiArc3RhdGljIGlu bGluZSB2b2lkIHg4Nl9lbXVsX3Jlc2V0X2V2ZW50KHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpj dHh0KQo+ICt7Cj4gKyAgICBjdHh0LT5ldmVudF9wZW5kaW5nID0gZmFsc2U7Cj4gKyAgICBjdHh0 LT5ldmVudCA9IChzdHJ1Y3QgeDg2X2V2ZW50KXt9Owo+ICt9Cj4gKwo+ICAjZW5kaWYgLyogX19Y ODZfRU1VTEFURV9IX18gKi8KPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0v ZW11bGF0ZS5oIGIveGVuL2luY2x1ZGUvYXNtLQo+IHg4Ni9odm0vZW11bGF0ZS5oCj4gaW5kZXgg M2I3ZWMzMy4uZDY0ZDgzNCAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9l bXVsYXRlLmgKPiArKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9lbXVsYXRlLmgKPiBAQCAt MjksOSArMjksNiBAQCBzdHJ1Y3QgaHZtX2VtdWxhdGVfY3R4dCB7Cj4gICAgICB1bnNpZ25lZCBs b25nIHNlZ19yZWdfYWNjZXNzZWQ7Cj4gICAgICB1bnNpZ25lZCBsb25nIHNlZ19yZWdfZGlydHk7 Cj4gCj4gLSAgICBib29sX3QgZXhuX3BlbmRpbmc7Cj4gLSAgICBzdHJ1Y3QgeDg2X2V2ZW50IHRy YXA7Cj4gLQo+ICAgICAgdWludDMyX3QgaW50cl9zaGFkb3c7Cj4gCj4gICAgICBib29sX3Qgc2V0 X2NvbnRleHQ7Cj4gLS0KPiAyLjEuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhl bi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=