mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Juergen Gross <jgross@suse.com>
To: linux-kernel@vger.kernel.org, x86@kernel.org
Cc: Juergen Gross <jgross@suse.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H. Peter Anvin" <hpa@zytor.com>,
	Michael Kelley <mikelley@microsoft.com>
Subject: [PATCH v5 09/15] x86/mtrr: allocate mtrr_value array dynamically
Date: Sat,  1 Apr 2023 08:36:46 +0200	[thread overview]
Message-ID: <20230401063652.23522-10-jgross@suse.com> (raw)
In-Reply-To: <20230401063652.23522-1-jgross@suse.com>

The mtrr_value[] array is a static variable, which is used only in a
few configurations. Consuming 6kB is ridiculous for this case,
especially as the array doesn't need to be that large and it can easily
be allocated dynamically.

The "few configurations" are all 32-bit ones, so put the code inside a
CONFIG_X86_32 #ifdef.

Signed-off-by: Juergen Gross <jgross@suse.com>
Tested-by: Michael Kelley <mikelley@microsoft.com>
---
V5:
- check for allocation failure (Kai Huang, Boris Petkov)
- add #ifdef
---
 arch/x86/kernel/cpu/mtrr/mtrr.c | 21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

diff --git a/arch/x86/kernel/cpu/mtrr/mtrr.c b/arch/x86/kernel/cpu/mtrr/mtrr.c
index 4fa3d0f94f39..76f5b5e1128b 100644
--- a/arch/x86/kernel/cpu/mtrr/mtrr.c
+++ b/arch/x86/kernel/cpu/mtrr/mtrr.c
@@ -560,8 +560,10 @@ int arch_phys_wc_index(int handle)
 }
 EXPORT_SYMBOL_GPL(arch_phys_wc_index);
 
-/* The suspend/resume methods are only for CPU without MTRR. CPU using generic
- * MTRR driver doesn't require this
+#ifdef CONFIG_X86_32
+/*
+ * The suspend/resume methods are only for CPUs without MTRR. CPUs using generic
+ * MTRR driver don't require this.
  */
 struct mtrr_value {
 	mtrr_type	ltype;
@@ -569,12 +571,15 @@ struct mtrr_value {
 	unsigned long	lsize;
 };
 
-static struct mtrr_value mtrr_value[MTRR_MAX_VAR_RANGES];
+static struct mtrr_value *mtrr_value;
 
 static int mtrr_save(void)
 {
 	int i;
 
+	if (!mtrr_value)
+		return -ENOMEM;
+
 	for (i = 0; i < num_var_ranges; i++) {
 		mtrr_if->get(i, &mtrr_value[i].lbase,
 				&mtrr_value[i].lsize,
@@ -596,12 +601,11 @@ static void mtrr_restore(void)
 	}
 }
 
-
-
 static struct syscore_ops mtrr_syscore_ops = {
 	.suspend	= mtrr_save,
 	.resume		= mtrr_restore,
 };
+#endif /* CONFIG_X86_32 */
 
 int __initdata changed_by_mtrr_cleanup;
 
@@ -730,15 +734,20 @@ static int __init mtrr_init_finialize(void)
 		return 0;
 	}
 
+#ifdef CONFIG_X86_32
+	mtrr_value = kcalloc(num_var_ranges, sizeof(*mtrr_value), GFP_KERNEL);
+
 	/*
 	 * The CPU has no MTRR and seems to not support SMP. They have
 	 * specific drivers, we use a tricky method to support
-	 * suspend/resume for them.
+	 * suspend/resume for them. In case above allocation failed we can't
+	 * support suspend/resume (handled in mtrr_save()).
 	 *
 	 * TBD: is there any system with such CPU which supports
 	 * suspend/resume? If no, we should remove the code.
 	 */
 	register_syscore_ops(&mtrr_syscore_ops);
+#endif
 
 	return 0;
 }
