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=-9.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT 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 B0EA2C282CE for ; Mon, 27 May 2019 08:28:01 +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 837722075B for ; Mon, 27 May 2019 08:28:01 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 837722075B 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 1hVAyw-0004IW-0A; Mon, 27 May 2019 08:27:46 +0000 Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hVAyu-0004Hg-Oo for xen-devel@lists.xenproject.org; Mon, 27 May 2019 08:27:44 +0000 X-Inumbo-ID: 4c7b69c6-8059-11e9-8980-bc764e045a96 Received: from mga12.intel.com (unknown [192.55.52.136]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS id 4c7b69c6-8059-11e9-8980-bc764e045a96; Mon, 27 May 2019 08:27:43 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 27 May 2019 01:27:43 -0700 X-ExtLoop1: 1 Received: from gao-cwp.sh.intel.com ([10.239.159.26]) by orsmga005.jf.intel.com with ESMTP; 27 May 2019 01:27:40 -0700 From: Chao Gao To: xen-devel@lists.xenproject.org Date: Mon, 27 May 2019 16:31:29 +0800 Message-Id: <1558945891-3015-9-git-send-email-chao.gao@intel.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1558945891-3015-1-git-send-email-chao.gao@intel.com> References: <1558945891-3015-1-git-send-email-chao.gao@intel.com> Subject: [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 , Borislav Petkov , Ashok Raj , Wei Liu , Jun Nakajima , Andrew Cooper , Jan Beulich , Thomas Gleixner , Chao Gao , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Message-ID: <20190527083129.HJFs1o3m-J92uydCZudaqlVpw-PIIMW9FzaG5i1YcjU@z> VGhpcyBwYXRjaCBwb3J0cyBtaWNyb2NvZGUgaW1wcm92ZW1lbnQgcGF0Y2hlcyBmcm9tIGxpbnV4 IGtlcm5lbC4KCkJlZm9yZSB5b3UgcmVhZCBhbnkgZnVydGhlcjogdGhlIGVhcmx5IGxvYWRpbmcg bWV0aG9kIGlzIHN0aWxsIHRoZQpwcmVmZXJyZWQgb25lIGFuZCB5b3Ugc2hvdWxkIGFsd2F5cyBk byB0aGF0LiBUaGUgZm9sbG93aW5nIHBhdGNoIGlzCmltcHJvdmluZyB0aGUgbGF0ZSBsb2FkaW5n IG1lY2hhbmlzbSBmb3IgbG9uZyBydW5uaW5nIGpvYnMgYW5kIGNsb3VkIHVzZQpjYXNlcy4KCkdh dGhlciBhbGwgY29yZXMgYW5kIHNlcmlhbGl6ZSB0aGUgbWljcm9jb2RlIHVwZGF0ZSBvbiB0aGVt IGJ5IGRvaW5nIGl0Cm9uZS1ieS1vbmUgdG8gbWFrZSB0aGUgbGF0ZSB1cGRhdGUgcHJvY2VzcyBh cyByZWxpYWJsZSBhcyBwb3NzaWJsZSBhbmQKYXZvaWQgcG90ZW50aWFsIGlzc3VlcyBjYXVzZWQg YnkgdGhlIG1pY3JvY29kZSB1cGRhdGUuCgpTaWduZWQtb2ZmLWJ5OiBDaGFvIEdhbyA8Y2hhby5n YW9AaW50ZWwuY29tPgpUZXN0ZWQtYnk6IENoYW8gR2FvIDxjaGFvLmdhb0BpbnRlbC5jb20+Clts aW51eCBjb21taXQ6IGE1MzIxYWVjNjQxMmIyMGI1YWQxNWRiMmQ2YjkxNmMwNTM0OWRiZmZdClts aW51eCBjb21taXQ6IGJiOGMxM2Q2MWE2MjkyNzZhMTYyYzFkMmIxYTIwYTgxNWNiY2ZiYjddCkNj OiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4KQ2M6IEp1biBOYWthamltYSA8anVu Lm5ha2FqaW1hQGludGVsLmNvbT4KQ2M6IEFzaG9rIFJhaiA8YXNob2sucmFqQGludGVsLmNvbT4K Q2M6IEJvcmlzbGF2IFBldGtvdiA8YnBAc3VzZS5kZT4KQ2M6IFRob21hcyBHbGVpeG5lciA8dGds eEBsaW51dHJvbml4LmRlPgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4 LmNvbT4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCkNoYW5nZXMgaW4g djc6CiAtIENoZWNrIHdoZXRoZXIgJ3RpbWVvdXQnIGlzIDAgcmF0aGVyIHRoYW4gIjw9MCIgc2lu Y2UgaXQgaXMgdW5zaWduZWQgaW50LgogLSByZXdvcmQgdGhlIGNvbW1lbnQgYWJvdmUgbWljcm9j b2RlX3VwZGF0ZV9jcHUoKSB0byBjbGVhcmx5IHN0YXRlIHRoYXQKIG9uZSB0aHJlYWQgcGVyIGNv cmUgc2hvdWxkIGRvIHRoZSB1cGRhdGUuCgpDaGFuZ2VzIGluIHY2OgogLSBVc2Ugb25lIHRpbWVv dXQgcGVyaW9kIGZvciByZW5kZXp2b3VzIHN0YWdlIGFuZCBhbm90aGVyIGZvciB1cGRhdGUgc3Rh Z2UuCiAtIHNjYWxlIHRpbWUgdG8gd2FpdCBieSB0aGUgbnVtYmVyIG9mIHJlbWFpbmluZyBjcHVz IHRvIHJlc3BvbmQuCiAgIEl0IGhlbHBzIHRvIGZpbmQgc29tZXRoaW5nIHdyb25nIGVhcmxpZXIg YW5kIHRodXMgd2UgY2FuIHJlYm9vdCB0aGUKICAgc3lzdGVtIGVhcmxpZXIuCi0tLQogeGVuL2Fy Y2gveDg2L21pY3JvY29kZS5jIHwgMTcxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTU1IGluc2VydGlvbnMoKyksIDE2IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9taWNyb2NvZGUuYyBiL3hlbi9h cmNoL3g4Ni9taWNyb2NvZGUuYwppbmRleCAyM2NmNTUwLi5mNGE0MTdlIDEwMDY0NAotLS0gYS94 ZW4vYXJjaC94ODYvbWljcm9jb2RlLmMKKysrIGIveGVuL2FyY2gveDg2L21pY3JvY29kZS5jCkBA IC0yMiw2ICsyMiw3IEBACiAgKi8KIAogI2luY2x1ZGUgPHhlbi9jcHUuaD4KKyNpbmNsdWRlIDx4 ZW4vY3B1bWFzay5oPgogI2luY2x1ZGUgPHhlbi9saWIuaD4KICNpbmNsdWRlIDx4ZW4va2VybmVs Lmg+CiAjaW5jbHVkZSA8eGVuL2luaXQuaD4KQEAgLTMwLDE1ICszMSwzNCBAQAogI2luY2x1ZGUg PHhlbi9zbXAuaD4KICNpbmNsdWRlIDx4ZW4vc29mdGlycS5oPgogI2luY2x1ZGUgPHhlbi9zcGlu bG9jay5oPgorI2luY2x1ZGUgPHhlbi9zdG9wX21hY2hpbmUuaD4KICNpbmNsdWRlIDx4ZW4vdGFz a2xldC5oPgogI2luY2x1ZGUgPHhlbi9ndWVzdF9hY2Nlc3MuaD4KICNpbmNsdWRlIDx4ZW4vZWFy bHljcGlvLmg+CisjaW5jbHVkZSA8eGVuL3dhdGNoZG9nLmg+CiAKKyNpbmNsdWRlIDxhc20vZGVs YXkuaD4KICNpbmNsdWRlIDxhc20vbXNyLmg+CiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgog I2luY2x1ZGUgPGFzbS9zZXR1cC5oPgogI2luY2x1ZGUgPGFzbS9taWNyb2NvZGUuaD4KIAorLyoK KyAqIEJlZm9yZSBwZXJmb3JtaW5nIGEgbGF0ZSBtaWNyb2NvZGUgdXBkYXRlIG9uIGFueSB0aHJl YWQsIHdlCisgKiByZW5kZXp2b3VzIGFsbCBjcHVzIGluIHN0b3BfbWFjaGluZSBjb250ZXh0LiBU aGUgdGltZW91dCBmb3IKKyAqIHdhaXRpbmcgZm9yIGNwdSByZW5kZXp2b3VzIGlzIDMwbXMuIEl0 IGlzIHRoZSB0aW1lb3V0IHVzZWQgYnkKKyAqIGxpdmUgcGF0Y2hpbmcKKyAqLworI2RlZmluZSBN SUNST0NPREVfQ0FMTElOX1RJTUVPVVRfVVMgMzAwMDAKKworLyoKKyAqIFRpbWVvdXQgZm9yIGVh Y2ggdGhyZWFkIHRvIGNvbXBsZXRlIHVwZGF0ZSBpcyBzZXQgdG8gMXMuIEl0IGlzIGEKKyAqIGNv bnNlcnZhdGl2ZSBjaG9pY2UgY29uc2lkZXJpbmcgYWxsIHBvc3NpYmxlIGludGVyZmVyZW5jZSAo Zm9yCisgKiBpbnN0YW5jZSwgc29tZXRpbWVzIHdiaW52ZCB0YWtlcyByZWxhdGl2ZSBsb25nIHRp bWUpLiBBbmQgYSBwZXJmZWN0CisgKiB0aW1lb3V0IGRvZXNuJ3QgaGVscCBhIGxvdCBleGNlcHQg YW4gZWFybHkgc2h1dGRvd24uCisgKi8KKyNkZWZpbmUgTUlDUk9DT0RFX1VQREFURV9USU1FT1VU X1VTIDEwMDAwMDAKKwogc3RhdGljIG1vZHVsZV90IF9faW5pdGRhdGEgdWNvZGVfbW9kOwogc3Rh dGljIHNpZ25lZCBpbnQgX19pbml0ZGF0YSB1Y29kZV9tb2RfaWR4Owogc3RhdGljIGJvb2xfdCBf X2luaXRkYXRhIHVjb2RlX21vZF9mb3JjZWQ7CkBAIC0xOTAsNiArMjEwLDEyIEBAIHN0YXRpYyBE RUZJTkVfU1BJTkxPQ0sobWljcm9jb2RlX211dGV4KTsKIERFRklORV9QRVJfQ1BVKHN0cnVjdCBj cHVfc2lnbmF0dXJlLCBjcHVfc2lnKTsKIAogLyoKKyAqIENvdW50IHRoZSBDUFVzIHRoYXQgaGF2 ZSBlbnRlcmVkLCBleGl0ZWQgdGhlIHJlbmRlenZvdXMgYW5kIHN1Y2NlZWRlZCBpbgorICogbWlj cm9jb2RlIHVwZGF0ZSBkdXJpbmcgbGF0ZSBtaWNyb2NvZGUgdXBkYXRlIHJlc3BlY3RpdmVseS4K KyAqLworc3RhdGljIGF0b21pY190IGNwdV9pbiwgY3B1X291dCwgY3B1X3VwZGF0ZWQ7CisKKy8q CiAgKiBSZXR1cm4gdGhlIHBhdGNoIHdpdGggdGhlIGhpZ2hlc3QgcmV2aXNpb24gaWQgYW1vbmcg YWxsIG1hdGNoaW5nCiAgKiBwYXRjaGVzIGluIHRoZSBibG9iLiBSZXR1cm4gTlVMTCBpZiBubyBz dWl0YWJsZSBwYXRjaC4KICAqLwpAQCAtMjcwLDMxICsyOTYsOTAgQEAgYm9vbCBtaWNyb2NvZGVf dXBkYXRlX2NhY2hlKHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQogICAgIHJldHVybiB0 cnVlOwogfQogCi1zdGF0aWMgbG9uZyBkb19taWNyb2NvZGVfdXBkYXRlKHZvaWQgKnBhdGNoKQor LyogV2FpdCBmb3IgQ1BVcyB0byByZW5kZXp2b3VzIHdpdGggYSB0aW1lb3V0ICh1cykgKi8KK3N0 YXRpYyBpbnQgd2FpdF9mb3JfY3B1cyhhdG9taWNfdCAqY250LCB1bnNpZ25lZCBpbnQgZXhwZWN0 LAorICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB0aW1lb3V0KQogewotICAg IGludCBlcnJvciwgY3B1OwotCi0gICAgZXJyb3IgPSBtaWNyb2NvZGVfdXBkYXRlX2NwdShwYXRj aCk7Ci0gICAgaWYgKCBlcnJvciApCisgICAgd2hpbGUgKCBhdG9taWNfcmVhZChjbnQpIDwgZXhw ZWN0ICkKICAgICB7Ci0gICAgICAgIG1pY3JvY29kZV9vcHMtPmZyZWVfcGF0Y2gobWljcm9jb2Rl X2NhY2hlKTsKLSAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICBpZiAoICF0aW1lb3V0ICkK KyAgICAgICAgeworICAgICAgICAgICAgcHJpbnRrKCJDUFUlZDogVGltZW91dCB3aGVuIHdhaXRp bmcgZm9yIENQVXMgY2FsbGluZyBpblxuIiwKKyAgICAgICAgICAgICAgICAgICBzbXBfcHJvY2Vz c29yX2lkKCkpOworICAgICAgICAgICAgcmV0dXJuIC1FQlVTWTsKKyAgICAgICAgfQorICAgICAg ICB1ZGVsYXkoMSk7CisgICAgICAgIHRpbWVvdXQtLTsKICAgICB9CiAKKyAgICByZXR1cm4gMDsK K30KIAotICAgIGNwdSA9IGNwdW1hc2tfbmV4dChzbXBfcHJvY2Vzc29yX2lkKCksICZjcHVfb25s aW5lX21hcCk7Ci0gICAgaWYgKCBjcHUgPCBucl9jcHVfaWRzICkKLSAgICAgICAgcmV0dXJuIGNv bnRpbnVlX2h5cGVyY2FsbF9vbl9jcHUoY3B1LCBkb19taWNyb2NvZGVfdXBkYXRlLCBwYXRjaCk7 CitzdGF0aWMgaW50IGRvX21pY3JvY29kZV91cGRhdGUodm9pZCAqcGF0Y2gpCit7CisgICAgdW5z aWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKKyAgICB1bnNpZ25lZCBpbnQgY3B1 X25yID0gbnVtX29ubGluZV9jcHVzKCk7CisgICAgdW5zaWduZWQgaW50IGZpbmlzaGVkOworICAg IGludCByZXQ7CisgICAgc3RhdGljIGJvb2wgZXJyb3I7CiAKLSAgICBtaWNyb2NvZGVfdXBkYXRl X2NhY2hlKHBhdGNoKTsKKyAgICBhdG9taWNfaW5jKCZjcHVfaW4pOworICAgIHJldCA9IHdhaXRf Zm9yX2NwdXMoJmNwdV9pbiwgY3B1X25yLCBNSUNST0NPREVfQ0FMTElOX1RJTUVPVVRfVVMpOwor ICAgIGlmICggcmV0ICkKKyAgICAgICAgcmV0dXJuIHJldDsKIAotICAgIHJldHVybiBlcnJvcjsK KyAgICByZXQgPSBtaWNyb2NvZGVfb3BzLT5jb2xsZWN0X2NwdV9pbmZvKCZ0aGlzX2NwdShjcHVf c2lnKSk7CisgICAgLyoKKyAgICAgKiBMb2FkIG1pY3JvY29kZSB1cGRhdGUgb24gb25seSBvbmUg bG9naWNhbCBwcm9jZXNzb3IgcGVyIGNvcmUuCisgICAgICogSGVyZSwgYW1vbmcgbG9naWNhbCBw cm9jZXNzb3JzIG9mIGEgY29yZSwgdGhlIG9uZSB3aXRoIHRoZQorICAgICAqIGxvd2VzdCB0aHJl YWQgaWQgaXMgY2hvc2VuIHRvIHBlcmZvcm0gdGhlIGxvYWRpbmcuCisgICAgICovCisgICAgaWYg KCAhcmV0ICYmIChjcHUgPT0gY3B1bWFza19maXJzdChwZXJfY3B1KGNwdV9zaWJsaW5nX21hc2ss IGNwdSkpKSApCisgICAgeworICAgICAgICByZXQgPSBtaWNyb2NvZGVfb3BzLT5hcHBseV9taWNy b2NvZGUocGF0Y2gpOworICAgICAgICBpZiAoICFyZXQgKQorICAgICAgICAgICAgYXRvbWljX2lu YygmY3B1X3VwZGF0ZWQpOworICAgIH0KKyAgICAvKgorICAgICAqIEluY3JlYXNlIHRoZSB3YWl0 IHRpbWVvdXQgdG8gYSBzYWZlIHZhbHVlIGhlcmUgc2luY2Ugd2UncmUgc2VyaWFsaXppbmcKKyAg ICAgKiB0aGUgbWljcm9jb2RlIHVwZGF0ZSBhbmQgdGhhdCBjb3VsZCB0YWtlIGEgd2hpbGUgb24g YSBsYXJnZSBudW1iZXIgb2YKKyAgICAgKiBDUFVzLiBBbmQgdGhhdCBpcyBmaW5lIGFzIHRoZSAq YWN0dWFsKiB0aW1lb3V0IHdpbGwgYmUgZGV0ZXJtaW5lZCBieQorICAgICAqIHRoZSBsYXN0IENQ VSBmaW5pc2hlZCB1cGRhdGluZyBhbmQgdGh1cyBjdXQgc2hvcnQKKyAgICAgKi8KKyAgICBhdG9t aWNfaW5jKCZjcHVfb3V0KTsKKyAgICBmaW5pc2hlZCA9IGF0b21pY19yZWFkKCZjcHVfb3V0KTsK KyAgICB3aGlsZSAoICFlcnJvciAmJiBmaW5pc2hlZCAhPSBjcHVfbnIgKQorICAgIHsKKyAgICAg ICAgLyoKKyAgICAgICAgICogRHVyaW5nIGVhY2ggdGltZW91dCBpbnRlcnZhbCwgYXQgbGVhc3Qg YSBDUFUgaXMgZXhwZWN0ZWQgdG8KKyAgICAgICAgICogZmluaXNoIGl0cyB1cGRhdGUuIE90aGVy d2lzZSwgc29tZXRoaW5nIGdvZXMgd3JvbmcuCisgICAgICAgICAqLworICAgICAgICBpZiAoIHdh aXRfZm9yX2NwdXMoJmNwdV9vdXQsIGZpbmlzaGVkICsgMSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIE1JQ1JPQ09ERV9VUERBVEVfVElNRU9VVF9VUykgJiYgIWVycm9yICkKKyAgICAgICAg eworICAgICAgICAgICAgZXJyb3IgPSB0cnVlOworICAgICAgICAgICAgcGFuaWMoIlRpbWVvdXQg d2hlbiBmaW5pc2hpbmcgdXBkYXRpbmcgbWljcm9jb2RlIChmaW5pc2hlZCAlZC8lZCkiLAorICAg ICAgICAgICAgICAgICAgZmluaXNoZWQsIGNwdV9ucik7CisgICAgICAgIH0KKworICAgICAgICBm aW5pc2hlZCA9IGF0b21pY19yZWFkKCZjcHVfb3V0KTsKKyAgICB9CisKKyAgICAvKgorICAgICAq IFJlZnJlc2ggQ1BVIHNpZ25hdHVyZSAocmV2aXNpb24pIG9uIHRocmVhZHMgd2hpY2ggZGlkbid0 IGNhbGwKKyAgICAgKiBhcHBseV9taWNyb2NvZGUoKS4KKyAgICAgKi8KKyAgICBpZiAoIGNwdSAh PSBjcHVtYXNrX2ZpcnN0KHBlcl9jcHUoY3B1X3NpYmxpbmdfbWFzaywgY3B1KSkgKQorICAgICAg ICByZXQgPSBtaWNyb2NvZGVfb3BzLT5jb2xsZWN0X2NwdV9pbmZvKCZ0aGlzX2NwdShjcHVfc2ln KSk7CisKKyAgICByZXR1cm4gcmV0OwogfQogCiBpbnQgbWljcm9jb2RlX3VwZGF0ZShYRU5fR1VF U1RfSEFORExFX1BBUkFNKGNvbnN0X3ZvaWQpIGJ1ZiwgdW5zaWduZWQgbG9uZyBsZW4pCiB7CiAg ICAgaW50IHJldDsKICAgICB2b2lkICpidWZmZXI7CisgICAgdW5zaWduZWQgaW50IGNwdSwgbnJf Y29yZXM7CiAgICAgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2g7CiAKICAgICBpZiAoIGxl biAhPSAodWludDMyX3QpbGVuICkKQEAgLTMxNiwxMSArNDAxLDE4IEBAIGludCBtaWNyb2NvZGVf dXBkYXRlKFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oY29uc3Rfdm9pZCkgYnVmLCB1bnNpZ25lZCBs b25nIGxlbikKICAgICAgICAgZ290byBmcmVlOwogICAgIH0KIAorICAgIC8qIGNwdV9vbmxpbmVf bWFwIG11c3Qgbm90IGNoYW5nZSBkdXJpbmcgdXBkYXRlICovCisgICAgaWYgKCAhZ2V0X2NwdV9t YXBzKCkgKQorICAgIHsKKyAgICAgICAgcmV0ID0gLUVCVVNZOworICAgICAgICBnb3RvIGZyZWU7 CisgICAgfQorCiAgICAgaWYgKCBtaWNyb2NvZGVfb3BzLT5zdGFydF91cGRhdGUgKQogICAgIHsK ICAgICAgICAgcmV0ID0gbWljcm9jb2RlX29wcy0+c3RhcnRfdXBkYXRlKCk7CiAgICAgICAgIGlm ICggcmV0ICE9IDAgKQotICAgICAgICAgICAgZ290byBmcmVlOworICAgICAgICAgICAgZ290byBw dXQ7CiAgICAgfQogCiAgICAgcGF0Y2ggPSBtaWNyb2NvZGVfcGFyc2VfYmxvYihidWZmZXIsIGxl bik7CkBAIC0zMzcsMTIgKzQyOSw1OSBAQCBpbnQgbWljcm9jb2RlX3VwZGF0ZShYRU5fR1VFU1Rf SEFORExFX1BBUkFNKGNvbnN0X3ZvaWQpIGJ1ZiwgdW5zaWduZWQgbG9uZyBsZW4pCiAgICAgICAg IGlmICggcGF0Y2ggKQogICAgICAgICAgICAgbWljcm9jb2RlX29wcy0+ZnJlZV9wYXRjaChwYXRj aCk7CiAgICAgICAgIHJldCA9IC1FSU5WQUw7Ci0gICAgICAgIGdvdG8gZnJlZTsKKyAgICAgICAg Z290byBwdXQ7CiAgICAgfQogCi0gICAgcmV0ID0gY29udGludWVfaHlwZXJjYWxsX29uX2NwdShj cHVtYXNrX2ZpcnN0KCZjcHVfb25saW5lX21hcCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkb19taWNyb2NvZGVfdXBkYXRlLCBwYXRjaCk7CisgICAgYXRvbWljX3NldCgm Y3B1X2luLCAwKTsKKyAgICBhdG9taWNfc2V0KCZjcHVfb3V0LCAwKTsKKyAgICBhdG9taWNfc2V0 KCZjcHVfdXBkYXRlZCwgMCk7CisKKyAgICAvKiBDYWxjdWxhdGUgdGhlIG51bWJlciBvZiBvbmxp bmUgQ1BVIGNvcmUgKi8KKyAgICBucl9jb3JlcyA9IDA7CisgICAgZm9yX2VhY2hfb25saW5lX2Nw dShjcHUpCisgICAgICAgIGlmICggY3B1ID09IGNwdW1hc2tfZmlyc3QocGVyX2NwdShjcHVfc2li bGluZ19tYXNrLCBjcHUpKSApCisgICAgICAgICAgICBucl9jb3JlcysrOworCisgICAgcHJpbnRr KFhFTkxPR19JTkZPICIlZCBjb3JlcyBhcmUgdG8gdXBkYXRlIHRoZWlyIG1pY3JvY29kZVxuIiwg bnJfY29yZXMpOworCisgICAgLyoKKyAgICAgKiBXZSBpbnRlbmQgdG8gZGlzYWJsZSBpbnRlcnJ1 cHQgZm9yIGxvbmcgdGltZSwgd2hpY2ggbWF5IGxlYWQgdG8KKyAgICAgKiB3YXRjaGRvZyB0aW1l b3V0LgorICAgICAqLworICAgIHdhdGNoZG9nX2Rpc2FibGUoKTsKKyAgICAvKgorICAgICAqIExh dGUgbG9hZGluZyBkYW5jZS4gV2h5IHRoZSBoZWF2eS1oYW5kZWQgc3RvcF9tYWNoaW5lIGVmZm9y dD8KKyAgICAgKgorICAgICAqIC0gSFQgc2libGluZ3MgbXVzdCBiZSBpZGxlIGFuZCBub3QgZXhl Y3V0ZSBvdGhlciBjb2RlIHdoaWxlIHRoZSBvdGhlcgorICAgICAqICAgc2libGluZyBpcyBsb2Fk aW5nIG1pY3JvY29kZSBpbiBvcmRlciB0byBhdm9pZCBhbnkgbmVnYXRpdmUKKyAgICAgKiAgIGlu dGVyYWN0aW9ucyBjYXVzZSBieSB0aGUgbG9hZGluZy4KKyAgICAgKgorICAgICAqIC0gSW4gYWRk aXRpb24sIG1pY3JvY29kZSB1cGRhdGUgb24gdGhlIGNvcmVzIG11c3QgYmUgc2VyaWFsaXplZCB1 bnRpbAorICAgICAqICAgdGhpcyByZXF1aXJlbWVudCBjYW4gYmUgcmVsYXhlZCBpbiB0aGUgZnV0 dXJlLiBSaWdodCBub3csIHRoaXMgaXMKKyAgICAgKiAgIGNvbnNlcnZhdGl2ZSBhbmQgZ29vZC4K KyAgICAgKi8KKyAgICByZXQgPSBzdG9wX21hY2hpbmVfcnVuKGRvX21pY3JvY29kZV91cGRhdGUs IHBhdGNoLCBOUl9DUFVTKTsKKyAgICB3YXRjaGRvZ19lbmFibGUoKTsKKworICAgIGlmICggYXRv bWljX3JlYWQoJmNwdV91cGRhdGVkKSA9PSBucl9jb3JlcyApCisgICAgeworICAgICAgICBzcGlu X2xvY2soJm1pY3JvY29kZV9tdXRleCk7CisgICAgICAgIG1pY3JvY29kZV91cGRhdGVfY2FjaGUo cGF0Y2gpOworICAgICAgICBzcGluX3VubG9jaygmbWljcm9jb2RlX211dGV4KTsKKyAgICB9Cisg ICAgZWxzZSBpZiAoIGF0b21pY19yZWFkKCZjcHVfdXBkYXRlZCkgPT0gMCApCisgICAgICAgIG1p Y3JvY29kZV9vcHMtPmZyZWVfcGF0Y2gocGF0Y2gpOworICAgIGVsc2UKKyAgICB7CisgICAgICAg IHByaW50aygiVXBkYXRpbmcgbWljcm9jb2RlIHN1Y2NlZWRlZCBvbiBwYXJ0IG9mIENQVXMgYW5k IGZhaWxlZCBvblxuIgorICAgICAgICAgICAgICAgIm90aGVycyBkdWUgdG8gYW4gdW5rbm93biBy ZWFzb24uIEEgc3lzdGVtIHdpdGggZGlmZmVyZW50XG4iCisgICAgICAgICAgICAgICAibWljcm9j b2RlIHJldmlzaW9ucyBpcyBjb25zaWRlcmVkIHVuc3RhYmxlLiBQbGVhc2UgcmVib290IGFuZFxu IgorICAgICAgICAgICAgICAgImRvIG5vdCBsb2FkIHRoZSBtaWNyb2NvZGUgdGhhdCB0cmlnZ2Vy cyB0aGlzIHdhcm5pbmdcbiIpOworICAgICAgICBtaWNyb2NvZGVfb3BzLT5mcmVlX3BhdGNoKHBh dGNoKTsKKyAgICB9CiAKKyBwdXQ6CisgICAgcHV0X2NwdV9tYXBzKCk7CiAgZnJlZToKICAgICB4 ZnJlZShidWZmZXIpOwogICAgIHJldHVybiByZXQ7Ci0tIAoxLjguMy4xCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlz dApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0 Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==