11 #include <linux/module.h>
14 #include <asm/uv/uv_mmrs.h>
15 #include <asm/uv/uv_hub.h>
20 #ifdef CONFIG_IA64_SGI_UV
35 #define DEST_SHIFT UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_0_MMR_DEST_BASE_SHFT
43 static __init void get_lowmem_redirect(
unsigned long *base,
unsigned long *
size)
49 for (i = 0; i <
ARRAY_SIZE(redir_addrs); i++) {
50 alias.v = uv_read_local_mmr(redir_addrs[i].
alias);
51 if (
alias.s.base == 0) {
52 *size = (1
UL <<
alias.s.m_alias);
53 redirect.v = uv_read_local_mmr(redir_addrs[i].redirect);
65 unsigned long gnode_upper;
66 int nid,
cpu, m_val, n_val;
67 unsigned long mmr_base, lowmem_redir_base, lowmem_redir_size;
70 lowmem_redir_base = 0;
71 lowmem_redir_size = 0;
73 m_n_config.
s.m_skt = 37;
74 m_n_config.
s.n_skt = 0;
78 if (!ia64_sn_is_fake_prom())
86 get_lowmem_redirect(&lowmem_redir_base, &lowmem_redir_size);
94 m_val = m_n_config.
s.m_skt;
95 n_val = m_n_config.
s.n_skt;
98 gnode_upper = (((
unsigned long)node_id.
s.node_id) &
99 ~((1 << n_val) - 1)) << m_val;
105 lowmem_redir_base + lowmem_redir_size;