Redo Release 2.3.3
JIRA: https://issues.redhat.com/browse/RHEL-11179 Adding 0016-numatop-powerpc-Add-power10-support.patch Signed-off-by: Pingfan Liu <piliu@redhat.com>
This commit is contained in:
		
							parent
							
								
									7e516aa499
								
							
						
					
					
						commit
						4d0c1d504f
					
				
							
								
								
									
										251
									
								
								0016-numatop-powerpc-Add-power10-support.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										251
									
								
								0016-numatop-powerpc-Add-power10-support.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,251 @@ | |||||||
|  | From 25839aa3e2b02b5c001f220b1beeff5a786f83f2 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Kajol Jain <kjain@linux.ibm.com> | ||||||
|  | Date: Thu, 6 Jul 2023 04:33:56 -0500 | ||||||
|  | Subject: [PATCH] numatop/powerpc: Add power10 support | ||||||
|  | 
 | ||||||
|  | Add platform check for power10 processors. | ||||||
|  | Add new files called power10.c/power10.h, which includes | ||||||
|  | addition of the relevant events, to count per-process/per-thread | ||||||
|  | memory accesses and CPU usage information for power10 | ||||||
|  | processors. | ||||||
|  | 
 | ||||||
|  | Signed-off-by: Kajol Jain <kjain@linux.ibm.com> | ||||||
|  | ---
 | ||||||
|  |  Makefile.am               |  2 ++ | ||||||
|  |  numatop.8                 |  2 +- | ||||||
|  |  powerpc/include/power10.h | 50 ++++++++++++++++++++++++++++ | ||||||
|  |  powerpc/include/types.h   |  5 +-- | ||||||
|  |  powerpc/plat.c            | 14 ++++++-- | ||||||
|  |  powerpc/power10.c         | 69 +++++++++++++++++++++++++++++++++++++++ | ||||||
|  |  6 files changed, 136 insertions(+), 6 deletions(-) | ||||||
|  |  create mode 100644 powerpc/include/power10.h | ||||||
|  |  create mode 100644 powerpc/power10.c | ||||||
|  | 
 | ||||||
|  | diff --git a/Makefile.am b/Makefile.am
 | ||||||
|  | index ae11522..f23e1a6 100644
 | ||||||
|  | --- a/Makefile.am
 | ||||||
|  | +++ b/Makefile.am
 | ||||||
|  | @@ -83,10 +83,12 @@ if CPU_PPC
 | ||||||
|  |  libnumatop_la_SOURCES += \ | ||||||
|  |  	powerpc/include/power8.h \ | ||||||
|  |  	powerpc/include/power9.h \ | ||||||
|  | +	powerpc/include/power10.h \
 | ||||||
|  |  	powerpc/include/types.h \ | ||||||
|  |  	powerpc/plat.c \ | ||||||
|  |  	powerpc/power8.c \ | ||||||
|  |  	powerpc/power9.c \ | ||||||
|  | +	powerpc/power10.c \
 | ||||||
|  |  	powerpc/ui_perf_map.c \ | ||||||
|  |  	powerpc/util.c | ||||||
|  |  endif | ||||||
|  | diff --git a/numatop.8 b/numatop.8
 | ||||||
|  | index 9eb983c..7237093 100644
 | ||||||
|  | --- a/numatop.8
 | ||||||
|  | +++ b/numatop.8
 | ||||||
|  | @@ -500,4 +500,4 @@ in 3.9. The following steps show how to get and apply the patch set.
 | ||||||
|  |  \fBnumatop\fP supports the Intel Xeon processors: 5500-series, 6500/7500-series,  | ||||||
|  |  5600 series, E7-x8xx-series, and E5-16xx/24xx/26xx/46xx-series.  | ||||||
|  |  \fBNote\fP: CPU microcode version 0x618 or 0x70c or later is required on | ||||||
|  | -E5-16xx/24xx/26xx/46xx-series. It also supports IBM Power8 and Power9 processors.
 | ||||||
|  | +E5-16xx/24xx/26xx/46xx-series. It also supports IBM Power8, Power9 and Power10 processors.
 | ||||||
|  | diff --git a/powerpc/include/power10.h b/powerpc/include/power10.h
 | ||||||
|  | new file mode 100644 | ||||||
|  | index 0000000..bc6c7a9
 | ||||||
|  | --- /dev/null
 | ||||||
|  | +++ b/powerpc/include/power10.h
 | ||||||
|  | @@ -0,0 +1,50 @@
 | ||||||
