cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

topology.h (2876B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef _ASM_S390_TOPOLOGY_H
      3#define _ASM_S390_TOPOLOGY_H
      4
      5#include <linux/cpumask.h>
      6#include <asm/numa.h>
      7
      8struct sysinfo_15_1_x;
      9struct cpu;
     10
     11#ifdef CONFIG_SCHED_TOPOLOGY
     12
     13struct cpu_topology_s390 {
     14	unsigned short thread_id;
     15	unsigned short core_id;
     16	unsigned short socket_id;
     17	unsigned short book_id;
     18	unsigned short drawer_id;
     19	unsigned short dedicated : 1;
     20	int booted_cores;
     21	cpumask_t thread_mask;
     22	cpumask_t core_mask;
     23	cpumask_t book_mask;
     24	cpumask_t drawer_mask;
     25};
     26
     27extern struct cpu_topology_s390 cpu_topology[NR_CPUS];
     28
     29#define topology_physical_package_id(cpu) (cpu_topology[cpu].socket_id)
     30#define topology_thread_id(cpu)		  (cpu_topology[cpu].thread_id)
     31#define topology_sibling_cpumask(cpu)	  (&cpu_topology[cpu].thread_mask)
     32#define topology_core_id(cpu)		  (cpu_topology[cpu].core_id)
     33#define topology_core_cpumask(cpu)	  (&cpu_topology[cpu].core_mask)
     34#define topology_book_id(cpu)		  (cpu_topology[cpu].book_id)
     35#define topology_book_cpumask(cpu)	  (&cpu_topology[cpu].book_mask)
     36#define topology_drawer_id(cpu)		  (cpu_topology[cpu].drawer_id)
     37#define topology_drawer_cpumask(cpu)	  (&cpu_topology[cpu].drawer_mask)
     38#define topology_cpu_dedicated(cpu)	  (cpu_topology[cpu].dedicated)
     39#define topology_booted_cores(cpu)	  (cpu_topology[cpu].booted_cores)
     40
     41#define mc_capable() 1
     42
     43void topology_init_early(void);
     44int topology_cpu_init(struct cpu *);
     45int topology_set_cpu_management(int fc);
     46void topology_schedule_update(void);
     47void store_topology(struct sysinfo_15_1_x *info);
     48void update_cpu_masks(void);
     49void topology_expect_change(void);
     50const struct cpumask *cpu_coregroup_mask(int cpu);
     51
     52#else /* CONFIG_SCHED_TOPOLOGY */
     53
     54static inline void topology_init_early(void) { }
     55static inline void topology_schedule_update(void) { }
     56static inline int topology_cpu_init(struct cpu *cpu) { return 0; }
     57static inline int topology_cpu_dedicated(int cpu_nr) { return 0; }
     58static inline int topology_booted_cores(int cpu_nr) { return 1; }
     59static inline void update_cpu_masks(void) { }
     60static inline void topology_expect_change(void) { }
     61
     62#endif /* CONFIG_SCHED_TOPOLOGY */
     63
     64#define POLARIZATION_UNKNOWN	(-1)
     65#define POLARIZATION_HRZ	(0)
     66#define POLARIZATION_VL		(1)
     67#define POLARIZATION_VM		(2)
     68#define POLARIZATION_VH		(3)
     69
     70#define SD_BOOK_INIT	SD_CPU_INIT
     71
     72#ifdef CONFIG_NUMA
     73
     74#define cpu_to_node cpu_to_node
     75static inline int cpu_to_node(int cpu)
     76{
     77	return 0;
     78}
     79
     80/* Returns a pointer to the cpumask of CPUs on node 'node'. */
     81#define cpumask_of_node cpumask_of_node
     82static inline const struct cpumask *cpumask_of_node(int node)
     83{
     84	return cpu_possible_mask;
     85}
     86
     87#define pcibus_to_node(bus) __pcibus_to_node(bus)
     88
     89#else /* !CONFIG_NUMA */
     90
     91#define numa_node_id numa_node_id
     92static inline int numa_node_id(void)
     93{
     94	return 0;
     95}
     96
     97#endif /* CONFIG_NUMA */
     98
     99#include <asm-generic/topology.h>
    100
    101#endif /* _ASM_S390_TOPOLOGY_H */