From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: Re: [PATCH 2/4] x86: suppress SMAP and SMEP while running 32-bit PV guest code Date: Mon, 7 Mar 2016 16:59:18 +0000 Message-ID: <56DDB366.8020207@citrix.com> References: <56D97AC102000078000D9537@prv-mh.provo.novell.com> <56D97F4802000078000D9561@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xen.org with esmtp (Exim 4.84) (envelope-from ) id 1acyVB-0003l9-Mv for xen-devel@lists.xenproject.org; Mon, 07 Mar 2016 16:59:25 +0000 In-Reply-To: <56D97F4802000078000D9561@prv-mh.provo.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Jan Beulich , xen-devel Cc: Feng Wu , Keir Fraser List-Id: xen-devel@lists.xenproject.org T24gMDQvMDMvMTYgMTE6MjcsIEphbiBCZXVsaWNoIHdyb3RlOgo+IFNpbmNlIHN1Y2ggZ3Vlc3Rz JyBrZXJuZWwgY29kZSBydW5zIGluIHJpbmcgMSwgdGhlaXIgbWVtb3J5IGFjY2Vzc2VzLAo+IGF0 IHRoZSBwYWdpbmcgbGF5ZXIsIGFyZSBzdXBlcnZpc29yIG1vZGUgb25lcywgYW5kIGhlbmNlIHN1 YmplY3QgdG8KPiBTTUFQL1NNRVAgY2hlY2tzLiBTdWNoIGd1ZXN0cyBjYW5ub3QgYmUgZXhwZWN0 ZWQgdG8gYmUgYXdhcmUgb2YgdGhvc2UKPiB0d28gZmVhdHVyZXMgdGhvdWdoIChhbmQgc28gZmFy IHdlIGFsc28gZG9uJ3QgZXhwb3NlIHRoZSByZXNwZWN0aXZlCj4gZmVhdHVyZSBmbGFncyksIGFu ZCBoZW5jZSBtYXkgc3VmZmVyIHBhZ2UgZmF1bHRzIHRoZXkgY2Fubm90IGRlYWwgd2l0aC4KPgo+ IFdoaWxlIHRoZSBwbGFjZW1lbnQgb2YgdGhlIHJlLWVuYWJsaW5nIHNsaWdodGx5IHdlYWtlbnMg dGhlIGludGVuZGVkCj4gcHJvdGVjdGlvbiwgaXQgd2FzIHNlbGVjdGVkIHN1Y2ggdGhhdCA2NC1i aXQgcGF0aHMgd291bGQgcmVtYWluCj4gdW5hZmZlY3RlZCB3aGVyZSBwb3NzaWJsZS4gQXQgdGhl IGV4cGVuc2Ugb2YgYSBmdXJ0aGVyIHBlcmZvcm1hbmNlIGhpdAo+IHRoZSByZS1lbmFibGluZyBj b3VsZCBiZSBwdXQgcmlnaHQgbmV4dCB0byB0aGUgQ0xBQ3MuCj4KPiBOb3RlIHRoYXQgdGhpcyBp bnRyb2R1Y2VzIGEgbnVtYmVyIG9mIGV4dHJhIFRMQiBmbHVzaGVzIC0gQ1I0LlNNRVAKPiB0cmFu c2l0aW9uaW5nIGZyb20gMCB0byAxIGFsd2F5cyBjYXVzZXMgYSBmbHVzaCwgYW5kIGl0IHRyYW5z aXRpb25pbmcKPiBmcm9tIDEgdG8gMCBtYXkgYWxzbyBkby4KPgo+IFNpZ25lZC1vZmYtYnk6IEph biBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KPgo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9zZXR1 cC5jCj4gKysrIGIveGVuL2FyY2gveDg2L3NldHVwLmMKPiBAQCAtNjcsNiArNjcsOCBAQCBib29s ZWFuX3BhcmFtKCJzbWVwIiwgb3B0X3NtZXApOwo+ICBzdGF0aWMgYm9vbF90IF9faW5pdGRhdGEg b3B0X3NtYXAgPSAxOwo+ICBib29sZWFuX3BhcmFtKCJzbWFwIiwgb3B0X3NtYXApOwo+ICAKPiAr dW5zaWduZWQgbG9uZyBfX3JlYWRfbW9zdGx5IGNyNF9zbWVwX3NtYXBfbWFzazsKCkFyZSB3ZSBs aWFibGUgdG8gZ2FpbiBhbnkgb3RoZXIgY3I0IGZlYXR1cmVzIHdoaWNoIHdvdWxkIHdhbnQgdG8g YmUKaW5jbHVkZWQgaW4gdGhpcz8gIE1pZ2h0IGl0IGJlIHdpc2UgdG8gY2hvc2UgYSBzbGlnaHRs eSBtb3JlIGdlbmVyaWMKbmFtZSBzdWNoIGFzIGNyNF9wdjMyX21hc2sgPwoKPiAgI2RlZmluZSBT SEFET1dfQllURVMgMTYgLyogU2hhZG93IEVJUCArIHNoYWRvdyBoeXBlcmNhbGwgIyAqLwo+ICAj ZWxzZQo+ICAgICAgICAgIC8qIFJlbG9jYXRlIGFyZ3VtZW50IHJlZ2lzdGVycyBhbmQgemVyby1l eHRlbmQgdG8gNjQgYml0cy4gKi8KPiAtICAgICAgICBtb3ZsICAlZWF4LCVlYXggICAgICAgICAg ICAgIC8qIEh5cGVyY2FsbCAjICAqLwo+ICAgICAgICAgIHhjaGdsICVlY3gsJWVzaSAgICAgICAg ICAgICAgLyogQXJnIDIsIEFyZyA0ICovCj4gICAgICAgICAgbW92bCAgJWVkeCwlZWR4ICAgICAg ICAgICAgICAvKiBBcmcgMyAgICAgICAgKi8KPiAgICAgICAgICBtb3ZsICAlZWRpLCVyOGQgICAg ICAgICAgICAgIC8qIEFyZyA1ICAgICAgICAqLwo+IEBAIC0xNzQsMTAgKzE3NCw0MyBAQCBjb21w YXRfYmFkX2h5cGVyY2FsbDoKPiAgLyogJXJieDogc3RydWN0IHZjcHUsIGludGVycnVwdHMgZGlz YWJsZWQgKi8KPiAgRU5UUlkoY29tcGF0X3Jlc3RvcmVfYWxsX2d1ZXN0KQo+ICAgICAgICAgIEFT U0VSVF9JTlRFUlJVUFRTX0RJU0FCTEVECj4gKy5MY3I0X29yaWc6Cj4gKyAgICAgICAgQVNNX05P UDMgLyogbW92ICAgJWNyNCwgJXJheCAqLwo+ICsgICAgICAgIEFTTV9OT1A2IC8qIGFuZCAgICQu Li4sICVyYXggKi8KPiArICAgICAgICBBU01fTk9QMyAvKiBtb3YgICAlcmF4LCAlY3I0ICovCj4g KyAgICAgICAgLnB1c2hzZWN0aW9uIC5hbHRpbnN0cl9yZXBsYWNlbWVudCwgImF4Igo+ICsuTGNy NF9hbHQ6Cj4gKyAgICAgICAgbW92ICAgJWNyNCwgJXJheAo+ICsgICAgICAgIGFuZCAgICR+KFg4 Nl9DUjRfU01FUHxYODZfQ1I0X1NNQVApLCAlcmF4Cj4gKyAgICAgICAgbW92ICAgJXJheCwgJWNy NAo+ICsuTGNyNF9hbHRfZW5kOgo+ICsgICAgICAgIC5zZWN0aW9uIC5hbHRpbnN0cnVjdGlvbnMs ICJhIgo+ICsgICAgICAgIGFsdGluc3RydWN0aW9uX2VudHJ5IC5MY3I0X29yaWcsIC5MY3I0X2Fs dCwgWDg2X0ZFQVRVUkVfU01FUCwgMTIsIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoLkxjcjRfYWx0X2VuZCAtIC5MY3I0X2FsdCkKPiArICAgICAgICBhbHRpbnN0cnVjdGlvbl9l bnRyeSAuTGNyNF9vcmlnLCAuTGNyNF9hbHQsIFg4Nl9GRUFUVVJFX1NNQVAsIDEyLCBcCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKC5MY3I0X2FsdF9lbmQgLSAuTGNyNF9hbHQpCgpU aGVzZSAxMidzIGxvb2sgYXMgaWYgdGhleSBzaG91bGQgYmUgKC5MY3I0X2FsdCAtIC5MY3I0X29y aWcpLgoKPiArICAgICAgICAucG9wc2VjdGlvbgo+ICAgICAgICAgIFJFU1RPUkVfQUxMIGFkaj04 IGNvbXBhdD0xCj4gIC5MZnQwOiAgaXJldHEKPiAgICAgICAgICBfQVNNX1BSRV9FWFRBQkxFKC5M ZnQwLCBoYW5kbGVfZXhjZXB0aW9uKQo+ICAKPiArLyogVGhpcyBtdXN0bid0IG1vZGlmeSByZWdp c3RlcnMgb3RoZXIgdGhhbiAlcmF4LiAqLwo+ICtFTlRSWShjcjRfc21lcF9zbWFwX3Jlc3RvcmUp Cj4gKyAgICAgICAgbW92ICAgJWNyNCwgJXJheAo+ICsgICAgICAgIHRlc3QgICRYODZfQ1I0X1NN RVB8WDg2X0NSNF9TTUFQLCVlYXgKPiArICAgICAgICBqbnogICAwZgo+ICsgICAgICAgIG9yICAg IGNyNF9zbWVwX3NtYXBfbWFzayglcmlwKSwgJXJheAo+ICsgICAgICAgIG1vdiAgICVyYXgsICVj cjQKPiArICAgICAgICByZXQKPiArMDoKPiArICAgICAgICBhbmQgICBjcjRfc21lcF9zbWFwX21h c2soJXJpcCksICVlYXgKPiArICAgICAgICBjbXAgICBjcjRfc21lcF9zbWFwX21hc2soJXJpcCks ICVlYXgKPiArICAgICAgICBqZSAgICAxZgo+ICsgICAgICAgIEJVRwoKV2hhdCBpcyB0aGUgcHVy cG9zZSBvZiB0aGlzIGJ1Z2NoZWNrPyBJdCBsb29rcyBsaWtlIGl0IGlzIGNhdGNoaW5nIGEKbWlz bWF0Y2ggb2YgbWFza2VkIG9wdGlvbnMsIGJ1dCBJIGFtIG5vdCBjb21wbGV0ZWx5IHN1cmUuCgpG b3IgYWxsIG90aGVyIEFTTSBsZXZlbCBCVUcncywgSSBwdXQgYSBzaG9ydCBjb21tZW50IG9uIHRo ZSBzYW1lIGxpbmUsCnRvIGFpZCBwZW9wbGUgd2hvIGhpdCB0aGUgYnVnLgoKPiArMToKPiArICAg ICAgICB4b3IgICAlZWF4LCAlZWF4Cj4gKyAgICAgICAgcmV0Cj4gKwo+ICAvKiAlcmR4OiB0cmFw X2JvdW5jZSwgJXJieDogc3RydWN0IHZjcHUgKi8KPiAgRU5UUlkoY29tcGF0X3Bvc3RfaGFuZGxl X2V4Y2VwdGlvbikKPiAgICAgICAgICB0ZXN0YiAkVEJGX0VYQ0VQVElPTixUUkFQQk9VTkNFX2Zs YWdzKCVyZHgpCj4gQEAgLTE5MCw2ICsyMjMsNyBAQCBFTlRSWShjb21wYXRfcG9zdF9oYW5kbGVf ZXhjZXB0aW9uKQo+ICAvKiBTZWUgbHN0YXJfZW50ZXIgZm9yIGVudHJ5IHJlZ2lzdGVyIHN0YXRl LiAqLwo+ICBFTlRSWShjc3Rhcl9lbnRlcikKPiAgICAgICAgICBzdGkKPiArICAgICAgICBTTUVQ X1NNQVBfUkVTVE9SRQo+ICAgICAgICAgIG1vdnEgIDgoJXJzcCksJXJheCAvKiBSZXN0b3JlICVy YXguICovCj4gICAgICAgICAgbW92cSAgJEZMQVRfS0VSTkVMX1NTLDgoJXJzcCkKPiAgICAgICAg ICBwdXNocSAlcjExCj4gQEAgLTIyNSw2ICsyNTksNyBAQCBVTkxJS0VMWV9FTkQoY29tcGF0X3N5 c2NhbGxfZ3BmKQo+ICAgICAgICAgIGptcCAgIC5MY29tcGF0X2JvdW5jZV9leGNlcHRpb24KPiAg Cj4gIEVOVFJZKGNvbXBhdF9zeXNlbnRlcikKPiArICAgICAgICBTTUVQX1NNQVBfUkVTVE9SRQo+ ICAgICAgICAgIG1vdnEgIFZDUFVfdHJhcF9jdHh0KCVyYngpLCVyY3gKPiAgICAgICAgICBjbXBi ICAkVFJBUF9ncF9mYXVsdCxVUkVHU19lbnRyeV92ZWN0b3IoJXJzcCkKPiAgICAgICAgICBtb3Z6 d2wgVkNQVV9zeXNlbnRlcl9zZWwoJXJieCksJWVheAo+IEBAIC0yMzgsNiArMjczLDcgQEAgRU5U UlkoY29tcGF0X3N5c2VudGVyKQo+ICAgICAgICAgIGptcCAgIGNvbXBhdF90ZXN0X2FsbF9ldmVu dHMKPiAgCj4gIEVOVFJZKGNvbXBhdF9pbnQ4MF9kaXJlY3RfdHJhcCkKPiArICAgICAgICBTTUVQ X1NNQVBfUkVTVE9SRQo+ICAgICAgICAgIGNhbGwgIGNvbXBhdF9jcmVhdGVfYm91bmNlX2ZyYW1l Cj4gICAgICAgICAgam1wICAgY29tcGF0X3Rlc3RfYWxsX2V2ZW50cwo+ICAKPiAtLS0gYS94ZW4v YXJjaC94ODYveDg2XzY0L2VudHJ5LlMKPiArKysgYi94ZW4vYXJjaC94ODYveDg2XzY0L2VudHJ5 LlMKPiBAQCAtNDM0LDYgKzQzNCw3IEBAIEVOVFJZKGRvbV9jcmFzaF9zeW5jX2V4dGFibGUpCj4g IAo+ICBFTlRSWShjb21tb25faW50ZXJydXB0KQo+ICAgICAgICAgIFNBVkVfQUxMIENMQUMKPiAr ICAgICAgICBTTUVQX1NNQVBfUkVTVE9SRQo+ICAgICAgICAgIG1vdnEgJXJzcCwlcmRpCj4gICAg ICAgICAgY2FsbHEgZG9fSVJRCj4gICAgICAgICAgam1wIHJldF9mcm9tX2ludHIKPiBAQCAtNDU0 LDEzICs0NTUsNjQgQEAgRU5UUlkocGFnZV9mYXVsdCkKPiAgR0xPQkFMKGhhbmRsZV9leGNlcHRp b24pCj4gICAgICAgICAgU0FWRV9BTEwgQ0xBQwo+ICBoYW5kbGVfZXhjZXB0aW9uX3NhdmVkOgo+ ICsgICAgICAgIEdFVF9DVVJSRU5UKCVyYngpCj4gICAgICAgICAgdGVzdGIgJFg4Nl9FRkxBR1Nf SUY+PjgsVVJFR1NfZWZsYWdzKzEoJXJzcCkKPiAgICAgICAgICBqeiAgICBleGNlcHRpb25fd2l0 aF9pbnRzX2Rpc2FibGVkCj4gLSAgICAgICAgc3RpCj4gKwo+ICsuTHNtZXBfc21hcF9vcmlnOgo+ ICsgICAgICAgIGptcCAgIDBmCj4gKyAgICAgICAgLmlmIDAgLy8gR0FTIGJ1ZyAoYWZmZWN0aW5n IGF0IGxlYXN0IDIuMjIgLi4uIDIuMjYpCj4gKyAgICAgICAgLm9yZyAuTHNtZXBfc21hcF9vcmln ICsgKC5Mc21lcF9zbWFwX2FsdF9lbmQgLSAuTHNtZXBfc21hcF9hbHQpLCAweGNjCj4gKyAgICAg ICAgLmVsc2UKPiArICAgICAgICAvLyB3b3JzdCBjYXNlOiByZXggKyBvcGNvZGUgKyBtb2RybSAr IDQtYnl0ZSBkaXNwbGFjZW1lbnQKPiArICAgICAgICAuc2tpcCAoMSArIDEgKyAxICsgNCkgLSAy LCAweGNjCj4gKyAgICAgICAgLmVuZGlmCgpXaGljaCBidWcgaXMgdGhpcz8gIEhvdyBkb2VzIGl0 IG1hbmlmZXN0LiAgTW9yZSBnZW5lcmFsbHksIHdoYXQgaXMgdGhpcwphbHRlcm5hdGl2ZSB0cnlp bmcgdG8gYWNoaWV2ZT8KCj4gKyAgICAgICAgLnB1c2hzZWN0aW9uIC5hbHRpbnN0cl9yZXBsYWNl bWVudCwgImF4Igo+ICsuTHNtZXBfc21hcF9hbHQ6Cj4gKyAgICAgICAgbW92ICAgVkNQVV9kb21h aW4oJXJieCksJXJheAo+ICsuTHNtZXBfc21hcF9hbHRfZW5kOgo+ICsgICAgICAgIC5zZWN0aW9u IC5hbHRpbnN0cnVjdGlvbnMsICJhIgo+ICsgICAgICAgIGFsdGluc3RydWN0aW9uX2VudHJ5IC5M c21lcF9zbWFwX29yaWcsIC5Mc21lcF9zbWFwX2FsdCwgXAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFg4Nl9GRUFUVVJFX1NNRVAsIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoLkxzbWVwX3NtYXBfYWx0X2VuZCAtIC5Mc21lcF9zbWFwX2FsdCksIFwKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoLkxzbWVwX3NtYXBfYWx0X2VuZCAtIC5Mc21lcF9zbWFw X2FsdCkKPiArICAgICAgICBhbHRpbnN0cnVjdGlvbl9lbnRyeSAuTHNtZXBfc21hcF9vcmlnLCAu THNtZXBfc21hcF9hbHQsIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYODZfRkVB VFVSRV9TTUFQLCBcCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC5Mc21lcF9zbWFw X2FsdF9lbmQgLSAuTHNtZXBfc21hcF9hbHQpLCBcCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKC5Mc21lcF9zbWFwX2FsdF9lbmQgLSAuTHNtZXBfc21hcF9hbHQpCj4gKyAgICAgICAg LnBvcHNlY3Rpb24KPiArCj4gKyAgICAgICAgdGVzdGIgJDMsVVJFR1NfY3MoJXJzcCkKPiArICAg ICAgICBqeiAgICAwZgo+ICsgICAgICAgIGNtcGIgICQwLERPTUFJTl9pc18zMmJpdF9wdiglcmF4 KQoKVGhpcyBjb21wYXJpc29uIGlzIHdyb25nIG9uIGhhcmR3YXJlIGxhY2tpbmcgU01FUCBhbmQg U01BUCwgYXMgdGhlICJtb3YKVkNQVV9kb21haW4oJXJieCksJXJheCIgd29uJ3QgaGF2ZSBoYXBw ZW5lZC4KCj4gKyAgICAgICAgamUgICAgMGYKPiArICAgICAgICBjYWxsICBjcjRfc21lcF9zbWFw X3Jlc3RvcmUKPiArICAgICAgICAvKgo+ICsgICAgICAgICAqIEFuIE5NSSBvciAjTUMgbWF5IG9j Y3VyIGJldHdlZW4gY2xlYXJpbmcgQ1I0LlNNRVAgYW5kIENSNC5TTUFQIGluCj4gKyAgICAgICAg ICogY29tcGF0X3Jlc3RvcmVfYWxsX2d1ZXN0IGFuZCBpdCBhY3R1YWxseSByZXR1cm5pbmcgdG8g Z3Vlc3QKPiArICAgICAgICAgKiBjb250ZXh0LCBpbiB3aGljaCBjYXNlIHRoZSBndWVzdCB3b3Vs ZCBydW4gd2l0aCB0aGUgdHdvIGZlYXR1cmVzCj4gKyAgICAgICAgICogZW5hYmxlZC4gVGhlIG9u bHkgYmFkIHRoYXQgY2FuIGhhcHBlbiBmcm9tIHRoaXMgaXMgYSBrZXJuZWwgbW9kZQo+ICsgICAg ICAgICAqICNQRiB3aGljaCB0aGUgZ3Vlc3QgZG9lc24ndCBleHBlY3QuIFJhdGhlciB0aGFuIHRy eWluZyB0byBtYWtlIHRoZQo+ICsgICAgICAgICAqIE5NSS8jTUMgZXhpdCBwYXRoIGhvbm9yIHRo ZSBpbnRlbmRlZCBDUjQgc2V0dGluZywgc2ltcGx5IGNoZWNrCj4gKyAgICAgICAgICogd2hldGhl ciB0aGUgd3JvbmcgQ1I0IHdhcyBpbiB1c2Ugd2hlbiB0aGUgI1BGIG9jY3VycmVkLCBhbmQgZXhp dAo+ICsgICAgICAgICAqIGJhY2sgdG8gdGhlIGd1ZXN0ICh3aGljaCB3aWxsIGluIHR1cm4gY2xl YXIgdGhlIHR3byBDUjQgYml0cykgdG8KPiArICAgICAgICAgKiByZS1leGVjdXRlIHRoZSBpbnN0 cnVjdGlvbi4gSWYgd2UgZ2V0IGJhY2sgaGVyZSwgdGhlIENSNCBiaXRzCj4gKyAgICAgICAgICog c2hvdWxkIHRoZW4gYmUgZm91bmQgY2xlYXIgKHVubGVzcyBhbm90aGVyIE5NSS8jTUMgb2NjdXJy ZWQgYXQKPiArICAgICAgICAgKiBleGFjdGx5IHRoZSByaWdodCB0aW1lKSwgYW5kIHdlJ2xsIGNv bnRpbnVlIHByb2Nlc3NpbmcgdGhlCj4gKyAgICAgICAgICogZXhjZXB0aW9uIGFzIG5vcm1hbC4K PiArICAgICAgICAgKi8KPiArICAgICAgICB0ZXN0ICAlcmF4LCVyYXgKPiArICAgICAgICBqbnog ICAwZgo+ICsgICAgICAgIG1vdiAgICRQRkVDX3BhZ2VfcHJlc2VudCwlYWwKPiArICAgICAgICBj bXBiICAkVFJBUF9wYWdlX2ZhdWx0LFVSRUdTX2VudHJ5X3ZlY3RvciglcnNwKQo+ICsgICAgICAg IGpuZSAgIDBmCj4gKyAgICAgICAgeG9yICAgVVJFR1NfZXJyb3JfY29kZSglcnNwKSwlZWF4Cj4g KyAgICAgICAgdGVzdCAgJH4oUEZFQ193cml0ZV9hY2Nlc3N8UEZFQ19pbnNuX2ZldGNoKSwlZWF4 Cj4gKyAgICAgICAganogICAgY29tcGF0X3Rlc3RfYWxsX2V2ZW50cwo+ICswOiAgICAgIHN0aQoK SXRzIGNvZGUgbGlrZSB0aGlzIHdoaWNoIG1ha2VzIG1lIGV2ZW4gbW9yZSBjZXJ0YWluIHRoYXQg d2UgaGF2ZSBmYXIgdG9vCm11Y2ggY29kZSB3cml0dGVuIGluIGFzc2VtYmx5IHdoaWNoIGRvZXNu J3QgbmVlZCB0byBiZS4gIE1heWJlIG5vdCB0aGlzCnNwZWNpZmljIHNhbXBsZSwgYnV0IGl0IGhh cyB0YWtlbiBtZSAxNSBtaW51dGVzIGFuZCBhIHBhZCBvZiBwYXBlciB0bwp0cnkgYW5kIHdvcmsg b3V0IGhvdyB0aGlzIGNvbmRpdGlvbmFsIHdvcmtzLCBhbmQgSSBhbSBzdGlsbCBub3QgY2VydGFp bgppdHMgY29ycmVjdC4gIEluIHBhcnRpY3VsYXIsIFBGRUNfcHJvdF9rZXkgbG9va3MgbGlrZSBp dCBmb29sIHRoZSB0ZXN0CmludG8gYmVsaWV2aW5nIGEgbm9uLXNtYXAvc21lcCBmYXVsdCB3YXMg YSBzbWFwL3NtZXAgZmF1bHQuCgpDYW4geW91IGF0IGxlYXN0IHByb3ZpZGUgc29tZSBDIGluIGEg Y29tbWVudCB3aXRoIHRoZSBpbnRlbmRlZApjb25kaXRpb25hbCwgdG8gYWlkIGNsYXJpdHk/Cgp+ QW5kcmV3CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpY ZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0 cy54ZW4ub3JnL3hlbi1kZXZlbAo=