From mboxrd@z Thu Jan 1 00:00:00 1970 From: Razvan Cojocaru Subject: Re: [PATCH v1] x86/hvm: Generic instruction re-execution mechanism for execute faults Date: Thu, 22 Nov 2018 17:25:02 +0200 Message-ID: References: <20181116100624.21977-1-aisaila@bitdefender.com> <20181116170412.xrwuun3cqxll22l3@mac> <20181122100554.pyqqa5iw6g27erkv@mac> <7efdfb5e-044b-f2a3-6562-d3468997096a@bitdefender.com> <20181122105821.6ihjcq5dy2lqjj6j@mac> <98f57a8a-288d-45ec-ef01-889fce63eeff@bitdefender.com> <20181122144924.ffy6xxwqugoj24nj@mac> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gPqqt-0005gQ-Bv for xen-devel@lists.xenproject.org; Thu, 22 Nov 2018 15:25:11 +0000 In-Reply-To: <20181122144924.ffy6xxwqugoj24nj@mac> Content-Language: en-US-large List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= Cc: "kevin.tian@intel.com" , "tamas@tklengyel.com" , "wei.liu2@citrix.com" , "jun.nakajima@intel.com" , "george.dunlap@eu.citrix.com" , "andrew.cooper3@citrix.com" , =?UTF-8?Q?Mihai_Don=c8=9bu?= , Andrei Vlad LUTAS , "jbeulich@suse.com" , Alexandru Stefan ISAILA , "xen-devel@lists.xenproject.org" , Anshul Makkar List-Id: xen-devel@lists.xenproject.org T24gMTEvMjIvMTggNDo0OSBQTSwgUm9nZXIgUGF1IE1vbm7DqSB3cm90ZToKPiBPbiBUaHUsIE5v diAyMiwgMjAxOCBhdCAwMjo0ODowN1BNICswMjAwLCBSYXp2YW4gQ29qb2NhcnUgd3JvdGU6Cj4+ IE9uIDExLzIyLzE4IDEyOjU4IFBNLCBSb2dlciBQYXUgTW9ubsOpIHdyb3RlOgo+Pj4gT24gVGh1 LCBOb3YgMjIsIDIwMTggYXQgMTI6MTQ6NTlQTSArMDIwMCwgUmF6dmFuIENvam9jYXJ1IHdyb3Rl Ogo+Pj4+IE9uIDExLzIyLzE4IDEyOjA1IFBNLCBSb2dlciBQYXUgTW9ubsOpIHdyb3RlOgo+Pj4+ PiBPbiBXZWQsIE5vdiAyMSwgMjAxOCBhdCAwODo1NTo0OFBNICswMjAwLCBSYXp2YW4gQ29qb2Nh cnUgd3JvdGU6Cj4+Pj4+PiBPbiAxMS8xNi8xOCA3OjA0IFBNLCBSb2dlciBQYXUgTW9ubsOpIHdy b3RlOgo+Pj4+Pj4+PiArICAgICAgICAgICAgaWYgKCBhID09IHYgKQo+Pj4+Pj4+PiArICAgICAg ICAgICAgICAgIGNvbnRpbnVlOwo+Pj4+Pj4+PiArCj4+Pj4+Pj4+ICsgICAgICAgICAgICAvKiBQ YXVzZSwgc3luY2VkLiAqLwo+Pj4+Pj4+PiArICAgICAgICAgICAgd2hpbGUgKCAhYS0+YXJjaC5p bl9ob3N0ICkKPj4+Pj4+PiBXaHkgbm90IHVzZSBhLT5pc19ydW5uaW5nIGFzIGEgd2F5IHRvIGtu b3cgd2hldGhlciB0aGUgdkNQVSBpcwo+Pj4+Pj4+IHJ1bm5pbmc/Cj4+Pj4+Pj4KPj4+Pj4+PiBJ IHRoaW5rIHRoZSBsb2dpYyBvZiB1c2luZyB2Y3B1X3BhdXNlIGFuZCBleHBlY3RpbmcgdGhlIHJ1 bm5pbmcgdmNwdQo+Pj4+Pj4+IHRvIHRha2UgYSB2bWV4aXQgYW5kIHRodXMgc2V0IGluX2hvc3Qg aXMgd3JvbmcgYmVjYXVzZSBhIHZjcHUgdGhhdAo+Pj4+Pj4+IHdhc24ndCBydW5uaW5nIHdoZW4g dmNwdV9wYXVzZV9ub3N5bmMgaXMgY2FsbGVkIHdvbid0IGdldCBzY2hlZHVsZWQKPj4+Pj4+PiBh bnltb3JlLCB0aHVzIG5vdCB0YWtpbmcgYSB2bWV4aXQgYW5kIHRoaXMgZnVuY3Rpb24gd2lsbCBs b2NrdXAuCj4+Pj4+Pj4KPj4+Pj4+PiBJIGRvbid0IHRoaW5rIHlvdSBuZWVkIHRoZSBpbl9ob3N0 IGJvb2xlYW4gYXQgYWxsLgo+Pj4+Pj4+Cj4+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgY3B1X3Jl bGF4KCk7Cj4+Pj4+Pj4gSXMgdGhpcyByZWFsbHkgYmV0dGVyIHRoYW4gdXNpbmcgdmNwdV9wYXVz ZT8KPj4+Pj4+Pgo+Pj4+Pj4+IEkgYXNzdW1lIHRoaXMgaXMgZG9uZSB0byBhdm9pZCB3YWl0aW5n IG9uIGVhY2ggdmNwdSwgYW5kIGluc3RlYWQgZG9pbmcKPj4+Pj4+PiBpdCBoZXJlIGxpa2VseSBt ZWFucyBsZXNzIHdhaXQgdGltZT8KPj4+Pj4+Cj4+Pj4+PiBUaGUgcHJvYmxlbSB3aXRoIHBsYWlu IHZjcHVfcGF1c2UoKSBpcyB0aGF0IHdlIHdlcmVuJ3QgYWJsZSB0byB1c2UgaXQsCj4+Pj4+PiBm b3IgdGhlIHNhbWUgcmVhc29uICh3aGljaCByZW1haW5zIHVuY2xlYXIgYXMgb2YgeWV0KSB0aGF0 IHdlIGNvdWxkbid0Cj4+Pj4+PiB1c2UgYS0+aXNfcnVubmluZzogd2UgZ2V0IENQVSBzdHVjayBo eXBlcnZpc29yIGNyYXNoZXMgdGhhdCB3YXkuIEhlcmUncwo+Pj4+Pj4gb25lIHRoYXQgdXNlcyB0 aGUgc2FtZSBsb2dpYywgYnV0IGxvb3BzIG9uIGEtPmlzX3J1bm5pbmcgaW5zdGVhZCBvZgo+Pj4+ Pj4gIWEtPmFyY2guaW5faG9zdDoKPj4+Cj4+PiBbLi4uXQo+Pj4KPj4+Pj4+IFNvbWUgc2NoZWR1 bGVyIG1hZ2ljIGFwcGVhcnMgdG8gaGFwcGVuIGhlcmUgd2hlcmUgaXQgaXMgdW5jbGVhciB3aHkK Pj4+Pj4+IGlzX3J1bm5pbmcgZG9lc24ndCBzZWVtIHRvIGVuZCB1cCBiZWluZyAwIGFzIGV4cGVj dGVkIGluIG91ciBjYXNlLiBXZSdsbAo+Pj4+Pj4ga2VlcCBkaWdnaW5nLgo+Pj4+Pgo+Pj4+PiBU aGVyZSBzZWVtcyB0byBiZSBzb21lIGtpbmQgb2YgZGVhZGxvY2sgYmV0d2Vlbgo+Pj4+PiB2bXhf c3RhcnRfcmVleGVjdXRlX2luc3RydWN0aW9uIGFuZCBoYXBfdHJhY2tfZGlydHlfdnJhbS9oYW5k bGVfbW1pby4KPj4+Pj4gQXJlIHlvdSBob2xkaW5nIGEgbG9jayB3aGlsZSB0cnlpbmcgdG8gcHV0 IHRoZSBvdGhlciB2Y3B1cyB0byBzbGVlcD8KPj4+Pgo+Pj4+IGQtPmFyY2gucmV4ZWNfbG9jaywg YnV0IEkgZG9uJ3Qgc2VlIGhvdyB0aGF0IHdvdWxkIG1hdHRlciBpbiB0aGlzIGNhc2UuCj4+Pgo+ Pj4gVGhlIHRyYWNlIGZyb20gcENQVSMwOgo+Pj4KPj4+IChYRU4pIFsgMzY2OC4wMTY5ODldIFJG TEFHUzogMDAwMDAwMDAwMDAwMDIwMiAgIENPTlRFWFQ6IGh5cGVydmlzb3IgKGQwdjApCj4+PiBb Li4uXQo+Pj4gKFhFTikgWyAzNjY4LjI3NTQxN10gWGVuIGNhbGwgdHJhY2U6Cj4+PiAoWEVOKSBb IDM2NjguMjc4NzE0XSAgICBbPGZmZmY4MmQwODAxMzI3ZDI+XSB2Y3B1X3NsZWVwX3N5bmMrMHg0 MC8weDcxCj4+PiAoWEVOKSBbIDM2NjguMjg0OTUyXSAgICBbPGZmZmY4MmQwODAxMDczNWI+XSBk b21haW4uYyNkb19kb21haW5fcGF1c2UrMHgzMy8weDRmCj4+PiAoWEVOKSBbIDM2NjguMjkxOTcz XSAgICBbPGZmZmY4MmQwODAxMDg3OWE+XSBkb21haW5fcGF1c2UrMHgyNS8weDI3Cj4+PiAoWEVO KSBbIDM2NjguMjk3OTUyXSAgICBbPGZmZmY4MmQwODAyNDVlNjk+XSBoYXBfdHJhY2tfZGlydHlf dnJhbSsweDJjMS8weDRhNwo+Pj4gKFhFTikgWyAzNjY4LjMwNDc5N10gICAgWzxmZmZmODJkMDgw MWRkOGY1Pl0gZG9faHZtX29wKzB4MThiZS8weDJiNTgKPj4+IChYRU4pIFsgMzY2OC4zMTA4NjRd ICAgIFs8ZmZmZjgyZDA4MDE3MmFjYT5dIHB2X2h5cGVyY2FsbCsweDFlNS8weDQwMgo+Pj4gKFhF TikgWyAzNjY4LjMxNzAxN10gICAgWzxmZmZmODJkMDgwMjUwODk5Pl0gZW50cnkubyN0ZXN0X2Fs bF9ldmVudHMrMC8weDNkCj4+Pgo+Pj4gU2hvd3MgdGhlcmUncyBhbiBoeXBlcmNhbGwgZXhlY3V0 ZWQgZnJvbSBEb20wIHRoYXQncyB0cnlpbmcgdG8gcGF1c2UKPj4+IHRoZSBkb21haW4sIHRodXMg cGF1c2luZyBhbGwgdGhlIHZDUFVzLgo+Pj4KPj4+IFRoZW4gcENQVSMzOgo+Pj4KPj4+IChYRU4p IFsgMzY2OS4wNjI4NDFdIFJGTEFHUzogMDAwMDAwMDAwMDAwMDIwMiAgIENPTlRFWFQ6IGh5cGVy dmlzb3IgKGQxdjApCj4+PiBbLi4uXQo+Pj4gKFhFTikgWyAzNjY5LjMyMjgzMl0gWGVuIGNhbGwg dHJhY2U6Cj4+PiAoWEVOKSBbIDM2NjkuMzI2MTI4XSAgICBbPGZmZmY4MmQwODAyMTAwNmE+XSB2 bXhfc3RhcnRfcmVleGVjdXRlX2luc3RydWN0aW9uKzB4MTA3LzB4NjhhCj4+PiAoWEVOKSBbIDM2 NjkuMzMzOTI1XSAgICBbPGZmZmY4MmQwODAyMTBiM2U+XSBwMm1fbWVtX2FjY2Vzc19jaGVjaysw eDU1MS8weDY0ZAo+Pj4gKFhFTikgWyAzNjY5LjM0MDc3NF0gICAgWzxmZmZmODJkMDgwMWRlZTll Pl0gaHZtX2hhcF9uZXN0ZWRfcGFnZV9mYXVsdCsweDJmMi8weDYzMQo+Pj4gKFhFTikgWyAzNjY5 LjM0ODA1MV0gICAgWzxmZmZmODJkMDgwMjAyYzAwPl0gdm14X3ZtZXhpdF9oYW5kbGVyKzB4MTU2 Yy8weDFlNDUKPj4+IChYRU4pIFsgMzY2OS4zNTQ4OTldICAgIFs8ZmZmZjgyZDA4MDIwODIwYz5d IHZteF9hc21fdm1leGl0X2hhbmRsZXIrMHhlYy8weDI1MAo+Pj4KPj4+IFNlZW1zIHRvIGJlIGJs b2NrZWQgaW4gdm14X3N0YXJ0X3JlZXhlY3V0ZV9pbnN0cnVjdGlvbiwgYW5kIHRodXMgbm90Cj4+ PiBnZXR0aW5nIHBhdXNlZCBhbmQgdHJpZ2dlcmluZyB0aGUgd2F0Y2hkb2cgb24gcENQVSMwPwo+ Pj4KPj4+IFlvdSBzaG91bGQgY2hlY2sgb24gd2hpY2ggdkNQVSBpcyB0aGUgdHJhY2UgZnJvbSBw Q1BVIzAgd2FpdGluZywgaWYKPj4+IHRoYXQncyB0aGUgdkNQVSBydW5uaW5nIG9uIHBDUFUjMyAo ZDF2MCkgeW91IHdpbGwgaGF2ZSB0byBjaGVjayB3aGF0J3MKPj4+IHRha2luZyBzdWNoIGEgbG9u ZyB0aW1lIGluIHZteF9zdGFydF9yZWV4ZWN1dGVfaW5zdHJ1Y3Rpb24uCj4+Cj4+IFJpZ2h0LCBz byB0aGlzIGlzIHdoYXQgYXBwZWFycyB0byBiZSBoYXBwZW5pbmcsIGlmIHRoZSBvdXRwdXQgb2Yg bXkgdGVzdAo+PiBpcyB0byBiZSB0cnVzdGVkOiBodHRwczovL3Bhc3RlYmluLmNvbS9ZRURxTnV3 aAo+Pgo+PiAxLiB2bXhfc3RhcnRfcmVleGVjdXRlX2luc3RydWN0aW9uKCkgcGF1c2VzIGFsbCBW Q1BVcyBidXQgc2VsZiAod2hpY2gKPj4gYXBwZWFycyB0byBiZSBWQ1BVIDEpOgo+Pgo+PiAoWEVO KSBbICAxOTUuNDI3MTQxXSAwIHBhdXNlX2NvdW50IDAKPj4gKFhFTikgWyAgMTk1LjQyNzE0Ml0g MiBwYXVzZV9jb3VudCAwCj4+IChYRU4pIFsgIDE5NS40MjcxNDNdIDMgcGF1c2VfY291bnQgMAo+ PiAoWEVOKSBbICAxOTUuNDI3MTQ0XSA0IHBhdXNlX2NvdW50IDAKPj4gKFhFTikgWyAgMTk1LjQy NzE0Nl0gNSBwYXVzZV9jb3VudCAwCj4+IChYRU4pIFsgIDE5NS40MjcxNDddIDYgcGF1c2VfY291 bnQgMAo+PiAoWEVOKSBbICAxOTUuNDI3MTQ4XSA3IHBhdXNlX2NvdW50IDAKPiAKPiBUaGUgZGlm ZiBiZWxvdyBkb2Vzbid0IHNob3cgd2hlcmUgeW91IGFkZCB0aGlzIG1lc3NhZ2UsIG5laXRoZXIK PiB3aGF0J3MgYWN0dWFsbHkgcHJpbnRpbmcuIEkgZ3Vlc3MgdGhlIGZpcnN0IG51bWJlciBpcyB0 aGUgdkNQVSBJRCwgYW5kCj4gdGhlIHNlY29uZCB0aGUgdmFsdWUgb2YgcGF1c2VfY291bnQgYXQg c29tZSBwb2ludD8KClllcywgZXhhY3RseS4gU28gdGhlIGFib3ZlIHRlbGxzIHVzIHRoYXQgVkNQ VXMgMCBhbmQgMi03IGhhdmUgYmVlbgpwYXVzZWQgKG5vc3luYykgYnkgdm14X3N0YXJ0X3JlZXhl Y3V0ZV9pbnN0cnVjdGlvbigpLCB3aGljaCBpcyBub3cgZG9pbmcKYSB3aGlsZSAoIGEtPmlzX3J1 bm5pbmcgKSBjcHVfcmVsYXgoKS4KCj4+IDIuIFRoZSBoeXBlcmNhbGwgaGFwcGVucywgd2hpY2gg Y2FsbHMgZG9tYWluX3BhdXNlKCksIHdoaWNoIEkndmUKPj4gbW9kaWZpZWQgdGh1czoKPj4KPj4g QEAgLTk1OSw3ICs5NjEsMTAgQEAgc3RhdGljIHZvaWQgZG9fZG9tYWluX3BhdXNlKHN0cnVjdCBk b21haW4gKmQsCj4+ICAgICAgYXRvbWljX2luYygmZC0+cGF1c2VfY291bnQpOwo+Pgo+PiAgICAg IGZvcl9lYWNoX3ZjcHUoIGQsIHYgKQo+PiArICAgIHsKPj4gKyAgICAgICAgcHJpbnRrKCJkb21h aW5fcGF1c2UgJWRcbiIsIHYtPnZjcHVfaWQpOwo+IAo+IENvdWxkIHlvdSBwcmludCBib3RoIHRo ZSBkb21haW4gYW5kIHRoZSB2Y3B1IGlkcz8KCk9mIGNvdXJzZSwgYnV0IEkgdGhpbmsgSSd2ZSBm b3VuZCB0aGUgaXNzdWUgKHBsZWFzZSBzZWUgYmVsb3cpLgoKPj4gICAgICAgICAgc2xlZXBfZm4o dik7Cj4+ICsgICAgfQo+Pgo+PiAgICAgIGFyY2hfZG9tYWluX3BhdXNlKGQpOwo+PiAgfQo+Pgo+ PiBhbmQgd2hpY2ggc2F5czoKPj4KPj4gKFhFTikgWyAgMTk1LjQ5MjA2NF0gZG9tYWluX3BhdXNl IDAKPiAKPiBUaGlzIGlzIHRoZSBoeXBlcmNhbGwgY29kZSB3YWl0aW5nIGZvciBkb21haW4gMSB2 Q1BVIDAgdG8gcGF1c2U/CgpZZXMuCgo+PiAzLiBBdCB0aGlzIHBvaW50LCBhY2NvcmRpbmcgdG8g YWRkcjJsaW5lLAo+PiB2bXhfc3RhcnRfcmVleGVjdXRlX2luc3RydWN0aW9uKCkgZG9lcyAid2hp bGUgKCBhLT5pc19ydW5uaW5nICkKPj4gY3B1X3JlbGF4KCk7IiBmb3IgYWxsIFZDUFVzIGJ1dCBp dHNlbGYuCj4gCj4gV2h5IGRvbid0IHlvdSBqdXN0IHN0YXJ0IGJ5IHVzaW5nOgo+IAo+IGZvcl9l YWNoX3ZjcHUoIGQsIHYgKQo+ICAgICBpZiAoIHYgIT0gY3VycmVudCApCj4gICAgICAgICB2Y3B1 X3BhdXNlKHYpOwo+IAo+IEluc3RlYWQgb2Ygb3Blbi1jb2RpbmcgaXQgaW4gdm14X3N0YXJ0X3Jl ZXhlY3V0ZV9pbnN0cnVjdGlvbi4KClRoYXQncyB0aGUgaW50ZW50aW9uIGlmIHdlIGNhbiBnZXQg aXQgdG8gd29yay4KCj4+IE5vdywgZDF2MCwgd2hpY2gsIGlmIEknbSByZWFkaW5nIHRoaXMgY29y cmVjdGx5LCBpcyB0aGUgVkNQVSB0aGF0Cj4+IGRvbWFpbl9wYXVzZSgpIGlzIHN0dWNrIHdhaXRp bmcgZm9yLCBkb2VzOgo+Pgo+PiAoWEVOKSBbICAyMDAuODI5ODc0XSBYZW4gY2FsbCB0cmFjZToK Pj4gKFhFTikgWyAgMjAwLjgzMzE2Nl0gICAgWzxmZmZmODJkMDgwMTI3OGM2Pl0KPj4gcXVldWVf cmVhZF9sb2NrX3Nsb3dwYXRoKzB4MjUvMHg0ZAo+PiAoWEVOKSBbICAyMDAuODQwMTg2XSAgICBb PGZmZmY4MmQwODAyMGMxZjY+XQo+PiBnZXRfcGFnZV9mcm9tX2dmbl9wMm0rMHgxNGUvMHgzYjAK Pj4gKFhFTikgWyAgMjAwLjg0NzEyMV0gICAgWzxmZmZmODJkMDgwMjQ3MjEzPl0KPj4gaGFwX3Ay bV9nYV90b19nZm5fNF9sZXZlbHMrMHg0OC8weDI5OQo+PiAoWEVOKSBbICAyMDAuODU0NDAwXSAg ICBbPGZmZmY4MmQwODAyNDc0ODA+XQo+PiBoYXBfZ3ZhX3RvX2dmbl80X2xldmVscysweDFjLzB4 MWUKPj4gKFhFTikgWyAgMjAwLjg2MTMzMV0gICAgWzxmZmZmODJkMDgwMjEyNzVjPl0gcGFnaW5n X2d2YV90b19nZm4rMHgxMGUvMHgxMWQKPj4gKFhFTikgWyAgMjAwLjg2NzkxOF0gICAgWzxmZmZm ODJkMDgwMWQ2NmUwPl0gaHZtLmMjX19odm1fY29weSsweDk4LzB4MzdmCj4+IChYRU4pIFsgIDIw MC44NzQzMjldICAgIFs8ZmZmZjgyZDA4MDFkODQ4ZD5dCj4+IGh2bV9mZXRjaF9mcm9tX2d1ZXN0 X3ZpcnRfbm9mYXVsdCsweDE0LzB4MTYKPj4gKFhFTikgWyAgMjAwLjg4MjEzMF0gICAgWzxmZmZm ODJkMDgwMWQxNDFhPl0KPj4gZW11bGF0ZS5jI19odm1fZW11bGF0ZV9vbmUrMHgxMTgvMHgyYmMK Pj4gKFhFTikgWyAgMjAwLjg4OTQ5Nl0gICAgWzxmZmZmODJkMDgwMWQxNmI0Pl0gaHZtX2VtdWxh dGVfb25lKzB4MTAvMHgxMgo+PiAoWEVOKSBbICAyMDAuODk1NzM1XSAgICBbPGZmZmY4MmQwODAx ZTA5MDI+XSBoYW5kbGVfbW1pbysweDUyLzB4YzkKPj4gKFhFTikgWyAgMjAwLjkwMTYyNl0gICAg WzxmZmZmODJkMDgwMWUwOWJhPl0KPj4gaGFuZGxlX21taW9fd2l0aF90cmFuc2xhdGlvbisweDQx LzB4NDMKPj4gKFhFTikgWyAgMjAwLjkwODk5NF0gICAgWzxmZmZmODJkMDgwMWRlZDFmPl0KPj4g aHZtX2hhcF9uZXN0ZWRfcGFnZV9mYXVsdCsweDEzMy8weDYzMQo+PiAoWEVOKSBbICAyMDAuOTE2 MjcxXSAgICBbPGZmZmY4MmQwODAyMDJjNDA+XQo+PiB2bXhfdm1leGl0X2hhbmRsZXIrMHgxNTZj LzB4MWU0NQo+PiAoWEVOKSBbICAyMDAuOTIzMTE3XSAgICBbPGZmZmY4MmQwODAyMDgyNGM+XQo+ PiB2bXhfYXNtX3ZtZXhpdF9oYW5kbGVyKzB4ZWMvMHgyNTAKPiAKPiBXaGF0IGxvY2sgaXMgaXQg d2FpdGluZyBvbj8gSXMgdGhpcyB0aGUgcGFnaW5nIGxvY2s/IElmIHNvIHlvdSB3aWxsCj4gaGF2 ZSB0byBmaWd1cmUgb3V0IHdobyBpcyBob2xkaW5nIHRoaXMgbG9jay4KCkl0IHR1cm5zIG91dCB0 aGF0IGl0J3MgdGhlIHAybSBsb2NrLiBJJ3ZlIGxvb2tlZCBhdCB0aGUgY29kZSBtb3JlCmNsb3Nl bHksIGFuZCBodm1faGFwX25lc3RlZF9wYWdlX2ZhdWx0KCkgdGFrZXMgYSBwMm0gbG9jazoKCjE5 MjMgICAgIC8qCjE5MjQgICAgICAqIFRha2UgYSBsb2NrIG9uIHRoZSBob3N0IHAybSBzcGVjdWxh dGl2ZWx5LCB0byBhdm9pZCBwb3RlbnRpYWwKMTkyNSAgICAgICogbG9ja2luZyBvcmRlciBwcm9i bGVtcyBsYXRlciBhbmQgdG8gaGFuZGxlIHVuc2hhcmUgZXRjLgoxOTI2ICAgICAgKi8KMTkyNyAg ICAgaG9zdHAybSA9IHAybV9nZXRfaG9zdHAybShjdXJyZCk7Cgp0aGVuIGVuZHMgdXAgY2FsbGlu ZyBwMm1fbWVtX2FjY2Vzc19jaGVjaygpIHdpdGggc2FpZCBsb2NrIHRha2VuLgoKVGhlbiBwMm1f bWVtX2FjY2Vzc19jaGVjaygpIGFsc28gZG9lcyBhIGJpdCBvZiBnZm5fbG9jayhwMm0sIGdmbiwg MCkKKGFsdGhvdWdoIGl0IGFsc28gdW5sb2NrcyB0aG9zZSBieSB0aGUgdGltZQp2bXhfc3RhcnRf cmVleGVjdXRlX2luc3RydWN0aW9uKCkgZ2V0cyBjYWxsZWQpLgoKQW5kIHRoZW4sIG9mIGNvdXJz ZSwgdm14X3N0YXJ0X3JlZXhlY3V0ZSgpIHJ1bnMsIGdldHMgc3R1Y2sgaW4gdGhhdCBsb29wCihp dCBkb2Vzbid0IG1hdHRlciBpZiB3ZSBtYW51YWxseSBsb29rIGF0IGlzX3J1bm5pbmcgb3IgY2Fs bAp2Y3B1X3BhdXNlKCksIHRoZSBlZmZlY3QgaXMgdGhlIHNhbWUpLCB3aGlsZSB0aGUgb3RoZXIg VkNQVSBlbmRzIHVwCnJ1bm5pbmcgZ2V0X3BhZ2VfZnJvbV9nZm5fcDJtKCksIHdoaWNoIHRyaWVz IHRvIGFsc28gbG9jayB0aGUgcDJtIGFuZApkZWFkbG9ja3MuCgpJJ3ZlIHBsYWNlZCBwcmludGso KXMgYmVmb3JlIGFuZCBhZnRlciBwMm1fcmVhZF9sb2NrKHAybSk7IGluIHRoZSBpZiAoCmxpa2Vs eSghcDJtX2xvY2tlZF9ieV9tZShwMm0pKSApIGNvbmRpdGlvbmFsIGluIGdldF9wYWdlX2Zyb21f Z2ZuX3AybSgpLAphbmQgaXQgc2VlbXMgdG8gY29uZmlybSB0aGlzIHRoZW9yeSAtIHRoZSBsYXN0 IHRoaW5nIHRoYXQgZ2V0cyBwcmludGVkCmJlZm9yZSB0aGUgY3Jhc2ggaXMgdGhlIGxpbmUgYmVm b3JlIHAybV9yZWFkX2xvY2socDJtKS4KClRoaXMgc2VlbXMgdG8gaW1wbHkgdGhhdCBpc19ydW5u aW5nIGdldHMgbXVjaCBsYXRlciB0aGFuIGluX2hvc3Qgd291bGQKaGF2ZSwgc28gd2l0aCB0aGUg aW5faG9zdCBjb2RlIHZteF9zdGFydF9yZWV4ZWN1dGVfaW5zdHJ1Y3Rpb24oKSAoYW5kIHNvCnAy bV9tZW1fYWNjZXNzX2NoZWNrKCkgYW5kIGh2bV9oYXBfbmVzdGVkX3BhZ2VfZmF1bHQoKSkgYXJl IGFibGUgdG8gZXhpdAppbiBhIHRpbWVseSBtYW5uZXIsIGFsbG93aW5nIGdldF9wYWdlX2Zyb21f Z2ZuX3AybSgpIHRvIHRha2UgdGhlIHAybQpsb2NrIGFmdGVyd2FyZHMgYW5kIHRoZSBzaG93IGdv ZXMgb24uCgo+IElzIHRoaXMgb24gdG9wIG9mIHBsYWluIHN0YWdpbmcsIG9yIGRvIHlvdSBoYXZl IG90aGVyIGNoYW5nZXMgYXBwbGllZAo+IHRvIFhlbj8KCk15IHRlc3RzIGFyZSBkb25lIG9uIGFu IG9sZGVyLCBYZW5TZXJ2ZXItcmVsYXRlZCA0LjcuNSBYZW4uIEkgYWxzbyBoYXZlCmEgcGF0Y2gg YXBwbGllZCB0aGF0IGR1bXBzIGFsbCB0aGUgQ1BVcyBvbiBjcmFzaCAob3RoZXJ3aXNlIEknZCBv bmx5IHNlZQpvbmUgb2YgdGhlbSB3aGljaCBpcyBub3QgdmVyeSBoZWxwZnVsIGluIHNpdHVhdGlv bnMgbGlrZSB0aGVzZSkgdGhhdApBbmRyZXcgaGFzIGtpbmRseSBwcm92aWRlZC4KCgpUaGFua3Ms ClJhenZhbgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0 cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==