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=-7.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED 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 AF997C28CC5 for ; Wed, 5 Jun 2019 14:10:07 +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 86F1D206C3 for ; Wed, 5 Jun 2019 14:10:07 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 86F1D206C3 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.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 1hYWbu-0004PV-Sp; Wed, 05 Jun 2019 14:09:50 +0000 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 1hYWbt-0004OX-DY for xen-devel@lists.xenproject.org; Wed, 05 Jun 2019 14:09:49 +0000 X-Inumbo-ID: 92511f4e-879b-11e9-961c-8bf4beaf8886 Received: from prv1-mh.provo.novell.com (unknown [137.65.248.33]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 92511f4e-879b-11e9-961c-8bf4beaf8886; Wed, 05 Jun 2019 14:09:46 +0000 (UTC) Received: from INET-PRV1-MTA by prv1-mh.provo.novell.com with Novell_GroupWise; Wed, 05 Jun 2019 08:09:45 -0600 Message-Id: <5CF7CD2702000078002358F4@prv1-mh.provo.novell.com> X-Mailer: Novell GroupWise Internet Agent 18.1.1 Date: Wed, 05 Jun 2019 08:09:43 -0600 From: "Jan Beulich" To: "Chao Gao" References: <1558945891-3015-1-git-send-email-chao.gao@intel.com> <1558945891-3015-9-git-send-email-chao.gao@intel.com> In-Reply-To: <1558945891-3015-9-git-send-email-chao.gao@intel.com> Mime-Version: 1.0 Content-Disposition: inline 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" Pj4+IE9uIDI3LjA1LjE5IGF0IDEwOjMxLCA8Y2hhby5nYW9AaW50ZWwuY29tPiB3cm90ZToKPiBU aGlzIHBhdGNoIHBvcnRzIG1pY3JvY29kZSBpbXByb3ZlbWVudCBwYXRjaGVzIGZyb20gbGludXgg a2VybmVsLgo+IAo+IEJlZm9yZSB5b3UgcmVhZCBhbnkgZnVydGhlcjogdGhlIGVhcmx5IGxvYWRp bmcgbWV0aG9kIGlzIHN0aWxsIHRoZQo+IHByZWZlcnJlZCBvbmUgYW5kIHlvdSBzaG91bGQgYWx3 YXlzIGRvIHRoYXQuIFRoZSBmb2xsb3dpbmcgcGF0Y2ggaXMKPiBpbXByb3ZpbmcgdGhlIGxhdGUg bG9hZGluZyBtZWNoYW5pc20gZm9yIGxvbmcgcnVubmluZyBqb2JzIGFuZCBjbG91ZCB1c2UKPiBj YXNlcy4KPiAKPiBHYXRoZXIgYWxsIGNvcmVzIGFuZCBzZXJpYWxpemUgdGhlIG1pY3JvY29kZSB1 cGRhdGUgb24gdGhlbSBieSBkb2luZyBpdAo+IG9uZS1ieS1vbmUgdG8gbWFrZSB0aGUgbGF0ZSB1 cGRhdGUgcHJvY2VzcyBhcyByZWxpYWJsZSBhcyBwb3NzaWJsZSBhbmQKPiBhdm9pZCBwb3RlbnRp YWwgaXNzdWVzIGNhdXNlZCBieSB0aGUgbWljcm9jb2RlIHVwZGF0ZS4KPiAKPiBTaWduZWQtb2Zm LWJ5OiBDaGFvIEdhbyA8Y2hhby5nYW9AaW50ZWwuY29tPgo+IFRlc3RlZC1ieTogQ2hhbyBHYW8g PGNoYW8uZ2FvQGludGVsLmNvbT4KPiBbbGludXggY29tbWl0OiBhNTMyMWFlYzY0MTJiMjBiNWFk MTVkYjJkNmI5MTZjMDUzNDlkYmZmXQo+IFtsaW51eCBjb21taXQ6IGJiOGMxM2Q2MWE2MjkyNzZh MTYyYzFkMmIxYTIwYTgxNWNiY2ZiYjddCj4gQ2M6IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50 ZWwuY29tPgo+IENjOiBKdW4gTmFrYWppbWEgPGp1bi5uYWthamltYUBpbnRlbC5jb20+Cj4gQ2M6 IEFzaG9rIFJhaiA8YXNob2sucmFqQGludGVsLmNvbT4KPiBDYzogQm9yaXNsYXYgUGV0a292IDxi cEBzdXNlLmRlPgo+IENjOiBUaG9tYXMgR2xlaXhuZXIgPHRnbHhAbGludXRyb25peC5kZT4KPiBD YzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KPiBDYzogSmFuIEJl dWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgo+IC0tLQo+IENoYW5nZXMgaW4gdjc6Cj4gIC0gQ2hl Y2sgd2hldGhlciAndGltZW91dCcgaXMgMCByYXRoZXIgdGhhbiAiPD0wIiBzaW5jZSBpdCBpcyB1 bnNpZ25lZCBpbnQuCj4gIC0gcmV3b3JkIHRoZSBjb21tZW50IGFib3ZlIG1pY3JvY29kZV91cGRh dGVfY3B1KCkgdG8gY2xlYXJseSBzdGF0ZSB0aGF0Cj4gIG9uZSB0aHJlYWQgcGVyIGNvcmUgc2hv dWxkIGRvIHRoZSB1cGRhdGUuCj4gCj4gQ2hhbmdlcyBpbiB2NjoKPiAgLSBVc2Ugb25lIHRpbWVv dXQgcGVyaW9kIGZvciByZW5kZXp2b3VzIHN0YWdlIGFuZCBhbm90aGVyIGZvciB1cGRhdGUgc3Rh Z2UuCj4gIC0gc2NhbGUgdGltZSB0byB3YWl0IGJ5IHRoZSBudW1iZXIgb2YgcmVtYWluaW5nIGNw dXMgdG8gcmVzcG9uZC4KPiAgICBJdCBoZWxwcyB0byBmaW5kIHNvbWV0aGluZyB3cm9uZyBlYXJs aWVyIGFuZCB0aHVzIHdlIGNhbiByZWJvb3QgdGhlCj4gICAgc3lzdGVtIGVhcmxpZXIuCj4gLS0t Cj4gIHhlbi9hcmNoL3g4Ni9taWNyb2NvZGUuYyB8IDE3MSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgMTU1IGluc2VydGlv bnMoKyksIDE2IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbWlj cm9jb2RlLmMgYi94ZW4vYXJjaC94ODYvbWljcm9jb2RlLmMKPiBpbmRleCAyM2NmNTUwLi5mNGE0 MTdlIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9taWNyb2NvZGUuYwo+ICsrKyBiL3hlbi9h cmNoL3g4Ni9taWNyb2NvZGUuYwo+IEBAIC0yMiw2ICsyMiw3IEBACj4gICAqLwo+ICAKPiAgI2lu Y2x1ZGUgPHhlbi9jcHUuaD4KPiArI2luY2x1ZGUgPHhlbi9jcHVtYXNrLmg+CgpJdCBzZWVtcyB2 YW5pc2hpbmdseSB1bmxpa2VseSB0aGF0IHlvdSB3b3VsZCBuZWVkIHRoaXMgZXhwbGljaXQgI2lu Y2x1ZGUKaGVyZSwgYnV0IGl0IGNlcnRhaW5seSBpc24ndCB3cm9uZy4KCj4gQEAgLTI3MCwzMSAr Mjk2LDkwIEBAIGJvb2wgbWljcm9jb2RlX3VwZGF0ZV9jYWNoZShzdHJ1Y3QgbWljcm9jb2RlX3Bh dGNoICpwYXRjaCkKPiAgICAgIHJldHVybiB0cnVlOwo+ICB9Cj4gIAo+IC1zdGF0aWMgbG9uZyBk b19taWNyb2NvZGVfdXBkYXRlKHZvaWQgKnBhdGNoKQo+ICsvKiBXYWl0IGZvciBDUFVzIHRvIHJl bmRlenZvdXMgd2l0aCBhIHRpbWVvdXQgKHVzKSAqLwo+ICtzdGF0aWMgaW50IHdhaXRfZm9yX2Nw dXMoYXRvbWljX3QgKmNudCwgdW5zaWduZWQgaW50IGV4cGVjdCwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGludCB0aW1lb3V0KQo+ICB7Cj4gLSAgICBpbnQgZXJyb3IsIGNw dTsKPiAtCj4gLSAgICBlcnJvciA9IG1pY3JvY29kZV91cGRhdGVfY3B1KHBhdGNoKTsKPiAtICAg IGlmICggZXJyb3IgKQo+ICsgICAgd2hpbGUgKCBhdG9taWNfcmVhZChjbnQpIDwgZXhwZWN0ICkK PiAgICAgIHsKPiAtICAgICAgICBtaWNyb2NvZGVfb3BzLT5mcmVlX3BhdGNoKG1pY3JvY29kZV9j YWNoZSk7Cj4gLSAgICAgICAgcmV0dXJuIGVycm9yOwo+ICsgICAgICAgIGlmICggIXRpbWVvdXQg KQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgcHJpbnRrKCJDUFUlZDogVGltZW91dCB3aGVu IHdhaXRpbmcgZm9yIENQVXMgY2FsbGluZyBpblxuIiwKPiArICAgICAgICAgICAgICAgICAgIHNt cF9wcm9jZXNzb3JfaWQoKSk7Cj4gKyAgICAgICAgICAgIHJldHVybiAtRUJVU1k7Cj4gKyAgICAg ICAgfQo+ICsgICAgICAgIHVkZWxheSgxKTsKPiArICAgICAgICB0aW1lb3V0LS07Cj4gICAgICB9 CgpUaGVyZSdzIG5vIGNvbW1lbnQgaGVyZSBhbmQgbm90aGluZyBpbiB0aGUgZGVzY3JpcHRpb246 IEkgZG9uJ3QKcmVjYWxsIGNsYXJpZmljYXRpb24gYXMgdG8gd2hldGhlciBSRFRTQyBpcyBmaW5l IHRvIGJlIGlzc3VlZCBieSBhCnRocmVhZCB3aGVuIHVjb2RlIGlzIGJlaW5nIHVwZGF0ZWQgYnkg YW5vdGhlciB0aHJlYWQgb24gdGhlCnNhbWUgY29yZS4KCj4gK3N0YXRpYyBpbnQgZG9fbWljcm9j b2RlX3VwZGF0ZSh2b2lkICpwYXRjaCkKPiArewo+ICsgICAgdW5zaWduZWQgaW50IGNwdSA9IHNt cF9wcm9jZXNzb3JfaWQoKTsKPiArICAgIHVuc2lnbmVkIGludCBjcHVfbnIgPSBudW1fb25saW5l X2NwdXMoKTsKPiArICAgIHVuc2lnbmVkIGludCBmaW5pc2hlZDsKPiArICAgIGludCByZXQ7Cj4g KyAgICBzdGF0aWMgYm9vbCBlcnJvcjsKPiAgCj4gLSAgICBtaWNyb2NvZGVfdXBkYXRlX2NhY2hl KHBhdGNoKTsKPiArICAgIGF0b21pY19pbmMoJmNwdV9pbik7Cj4gKyAgICByZXQgPSB3YWl0X2Zv cl9jcHVzKCZjcHVfaW4sIGNwdV9uciwgTUlDUk9DT0RFX0NBTExJTl9USU1FT1VUX1VTKTsKPiAr ICAgIGlmICggcmV0ICkKPiArICAgICAgICByZXR1cm4gcmV0Owo+ICAKPiAtICAgIHJldHVybiBl cnJvcjsKPiArICAgIHJldCA9IG1pY3JvY29kZV9vcHMtPmNvbGxlY3RfY3B1X2luZm8oJnRoaXNf Y3B1KGNwdV9zaWcpKTsKPiArICAgIC8qCj4gKyAgICAgKiBMb2FkIG1pY3JvY29kZSB1cGRhdGUg b24gb25seSBvbmUgbG9naWNhbCBwcm9jZXNzb3IgcGVyIGNvcmUuCj4gKyAgICAgKiBIZXJlLCBh bW9uZyBsb2dpY2FsIHByb2Nlc3NvcnMgb2YgYSBjb3JlLCB0aGUgb25lIHdpdGggdGhlCj4gKyAg ICAgKiBsb3dlc3QgdGhyZWFkIGlkIGlzIGNob3NlbiB0byBwZXJmb3JtIHRoZSBsb2FkaW5nLgo+ ICsgICAgICovCj4gKyAgICBpZiAoICFyZXQgJiYgKGNwdSA9PSBjcHVtYXNrX2ZpcnN0KHBlcl9j cHUoY3B1X3NpYmxpbmdfbWFzaywgY3B1KSkpICkKCkF0IHRoZSB2ZXJ5IGxlYXN0IGl0J3Mgbm90 IG9idmlvdXMgd2hldGhlciB0aGlzIGh5cGVyLXRocmVhZGluZy1jZW50cmljCnZpZXcgKCJsb2dp Y2FsIHByb2Nlc3NvciIpIGFsc28gYXBwbGllcyB0byBBTUQncyBjb21wdXRlIHVuaXQgbW9kZWwK KHdoaWNoIHJldXNlcyBjcHVfc2libGluZ19tYXNrKS4gSXQgZG9lcywgYXMgdGhlIHJlc3BlY3Rp dmUgTVNScyBhcmUKcGVyLWNvbXB1dGUtdW5pdCByYXRoZXIgdGhhbiBwZXItY29yZSwgYnV0IEkn ZCBhcHByZWNpYXRlIGlmIHRoZQp3b3JkaW5nIGNvdWxkIGJlIGFkanVzdGVkIHRvIGV4cGxpY2l0 bHkgbmFtZSBib3RoIGNhc2VzIChtdWx0aXBsZQp0aHJlYWRzIHBlciBjb3JlIGFuZCBtdWx0aXBs ZSBjb3JlcyBwZXIgQ1UpLgoKPiArICAgIHsKPiArICAgICAgICByZXQgPSBtaWNyb2NvZGVfb3Bz LT5hcHBseV9taWNyb2NvZGUocGF0Y2gpOwo+ICsgICAgICAgIGlmICggIXJldCApCj4gKyAgICAg ICAgICAgIGF0b21pY19pbmMoJmNwdV91cGRhdGVkKTsKPiArICAgIH0KPiArICAgIC8qCj4gKyAg ICAgKiBJbmNyZWFzZSB0aGUgd2FpdCB0aW1lb3V0IHRvIGEgc2FmZSB2YWx1ZSBoZXJlIHNpbmNl IHdlJ3JlIHNlcmlhbGl6aW5nCgpJJ20gc3RydWdnbGluZyB3aXRoIHRoZSAiaW5jcmVhc2UiOiBJ IGRvbid0IHNlZSBhbnl0aGluZyBiZWluZyBpbmNyZWFzZWQKaGVyZS4gWW91IHNpbXBseSB1c2Ug YSBsYXJnZXIgdGltZW91dCB0aGFuIGFib3ZlLgoKPiArICAgICAqIHRoZSBtaWNyb2NvZGUgdXBk YXRlIGFuZCB0aGF0IGNvdWxkIHRha2UgYSB3aGlsZSBvbiBhIGxhcmdlIG51bWJlciBvZgo+ICsg ICAgICogQ1BVcy4gQW5kIHRoYXQgaXMgZmluZSBhcyB0aGUgKmFjdHVhbCogdGltZW91dCB3aWxs IGJlIGRldGVybWluZWQgYnkKPiArICAgICAqIHRoZSBsYXN0IENQVSBmaW5pc2hlZCB1cGRhdGlu ZyBhbmQgdGh1cyBjdXQgc2hvcnQKPiArICAgICAqLwo+ICsgICAgYXRvbWljX2luYygmY3B1X291 dCk7Cj4gKyAgICBmaW5pc2hlZCA9IGF0b21pY19yZWFkKCZjcHVfb3V0KTsKPiArICAgIHdoaWxl ICggIWVycm9yICYmIGZpbmlzaGVkICE9IGNwdV9uciApCj4gKyAgICB7Cj4gKyAgICAgICAgLyoK PiArICAgICAgICAgKiBEdXJpbmcgZWFjaCB0aW1lb3V0IGludGVydmFsLCBhdCBsZWFzdCBhIENQ VSBpcyBleHBlY3RlZCB0bwo+ICsgICAgICAgICAqIGZpbmlzaCBpdHMgdXBkYXRlLiBPdGhlcndp c2UsIHNvbWV0aGluZyBnb2VzIHdyb25nLgo+ICsgICAgICAgICAqLwo+ICsgICAgICAgIGlmICgg d2FpdF9mb3JfY3B1cygmY3B1X291dCwgZmluaXNoZWQgKyAxLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICBNSUNST0NPREVfVVBEQVRFX1RJTUVPVVRfVVMpICYmICFlcnJvciApCj4gKyAg ICAgICAgewo+ICsgICAgICAgICAgICBlcnJvciA9IHRydWU7Cj4gKyAgICAgICAgICAgIHBhbmlj KCJUaW1lb3V0IHdoZW4gZmluaXNoaW5nIHVwZGF0aW5nIG1pY3JvY29kZSAoZmluaXNoZWQgJWQv JWQpIiwKPiArICAgICAgICAgICAgICAgICAgZmluaXNoZWQsIGNwdV9ucik7CgpXaHkgdGhlIHNl dHRpbmcgb2YgImVycm9yIiB3aGVuIHlvdSBwYW5pYyBhbnl3YXk/CgpBbmQgcGxlYXNlIHVzZSBm b3JtYXQgc3BlY2lmaWVycyBtYXRjaGluZyB0aGUgdHlwZXMgb2YgdGhlCmZ1cnRoZXIgYXJndW1l bnRzIChpLmUuIHR3aWNlICV1IGhlcmUsIGJ1dCBwbGVhc2UgY2hlY2sgb3RoZXIKY29kZSBhcyB3 ZWxsKS4KCkZ1cnRoZXJtb3JlIChhbmQgSSdtIHN1cmUgSSd2ZSBnaXZlbiB0aGlzIGNvbW1lbnQg YmVmb3JlKSBpZgp5b3UgcmVhbGx5IGhpdCB0aGUgbGltaXQsIGhvdyBtYW55IHBhbmljKCkgaW52 b2NhdGlvbnMgYXJlIHRoZXJlCmdvaW5nIHRvIGJlPyBZb3UgcnVuIHRoaXMgZnVuY3Rpb24gb24g YWxsIENQVXMgYWZ0ZXIgYWxsLgoKT24gdGhlIHdob2xlLCB0YWtpbmcgYSAyNTYtdGhyZWFkIHN5 c3RlbSBhcyBleGFtcGxlLCB5b3UKYWxsb3cgdGhlIHdob2xlIHByb2Nlc3MgdG8gdGFrZSBvdmVy IDQgbWluIHdpdGhvdXQgY2FsbGluZwpwYW5pYygpLiBMZWF2aW5nIGFzaWRlIGd1ZXN0cywgSSBk b24ndCB0aGluayBYZW4gaXRzZWxmIHdvdWxkCnN1cnZpdmUgdGhpcyBpbiBhbGwgY2FzZXMuIFdl J3ZlIGZvdW5kIHRoZSBuZWVkIHRvIHByb2Nlc3MKc29mdGlycXMgd2l0aCBmYXIgc21hbGxlciBk ZWxheXMsIGluIHBhcnRpY3VsYXIgZnJvbSBrZXkgaGFuZGxlcnMKcHJvZHVjaW5nIGxvdHMgb2Yg b3V0cHV0LiBBdCB0aGUgdmVyeSBsZWFzdCB0aGVyZSBzaG91bGQgYmUgYQpib2xkIHdhcm5pbmcg bG9nZ2VkIGlmIHRoZSBzeXN0ZW0gaGFkIGJlZW4gaW4gc3RvcC1tYWNoaW5lCnN0YXRlIGZvciwg c2F5LCBsb25nZXIgdGhhbiAxMDBtcyAodmFsdWUgc3ViamVjdCB0byBkaXNjdXNzaW9uKS4KCj4g KyAgICAgICAgfQo+ICsKPiArICAgICAgICBmaW5pc2hlZCA9IGF0b21pY19yZWFkKCZjcHVfb3V0 KTsKPiArICAgIH0KPiArCj4gKyAgICAvKgo+ICsgICAgICogUmVmcmVzaCBDUFUgc2lnbmF0dXJl IChyZXZpc2lvbikgb24gdGhyZWFkcyB3aGljaCBkaWRuJ3QgY2FsbAo+ICsgICAgICogYXBwbHlf bWljcm9jb2RlKCkuCj4gKyAgICAgKi8KPiArICAgIGlmICggY3B1ICE9IGNwdW1hc2tfZmlyc3Qo cGVyX2NwdShjcHVfc2libGluZ19tYXNrLCBjcHUpKSApCj4gKyAgICAgICAgcmV0ID0gbWljcm9j b2RlX29wcy0+Y29sbGVjdF9jcHVfaW5mbygmdGhpc19jcHUoY3B1X3NpZykpOwoKQW5vdGhlciBv cHRpb24gd291bGQgYmUgZm9yIHRoZSBDUFUgZG9pbmcgdGhlIHVwZGF0ZSB0byBzaW1wbHkKcHJv cGFnYXRlIHRoZSBuZXcgdmFsdWUgdG8gYWxsIGl0cyBzaWJsaW5ncycgY3B1X3NpZyB2YWx1ZXMu Cgo+IEBAIC0zMzcsMTIgKzQyOSw1OSBAQCBpbnQgbWljcm9jb2RlX3VwZGF0ZShYRU5fR1VFU1Rf SEFORExFX1BBUkFNKGNvbnN0X3ZvaWQpIGJ1ZiwgdW5zaWduZWQgbG9uZyBsZW4pCj4gICAgICAg ICAgaWYgKCBwYXRjaCApCj4gICAgICAgICAgICAgIG1pY3JvY29kZV9vcHMtPmZyZWVfcGF0Y2go cGF0Y2gpOwo+ICAgICAgICAgIHJldCA9IC1FSU5WQUw7Cj4gLSAgICAgICAgZ290byBmcmVlOwo+ ICsgICAgICAgIGdvdG8gcHV0Owo+ICAgICAgfQo+ICAKPiAtICAgIHJldCA9IGNvbnRpbnVlX2h5 cGVyY2FsbF9vbl9jcHUoY3B1bWFza19maXJzdCgmY3B1X29ubGluZV9tYXApLAo+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19taWNyb2NvZGVfdXBkYXRlLCBwYXRjaCk7 Cj4gKyAgICBhdG9taWNfc2V0KCZjcHVfaW4sIDApOwo+ICsgICAgYXRvbWljX3NldCgmY3B1X291 dCwgMCk7Cj4gKyAgICBhdG9taWNfc2V0KCZjcHVfdXBkYXRlZCwgMCk7Cj4gKwo+ICsgICAgLyog Q2FsY3VsYXRlIHRoZSBudW1iZXIgb2Ygb25saW5lIENQVSBjb3JlICovCj4gKyAgICBucl9jb3Jl cyA9IDA7Cj4gKyAgICBmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdSkKPiArICAgICAgICBpZiAoIGNw dSA9PSBjcHVtYXNrX2ZpcnN0KHBlcl9jcHUoY3B1X3NpYmxpbmdfbWFzaywgY3B1KSkgKQo+ICsg ICAgICAgICAgICBucl9jb3JlcysrOwo+ICsKPiArICAgIHByaW50ayhYRU5MT0dfSU5GTyAiJWQg Y29yZXMgYXJlIHRvIHVwZGF0ZSB0aGVpciBtaWNyb2NvZGVcbiIsIG5yX2NvcmVzKTsKPiArCj4g KyAgICAvKgo+ICsgICAgICogV2UgaW50ZW5kIHRvIGRpc2FibGUgaW50ZXJydXB0IGZvciBsb25n IHRpbWUsIHdoaWNoIG1heSBsZWFkIHRvCj4gKyAgICAgKiB3YXRjaGRvZyB0aW1lb3V0Lgo+ICsg ICAgICovCj4gKyAgICB3YXRjaGRvZ19kaXNhYmxlKCk7Cj4gKyAgICAvKgo+ICsgICAgICogTGF0 ZSBsb2FkaW5nIGRhbmNlLiBXaHkgdGhlIGhlYXZ5LWhhbmRlZCBzdG9wX21hY2hpbmUgZWZmb3J0 Pwo+ICsgICAgICoKPiArICAgICAqIC0gSFQgc2libGluZ3MgbXVzdCBiZSBpZGxlIGFuZCBub3Qg ZXhlY3V0ZSBvdGhlciBjb2RlIHdoaWxlIHRoZSBvdGhlcgo+ICsgICAgICogICBzaWJsaW5nIGlz IGxvYWRpbmcgbWljcm9jb2RlIGluIG9yZGVyIHRvIGF2b2lkIGFueSBuZWdhdGl2ZQo+ICsgICAg ICogICBpbnRlcmFjdGlvbnMgY2F1c2UgYnkgdGhlIGxvYWRpbmcuCj4gKyAgICAgKgo+ICsgICAg ICogLSBJbiBhZGRpdGlvbiwgbWljcm9jb2RlIHVwZGF0ZSBvbiB0aGUgY29yZXMgbXVzdCBiZSBz ZXJpYWxpemVkIHVudGlsCj4gKyAgICAgKiAgIHRoaXMgcmVxdWlyZW1lbnQgY2FuIGJlIHJlbGF4 ZWQgaW4gdGhlIGZ1dHVyZS4gUmlnaHQgbm93LCB0aGlzIGlzCj4gKyAgICAgKiAgIGNvbnNlcnZh dGl2ZSBhbmQgZ29vZC4KPiArICAgICAqLwo+ICsgICAgcmV0ID0gc3RvcF9tYWNoaW5lX3J1bihk b19taWNyb2NvZGVfdXBkYXRlLCBwYXRjaCwgTlJfQ1BVUyk7Cj4gKyAgICB3YXRjaGRvZ19lbmFi bGUoKTsKPiArCj4gKyAgICBpZiAoIGF0b21pY19yZWFkKCZjcHVfdXBkYXRlZCkgPT0gbnJfY29y ZXMgKQo+ICsgICAgewo+ICsgICAgICAgIHNwaW5fbG9jaygmbWljcm9jb2RlX211dGV4KTsKPiAr ICAgICAgICBtaWNyb2NvZGVfdXBkYXRlX2NhY2hlKHBhdGNoKTsKPiArICAgICAgICBzcGluX3Vu bG9jaygmbWljcm9jb2RlX211dGV4KTsKPiArICAgIH0KPiArICAgIGVsc2UgaWYgKCBhdG9taWNf cmVhZCgmY3B1X3VwZGF0ZWQpID09IDAgKQo+ICsgICAgICAgIG1pY3JvY29kZV9vcHMtPmZyZWVf cGF0Y2gocGF0Y2gpOwo+ICsgICAgZWxzZQo+ICsgICAgewo+ICsgICAgICAgIHByaW50aygiVXBk YXRpbmcgbWljcm9jb2RlIHN1Y2NlZWRlZCBvbiBwYXJ0IG9mIENQVXMgYW5kIGZhaWxlZCBvblxu Igo+ICsgICAgICAgICAgICAgICAib3RoZXJzIGR1ZSB0byBhbiB1bmtub3duIHJlYXNvbi4gQSBz eXN0ZW0gd2l0aCBkaWZmZXJlbnRcbiIKPiArICAgICAgICAgICAgICAgIm1pY3JvY29kZSByZXZp c2lvbnMgaXMgY29uc2lkZXJlZCB1bnN0YWJsZS4gUGxlYXNlIHJlYm9vdCBhbmRcbiIKPiArICAg ICAgICAgICAgICAgImRvIG5vdCBsb2FkIHRoZSBtaWNyb2NvZGUgdGhhdCB0cmlnZ2VycyB0aGlz IHdhcm5pbmdcbiIpOwo+ICsgICAgICAgIG1pY3JvY29kZV9vcHMtPmZyZWVfcGF0Y2gocGF0Y2gp Owo+ICsgICAgfQoKQXMgc2FpZCBvbiBhbiBlYXJsaWVyIHBhdGNoLCBJIHRoaW5rIHRoZSBjYWNo ZSBjYW4gYmUgdXBkYXRlZCBpZiBhdApsZWFzdCBvbmUgQ1BVIGxvYWRlZCB0aGUgYmxvYiBzdWNj ZXNzZnVsbHkuIEFkZGl0aW9uYWxseSBJJ2QgbGlrZSB0bwphc2sgdGhhdCB5b3UgbG9nIHRoZSBu dW1iZXIgb2Ygc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQgY29yZXMuIEFuZApmaW5hbGx5IHBlcmhhcHMg ImRpZmZlcmluZyIgaW5zdGVhZCBvZiAiZGlmZmVyZW50IiBhbmQgb21pdCAiZHVlIHRvCmFuIHVu a25vd24gcmVhc29uIj8KCkphbgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnBy b2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94 ZW4tZGV2ZWw=