From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chao Gao Subject: [PATCH v4 6/6] x86/microcode: Synchronize late microcode loading Date: Wed, 28 Nov 2018 13:34:16 +0800 Message-ID: <1543383256-12371-7-git-send-email-chao.gao@intel.com> References: <1543383256-12371-1-git-send-email-chao.gao@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gRsR5-0005uk-Ox for xen-devel@lists.xenproject.org; Wed, 28 Nov 2018 05:30:55 +0000 In-Reply-To: <1543383256-12371-1-git-send-email-chao.gao@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Kevin Tian , Wei Liu , Jan Beulich , Andrew Cooper , Jun Nakajima , Ashok Raj , Borislav Petkov , Thomas Gleixner , Chao Gao List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBwb3J0cyBtaWNyb2NvZGUgaW1wcm92ZW1lbnQgcGF0Y2hlcyBmcm9tIGxpbnV4 IGtlcm5lbC4KCkJlZm9yZSB5b3UgcmVhZCBhbnkgZnVydGhlcjogdGhlIGVhcmx5IGxvYWRpbmcg bWV0aG9kIGlzIHN0aWxsIHRoZQpwcmVmZXJyZWQgb25lIGFuZCB5b3Ugc2hvdWxkIGFsd2F5cyBk byB0aGF0LiBUaGUgZm9sbG93aW5nIHBhdGNoIGlzCmltcHJvdmluZyB0aGUgbGF0ZSBsb2FkaW5n IG1lY2hhbmlzbSBmb3IgbG9uZyBydW5uaW5nIGpvYnMgYW5kIGNsb3VkIHVzZQpjYXNlcy4KCkdh dGhlciBhbGwgY29yZXMgYW5kIHNlcmlhbGl6ZSB0aGUgbWljcm9jb2RlIHVwZGF0ZSBvbiB0aGVt IGJ5IGRvaW5nIGl0Cm9uZS1ieS1vbmUgdG8gbWFrZSB0aGUgbGF0ZSB1cGRhdGUgcHJvY2VzcyBh cyByZWxpYWJsZSBhcyBwb3NzaWJsZSBhbmQKYXZvaWQgcG90ZW50aWFsIGlzc3VlcyBjYXVzZWQg YnkgdGhlIG1pY3JvY29kZSB1cGRhdGUuCgpTaWduZWQtb2ZmLWJ5OiBDaGFvIEdhbyA8Y2hhby5n YW9AaW50ZWwuY29tPgpUZXN0ZWQtYnk6IENoYW8gR2FvIDxjaGFvLmdhb0BpbnRlbC5jb20+Clts aW51eCBjb21taXQ6IGE1MzIxYWVjNjQxMmIyMGI1YWQxNWRiMmQ2YjkxNmMwNTM0OWRiZmZdClts aW51eCBjb21taXQ6IGJiOGMxM2Q2MWE2MjkyNzZhMTYyYzFkMmIxYTIwYTgxNWNiY2ZiYjddCkNj OiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4KQ2M6IEp1biBOYWthamltYSA8anVu Lm5ha2FqaW1hQGludGVsLmNvbT4KQ2M6IEFzaG9rIFJhaiA8YXNob2sucmFqQGludGVsLmNvbT4K Q2M6IEJvcmlzbGF2IFBldGtvdiA8YnBAc3VzZS5kZT4KQ2M6IFRob21hcyBHbGVpeG5lciA8dGds eEBsaW51dHJvbml4LmRlPgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4 LmNvbT4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCiB4ZW4vYXJjaC94 ODYvbWljcm9jb2RlLmMgfCAxMjMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA5NyBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbWljcm9jb2RlLmMgYi94ZW4vYXJjaC94 ODYvbWljcm9jb2RlLmMKaW5kZXggMGI0MzVmNC4uZDVhMmE5NCAxMDA2NDQKLS0tIGEveGVuL2Fy Y2gveDg2L21pY3JvY29kZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9taWNyb2NvZGUuYwpAQCAtMjIs NiArMjIsNyBAQAogICovCiAKICNpbmNsdWRlIDx4ZW4vY3B1Lmg+CisjaW5jbHVkZSA8eGVuL2Nw dW1hc2suaD4KICNpbmNsdWRlIDx4ZW4vbGliLmg+CiAjaW5jbHVkZSA8eGVuL2tlcm5lbC5oPgog I2luY2x1ZGUgPHhlbi9pbml0Lmg+CkBAIC0zMCwxOCArMzEsMjUgQEAKICNpbmNsdWRlIDx4ZW4v c21wLmg+CiAjaW5jbHVkZSA8eGVuL3NvZnRpcnEuaD4KICNpbmNsdWRlIDx4ZW4vc3BpbmxvY2su aD4KKyNpbmNsdWRlIDx4ZW4vc3RvcF9tYWNoaW5lLmg+CiAjaW5jbHVkZSA8eGVuL3Rhc2tsZXQu aD4KICNpbmNsdWRlIDx4ZW4vZ3Vlc3RfYWNjZXNzLmg+CiAjaW5jbHVkZSA8eGVuL2Vhcmx5Y3Bp by5oPgorI2luY2x1ZGUgPHhlbi93YXRjaGRvZy5oPgogCisjaW5jbHVkZSA8YXNtL2RlbGF5Lmg+ CiAjaW5jbHVkZSA8YXNtL21zci5oPgogI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KICNpbmNs dWRlIDxhc20vc2V0dXAuaD4KICNpbmNsdWRlIDxhc20vbWljcm9jb2RlLmg+CiAKKy8qIEJ5IGRl ZmF1bHQsIHdhaXQgZm9yIDMwMDAwdXMgKi8KKyNkZWZpbmUgTUlDUk9DT0RFX0RFRkFVTFRfVElN RU9VVF9VUyAzMDAwMAorCiBzdGF0aWMgbW9kdWxlX3QgX19pbml0ZGF0YSB1Y29kZV9tb2Q7CiBz dGF0aWMgc2lnbmVkIGludCBfX2luaXRkYXRhIHVjb2RlX21vZF9pZHg7CiBzdGF0aWMgYm9vbF90 IF9faW5pdGRhdGEgdWNvZGVfbW9kX2ZvcmNlZDsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgbnJfY29y ZXM7CiAKIC8qCiAgKiBJZiB3ZSBzY2FuIHRoZSBpbml0cmFtZnMuY3BpbyBmb3IgdGhlIGVhcmx5 IG1pY3JvY29kZSBjb2RlCkBAIC0xODksOCArMTk3LDcgQEAgc3RhdGljIERFRklORV9TUElOTE9D SyhtaWNyb2NvZGVfbXV0ZXgpOwogREVGSU5FX1BFUl9DUFUoc3RydWN0IHVjb2RlX2NwdV9pbmZv LCB1Y29kZV9jcHVfaW5mbyk7CiAKIHN0cnVjdCBtaWNyb2NvZGVfaW5mbyB7Ci0gICAgdW5zaWdu ZWQgaW50IGNwdTsKLSAgICBpbnQgZXJyb3I7CisgICAgYXRvbWljX3QgY3B1X2luLCBjcHVfb3V0 OwogfTsKIAogc3RhdGljIHZvaWQgX19taWNyb2NvZGVfZmluaV9jcHUodW5zaWduZWQgaW50IGNw dSkKQEAgLTI0MiwzMSArMjQ5LDYyIEBAIHN0YXRpYyBpbnQgbWljcm9jb2RlX3VwZGF0ZV9jcHUo dm9pZCkKICAgICByZXR1cm4gZXJyOwogfQogCi1zdGF0aWMgbG9uZyBkb19taWNyb2NvZGVfdXBk YXRlKHZvaWQgKl9pbmZvKQorLyogV2FpdCBmb3IgYWxsIENQVXMgdG8gcmVuZGV6dm91cyB3aXRo IGEgdGltZW91dCAodXMpICovCitzdGF0aWMgaW50IHdhaXRfZm9yX2NwdXMoYXRvbWljX3QgKmNu dCwgdW5zaWduZWQgaW50IHRpbWVvdXQpCiB7Ci0gICAgc3RydWN0IG1pY3JvY29kZV9pbmZvICpp bmZvID0gX2luZm87Ci0gICAgaW50IGVycm9yOworICAgIHVuc2lnbmVkIGludCBjcHVzID0gbnVt X29ubGluZV9jcHVzKCk7CiAKLSAgICBCVUdfT04oaW5mby0+Y3B1ICE9IHNtcF9wcm9jZXNzb3Jf aWQoKSk7CisgICAgYXRvbWljX2luYyhjbnQpOwogCi0gICAgZXJyb3IgPSBtaWNyb2NvZGVfdXBk YXRlX2NwdSgpOwotICAgIGlmICggZXJyb3IgKQotICAgICAgICBpbmZvLT5lcnJvciA9IGVycm9y OworICAgIHdoaWxlICggYXRvbWljX3JlYWQoY250KSAhPSBjcHVzICkKKyAgICB7CisgICAgICAg IGlmICggdGltZW91dCA8PSAwICkKKyAgICAgICAgeworICAgICAgICAgICAgcHJpbnRrKCJUaW1l b3V0IHdoZW4gd2FpdGluZyBmb3IgQ1BVcyBjYWxsaW5nIGluXG4iKTsKKyAgICAgICAgICAgIHJl dHVybiAtRUJVU1k7CisgICAgICAgIH0KKyAgICAgICAgdWRlbGF5KDEpOworICAgICAgICB0aW1l b3V0LS07CisgICAgfQogCi0gICAgaW5mby0+Y3B1ID0gY3B1bWFza19uZXh0KGluZm8tPmNwdSwg JmNwdV9vbmxpbmVfbWFwKTsKLSAgICBpZiAoIGluZm8tPmNwdSA8IG5yX2NwdV9pZHMgKQotICAg ICAgICByZXR1cm4gY29udGludWVfaHlwZXJjYWxsX29uX2NwdShpbmZvLT5jcHUsIGRvX21pY3Jv Y29kZV91cGRhdGUsIGluZm8pOworICAgIHJldHVybiAwOworfQogCi0gICAgZXJyb3IgPSBpbmZv LT5lcnJvcjsKLSAgICB4ZnJlZShpbmZvKTsKLSAgICByZXR1cm4gZXJyb3I7CitzdGF0aWMgaW50 IGRvX21pY3JvY29kZV91cGRhdGUodm9pZCAqX2luZm8pCit7CisgICAgc3RydWN0IG1pY3JvY29k ZV9pbmZvICppbmZvID0gX2luZm87CisgICAgdW5zaWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNz b3JfaWQoKTsKKyAgICBpbnQgcmV0OworCisgICAgcmV0ID0gd2FpdF9mb3JfY3B1cygmaW5mby0+ Y3B1X2luLCBNSUNST0NPREVfREVGQVVMVF9USU1FT1VUX1VTKTsKKyAgICBpZiAoIHJldCApCisg ICAgICAgIHJldHVybiByZXQ7CisKKyAgICAvKgorICAgICAqIEluaXRpYXRlIGFuIHVwZGF0ZSBv biBhbGwgcHJvY2Vzc29ycyB3aGljaCBkb24ndCBoYXZlIGFuIG9ubGluZSBzaWJsaW5nCisgICAg ICogdGhyZWFkIHdpdGggYSBsb3dlciB0aHJlYWQgaWQuIE90aGVyIHNpYmxpbmcgdGhyZWFkcyBq dXN0IGF3YWl0IHRoZQorICAgICAqIGNvbXBsZXRpb24gb2YgbWljcm9jb2RlIHVwZGF0ZS4KKyAg ICAgKi8KKyAgICBpZiAoIGNwdSA9PSBjcHVtYXNrX2ZpcnN0KHBlcl9jcHUoY3B1X3NpYmxpbmdf bWFzaywgY3B1KSkgKQorICAgICAgICByZXQgPSBtaWNyb2NvZGVfdXBkYXRlX2NwdSgpOworICAg IC8qCisgICAgICogSW5jcmVhc2UgdGhlIHdhaXQgdGltZW91dCB0byBhIHNhZmUgdmFsdWUgaGVy ZSBzaW5jZSB3ZSdyZSBzZXJpYWxpemluZworICAgICAqIHRoZSBtaWNyb2NvZGUgdXBkYXRlIGFu ZCB0aGF0IGNvdWxkIHRha2UgYSB3aGlsZSBvbiBhIGxhcmdlIG51bWJlciBvZgorICAgICAqIENQ VXMuIEFuZCB0aGF0IGlzIGZpbmUgYXMgdGhlICphY3R1YWwqIHRpbWVvdXQgd2lsbCBiZSBkZXRl cm1pbmVkIGJ5CisgICAgICogdGhlIGxhc3QgQ1BVIGZpbmlzaGVkIHVwZGF0aW5nIGFuZCB0aHVz IGN1dCBzaG9ydAorICAgICAqLworICAgIGlmICggd2FpdF9mb3JfY3B1cygmaW5mby0+Y3B1X291 dCwgTUlDUk9DT0RFX0RFRkFVTFRfVElNRU9VVF9VUyAqCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBucl9jb3JlcykgKQorICAgICAgICBwYW5pYygiVGltZW91dCB3aGVu IGZpbmlzaGluZyB1cGRhdGluZyBtaWNyb2NvZGUiKTsKKworICAgIHJldHVybiByZXQ7CiB9CiAK IGludCBtaWNyb2NvZGVfdXBkYXRlKFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oY29uc3Rfdm9pZCkg YnVmLCB1bnNpZ25lZCBsb25nIGxlbikKIHsKICAgICBpbnQgcmV0OwotICAgIHN0cnVjdCBtaWNy b2NvZGVfaW5mbyAqaW5mbzsKICAgICB1bnNpZ25lZCBpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9p ZCgpOworICAgIHN0cnVjdCBtaWNyb2NvZGVfaW5mbyAqaW5mbzsKICAgICBzdHJ1Y3QgdWNvZGVf Y3B1X2luZm8gKnVjaSA9ICZwZXJfY3B1KHVjb2RlX2NwdV9pbmZvLCBjcHUpOwogICAgIHZvaWQg KiBidWZmZXI7CiAKQEAgLTI4MywxOSArMzIxLDIwIEBAIGludCBtaWNyb2NvZGVfdXBkYXRlKFhF Tl9HVUVTVF9IQU5ETEVfUEFSQU0oY29uc3Rfdm9pZCkgYnVmLCB1bnNpZ25lZCBsb25nIGxlbikK IAogICAgIHJldCA9IGNvcHlfZnJvbV9ndWVzdChidWZmZXIsIGJ1ZiwgbGVuKTsKICAgICBpZiAo IHJldCAhPSAwICkKKyAgICAgICAgZ290byBmcmVlOworCisgICAgLyogY3B1X29ubGluZV9tYXAg bXVzdCBub3QgY2hhbmdlIGR1cmluZyB1cGRhdGUgKi8KKyAgICBpZiAoICFnZXRfY3B1X21hcHMo KSApCiAgICAgewotICAgICAgICB4ZnJlZShpbmZvKTsKLSAgICAgICAgcmV0dXJuIHJldDsKKyAg ICAgICAgcmV0ID0gLUVCVVNZOworICAgICAgICBnb3RvIGZyZWU7CiAgICAgfQogCiAgICAgaWYg KCBtaWNyb2NvZGVfb3BzLT5zdGFydF91cGRhdGUgKQogICAgIHsKICAgICAgICAgcmV0ID0gbWlj cm9jb2RlX29wcy0+c3RhcnRfdXBkYXRlKCk7CiAgICAgICAgIGlmICggcmV0ICE9IDAgKQotICAg ICAgICB7Ci0gICAgICAgICAgICB4ZnJlZShpbmZvKTsKLSAgICAgICAgICAgIHJldHVybiByZXQ7 Ci0gICAgICAgIH0KKyAgICAgICAgICAgIGdvdG8gcHV0OwogICAgIH0KIAogICAgIHNwaW5fbG9j aygmbWljcm9jb2RlX211dGV4KTsKQEAgLTMxMSwxMyArMzUwLDQ1IEBAIGludCBtaWNyb2NvZGVf dXBkYXRlKFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oY29uc3Rfdm9pZCkgYnVmLCB1bnNpZ25lZCBs b25nIGxlbikKICAgICBpZiAoIHJldCA8PSAwICkKICAgICB7CiAgICAgICAgIHByaW50aygiTm8g dmFsaWQgb3IgbmV3ZXIgbWljcm9jb2RlIGZvdW5kLiBVcGRhdGUgYWJvcnQhXG4iKTsKLSAgICAg ICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIHJldCA9IC1FSU5WQUw7CisgICAgICAgIGdvdG8g cHV0OwogICAgIH0KIAotICAgIGluZm8tPmVycm9yID0gMDsKLSAgICBpbmZvLT5jcHUgPSBjcHVt YXNrX2ZpcnN0KCZjcHVfb25saW5lX21hcCk7CisgICAgYXRvbWljX3NldCgmaW5mby0+Y3B1X2lu LCAwKTsKKyAgICBhdG9taWNfc2V0KCZpbmZvLT5jcHVfb3V0LCAwKTsKKworICAgIC8qIENhbGN1 bGF0ZSB0aGUgbnVtYmVyIG9mIG9ubGluZSBDUFUgY29yZSAqLworICAgIG5yX2NvcmVzID0gMDsK KyAgICBmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdSkKKyAgICAgICAgaWYgKCBjcHUgPT0gY3B1bWFz a19maXJzdChwZXJfY3B1KGNwdV9zaWJsaW5nX21hc2ssIGNwdSkpICkKKyAgICAgICAgICAgIG5y X2NvcmVzKys7CisKKyAgICBwcmludGsoIiVkIGNvcmVzIGFyZSB0byB1cGRhdGUgaXRzIG1pY3Jv Y29kZVxuIiwgbnJfY29yZXMpOwogCi0gICAgcmV0dXJuIGNvbnRpbnVlX2h5cGVyY2FsbF9vbl9j cHUoaW5mby0+Y3B1LCBkb19taWNyb2NvZGVfdXBkYXRlLCBpbmZvKTsKKyAgICAvKgorICAgICAq IFdlIGludGVuZCB0byBkaXNhYmxlIGludGVycnVwdCBmb3IgbG9uZyB0aW1lLCB3aGljaCBtYXkg bGVhZCB0bworICAgICAqIHdhdGNoZG9nIHRpbWVvdXQuCisgICAgICovCisgICAgd2F0Y2hkb2df ZGlzYWJsZSgpOworICAgIC8qCisgICAgICogTGF0ZSBsb2FkaW5nIGRhbmNlLiBXaHkgdGhlIGhl YXZ5LWhhbmRlZCBzdG9wX21hY2hpbmUgZWZmb3J0PworICAgICAqCisgICAgICogLSBIVCBzaWJs aW5ncyBtdXN0IGJlIGlkbGUgYW5kIG5vdCBleGVjdXRlIG90aGVyIGNvZGUgd2hpbGUgdGhlIG90 aGVyCisgICAgICogICBzaWJsaW5nIGlzIGxvYWRpbmcgbWljcm9jb2RlIGluIG9yZGVyIHRvIGF2 b2lkIGFueSBuZWdhdGl2ZQorICAgICAqICAgaW50ZXJhY3Rpb25zIGNhdXNlIGJ5IHRoZSBsb2Fk aW5nLgorICAgICAqCisgICAgICogLSBJbiBhZGRpdGlvbiwgbWljcm9jb2RlIHVwZGF0ZSBvbiB0 aGUgY29yZXMgbXVzdCBiZSBzZXJpYWxpemVkIHVudGlsCisgICAgICogICB0aGlzIHJlcXVpcmVt ZW50IGNhbiBiZSByZWxheGVkIGluIHRoZSBmdXR1cmUuIFJpZ2h0IG5vdywgdGhpcyBpcworICAg ICAqICAgY29uc2VydmF0aXZlIGFuZCBnb29kLgorICAgICAqLworICAgIHJldCA9IHN0b3BfbWFj aGluZV9ydW4oZG9fbWljcm9jb2RlX3VwZGF0ZSwgaW5mbywgTlJfQ1BVUyk7CisgICAgd2F0Y2hk b2dfZW5hYmxlKCk7CisKKyBwdXQ6CisgICAgcHV0X2NwdV9tYXBzKCk7CisgZnJlZToKKyAgICB4 ZnJlZShpbmZvKTsKKyAgICByZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW50IF9faW5pdCBtaWNy b2NvZGVfaW5pdCh2b2lkKQotLSAKMS44LjMuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxp c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s aXN0aW5mby94ZW4tZGV2ZWw=