All of lore.kernel.org
 help / color / mirror / Atom feed
From: tip-bot for Len Brown <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: mingo@kernel.org, rui.zhang@intel.com,
	linux-kernel@vger.kernel.org, peterz@infradead.org,
	tglx@linutronix.de, len.brown@intel.com, hpa@zytor.com
Subject: [tip:x86/topology] x86/topology: Define topology_logical_die_id()
Date: Thu, 23 May 2019 02:25:32 -0700	[thread overview]
Message-ID: <tip-212bf4fdb7f9eeeb99afd97ebad677d43e7b55ac@git.kernel.org> (raw)
In-Reply-To: <2f3526e25ae14fbeff26fb26e877d159df8946d9.1557769318.git.len.brown@intel.com>

Commit-ID:  212bf4fdb7f9eeeb99afd97ebad677d43e7b55ac
Gitweb:     https://git.kernel.org/tip/212bf4fdb7f9eeeb99afd97ebad677d43e7b55ac
Author:     Len Brown <len.brown@intel.com>
AuthorDate: Mon, 13 May 2019 13:58:49 -0400
Committer:  Thomas Gleixner <tglx@linutronix.de>
CommitDate: Thu, 23 May 2019 10:08:32 +0200

x86/topology: Define topology_logical_die_id()

Define topology_logical_die_id() ala existing topology_logical_package_id()

Signed-off-by: Len Brown <len.brown@intel.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Zhang Rui <rui.zhang@intel.com>
Reviewed-by: Ingo Molnar <mingo@kernel.org>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/2f3526e25ae14fbeff26fb26e877d159df8946d9.1557769318.git.len.brown@intel.com

---
 arch/x86/include/asm/processor.h |  1 +
 arch/x86/include/asm/topology.h  |  5 +++++
 arch/x86/kernel/cpu/common.c     |  1 +
 arch/x86/kernel/smpboot.c        | 45 ++++++++++++++++++++++++++++++++++++++++
 4 files changed, 52 insertions(+)

diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
index 7c17343946dd..6aba36bde57f 100644
--- a/arch/x86/include/asm/processor.h
+++ b/arch/x86/include/asm/processor.h
@@ -118,6 +118,7 @@ struct cpuinfo_x86 {
 	/* Core id: */
 	u16			cpu_core_id;
 	u16			cpu_die_id;
+	u16			logical_die_id;
 	/* Index into per_cpu list: */
 	u16			cpu_index;
 	u32			microcode;
diff --git a/arch/x86/include/asm/topology.h b/arch/x86/include/asm/topology.h
index 3777dbe9c0ff..9de16b4f6023 100644
--- a/arch/x86/include/asm/topology.h
+++ b/arch/x86/include/asm/topology.h
@@ -106,6 +106,7 @@ extern const struct cpumask *cpu_coregroup_mask(int cpu);
 
 #define topology_logical_package_id(cpu)	(cpu_data(cpu).logical_proc_id)
 #define topology_physical_package_id(cpu)	(cpu_data(cpu).phys_proc_id)
+#define topology_logical_die_id(cpu)		(cpu_data(cpu).logical_die_id)
 #define topology_die_id(cpu)			(cpu_data(cpu).cpu_die_id)
 #define topology_core_id(cpu)			(cpu_data(cpu).cpu_core_id)
 
@@ -131,13 +132,17 @@ static inline int topology_max_smt_threads(void)
 }
 
 int topology_update_package_map(unsigned int apicid, unsigned int cpu);
+int topology_update_die_map(unsigned int dieid, unsigned int cpu);
 int topology_phys_to_logical_pkg(unsigned int pkg);
+int topology_phys_to_logical_die(unsigned int die, unsigned int cpu);
 bool topology_is_primary_thread(unsigned int cpu);
 bool topology_smt_supported(void);
 #else
 #define topology_max_packages()			(1)
 static inline int
 topology_update_package_map(unsigned int apicid, unsigned int cpu) { return 0; }
