From: Aravind Gopalakrishnan <aravind.gopalakrishnan@amd.com>
To: Borislav Petkov <bp@alien8.de>
Cc: <dougthompson@xmission.com>, <mchehab@osg.samsung.com>,
<linux-edac@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<x86@kernel.org>, Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
Borislav Petkov <bp@suse.de>, Jacob Shin <jacob.w.shin@gmail.com>,
Dave Hansen <dave.hansen@linux.intel.com>,
Andy Lutomirski <luto@kernel.org>,
"Paolo Bonzini" <pbonzini@redhat.com>
Subject: Re: [PATCH V2 7/9] x86, amd: Factor out number of nodes calculation
Date: Wed, 3 Jun 2015 10:49:54 -0500 [thread overview]
Message-ID: <556F2222.9000701@amd.com> (raw)
In-Reply-To: <20150603085805.GE4403@pd.tnic>
On 6/3/2015 3:58 AM, Borislav Petkov wrote:
> On Tue, Jun 02, 2015 at 03:36:00PM -0500, Aravind Gopalakrishnan wrote:
>
>
>> +static void amd_set_num_nodes(void)
>> +{
>> + if (cpu_has_topoext) {
>> + u32 ecx;
>> +
>> + ecx = cpuid_ecx(0x8000001e);
>> + nodes_per_processor = ((ecx >> 8) & 7) + 1;
>> + } else if (static_cpu_has(X86_FEATURE_NODEID_MSR)) {
>> + u64 value;
>> +
>> + rdmsrl(MSR_FAM10H_NODE_ID, value);
>> + nodes_per_processor = ((value >> 3) & 7) + 1;
>> + }
>> +}
>> +
>> /*
>> * Fixup core topology information for
>> * (1) AMD multi-node processors
>> * Assumption: Number of cores in each internal node is the same.
>> * (2) AMD processors supporting compute units
>> */
>> -#ifdef CONFIG_X86_HT
>> static void amd_get_topology(struct cpuinfo_x86 *c)
>> {
>> - u32 nodes, cores_per_cu = 1;
>> + u32 cores_per_cu = 1;
>> u8 node_id;
>> int cpu = smp_processor_id();
>>
>> + amd_set_num_nodes();
> When I said, you like to complicate stuff, I wasn't joking. :-)
>
> See below for what I actually meant. Diff is ontop of the X86_HT removal
> patch from today:
*facepalm*
Sorry about that.
Thanks for fixing it.
-Aravind.
> ---
> diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
> index 5bd3a99dc20b..bdca795743e8 100644
> --- a/arch/x86/kernel/cpu/amd.c
> +++ b/arch/x86/kernel/cpu/amd.c
> @@ -19,6 +19,8 @@
>
> #include "cpu.h"
>
> +static u32 nodes_per_processor = 1;
> +
> static inline int rdmsrl_amd_safe(unsigned msr, unsigned long long *p)
> {
> u32 gprs[8] = { 0 };
> @@ -291,7 +293,7 @@ static int nearby_node(int apicid)
> #ifdef CONFIG_SMP
> static void amd_get_topology(struct cpuinfo_x86 *c)
> {
> - u32 nodes, cores_per_cu = 1;
> + u32 cores_per_cu = 1;
> u8 node_id;
> int cpu = smp_processor_id();
>
> @@ -300,7 +302,7 @@ static void amd_get_topology(struct cpuinfo_x86 *c)
> u32 eax, ebx, ecx, edx;
>
> cpuid(0x8000001e, &eax, &ebx, &ecx, &edx);
> - nodes = ((ecx >> 8) & 7) + 1;
> + nodes_per_processor = ((ecx >> 8) & 7) + 1;
> node_id = ecx & 7;
>
> /* get compute unit information */
> @@ -311,18 +313,18 @@ static void amd_get_topology(struct cpuinfo_x86 *c)
> u64 value;
>
> rdmsrl(MSR_FAM10H_NODE_ID, value);
> - nodes = ((value >> 3) & 7) + 1;
> + nodes_per_processor = ((value >> 3) & 7) + 1;
> node_id = value & 7;
> } else
> return;
>
> /* fixup multi-node processor information */
> - if (nodes > 1) {
> + if (nodes_per_processor > 1) {
> u32 cores_per_node;
> u32 cus_per_node;
>
> set_cpu_cap(c, X86_FEATURE_AMD_DCM);
> - cores_per_node = c->x86_max_cores / nodes;
> + cores_per_node = c->x86_max_cores / nodes_per_processor;
> cus_per_node = cores_per_node / cores_per_cu;
>
> /* store NodeID, use llc_shared_map to store sibling info */
next prev parent reply other threads:[~2015-06-03 15:50 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-02 20:35 [PATCH V2 0/9] Updates to EDAC mce_amd_inj Aravind Gopalakrishnan
2015-06-02 20:35 ` [PATCH V2 1/9] edac, mce_amd_inj: Use MCE_INJECT_GET for bank Aravind Gopalakrishnan
2015-06-02 20:35 ` [PATCH V2 2/9] edac, mce_amd_inj: Rework sanity check for inj_bank_set Aravind Gopalakrishnan
2015-06-02 20:35 ` [PATCH V2 3/9] edac, mce_amd_inj: Modify flags attrigute to use string arguments Aravind Gopalakrishnan
2015-06-03 14:50 ` Borislav Petkov
2015-06-03 15:34 ` Aravind Gopalakrishnan
2015-06-03 16:00 ` Borislav Petkov
2015-06-03 16:24 ` Aravind Gopalakrishnan
2015-06-02 20:35 ` [PATCH V2 4/9] edac, mce_amd_inj: Add capability to trigger apic interrupts Aravind Gopalakrishnan
2015-06-02 20:35 ` [PATCH V2 5/9] edac, mce_amd_inj: Add individual permissions field for dfs_node Aravind Gopalakrishnan
2015-06-02 20:35 ` [PATCH V2 6/9] edac, mce_amd_inj: Add README file Aravind Gopalakrishnan
2015-06-02 20:36 ` [PATCH V2 7/9] x86, amd: Factor out number of nodes calculation Aravind Gopalakrishnan
2015-06-03 8:58 ` Borislav Petkov
2015-06-03 15:49 ` Aravind Gopalakrishnan [this message]
2015-06-02 20:36 ` [PATCH V2 8/9] x86, amd: Provide accessor for number of nodes Aravind Gopalakrishnan
2015-06-02 20:36 ` [PATCH V2 9/9] edac, mce_amd_inj: Inject errors on NBC for bank 4 errors Aravind Gopalakrishnan
2015-06-03 15:21 ` [PATCH V2 0/9] Updates to EDAC mce_amd_inj Borislav Petkov
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=556F2222.9000701@amd.com \
--to=aravind.gopalakrishnan@amd.com \
--cc=bp@alien8.de \
--cc=bp@suse.de \
--cc=dave.hansen@linux.intel.com \
--cc=dougthompson@xmission.com \
--cc=hpa@zytor.com \
--cc=jacob.w.shin@gmail.com \
--cc=linux-edac@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=mchehab@osg.samsung.com \
--cc=mingo@redhat.com \
--cc=pbonzini@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 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.