mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-06 02:50:43 +00:00
![Kan Liang](/assets/img/avatar_default.png)
With the new CPUID.1F, a new level type of CPU topology, 'die', is introduced. The 'die' information in CPU topology should be added in perf header. To be compatible with old perf.data, the patch checks the section size before reading the die information. The new info is added at the end of the cpu_topology section, the old perf tool ignores the extra data. It never reads data crossing the section boundary. The new perf tool with the patch can be used on legacy kernel. Add a new function has_die_topology() to check if die topology information is supported by kernel. The function only check X86 and CPU 0. Assuming other CPUs have same topology. Use similar method for core and socket to support die id and sibling dies string. Signed-off-by: Kan Liang <kan.liang@linux.intel.com> Reviewed-by: Jiri Olsa <jolsa@kernel.org> Cc: Andi Kleen <ak@linux.intel.com> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/1559688644-106558-2-git-send-email-kan.liang@linux.intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
35 lines
683 B
C
35 lines
683 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef __PERF_CPUTOPO_H
|
|
#define __PERF_CPUTOPO_H
|
|
|
|
#include <linux/types.h>
|
|
#include "env.h"
|
|
|
|
struct cpu_topology {
|
|
u32 core_sib;
|
|
u32 die_sib;
|
|
u32 thread_sib;
|
|
char **core_siblings;
|
|
char **die_siblings;
|
|
char **thread_siblings;
|
|
};
|
|
|
|
struct numa_topology_node {
|
|
char *cpus;
|
|
u32 node;
|
|
u64 mem_total;
|
|
u64 mem_free;
|
|
};
|
|
|
|
struct numa_topology {
|
|
u32 nr;
|
|
struct numa_topology_node nodes[0];
|
|
};
|
|
|
|
struct cpu_topology *cpu_topology__new(void);
|
|
void cpu_topology__delete(struct cpu_topology *tp);
|
|
|
|
struct numa_topology *numa_topology__new(void);
|
|
void numa_topology__delete(struct numa_topology *tp);
|
|
|
|
#endif /* __PERF_CPUTOPO_H */
|