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.8 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 9460BC19759 for ; Thu, 1 Aug 2019 10:19:39 +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 65DC9206B8 for ; Thu, 1 Aug 2019 10:19:39 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 65DC9206B8 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 1ht8BA-00025L-9i; Thu, 01 Aug 2019 10:19:24 +0000 Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ht8B8-00023i-QV for xen-devel@lists.xenproject.org; Thu, 01 Aug 2019 10:19:22 +0000 X-Inumbo-ID: d1c44e29-b445-11e9-8980-bc764e045a96 Received: from mga17.intel.com (unknown [192.55.52.151]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS id d1c44e29-b445-11e9-8980-bc764e045a96; Thu, 01 Aug 2019 10:19:20 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 01 Aug 2019 03:19:20 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,333,1559545200"; d="scan'208";a="175207972" Received: from gao-cwp.sh.intel.com ([10.239.159.26]) by orsmga003.jf.intel.com with ESMTP; 01 Aug 2019 03:19:18 -0700 From: Chao Gao To: xen-devel@lists.xenproject.org Date: Thu, 1 Aug 2019 18:22:49 +0800 Message-Id: <1564654971-31328-15-git-send-email-chao.gao@intel.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1564654971-31328-1-git-send-email-chao.gao@intel.com> References: <1564654971-31328-1-git-send-email-chao.gao@intel.com> Subject: [Xen-devel] [PATCH v8 14/16] 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: 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" VGhpcyBwYXRjaCBwb3J0cyBtaWNyb2NvZGUgaW1wcm92ZW1lbnQgcGF0Y2hlcyBmcm9tIGxpbnV4 IGtlcm5lbC4KCkJlZm9yZSB5b3UgcmVhZCBhbnkgZnVydGhlcjogdGhlIGVhcmx5IGxvYWRpbmcg bWV0aG9kIGlzIHN0aWxsIHRoZQpwcmVmZXJyZWQgb25lIGFuZCB5b3Ugc2hvdWxkIGFsd2F5cyBk byB0aGF0LiBUaGUgZm9sbG93aW5nIHBhdGNoIGlzCmltcHJvdmluZyB0aGUgbGF0ZSBsb2FkaW5n IG1lY2hhbmlzbSBmb3IgbG9uZyBydW5uaW5nIGpvYnMgYW5kIGNsb3VkIHVzZQpjYXNlcy4KCkdh dGhlciBhbGwgY29yZXMgYW5kIHNlcmlhbGl6ZSB0aGUgbWljcm9jb2RlIHVwZGF0ZSBvbiB0aGVt IGJ5IGRvaW5nIGl0Cm9uZS1ieS1vbmUgdG8gbWFrZSB0aGUgbGF0ZSB1cGRhdGUgcHJvY2VzcyBh cyByZWxpYWJsZSBhcyBwb3NzaWJsZSBhbmQKYXZvaWQgcG90ZW50aWFsIGlzc3VlcyBjYXVzZWQg YnkgdGhlIG1pY3JvY29kZSB1cGRhdGUuCgpTaWduZWQtb2ZmLWJ5OiBDaGFvIEdhbyA8Y2hhby5n YW9AaW50ZWwuY29tPgpUZXN0ZWQtYnk6IENoYW8gR2FvIDxjaGFvLmdhb0BpbnRlbC5jb20+Clts aW51eCBjb21taXQ6IGE1MzIxYWVjNjQxMmIyMGI1YWQxNWRiMmQ2YjkxNmMwNTM0OWRiZmZdClts aW51eCBjb21taXQ6IGJiOGMxM2Q2MWE2MjkyNzZhMTYyYzFkMmIxYTIwYTgxNWNiY2ZiYjddCkNj OiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4KQ2M6IEp1biBOYWthamltYSA8anVu Lm5ha2FqaW1hQGludGVsLmNvbT4KQ2M6IEFzaG9rIFJhaiA8YXNob2sucmFqQGludGVsLmNvbT4K Q2M6IEJvcmlzbGF2IFBldGtvdiA8YnBAc3VzZS5kZT4KQ2M6IFRob21hcyBHbGVpeG5lciA8dGds eEBsaW51dHJvbml4LmRlPgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4 LmNvbT4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCkNoYW5nZXMgaW4g djg6CiAtIHRvIHN1cHBvcnQgYmxvY2tpbmcgI05NSSBoYW5kbGluZyBkdXJpbmcgbG9hZGluZyB1 Y29kZQogICAqIGludHJvZHVjZSBhIGZsYWcsICdsb2FkaW5nX3N0YXRlJywgdG8gbWFyayB0aGUg c3RhcnQgb3IgZW5kIG9mCiAgICAgdWNvZGUgbG9hZGluZy4KICAgKiB1c2UgYSBiaXRtYXAgZm9y IGNwdSBjYWxsaW4gc2luY2UgaWYgY3B1IG1heSBzdGF5IGluICNOTUkgaGFuZGxpbmcsCiAgICAg dGhlcmUgYXJlIHR3byBwbGFjZXMgZm9yIGEgY3B1IHRvIGNhbGwgaW4uIGJpdG1hcCB3b24ndCBi ZSBjb3VudGVkCiAgICAgdHdpY2UuCiAgICogZG9uJ3Qgd2FpdCBmb3IgYWxsIENQVXMgY2FsbG91 dCwganVzdCB3YWl0IGZvciBDUFVzIHRoYXQgcGVyZm9ybSB0aGUKICAgICB1cGRhdGUuIFdlIGhh dmUgdG8gZG8gdGhpcyBiZWNhdXNlIHNvbWUgdGhyZWFkcyBtYXkgYmUgc3R1Y2sgaW4gTk1JCiAg ICAgaGFuZGxpbmcgKHdoZXJlIGNhbm5vdCByZWFjaCB0aGUgcmVuZGV6dm91cykuCiAtIGVtaXQg YSB3YXJuaW5nIGlmIHRoZSBzeXN0ZW0gc3RheXMgaW4gc3RvcF9tYWNoaW5lIGNvbnRleHQgZm9y IG1vcmUKIHRoYW4gMXMKIC0gY29tbWVudCB0aGF0IHJkdHNjIGlzIGZpbmUgd2hpbGUgbG9hZGlu ZyBhbiB1cGRhdGUKIC0gdXNlIGNtcHhjaGcoKSB0byBhdm9pZCBwYW5pYyBiZWluZyBjYWxsZWQg b24gbXVsdGlwbGUgQ1BVcwogLSBQcm9wYWdhdGUgcmV2aXNpb24gbnVtYmVyIHRvIG90aGVyIHRo cmVhZHMKIC0gcmVmaW5lIGNvbW1lbnRzIGFuZCBwcm9tcHQgbWVzc2FnZXMKCkNoYW5nZXMgaW4g djc6CiAtIENoZWNrIHdoZXRoZXIgJ3RpbWVvdXQnIGlzIDAgcmF0aGVyIHRoYW4gIjw9MCIgc2lu Y2UgaXQgaXMgdW5zaWduZWQgaW50LgogLSByZXdvcmQgdGhlIGNvbW1lbnQgYWJvdmUgbWljcm9j b2RlX3VwZGF0ZV9jcHUoKSB0byBjbGVhcmx5IHN0YXRlIHRoYXQKIG9uZSB0aHJlYWQgcGVyIGNv cmUgc2hvdWxkIGRvIHRoZSB1cGRhdGUuCi0tLQogeGVuL2FyY2gveDg2L21pY3JvY29kZS5jIHwg MjI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiAxIGZp bGUgY2hhbmdlZCwgMjA3IGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9taWNyb2NvZGUuYyBiL3hlbi9hcmNoL3g4Ni9taWNyb2NvZGUuYwpp bmRleCBjYmFmMTNkLi42NzU0OWJlIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbWljcm9jb2Rl LmMKKysrIGIveGVuL2FyY2gveDg2L21pY3JvY29kZS5jCkBAIC0zMCwxOCArMzAsNDEgQEAKICNp bmNsdWRlIDx4ZW4vc21wLmg+CiAjaW5jbHVkZSA8eGVuL3NvZnRpcnEuaD4KICNpbmNsdWRlIDx4 ZW4vc3BpbmxvY2suaD4KKyNpbmNsdWRlIDx4ZW4vc3RvcF9tYWNoaW5lLmg+CiAjaW5jbHVkZSA8 eGVuL3Rhc2tsZXQuaD4KICNpbmNsdWRlIDx4ZW4vZ3Vlc3RfYWNjZXNzLmg+CiAjaW5jbHVkZSA8 eGVuL2Vhcmx5Y3Bpby5oPgorI2luY2x1ZGUgPHhlbi93YXRjaGRvZy5oPgogCisjaW5jbHVkZSA8 YXNtL2RlbGF5Lmg+CiAjaW5jbHVkZSA8YXNtL21zci5oPgogI2luY2x1ZGUgPGFzbS9wcm9jZXNz b3IuaD4KICNpbmNsdWRlIDxhc20vc2V0dXAuaD4KICNpbmNsdWRlIDxhc20vbWljcm9jb2RlLmg+ CiAKKy8qCisgKiBCZWZvcmUgcGVyZm9ybWluZyBhIGxhdGUgbWljcm9jb2RlIHVwZGF0ZSBvbiBh bnkgdGhyZWFkLCB3ZQorICogcmVuZGV6dm91cyBhbGwgY3B1cyBpbiBzdG9wX21hY2hpbmUgY29u dGV4dC4gVGhlIHRpbWVvdXQgZm9yCisgKiB3YWl0aW5nIGZvciBjcHUgcmVuZGV6dm91cyBpcyAz MG1zLiBJdCBpcyB0aGUgdGltZW91dCB1c2VkIGJ5CisgKiBsaXZlIHBhdGNoaW5nCisgKi8KKyNk ZWZpbmUgTUlDUk9DT0RFX0NBTExJTl9USU1FT1VUX1VTIDMwMDAwCisKKy8qCisgKiBUaW1lb3V0 IGZvciBlYWNoIHRocmVhZCB0byBjb21wbGV0ZSB1cGRhdGUgaXMgc2V0IHRvIDFzLiBJdCBpcyBh CisgKiBjb25zZXJ2YXRpdmUgY2hvaWNlIGNvbnNpZGVyaW5nIGFsbCBwb3NzaWJsZSBpbnRlcmZl cmVuY2UuCisgKi8KKyNkZWZpbmUgTUlDUk9DT0RFX1VQREFURV9USU1FT1VUX1VTIDEwMDAwMDAK Kwogc3RhdGljIG1vZHVsZV90IF9faW5pdGRhdGEgdWNvZGVfbW9kOwogc3RhdGljIHNpZ25lZCBp bnQgX19pbml0ZGF0YSB1Y29kZV9tb2RfaWR4Owogc3RhdGljIGJvb2xfdCBfX2luaXRkYXRhIHVj b2RlX21vZF9mb3JjZWQ7CitzdGF0aWMgdW5zaWduZWQgaW50IG5yX2NvcmVzOworc3RhdGljIGVu dW0geworICAgIExPQURJTkdfRVhJVEVELAorICAgIExPQURJTkdfRU5URVJFRCwKKyAgICBMT0FE SU5HX0FCT1JURUQsCit9IGxvYWRpbmdfc3RhdGU7CiAKIC8qCiAgKiBJZiB3ZSBzY2FuIHRoZSBp bml0cmFtZnMuY3BpbyBmb3IgdGhlIGVhcmx5IG1pY3JvY29kZSBjb2RlCkBAIC0xOTAsNiArMjEz LDE2IEBAIHN0YXRpYyBERUZJTkVfU1BJTkxPQ0sobWljcm9jb2RlX211dGV4KTsKIERFRklORV9Q RVJfQ1BVKHN0cnVjdCBjcHVfc2lnbmF0dXJlLCBjcHVfc2lnKTsKIAogLyoKKyAqIENvdW50IHRo ZSBDUFVzIHRoYXQgaGF2ZSBlbnRlcmVkLCBleGl0ZWQgdGhlIHJlbmRlenZvdXMgYW5kIHN1Y2Nl ZWRlZCBpbgorICogbWljcm9jb2RlIHVwZGF0ZSBkdXJpbmcgbGF0ZSBtaWNyb2NvZGUgdXBkYXRl IHJlc3BlY3RpdmVseS4KKyAqCisgKiBOb3RlIHRoYXQgYSBiaXRtYXAgaXMgdXNlZCBmb3IgY2Fs bGluIHRvIGFsbG93IGNwdSB0byBzZXQgYSBiaXQgbXVsdGlwbGUKKyAqIHRpbWVzLiBJdCBpcyBy ZXF1aXJlZCB0byBkbyBidXN5LWxvb3AgaW4gI05NSSBoYW5kbGluZy4KKyAqLworc3RhdGljIGNw dW1hc2tfdCBjcHVfY2FsbGluX21hcDsKK3N0YXRpYyBhdG9taWNfdCBjcHVfb3V0LCBjcHVfdXBk YXRlZDsKKworLyoKICAqIFJldHVybiBhIHBhdGNoIHRoYXQgY292ZXJzIGN1cnJlbnQgQ1BVLiBJ ZiB0aGVyZSBhcmUgbXVsdGlwbGUgcGF0Y2hlcywKICAqIHJldHVybiB0aGUgb25lIHdpdGggdGhl IGhpZ2hlc3QgcmV2aXNpb24gbnVtYmVyLiBSZXR1cm4gZXJyb3IgSWYgbm8KICAqIHBhdGNoIGlz IGZvdW5kIGFuZCBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBwYXJzaW5nIHByb2Nlc3MuIE90 aGVyd2lzZQpAQCAtMjM0LDYgKzI2NywzNSBAQCBib29sIG1pY3JvY29kZV91cGRhdGVfY2FjaGUo c3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gpCiB9CiAKIC8qCisgKiBXYWl0IGZvciBhIGNv bmRpdGlvbiB0byBiZSBtZXQgd2l0aCBhIHRpbWVvdXQgKHVzKS4KKyAqLworc3RhdGljIGludCB3 YWl0X2Zvcl9jb25kaXRpb24oaW50ICgqZnVuYykodm9pZCAqZGF0YSksIHZvaWQgKmRhdGEsCisg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHRpbWVvdXQpCit7CisgICAgd2hp bGUgKCAhZnVuYyhkYXRhKSApCisgICAgeworICAgICAgICBpZiAoICF0aW1lb3V0LS0gKQorICAg ICAgICB7CisgICAgICAgICAgICBwcmludGsoIkNQVSV1OiBUaW1lb3V0IGluICVzXG4iLCBzbXBf cHJvY2Vzc29yX2lkKCksIF9fZnVuY19fKTsKKyAgICAgICAgICAgIHJldHVybiAtRUJVU1k7Cisg ICAgICAgIH0KKyAgICAgICAgdWRlbGF5KDEpOworICAgIH0KKworICAgIHJldHVybiAwOworfQor CitzdGF0aWMgaW50IHdhaXRfY3B1X2NhbGxpbih2b2lkICpucikKK3sKKyAgICByZXR1cm4gY3B1 bWFza193ZWlnaHQoJmNwdV9jYWxsaW5fbWFwKSA+PSAodW5zaWduZWQgbG9uZylucjsKK30KKwor c3RhdGljIGludCB3YWl0X2NwdV9jYWxsb3V0KHZvaWQgKm5yKQoreworICAgIHJldHVybiBhdG9t aWNfcmVhZCgmY3B1X291dCkgPj0gKHVuc2lnbmVkIGxvbmcpbnI7Cit9CisKKy8qCiAgKiBMb2Fk IGEgbWljcm9jb2RlIHVwZGF0ZSB0byBjdXJyZW50IENQVS4KICAqCiAgKiBJZiBubyBwYXRjaCBp cyBwcm92aWRlZCwgdGhlIGNhY2hlZCBwYXRjaCB3aWxsIGJlIGxvYWRlZC4gTWljcm9jb2RlIHVw ZGF0ZQpAQCAtMjgzLDM3ICszNDUsMTA1IEBAIHN0YXRpYyBpbnQgbWljcm9jb2RlX3VwZGF0ZV9j cHUoY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gpCiAgICAgcmV0dXJuIGVycjsK IH0KIAotc3RhdGljIGxvbmcgZG9fbWljcm9jb2RlX3VwZGF0ZSh2b2lkICpwYXRjaCkKK3N0YXRp YyBpbnQgZG9fbWljcm9jb2RlX3VwZGF0ZSh2b2lkICpwYXRjaCkKIHsKLSAgICB1bnNpZ25lZCBp bnQgY3B1OworICAgIHVuc2lnbmVkIGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CisgICAg dW5zaWduZWQgaW50IGNwdV9uciA9IG51bV9vbmxpbmVfY3B1cygpOworICAgIGludCByZXQ7CiAK LSAgICAvKiBzdG9yZSB0aGUgcGF0Y2ggYWZ0ZXIgYSBzdWNjZXNzZnVsIGxvYWRpbmcgKi8KLSAg ICBpZiAoICFtaWNyb2NvZGVfdXBkYXRlX2NwdShwYXRjaCkgJiYgcGF0Y2ggKQorICAgIC8qIE1h cmsgbG9hZGluZyBhbiB1Y29kZSBpcyBpbiBwcm9ncmVzcyAqLworICAgIGNtcHhjaGcoJmxvYWRp bmdfc3RhdGUsIExPQURJTkdfRVhJVEVELCBMT0FESU5HX0VOVEVSRUQpOworICAgIGNwdW1hc2tf c2V0X2NwdShjcHUsICZjcHVfY2FsbGluX21hcCk7CisgICAgcmV0ID0gd2FpdF9mb3JfY29uZGl0 aW9uKHdhaXRfY3B1X2NhbGxpbiwgKHZvaWQgKikodW5zaWduZWQgbG9uZyljcHVfbnIsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE1JQ1JPQ09ERV9DQUxMSU5fVElNRU9VVF9VUyk7Cisg ICAgaWYgKCByZXQgKQogICAgIHsKLSAgICAgICAgc3Bpbl9sb2NrKCZtaWNyb2NvZGVfbXV0ZXgp OwotICAgICAgICBtaWNyb2NvZGVfdXBkYXRlX2NhY2hlKHBhdGNoKTsKLSAgICAgICAgc3Bpbl91 bmxvY2soJm1pY3JvY29kZV9tdXRleCk7Ci0gICAgICAgIHBhdGNoID0gTlVMTDsKKyAgICAgICAg Y21weGNoZygmbG9hZGluZ19zdGF0ZSwgTE9BRElOR19FTlRFUkVELCBMT0FESU5HX0FCT1JURUQp OworICAgICAgICByZXR1cm4gcmV0OwogICAgIH0KIAotICAgIGlmICggbWljcm9jb2RlX29wcy0+ ZW5kX3VwZGF0ZSApCi0gICAgICAgIG1pY3JvY29kZV9vcHMtPmVuZF91cGRhdGUoKTsKKyAgICAv KgorICAgICAqIExvYWQgbWljcm9jb2RlIHVwZGF0ZSBvbiBvbmx5IG9uZSBsb2dpY2FsIHByb2Nl c3NvciBwZXIgY29yZSwgb3IgaW4KKyAgICAgKiBBTUQncyB0ZXJtLCBvbmUgY29yZSBwZXIgY29t cHV0ZSB1bml0LiBUaGUgb25lIHdpdGggdGhlIGxvd2VzdCB0aHJlYWQKKyAgICAgKiBpZCBhbW9u ZyBhbGwgc2libGluZ3MgaXMgY2hvc2VuIHRvIHBlcmZvcm0gdGhlIGxvYWRpbmcuCisgICAgICov CisgICAgaWYgKCAoY3B1ID09IGNwdW1hc2tfZmlyc3QocGVyX2NwdShjcHVfc2libGluZ19tYXNr LCBjcHUpKSkgKQorICAgIHsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGludCBwYW5pY2tlZCA9 IDA7CisgICAgICAgIGJvb2wgbW9uaXRvcjsKKyAgICAgICAgdW5zaWduZWQgaW50IGRvbmU7Cisg ICAgICAgIHVuc2lnbmVkIGxvbmcgdGljayA9IDA7CiAKLSAgICBjcHUgPSBjcHVtYXNrX25leHQo c21wX3Byb2Nlc3Nvcl9pZCgpLCAmY3B1X29ubGluZV9tYXApOwotICAgIGlmICggY3B1IDwgbnJf Y3B1X2lkcyApCi0gICAgICAgIHJldHVybiBjb250aW51ZV9oeXBlcmNhbGxfb25fY3B1KGNwdSwg ZG9fbWljcm9jb2RlX3VwZGF0ZSwgcGF0Y2gpOworICAgICAgICByZXQgPSBtaWNyb2NvZGVfb3Bz LT5hcHBseV9taWNyb2NvZGUocGF0Y2gpOworICAgICAgICBpZiAoICFyZXQgKQorICAgICAgICB7 CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY3B1MjsKIAotICAgIC8qIEZyZWUgdGhlIHBhdGNo IGlmIG5vIENQVSBoYXMgbG9hZGVkIGl0IHN1Y2Nlc3NmdWxseS4gKi8KLSAgICBpZiAoIHBhdGNo ICkKLSAgICAgICAgbWljcm9jb2RlX2ZyZWVfcGF0Y2gocGF0Y2gpOworICAgICAgICAgICAgYXRv bWljX2luYygmY3B1X3VwZGF0ZWQpOworICAgICAgICAgICAgLyogUHJvcGFnYXRlIHJldmlzaW9u IG51bWJlciB0byBhbGwgc2libGluZ3MgKi8KKyAgICAgICAgICAgIGZvcl9lYWNoX2NwdShjcHUy LCBwZXJfY3B1KGNwdV9zaWJsaW5nX21hc2ssIGNwdSkpCisgICAgICAgICAgICAgICAgcGVyX2Nw dShjcHVfc2lnLCBjcHUyKS5yZXYgPSB0aGlzX2NwdShjcHVfc2lnKS5yZXY7CisgICAgICAgIH0K IAotICAgIHJldHVybiAwOworICAgICAgICAvKgorICAgICAgICAgKiBUaGUgZmlyc3QgQ1BVIHJl YWNoaW5nIGhlcmUgd2lsbCBtb25pdG9yIHRoZSBwcm9ncmVzcyBhbmQgZW1pdAorICAgICAgICAg KiB3YXJuaW5nIG1lc3NhZ2UgaWYgdGhlIGR1cmF0aW9uIGlzIHRvbyBsb25nIChlLmcuID4xIHNl Y29uZCkuCisgICAgICAgICAqLworICAgICAgICBtb25pdG9yID0gIWF0b21pY19pbmNfcmV0dXJu KCZjcHVfb3V0KTsKKyAgICAgICAgaWYgKCBtb25pdG9yICkKKyAgICAgICAgICAgIHRpY2sgPSBy ZHRzY19vcmRlcmVkKCk7CisKKyAgICAgICAgLyogV2FpdGluZyBmb3IgYWxsIGNvcmVzIG9yIGNv bXB1dGluZyB1bml0cyBmaW5pc2hpbmcgdXBkYXRlICovCisgICAgICAgIGRvbmUgPSBhdG9taWNf cmVhZCgmY3B1X291dCk7CisgICAgICAgIHdoaWxlICggcGFuaWNrZWQgJiYgZG9uZSAhPSBucl9j b3JlcyApCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBEdXJpbmcg ZWFjaCB0aW1lb3V0IGludGVydmFsLCBhdCBsZWFzdCBhIENQVSBpcyBleHBlY3RlZCB0bworICAg ICAgICAgICAgICogZmluaXNoIGl0cyB1cGRhdGUuIE90aGVyd2lzZSwgc29tZXRoaW5nIGdvZXMg d3JvbmcuCisgICAgICAgICAgICAgKgorICAgICAgICAgICAgICogTm90ZSB0aGF0IFJEVFNDIChp biB3YWl0X2Zvcl9jb25kaXRpb24oKSkgaXMgc2FmZSBmb3IgdGhyZWFkcyB0bworICAgICAgICAg ICAgICogZXhlY3V0ZSB3aGlsZSB3YWl0aW5nIGZvciBjb21wbGV0aW9uIG9mIGxvYWRpbmcgYW4g dXBkYXRlLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoIHdhaXRfZm9yX2NvbmRp dGlvbigmd2FpdF9jcHVfY2FsbG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICh2b2lkICopKHVuc2lnbmVkIGxvbmcpKGRvbmUgKyAxKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE1JQ1JPQ09ERV9VUERBVEVfVElNRU9VVF9VUykgJiYKKyAgICAg ICAgICAgICAgICAgIWNtcHhjaGcoJnBhbmlja2VkLCAwLCAxKSApCisgICAgICAgICAgICAgICAg cGFuaWMoIlRpbWVvdXQgd2hlbiBmaW5pc2hpbmcgdXBkYXRpbmcgbWljcm9jb2RlIChmaW5pc2hl ZCAldS8ldSkiLAorICAgICAgICAgICAgICAgICAgICAgIGRvbmUsIG5yX2NvcmVzKTsKKworICAg ICAgICAgICAgLyogUHJpbnQgd2FybmluZyBtZXNzYWdlIG9uY2UgaWYgbG9uZyB0aW1lIGlzIHNw ZW50IGhlcmUgKi8KKyAgICAgICAgICAgIGlmICggbW9uaXRvciApCisgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgaWYgKCByZHRzY19vcmRlcmVkKCkgLSB0aWNrID49IGNwdV9raHogKiAx MDAwICkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHByaW50ayhYRU5M T0dfV0FSTklORyAiV0FSTklORzogVVBEQVRJTkcgTUlDUk9DT0RFIEhBUyBDT05TVU1FRCBNT1JF IFRIQU4gMSBTRUNPTkQhXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgbW9uaXRvciA9IGZhbHNl OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZG9uZSA9 IGF0b21pY19yZWFkKCZjcHVfb3V0KTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIE1hcmsgbG9h ZGluZyBpcyBkb25lIHRvIHVuYmxvY2sgb3RoZXIgdGhyZWFkcyAqLworICAgICAgICBsb2FkaW5n X3N0YXRlID0gTE9BRElOR19FWElURUQ7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAg IHdoaWxlICggbG9hZGluZ19zdGF0ZSA9PSBMT0FESU5HX0VOVEVSRUQgKQorICAgICAgICAgICAg cmVwX25vcCgpOworICAgIH0KKworICAgIGlmICggbWljcm9jb2RlX29wcy0+ZW5kX3VwZGF0ZSAp CisgICAgICAgIG1pY3JvY29kZV9vcHMtPmVuZF91cGRhdGUoKTsKKworICAgIHJldHVybiByZXQ7 CiB9CiAKIGludCBtaWNyb2NvZGVfdXBkYXRlKFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oY29uc3Rf dm9pZCkgYnVmLCB1bnNpZ25lZCBsb25nIGxlbikKIHsKICAgICBpbnQgcmV0OwogICAgIHZvaWQg KmJ1ZmZlcjsKKyAgICB1bnNpZ25lZCBpbnQgY3B1LCB1cGRhdGVkOwogICAgIHN0cnVjdCBtaWNy b2NvZGVfcGF0Y2ggKnBhdGNoOwogCiAgICAgaWYgKCBsZW4gIT0gKHVpbnQzMl90KWxlbiApCkBA IC0zMzIsMTEgKzQ2MiwxOCBAQCBpbnQgbWljcm9jb2RlX3VwZGF0ZShYRU5fR1VFU1RfSEFORExF X1BBUkFNKGNvbnN0X3ZvaWQpIGJ1ZiwgdW5zaWduZWQgbG9uZyBsZW4pCiAgICAgICAgIGdvdG8g ZnJlZTsKICAgICB9CiAKKyAgICAvKiBjcHVfb25saW5lX21hcCBtdXN0IG5vdCBjaGFuZ2UgZHVy aW5nIHVwZGF0ZSAqLworICAgIGlmICggIWdldF9jcHVfbWFwcygpICkKKyAgICB7CisgICAgICAg IHJldCA9IC1FQlVTWTsKKyAgICAgICAgZ290byBmcmVlOworICAgIH0KKwogICAgIGlmICggbWlj cm9jb2RlX29wcy0+c3RhcnRfdXBkYXRlICkKICAgICB7CiAgICAgICAgIHJldCA9IG1pY3JvY29k ZV9vcHMtPnN0YXJ0X3VwZGF0ZSgpOwogICAgICAgICBpZiAoIHJldCAhPSAwICkKLSAgICAgICAg ICAgIGdvdG8gZnJlZTsKKyAgICAgICAgICAgIGdvdG8gcHV0OwogICAgIH0KIAogICAgIHBhdGNo ID0gbWljcm9jb2RlX3BhcnNlX2Jsb2IoYnVmZmVyLCBsZW4pOwpAQCAtMzQ0LDE5ICs0ODEsNjcg QEAgaW50IG1pY3JvY29kZV91cGRhdGUoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTShjb25zdF92b2lk KSBidWYsIHVuc2lnbmVkIGxvbmcgbGVuKQogICAgIHsKICAgICAgICAgcmV0ID0gUFRSX0VSUihw YXRjaCk7CiAgICAgICAgIHByaW50ayhYRU5MT0dfSU5GTyAiUGFyc2luZyBtaWNyb2NvZGUgYmxv YiBlcnJvciAlZFxuIiwgcmV0KTsKLSAgICAgICAgZ290byBmcmVlOworICAgICAgICBnb3RvIHB1 dDsKICAgICB9CiAKICAgICBpZiAoICFwYXRjaCApCiAgICAgewogICAgICAgICBwcmludGsoWEVO TE9HX0lORk8gIk5vIHVjb2RlIGZvdW5kLiBVcGRhdGUgYWJvcnRlZCFcbiIpOwogICAgICAgICBy ZXQgPSAtRUlOVkFMOwotICAgICAgICBnb3RvIGZyZWU7CisgICAgICAgIGdvdG8gcHV0OworICAg IH0KKworICAgIGNwdW1hc2tfY2xlYXIoJmNwdV9jYWxsaW5fbWFwKTsKKyAgICBhdG9taWNfc2V0 KCZjcHVfb3V0LCAwKTsKKyAgICBhdG9taWNfc2V0KCZjcHVfdXBkYXRlZCwgMCk7CisgICAgbG9h ZGluZ19zdGF0ZSA9IExPQURJTkdfRVhJVEVEOworCisgICAgLyogQ2FsY3VsYXRlIHRoZSBudW1i ZXIgb2Ygb25saW5lIENQVSBjb3JlICovCisgICAgbnJfY29yZXMgPSAwOworICAgIGZvcl9lYWNo X29ubGluZV9jcHUoY3B1KQorICAgICAgICBpZiAoIGNwdSA9PSBjcHVtYXNrX2ZpcnN0KHBlcl9j cHUoY3B1X3NpYmxpbmdfbWFzaywgY3B1KSkgKQorICAgICAgICAgICAgbnJfY29yZXMrKzsKKwor ICAgIHByaW50ayhYRU5MT0dfSU5GTyAiJXUgY29yZXMgYXJlIHRvIHVwZGF0ZSB0aGVpciBtaWNy b2NvZGVcbiIsIG5yX2NvcmVzKTsKKworICAgIC8qCisgICAgICogV2UgaW50ZW5kIHRvIGRpc2Fi bGUgaW50ZXJydXB0IGZvciBsb25nIHRpbWUsIHdoaWNoIG1heSBsZWFkIHRvCisgICAgICogd2F0 Y2hkb2cgdGltZW91dC4KKyAgICAgKi8KKyAgICB3YXRjaGRvZ19kaXNhYmxlKCk7CisgICAgLyoK KyAgICAgKiBMYXRlIGxvYWRpbmcgZGFuY2UuIFdoeSB0aGUgaGVhdnktaGFuZGVkIHN0b3BfbWFj aGluZSBlZmZvcnQ/CisgICAgICoKKyAgICAgKiAtIEhUIHNpYmxpbmdzIG11c3QgYmUgaWRsZSBh bmQgbm90IGV4ZWN1dGUgb3RoZXIgY29kZSB3aGlsZSB0aGUgb3RoZXIKKyAgICAgKiAgIHNpYmxp bmcgaXMgbG9hZGluZyBtaWNyb2NvZGUgaW4gb3JkZXIgdG8gYXZvaWQgYW55IG5lZ2F0aXZlCisg ICAgICogICBpbnRlcmFjdGlvbnMgY2F1c2UgYnkgdGhlIGxvYWRpbmcuCisgICAgICoKKyAgICAg KiAtIEluIGFkZGl0aW9uLCBtaWNyb2NvZGUgdXBkYXRlIG9uIHRoZSBjb3JlcyBtdXN0IGJlIHNl cmlhbGl6ZWQgdW50aWwKKyAgICAgKiAgIHRoaXMgcmVxdWlyZW1lbnQgY2FuIGJlIHJlbGF4ZWQg aW4gdGhlIGZ1dHVyZS4gUmlnaHQgbm93LCB0aGlzIGlzCisgICAgICogICBjb25zZXJ2YXRpdmUg YW5kIGdvb2QuCisgICAgICovCisgICAgcmV0ID0gc3RvcF9tYWNoaW5lX3J1bihkb19taWNyb2Nv ZGVfdXBkYXRlLCBwYXRjaCwgTlJfQ1BVUyk7CisgICAgd2F0Y2hkb2dfZW5hYmxlKCk7CisKKyAg ICB1cGRhdGVkID0gYXRvbWljX3JlYWQoJmNwdV91cGRhdGVkKTsKKyAgICBpZiAoIHVwZGF0ZWQg PiAwICkKKyAgICB7CisgICAgICAgIHNwaW5fbG9jaygmbWljcm9jb2RlX211dGV4KTsKKyAgICAg ICAgbWljcm9jb2RlX3VwZGF0ZV9jYWNoZShwYXRjaCk7CisgICAgICAgIHNwaW5fdW5sb2NrKCZt aWNyb2NvZGVfbXV0ZXgpOwogICAgIH0KKyAgICBlbHNlCisgICAgICAgIG1pY3JvY29kZV9mcmVl X3BhdGNoKHBhdGNoKTsKIAotICAgIHJldCA9IGNvbnRpbnVlX2h5cGVyY2FsbF9vbl9jcHUoY3B1 bWFza19maXJzdCgmY3B1X29ubGluZV9tYXApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZG9fbWljcm9jb2RlX3VwZGF0ZSwgcGF0Y2gpOworICAgIGlmICggdXBkYXRlZCAm JiB1cGRhdGVkICE9IG5yX2NvcmVzICkKKyAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIKKyAgICAg ICAgICAgICAgICJFUlJPUjogVXBkYXRpbmcgbWljcm9jb2RlIHN1Y2NlZWRlZCBvbiAldSBjb3Jl cyBhbmQgZmFpbGVkIG9uXG4iCisgICAgICAgICAgICAgICAib3RoZXIgJXUgY29yZXMuIEEgc3lz dGVtIHdpdGggZGlmZmVyaW5nIG1pY3JvY29kZSByZXZpc2lvbnMgaXNcbiIKKyAgICAgICAgICAg ICAgICJjb25zaWRlcmVkIHVuc3RhYmxlLiBQbGVhc2UgcmVib290IGFuZCBkbyBub3QgbG9hZCB0 aGUgbWljcm9jb2RlXG4iCisgICAgICAgICAgICAgICAidGhhdCB0cmlnZ2VycyB0aGlzIHdhcm5p bmchXG4iLCB1cGRhdGVkLCBucl9jb3JlcyAtIHVwZGF0ZWQpOwogCisgcHV0OgorICAgIHB1dF9j cHVfbWFwcygpOwogIGZyZWU6CiAgICAgeGZyZWUoYnVmZmVyKTsKICAgICByZXR1cm4gcmV0Owot LSAKMS44LjMuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=