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