root/arch/powerpc/include/asm/topology.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. pcibus_to_node
  2. update_numa_cpu_lookup_table
  3. early_cpu_to_node
  4. early_cpu_to_node
  5. dump_numa_cpu_topology
  6. sysfs_add_device_to_node
  7. sysfs_remove_device_from_node
  8. numa_update_cpu_topology
  9. update_numa_cpu_lookup_table
  10. cpu_distance
  11. start_topology_update
  12. stop_topology_update
  13. prrn_is_enabled
  14. find_and_online_cpu_nid
  15. timed_topology_update
  16. shared_proc_topology_init

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #ifndef _ASM_POWERPC_TOPOLOGY_H
   3 #define _ASM_POWERPC_TOPOLOGY_H
   4 #ifdef __KERNEL__
   5 
   6 
   7 struct device;
   8 struct device_node;
   9 
  10 #ifdef CONFIG_NUMA
  11 
  12 /*
  13  * If zone_reclaim_mode is enabled, a RECLAIM_DISTANCE of 10 will mean that
  14  * all zones on all nodes will be eligible for zone_reclaim().
  15  */
  16 #define RECLAIM_DISTANCE 10
  17 
  18 #include <asm/mmzone.h>
  19 
  20 #define cpumask_of_node(node) ((node) == -1 ?                           \
  21                                cpu_all_mask :                           \
  22                                node_to_cpumask_map[node])
  23 
  24 struct pci_bus;
  25 #ifdef CONFIG_PCI
  26 extern int pcibus_to_node(struct pci_bus *bus);
  27 #else
  28 static inline int pcibus_to_node(struct pci_bus *bus)
  29 {
  30         return -1;
  31 }
  32 #endif
  33 
  34 #define cpumask_of_pcibus(bus)  (pcibus_to_node(bus) == -1 ?            \
  35                                  cpu_all_mask :                         \
  36                                  cpumask_of_node(pcibus_to_node(bus)))
  37 
  38 extern int cpu_distance(__be32 *cpu1_assoc, __be32 *cpu2_assoc);
  39 extern int __node_distance(int, int);
  40 #define node_distance(a, b) __node_distance(a, b)
  41 
  42 extern void __init dump_numa_cpu_topology(void);
  43 
  44 extern int sysfs_add_device_to_node(struct device *dev, int nid);
  45 extern void sysfs_remove_device_from_node(struct device *dev, int nid);
  46 extern int numa_update_cpu_topology(bool cpus_locked);
  47 
  48 static inline void update_numa_cpu_lookup_table(unsigned int cpu, int node)
  49 {
  50         numa_cpu_lookup_table[cpu] = node;
  51 }
  52 
  53 static inline int early_cpu_to_node(int cpu)
  54 {
  55         int nid;
  56 
  57         nid = numa_cpu_lookup_table[cpu];
  58 
  59         /*
  60          * Fall back to node 0 if nid is unset (it should be, except bugs).
  61          * This allows callers to safely do NODE_DATA(early_cpu_to_node(cpu)).
  62          */
  63         return (nid < 0) ? 0 : nid;
  64 }
  65 #else
  66 
  67 static inline int early_cpu_to_node(int cpu) { return 0; }
  68 
  69 static inline void dump_numa_cpu_topology(void) {}
  70 
  71 static inline int sysfs_add_device_to_node(struct device *dev, int nid)
  72 {
  73         return 0;
  74 }
  75 
  76 static inline void sysfs_remove_device_from_node(struct device *dev,
  77                                                 int nid)
  78 {
  79 }
  80 
  81 static inline int numa_update_cpu_topology(bool cpus_locked)
  82 {
  83         return 0;
  84 }
  85 
  86 static inline void update_numa_cpu_lookup_table(unsigned int cpu, int node) {}
  87 
  88 static inline int cpu_distance(__be32 *cpu1_assoc, __be32 *cpu2_assoc)
  89 {
  90         return 0;
  91 }
  92 
  93 #endif /* CONFIG_NUMA */
  94 
  95 #if defined(CONFIG_NUMA) && defined(CONFIG_PPC_SPLPAR)
  96 extern int start_topology_update(void);
  97 extern int stop_topology_update(void);
  98 extern int prrn_is_enabled(void);
  99 extern int find_and_online_cpu_nid(int cpu);
 100 extern int timed_topology_update(int nsecs);
 101 extern void __init shared_proc_topology_init(void);
 102 #else
 103 static inline int start_topology_update(void)
 104 {
 105         return 0;
 106 }
 107 static inline int stop_topology_update(void)
 108 {
 109         return 0;
 110 }
 111 static inline int prrn_is_enabled(void)
 112 {
 113         return 0;
 114 }
 115 static inline int find_and_online_cpu_nid(int cpu)
 116 {
 117         return 0;
 118 }
 119 static inline int timed_topology_update(int nsecs)
 120 {
 121         return 0;
 122 }
 123 
 124 #ifdef CONFIG_SMP
 125 static inline void shared_proc_topology_init(void) {}
 126 #endif
 127 #endif /* CONFIG_NUMA && CONFIG_PPC_SPLPAR */
 128 
 129 #include <asm-generic/topology.h>
 130 
 131 #ifdef CONFIG_SMP
 132 #include <asm/cputable.h>
 133 
 134 #ifdef CONFIG_PPC64
 135 #include <asm/smp.h>
 136 
 137 #define topology_physical_package_id(cpu)       (cpu_to_chip_id(cpu))
 138 #define topology_sibling_cpumask(cpu)   (per_cpu(cpu_sibling_map, cpu))
 139 #define topology_core_cpumask(cpu)      (per_cpu(cpu_core_map, cpu))
 140 #define topology_core_id(cpu)           (cpu_to_core_id(cpu))
 141 
 142 int dlpar_cpu_readd(int cpu);
 143 #endif
 144 #endif
 145 
 146 #endif /* __KERNEL__ */
 147 #endif  /* _ASM_POWERPC_TOPOLOGY_H */

/* [<][>][^][v][top][bottom][index][help] */