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 7BEF4C3A59F for ; Mon, 19 Aug 2019 01:22:41 +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 4CCAF2054F for ; Mon, 19 Aug 2019 01:22:41 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4CCAF2054F 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 1hzWNM-0001if-38; Mon, 19 Aug 2019 01:22:24 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hzWNK-0001h2-I7 for xen-devel@lists.xenproject.org; Mon, 19 Aug 2019 01:22:22 +0000 X-Inumbo-ID: ca6eb12a-c21f-11e9-aee9-bc764e2007e4 Received: from mga09.intel.com (unknown [134.134.136.24]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id ca6eb12a-c21f-11e9-aee9-bc764e2007e4; Mon, 19 Aug 2019 01:22:21 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 18 Aug 2019 18:22:20 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,403,1559545200"; d="scan'208";a="261683986" Received: from gao-cwp.sh.intel.com ([10.239.159.26]) by orsmga001.jf.intel.com with ESMTP; 18 Aug 2019 18:22:17 -0700 From: Chao Gao To: xen-devel@lists.xenproject.org Date: Mon, 19 Aug 2019 09:25:26 +0800 Message-Id: <1566177928-19114-14-git-send-email-chao.gao@intel.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1566177928-19114-1-git-send-email-chao.gao@intel.com> References: <1566177928-19114-1-git-send-email-chao.gao@intel.com> Subject: [Xen-devel] [PATCH v9 13/15] 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" Archived-At: List-Archive: VGhpcyBwYXRjaCBwb3J0cyBtaWNyb2NvZGUgaW1wcm92ZW1lbnQgcGF0Y2hlcyBmcm9tIGxpbnV4 IGtlcm5lbC4KCkJlZm9yZSB5b3UgcmVhZCBhbnkgZnVydGhlcjogdGhlIGVhcmx5IGxvYWRpbmcg bWV0aG9kIGlzIHN0aWxsIHRoZQpwcmVmZXJyZWQgb25lIGFuZCB5b3Ugc2hvdWxkIGFsd2F5cyBk byB0aGF0LiBUaGUgZm9sbG93aW5nIHBhdGNoIGlzCmltcHJvdmluZyB0aGUgbGF0ZSBsb2FkaW5n IG1lY2hhbmlzbSBmb3IgbG9uZyBydW5uaW5nIGpvYnMgYW5kIGNsb3VkIHVzZQpjYXNlcy4KCkdh dGhlciBhbGwgY29yZXMgYW5kIHNlcmlhbGl6ZSB0aGUgbWljcm9jb2RlIHVwZGF0ZSBvbiB0aGVt IGJ5IGRvaW5nIGl0Cm9uZS1ieS1vbmUgdG8gbWFrZSB0aGUgbGF0ZSB1cGRhdGUgcHJvY2VzcyBh cyByZWxpYWJsZSBhcyBwb3NzaWJsZSBhbmQKYXZvaWQgcG90ZW50aWFsIGlzc3VlcyBjYXVzZWQg YnkgdGhlIG1pY3JvY29kZSB1cGRhdGUuCgpTaWduZWQtb2ZmLWJ5OiBDaGFvIEdhbyA8Y2hhby5n YW9AaW50ZWwuY29tPgpUZXN0ZWQtYnk6IENoYW8gR2FvIDxjaGFvLmdhb0BpbnRlbC5jb20+Clts aW51eCBjb21taXQ6IGE1MzIxYWVjNjQxMmIyMGI1YWQxNWRiMmQ2YjkxNmMwNTM0OWRiZmZdClts aW51eCBjb21taXQ6IGJiOGMxM2Q2MWE2MjkyNzZhMTYyYzFkMmIxYTIwYTgxNWNiY2ZiYjddCkNj OiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4KQ2M6IEp1biBOYWthamltYSA8anVu Lm5ha2FqaW1hQGludGVsLmNvbT4KQ2M6IEFzaG9rIFJhaiA8YXNob2sucmFqQGludGVsLmNvbT4K Q2M6IEJvcmlzbGF2IFBldGtvdiA8YnBAc3VzZS5kZT4KQ2M6IFRob21hcyBHbGVpeG5lciA8dGds eEBsaW51dHJvbml4LmRlPgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4 LmNvbT4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCkNoYW5nZXMgaW4g djk6CiAtIGxvZyBfX2J1aWxkaW5fcmV0dXJuX2FkZHJlc3MoMCkgd2hlbiB0aW1lb3V0CiAtIGRp dmlkZSBDUFVzIGludG8gdGhyZWUgbG9naWNhbCBzZXRzIGFuZCB0aGV5IHdpbGwgY2FsbCBkaWZm ZXJlbnQKIGZ1bmN0aW9ucyBkdXJpbmcgdWNvZGUgbG9hZGluZy4gVGhlICdjb250cm9sIHRocmVh ZCcgaXMgY2hvc2VuIHRvCiBjb29yZGluYXRlIHVjb2RlIGxvYWRpbmcgb24gYWxsIENQVXMuIFNp bmNlIG9ubHkgY29udHJvbCB0aHJlYWQgd291bGQKIHNldCAnbG9hZGluZ19zdGF0ZScsIHdlIGNh biBnZXQgcmlkIG9mICdjbXB4Y2hnJyBzdHVmZiBpbiB2OC4KIC0gcy9yZXBfbm9wL2NwdV9yZWxh eAogLSBlYWNoIHRocmVhZCB1cGRhdGVzIGl0cyByZXZpc2lvbiBudW1iZXIgaXRzZWxmCiAtIGFk ZCBYRU5MT0dfRVJSIHByZWZpeCBmb3IgZWFjaCBsaW5lIG9mIG11bHRpLWxpbmUgbG9nIG1lc3Nh Z2VzCgpDaGFuZ2VzIGluIHY4OgogLSB0byBzdXBwb3J0IGJsb2NraW5nICNOTUkgaGFuZGxpbmcg ZHVyaW5nIGxvYWRpbmcgdWNvZGUKICAgKiBpbnRyb2R1Y2UgYSBmbGFnLCAnbG9hZGluZ19zdGF0 ZScsIHRvIG1hcmsgdGhlIHN0YXJ0IG9yIGVuZCBvZgogICAgIHVjb2RlIGxvYWRpbmcuCiAgICog dXNlIGEgYml0bWFwIGZvciBjcHUgY2FsbGluIHNpbmNlIGlmIGNwdSBtYXkgc3RheSBpbiAjTk1J IGhhbmRsaW5nLAogICAgIHRoZXJlIGFyZSB0d28gcGxhY2VzIGZvciBhIGNwdSB0byBjYWxsIGlu LiBiaXRtYXAgd29uJ3QgYmUgY291bnRlZAogICAgIHR3aWNlLgogICAqIGRvbid0IHdhaXQgZm9y IGFsbCBDUFVzIGNhbGxvdXQsIGp1c3Qgd2FpdCBmb3IgQ1BVcyB0aGF0IHBlcmZvcm0gdGhlCiAg ICAgdXBkYXRlLiBXZSBoYXZlIHRvIGRvIHRoaXMgYmVjYXVzZSBzb21lIHRocmVhZHMgbWF5IGJl IHN0dWNrIGluIE5NSQogICAgIGhhbmRsaW5nICh3aGVyZSBjYW5ub3QgcmVhY2ggdGhlIHJlbmRl enZvdXMpLgogLSBlbWl0IGEgd2FybmluZyBpZiB0aGUgc3lzdGVtIHN0YXlzIGluIHN0b3BfbWFj aGluZSBjb250ZXh0IGZvciBtb3JlCiB0aGFuIDFzCiAtIGNvbW1lbnQgdGhhdCByZHRzYyBpcyBm aW5lIHdoaWxlIGxvYWRpbmcgYW4gdXBkYXRlCiAtIHVzZSBjbXB4Y2hnKCkgdG8gYXZvaWQgcGFu aWMgYmVpbmcgY2FsbGVkIG9uIG11bHRpcGxlIENQVXMKIC0gUHJvcGFnYXRlIHJldmlzaW9uIG51 bWJlciB0byBvdGhlciB0aHJlYWRzCiAtIHJlZmluZSBjb21tZW50cyBhbmQgcHJvbXB0IG1lc3Nh Z2VzCgpDaGFuZ2VzIGluIHY3OgogLSBDaGVjayB3aGV0aGVyICd0aW1lb3V0JyBpcyAwIHJhdGhl ciB0aGFuICI8PTAiIHNpbmNlIGl0IGlzIHVuc2lnbmVkIGludC4KIC0gcmV3b3JkIHRoZSBjb21t ZW50IGFib3ZlIG1pY3JvY29kZV91cGRhdGVfY3B1KCkgdG8gY2xlYXJseSBzdGF0ZSB0aGF0CiBv bmUgdGhyZWFkIHBlciBjb3JlIHNob3VsZCBkbyB0aGUgdXBkYXRlLgotLS0KIHhlbi9hcmNoL3g4 Ni9taWNyb2NvZGUuYyB8IDI4OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDI2NyBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbWljcm9jb2RlLmMgYi94ZW4vYXJjaC94 ODYvbWljcm9jb2RlLmMKaW5kZXggYmRkOWM5Zi4uOTFmOWU4MSAxMDA2NDQKLS0tIGEveGVuL2Fy Y2gveDg2L21pY3JvY29kZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9taWNyb2NvZGUuYwpAQCAtMzAs MTggKzMwLDUyIEBACiAjaW5jbHVkZSA8eGVuL3NtcC5oPgogI2luY2x1ZGUgPHhlbi9zb2Z0aXJx Lmg+CiAjaW5jbHVkZSA8eGVuL3NwaW5sb2NrLmg+CisjaW5jbHVkZSA8eGVuL3N0b3BfbWFjaGlu ZS5oPgogI2luY2x1ZGUgPHhlbi90YXNrbGV0Lmg+CiAjaW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vz cy5oPgogI2luY2x1ZGUgPHhlbi9lYXJseWNwaW8uaD4KKyNpbmNsdWRlIDx4ZW4vd2F0Y2hkb2cu aD4KIAorI2luY2x1ZGUgPGFzbS9kZWxheS5oPgogI2luY2x1ZGUgPGFzbS9tc3IuaD4KICNpbmNs dWRlIDxhc20vcHJvY2Vzc29yLmg+CiAjaW5jbHVkZSA8YXNtL3NldHVwLmg+CiAjaW5jbHVkZSA8 YXNtL21pY3JvY29kZS5oPgogCisvKgorICogQmVmb3JlIHBlcmZvcm1pbmcgYSBsYXRlIG1pY3Jv Y29kZSB1cGRhdGUgb24gYW55IHRocmVhZCwgd2UKKyAqIHJlbmRlenZvdXMgYWxsIGNwdXMgaW4g c3RvcF9tYWNoaW5lIGNvbnRleHQuIFRoZSB0aW1lb3V0IGZvcgorICogd2FpdGluZyBmb3IgY3B1 IHJlbmRlenZvdXMgaXMgMzBtcy4gSXQgaXMgdGhlIHRpbWVvdXQgdXNlZCBieQorICogbGl2ZSBw YXRjaGluZworICovCisjZGVmaW5lIE1JQ1JPQ09ERV9DQUxMSU5fVElNRU9VVF9VUyAzMDAwMAor CisvKgorICogVGltZW91dCBmb3IgZWFjaCB0aHJlYWQgdG8gY29tcGxldGUgdXBkYXRlIGlzIHNl dCB0byAxcy4gSXQgaXMgYQorICogY29uc2VydmF0aXZlIGNob2ljZSBjb25zaWRlcmluZyBhbGwg cG9zc2libGUgaW50ZXJmZXJlbmNlLgorICovCisjZGVmaW5lIE1JQ1JPQ09ERV9VUERBVEVfVElN RU9VVF9VUyAxMDAwMDAwCisKIHN0YXRpYyBtb2R1bGVfdCBfX2luaXRkYXRhIHVjb2RlX21vZDsK IHN0YXRpYyBzaWduZWQgaW50IF9faW5pdGRhdGEgdWNvZGVfbW9kX2lkeDsKIHN0YXRpYyBib29s X3QgX19pbml0ZGF0YSB1Y29kZV9tb2RfZm9yY2VkOworc3RhdGljIHVuc2lnbmVkIGludCBucl9j b3JlczsKKworLyoKKyAqIFRoZXNlIHN0YXRlcyBoZWxwIHRvIGNvb3JkaW5hdGUgQ1BVcyBkdXJp bmcgbG9hZGluZyBhbiB1cGRhdGUuCisgKgorICogVGhlIHNlbWFudGljcyBvZiBlYWNoIHN0YXRl IGlzIGFzIGZvbGxvdzoKKyAqICAtIExPQURJTkdfUFJFUEFSRTogaW5pdGlhbCBzdGF0ZSBvZiAn bG9hZGluZ19zdGF0ZScuCisgKiAgLSBMT0FESU5HX0NBTExJTjogQ1BVcyBhcmUgYWxsb3dlZCB0 byBjYWxsaW4uCisgKiAgLSBMT0FESU5HX0VOVEVSOiBhbGwgQ1BVcyBoYXZlIGNhbGxlZCBpbi4g SW5pdGlhdGUgdWNvZGUgbG9hZGluZy4KKyAqICAtIExPQURJTkdfRVhJVDogdWNvZGUgbG9hZGlu ZyBpcyBkb25lIG9yIGFib3J0ZWQuCisgKi8KK3N0YXRpYyBlbnVtIHsKKyAgICBMT0FESU5HX1BS RVBBUkUsCisgICAgTE9BRElOR19DQUxMSU4sCisgICAgTE9BRElOR19FTlRFUiwKKyAgICBMT0FE SU5HX0VYSVQsCit9IGxvYWRpbmdfc3RhdGU7CiAKIC8qCiAgKiBJZiB3ZSBzY2FuIHRoZSBpbml0 cmFtZnMuY3BpbyBmb3IgdGhlIGVhcmx5IG1pY3JvY29kZSBjb2RlCkBAIC0xOTAsNiArMjI0LDE2 IEBAIHN0YXRpYyBERUZJTkVfU1BJTkxPQ0sobWljcm9jb2RlX211dGV4KTsKIERFRklORV9QRVJf Q1BVKHN0cnVjdCBjcHVfc2lnbmF0dXJlLCBjcHVfc2lnKTsKIAogLyoKKyAqIENvdW50IHRoZSBD UFVzIHRoYXQgaGF2ZSBlbnRlcmVkLCBleGl0ZWQgdGhlIHJlbmRlenZvdXMgYW5kIHN1Y2NlZWRl ZCBpbgorICogbWljcm9jb2RlIHVwZGF0ZSBkdXJpbmcgbGF0ZSBtaWNyb2NvZGUgdXBkYXRlIHJl c3BlY3RpdmVseS4KKyAqCisgKiBOb3RlIHRoYXQgYSBiaXRtYXAgaXMgdXNlZCBmb3IgY2FsbGlu IHRvIGFsbG93IGNwdSB0byBzZXQgYSBiaXQgbXVsdGlwbGUKKyAqIHRpbWVzLiBJdCBpcyByZXF1 aXJlZCB0byBkbyBidXN5LWxvb3AgaW4gI05NSSBoYW5kbGluZy4KKyAqLworc3RhdGljIGNwdW1h c2tfdCBjcHVfY2FsbGluX21hcDsKK3N0YXRpYyBhdG9taWNfdCBjcHVfb3V0LCBjcHVfdXBkYXRl ZDsKKworLyoKICAqIFJldHVybiBhIHBhdGNoIHRoYXQgY292ZXJzIGN1cnJlbnQgQ1BVLiBJZiB0 aGVyZSBhcmUgbXVsdGlwbGUgcGF0Y2hlcywKICAqIHJldHVybiB0aGUgb25lIHdpdGggdGhlIGhp Z2hlc3QgcmV2aXNpb24gbnVtYmVyLiBSZXR1cm4gZXJyb3IgSWYgbm8KICAqIHBhdGNoIGlzIGZv dW5kIGFuZCBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBwYXJzaW5nIHByb2Nlc3MuIE90aGVy d2lzZQpAQCAtMjMyLDYgKzI3NiwzNCBAQCBib29sIG1pY3JvY29kZV91cGRhdGVfY2FjaGUoc3Ry dWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKy8qIFdh aXQgZm9yIGEgY29uZGl0aW9uIHRvIGJlIG1ldCB3aXRoIGEgdGltZW91dCAodXMpLiAqLworc3Rh dGljIGludCB3YWl0X2Zvcl9jb25kaXRpb24oaW50ICgqZnVuYykodm9pZCAqZGF0YSksIHZvaWQg KmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHRpbWVvdXQpCit7 CisgICAgd2hpbGUgKCAhZnVuYyhkYXRhKSApCisgICAgeworICAgICAgICBpZiAoICF0aW1lb3V0 LS0gKQorICAgICAgICB7CisgICAgICAgICAgICBwcmludGsoIkNQVSV1OiBUaW1lb3V0IGluICVw U1xuIiwKKyAgICAgICAgICAgICAgICAgICBzbXBfcHJvY2Vzc29yX2lkKCksIF9fYnVpbHRpbl9y ZXR1cm5fYWRkcmVzcygwKSk7CisgICAgICAgICAgICByZXR1cm4gLUVCVVNZOworICAgICAgICB9 CisgICAgICAgIHVkZWxheSgxKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGlj IGludCB3YWl0X2NwdV9jYWxsaW4odm9pZCAqbnIpCit7CisgICAgcmV0dXJuIGNwdW1hc2tfd2Vp Z2h0KCZjcHVfY2FsbGluX21hcCkgPj0gKHVuc2lnbmVkIGxvbmcpbnI7Cit9CisKK3N0YXRpYyBp bnQgd2FpdF9jcHVfY2FsbG91dCh2b2lkICpucikKK3sKKyAgICByZXR1cm4gYXRvbWljX3JlYWQo JmNwdV9vdXQpID49ICh1bnNpZ25lZCBsb25nKW5yOworfQorCiAvKgogICogTG9hZCBhIG1pY3Jv Y29kZSB1cGRhdGUgdG8gY3VycmVudCBDUFUuCiAgKgpAQCAtMjY1LDM3ICszMzcsMTU1IEBAIHN0 YXRpYyBpbnQgbWljcm9jb2RlX3VwZGF0ZV9jcHUoY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRj aCAqcGF0Y2gpCiAgICAgcmV0dXJuIGVycjsKIH0KIAotc3RhdGljIGxvbmcgZG9fbWljcm9jb2Rl X3VwZGF0ZSh2b2lkICpwYXRjaCkKK3N0YXRpYyBpbnQgc2xhdmVfdGhyZWFkX2ZuKHZvaWQpCit7 CisgICAgdW5zaWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKKyAgICB1bnNpZ25l ZCBpbnQgbWFzdGVyID0gY3B1bWFza19maXJzdCh0aGlzX2NwdShjcHVfc2libGluZ19tYXNrKSk7 CisKKyAgICB3aGlsZSAoIGxvYWRpbmdfc3RhdGUgIT0gTE9BRElOR19DQUxMSU4gKQorICAgICAg ICBjcHVfcmVsYXgoKTsKKworICAgIGNwdW1hc2tfc2V0X2NwdShjcHUsICZjcHVfY2FsbGluX21h cCk7CisKKyAgICB3aGlsZSAoIGxvYWRpbmdfc3RhdGUgIT0gTE9BRElOR19FWElUICkKKyAgICAg ICAgY3B1X3JlbGF4KCk7CisKKyAgICAvKiBDb3B5IHVwZGF0ZSByZXZpc2lvbiBmcm9tIHRoZSAi bWFzdGVyIiB0aHJlYWQuICovCisgICAgdGhpc19jcHUoY3B1X3NpZykucmV2ID0gcGVyX2NwdShj cHVfc2lnLCBtYXN0ZXIpLnJldjsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IG1h c3Rlcl90aHJlYWRfZm4oY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gpCit7Cisg ICAgdW5zaWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKKyAgICBpbnQgcmV0ID0g MDsKKworICAgIHdoaWxlICggbG9hZGluZ19zdGF0ZSAhPSBMT0FESU5HX0NBTExJTiApCisgICAg ICAgIGNwdV9yZWxheCgpOworCisgICAgY3B1bWFza19zZXRfY3B1KGNwdSwgJmNwdV9jYWxsaW5f bWFwKTsKKworICAgIHdoaWxlICggbG9hZGluZ19zdGF0ZSAhPSBMT0FESU5HX0VOVEVSICkKKyAg ICAgICAgY3B1X3JlbGF4KCk7CisKKyAgICAvKgorICAgICAqIElmIGFuIGVycm9yIGhhcHBlbmVk LCBjb250cm9sIHRocmVhZCB3b3VsZCBzZXQgJ2xvYWRpbmdfc3RhdGUnCisgICAgICogdG8gTE9B RElOR19FWElULiBEb24ndCBwZXJmb3JtIHVjb2RlIGxvYWRpbmcgZm9yIHRoaXMgY2FzZQorICAg ICAqLworICAgIGlmICggbG9hZGluZ19zdGF0ZSA9PSBMT0FESU5HX0VYSVQgKQorICAgICAgICBy ZXR1cm4gcmV0OworCisgICAgcmV0ID0gbWljcm9jb2RlX29wcy0+YXBwbHlfbWljcm9jb2RlKHBh dGNoKTsKKyAgICBpZiAoICFyZXQgKQorICAgICAgICBhdG9taWNfaW5jKCZjcHVfdXBkYXRlZCk7 CisgICAgYXRvbWljX2luYygmY3B1X291dCk7CisKKyAgICB3aGlsZSAoIGxvYWRpbmdfc3RhdGUg IT0gTE9BRElOR19FWElUICkKKyAgICAgICAgY3B1X3JlbGF4KCk7CisKKyAgICByZXR1cm4gcmV0 OworfQorCitzdGF0aWMgaW50IGNvbnRyb2xfdGhyZWFkX2ZuKGNvbnN0IHN0cnVjdCBtaWNyb2Nv ZGVfcGF0Y2ggKnBhdGNoKQogewotICAgIHVuc2lnbmVkIGludCBjcHU7CisgICAgdW5zaWduZWQg aW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKSwgZG9uZTsKKyAgICB1bnNpZ25lZCBsb25nIHRp Y2s7CisgICAgaW50IHJldDsKIAotICAgIC8qIFN0b3JlIHRoZSBwYXRjaCBhZnRlciBhIHN1Y2Nl c3NmdWwgbG9hZGluZyAqLwotICAgIGlmICggIW1pY3JvY29kZV91cGRhdGVfY3B1KHBhdGNoKSAm JiBwYXRjaCApCisgICAgLyogQWxsb3cgdGhyZWFkcyB0byBjYWxsIGluICovCisgICAgbG9hZGlu Z19zdGF0ZSA9IExPQURJTkdfQ0FMTElOOworICAgIHNtcF9tYigpOworCisgICAgY3B1bWFza19z ZXRfY3B1KGNwdSwgJmNwdV9jYWxsaW5fbWFwKTsKKworICAgIC8qIFdhaXRpbmcgZm9yIGFsbCB0 aHJlYWRzIGNhbGxpbmcgaW4gKi8KKyAgICByZXQgPSB3YWl0X2Zvcl9jb25kaXRpb24od2FpdF9j cHVfY2FsbGluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKSh1bnNpZ25l ZCBsb25nKW51bV9vbmxpbmVfY3B1cygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN SUNST0NPREVfQ0FMTElOX1RJTUVPVVRfVVMpOworICAgIGlmICggcmV0ICkgeworICAgICAgICBs b2FkaW5nX3N0YXRlID0gTE9BRElOR19FWElUOworICAgICAgICByZXR1cm4gcmV0OworICAgIH0K KworICAgIC8qIExldCBtYXN0ZXIgdGhyZWFkcyBsb2FkIHRoZSBnaXZlbiB1Y29kZSB1cGRhdGUg Ki8KKyAgICBsb2FkaW5nX3N0YXRlID0gTE9BRElOR19FTlRFUjsKKyAgICBzbXBfbWIoKTsKKwor ICAgIHJldCA9IG1pY3JvY29kZV9vcHMtPmFwcGx5X21pY3JvY29kZShwYXRjaCk7CisgICAgaWYg KCAhcmV0ICkKKyAgICAgICAgYXRvbWljX2luYygmY3B1X3VwZGF0ZWQpOworICAgIGF0b21pY19p bmMoJmNwdV9vdXQpOworCisgICAgdGljayA9IHJkdHNjX29yZGVyZWQoKTsKKyAgICAvKiBXYWl0 aW5nIGZvciBtYXN0ZXIgdGhyZWFkcyBmaW5pc2hpbmcgdXBkYXRlICovCisgICAgZG9uZSA9IGF0 b21pY19yZWFkKCZjcHVfb3V0KTsKKyAgICB3aGlsZSAoIGRvbmUgIT0gbnJfY29yZXMgKQogICAg IHsKLSAgICAgICAgc3Bpbl9sb2NrKCZtaWNyb2NvZGVfbXV0ZXgpOwotICAgICAgICBtaWNyb2Nv ZGVfdXBkYXRlX2NhY2hlKHBhdGNoKTsKLSAgICAgICAgc3Bpbl91bmxvY2soJm1pY3JvY29kZV9t dXRleCk7Ci0gICAgICAgIHBhdGNoID0gTlVMTDsKKyAgICAgICAgLyoKKyAgICAgICAgICogRHVy aW5nIGVhY2ggdGltZW91dCBpbnRlcnZhbCwgYXQgbGVhc3QgYSBDUFUgaXMgZXhwZWN0ZWQgdG8K KyAgICAgICAgICogZmluaXNoIGl0cyB1cGRhdGUuIE90aGVyd2lzZSwgc29tZXRoaW5nIGdvZXMg d3JvbmcuCisgICAgICAgICAqCisgICAgICAgICAqIE5vdGUgdGhhdCBSRFRTQyAoaW4gd2FpdF9m b3JfY29uZGl0aW9uKCkpIGlzIHNhZmUgZm9yIHRocmVhZHMgdG8KKyAgICAgICAgICogZXhlY3V0 ZSB3aGlsZSB3YWl0aW5nIGZvciBjb21wbGV0aW9uIG9mIGxvYWRpbmcgYW4gdXBkYXRlLgorICAg ICAgICAgKi8KKyAgICAgICAgaWYgKCB3YWl0X2Zvcl9jb25kaXRpb24od2FpdF9jcHVfY2FsbG91 dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikodW5zaWduZWQgbG9u ZykoZG9uZSArIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSUNST0NPREVf VVBEQVRFX1RJTUVPVVRfVVMpICkKKyAgICAgICAgICAgIHBhbmljKCJUaW1lb3V0IHdoZW4gZmlu aXNoZWQgdXBkYXRpbmcgbWljcm9jb2RlIChmaW5pc2hlZCAldS8ldSkiLAorICAgICAgICAgICAg ICAgICAgZG9uZSwgbnJfY29yZXMpOworCisgICAgICAgIC8qIFByaW50IHdhcm5pbmcgbWVzc2Fn ZSBvbmNlIGlmIGxvbmcgdGltZSBpcyBzcGVudCBoZXJlICovCisgICAgICAgIGlmICggdGljayAm JiByZHRzY19vcmRlcmVkKCkgLSB0aWNrID49IGNwdV9raHogKiAxMDAwICkKKyAgICAgICAgewor ICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19XQVJOSU5HCisgICAgICAgICAgICAgICAgICAgIldB Uk5JTkc6IFVQREFUSU5HIE1JQ1JPQ09ERSBIQVMgQ09OU1VNRUQgTU9SRSBUSEFOIDEgU0VDT05E IVxuIik7CisgICAgICAgICAgICB0aWNrID0gMDsKKyAgICAgICAgfQorICAgICAgICBkb25lID0g YXRvbWljX3JlYWQoJmNwdV9vdXQpOwogICAgIH0KIAotICAgIGlmICggbWljcm9jb2RlX29wcy0+ ZW5kX3VwZGF0ZSApCi0gICAgICAgIG1pY3JvY29kZV9vcHMtPmVuZF91cGRhdGUoKTsKKyAgICAv KiBNYXJrIGxvYWRpbmcgaXMgZG9uZSB0byB1bmJsb2NrIG90aGVyIHRocmVhZHMgKi8KKyAgICBs b2FkaW5nX3N0YXRlID0gTE9BRElOR19FWElUOworICAgIHNtcF9tYigpOwogCi0gICAgY3B1ID0g Y3B1bWFza19uZXh0KHNtcF9wcm9jZXNzb3JfaWQoKSwgJmNwdV9vbmxpbmVfbWFwKTsKLSAgICBp ZiAoIGNwdSA8IG5yX2NwdV9pZHMgKQotICAgICAgICByZXR1cm4gY29udGludWVfaHlwZXJjYWxs X29uX2NwdShjcHUsIGRvX21pY3JvY29kZV91cGRhdGUsIHBhdGNoKTsKKyAgICByZXR1cm4gcmV0 OworfQogCi0gICAgLyogRnJlZSB0aGUgcGF0Y2ggaWYgbm8gQ1BVIGhhcyBsb2FkZWQgaXQgc3Vj Y2Vzc2Z1bGx5LiAqLwotICAgIGlmICggcGF0Y2ggKQotICAgICAgICBtaWNyb2NvZGVfZnJlZV9w YXRjaChwYXRjaCk7CitzdGF0aWMgaW50IGRvX21pY3JvY29kZV91cGRhdGUodm9pZCAqcGF0Y2gp Cit7CisgICAgdW5zaWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKKyAgICAvKgor ICAgICAqICJtYXN0ZXIiIHRocmVhZCBpcyB0aGUgb25lIHdpdGggdGhlIGxvd2VzdCB0aHJlYWQg aWQgYW1vbmcgYWxsIHNpYmxpbmdzCisgICAgICogdGhyZWFkIGluIGEgY29yZSBvciBhIGNvbXB1 dGUgdW5pdC4gSXQgaXMgY2hvc2VuIHRvIGxvYWQgYSBtaWNyb2NvZGUKKyAgICAgKiB1cGRhdGUu CisgICAgICovCisgICAgdW5zaWduZWQgaW50IG1hc3RlciA9IGNwdW1hc2tfZmlyc3QodGhpc19j cHUoY3B1X3NpYmxpbmdfbWFzaykpOworICAgIGludCByZXQ7CiAKLSAgICByZXR1cm4gMDsKKyAg ICAvKgorICAgICAqIFRoZSBjb250cm9sIHRocmVhZCBzZXQgc3RhdGUgdG8gY29vcmRpbmF0ZSB1 Y29kZSBsb2FkaW5nLiBNYXN0ZXIgdGhyZWFkcworICAgICAqIGxvYWQgdGhlIGdpdmVuIHVjb2Rl IHBhdGNoLiBTbGF2ZSB0aHJlYWRzIGp1c3Qgd2FpdCBmb3IgdGhlIGNvbXBsZXRpb24KKyAgICAg KiBvZiB0aGUgdWNvZGUgbG9hZGluZyBwcm9jZXNzLgorICAgICAqLworICAgIGlmICggY3B1ID09 IGNwdW1hc2tfZmlyc3QoJmNwdV9vbmxpbmVfbWFwKSApCisgICAgICAgIHJldCA9IGNvbnRyb2xf dGhyZWFkX2ZuKHBhdGNoKTsKKyAgICBlbHNlIGlmICggY3B1ID09IG1hc3RlciApCisgICAgICAg IHJldCA9IG1hc3Rlcl90aHJlYWRfZm4ocGF0Y2gpOworICAgIGVsc2UKKyAgICAgICAgcmV0ID0g c2xhdmVfdGhyZWFkX2ZuKCk7CisKKyAgICBpZiAoIG1pY3JvY29kZV9vcHMtPmVuZF91cGRhdGUg KQorICAgICAgICBtaWNyb2NvZGVfb3BzLT5lbmRfdXBkYXRlKCk7CisKKyAgICByZXR1cm4gcmV0 OwogfQogCiBpbnQgbWljcm9jb2RlX3VwZGF0ZShYRU5fR1VFU1RfSEFORExFX1BBUkFNKGNvbnN0 X3ZvaWQpIGJ1ZiwgdW5zaWduZWQgbG9uZyBsZW4pCiB7CiAgICAgaW50IHJldDsKICAgICB2b2lk ICpidWZmZXI7CisgICAgdW5zaWduZWQgaW50IGNwdSwgdXBkYXRlZDsKICAgICBzdHJ1Y3QgbWlj cm9jb2RlX3BhdGNoICpwYXRjaDsKIAogICAgIGlmICggbGVuICE9ICh1aW50MzJfdClsZW4gKQpA QCAtMzE0LDExICs1MDQsMTggQEAgaW50IG1pY3JvY29kZV91cGRhdGUoWEVOX0dVRVNUX0hBTkRM RV9QQVJBTShjb25zdF92b2lkKSBidWYsIHVuc2lnbmVkIGxvbmcgbGVuKQogICAgICAgICBnb3Rv IGZyZWU7CiAgICAgfQogCisgICAgLyogY3B1X29ubGluZV9tYXAgbXVzdCBub3QgY2hhbmdlIGR1 cmluZyB1cGRhdGUgKi8KKyAgICBpZiAoICFnZXRfY3B1X21hcHMoKSApCisgICAgeworICAgICAg ICByZXQgPSAtRUJVU1k7CisgICAgICAgIGdvdG8gZnJlZTsKKyAgICB9CisKICAgICBpZiAoIG1p Y3JvY29kZV9vcHMtPnN0YXJ0X3VwZGF0ZSApCiAgICAgewogICAgICAgICByZXQgPSBtaWNyb2Nv ZGVfb3BzLT5zdGFydF91cGRhdGUoKTsKICAgICAgICAgaWYgKCByZXQgIT0gMCApCi0gICAgICAg ICAgICBnb3RvIGZyZWU7CisgICAgICAgICAgICBnb3RvIHB1dDsKICAgICB9CiAKICAgICBwYXRj aCA9IHBhcnNlX2Jsb2IoYnVmZmVyLCBsZW4pOwpAQCAtMzI2LDE5ICs1MjMsNjcgQEAgaW50IG1p Y3JvY29kZV91cGRhdGUoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTShjb25zdF92b2lkKSBidWYsIHVu c2lnbmVkIGxvbmcgbGVuKQogICAgIHsKICAgICAgICAgcmV0ID0gUFRSX0VSUihwYXRjaCk7CiAg ICAgICAgIHByaW50ayhYRU5MT0dfSU5GTyAiUGFyc2luZyBtaWNyb2NvZGUgYmxvYiBlcnJvciAl ZFxuIiwgcmV0KTsKLSAgICAgICAgZ290byBmcmVlOworICAgICAgICBnb3RvIHB1dDsKICAgICB9 CiAKICAgICBpZiAoICFwYXRjaCApCiAgICAgewogICAgICAgICBwcmludGsoWEVOTE9HX0lORk8g Ik5vIHVjb2RlIGZvdW5kLiBVcGRhdGUgYWJvcnRlZCFcbiIpOwogICAgICAgICByZXQgPSAtRUlO VkFMOwotICAgICAgICBnb3RvIGZyZWU7CisgICAgICAgIGdvdG8gcHV0OworICAgIH0KKworICAg IGNwdW1hc2tfY2xlYXIoJmNwdV9jYWxsaW5fbWFwKTsKKyAgICBhdG9taWNfc2V0KCZjcHVfb3V0 LCAwKTsKKyAgICBhdG9taWNfc2V0KCZjcHVfdXBkYXRlZCwgMCk7CisgICAgbG9hZGluZ19zdGF0 ZSA9IExPQURJTkdfUFJFUEFSRTsKKworICAgIC8qIENhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIG9u bGluZSBDUFUgY29yZSAqLworICAgIG5yX2NvcmVzID0gMDsKKyAgICBmb3JfZWFjaF9vbmxpbmVf Y3B1KGNwdSkKKyAgICAgICAgaWYgKCBjcHUgPT0gY3B1bWFza19maXJzdChwZXJfY3B1KGNwdV9z aWJsaW5nX21hc2ssIGNwdSkpICkKKyAgICAgICAgICAgIG5yX2NvcmVzKys7CisKKyAgICBwcmlu dGsoWEVOTE9HX0lORk8gIiV1IGNvcmVzIGFyZSB0byB1cGRhdGUgdGhlaXIgbWljcm9jb2RlXG4i LCBucl9jb3Jlcyk7CisKKyAgICAvKgorICAgICAqIFdlIGludGVuZCB0byBkaXNhYmxlIGludGVy cnVwdCBmb3IgbG9uZyB0aW1lLCB3aGljaCBtYXkgbGVhZCB0bworICAgICAqIHdhdGNoZG9nIHRp bWVvdXQuCisgICAgICovCisgICAgd2F0Y2hkb2dfZGlzYWJsZSgpOworICAgIC8qCisgICAgICog TGF0ZSBsb2FkaW5nIGRhbmNlLiBXaHkgdGhlIGhlYXZ5LWhhbmRlZCBzdG9wX21hY2hpbmUgZWZm b3J0PworICAgICAqCisgICAgICogLSBIVCBzaWJsaW5ncyBtdXN0IGJlIGlkbGUgYW5kIG5vdCBl eGVjdXRlIG90aGVyIGNvZGUgd2hpbGUgdGhlIG90aGVyCisgICAgICogICBzaWJsaW5nIGlzIGxv YWRpbmcgbWljcm9jb2RlIGluIG9yZGVyIHRvIGF2b2lkIGFueSBuZWdhdGl2ZQorICAgICAqICAg aW50ZXJhY3Rpb25zIGNhdXNlIGJ5IHRoZSBsb2FkaW5nLgorICAgICAqCisgICAgICogLSBJbiBh ZGRpdGlvbiwgbWljcm9jb2RlIHVwZGF0ZSBvbiB0aGUgY29yZXMgbXVzdCBiZSBzZXJpYWxpemVk IHVudGlsCisgICAgICogICB0aGlzIHJlcXVpcmVtZW50IGNhbiBiZSByZWxheGVkIGluIHRoZSBm dXR1cmUuIFJpZ2h0IG5vdywgdGhpcyBpcworICAgICAqICAgY29uc2VydmF0aXZlIGFuZCBnb29k LgorICAgICAqLworICAgIHJldCA9IHN0b3BfbWFjaGluZV9ydW4oZG9fbWljcm9jb2RlX3VwZGF0 ZSwgcGF0Y2gsIE5SX0NQVVMpOworICAgIHdhdGNoZG9nX2VuYWJsZSgpOworCisgICAgdXBkYXRl ZCA9IGF0b21pY19yZWFkKCZjcHVfdXBkYXRlZCk7CisgICAgaWYgKCB1cGRhdGVkID4gMCApCisg ICAgeworICAgICAgICBzcGluX2xvY2soJm1pY3JvY29kZV9tdXRleCk7CisgICAgICAgIG1pY3Jv Y29kZV91cGRhdGVfY2FjaGUocGF0Y2gpOworICAgICAgICBzcGluX3VubG9jaygmbWljcm9jb2Rl X211dGV4KTsKICAgICB9CisgICAgZWxzZQorICAgICAgICBtaWNyb2NvZGVfZnJlZV9wYXRjaChw YXRjaCk7CiAKLSAgICByZXQgPSBjb250aW51ZV9oeXBlcmNhbGxfb25fY3B1KGNwdW1hc2tfZmly c3QoJmNwdV9vbmxpbmVfbWFwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRvX21pY3JvY29kZV91cGRhdGUsIHBhdGNoKTsKKyAgICBpZiAoIHVwZGF0ZWQgJiYgdXBkYXRl ZCAhPSBucl9jb3JlcyApCisgICAgICAgIHByaW50ayhYRU5MT0dfRVJSICJFUlJPUjogVXBkYXRp bmcgbWljcm9jb2RlIHN1Y2NlZWRlZCBvbiAldSBjb3JlcyBhbmQgZmFpbGVkXG4iCisgICAgICAg ICAgICAgICBYRU5MT0dfRVJSICJvbiBvdGhlciAldSBjb3Jlcy4gQSBzeXN0ZW0gd2l0aCBkaWZm ZXJpbmcgbWljcm9jb2RlIFxuIgorICAgICAgICAgICAgICAgWEVOTE9HX0VSUiAicmV2aXNpb25z IGlzIGNvbnNpZGVyZWQgdW5zdGFibGUuIFBsZWFzZSByZWJvb3QgYW5kIGRvIG5vdFxuIgorICAg ICAgICAgICAgICAgWEVOTE9HX0VSUiAibG9hZCB0aGUgbWljcm9jb2RlIHRoYXQgdHJpZ2dlcnN0 aGlzIHdhcm5pbmchXG4iLAorICAgICAgICAgICAgICAgdXBkYXRlZCwgbnJfY29yZXMgLSB1cGRh dGVkKTsKIAorIHB1dDoKKyAgICBwdXRfY3B1X21hcHMoKTsKICBmcmVlOgogICAgIHhmcmVlKGJ1 ZmZlcik7CiAgICAgcmV0dXJuIHJldDsKLS0gCjEuOC4zLjEKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h aWxtYW4vbGlzdGluZm8veGVuLWRldmVs