提交 8400def8 编写于 作者: J Jack Steiner 提交者: Ingo Molnar

x86: define the macros and tables for blade functions

Add UV macros for converting between cpu numbers, blade numbers
and node numbers. Note that these are used ONLY within x86_64 UV
modules, and are not for general kernel use.
Signed-off-by: NJack Steiner <steiner@sgi.com>
Signed-off-by: NIngo Molnar <mingo@elte.hu>
上级 952cf6d7
......@@ -206,5 +206,79 @@ static inline void uv_write_local_mmr(unsigned long offset, unsigned long val)
*uv_local_mmr_address(offset) = val;
}
/*
* Structures and definitions for converting between cpu, node, and blade
* numbers.
*/
struct uv_blade_info {
unsigned short nr_posible_cpus;
unsigned short nr_online_cpus;
unsigned short nasid;
};
struct uv_blade_info *uv_blade_info;
extern short *uv_node_to_blade;
extern short *uv_cpu_to_blade;
extern short uv_possible_blades;
/* Blade-local cpu number of current cpu. Numbered 0 .. <# cpus on the blade> */
static inline int uv_blade_processor_id(void)
{
return uv_hub_info->blade_processor_id;
}
/* Blade number of current cpu. Numnbered 0 .. <#blades -1> */
static inline int uv_numa_blade_id(void)
{
return uv_hub_info->numa_blade_id;
}
/* Convert a cpu number to the the UV blade number */
static inline int uv_cpu_to_blade_id(int cpu)
{
return uv_cpu_to_blade[cpu];
}
/* Convert linux node number to the UV blade number */
static inline int uv_node_to_blade_id(int nid)
{
return uv_node_to_blade[nid];
}
/* Convert a blade id to the NASID of the blade */
static inline int uv_blade_to_nasid(int bid)
{
return uv_blade_info[bid].nasid;
}
/* Determine the number of possible cpus on a blade */
static inline int uv_blade_nr_possible_cpus(int bid)
{
return uv_blade_info[bid].nr_posible_cpus;
}
/* Determine the number of online cpus on a blade */
static inline int uv_blade_nr_online_cpus(int bid)
{
return uv_blade_info[bid].nr_online_cpus;
}
/* Convert a cpu id to the NASID of the blade containing the cpu */
static inline int uv_cpu_to_nasid(int cpu)
{
return uv_blade_info[uv_cpu_to_blade_id(cpu)].nasid;
}
/* Convert a node number to the NASID of the blade */
static inline int uv_node_to_nasid(int nid)
{
return uv_blade_info[uv_node_to_blade_id(nid)].nasid;
}
/* Maximum possible number of blades */
static inline int uv_num_possible_blades(void)
{
return uv_possible_blades;
}
#endif /* __ASM_X86_UV_HUB__ */
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册