From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chao Gao Subject: [Patch v3 2/2] x86/microcode: Synchronize late microcode loading Date: Wed, 9 May 2018 06:01:33 +0800 Message-ID: <1525816893-36669-2-git-send-email-chao.gao@intel.com> References: <1525816893-36669-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: In-Reply-To: <1525816893-36669-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.xen.org Cc: Kevin Tian , Ashok Raj , Andrew Cooper , Jan Beulich , Jun Nakajima , Thomas Gleixner , Borislav Petkov , Chao Gao List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBwb3J0cyBtaWNyb2NvZGUgaW1wcm92ZW1lbnQgcGF0Y2hlcyBmcm9tIGxpbnV4 IGtlcm5lbC4KCkJlZm9yZSB5b3UgcmVhZCBhbnkgZnVydGhlcjogdGhlIGVhcmx5IGxvYWRpbmcg bWV0aG9kIGlzIHN0aWxsIHRoZQpwcmVmZXJyZWQgb25lIGFuZCB5b3Ugc2hvdWxkIGFsd2F5cyBk byB0aGF0LiBUaGUgZm9sbG93aW5nIHBhdGNoIGlzCmltcHJvdmluZyB0aGUgbGF0ZSBsb2FkaW5n IG1lY2hhbmlzbSBmb3IgbG9uZyBydW5uaW5nIGpvYnMgYW5kIGNsb3VkIHVzZQpjYXNlcy4KCkdh dGhlciBhbGwgY29yZXMgYW5kIHNlcmlhbGl6ZSB0aGUgbWljcm9jb2RlIHVwZGF0ZSBvbiB0aGVt IGJ5IGRvaW5nIGl0Cm9uZS1ieS1vbmUgdG8gbWFrZSB0aGUgbGF0ZSB1cGRhdGUgcHJvY2VzcyBh cyByZWxpYWJsZSBhcyBwb3NzaWJsZSBhbmQKYXZvaWQgcG90ZW50aWFsIGlzc3VlcyBjYXVzZWQg YnkgdGhlIG1pY3JvY29kZSB1cGRhdGUuCgpUaGlzIHBhdGNoIGlzIGFsc28gaW4gYWNjb3JkIHdp dGggQW5kcmV3J3Mgc3VnZ2VzdGlvbiwKIlJlbmRlenZvdXMgYWxsIG9ubGluZSBjcHVzIGluIGFu IElQSSB0byBhcHBseSB0aGUgcGF0Y2gsIGFuZCBrZWVwIHRoZQpwcm9jZXNzb3JzIGluIHVudGls IGFsbCBoYXZlIGNvbXBsZXRlZCB0aGUgcGF0Y2guIiwgaW4gWzFdLgoKWzFdOmh0dHBzOi8vd2lr aS54ZW5wcm9qZWN0Lm9yZy93aWtpL1hlblBhcmF2aXJ0T3BzL21pY3JvY29kZV91cGRhdGUjUnVu X3RpbWVfbWljcm9jb2RlX3VwZGF0ZXMKClNpZ25lZC1vZmYtYnk6IENoYW8gR2FvIDxjaGFvLmdh b0BpbnRlbC5jb20+ClRlc3RlZC1ieTogQ2hhbyBHYW8gPGNoYW8uZ2FvQGludGVsLmNvbT4KW2xp bnV4IGNvbW1pdDogYTUzMjFhZWM2NDEyYjIwYjVhZDE1ZGIyZDZiOTE2YzA1MzQ5ZGJmZl0KW2xp bnV4IGNvbW1pdDogYmI4YzEzZDYxYTYyOTI3NmExNjJjMWQyYjFhMjBhODE1Y2JjZmJiN10KQ2M6 IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPgpDYzogSnVuIE5ha2FqaW1hIDxqdW4u bmFrYWppbWFAaW50ZWwuY29tPgpDYzogQXNob2sgUmFqIDxhc2hvay5yYWpAaW50ZWwuY29tPgpD YzogQm9yaXNsYXYgUGV0a292IDxicEBzdXNlLmRlPgpDYzogVGhvbWFzIEdsZWl4bmVyIDx0Z2x4 QGxpbnV0cm9uaXguZGU+CkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXgu Y29tPgpDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgotLS0KdjM6CiAtIG1ha2Ug dGhlIDJuZCBwYXJhbWV0ZXIgb2Ygd2FpdF9mb3JfY3B1KCkgdW5zaWduZWQKIC0gY29ycmVjdCB0 aGUgaW52ZXJ0ZWQgY29uZGl0aW9uIGluIHRoZSAybmQgaWYoKSBpbiBkb19taWNyb2NvZGVfdXBk YXRlKCkuCiAtIHdoZW4gd2FpdGluZyBmb3IgdGhlIGZpbmlzaCBvZiBtaWNyb2NvZGUgdXBkYXRl LCBzY2FsZSB0aGUgdGltZW91dCBieQogcGh5c2ljYWwgcHJvY2Vzc29yIGNvdW50IG90aGVyIHRo YW4gbG9naWNhbCB0aHJlYWQgY291bnQKIC0gcGFzcyB0aGUgcmV0dXJuIHZhbHVlIG9mIHN0b3Bf bWFjaGluZV9ydW4oKSB0byB0aGUgY2FsbGVyLgoKdjI6CiAtIFJlZHVjZSB0aGUgdGltZW91dCBm cm9tIDFzIHRvIDMwbXMKIC0gdXBkYXRlIG1pY3JvY29kZSB3aXRoIGJldHRlciBwYXJhbGxlbGlz bTsgb25seSBvbmUgbG9naWNhbCB0aHJlYWQgb2YgZWFjaAogY29yZSB0cmllcyB0byB0YWtlIGxv Y2sgYW5kIGRvIHRoZSB1cGRhdGUuCiAtIHJlbW92ZSAnZXJyb3InIGZpZWxkIGZyb20gc3RydWN0 IG1pY3JvY29kZV9pbmZvCiAtIGNvcnJlY3QgY29kaW5nIHN0eWxlIGlzc3VlcwotLS0KIHhlbi9h cmNoL3g4Ni9taWNyb2NvZGUuYyB8IDExNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDkxIGluc2VydGlvbnMoKyksIDI2IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9taWNyb2NvZGUuYyBiL3hlbi9h cmNoL3g4Ni9taWNyb2NvZGUuYwppbmRleCA0MTYzZjUwLi4zNTViYzZkIDEwMDY0NAotLS0gYS94 ZW4vYXJjaC94ODYvbWljcm9jb2RlLmMKKysrIGIveGVuL2FyY2gveDg2L21pY3JvY29kZS5jCkBA IC0yMiw2ICsyMiw3IEBACiAgKi8KIAogI2luY2x1ZGUgPHhlbi9jcHUuaD4KKyNpbmNsdWRlIDx4 ZW4vY3B1bWFzay5oPgogI2luY2x1ZGUgPHhlbi9saWIuaD4KICNpbmNsdWRlIDx4ZW4va2VybmVs Lmg+CiAjaW5jbHVkZSA8eGVuL2luaXQuaD4KQEAgLTMwLDE1ICszMSwyMSBAQAogI2luY2x1ZGUg PHhlbi9zbXAuaD4KICNpbmNsdWRlIDx4ZW4vc29mdGlycS5oPgogI2luY2x1ZGUgPHhlbi9zcGlu bG9jay5oPgorI2luY2x1ZGUgPHhlbi9zdG9wX21hY2hpbmUuaD4KICNpbmNsdWRlIDx4ZW4vdGFz a2xldC5oPgogI2luY2x1ZGUgPHhlbi9ndWVzdF9hY2Nlc3MuaD4KICNpbmNsdWRlIDx4ZW4vZWFy bHljcGlvLmg+CisjaW5jbHVkZSA8eGVuL3dhdGNoZG9nLmg+CiAKKyNpbmNsdWRlIDxhc20vZGVs YXkuaD4KICNpbmNsdWRlIDxhc20vbXNyLmg+CiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgog I2luY2x1ZGUgPGFzbS9zZXR1cC5oPgogI2luY2x1ZGUgPGFzbS9taWNyb2NvZGUuaD4KIAorLyog QnkgZGVmYXVsdCwgd2FpdCBmb3IgMzAwMDB1cyAqLworI2RlZmluZSBNSUNST0NPREVfREVGQVVM VF9USU1FT1VUIDMwMDAwCisKIHN0YXRpYyBtb2R1bGVfdCBfX2luaXRkYXRhIHVjb2RlX21vZDsK IHN0YXRpYyBzaWduZWQgaW50IF9faW5pdGRhdGEgdWNvZGVfbW9kX2lkeDsKIHN0YXRpYyBib29s X3QgX19pbml0ZGF0YSB1Y29kZV9tb2RfZm9yY2VkOwpAQCAtMTg3LDkgKzE5NCw5IEBAIHN0YXRp YyBERUZJTkVfU1BJTkxPQ0sobWljcm9jb2RlX211dGV4KTsKIERFRklORV9QRVJfQ1BVKHN0cnVj dCB1Y29kZV9jcHVfaW5mbywgdWNvZGVfY3B1X2luZm8pOwogCiBzdHJ1Y3QgbWljcm9jb2RlX2lu Zm8gewotICAgIHVuc2lnbmVkIGludCBjcHU7CisgICAgY3B1bWFza190IGNwdXM7CisgICAgYXRv bWljX3QgY3B1X2luLCBjcHVfb3V0OwogICAgIHVpbnQzMl90IGJ1ZmZlcl9zaXplOwotICAgIGlu dCBlcnJvcjsKICAgICBjaGFyIGJ1ZmZlclsxXTsKIH07CiAKQEAgLTI4MSwyNCArMjg4LDU2IEBA IHN0YXRpYyBpbnQgbWljcm9jb2RlX3VwZGF0ZV9jcHUoY29uc3Qgdm9pZCAqYnVmLCBzaXplX3Qg c2l6ZSkKICAgICByZXR1cm4gZXJyOwogfQogCi1zdGF0aWMgbG9uZyBkb19taWNyb2NvZGVfdXBk YXRlKHZvaWQgKl9pbmZvKQorLyogV2FpdCBmb3IgYWxsIENQVXMgdG8gcmVuZGV6dm91cyB3aXRo IGEgdGltZW91dCAodXMpICovCitzdGF0aWMgaW50IHdhaXRfZm9yX2NwdXMoYXRvbWljX3QgKmNu dCwgdW5zaWduZWQgaW50IHRpbWVvdXQpCiB7Ci0gICAgc3RydWN0IG1pY3JvY29kZV9pbmZvICpp bmZvID0gX2luZm87Ci0gICAgaW50IGVycm9yOworICAgIHVuc2lnbmVkIGludCBjcHVzID0gbnVt X29ubGluZV9jcHVzKCk7CiAKLSAgICBCVUdfT04oaW5mby0+Y3B1ICE9IHNtcF9wcm9jZXNzb3Jf aWQoKSk7CisgICAgYXRvbWljX2luYyhjbnQpOwogCi0gICAgZXJyb3IgPSBtaWNyb2NvZGVfdXBk YXRlX2NwdShpbmZvLT5idWZmZXIsIGluZm8tPmJ1ZmZlcl9zaXplKTsKLSAgICBpZiAoIGVycm9y ICkKLSAgICAgICAgaW5mby0+ZXJyb3IgPSBlcnJvcjsKKyAgICB3aGlsZSAoIGF0b21pY19yZWFk KGNudCkgIT0gY3B1cyApCisgICAgeworICAgICAgICBpZiAoIHRpbWVvdXQgPD0gMCApCisgICAg ICAgIHsKKyAgICAgICAgICAgIHByaW50aygiVGltZW91dCB3aGVuIHdhaXRpbmcgZm9yIENQVXMg Y2FsbGluZyBpblxuIik7CisgICAgICAgICAgICByZXR1cm4gLUVCVVNZOworICAgICAgICB9Cisg ICAgICAgIHVkZWxheSgxKTsKKyAgICAgICAgdGltZW91dC0tOworICAgIH0KIAotICAgIGluZm8t PmNwdSA9IGNwdW1hc2tfbmV4dChpbmZvLT5jcHUsICZjcHVfb25saW5lX21hcCk7Ci0gICAgaWYg KCBpbmZvLT5jcHUgPCBucl9jcHVfaWRzICkKLSAgICAgICAgcmV0dXJuIGNvbnRpbnVlX2h5cGVy Y2FsbF9vbl9jcHUoaW5mby0+Y3B1LCBkb19taWNyb2NvZGVfdXBkYXRlLCBpbmZvKTsKKyAgICBy ZXR1cm4gMDsKK30KIAotICAgIGVycm9yID0gaW5mby0+ZXJyb3I7Ci0gICAgeGZyZWUoaW5mbyk7 Ci0gICAgcmV0dXJuIGVycm9yOworc3RhdGljIGludCBkb19taWNyb2NvZGVfdXBkYXRlKHZvaWQg Kl9pbmZvKQoreworICAgIHN0cnVjdCBtaWNyb2NvZGVfaW5mbyAqaW5mbyA9IF9pbmZvOworICAg IHVuc2lnbmVkIGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CisgICAgaW50IHJldDsKKwor ICAgIHJldCA9IHdhaXRfZm9yX2NwdXMoJmluZm8tPmNwdV9pbiwgTUlDUk9DT0RFX0RFRkFVTFRf VElNRU9VVCk7CisgICAgaWYgKCByZXQgKQorICAgICAgICByZXR1cm4gcmV0OworCisgICAgLyoK KyAgICAgKiBMb2dpY2FsIHRocmVhZHMgd2hpY2ggc2V0IHRoZSBmaXJzdCBiaXQgaW4gY3B1X3Np YmxpbmdfbWFzayBjYW4gZG8KKyAgICAgKiB0aGUgdXBkYXRlLiBPdGhlciBzaWJsaW5nIHRocmVh ZHMganVzdCBhd2FpdCB0aGUgY29tcGxldGlvbiBvZgorICAgICAqIG1pY3JvY29kZSB1cGRhdGUu CisgICAgICovCisgICAgaWYgKCAhY3B1bWFza190ZXN0X2FuZF9zZXRfY3B1KAorICAgICAgICAg ICAgICAgIGNwdW1hc2tfZmlyc3QocGVyX2NwdShjcHVfc2libGluZ19tYXNrLCBjcHUpKSwgJmlu Zm8tPmNwdXMpICkKKyAgICAgICAgcmV0ID0gbWljcm9jb2RlX3VwZGF0ZV9jcHUoaW5mby0+YnVm ZmVyLCBpbmZvLT5idWZmZXJfc2l6ZSk7CisgICAgLyoKKyAgICAgKiBJbmNyZWFzZSB0aGUgd2Fp dCB0aW1lb3V0IHRvIGEgc2FmZSB2YWx1ZSBoZXJlIHNpbmNlIHdlJ3JlIHNlcmlhbGl6aW5nCisg ICAgICogdGhlIG1pY3JvY29kZSB1cGRhdGUgYW5kIHRoYXQgY291bGQgdGFrZSBhIHdoaWxlIG9u IGEgbGFyZ2UgbnVtYmVyIG9mCisgICAgICogQ1BVcy4gQW5kIHRoYXQgaXMgZmluZSBhcyB0aGUg KmFjdHVhbCogdGltZW91dCB3aWxsIGJlIGRldGVybWluZWQgYnkKKyAgICAgKiB0aGUgbGFzdCBD UFUgZmluaXNoZWQgdXBkYXRpbmcgYW5kIHRodXMgY3V0IHNob3J0CisgICAgICovCisgICAgaWYg KCB3YWl0X2Zvcl9jcHVzKCZpbmZvLT5jcHVfb3V0LCBNSUNST0NPREVfREVGQVVMVF9USU1FT1VU ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5yX3BoeXNfY3B1cykg KQorICAgICAgICBwYW5pYygiVGltZW91dCB3aGVuIGZpbmlzaGluZyB1cGRhdGluZyBtaWNyb2Nv ZGUiKTsKKworICAgIHJldHVybiByZXQ7CiB9CiAKIGludCBtaWNyb2NvZGVfdXBkYXRlKFhFTl9H VUVTVF9IQU5ETEVfUEFSQU0oY29uc3Rfdm9pZCkgYnVmLCB1bnNpZ25lZCBsb25nIGxlbikKQEAg LTMxOCwyNiArMzU3LDUyIEBAIGludCBtaWNyb2NvZGVfdXBkYXRlKFhFTl9HVUVTVF9IQU5ETEVf UEFSQU0oY29uc3Rfdm9pZCkgYnVmLCB1bnNpZ25lZCBsb25nIGxlbikKIAogICAgIHJldCA9IGNv cHlfZnJvbV9ndWVzdChpbmZvLT5idWZmZXIsIGJ1ZiwgbGVuKTsKICAgICBpZiAoIHJldCAhPSAw ICkKLSAgICB7Ci0gICAgICAgIHhmcmVlKGluZm8pOwotICAgICAgICByZXR1cm4gcmV0OwotICAg IH0KKyAgICAgICAgZ290byBmcmVlOwogCiAgICAgaW5mby0+YnVmZmVyX3NpemUgPSBsZW47Ci0g ICAgaW5mby0+ZXJyb3IgPSAwOwotICAgIGluZm8tPmNwdSA9IGNwdW1hc2tfZmlyc3QoJmNwdV9v bmxpbmVfbWFwKTsKKworICAgIC8qIGNwdV9vbmxpbmVfbWFwIG11c3Qgbm90IGNoYW5nZSBkdXJp bmcgdXBkYXRlICovCisgICAgaWYgKCAhZ2V0X2NwdV9tYXBzKCkgKQorICAgIHsKKyAgICAgICAg cmV0ID0gLUVCVVNZOworICAgICAgICBnb3RvIGZyZWU7CisgICAgfQogCiAgICAgaWYgKCBtaWNy b2NvZGVfb3BzLT5zdGFydF91cGRhdGUgKQogICAgIHsKICAgICAgICAgcmV0ID0gbWljcm9jb2Rl X29wcy0+c3RhcnRfdXBkYXRlKCk7CiAgICAgICAgIGlmICggcmV0ICE9IDAgKQotICAgICAgICB7 Ci0gICAgICAgICAgICB4ZnJlZShpbmZvKTsKLSAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAg ICAgIH0KKyAgICAgICAgICAgIGdvdG8gcHV0OwogICAgIH0KIAotICAgIHJldHVybiBjb250aW51 ZV9oeXBlcmNhbGxfb25fY3B1KGluZm8tPmNwdSwgZG9fbWljcm9jb2RlX3VwZGF0ZSwgaW5mbyk7 CisgICAgY3B1bWFza19jbGVhcigmaW5mby0+Y3B1cyk7CisgICAgYXRvbWljX3NldCgmaW5mby0+ Y3B1X2luLCAwKTsKKyAgICBhdG9taWNfc2V0KCZpbmZvLT5jcHVfb3V0LCAwKTsKKworICAgIC8q CisgICAgICogV2UgaW50ZW5kIHRvIGRpc2FibGUgaW50ZXJydXB0IGZvciBsb25nIHRpbWUsIHdo aWNoIG1heSBsZWFkIHRvCisgICAgICogd2F0Y2hkb2cgdGltZW91dC4KKyAgICAgKi8KKyAgICB3 YXRjaGRvZ19kaXNhYmxlKCk7CisgICAgLyoKKyAgICAgKiBMYXRlIGxvYWRpbmcgZGFuY2UuIFdo eSB0aGUgaGVhdnktaGFuZGVkIHN0b3BfbWFjaGluZSBlZmZvcnQ/CisgICAgICoKKyAgICAgKiAt SFQgc2libGluZ3MgbXVzdCBiZSBpZGxlIGFuZCBub3QgZXhlY3V0ZSBvdGhlciBjb2RlIHdoaWxl IHRoZSBvdGhlcgorICAgICAqICBzaWJsaW5nIGlzIGxvYWRpbmcgbWljcm9jb2RlIGluIG9yZGVy IHRvIGF2b2lkIGFueSBuZWdhdGl2ZQorICAgICAqICBpbnRlcmFjdGlvbnMgY2F1c2UgYnkgdGhl IGxvYWRpbmcuCisgICAgICoKKyAgICAgKiAtSW4gYWRkaXRpb24sIG1pY3JvY29kZSB1cGRhdGUg b24gdGhlIGNvcmVzIG11c3QgYmUgc2VyaWFsaXplZCB1bnRpbAorICAgICAqICB0aGlzIHJlcXVp cmVtZW50IGNhbiBiZSByZWxheGVkIGluIHRoZSBmZWF0dXJlLiBSaWdodCBub3csIHRoaXMgaXMK KyAgICAgKiAgY29uc2VydmF0aXZlIGFuZCBnb29kLgorICAgICAqLworICAgIHJldCA9IHN0b3Bf bWFjaGluZV9ydW4oZG9fbWljcm9jb2RlX3VwZGF0ZSwgaW5mbywgTlJfQ1BVUyk7CisgICAgd2F0 Y2hkb2dfZW5hYmxlKCk7CisKKyBwdXQ6CisgICAgcHV0X2NwdV9tYXBzKCk7CisgZnJlZToKKyAg ICB4ZnJlZShpbmZvKTsKKyAgICByZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW50IF9faW5pdCBt aWNyb2NvZGVfaW5pdCh2b2lkKQotLSAKMS44LjMuMQoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h bi9saXN0aW5mby94ZW4tZGV2ZWw=