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
  20#define cpumask_of_node(node) (&numa_cpumask_lookup_table[node])
  21
  22int of_node_to_nid(struct device_node *device);
  23
  24struct pci_bus;
  25#ifdef CONFIG_PCI
  26extern int pcibus_to_node(struct pci_bus *bus);
  27#else
  28static 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/* sched_domains SD_NODE_INIT for PPC64 machines */
  39#define SD_NODE_INIT (struct sched_domain) {            \
  40        .parent                 = NULL,                 \
  41        .child                  = NULL,                 \
  42        .groups                 = NULL,                 \
  43        .min_interval           = 8,                    \
  44        .max_interval           = 32,                   \
  45        .busy_factor            = 32,                   \
  46        .imbalance_pct          = 125,                  \
  47        .cache_nice_tries       = 1,                    \
  48        .busy_idx               = 3,                    \
  49        .idle_idx               = 1,                    \
  50        .newidle_idx            = 0,                    \
  51        .wake_idx               = 0,                    \
  52        .flags                  = SD_LOAD_BALANCE       \
  53                                | SD_BALANCE_EXEC       \
  54                                | SD_BALANCE_FORK       \
  55                                | SD_BALANCE_NEWIDLE    \
  56                                | SD_SERIALIZE,         \
  57        .last_balance           = jiffies,              \
  58        .balance_interval       = 1,                    \
  59        .nr_balance_failed      = 0,                    \
  60}
  61
  62extern void __init dump_numa_cpu_topology(void);
  63
  64extern int sysfs_add_device_to_node(struct sys_device *dev, int nid);
  65extern void sysfs_remove_device_from_node(struct sys_device *dev, int nid);
  66
  67#else
  68
  69static inline int of_node_to_nid(struct device_node *device)
  70{
  71        return 0;
  72}
  73
  74static inline void dump_numa_cpu_topology(void) {}
  75
  76static inline int sysfs_add_device_to_node(struct sys_device *dev, int nid)
  77{
  78        return 0;
  79}
  80
  81static inline void sysfs_remove_device_from_node(struct sys_device *dev,
  82                                                int nid)
  83{
  84}
  85
  86#endif /* CONFIG_NUMA */
  87
  88#include <asm-generic/topology.h>
  89
  90#ifdef CONFIG_SMP
  91#include <asm/cputable.h>
  92#define smt_capable()           (cpu_has_feature(CPU_FTR_SMT))
  93
  94#ifdef CONFIG_PPC64
  95#include <asm/smp.h>
  96
  97#define topology_thread_cpumask(cpu)    (&per_cpu(cpu_sibling_map, cpu))
  98#define topology_core_cpumask(cpu)      (&per_cpu(cpu_core_map, cpu))
  99#define topology_core_id(cpu)           (cpu_to_core_id(cpu))
 100#endif
 101#endif
 102
 103#endif /* __KERNEL__ */
 104#endif  /* _ASM_POWERPC_TOPOLOGY_H */
 105