1 #ifndef _ASM_POWERPC_TOPOLOGY_H 2 #define _ASM_POWERPC_TOPOLOGY_H 3 #ifdef __KERNEL__ 4 5 6 struct sys_device; 7 struct device_node; 8 9 #ifdef CONFIG_NUMA 10 11 #include <asm/mmzone.h> 12 13 static 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 22 int of_node_to_nid(struct device_node *device); 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 /* 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 62 extern void __init dump_numa_cpu_topology(void); 63 64 extern int sysfs_add_device_to_node(struct sys_device *dev, int nid); 65 extern void sysfs_remove_device_from_node(struct sys_device *dev, int nid); 66 67 #else 68 69 static inline int of_node_to_nid(struct device_node *device) 70 { 71 return 0; 72 } 73 74 static inline void dump_numa_cpu_topology(void) {} 75 76 static inline int sysfs_add_device_to_node(struct sys_device *dev, int nid) 77 { 78 return 0; 79 } 80 81 static 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