PageRenderTime 23ms CodeModel.GetById 18ms app.highlight 4ms RepoModel.GetById 0ms app.codeStats 0ms

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

https://bitbucket.org/abioy/linux
C Header | 112 lines | 87 code | 24 blank | 1 comment | 2 complexity | 893970c8e898faf8d7c71961a9c23a95 MD5 | raw file
Possible License(s): CC-BY-SA-3.0, GPL-2.0, LGPL-2.0, AGPL-1.0
  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) ((node) == -1 ?				\
 21			       cpu_all_mask :				\
 22			       &numa_cpumask_lookup_table[node])
 23
 24int of_node_to_nid(struct device_node *device);
 25
 26struct pci_bus;
 27#ifdef CONFIG_PCI
 28extern int pcibus_to_node(struct pci_bus *bus);
 29#else
 30static inline int pcibus_to_node(struct pci_bus *bus)
 31{
 32	return -1;
 33}
 34#endif
 35
 36#define cpumask_of_pcibus(bus)	(pcibus_to_node(bus) == -1 ?		\
 37				 cpu_all_mask :				\
 38				 cpumask_of_node(pcibus_to_node(bus)))
 39
 40/* sched_domains SD_NODE_INIT for PPC64 machines */
 41#define SD_NODE_INIT (struct sched_domain) {				\
 42	.min_interval		= 8,					\
 43	.max_interval		= 32,					\
 44	.busy_factor		= 32,					\
 45	.imbalance_pct		= 125,					\
 46	.cache_nice_tries	= 1,					\
 47	.busy_idx		= 3,					\
 48	.idle_idx		= 1,					\
 49	.newidle_idx		= 0,					\
 50	.wake_idx		= 0,					\
 51	.forkexec_idx		= 0,					\
 52									\
 53	.flags			= 1*SD_LOAD_BALANCE			\
 54				| 1*SD_BALANCE_NEWIDLE			\
 55				| 1*SD_BALANCE_EXEC			\
 56				| 1*SD_BALANCE_FORK			\
 57				| 0*SD_BALANCE_WAKE			\
 58				| 0*SD_WAKE_AFFINE			\
 59				| 0*SD_PREFER_LOCAL			\
 60				| 0*SD_SHARE_CPUPOWER			\
 61				| 0*SD_POWERSAVINGS_BALANCE		\
 62				| 0*SD_SHARE_PKG_RESOURCES		\
 63				| 1*SD_SERIALIZE			\
 64				| 0*SD_PREFER_SIBLING			\
 65				,					\
 66	.last_balance		= jiffies,				\
 67	.balance_interval	= 1,					\
 68}
 69
 70extern void __init dump_numa_cpu_topology(void);
 71
 72extern int sysfs_add_device_to_node(struct sys_device *dev, int nid);
 73extern void sysfs_remove_device_from_node(struct sys_device *dev, int nid);
 74
 75#else
 76
 77static inline int of_node_to_nid(struct device_node *device)
 78{
 79	return 0;
 80}
 81
 82static inline void dump_numa_cpu_topology(void) {}
 83
 84static inline int sysfs_add_device_to_node(struct sys_device *dev, int nid)
 85{
 86	return 0;
 87}
 88
 89static inline void sysfs_remove_device_from_node(struct sys_device *dev,
 90						int nid)
 91{
 92}
 93
 94#endif /* CONFIG_NUMA */
 95
 96#include <asm-generic/topology.h>
 97
 98#ifdef CONFIG_SMP
 99#include <asm/cputable.h>
100#define smt_capable()		(cpu_has_feature(CPU_FTR_SMT))
101
102#ifdef CONFIG_PPC64
103#include <asm/smp.h>
104
105#define topology_thread_cpumask(cpu)	(&per_cpu(cpu_sibling_map, cpu))
106#define topology_core_cpumask(cpu)	(&per_cpu(cpu_core_map, cpu))
107#define topology_core_id(cpu)		(cpu_to_core_id(cpu))
108#endif
109#endif
110
111#endif /* __KERNEL__ */
112#endif	/* _ASM_POWERPC_TOPOLOGY_H */