From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau =?utf-8?B?TW9ubsOp?= Subject: Re: [PATCH v5 7/8] x86/microcode: Synchronize late microcode loading Date: Tue, 29 Jan 2019 11:37:12 +0100 Message-ID: <20190129103712.6omjwjaf4sdygbye@mac> References: <1548659210-16870-1-git-send-email-chao.gao@intel.com> <1548659210-16870-8-git-send-email-chao.gao@intel.com> 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 1goQlm-0000LG-Jv for xen-devel@lists.xenproject.org; Tue, 29 Jan 2019 10:37:30 +0000 Content-Disposition: inline In-Reply-To: <1548659210-16870-8-git-send-email-chao.gao@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Chao Gao Cc: Kevin Tian , Wei Liu , Jan Beulich , Andrew Cooper , Jun Nakajima , xen-devel@lists.xenproject.org, Thomas Gleixner , Borislav Petkov , Ashok Raj List-Id: xen-devel@lists.xenproject.org T24gTW9uLCBKYW4gMjgsIDIwMTkgYXQgMDM6MDY6NDlQTSArMDgwMCwgQ2hhbyBHYW8gd3JvdGU6 Cj4gVGhpcyBwYXRjaCBwb3J0cyBtaWNyb2NvZGUgaW1wcm92ZW1lbnQgcGF0Y2hlcyBmcm9tIGxp bnV4IGtlcm5lbC4KPiAKPiBCZWZvcmUgeW91IHJlYWQgYW55IGZ1cnRoZXI6IHRoZSBlYXJseSBs b2FkaW5nIG1ldGhvZCBpcyBzdGlsbCB0aGUKPiBwcmVmZXJyZWQgb25lIGFuZCB5b3Ugc2hvdWxk IGFsd2F5cyBkbyB0aGF0LiBUaGUgZm9sbG93aW5nIHBhdGNoIGlzCj4gaW1wcm92aW5nIHRoZSBs YXRlIGxvYWRpbmcgbWVjaGFuaXNtIGZvciBsb25nIHJ1bm5pbmcgam9icyBhbmQgY2xvdWQgdXNl Cj4gY2FzZXMuCj4gCj4gR2F0aGVyIGFsbCBjb3JlcyBhbmQgc2VyaWFsaXplIHRoZSBtaWNyb2Nv ZGUgdXBkYXRlIG9uIHRoZW0gYnkgZG9pbmcgaXQKPiBvbmUtYnktb25lIHRvIG1ha2UgdGhlIGxh dGUgdXBkYXRlIHByb2Nlc3MgYXMgcmVsaWFibGUgYXMgcG9zc2libGUgYW5kCj4gYXZvaWQgcG90 ZW50aWFsIGlzc3VlcyBjYXVzZWQgYnkgdGhlIG1pY3JvY29kZSB1cGRhdGUuCj4gCj4gU2lnbmVk LW9mZi1ieTogQ2hhbyBHYW8gPGNoYW8uZ2FvQGludGVsLmNvbT4KPiBUZXN0ZWQtYnk6IENoYW8g R2FvIDxjaGFvLmdhb0BpbnRlbC5jb20+Cj4gW2xpbnV4IGNvbW1pdDogYTUzMjFhZWM2NDEyYjIw YjVhZDE1ZGIyZDZiOTE2YzA1MzQ5ZGJmZl0KPiBbbGludXggY29tbWl0OiBiYjhjMTNkNjFhNjI5 Mjc2YTE2MmMxZDJiMWEyMGE4MTVjYmNmYmI3XQo+IENjOiBLZXZpbiBUaWFuIDxrZXZpbi50aWFu QGludGVsLmNvbT4KPiBDYzogSnVuIE5ha2FqaW1hIDxqdW4ubmFrYWppbWFAaW50ZWwuY29tPgo+ IENjOiBBc2hvayBSYWogPGFzaG9rLnJhakBpbnRlbC5jb20+Cj4gQ2M6IEJvcmlzbGF2IFBldGtv diA8YnBAc3VzZS5kZT4KPiBDYzogVGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxpbnV0cm9uaXguZGU+ Cj4gQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Cj4gQ2M6IEph biBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KPiAtLS0KPiAgeGVuL2FyY2gveDg2L21pY3Jv Y29kZS5jIHwgMTI1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCA5OCBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkK PiAKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21pY3JvY29kZS5jIGIveGVuL2FyY2gveDg2 L21pY3JvY29kZS5jCj4gaW5kZXggM2MyMjc0Zi4uYjdiMjBjZiAxMDA2NDQKPiAtLS0gYS94ZW4v YXJjaC94ODYvbWljcm9jb2RlLmMKPiArKysgYi94ZW4vYXJjaC94ODYvbWljcm9jb2RlLmMKPiBA QCAtMjIsNiArMjIsNyBAQAo+ICAgKi8KPiAgCj4gICNpbmNsdWRlIDx4ZW4vY3B1Lmg+Cj4gKyNp bmNsdWRlIDx4ZW4vY3B1bWFzay5oPgo+ICAjaW5jbHVkZSA8eGVuL2xpYi5oPgo+ICAjaW5jbHVk ZSA8eGVuL2tlcm5lbC5oPgo+ICAjaW5jbHVkZSA8eGVuL2luaXQuaD4KPiBAQCAtMzAsMTggKzMx LDI1IEBACj4gICNpbmNsdWRlIDx4ZW4vc21wLmg+Cj4gICNpbmNsdWRlIDx4ZW4vc29mdGlycS5o Pgo+ICAjaW5jbHVkZSA8eGVuL3NwaW5sb2NrLmg+Cj4gKyNpbmNsdWRlIDx4ZW4vc3RvcF9tYWNo aW5lLmg+Cj4gICNpbmNsdWRlIDx4ZW4vdGFza2xldC5oPgo+ICAjaW5jbHVkZSA8eGVuL2d1ZXN0 X2FjY2Vzcy5oPgo+ICAjaW5jbHVkZSA8eGVuL2Vhcmx5Y3Bpby5oPgo+ICsjaW5jbHVkZSA8eGVu L3dhdGNoZG9nLmg+Cj4gIAo+ICsjaW5jbHVkZSA8YXNtL2RlbGF5Lmg+Cj4gICNpbmNsdWRlIDxh c20vbXNyLmg+Cj4gICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+Cj4gICNpbmNsdWRlIDxhc20v c2V0dXAuaD4KPiAgI2luY2x1ZGUgPGFzbS9taWNyb2NvZGUuaD4KPiAgCj4gKy8qIEJ5IGRlZmF1 bHQsIHdhaXQgZm9yIDMwMDAwdXMgKi8KPiArI2RlZmluZSBNSUNST0NPREVfREVGQVVMVF9USU1F T1VUX1VTIDMwMDAwCj4gKwo+ICBzdGF0aWMgbW9kdWxlX3QgX19pbml0ZGF0YSB1Y29kZV9tb2Q7 Cj4gIHN0YXRpYyBzaWduZWQgaW50IF9faW5pdGRhdGEgdWNvZGVfbW9kX2lkeDsKPiAgc3RhdGlj IGJvb2xfdCBfX2luaXRkYXRhIHVjb2RlX21vZF9mb3JjZWQ7Cj4gK3N0YXRpYyB1bnNpZ25lZCBp bnQgbnJfY29yZXM7Cj4gIAo+ICAvKgo+ICAgKiBJZiB3ZSBzY2FuIHRoZSBpbml0cmFtZnMuY3Bp byBmb3IgdGhlIGVhcmx5IG1pY3JvY29kZSBjb2RlCj4gQEAgLTE4OCwxMCArMTk2LDExIEBAIHN0 YXRpYyBERUZJTkVfU1BJTkxPQ0sobWljcm9jb2RlX211dGV4KTsKPiAgCj4gIERFRklORV9QRVJf Q1BVKHN0cnVjdCB1Y29kZV9jcHVfaW5mbywgdWNvZGVfY3B1X2luZm8pOwo+ICAKPiAtc3RydWN0 IG1pY3JvY29kZV9pbmZvIHsKPiAtICAgIHVuc2lnbmVkIGludCBjcHU7Cj4gLSAgICBpbnQgZXJy b3I7Cj4gLX07Cj4gKy8qCj4gKyAqIENvdW50IHRoZSBDUFVzIHRoYXQgaGF2ZSBlbnRlcmVkIGFu ZCBleGl0ZWQgdGhlIHJlbmRlenZvdXMKPiArICogZHVyaW5nIGxhdGUgbWljcm9jb2RlIHVwZGF0 ZS4KPiArICovCj4gK3N0YXRpYyBhdG9taWNfdCBjcHVfaW4sIGNwdV9vdXQ7Cj4gIAo+ICBzdGF0 aWMgdm9pZCBtaWNyb2NvZGVfZmluaV9jcHUodW5zaWduZWQgaW50IGNwdSkKPiAgewo+IEBAIC0y OTAsMzAgKzI5OSw2MCBAQCBpbnQgbWljcm9jb2RlX3Jlc3VtZV9jcHUodW5zaWduZWQgaW50IGNw dSkKPiAgICAgIHJldHVybiBtaWNyb2NvZGVfb3BzID8gbWljcm9jb2RlX3VwZGF0ZV9jcHUoKSA6 IDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBsb25nIGRvX21pY3JvY29kZV91cGRhdGUodm9pZCAqX2lu Zm8pCj4gKy8qIFdhaXQgZm9yIGFsbCBDUFVzIHRvIHJlbmRlenZvdXMgd2l0aCBhIHRpbWVvdXQg KHVzKSAqLwo+ICtzdGF0aWMgaW50IHdhaXRfZm9yX2NwdXMoYXRvbWljX3QgKmNudCwgdW5zaWdu ZWQgaW50IHRpbWVvdXQpCj4gIHsKPiAtICAgIHN0cnVjdCBtaWNyb2NvZGVfaW5mbyAqaW5mbyA9 IF9pbmZvOwo+IC0gICAgaW50IGVycm9yOwo+ICsgICAgdW5zaWduZWQgaW50IGNwdXMgPSBudW1f b25saW5lX2NwdXMoKTsKPiAgCj4gLSAgICBCVUdfT04oaW5mby0+Y3B1ICE9IHNtcF9wcm9jZXNz b3JfaWQoKSk7Cj4gKyAgICBhdG9taWNfaW5jKGNudCk7Cj4gKwo+ICsgICAgd2hpbGUgKCBhdG9t aWNfcmVhZChjbnQpICE9IGNwdXMgKQo+ICsgICAgewo+ICsgICAgICAgIGlmICggdGltZW91dCA8 PSAwICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIHByaW50aygiQ1BVJWQ6IFRpbWVvdXQg d2hlbiB3YWl0aW5nIGZvciBDUFVzIGNhbGxpbmcgaW5cbiIsCj4gKyAgICAgICAgICAgICAgICAg ICBzbXBfcHJvY2Vzc29yX2lkKCkpOwo+ICsgICAgICAgICAgICByZXR1cm4gLUVCVVNZOwo+ICsg ICAgICAgIH0KPiArICAgICAgICB1ZGVsYXkoMSk7Cgp1ZGVsYXkgd2lsbCBjYWxsIHRoZSByZHRz YyBpbnN0cnVjdGlvbiwgaXMgaXQgZmluZSB0byB1c2UgaXQgb24gYQpzaWJsaW5nIHRocmVhZCB3 aGlsZSB0aGVyZSdzIGEgbWljcm9jb2RlIHVwZGF0ZSBpbiBwcm9jZXNzIG9uIHRoZSBzYW1lCmNv cmU/Cgo+ICsgICAgICAgIHRpbWVvdXQtLTsKPiArICAgIH0KPiArCj4gKyAgICByZXR1cm4gMDsK PiArfQo+ICsKPiArc3RhdGljIGludCBkb19taWNyb2NvZGVfdXBkYXRlKHZvaWQgKnVudXNlZCkK PiArewo+ICsgICAgdW5zaWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKPiArICAg IGludCByZXQ7Cj4gIAo+IC0gICAgZXJyb3IgPSBtaWNyb2NvZGVfdXBkYXRlX2NwdSgpOwo+IC0g ICAgaWYgKCBlcnJvciApCj4gLSAgICAgICAgaW5mby0+ZXJyb3IgPSBlcnJvcjsKPiArICAgIHJl dCA9IHdhaXRfZm9yX2NwdXMoJmNwdV9pbiwgTUlDUk9DT0RFX0RFRkFVTFRfVElNRU9VVF9VUyk7 Cj4gKyAgICBpZiAoIHJldCApCj4gKyAgICAgICAgcmV0dXJuIHJldDsKPiAgCj4gLSAgICBpbmZv LT5jcHUgPSBjcHVtYXNrX25leHQoaW5mby0+Y3B1LCAmY3B1X29ubGluZV9tYXApOwo+IC0gICAg aWYgKCBpbmZvLT5jcHUgPCBucl9jcHVfaWRzICkKPiAtICAgICAgICByZXR1cm4gY29udGludWVf aHlwZXJjYWxsX29uX2NwdShpbmZvLT5jcHUsIGRvX21pY3JvY29kZV91cGRhdGUsIGluZm8pOwo+ ICsgICAgLyoKPiArICAgICAqIEluaXRpYXRlIGFuIHVwZGF0ZSBvbiBhbGwgcHJvY2Vzc29ycyB3 aGljaCBkb24ndCBoYXZlIGFuIG9ubGluZSBzaWJsaW5nCj4gKyAgICAgKiB0aHJlYWQgd2l0aCBh IGxvd2VyIHRocmVhZCBpZC4gT3RoZXIgc2libGluZyB0aHJlYWRzIGp1c3QgYXdhaXQgdGhlCj4g KyAgICAgKiBjb21wbGV0aW9uIG9mIG1pY3JvY29kZSB1cGRhdGUuCj4gKyAgICAgKi8KPiArICAg IGlmICggY3B1ID09IGNwdW1hc2tfZmlyc3QocGVyX2NwdShjcHVfc2libGluZ19tYXNrLCBjcHUp KSApCj4gKyAgICAgICAgcmV0ID0gbWljcm9jb2RlX3VwZGF0ZV9jcHUoKTsKClRoZSBkZXNjcmlw dGlvbiBzYXlzICJHYXRoZXIgYWxsIGNvcmVzIGFuZCBzZXJpYWxpemUgdGhlIG1pY3JvY29kZQp1 cGRhdGUgb24gdGhlbSBieSBkb2luZyBpdCBvbmUtYnktb25lIiBidXQgaXQgbG9va3MgbGlrZSB5 b3UgYXJlIGRvaW5nCnRoZSB1cGRhdGUgaW4gcGFyYWxsZWwgYWN0dWFsbHk/Cgo+ICsgICAgLyoK PiArICAgICAqIEluY3JlYXNlIHRoZSB3YWl0IHRpbWVvdXQgdG8gYSBzYWZlIHZhbHVlIGhlcmUg c2luY2Ugd2UncmUgc2VyaWFsaXppbmcKPiArICAgICAqIHRoZSBtaWNyb2NvZGUgdXBkYXRlIGFu ZCB0aGF0IGNvdWxkIHRha2UgYSB3aGlsZSBvbiBhIGxhcmdlIG51bWJlciBvZgo+ICsgICAgICog Q1BVcy4gQW5kIHRoYXQgaXMgZmluZSBhcyB0aGUgKmFjdHVhbCogdGltZW91dCB3aWxsIGJlIGRl dGVybWluZWQgYnkKPiArICAgICAqIHRoZSBsYXN0IENQVSBmaW5pc2hlZCB1cGRhdGluZyBhbmQg dGh1cyBjdXQgc2hvcnQKPiArICAgICAqLwo+ICsgICAgaWYgKCB3YWl0X2Zvcl9jcHVzKCZjcHVf b3V0LCBNSUNST0NPREVfREVGQVVMVF9USU1FT1VUX1VTICogbnJfY29yZXMpICkKPiArICAgICAg ICBwYW5pYygiVGltZW91dCB3aGVuIGZpbmlzaGluZyB1cGRhdGluZyBtaWNyb2NvZGUiKTsKPiAg Cj4gLSAgICBlcnJvciA9IGluZm8tPmVycm9yOwo+IC0gICAgeGZyZWUoaW5mbyk7Cj4gLSAgICBy ZXR1cm4gZXJyb3I7Cj4gKyAgICByZXR1cm4gcmV0Owo+ICB9Cj4gIAo+ICBpbnQgbWljcm9jb2Rl X3VwZGF0ZShYRU5fR1VFU1RfSEFORExFX1BBUkFNKGNvbnN0X3ZvaWQpIGJ1ZiwgdW5zaWduZWQg bG9uZyBsZW4pCj4gIHsKPiAgICAgIGludCByZXQ7Cj4gLSAgICBzdHJ1Y3QgbWljcm9jb2RlX2lu Zm8gKmluZm87Cj4gKyAgICB1bnNpZ25lZCBpbnQgY3B1Owo+ICAgICAgdm9pZCAqIGJ1ZmZlcjsK PiAgCj4gICAgICBpZiAoIGxlbiAhPSAodWludDMyX3QpbGVuICkKPiBAQCAtMzM0LDI4ICszNzIs NjEgQEAgaW50IG1pY3JvY29kZV91cGRhdGUoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTShjb25zdF92 b2lkKSBidWYsIHVuc2lnbmVkIGxvbmcgbGVuKQo+ICAgICAgaWYgKCByZXQgIT0gMCApCj4gICAg ICAgICAgZ290byBmcmVlOwo+ICAKPiArICAgIC8qIGNwdV9vbmxpbmVfbWFwIG11c3Qgbm90IGNo YW5nZSBkdXJpbmcgdXBkYXRlICovCj4gKyAgICBpZiAoICFnZXRfY3B1X21hcHMoKSApCj4gKyAg ICB7Cj4gKyAgICAgICAgcmV0ID0gLUVCVVNZOwo+ICsgICAgICAgIGdvdG8gZnJlZTsKPiArICAg IH0KPiArCj4gICAgICBpZiAoIG1pY3JvY29kZV9vcHMtPnN0YXJ0X3VwZGF0ZSApCj4gICAgICB7 Cj4gICAgICAgICAgcmV0ID0gbWljcm9jb2RlX29wcy0+c3RhcnRfdXBkYXRlKCk7Cj4gICAgICAg ICAgaWYgKCByZXQgIT0gMCApCj4gLSAgICAgICAgICAgIGdvdG8gZnJlZTsKPiArICAgICAgICAg ICAgZ290byBwdXQ7Cj4gICAgICB9Cj4gIAo+ICAgICAgcmV0ID0gcGFyc2VfbWljcm9jb2RlX2Js b2IoYnVmZmVyLCBsZW4pOwo+ICAgICAgaWYgKCByZXQgPD0gMCApCj4gICAgICB7Cj4gICAgICAg ICAgcHJpbnRrKFhFTkxPR19FUlIgIk5vIHZhbGlkIG9yIG5ld2VyIHVjb2RlIGZvdW5kLiBVcGRh dGUgYWJvcnQhXG4iKTsKPiAtICAgICAgICB4ZnJlZShpbmZvKTsKPiAtICAgICAgICByZXR1cm4g LUVJTlZBTDsKPiArICAgICAgICByZXQgPSAtRUlOVkFMOwo+ICsgICAgICAgIGdvdG8gcHV0Owo+ ICAgICAgfQo+ICAKPiAtICAgIGluZm8tPmVycm9yID0gMDsKPiAtICAgIGluZm8tPmNwdSA9IGNw dW1hc2tfZmlyc3QoJmNwdV9vbmxpbmVfbWFwKTsKPiArICAgIGF0b21pY19zZXQoJmNwdV9pbiwg MCk7Cj4gKyAgICBhdG9taWNfc2V0KCZjcHVfb3V0LCAwKTsKPiArCj4gKyAgICAvKiBDYWxjdWxh dGUgdGhlIG51bWJlciBvZiBvbmxpbmUgQ1BVIGNvcmUgKi8KPiArICAgIG5yX2NvcmVzID0gMDsK PiArICAgIGZvcl9lYWNoX29ubGluZV9jcHUoY3B1KQo+ICsgICAgICAgIGlmICggY3B1ID09IGNw dW1hc2tfZmlyc3QocGVyX2NwdShjcHVfc2libGluZ19tYXNrLCBjcHUpKSApCj4gKyAgICAgICAg ICAgIG5yX2NvcmVzKys7Cj4gKwo+ICsgICAgcHJpbnRrKFhFTkxPR19JTkZPICIlZCBjb3JlcyBh cmUgdG8gdXBkYXRlIHRoZWlyIG1pY3JvY29kZVxuIiwgbnJfY29yZXMpOwo+ICAKPiAtICAgIHJl dHVybiBjb250aW51ZV9oeXBlcmNhbGxfb25fY3B1KGluZm8tPmNwdSwgZG9fbWljcm9jb2RlX3Vw ZGF0ZSwgaW5mbyk7Cj4gKyAgICAvKgo+ICsgICAgICogV2UgaW50ZW5kIHRvIGRpc2FibGUgaW50 ZXJydXB0IGZvciBsb25nIHRpbWUsIHdoaWNoIG1heSBsZWFkIHRvCj4gKyAgICAgKiB3YXRjaGRv ZyB0aW1lb3V0Lgo+ICsgICAgICovCj4gKyAgICB3YXRjaGRvZ19kaXNhYmxlKCk7Cj4gKyAgICAv Kgo+ICsgICAgICogTGF0ZSBsb2FkaW5nIGRhbmNlLiBXaHkgdGhlIGhlYXZ5LWhhbmRlZCBzdG9w X21hY2hpbmUgZWZmb3J0Pwo+ICsgICAgICoKPiArICAgICAqIC0gSFQgc2libGluZ3MgbXVzdCBi ZSBpZGxlIGFuZCBub3QgZXhlY3V0ZSBvdGhlciBjb2RlIHdoaWxlIHRoZSBvdGhlcgo+ICsgICAg ICogICBzaWJsaW5nIGlzIGxvYWRpbmcgbWljcm9jb2RlIGluIG9yZGVyIHRvIGF2b2lkIGFueSBu ZWdhdGl2ZQo+ICsgICAgICogICBpbnRlcmFjdGlvbnMgY2F1c2UgYnkgdGhlIGxvYWRpbmcuCj4g KyAgICAgKgo+ICsgICAgICogLSBJbiBhZGRpdGlvbiwgbWljcm9jb2RlIHVwZGF0ZSBvbiB0aGUg Y29yZXMgbXVzdCBiZSBzZXJpYWxpemVkIHVudGlsCj4gKyAgICAgKiAgIHRoaXMgcmVxdWlyZW1l bnQgY2FuIGJlIHJlbGF4ZWQgaW4gdGhlIGZ1dHVyZS4gUmlnaHQgbm93LCB0aGlzIGlzCgpBcyBz YWlkIGFib3ZlLCBJJ20gbm90IHN1cmUgd2hhdCB5b3UgYXJlIGRvaW5nIGhlcmUgY291bGQgYmUK Y29uc2lkZXJlZCBzZXJpYWxpemVkLCB0aGUgcHJldmlvdXMgbWV0aG9kIHdhcyBjbGVhcmx5IHNl cmlhbGl6ZWQKbW92aW5nIGZyb20gb25lIENQVSB0byB0aGUgbmV4dCBvbmUuCgpIZXJlIHlvdSBh cmUgbGlrZWx5IHVwZGF0aW5nIG11bHRpcGxlIGNvcmVzIGF0IHRoZSBzYW1lIHRpbWUsIHdoaWNo CkknbSBub3Qgc2F5aW5nIGl0J3Mgd3JvbmcsIGJ1dCBkb2Vzbid0IHNlZW0gdG8gbWF0Y2ggdGhl IGNvbW1pdApkZXNjcmlwdGlvbiBvciB0aGUgY29tbWVudHMgaW4gdGhlIGNvZGUuCgpUaGFua3Ms IFJvZ2VyLgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0 cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==