X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Fasm-i386%2Ftopology.h;h=ac58580ad6647a86d30dd4ae5928c4c1b87a26ca;hb=97bf2856c6014879bd04983a3e9dfcdac1e7fe85;hp=cb8ab74077c2c58e60067a61c8ffcf166a95c2e1;hpb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;p=linux-2.6.git diff --git a/include/asm-i386/topology.h b/include/asm-i386/topology.h index cb8ab7407..ac58580ad 100644 --- a/include/asm-i386/topology.h +++ b/include/asm-i386/topology.h @@ -27,6 +27,13 @@ #ifndef _ASM_I386_TOPOLOGY_H #define _ASM_I386_TOPOLOGY_H +#ifdef CONFIG_X86_HT +#define topology_physical_package_id(cpu) (cpu_data[cpu].phys_proc_id) +#define topology_core_id(cpu) (cpu_data[cpu].cpu_core_id) +#define topology_core_siblings(cpu) (cpu_core_map[cpu]) +#define topology_thread_siblings(cpu) (cpu_sibling_map[cpu]) +#endif + #ifdef CONFIG_NUMA #include @@ -60,17 +67,40 @@ static inline int node_to_first_cpu(int node) return first_cpu(mask); } -/* Returns the number of the node containing PCI bus 'bus' */ -static inline cpumask_t pcibus_to_cpumask(int bus) -{ - return node_to_cpumask(mp_bus_id_to_node[bus]); +#define pcibus_to_node(bus) ((long) (bus)->sysdata) +#define pcibus_to_cpumask(bus) node_to_cpumask(pcibus_to_node(bus)) + +/* sched_domains SD_NODE_INIT for NUMAQ machines */ +#define SD_NODE_INIT (struct sched_domain) { \ + .span = CPU_MASK_NONE, \ + .parent = NULL, \ + .child = NULL, \ + .groups = NULL, \ + .min_interval = 8, \ + .max_interval = 32, \ + .busy_factor = 32, \ + .imbalance_pct = 125, \ + .cache_nice_tries = 1, \ + .busy_idx = 3, \ + .idle_idx = 1, \ + .newidle_idx = 2, \ + .wake_idx = 1, \ + .per_cpu_gain = 100, \ + .flags = SD_LOAD_BALANCE \ + | SD_BALANCE_EXEC \ + | SD_BALANCE_FORK \ + | SD_SERIALIZE \ + | SD_WAKE_BALANCE, \ + .last_balance = jiffies, \ + .balance_interval = 1, \ + .nr_balance_failed = 0, \ } -/* Node-to-Node distance */ -#define node_distance(from, to) ((from) != (to)) +extern unsigned long node_start_pfn[]; +extern unsigned long node_end_pfn[]; +extern unsigned long node_remap_size[]; -/* Cross-node load balancing interval. */ -#define NODE_BALANCE_RATE 100 +#define node_has_online_mem(nid) (node_start_pfn[nid] != node_end_pfn[nid]) #else /* !CONFIG_NUMA */ /* @@ -82,4 +112,11 @@ static inline cpumask_t pcibus_to_cpumask(int bus) #endif /* CONFIG_NUMA */ +extern cpumask_t cpu_coregroup_map(int cpu); + +#ifdef CONFIG_SMP +#define mc_capable() (boot_cpu_data.x86_max_cores > 1) +#define smt_capable() (smp_num_siblings > 1) +#endif + #endif /* _ASM_I386_TOPOLOGY_H */