|  | +/*
 | ||||||
|  | + * Copyright (c) 2023, IBM Corporation
 | ||||||
|  | + *
 | ||||||
|  | + * Redistribution and use in source and binary forms, with or without
 | ||||||
|  | + * modification, are permitted provided that the following conditions are met:
 | ||||||
|  | + *
 | ||||||
|  | + *   * Redistributions of source code must retain the above copyright notice,
 | ||||||
|  | + *     this list of conditions and the following disclaimer.
 | ||||||
|  | + *   * Redistributions in binary form must reproduce the above copyright
 | ||||||
|  | + *     notice, this list of conditions and the following disclaimer in the
 | ||||||
|  | + *     documentation and/or other materials provided with the distribution.
 | ||||||
|  | + *   * Neither the name of Intel Corporation nor the names of its contributors
 | ||||||
|  | + *     may be used to endorse or promote products derived from this software
 | ||||||
|  | + *     without specific prior written permission.
 | ||||||
|  | + *
 | ||||||
|  | + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | ||||||
|  | + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | ||||||
|  | + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | ||||||
|  | + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 | ||||||
|  | + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 | ||||||
|  | + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 | ||||||
|  | + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 | ||||||
|  | + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 | ||||||
|  | + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 | ||||||
|  | + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 | ||||||
|  | + * POSSIBILITY OF SUCH DAMAGE.
 | ||||||
|  | + */
 | ||||||
|  | +
 | ||||||
|  | +#ifndef _NUMATOP_POWERPC_POWER10_H
 | ||||||
|  | +#define _NUMATOP_POWERPC_POWER10_H
 | ||||||
|  | +
 | ||||||
|  | +#ifdef __cplusplus
 | ||||||
|  | +extern "C" {
 | ||||||
|  | +#endif
 | ||||||
|  | +
 | ||||||
|  | +#include <sys/types.h>
 | ||||||
|  | +#include <inttypes.h>
 | ||||||
|  | +#include "../../common/include/types.h"
 | ||||||
|  | +
 | ||||||
|  | +struct _plat_event_config;
 | ||||||
|  | +
 | ||||||
|  | +extern void power10_profiling_config(perf_count_id_t, struct _plat_event_config *);
 | ||||||
|  | +extern void power10_ll_config(plat_event_config_t *cfg);
 | ||||||
|  | +extern int power10_offcore_num(void);
 | ||||||
|  | +
 | ||||||
|  | +#ifdef __cplusplus
 | ||||||
|  | +}
 | ||||||
|  | +#endif
 | ||||||
|  | +
 | ||||||
|  | +#endif /* _NUMATOP_POWERPC_POWER10_H */
 | ||||||
|  | diff --git a/powerpc/include/types.h b/powerpc/include/types.h
 | ||||||
|  | index 1ffaafa..30f7eb6 100644
 | ||||||
|  | --- a/powerpc/include/types.h
 | ||||||
|  | +++ b/powerpc/include/types.h
 | ||||||
|  | @@ -36,10 +36,11 @@
 | ||||||
|  |  typedef enum { | ||||||
|  |  	CPU_UNSUP = 0, | ||||||
|  |  	CPU_POWER8, | ||||||
|  | -	CPU_POWER9
 | ||||||
|  | +	CPU_POWER9,
 | ||||||
|  | +	CPU_POWER10
 | ||||||
|  |  } cpu_type_t; | ||||||
|  |   | ||||||
|  | -#define CPU_TYPE_NUM    3
 | ||||||
|  | +#define CPU_TYPE_NUM    4
 | ||||||
|  |   | ||||||
|  |  typedef enum { | ||||||
|  |  	PERF_COUNT_INVALID = -1, | ||||||
|  | diff --git a/powerpc/plat.c b/powerpc/plat.c
 | ||||||
|  | index e7f132d..bed27d5 100644
 | ||||||
|  | --- a/powerpc/plat.c
 | ||||||
|  | +++ b/powerpc/plat.c
 | ||||||
|  | @@ -35,26 +35,30 @@
 | ||||||
|  |  #include "include/types.h" | ||||||
|  |  #include "include/power8.h" | ||||||
|  |  #include "include/power9.h" | ||||||
|  | +#include "include/power10.h"
 | ||||||
|  |   | ||||||
|  |  pfn_plat_profiling_config_t | ||||||
|  |  s_plat_profiling_config[CPU_TYPE_NUM] = { | ||||||
|  |  	NULL, | ||||||
|  |  	power8_profiling_config, | ||||||
|  | -	power9_profiling_config
 | ||||||
|  | +	power9_profiling_config,
 | ||||||
|  | +	power10_profiling_config
 | ||||||
|  |  }; | ||||||
|  |   | ||||||
|  |  pfn_plat_ll_config_t | ||||||
|  |  s_plat_ll_config[CPU_TYPE_NUM] = { | ||||||
|  |  	NULL, | ||||||
|  |  	power8_ll_config, | ||||||
|  | -	power9_ll_config
 | ||||||
|  | +	power9_ll_config,
 | ||||||
|  | +	power10_ll_config
 | ||||||
|  |  }; | ||||||
|  |   | ||||||
|  |  pfn_plat_offcore_num_t | ||||||
|  |  s_plat_offcore_num[CPU_TYPE_NUM] = { | ||||||
|  |  	NULL, | ||||||
|  |  	power8_offcore_num, | ||||||
|  | -	power9_offcore_num
 | ||||||
|  | +	power9_offcore_num,
 | ||||||
|  | +	power10_offcore_num
 | ||||||
|  |  }; | ||||||
|  |   | ||||||
|  |  #define SPRN_PVR	0x11F | ||||||
|  | @@ -85,6 +89,10 @@ plat_detect(void)
 | ||||||
|  |  		s_cpu_type = CPU_POWER9; | ||||||
|  |  		ret = 0; | ||||||
|  |  		break; | ||||||
|  | +	case 0x80:
 | ||||||
|  | +		s_cpu_type = CPU_POWER10;
 | ||||||
|  | +		ret = 0;
 | ||||||
|  | +		break;
 | ||||||
|  |  	} | ||||||
|  |   | ||||||
|  |  	return ret; | ||||||
|  | diff --git a/powerpc/power10.c b/powerpc/power10.c
 | ||||||
