linux/arch/powerpc/include/asm/topology.h
<<
>>
Prefs
   1#ifndef _ASM_POWERPC_TOPOLOGY_H
   2#define _ASM_POWERPC_TOPOLOGY_H
   3#ifdef __KERNEL__
   4
   5
   6struct sys_device;
   7struct device_node;
   8
   9#ifdef CONFIG_NUMA
  10
  11#include <asm/mmzone.h>
  12
  13static inline int cpu_to_node(int cpu)
  14{
  15        return numa_cpu_lookup_table[cpu];
  16}
  17
  18#define parent_node(node)       (node)
  19
  20static inline cpumask_t node_to_cpumask(int node)
  21{
  22        return numa_cpumask_lookup_table[node];
  23}
  24
  25#define cpumask_of_node(node) (&numa_cpumask_lookup_table[node])
  26
  27int of_node_to_nid(struct device_node *device);
  28
  29struct pci_bus;
  30#ifdef CONFIG_PCI
  31extern int pcibus_to_node(struct pci_bus *bus);
  32#else
  33static inline int pcibus_to_node(struct pci_bus *bus)
  34{
  35        return -1;
  36}
  37#endif
  38
  39#define pcibus_to_cpumask(bus)  (pcibus_to_node(bus) == -1 ? \
  40                                        CPU_MASK_ALL : \
  41                                        node_to_cpumask(pcibus_to_node(bus)) \
  42                                )
  43
  44#define cpumask_of_pcibus(bus)  (pcibus_to_node(bus) == -1 ?            \
  45                                 cpu_all_mask :                         \
  46                                 cpumask_of_node(pcibus_to_node(bus)))
  47
  48/* sched_domains SD_NODE_INIT for PPC64 machines */
  49#define SD_NODE_INIT (struct sched_domain) {            \
  50        .parent                 = NULL,                 \
  51        .child                  = NULL,                 \
  52        .groups                 = NULL,                 \
  53        .min_interval           = 8,                    \
  54        .max_interval           = 32,                   \
  55        .busy_factor            = 32,                   \
  56        .imbalance_pct          = 125,                  \
  57        .cache_nice_tries       = 1,                    \
  58        .busy_idx               = 3,                    \
  59        .idle_idx               = 1,                    \
  60        .newidle_idx            = 2,                    \
  61        .wake_idx               = 1,                    \
  62        .flags                  = SD_LOAD_BALANCE       \
  63                                | SD_BALANCE_EXEC       \
  64                                | SD_BALANCE_NEWIDLE    \
  65                                | SD_WAKE_IDLE          \
  66                                | SD_SERIALIZE          \
  67                                | SD_WAKE_BALANCE,      \
  68        .last_balance           = jiffies,              \
  69        .balance_interval       = 1,                    \
  70        .nr_balance_failed      = 0,                    \
  71}
  72
  73extern void __init dump_numa_cpu_topology(void);
  74
  75extern int sysfs_add_device_to_node(struct sys_device *dev, int nid);
  76extern void sysfs_remove_device_from_node(struct sys_device *dev, int nid);
  77
  78#else
  79
  80static inline int of_node_to_nid(struct device_node *device)
  81{
  82        return 0;
  83}
  84
  85static inline void dump_numa_cpu_topology(void) {}
  86
  87static inline int sysfs_add_device_to_node(struct sys_device *dev, int nid)
  88{
  89        return 0;
  90}
  91
  92static inline void sysfs_remove_device_from_node(struct sys_device *dev,
  93                                                int nid)
  94{
  95}
  96
  97#endif /* CONFIG_NUMA */
  98
  99#include <asm-generic/topology.h>
 100
 101#ifdef CONFIG_SMP
 102#include <asm/cputable.h>
 103#define smt_capable()           (cpu_has_feature(CPU_FTR_SMT))
 104
 105#ifdef CONFIG_PPC64
 106#include <asm/smp.h>
 107
 108#define topology_thread_siblings(cpu)   (per_cpu(cpu_sibling_map, cpu))
 109#define topology_core_siblings(cpu)     (per_cpu(cpu_core_map, cpu))
 110#define topology_thread_cpumask(cpu)    (&per_cpu(cpu_sibling_map, cpu))
 111#define topology_core_cpumask(cpu)      (&per_cpu(cpu_core_map, cpu))
 112#define topology_core_id(cpu)           (cpu_to_core_id(cpu))
 113#endif
 114#endif
 115
 116#endif /* __KERNEL__ */
 117#endif  /* _ASM_POWERPC_TOPOLOGY_H */
 118