From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933077AbcHNU0U (ORCPT ); Sun, 14 Aug 2016 16:26:20 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:45591 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933053AbcHNU0R (ORCPT ); Sun, 14 Aug 2016 16:26:17 -0400 From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Toshi Kani , Thomas Gleixner , Andrew Morton , Andy Lutomirski , Borislav Petkov , Borislav Petkov , Brian Gerst , Denys Vlasenko , "H. Peter Anvin" , Juergen Gross , Linus Torvalds , "Luis R. Rodriguez" , Peter Zijlstra , Toshi Kani , elliott@hpe.com, konrad.wilk@oracle.com, paul.gortmaker@windriver.com, xen-devel@lists.xenproject.org, Ingo Molnar Subject: [PATCH 4.4 27/49] x86/mtrr: Fix PAT init handling when MTRR is disabled Date: Sun, 14 Aug 2016 22:23:27 +0200 Message-Id: <20160814202303.989136145@linuxfoundation.org> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20160814202302.493206349@linuxfoundation.org> References: <20160814202302.493206349@linuxfoundation.org> User-Agent: quilt/0.64 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.4-stable review patch. If anyone has any objections, please let me know. ------------------ From: Toshi Kani commit ad025a73f0e9344ac73ffe1b74c184033e08e7d5 upstream. get_mtrr_state() calls pat_init() on BSP even if MTRR is disabled. This results in calling pat_init() on BSP only since APs do not call pat_init() when MTRR is disabled. This inconsistency between BSP and APs leads to undefined behavior. Make BSP's calling condition to pat_init() consistent with AP's, mtrr_ap_init() and mtrr_aps_init(). Signed-off-by: Toshi Kani Reviewed-by: Thomas Gleixner Cc: Andrew Morton Cc: Andy Lutomirski Cc: Borislav Petkov Cc: Borislav Petkov Cc: Brian Gerst Cc: Denys Vlasenko Cc: H. Peter Anvin Cc: Juergen Gross Cc: Linus Torvalds Cc: Luis R. Rodriguez Cc: Peter Zijlstra Cc: Toshi Kani Cc: elliott@hpe.com Cc: konrad.wilk@oracle.com Cc: paul.gortmaker@windriver.com Cc: xen-devel@lists.xenproject.org Link: http://lkml.kernel.org/r/1458769323-24491-6-git-send-email-toshi.kani@hpe.com Signed-off-by: Ingo Molnar Signed-off-by: Greg Kroah-Hartman --- arch/x86/kernel/cpu/mtrr/generic.c | 24 ++++++++++++++---------- arch/x86/kernel/cpu/mtrr/main.c | 3 +++ arch/x86/kernel/cpu/mtrr/mtrr.h | 1 + 3 files changed, 18 insertions(+), 10 deletions(-) --- a/arch/x86/kernel/cpu/mtrr/generic.c +++ b/arch/x86/kernel/cpu/mtrr/generic.c @@ -444,11 +444,24 @@ static void __init print_mtrr_state(void pr_debug("TOM2: %016llx aka %lldM\n", mtrr_tom2, mtrr_tom2>>20); } +/* PAT setup for BP. We need to go through sync steps here */ +void __init mtrr_bp_pat_init(void) +{ + unsigned long flags; + + local_irq_save(flags); + prepare_set(); + + pat_init(); + + post_set(); + local_irq_restore(flags); +} + /* Grab all of the MTRR state for this CPU into *state */ bool __init get_mtrr_state(void) { struct mtrr_var_range *vrs; - unsigned long flags; unsigned lo, dummy; unsigned int i; @@ -481,15 +494,6 @@ bool __init get_mtrr_state(void) mtrr_state_set = 1; - /* PAT setup for BP. We need to go through sync steps here */ - local_irq_save(flags); - prepare_set(); - - pat_init(); - - post_set(); - local_irq_restore(flags); - return !!(mtrr_state.enabled & MTRR_STATE_MTRR_ENABLED); } --- a/arch/x86/kernel/cpu/mtrr/main.c +++ b/arch/x86/kernel/cpu/mtrr/main.c @@ -752,6 +752,9 @@ void __init mtrr_bp_init(void) /* BIOS may override */ __mtrr_enabled = get_mtrr_state(); + if (mtrr_enabled()) + mtrr_bp_pat_init(); + if (mtrr_cleanup(phys_addr)) { changed_by_mtrr_cleanup = 1; mtrr_if->set_all(); --- a/arch/x86/kernel/cpu/mtrr/mtrr.h +++ b/arch/x86/kernel/cpu/mtrr/mtrr.h @@ -52,6 +52,7 @@ void set_mtrr_prepare_save(struct set_mt void fill_mtrr_var_range(unsigned int index, u32 base_lo, u32 base_hi, u32 mask_lo, u32 mask_hi); bool get_mtrr_state(void); +void mtrr_bp_pat_init(void); extern void set_mtrr_ops(const struct mtrr_ops *ops); From mboxrd@z Thu Jan 1 00:00:00 1970 From: Greg Kroah-Hartman Subject: [PATCH 4.4 27/49] x86/mtrr: Fix PAT init handling when MTRR is disabled Date: Sun, 14 Aug 2016 22:23:27 +0200 Message-ID: <20160814202303.989136145@linuxfoundation.org> References: <20160814202302.493206349@linuxfoundation.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bZ1z5-0006Ib-CL for xen-devel@lists.xenproject.org; Sun, 14 Aug 2016 20:26:15 +0000 In-Reply-To: <20160814202302.493206349@linuxfoundation.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: linux-kernel@vger.kernel.org Cc: Juergen Gross , Denys Vlasenko , xen-devel@lists.xenproject.org, Toshi Kani , Peter Zijlstra , Greg Kroah-Hartman , "Luis R. Rodriguez" , "H. Peter Anvin" , stable@vger.kernel.org, Andy Lutomirski , paul.gortmaker@windriver.com, Ingo Molnar , Borislav Petkov , Brian Gerst , Toshi Kani , Andrew Morton , Borislav Petkov , Linus Torvalds , Thomas Gleixner , elliott@hpe.com List-Id: xen-devel@lists.xenproject.org NC40LXN0YWJsZSByZXZpZXcgcGF0Y2guICBJZiBhbnlvbmUgaGFzIGFueSBvYmplY3Rpb25zLCBw bGVhc2UgbGV0IG1lIGtub3cuCgotLS0tLS0tLS0tLS0tLS0tLS0KCkZyb206IFRvc2hpIEthbmkg PHRvc2hpLmthbmlAaHBlLmNvbT4KCmNvbW1pdCBhZDAyNWE3M2YwZTkzNDRhYzczZmZlMWI3NGMx ODQwMzNlMDhlN2Q1IHVwc3RyZWFtLgoKZ2V0X210cnJfc3RhdGUoKSBjYWxscyBwYXRfaW5pdCgp IG9uIEJTUCBldmVuIGlmIE1UUlIgaXMgZGlzYWJsZWQuClRoaXMgcmVzdWx0cyBpbiBjYWxsaW5n IHBhdF9pbml0KCkgb24gQlNQIG9ubHkgc2luY2UgQVBzIGRvIG5vdCBjYWxsCnBhdF9pbml0KCkg d2hlbiBNVFJSIGlzIGRpc2FibGVkLiAgVGhpcyBpbmNvbnNpc3RlbmN5IGJldHdlZW4gQlNQCmFu ZCBBUHMgbGVhZHMgdG8gdW5kZWZpbmVkIGJlaGF2aW9yLgoKTWFrZSBCU1AncyBjYWxsaW5nIGNv bmRpdGlvbiB0byBwYXRfaW5pdCgpIGNvbnNpc3RlbnQgd2l0aCBBUCdzLAptdHJyX2FwX2luaXQo KSBhbmQgbXRycl9hcHNfaW5pdCgpLgoKU2lnbmVkLW9mZi1ieTogVG9zaGkgS2FuaSA8dG9zaGku a2FuaUBocGUuY29tPgpSZXZpZXdlZC1ieTogVGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxpbnV0cm9u aXguZGU+CkNjOiBBbmRyZXcgTW9ydG9uIDxha3BtQGxpbnV4LWZvdW5kYXRpb24ub3JnPgpDYzog QW5keSBMdXRvbWlyc2tpIDxsdXRvQGFtYWNhcGl0YWwubmV0PgpDYzogQm9yaXNsYXYgUGV0a292 IDxicEBhbGllbjguZGU+CkNjOiBCb3Jpc2xhdiBQZXRrb3YgPGJwQHN1c2UuZGU+CkNjOiBCcmlh biBHZXJzdCA8YnJnZXJzdEBnbWFpbC5jb20+CkNjOiBEZW55cyBWbGFzZW5rbyA8ZHZsYXNlbmtA cmVkaGF0LmNvbT4KQ2M6IEguIFBldGVyIEFudmluIDxocGFAenl0b3IuY29tPgpDYzogSnVlcmdl biBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgpDYzogTGludXMgVG9ydmFsZHMgPHRvcnZhbGRzQGxp bnV4LWZvdW5kYXRpb24ub3JnPgpDYzogTHVpcyBSLiBSb2RyaWd1ZXogPG1jZ3JvZkBzdXNlLmNv bT4KQ2M6IFBldGVyIFppamxzdHJhIDxwZXRlcnpAaW5mcmFkZWFkLm9yZz4KQ2M6IFRvc2hpIEth bmkgPHRvc2hpLmthbmlAaHAuY29tPgpDYzogZWxsaW90dEBocGUuY29tCkNjOiBrb25yYWQud2ls a0BvcmFjbGUuY29tCkNjOiBwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tCkNjOiB4ZW4tZGV2 ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKTGluazogaHR0cDovL2xrbWwua2VybmVsLm9yZy9yLzE0 NTg3NjkzMjMtMjQ0OTEtNi1naXQtc2VuZC1lbWFpbC10b3NoaS5rYW5pQGhwZS5jb20KU2lnbmVk LW9mZi1ieTogSW5nbyBNb2xuYXIgPG1pbmdvQGtlcm5lbC5vcmc+ClNpZ25lZC1vZmYtYnk6IEdy ZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+CgotLS0KIGFyY2gv eDg2L2tlcm5lbC9jcHUvbXRyci9nZW5lcmljLmMgfCAgIDI0ICsrKysrKysrKysrKysrLS0tLS0t LS0tLQogYXJjaC94ODYva2VybmVsL2NwdS9tdHJyL21haW4uYyAgICB8ICAgIDMgKysrCiBhcmNo L3g4Ni9rZXJuZWwvY3B1L210cnIvbXRyci5oICAgIHwgICAgMSArCiAzIGZpbGVzIGNoYW5nZWQs IDE4IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKLS0tIGEvYXJjaC94ODYva2VybmVs L2NwdS9tdHJyL2dlbmVyaWMuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L210cnIvZ2VuZXJp Yy5jCkBAIC00NDQsMTEgKzQ0NCwyNCBAQCBzdGF0aWMgdm9pZCBfX2luaXQgcHJpbnRfbXRycl9z dGF0ZSh2b2lkCiAJCXByX2RlYnVnKCJUT00yOiAlMDE2bGx4IGFrYSAlbGxkTVxuIiwgbXRycl90 b20yLCBtdHJyX3RvbTI+PjIwKTsKIH0KIAorLyogUEFUIHNldHVwIGZvciBCUC4gV2UgbmVlZCB0 byBnbyB0aHJvdWdoIHN5bmMgc3RlcHMgaGVyZSAqLwordm9pZCBfX2luaXQgbXRycl9icF9wYXRf aW5pdCh2b2lkKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlsb2NhbF9pcnFfc2F2ZShm bGFncyk7CisJcHJlcGFyZV9zZXQoKTsKKworCXBhdF9pbml0KCk7CisKKwlwb3N0X3NldCgpOwor CWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKK30KKwogLyogR3JhYiBhbGwgb2YgdGhlIE1UUlIg c3RhdGUgZm9yIHRoaXMgQ1BVIGludG8gKnN0YXRlICovCiBib29sIF9faW5pdCBnZXRfbXRycl9z dGF0ZSh2b2lkKQogewogCXN0cnVjdCBtdHJyX3Zhcl9yYW5nZSAqdnJzOwotCXVuc2lnbmVkIGxv bmcgZmxhZ3M7CiAJdW5zaWduZWQgbG8sIGR1bW15OwogCXVuc2lnbmVkIGludCBpOwogCkBAIC00 ODEsMTUgKzQ5NCw2IEBAIGJvb2wgX19pbml0IGdldF9tdHJyX3N0YXRlKHZvaWQpCiAKIAltdHJy X3N0YXRlX3NldCA9IDE7CiAKLQkvKiBQQVQgc2V0dXAgZm9yIEJQLiBXZSBuZWVkIHRvIGdvIHRo cm91Z2ggc3luYyBzdGVwcyBoZXJlICovCi0JbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOwotCXByZXBh cmVfc2V0KCk7Ci0KLQlwYXRfaW5pdCgpOwotCi0JcG9zdF9zZXQoKTsKLQlsb2NhbF9pcnFfcmVz dG9yZShmbGFncyk7Ci0KIAlyZXR1cm4gISEobXRycl9zdGF0ZS5lbmFibGVkICYgTVRSUl9TVEFU RV9NVFJSX0VOQUJMRUQpOwogfQogCi0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbXRyci9tYWlu LmMKKysrIGIvYXJjaC94ODYva2VybmVsL2NwdS9tdHJyL21haW4uYwpAQCAtNzUyLDYgKzc1Miw5 IEBAIHZvaWQgX19pbml0IG10cnJfYnBfaW5pdCh2b2lkKQogCQkJLyogQklPUyBtYXkgb3ZlcnJp ZGUgKi8KIAkJCV9fbXRycl9lbmFibGVkID0gZ2V0X210cnJfc3RhdGUoKTsKIAorCQkJaWYgKG10 cnJfZW5hYmxlZCgpKQorCQkJCW10cnJfYnBfcGF0X2luaXQoKTsKKwogCQkJaWYgKG10cnJfY2xl YW51cChwaHlzX2FkZHIpKSB7CiAJCQkJY2hhbmdlZF9ieV9tdHJyX2NsZWFudXAgPSAxOwogCQkJ CW10cnJfaWYtPnNldF9hbGwoKTsKLS0tIGEvYXJjaC94ODYva2VybmVsL2NwdS9tdHJyL210cnIu aAorKysgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L210cnIvbXRyci5oCkBAIC01Miw2ICs1Miw3IEBA IHZvaWQgc2V0X210cnJfcHJlcGFyZV9zYXZlKHN0cnVjdCBzZXRfbXQKIHZvaWQgZmlsbF9tdHJy X3Zhcl9yYW5nZSh1bnNpZ25lZCBpbnQgaW5kZXgsCiAJCXUzMiBiYXNlX2xvLCB1MzIgYmFzZV9o aSwgdTMyIG1hc2tfbG8sIHUzMiBtYXNrX2hpKTsKIGJvb2wgZ2V0X210cnJfc3RhdGUodm9pZCk7 Cit2b2lkIG10cnJfYnBfcGF0X2luaXQodm9pZCk7CiAKIGV4dGVybiB2b2lkIHNldF9tdHJyX29w cyhjb25zdCBzdHJ1Y3QgbXRycl9vcHMgKm9wcyk7CiAKCgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==