From patchwork Thu Apr 2 21:49:12 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luis Chamberlain X-Patchwork-Id: 6151691 Return-Path: X-Original-To: patchwork-linux-fbdev@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 212C69F1BE for ; Thu, 2 Apr 2015 21:49:21 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 17286203A4 for ; Thu, 2 Apr 2015 21:49:20 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 072572039D for ; Thu, 2 Apr 2015 21:49:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751395AbbDBVtS (ORCPT ); Thu, 2 Apr 2015 17:49:18 -0400 Received: from cantor2.suse.de ([195.135.220.15]:51664 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751325AbbDBVtR (ORCPT ); Thu, 2 Apr 2015 17:49:17 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 08FE1ABE4; Thu, 2 Apr 2015 21:49:14 +0000 (UTC) Date: Thu, 2 Apr 2015 23:49:12 +0200 From: "Luis R. Rodriguez" To: Toshi Kani Cc: "Luis R. Rodriguez" , luto@amacapital.net, mingo@redhat.com, tglx@linutronix.de, hpa@zytor.com, jgross@suse.com, JBeulich@suse.com, bp@suse.de, suresh.b.siddha@intel.com, venkatesh.pallipadi@intel.com, airlied@redhat.com, linux-kernel@vger.kernel.org, linux-fbdev@vger.kernel.org, x86@kernel.org, xen-devel@lists.xenproject.org, Ingo Molnar , Daniel Vetter , Antonino Daplas , Jean-Christophe Plagniol-Villard , Tomi Valkeinen , Dave Hansen , Stefan Bader , konrad.wilk@oracle.com, ville.syrjala@linux.intel.com, david.vrabel@citrix.com, bhelgaas@google.com, Roger Pau =?iso-8859-1?Q?Monn=E9?= , xen-devel@lists.xensource.com Subject: Re: [PATCH v1 02/47] x86: mtrr: generalize run time disabling of MTRR Message-ID: <20150402214912.GZ5622@wotan.suse.de> References: <1426893517-2511-1-git-send-email-mcgrof@do-not-panic.com> <1426893517-2511-3-git-send-email-mcgrof@do-not-panic.com> <1427488817.31093.54.camel@misato.fc.hp.com> <20150327235630.GR5622@wotan.suse.de> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20150327235630.GR5622@wotan.suse.de> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-fbdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-fbdev@vger.kernel.org X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP On Sat, Mar 28, 2015 at 12:56:30AM +0100, Luis R. Rodriguez wrote: > On Fri, Mar 27, 2015 at 02:40:17PM -0600, Toshi Kani wrote: > > On Fri, 2015-03-20 at 16:17 -0700, Luis R. Rodriguez wrote: > > : > > > @@ -734,6 +742,7 @@ void __init mtrr_bp_init(void) > > > } > > > > > > if (mtrr_if) { > > > + mtrr_enabled = true; > > > set_num_var_ranges(); > > > init_table(); > > > if (use_intel()) { > > get_mtrr_state(); > > > > After setting mtrr_enabled to true, get_mtrr_state() reads > > MSR_MTRRdefType and sets 'mtrr_state.enabled', which also indicates if > > MTRRs are enabled or not on the system. So, potentially, we could have > > a case that mtrr_enabled is set to true, but mtrr_state.enabled is set > > to disabled when MTRRs are disabled by BIOS. > > Thanks for the review, in this case then we should update mtrr_enabled to false. > > > ps. > > I recently cleaned up this part of the MTRR code in the patch below, > > which is currently available in the -mm & -next trees. > > https://lkml.org/lkml/2015/3/24/1063 > > Great I will rebase and work with that and try to address this > consideration you have raised. OK I'll mesh in this change as well in my next respin: void fill_mtrr_var_range(unsigned int index, u32 base_lo, u32 base_hi, u32 mask_lo, u32 mask_hi); -void get_mtrr_state(void); +bool get_mtrr_state(void); extern void set_mtrr_ops(const struct mtrr_ops *ops); --- To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/arch/x86/kernel/cpu/mtrr/generic.c b/arch/x86/kernel/cpu/mtrr/generic.c index a83f27a..ecf7cb9 100644 --- a/arch/x86/kernel/cpu/mtrr/generic.c +++ b/arch/x86/kernel/cpu/mtrr/generic.c @@ -438,7 +438,7 @@ static void __init print_mtrr_state(void) } /* Grab all of the MTRR state for this CPU into *state */ -void __init get_mtrr_state(void) +bool __init get_mtrr_state(void) { struct mtrr_var_range *vrs; unsigned long flags; @@ -482,6 +482,8 @@ void __init get_mtrr_state(void) post_set(); local_irq_restore(flags); + + return !!mtrr_state.enabled; } /* Some BIOS's are messed up and don't set all MTRRs the same! */ diff --git a/arch/x86/kernel/cpu/mtrr/main.c b/arch/x86/kernel/cpu/mtrr/main.c index ea5f363..f96195e 100644 --- a/arch/x86/kernel/cpu/mtrr/main.c +++ b/arch/x86/kernel/cpu/mtrr/main.c @@ -734,22 +742,25 @@ void __init mtrr_bp_init(void) } if (mtrr_if) { + mtrr_enabled = true; set_num_var_ranges(); init_table(); if (use_intel()) { - get_mtrr_state(); + /* BIOS may override */ + mtrr_enabled = get_mtrr_state(); if (mtrr_cleanup(phys_addr)) { changed_by_mtrr_cleanup = 1; @@ -745,11 +755,14 @@ void __init mtrr_bp_init(void) } } } + + if (!mtrr_enabled) + pr_info("mtrr: system does not support MTRR\n"); } diff --git a/arch/x86/kernel/cpu/mtrr/mtrr.h b/arch/x86/kernel/cpu/mtrr/mtrr.h index df5e41f..951884d 100644 --- a/arch/x86/kernel/cpu/mtrr/mtrr.h +++ b/arch/x86/kernel/cpu/mtrr/mtrr.h @@ -51,7 +51,7 @@ void set_mtrr_prepare_save(struct set_mtrr_context *ctxt);