From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.3 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_MUTT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5C608C43218 for ; Tue, 11 Jun 2019 12:32:32 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 313752089E for ; Tue, 11 Jun 2019 12:32:32 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 313752089E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hafwg-0006FJ-LA; Tue, 11 Jun 2019 12:32:10 +0000 Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hafwf-0006F8-Ta for xen-devel@lists.xenproject.org; Tue, 11 Jun 2019 12:32:09 +0000 X-Inumbo-ID: ece15a96-8c44-11e9-8980-bc764e045a96 Received: from mga03.intel.com (unknown [134.134.136.65]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS id ece15a96-8c44-11e9-8980-bc764e045a96; Tue, 11 Jun 2019 12:32:07 +0000 (UTC) X-Amp-Result: UNSCANNABLE X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Jun 2019 05:32:06 -0700 X-ExtLoop1: 1 Received: from gao-cwp.sh.intel.com (HELO gao-cwp) ([10.239.159.26]) by orsmga001.jf.intel.com with ESMTP; 11 Jun 2019 05:32:04 -0700 Date: Tue, 11 Jun 2019 20:36:17 +0800 From: Chao Gao To: Jan Beulich Message-ID: <20190611123615.GA22930@gao-cwp> References: <1558945891-3015-1-git-send-email-chao.gao@intel.com> <1558945891-3015-9-git-send-email-chao.gao@intel.com> <5CF7CD2702000078002358F4@prv1-mh.provo.novell.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <5CF7CD2702000078002358F4@prv1-mh.provo.novell.com> User-Agent: Mutt/1.5.21 (2010-09-15) Subject: Re: [Xen-devel] [PATCH v7 08/10] x86/microcode: Synchronize late microcode loading X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Sergey Dyasli , Kevin Tian , Ashok Raj , WeiLiu , Andrew Cooper , Jun Nakajima , xen-devel , tglx@linutronix.de, Borislav Petkov , Roger Pau Monne Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" T24gV2VkLCBKdW4gMDUsIDIwMTkgYXQgMDg6MDk6NDNBTSAtMDYwMCwgSmFuIEJldWxpY2ggd3Jv dGU6Cj4+Pj4gT24gMjcuMDUuMTkgYXQgMTA6MzEsIDxjaGFvLmdhb0BpbnRlbC5jb20+IHdyb3Rl Ogo+PiBUaGlzIHBhdGNoIHBvcnRzIG1pY3JvY29kZSBpbXByb3ZlbWVudCBwYXRjaGVzIGZyb20g bGludXgga2VybmVsLgo+PiAKPj4gQmVmb3JlIHlvdSByZWFkIGFueSBmdXJ0aGVyOiB0aGUgZWFy bHkgbG9hZGluZyBtZXRob2QgaXMgc3RpbGwgdGhlCj4+IHByZWZlcnJlZCBvbmUgYW5kIHlvdSBz aG91bGQgYWx3YXlzIGRvIHRoYXQuIFRoZSBmb2xsb3dpbmcgcGF0Y2ggaXMKPj4gaW1wcm92aW5n IHRoZSBsYXRlIGxvYWRpbmcgbWVjaGFuaXNtIGZvciBsb25nIHJ1bm5pbmcgam9icyBhbmQgY2xv dWQgdXNlCj4+IGNhc2VzLgo+PiAKPj4gR2F0aGVyIGFsbCBjb3JlcyBhbmQgc2VyaWFsaXplIHRo ZSBtaWNyb2NvZGUgdXBkYXRlIG9uIHRoZW0gYnkgZG9pbmcgaXQKPj4gb25lLWJ5LW9uZSB0byBt YWtlIHRoZSBsYXRlIHVwZGF0ZSBwcm9jZXNzIGFzIHJlbGlhYmxlIGFzIHBvc3NpYmxlIGFuZAo+ PiBhdm9pZCBwb3RlbnRpYWwgaXNzdWVzIGNhdXNlZCBieSB0aGUgbWljcm9jb2RlIHVwZGF0ZS4K Pj4gCj4+IFNpZ25lZC1vZmYtYnk6IENoYW8gR2FvIDxjaGFvLmdhb0BpbnRlbC5jb20+Cj4+IFRl c3RlZC1ieTogQ2hhbyBHYW8gPGNoYW8uZ2FvQGludGVsLmNvbT4KPj4gW2xpbnV4IGNvbW1pdDog YTUzMjFhZWM2NDEyYjIwYjVhZDE1ZGIyZDZiOTE2YzA1MzQ5ZGJmZl0KPj4gW2xpbnV4IGNvbW1p dDogYmI4YzEzZDYxYTYyOTI3NmExNjJjMWQyYjFhMjBhODE1Y2JjZmJiN10KPj4gQ2M6IEtldmlu IFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPgo+PiBDYzogSnVuIE5ha2FqaW1hIDxqdW4ubmFr YWppbWFAaW50ZWwuY29tPgo+PiBDYzogQXNob2sgUmFqIDxhc2hvay5yYWpAaW50ZWwuY29tPgo+ PiBDYzogQm9yaXNsYXYgUGV0a292IDxicEBzdXNlLmRlPgo+PiBDYzogVGhvbWFzIEdsZWl4bmVy IDx0Z2x4QGxpbnV0cm9uaXguZGU+Cj4+IENjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVy M0BjaXRyaXguY29tPgo+PiBDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgo+PiAt LS0KPj4gQ2hhbmdlcyBpbiB2NzoKPj4gIC0gQ2hlY2sgd2hldGhlciAndGltZW91dCcgaXMgMCBy YXRoZXIgdGhhbiAiPD0wIiBzaW5jZSBpdCBpcyB1bnNpZ25lZCBpbnQuCj4+ICAtIHJld29yZCB0 aGUgY29tbWVudCBhYm92ZSBtaWNyb2NvZGVfdXBkYXRlX2NwdSgpIHRvIGNsZWFybHkgc3RhdGUg dGhhdAo+PiAgb25lIHRocmVhZCBwZXIgY29yZSBzaG91bGQgZG8gdGhlIHVwZGF0ZS4KPj4gCj4+ IENoYW5nZXMgaW4gdjY6Cj4+ICAtIFVzZSBvbmUgdGltZW91dCBwZXJpb2QgZm9yIHJlbmRlenZv dXMgc3RhZ2UgYW5kIGFub3RoZXIgZm9yIHVwZGF0ZSBzdGFnZS4KPj4gIC0gc2NhbGUgdGltZSB0 byB3YWl0IGJ5IHRoZSBudW1iZXIgb2YgcmVtYWluaW5nIGNwdXMgdG8gcmVzcG9uZC4KPj4gICAg SXQgaGVscHMgdG8gZmluZCBzb21ldGhpbmcgd3JvbmcgZWFybGllciBhbmQgdGh1cyB3ZSBjYW4g cmVib290IHRoZQo+PiAgICBzeXN0ZW0gZWFybGllci4KPj4gLS0tCj4+ICB4ZW4vYXJjaC94ODYv bWljcm9jb2RlLmMgfCAxNzEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0KPj4gIDEgZmlsZSBjaGFuZ2VkLCAxNTUgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRp b25zKC0pCj4+IAo+PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21pY3JvY29kZS5jIGIveGVu L2FyY2gveDg2L21pY3JvY29kZS5jCj4+IGluZGV4IDIzY2Y1NTAuLmY0YTQxN2UgMTAwNjQ0Cj4+ IC0tLSBhL3hlbi9hcmNoL3g4Ni9taWNyb2NvZGUuYwo+PiArKysgYi94ZW4vYXJjaC94ODYvbWlj cm9jb2RlLmMKPj4gQEAgLTIyLDYgKzIyLDcgQEAKPj4gICAqLwo+PiAgCj4+ICAjaW5jbHVkZSA8 eGVuL2NwdS5oPgo+PiArI2luY2x1ZGUgPHhlbi9jcHVtYXNrLmg+Cj4KPkl0IHNlZW1zIHZhbmlz aGluZ2x5IHVubGlrZWx5IHRoYXQgeW91IHdvdWxkIG5lZWQgdGhpcyBleHBsaWNpdCAjaW5jbHVk ZQo+aGVyZSwgYnV0IGl0IGNlcnRhaW5seSBpc24ndCB3cm9uZy4KPgo+PiBAQCAtMjcwLDMxICsy OTYsOTAgQEAgYm9vbCBtaWNyb2NvZGVfdXBkYXRlX2NhY2hlKHN0cnVjdCBtaWNyb2NvZGVfcGF0 Y2ggKnBhdGNoKQo+PiAgICAgIHJldHVybiB0cnVlOwo+PiAgfQo+PiAgCj4+IC1zdGF0aWMgbG9u ZyBkb19taWNyb2NvZGVfdXBkYXRlKHZvaWQgKnBhdGNoKQo+PiArLyogV2FpdCBmb3IgQ1BVcyB0 byByZW5kZXp2b3VzIHdpdGggYSB0aW1lb3V0ICh1cykgKi8KPj4gK3N0YXRpYyBpbnQgd2FpdF9m b3JfY3B1cyhhdG9taWNfdCAqY250LCB1bnNpZ25lZCBpbnQgZXhwZWN0LAo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB0aW1lb3V0KQo+PiAgewo+PiAtICAgIGludCBl cnJvciwgY3B1Owo+PiAtCj4+IC0gICAgZXJyb3IgPSBtaWNyb2NvZGVfdXBkYXRlX2NwdShwYXRj aCk7Cj4+IC0gICAgaWYgKCBlcnJvciApCj4+ICsgICAgd2hpbGUgKCBhdG9taWNfcmVhZChjbnQp IDwgZXhwZWN0ICkKPj4gICAgICB7Cj4+IC0gICAgICAgIG1pY3JvY29kZV9vcHMtPmZyZWVfcGF0 Y2gobWljcm9jb2RlX2NhY2hlKTsKPj4gLSAgICAgICAgcmV0dXJuIGVycm9yOwo+PiArICAgICAg ICBpZiAoICF0aW1lb3V0ICkKPj4gKyAgICAgICAgewo+PiArICAgICAgICAgICAgcHJpbnRrKCJD UFUlZDogVGltZW91dCB3aGVuIHdhaXRpbmcgZm9yIENQVXMgY2FsbGluZyBpblxuIiwKPj4gKyAg ICAgICAgICAgICAgICAgICBzbXBfcHJvY2Vzc29yX2lkKCkpOwo+PiArICAgICAgICAgICAgcmV0 dXJuIC1FQlVTWTsKPj4gKyAgICAgICAgfQo+PiArICAgICAgICB1ZGVsYXkoMSk7Cj4+ICsgICAg ICAgIHRpbWVvdXQtLTsKPj4gICAgICB9Cj4KPlRoZXJlJ3Mgbm8gY29tbWVudCBoZXJlIGFuZCBu b3RoaW5nIGluIHRoZSBkZXNjcmlwdGlvbjogSSBkb24ndAo+cmVjYWxsIGNsYXJpZmljYXRpb24g YXMgdG8gd2hldGhlciBSRFRTQyBpcyBmaW5lIHRvIGJlIGlzc3VlZCBieSBhCj50aHJlYWQgd2hl biB1Y29kZSBpcyBiZWluZyB1cGRhdGVkIGJ5IGFub3RoZXIgdGhyZWFkIG9uIHRoZQo+c2FtZSBj b3JlLgoKWWVzLiBJIHRoaW5rIGl0IGlzIGZpbmUuCgpBc2hvaywgY291bGQgeW91IHNoYXJlIHlv dXIgb3BpbmlvbiBvbiB0aGlzIHF1ZXN0aW9uPwoKPgo+PiArc3RhdGljIGludCBkb19taWNyb2Nv ZGVfdXBkYXRlKHZvaWQgKnBhdGNoKQo+PiArewo+PiArICAgIHVuc2lnbmVkIGludCBjcHUgPSBz bXBfcHJvY2Vzc29yX2lkKCk7Cj4+ICsgICAgdW5zaWduZWQgaW50IGNwdV9uciA9IG51bV9vbmxp bmVfY3B1cygpOwo+PiArICAgIHVuc2lnbmVkIGludCBmaW5pc2hlZDsKPj4gKyAgICBpbnQgcmV0 Owo+PiArICAgIHN0YXRpYyBib29sIGVycm9yOwo+PiAgCj4+IC0gICAgbWljcm9jb2RlX3VwZGF0 ZV9jYWNoZShwYXRjaCk7Cj4+ICsgICAgYXRvbWljX2luYygmY3B1X2luKTsKPj4gKyAgICByZXQg PSB3YWl0X2Zvcl9jcHVzKCZjcHVfaW4sIGNwdV9uciwgTUlDUk9DT0RFX0NBTExJTl9USU1FT1VU X1VTKTsKPj4gKyAgICBpZiAoIHJldCApCj4+ICsgICAgICAgIHJldHVybiByZXQ7Cj4+ICAKPj4g LSAgICByZXR1cm4gZXJyb3I7Cj4+ICsgICAgcmV0ID0gbWljcm9jb2RlX29wcy0+Y29sbGVjdF9j cHVfaW5mbygmdGhpc19jcHUoY3B1X3NpZykpOwo+PiArICAgIC8qCj4+ICsgICAgICogTG9hZCBt aWNyb2NvZGUgdXBkYXRlIG9uIG9ubHkgb25lIGxvZ2ljYWwgcHJvY2Vzc29yIHBlciBjb3JlLgo+ PiArICAgICAqIEhlcmUsIGFtb25nIGxvZ2ljYWwgcHJvY2Vzc29ycyBvZiBhIGNvcmUsIHRoZSBv bmUgd2l0aCB0aGUKPj4gKyAgICAgKiBsb3dlc3QgdGhyZWFkIGlkIGlzIGNob3NlbiB0byBwZXJm b3JtIHRoZSBsb2FkaW5nLgo+PiArICAgICAqLwo+PiArICAgIGlmICggIXJldCAmJiAoY3B1ID09 IGNwdW1hc2tfZmlyc3QocGVyX2NwdShjcHVfc2libGluZ19tYXNrLCBjcHUpKSkgKQo+Cj5BdCB0 aGUgdmVyeSBsZWFzdCBpdCdzIG5vdCBvYnZpb3VzIHdoZXRoZXIgdGhpcyBoeXBlci10aHJlYWRp bmctY2VudHJpYwo+dmlldyAoImxvZ2ljYWwgcHJvY2Vzc29yIikgYWxzbyBhcHBsaWVzIHRvIEFN RCdzIGNvbXB1dGUgdW5pdCBtb2RlbAo+KHdoaWNoIHJldXNlcyBjcHVfc2libGluZ19tYXNrKS4g SXQgZG9lcywgYXMgdGhlIHJlc3BlY3RpdmUgTVNScyBhcmUKPnBlci1jb21wdXRlLXVuaXQgcmF0 aGVyIHRoYW4gcGVyLWNvcmUsIGJ1dCBJJ2QgYXBwcmVjaWF0ZSBpZiB0aGUKPndvcmRpbmcgY291 bGQgYmUgYWRqdXN0ZWQgdG8gZXhwbGljaXRseSBuYW1lIGJvdGggY2FzZXMgKG11bHRpcGxlCj50 aHJlYWRzIHBlciBjb3JlIGFuZCBtdWx0aXBsZSBjb3JlcyBwZXIgQ1UpLgoKT0suIFdpbGwgZG8K Cj4KPj4gKyAgICB7Cj4+ICsgICAgICAgIHJldCA9IG1pY3JvY29kZV9vcHMtPmFwcGx5X21pY3Jv Y29kZShwYXRjaCk7Cj4+ICsgICAgICAgIGlmICggIXJldCApCj4+ICsgICAgICAgICAgICBhdG9t aWNfaW5jKCZjcHVfdXBkYXRlZCk7Cj4+ICsgICAgfQo+PiArICAgIC8qCj4+ICsgICAgICogSW5j cmVhc2UgdGhlIHdhaXQgdGltZW91dCB0byBhIHNhZmUgdmFsdWUgaGVyZSBzaW5jZSB3ZSdyZSBz ZXJpYWxpemluZwo+Cj5JJ20gc3RydWdnbGluZyB3aXRoIHRoZSAiaW5jcmVhc2UiOiBJIGRvbid0 IHNlZSBhbnl0aGluZyBiZWluZyBpbmNyZWFzZWQKPmhlcmUuIFlvdSBzaW1wbHkgdXNlIGEgbGFy Z2VyIHRpbWVvdXQgdGhhbiBhYm92ZS4KPgo+PiArICAgICAqIHRoZSBtaWNyb2NvZGUgdXBkYXRl IGFuZCB0aGF0IGNvdWxkIHRha2UgYSB3aGlsZSBvbiBhIGxhcmdlIG51bWJlciBvZgo+PiArICAg ICAqIENQVXMuIEFuZCB0aGF0IGlzIGZpbmUgYXMgdGhlICphY3R1YWwqIHRpbWVvdXQgd2lsbCBi ZSBkZXRlcm1pbmVkIGJ5Cj4+ICsgICAgICogdGhlIGxhc3QgQ1BVIGZpbmlzaGVkIHVwZGF0aW5n IGFuZCB0aHVzIGN1dCBzaG9ydAo+PiArICAgICAqLwo+PiArICAgIGF0b21pY19pbmMoJmNwdV9v dXQpOwo+PiArICAgIGZpbmlzaGVkID0gYXRvbWljX3JlYWQoJmNwdV9vdXQpOwo+PiArICAgIHdo aWxlICggIWVycm9yICYmIGZpbmlzaGVkICE9IGNwdV9uciApCj4+ICsgICAgewo+PiArICAgICAg ICAvKgo+PiArICAgICAgICAgKiBEdXJpbmcgZWFjaCB0aW1lb3V0IGludGVydmFsLCBhdCBsZWFz dCBhIENQVSBpcyBleHBlY3RlZCB0bwo+PiArICAgICAgICAgKiBmaW5pc2ggaXRzIHVwZGF0ZS4g T3RoZXJ3aXNlLCBzb21ldGhpbmcgZ29lcyB3cm9uZy4KPj4gKyAgICAgICAgICovCj4+ICsgICAg ICAgIGlmICggd2FpdF9mb3JfY3B1cygmY3B1X291dCwgZmluaXNoZWQgKyAxLAo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgTUlDUk9DT0RFX1VQREFURV9USU1FT1VUX1VTKSAmJiAhZXJy b3IgKQo+PiArICAgICAgICB7Cj4+ICsgICAgICAgICAgICBlcnJvciA9IHRydWU7Cj4+ICsgICAg ICAgICAgICBwYW5pYygiVGltZW91dCB3aGVuIGZpbmlzaGluZyB1cGRhdGluZyBtaWNyb2NvZGUg KGZpbmlzaGVkICVkLyVkKSIsCj4+ICsgICAgICAgICAgICAgICAgICBmaW5pc2hlZCwgY3B1X25y KTsKPgo+V2h5IHRoZSBzZXR0aW5nIG9mICJlcnJvciIgd2hlbiB5b3UgcGFuaWMgYW55d2F5Pwo+ Cj5BbmQgcGxlYXNlIHVzZSBmb3JtYXQgc3BlY2lmaWVycyBtYXRjaGluZyB0aGUgdHlwZXMgb2Yg dGhlCj5mdXJ0aGVyIGFyZ3VtZW50cyAoaS5lLiB0d2ljZSAldSBoZXJlLCBidXQgcGxlYXNlIGNo ZWNrIG90aGVyCj5jb2RlIGFzIHdlbGwpLgo+Cj5GdXJ0aGVybW9yZSAoYW5kIEknbSBzdXJlIEkn dmUgZ2l2ZW4gdGhpcyBjb21tZW50IGJlZm9yZSkgaWYKPnlvdSByZWFsbHkgaGl0IHRoZSBsaW1p dCwgaG93IG1hbnkgcGFuaWMoKSBpbnZvY2F0aW9ucyBhcmUgdGhlcmUKPmdvaW5nIHRvIGJlPyBZ b3UgcnVuIHRoaXMgZnVuY3Rpb24gb24gYWxsIENQVXMgYWZ0ZXIgYWxsLgoKImVycm9yIiBpcyB0 byBhdm9pZCBjYWxsaW5nIG9mIHBhbmljKCkgb24gbXVsdGlwbGUgQ1BVcyBzaW11bHRhbmVvdXNs eS4KUm9nZXIgaXMgcmlnaHQ6IGF0b21pYyBwcmltaXRpdmVzIHNob3VsZCBiZSB1c2VkIGhlcmUu Cgo+Cj5PbiB0aGUgd2hvbGUsIHRha2luZyBhIDI1Ni10aHJlYWQgc3lzdGVtIGFzIGV4YW1wbGUs IHlvdQo+YWxsb3cgdGhlIHdob2xlIHByb2Nlc3MgdG8gdGFrZSBvdmVyIDQgbWluIHdpdGhvdXQg Y2FsbGluZwo+cGFuaWMoKS4KPkxlYXZpbmcgYXNpZGUgZ3Vlc3RzLCBJIGRvbid0IHRoaW5rIFhl biBpdHNlbGYgd291bGQKPnN1cnZpdmUgdGhpcyBpbiBhbGwgY2FzZXMuIFdlJ3ZlIGZvdW5kIHRo ZSBuZWVkIHRvIHByb2Nlc3MKPnNvZnRpcnFzIHdpdGggZmFyIHNtYWxsZXIgZGVsYXlzLCBpbiBw YXJ0aWN1bGFyIGZyb20ga2V5IGhhbmRsZXJzCj5wcm9kdWNpbmcgbG90cyBvZiBvdXRwdXQuIEF0 IHRoZSB2ZXJ5IGxlYXN0IHRoZXJlIHNob3VsZCBiZSBhCj5ib2xkIHdhcm5pbmcgbG9nZ2VkIGlm IHRoZSBzeXN0ZW0gaGFkIGJlZW4gaW4gc3RvcC1tYWNoaW5lCj5zdGF0ZSBmb3IsIHNheSwgbG9u Z2VyIHRoYW4gMTAwbXMgKHZhbHVlIHN1YmplY3QgdG8gZGlzY3Vzc2lvbikuCj4KCkluIHRoZW9y eSwgaWYgeW91IG1lYW4gMjU2IGNvcmVzLCB5ZXMuIERvIHlvdSB0aGluayBhIGNvbmZpZ3VyYWJs ZSBhbmQKcnVuLXRpbWUgY2hhbmdlYWJsZSB1cHBlciBib3VuZCBmb3IgdGhlIHdob2xlIHByb2Nl c3MgY2FuIGFkZHJlc3MgeW91cgpjb25jZXJuPyBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhpcyB1 cHBlciBib3VuZCBjYW4gYmUgc2V0IHRvIGEgbGFyZ2UKdmFsdWUgKGZvciBleGFtcGxlLCAxcyAq IHRoZSBudW1iZXIgb2Ygb25saW5lIGNvcmUpIGFuZCB0aGUgYWRtaW4gY2FuCmFqdXN0L2xvd2Vy IHRoZSB1cHBlciBib3VuZCBhY2NvcmRpbmcgdG8gdGhlIHdheSAoc2VyaWFsIG9yIHBhcmFsbGVs KSB0bwpwZXJmb3JtIHRoZSB1cGRhdGUgYW5kIG90aGVyIHJlcXVpcmVtZW50cy4gT25jZSB0aGUg dXBwZXIgYm91bmQgaXMKcmVhY2hlZCwgd2Ugd291bGQgY2FsbCBwYW5pYygpLgoKPj4gKyAgICAg ICAgfQo+PiArCj4+ICsgICAgICAgIGZpbmlzaGVkID0gYXRvbWljX3JlYWQoJmNwdV9vdXQpOwo+ PiArICAgIH0KPj4gKwo+PiArICAgIC8qCj4+ICsgICAgICogUmVmcmVzaCBDUFUgc2lnbmF0dXJl IChyZXZpc2lvbikgb24gdGhyZWFkcyB3aGljaCBkaWRuJ3QgY2FsbAo+PiArICAgICAqIGFwcGx5 X21pY3JvY29kZSgpLgo+PiArICAgICAqLwo+PiArICAgIGlmICggY3B1ICE9IGNwdW1hc2tfZmly c3QocGVyX2NwdShjcHVfc2libGluZ19tYXNrLCBjcHUpKSApCj4+ICsgICAgICAgIHJldCA9IG1p Y3JvY29kZV9vcHMtPmNvbGxlY3RfY3B1X2luZm8oJnRoaXNfY3B1KGNwdV9zaWcpKTsKPgo+QW5v dGhlciBvcHRpb24gd291bGQgYmUgZm9yIHRoZSBDUFUgZG9pbmcgdGhlIHVwZGF0ZSB0byBzaW1w bHkKPnByb3BhZ2F0ZSB0aGUgbmV3IHZhbHVlIHRvIGFsbCBpdHMgc2libGluZ3MnIGNwdV9zaWcg dmFsdWVzLgoKV2lsbCBkby4KCj4KPj4gQEAgLTMzNywxMiArNDI5LDU5IEBAIGludCBtaWNyb2Nv ZGVfdXBkYXRlKFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oY29uc3Rfdm9pZCkgYnVmLCB1bnNpZ25l ZCBsb25nIGxlbikKPj4gICAgICAgICAgaWYgKCBwYXRjaCApCj4+ICAgICAgICAgICAgICBtaWNy b2NvZGVfb3BzLT5mcmVlX3BhdGNoKHBhdGNoKTsKPj4gICAgICAgICAgcmV0ID0gLUVJTlZBTDsK Pj4gLSAgICAgICAgZ290byBmcmVlOwo+PiArICAgICAgICBnb3RvIHB1dDsKPj4gICAgICB9Cj4+ ICAKPj4gLSAgICByZXQgPSBjb250aW51ZV9oeXBlcmNhbGxfb25fY3B1KGNwdW1hc2tfZmlyc3Qo JmNwdV9vbmxpbmVfbWFwKSwKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRvX21pY3JvY29kZV91cGRhdGUsIHBhdGNoKTsKPj4gKyAgICBhdG9taWNfc2V0KCZjcHVfaW4s IDApOwo+PiArICAgIGF0b21pY19zZXQoJmNwdV9vdXQsIDApOwo+PiArICAgIGF0b21pY19zZXQo JmNwdV91cGRhdGVkLCAwKTsKPj4gKwo+PiArICAgIC8qIENhbGN1bGF0ZSB0aGUgbnVtYmVyIG9m IG9ubGluZSBDUFUgY29yZSAqLwo+PiArICAgIG5yX2NvcmVzID0gMDsKPj4gKyAgICBmb3JfZWFj aF9vbmxpbmVfY3B1KGNwdSkKPj4gKyAgICAgICAgaWYgKCBjcHUgPT0gY3B1bWFza19maXJzdChw ZXJfY3B1KGNwdV9zaWJsaW5nX21hc2ssIGNwdSkpICkKPj4gKyAgICAgICAgICAgIG5yX2NvcmVz Kys7Cj4+ICsKPj4gKyAgICBwcmludGsoWEVOTE9HX0lORk8gIiVkIGNvcmVzIGFyZSB0byB1cGRh dGUgdGhlaXIgbWljcm9jb2RlXG4iLCBucl9jb3Jlcyk7Cj4+ICsKPj4gKyAgICAvKgo+PiArICAg ICAqIFdlIGludGVuZCB0byBkaXNhYmxlIGludGVycnVwdCBmb3IgbG9uZyB0aW1lLCB3aGljaCBt YXkgbGVhZCB0bwo+PiArICAgICAqIHdhdGNoZG9nIHRpbWVvdXQuCj4+ICsgICAgICovCj4+ICsg ICAgd2F0Y2hkb2dfZGlzYWJsZSgpOwo+PiArICAgIC8qCj4+ICsgICAgICogTGF0ZSBsb2FkaW5n IGRhbmNlLiBXaHkgdGhlIGhlYXZ5LWhhbmRlZCBzdG9wX21hY2hpbmUgZWZmb3J0Pwo+PiArICAg ICAqCj4+ICsgICAgICogLSBIVCBzaWJsaW5ncyBtdXN0IGJlIGlkbGUgYW5kIG5vdCBleGVjdXRl IG90aGVyIGNvZGUgd2hpbGUgdGhlIG90aGVyCj4+ICsgICAgICogICBzaWJsaW5nIGlzIGxvYWRp bmcgbWljcm9jb2RlIGluIG9yZGVyIHRvIGF2b2lkIGFueSBuZWdhdGl2ZQo+PiArICAgICAqICAg aW50ZXJhY3Rpb25zIGNhdXNlIGJ5IHRoZSBsb2FkaW5nLgo+PiArICAgICAqCj4+ICsgICAgICog LSBJbiBhZGRpdGlvbiwgbWljcm9jb2RlIHVwZGF0ZSBvbiB0aGUgY29yZXMgbXVzdCBiZSBzZXJp YWxpemVkIHVudGlsCj4+ICsgICAgICogICB0aGlzIHJlcXVpcmVtZW50IGNhbiBiZSByZWxheGVk IGluIHRoZSBmdXR1cmUuIFJpZ2h0IG5vdywgdGhpcyBpcwo+PiArICAgICAqICAgY29uc2VydmF0 aXZlIGFuZCBnb29kLgo+PiArICAgICAqLwo+PiArICAgIHJldCA9IHN0b3BfbWFjaGluZV9ydW4o ZG9fbWljcm9jb2RlX3VwZGF0ZSwgcGF0Y2gsIE5SX0NQVVMpOwo+PiArICAgIHdhdGNoZG9nX2Vu YWJsZSgpOwo+PiArCj4+ICsgICAgaWYgKCBhdG9taWNfcmVhZCgmY3B1X3VwZGF0ZWQpID09IG5y X2NvcmVzICkKPj4gKyAgICB7Cj4+ICsgICAgICAgIHNwaW5fbG9jaygmbWljcm9jb2RlX211dGV4 KTsKPj4gKyAgICAgICAgbWljcm9jb2RlX3VwZGF0ZV9jYWNoZShwYXRjaCk7Cj4+ICsgICAgICAg IHNwaW5fdW5sb2NrKCZtaWNyb2NvZGVfbXV0ZXgpOwo+PiArICAgIH0KPj4gKyAgICBlbHNlIGlm ICggYXRvbWljX3JlYWQoJmNwdV91cGRhdGVkKSA9PSAwICkKPj4gKyAgICAgICAgbWljcm9jb2Rl X29wcy0+ZnJlZV9wYXRjaChwYXRjaCk7Cj4+ICsgICAgZWxzZQo+PiArICAgIHsKPj4gKyAgICAg ICAgcHJpbnRrKCJVcGRhdGluZyBtaWNyb2NvZGUgc3VjY2VlZGVkIG9uIHBhcnQgb2YgQ1BVcyBh bmQgZmFpbGVkIG9uXG4iCj4+ICsgICAgICAgICAgICAgICAib3RoZXJzIGR1ZSB0byBhbiB1bmtu b3duIHJlYXNvbi4gQSBzeXN0ZW0gd2l0aCBkaWZmZXJlbnRcbiIKPj4gKyAgICAgICAgICAgICAg ICJtaWNyb2NvZGUgcmV2aXNpb25zIGlzIGNvbnNpZGVyZWQgdW5zdGFibGUuIFBsZWFzZSByZWJv b3QgYW5kXG4iCj4+ICsgICAgICAgICAgICAgICAiZG8gbm90IGxvYWQgdGhlIG1pY3JvY29kZSB0 aGF0IHRyaWdnZXJzIHRoaXMgd2FybmluZ1xuIik7Cj4+ICsgICAgICAgIG1pY3JvY29kZV9vcHMt PmZyZWVfcGF0Y2gocGF0Y2gpOwo+PiArICAgIH0KPgo+QXMgc2FpZCBvbiBhbiBlYXJsaWVyIHBh dGNoLCBJIHRoaW5rIHRoZSBjYWNoZSBjYW4gYmUgdXBkYXRlZCBpZiBhdAo+bGVhc3Qgb25lIENQ VSBsb2FkZWQgdGhlIGJsb2Igc3VjY2Vzc2Z1bGx5LiBBZGRpdGlvbmFsbHkgSSdkIGxpa2UgdG8K PmFzayB0aGF0IHlvdSBsb2cgdGhlIG51bWJlciBvZiBzdWNjZXNzZnVsbHkgdXBkYXRlZCBjb3Jl cy4gQW5kCj5maW5hbGx5IHBlcmhhcHMgImRpZmZlcmluZyIgaW5zdGVhZCBvZiAiZGlmZmVyZW50 IiBhbmQgb21pdCAiZHVlIHRvCj5hbiB1bmtub3duIHJlYXNvbiI/CgpXaWxsIGRvLgoKVGhhbmtz CkNoYW8KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=