|  | new file mode 100644 | ||||||
|  | index 0000000..b979f64
 | ||||||
|  | --- /dev/null
 | ||||||
|  | +++ b/powerpc/power10.c
 | ||||||
|  | @@ -0,0 +1,69 @@
 | ||||||
|  | +/*
 | ||||||
|  | + * Copyright (c) 2023, IBM Corporation
 | ||||||
|  | + *
 | ||||||
|  | + * Redistribution and use in source and binary forms, with or without
 | ||||||
|  | + * modification, are permitted provided that the following conditions are met:
 | ||||||
|  | + *
 | ||||||
|  | + *   * Redistributions of source code must retain the above copyright notice,
 | ||||||
|  | + *     this list of conditions and the following disclaimer.
 | ||||||
|  | + *   * Redistributions in binary form must reproduce the above copyright
 | ||||||
|  | + *     notice, this list of conditions and the following disclaimer in the
 | ||||||
|  | + *     documentation and/or other materials provided with the distribution.
 | ||||||
|  | + *   * Neither the name of Intel Corporation nor the names of its contributors
 | ||||||
|  | + *     may be used to endorse or promote products derived from this software
 | ||||||
|  | + *     without specific prior written permission.
 | ||||||
|  | + *
 | ||||||
|  | + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | ||||||
|  | + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | ||||||
|  | + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | ||||||
|  | + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 | ||||||
|  | + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 | ||||||
|  | + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 | ||||||
|  | + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 | ||||||
|  | + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 | ||||||
|  | + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 | ||||||
|  | + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 | ||||||
|  | + * POSSIBILITY OF SUCH DAMAGE.
 | ||||||
|  | + */
 | ||||||
|  | +
 | ||||||
|  | +#include <inttypes.h>
 | ||||||
|  | +#include <stdlib.h>
 | ||||||
|  | +#include <sys/types.h>
 | ||||||
|  | +#include <stdio.h>
 | ||||||
|  | +#include <unistd.h>
 | ||||||
|  | +#include <string.h>
 | ||||||
|  | +#include <strings.h>
 | ||||||
|  | +#include "../common/include/os/linux/perf_event.h"
 | ||||||
|  | +#include "../common/include/os/plat.h"
 | ||||||
|  | +#include "include/power10.h"
 | ||||||
|  | +
 | ||||||
|  | +static plat_event_config_t s_power10_profiling[PERF_COUNT_NUM] = {
 | ||||||
|  | +	{ PERF_TYPE_RAW, 0x600f4, 0, 0, 0, 0, "PM_RUN_CYC" },
 | ||||||
|  | +	{ PERF_TYPE_RAW, 0x0F4040000004C040, 0, 0, 0, 0, "PM_DATA_FROM_DMEM" },
 | ||||||
|  | +	{ PERF_TYPE_RAW, 0x100f0, 0, 0, 0, 0, "PM_CYC" },
 | ||||||
|  | +	{ PERF_TYPE_RAW, 0x500fa, 0, 0, 0, 0, "PM_RUN_INST_CMPL" },
 | ||||||
|  | +	{ PERF_TYPE_RAW, 0x094040000002C040, 0, 0, 0, 0, "PM_DATA_FROM_LMEM" },
 | ||||||
|  | +	{ PERF_TYPE_RAW, 0x0D4040000003C040, 0, 0, 0, 0, "PM_DATA_FROM_RMEM" },
 | ||||||
|  | +};
 | ||||||
|  | +
 | ||||||
|  | +static plat_event_config_t s_power10_ll = {
 | ||||||
|  | +	PERF_TYPE_RAW, 0x0000, 0, 0, 0, 1, "PM_SUSPENDED"
 | ||||||
|  | +};
 | ||||||
|  | +
 | ||||||
|  | +void
 | ||||||
|  | +power10_profiling_config(perf_count_id_t perf_count_id, plat_event_config_t *cfg)
 | ||||||
|  | +{
 | ||||||
|  | +	plat_config_get(perf_count_id, cfg, s_power10_profiling);
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +void
 | ||||||
|  | +power10_ll_config(plat_event_config_t *cfg)
 | ||||||
|  | +{
 | ||||||
|  | +	memcpy(cfg, &s_power10_ll, sizeof (plat_event_config_t));
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +int
 | ||||||
|  | +power10_offcore_num(void)
 | ||||||
|  | +{
 | ||||||
|  | +	return (3);
 | ||||||
|  | +}
 | ||||||
|  | -- 
 | ||||||
|  | 2.31.1 | ||||||
|  | 
 | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user