From: Juergen Gross <jgross@suse.com>
To: linux-kernel@vger.kernel.org, x86@kernel.org
Cc: lists@nerdbynature.de, mikelley@microsoft.com,
torvalds@linux-foundation.org, 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>
Subject: [PATCH v2 1/8] x86/mtrr: split off physical address size calculation
Date: Thu, 9 Feb 2023 08:22:13 +0100 [thread overview]
Message-ID: <20230209072220.6836-2-jgross@suse.com> (raw)
In-Reply-To: <20230209072220.6836-1-jgross@suse.com>
Move the calculation of the physical address size in mtrr_bp_init()
into a helper function. This will be needed later.
Signed-off-by: Juergen Gross <jgross@suse.com>
---
V2:
- new patch
---
arch/x86/kernel/cpu/mtrr/mtrr.c | 70 ++++++++++++++++-----------------
1 file changed, 33 insertions(+), 37 deletions(-)
diff --git a/arch/x86/kernel/cpu/mtrr/mtrr.c b/arch/x86/kernel/cpu/mtrr/mtrr.c
index 783f3210d582..542ca5639dfd 100644
--- a/arch/x86/kernel/cpu/mtrr/mtrr.c
+++ b/arch/x86/kernel/cpu/mtrr/mtrr.c
@@ -617,27 +617,11 @@ static struct syscore_ops mtrr_syscore_ops = {
.resume = mtrr_restore,
};
-int __initdata changed_by_mtrr_cleanup;
-
-#define SIZE_OR_MASK_BITS(n) (~((1ULL << ((n) - PAGE_SHIFT)) - 1))
-/**
- * mtrr_bp_init - initialize mtrrs on the boot CPU
- *
- * This needs to be called early; before any of the other CPUs are
- * initialized (i.e. before smp_init()).
- *
- */
-void __init mtrr_bp_init(void)
+static unsigned int __init mtrr_calc_physbits(bool generic)
{
- const char *why = "(not available)";
- u32 phys_addr;
-
- phys_addr = 32;
+ unsigned int phys_addr = 32;
- if (boot_cpu_has(X86_FEATURE_MTRR)) {
- mtrr_if = &generic_mtrr_ops;
- size_or_mask = SIZE_OR_MASK_BITS(36);
- size_and_mask = 0x00f00000;
+ if (generic) {
phys_addr = 36;
/*
@@ -654,42 +638,54 @@ void __init mtrr_bp_init(void)
(boot_cpu_data.x86_stepping == 0x3 ||
boot_cpu_data.x86_stepping == 0x4))
phys_addr = 36;
-
- size_or_mask = SIZE_OR_MASK_BITS(phys_addr);
- size_and_mask = ~size_or_mask & 0xfffff00000ULL;
} else if (boot_cpu_data.x86_vendor == X86_VENDOR_CENTAUR &&
boot_cpu_data.x86 == 6) {
/*
* VIA C* family have Intel style MTRRs,
* but don't support PAE
*/
- size_or_mask = SIZE_OR_MASK_BITS(32);
- size_and_mask = 0;
phys_addr = 32;
}
+ }
+
+ size_or_mask = ~((1ULL << ((phys_addr) - PAGE_SHIFT)) - 1);
+ size_and_mask = ~size_or_mask & 0xfffff00000ULL;
+
+ return phys_addr;
+}
+
+int __initdata changed_by_mtrr_cleanup;
+
+/**
+ * mtrr_bp_init - initialize mtrrs on the boot CPU
+ *
+ * This needs to be called early; before any of the other CPUs are
+ * initialized (i.e. before smp_init()).
+ *
+ */
+void __init mtrr_bp_init(void)
+{
+ const char *why = "(not available)";
+ unsigned int phys_addr;
+
+ phys_addr = mtrr_calc_physbits(boot_cpu_has(X86_FEATURE_MTRR));
+
+ if (boot_cpu_has(X86_FEATURE_MTRR)) {
+ mtrr_if = &generic_mtrr_ops;
} else {
switch (boot_cpu_data.x86_vendor) {
case X86_VENDOR_AMD:
- if (cpu_feature_enabled(X86_FEATURE_K6_MTRR)) {
- /* Pre-Athlon (K6) AMD CPU MTRRs */
+ /* Pre-Athlon (K6) AMD CPU MTRRs */
+ if (cpu_feature_enabled(X86_FEATURE_K6_MTRR))
mtrr_if = &amd_mtrr_ops;
- size_or_mask = SIZE_OR_MASK_BITS(32);
- size_and_mask = 0;
- }
break;
case X86_VENDOR_CENTAUR:
- if (cpu_feature_enabled(X86_FEATURE_CENTAUR_MCR)) {
+ if (cpu_feature_enabled(X86_FEATURE_CENTAUR_MCR))
mtrr_if = ¢aur_mtrr_ops;
- size_or_mask = SIZE_OR_MASK_BITS(32);
- size_and_mask = 0;
- }
break;
case X86_VENDOR_CYRIX:
- if (cpu_feature_enabled(X86_FEATURE_CYRIX_ARR)) {
+ if (cpu_feature_enabled(X86_FEATURE_CYRIX_ARR))
mtrr_if = &cyrix_mtrr_ops;
- size_or_mask = SIZE_OR_MASK_BITS(32);
- size_and_mask = 0;
- }
break;
default:
break;
--
2.35.3
next prev parent reply other threads:[~2023-02-09 7:23 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-09 7:22 [PATCH v2 0/8] x86/mtrr: fix handling with PAT but without MTRR Juergen Gross
2023-02-09 7:22 ` Juergen Gross [this message]
2023-02-11 10:08 ` [PATCH v2 1/8] x86/mtrr: split off physical address size calculation Borislav Petkov
2023-02-13 6:19 ` Juergen Gross
2023-02-09 7:22 ` [PATCH v2 2/8] x86/mtrr: support setting MTRR state for software defined MTRRs Juergen Gross
2023-02-13 1:07 ` Michael Kelley (LINUX)
2023-02-13 6:27 ` Juergen Gross
2023-02-13 6:43 ` Michael Kelley (LINUX)
2023-02-13 11:39 ` Borislav Petkov
2023-02-13 14:07 ` Juergen Gross
2023-02-13 15:03 ` Borislav Petkov
2023-02-13 15:11 ` Borislav Petkov
2023-02-13 15:18 ` Juergen Gross
2023-02-13 15:40 ` Borislav Petkov
2023-02-13 15:44 ` Juergen Gross
2023-02-13 18:53 ` Borislav Petkov
2023-02-14 7:04 ` Juergen Gross
2023-02-14 8:58 ` Borislav Petkov
2023-02-14 9:02 ` Juergen Gross
2023-02-14 9:10 ` Borislav Petkov
2023-02-14 9:17 ` Juergen Gross
2023-02-14 9:32 ` Borislav Petkov
2023-02-13 15:27 ` Dave Hansen
2023-02-13 15:38 ` Juergen Gross
2023-02-13 15:36 ` Juergen Gross
2023-02-13 18:43 ` Borislav Petkov
2023-02-14 7:01 ` Juergen Gross
2023-02-14 0:45 ` Kirill A. Shutemov
2023-02-16 9:32 ` Juergen Gross
2023-02-16 11:02 ` Jeremi Piotrowski
2023-02-16 11:25 ` Borislav Petkov
2023-02-16 12:19 ` Juergen Gross
2023-02-16 12:29 ` Borislav Petkov
2023-02-16 16:04 ` Michael Kelley (LINUX)
2023-02-16 11:07 ` Jeremi Piotrowski
2023-02-16 11:27 ` Borislav Petkov
2023-02-09 7:22 ` [PATCH v2 3/8] x86/hyperv: set MTRR state when running as SEV-SNP Hyper-V guest Juergen Gross
2023-02-13 1:07 ` Michael Kelley (LINUX)
2023-02-13 6:28 ` Juergen Gross
2023-02-09 7:22 ` [PATCH v2 4/8] x86/xen: set MTRR state when running as Xen PV initial domain Juergen Gross
2023-02-09 7:22 ` [PATCH v2 5/8] x86/mtrr: revert commit 90b926e68f50 Juergen Gross
2023-02-10 18:59 ` Linux regression tracking (Thorsten Leemhuis)
2023-02-13 6:07 ` Juergen Gross
2023-02-13 11:46 ` Christian Kujau
2023-02-13 16:23 ` Juergen Gross
2023-02-13 17:01 ` Michael Kelley (LINUX)
2023-02-13 17:24 ` Juergen Gross
2023-02-13 22:54 ` Christian Kujau
2023-02-14 7:13 ` Juergen Gross
2023-02-09 7:22 ` [PATCH v2 6/8] x86/mtrr: don't let mtrr_type_lookup() return MTRR_TYPE_INVALID Juergen Gross
2023-02-09 7:22 ` [PATCH v2 7/8] x86/mm: only check uniform after calling mtrr_type_lookup() Juergen Gross
2023-02-11 0:06 ` Edgecombe, Rick P
2023-02-13 6:08 ` Juergen Gross
2023-02-13 1:08 ` Michael Kelley (LINUX)
2023-02-13 6:35 ` Juergen Gross
2023-02-15 13:40 ` Juergen Gross
2023-02-15 19:38 ` Michael Kelley (LINUX)
2023-02-16 5:22 ` Juergen Gross
2023-02-09 7:22 ` [PATCH v2 8/8] x86/mtrr: drop sanity check in mtrr_type_lookup_fixed() Juergen Gross
2023-02-11 0:06 ` [PATCH v2 0/8] x86/mtrr: fix handling with PAT but without MTRR Edgecombe, Rick P
2023-02-13 6:12 ` Juergen Gross
2023-02-13 18:21 ` Edgecombe, Rick P
2023-02-15 8:25 ` Juergen Gross
2023-02-15 23:22 ` Linus Torvalds
2023-02-16 5:35 ` 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=20230209072220.6836-2-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=lists@nerdbynature.de \
--cc=mikelley@microsoft.com \
--cc=mingo@redhat.com \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.