+static inline int
+topology_update_die_map(unsigned int dieid, unsigned int cpu) { return 0; }
 static inline int topology_phys_to_logical_pkg(unsigned int pkg) { return 0; }
 static inline int topology_phys_to_logical_die(unsigned int die,
 		unsigned int cpu) { return 0; }
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
index d7f55ad2dfb1..8cdca1223b0f 100644
--- a/arch/x86/kernel/cpu/common.c
+++ b/arch/x86/kernel/cpu/common.c
@@ -1298,6 +1298,7 @@ static void validate_apic_and_package_id(struct cpuinfo_x86 *c)
 		       cpu, apicid, c->initial_apicid);
 	}
 	BUG_ON(topology_update_package_map(c->phys_proc_id, cpu));
+	BUG_ON(topology_update_die_map(c->cpu_die_id, cpu));
 #else
 	c->logical_proc_id = 0;
 #endif
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index 40ffe23249c0..a6e01b6c2709 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -101,6 +101,7 @@ EXPORT_PER_CPU_SYMBOL(cpu_info);
 unsigned int __max_logical_packages __read_mostly;
 EXPORT_SYMBOL(__max_logical_packages);
 static unsigned int logical_packages __read_mostly;
+static unsigned int logical_die __read_mostly;
 
 /* Maximum number of SMT threads on any online core */
 int __read_mostly __max_smt_threads = 1;
@@ -302,6 +303,26 @@ int topology_phys_to_logical_pkg(unsigned int phys_pkg)
 	return -1;
 }
 EXPORT_SYMBOL(topology_phys_to_logical_pkg);