-- 
2.35.3


  parent reply	other threads:[~2023-04-01  6:38 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-01  6:36 [PATCH v5 00/15] x86/mtrr: fix handling with PAT but without MTRR Juergen Gross
2023-04-01  6:36 ` [PATCH v5 01/15] x86/mtrr: split off physical address size calculation Juergen Gross
2023-04-01  6:36 ` [PATCH v5 02/15] x86/mtrr: optimize mtrr_calc_physbits() Juergen Gross
2023-04-01  6:36 ` [PATCH v5 03/15] x86/mtrr: replace some constants with defines Juergen Gross
2023-04-03 16:03   ` Borislav Petkov
2023-04-05  7:55     ` Juergen Gross
2023-04-05 20:26       ` Borislav Petkov
2023-04-11 13:32         ` Juergen Gross
2023-04-01  6:36 ` [PATCH v5 04/15] x86/mtrr: support setting MTRR state for software defined MTRRs Juergen Gross
2023-04-03  2:25   ` Huang, Kai
2023-04-03  7:10     ` Juergen Gross
2023-04-03  9:27       ` Huang, Kai
2023-04-03  9:35         ` Juergen Gross
2023-04-03  9:44           ` Huang, Kai
2023-04-03  9:43         ` Huang, Kai
2023-04-11 13:20   ` Borislav Petkov
2023-04-11 13:31     ` Juergen Gross
2023-04-11 17:14       ` Borislav Petkov
2023-04-11 13:59     ` Michael Kelley (LINUX)
2023-04-11 14:04       ` Juergen Gross
2023-04-11 14:26         ` Borislav Petkov
2023-04-11 15:57           ` Juergen Gross
2023-04-11 17:15             ` Borislav Petkov
2023-04-12  8:30               ` Juergen Gross
2023-04-11 14:25       ` Borislav Petkov
2023-04-01  6:36 ` [PATCH v5 05/15] x86/hyperv: set MTRR state when running as SEV-SNP Hyper-V guest Juergen Gross
2023-04-02  2:36   ` Michael Kelley (LINUX)
2023-04-01  6:36 ` [PATCH v5 06/15] x86/xen: set MTRR state when running as Xen PV initial domain Juergen Gross
2023-04-01  6:36 ` [PATCH v5 07/15] x86/mtrr: replace vendor tests in MTRR code Juergen Gross
2023-04-12  8:45   ` Borislav Petkov
2023-04-12 10:25     ` Juergen Gross
2023-04-01  6:36 ` [PATCH v5 08/15] x86/mtrr: have only one set_mtrr() variant Juergen Gross
2023-04-12 12:30   ` Borislav Petkov
2023-04-12 12:56     ` Juergen Gross
2023-04-12 20:09       ` Borislav Petkov
2023-04-01  6:36 ` Juergen Gross [this message]
2023-04-12 21:11   ` [PATCH v5 09/15] x86/mtrr: allocate mtrr_value array dynamically Borislav Petkov
2023-04-13 10:07     ` Juergen Gross
2023-04-01  6:36 ` [PATCH v5 10/15] x86/mtrr: add get_effective_type() service function Juergen Gross
2023-04-01  6:36 ` [PATCH v5 11/15] x86/mtrr: construct a memory map with cache modes Juergen Gross
2023-04-20 12:15   ` Borislav Petkov
2023-04-20 12:30     ` Juergen Gross
2023-04-20 12:30       ` Juergen Gross
2023-04-20 13:01       ` Borislav Petkov
2023-04-20 13:57         ` Juergen Gross
2023-04-20 14:54           ` Borislav Petkov
2023-04-20 15:10             ` Juergen Gross
2023-04-21 11:23               ` Borislav Petkov
2023-04-21 14:35                 ` Juergen Gross
2023-04-01  6:36 ` [PATCH v5 12/15] x86/mtrr: use new cache_map in mtrr_type_lookup() Juergen Gross
2023-04-01  6:36 ` [PATCH v5 13/15] x86/mtrr: don't let mtrr_type_lookup() return MTRR_TYPE_INVALID Juergen Gross
2023-04-01  6:36 ` [PATCH v5 14/15] x86/mm: only check uniform after calling mtrr_type_lookup() Juergen Gross
2023-04-01  6:36 ` [PATCH v5 15/15] x86/mtrr: remove unused code Juergen Gross

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230401063652.23522-10-jgross@suse.com \
    --to=jgross@suse.com \
    --cc=bp@alien8.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mikelley@microsoft.com \
    --cc=mingo@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®