public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Andreas Herrmann <andreas.herrmann3@amd.com>
To: Ingo Molnar <mingo@kernel.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	<linux-kernel@vger.kernel.org>
Subject: [PATCH v2] x86, amd: Re-enable CPU topology extensions in case BIOS has disabled it
Date: Mon, 16 Apr 2012 15:40:28 +0200	[thread overview]
Message-ID: <20120416134028.GA25712@alberich.amd.com> (raw)
In-Reply-To: <20120416065249.GA5292@gmail.com>

>From 2da973d9e096cea39a3bd397c1449a821b76d816 Mon Sep 17 00:00:00 2001
From: Andreas Herrmann <andreas.herrmann3@amd.com>
Date: Tue, 3 Apr 2012 12:13:07 +0200
Subject: [PATCH] x86, amd: Re-enable CPU topology extensions in case BIOS has
 disabled it

BIOS will switch off the corresponding feature flag on family 15h
models 10h-1fh non-desktop CPUs.

The topology extension CPUID leafs are required to detect which cores
belong to the same compute unit. (thread siblings mask is set
accordingly and also correct information about L1i and L2 cache
sharing depends on this).

W/o this patch we wouldn't see which cores belong to the same compute
unit and also cache sharing information for L1i and L2 would be
incorrect on such systems.

Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com>
---
 arch/x86/kernel/cpu/amd.c |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)


Hi Ingo,

Hope this new commit messages answers your questions.

Of course this patch is more a workaround for "suboptimal BIOS
settings" and thus not strictly stable material. (BTW, no there is no
way to change the BIOS setting here.) But as a whole bunch of systems
will be affected it might also be reasonable to add this patch to
stable Linux versions.


Regards,
Andreas

diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
index 1248f9c..0ae388d 100644
--- a/arch/x86/kernel/cpu/amd.c
+++ b/arch/x86/kernel/cpu/amd.c
@@ -579,6 +579,24 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c)
 		}
 	}
 
+	/* re-enable TopologyExtensions if switched off by BIOS */
+	if ((c->x86 == 0x15) &&
+	    (c->x86_model >= 0x10) && (c->x86_model <= 0x1f) &&
+	    !cpu_has(c, X86_FEATURE_TOPOEXT)) {
+		u64 val;
+
+		if (!rdmsrl_amd_safe(0xc0011005, &val)) {
+			val |= 1ULL << 54;
+			wrmsrl_amd_safe(0xc0011005, val);
+			rdmsrl(0xc0011005, val);
+			if (val & (1ULL << 54)) {
+				set_cpu_cap(c, X86_FEATURE_TOPOEXT);
+				printk(KERN_INFO FW_INFO "CPU: Re-enabling "
+				  "disabled Topology Extensions Support\n");
+			}
+		}
+	}
+
 	cpu_detect_cache_sizes(c);
 
 	/* Multi core CPU? */
-- 
1.7.8.5



      reply	other threads:[~2012-04-16 13:40 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-11 15:26 [PATCH] x86, amd: Re-enable CPU topology extensions in case BIOS has disabled it Andreas Herrmann
2012-04-16  6:52 ` Ingo Molnar
2012-04-16 13:40   ` Andreas Herrmann [this message]

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=20120416134028.GA25712@alberich.amd.com \
    --to=andreas.herrmann3@amd.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=tglx@linutronix.de \
    /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