+/**
+ * topology_phys_to_logical_die - Map a physical die id to logical
+ *
+ * Returns logical die id or -1 if not found
+ */
+int topology_phys_to_logical_die(unsigned int die_id, unsigned int cur_cpu)
+{
+	int cpu;
+	int proc_id = cpu_data(cur_cpu).phys_proc_id;
+
+	for_each_possible_cpu(cpu) {
+		struct cpuinfo_x86 *c = &cpu_data(cpu);
+
+		if (c->initialized && c->cpu_die_id == die_id &&
+		    c->phys_proc_id == proc_id)
+			return c->logical_die_id;
+	}
+	return -1;
+}
+EXPORT_SYMBOL(topology_phys_to_logical_die);
 
 /**
  * topology_update_package_map - Update the physical to logical package map
@@ -326,6 +347,29 @@ found:
 	cpu_data(cpu).logical_proc_id = new;
 	return 0;
 }
+/**
+ * topology_update_die_map - Update the physical to logical die map
+ * @die:	The die id as retrieved via CPUID
+ * @cpu:	The cpu for which this is updated
+ */
+int topology_update_die_map(unsigned int die, unsigned int cpu)
+{
+	int new;
+
+	/* Already available somewhere? */
+	new = topology_phys_to_logical_die(die, cpu);
+	if (new >= 0)
+		goto found;
+
+	new = logical_die++;
+	if (new != die) {
+		pr_info("CPU %u Converting physical %u to logical die %u\n",
+			cpu, die, new);
+	}
+found:
+	cpu_data(cpu).logical_die_id = new;
+	return 0;
+}
 
 void __init smp_store_boot_cpu_info(void)
 {
@@ -335,6 +379,7 @@ void __init smp_store_boot_cpu_info(void)
 	*c = boot_cpu_data;
 	c->cpu_index = id;
 	topology_update_package_map(c->phys_proc_id, id);
+	topology_update_die_map(c->cpu_die_id, id);
 	c->initialized = true;
 }
 

  reply	other threads:[~2019-05-23  9:25 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-13 17:58 [PATCH 0/19] v6 multi-die/package topology support Len Brown
2019-05-13 17:58 ` [PATCH 01/19] x86 topology: Add CPUID.1F multi-die/package support Len Brown
2019-05-13 17:58   ` [PATCH 02/19] x86 topology: Create topology_max_die_per_package() Len Brown
2019-05-23  9:23     ` [tip:x86/topology] x86/topology: " tip-bot for Len Brown
2019-05-13 17:58   ` [PATCH 03/19] cpu topology: Export die_id Len Brown
2019-05-23  9:24     ` [tip:x86/topology] cpu/topology: " tip-bot for Len Brown
2019-05-13 17:58   ` [PATCH 04/19] x86 topology: Define topology_die_id() Len Brown
2019-05-23  9:24     ` [tip:x86/topology] x86/topology: " tip-bot for Len Brown
2019-05-13 17:58   ` [PATCH 05/19] x86 topology: Define topology_logical_die_id() Len Brown
2019-05-23  9:25     ` tip-bot for Len Brown [this message]
2019-05-13 17:58   ` [PATCH 06/19] powercap/intel_rapl: Simplify rapl_find_package() Len Brown
2019-05-23  9:26     ` [tip:x86/topology] " tip-bot for Zhang Rui
2019-05-13 17:58   ` [PATCH 07/19] powercap/intel_rapl: Support multi-die/package Len Brown
2019-05-23  9:26     ` [tip:x86/topology] " tip-bot for Zhang Rui
2019-05-13 17:58   ` [PATCH 08/19] thermal/x86_pkg_temp_thermal: " Len Brown
2019-05-23  9:27     ` [tip:x86/topology] " tip-bot for Zhang Rui
2019-05-13 17:58   ` [PATCH 09/19] powercap/intel_rapl: Update RAPL domain name and debug messages Len Brown
2019-05-23  9:28     ` [tip:x86/topology] " tip-bot for Zhang Rui
2019-05-13 17:58   ` [PATCH 10/19] hwmon/coretemp: Support multi-die/package Len Brown
2019-05-23  9:29     ` [tip:x86/topology] " tip-bot for Zhang Rui
2019-05-13 17:58   ` [PATCH 11/19] topology: Create package_cpus sysfs attribute Len Brown
2019-05-23  9:29     ` [tip:x86/topology] " tip-bot for Len Brown
2019-05-13 17:58   ` [PATCH 12/19] topology: Create core_cpus and die_cpus sysfs attributes Len Brown
2019-05-23  9:30     ` [tip:x86/topology] " tip-bot for Len Brown
2019-05-13 17:58   ` [PATCH 13/19] perf/x86/intel/uncore: Support multi-die/package Len Brown
2019-05-23  9:31     ` [tip:x86/topology] " tip-bot for Kan Liang
2019-05-13 17:58   ` [PATCH 14/19] perf/x86/intel/rapl: " Len Brown
2019-05-23  9:31     ` [tip:x86/topology] " tip-bot for Kan Liang
2019-05-13 17:58   ` [PATCH 15/19] perf/x86/intel/cstate: " Len Brown
2019-05-23  9:32     ` [tip:x86/topology] " tip-bot for Kan Liang
2019-05-13 17:59   ` [PATCH 16/19] thermal/x86_pkg_temp_thermal: Cosmetic: Rename internal variables to zones from packages Len Brown
2019-05-23  9:33     ` [tip:x86/topology] " tip-bot for Len Brown
2019-05-13 17:59   ` [PATCH 17/19] hwmon/coretemp: " Len Brown
2019-05-23  9:34     ` [tip:x86/topology] " tip-bot for Len Brown
2019-05-13 17:59   ` [PATCH 18/19] perf/x86/intel/uncore: Cosmetic renames in response to multi-die/pkg support Len Brown
2019-05-23  9:34     ` [tip:x86/topology] " tip-bot for Kan Liang
2019-05-13 17:59   ` [PATCH 19/19] perf/x86/intel/rapl: Cosmetic rename internal variables " Len Brown
2019-05-23  9:35     ` [tip:x86/topology] " tip-bot for Kan Liang
2019-05-23  9:22   ` [tip:x86/topology] x86/topology: Add CPUID.1F multi-die/package support tip-bot for Len Brown
2019-05-15  8:55 ` [PATCH 0/19] v6 multi-die/package topology support Peter Zijlstra
2019-05-15 16:38   ` Ingo Molnar
2019-05-22 20:44 ` Ingo Molnar

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=tip-212bf4fdb7f9eeeb99afd97ebad677d43e7b55ac@git.kernel.org \
    --to=tipbot@zytor.com \
    --cc=hpa@zytor.com \
    --cc=len.brown@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rui.zhang@intel.com \
    --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 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.