x86, UV: blade-local memory
Subsystems (3)
PATCH 1/1 x86, UV: blade-local memory
UV blades may not have any blade-local memory. Add a field (nid) to the UV blade structure to indicates whether the node has local memory. This is needed by the GRU driver (pushed separately).
--- arch/x86/include/asm/uv/uv_hub.h | 7 +++++++ arch/x86/kernel/apic/x2apic_uv_x.c | 5 +++++ 2 files changed, 12 insertions(+)
arch/x86/include/asm/uv/uv_hub.h +7 -0
@@ -327,6 +327,7 @@ struct uv_blade_info {unsigned short nr_possible_cpus;unsigned short nr_online_cpus;unsigned short pnode; +short memory_nid; };extern struct uv_blade_info *uv_blade_info;extern short *uv_node_to_blade;
@@ -363,6 +364,12 @@ static inline int uv_blade_to_pnode(intreturn uv_blade_info[bid].pnode; } +/* Nid of memory node on blade. -1 if no blade-local memory */ +static inline int uv_blade_to_memory_nid (int bid) +{ +return uv_blade_info[bid].memory_nid; +} +/* Determine the number of possible cpus on a blade */ static inline int uv_blade_nr_possible_cpus (int bid) {
arch/x86/kernel/apic/x2apic_uv_x.c +5 -0
@@ -592,6 +592,8 @@ void __init uv_system_init(void) bytes =sizeof (struct uv_blade_info ) *uv_num_possible_blades (); uv_blade_info =kmalloc (bytes,GFP_KERNEL );BUG_ON (!uv_blade_info); +for (blade =0 ; blade <uv_num_possible_blades (); blade++) + uv_blade_info[blade].memory_nid =-1 ;get_lowmem_redirect (&lowmem_redir_base, &lowmem_redir_size);
@@ -630,6 +632,9 @@ void __init uv_system_init(void) lcpu = uv_blade_info[blade].nr_possible_cpus; uv_blade_info[blade].nr_possible_cpus++; +/* Any node on the blade, else will contain -1. */ + uv_blade_info[blade].memory_nid = nid; +uv_cpu_hub_info (cpu)->lowmem_remap_base = lowmem_redir_base;uv_cpu_hub_info (cpu)->lowmem_remap_top = lowmem_redir_size;uv_cpu_hub_info (cpu)->m_val = m_val;
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
[tip:x86/urgent] x86, UV: Handle missing blade-local memory correctly
Commit-ID: 6c7184b77464261b7d55583a48accbd1350923a3 Gitweb: http://git.kernel.org/tip/6c7184b77464261b7d55583a48accbd1350923a3 Author: Jack Steiner <[email protected]> AuthorDate: Mon, 27 Jul 2009 09:35:07 -0500 Committer: Ingo Molnar <[email protected]> CommitDate: Tue, 4 Aug 2009 16:18:01 +0200
x86, UV: Handle missing blade-local memory correctly
UV blades may not have any blade-local memory. Add a field (nid) to the UV blade structure to indicates whether the node has local memory. This is needed by the GRU driver (pushed separately).
LKML-Reference: <[email protected]>
--- arch/x86/include/asm/uv/uv_hub.h | 7 +++++++ arch/x86/kernel/apic/x2apic_uv_x.c | 5 +++++ 2 files changed, 12 insertions(+), 0 deletions(-)
arch/x86/include/asm/uv/uv_hub.h +7 -0
@@ -327,6 +327,7 @@ struct uv_blade_info {unsigned short nr_possible_cpus;unsigned short nr_online_cpus;unsigned short pnode; +short memory_nid; };extern struct uv_blade_info *uv_blade_info;extern short *uv_node_to_blade;
@@ -363,6 +364,12 @@ static inline int uv_blade_to_pnode(int bid)return uv_blade_info[bid].pnode; } +/* Nid of memory node on blade. -1 if no blade-local memory */ +static inline int uv_blade_to_memory_nid (int bid) +{ +return uv_blade_info[bid].memory_nid; +} +/* Determine the number of possible cpus on a blade */ static inline int uv_blade_nr_possible_cpus (int bid) {
arch/x86/kernel/apic/x2apic_uv_x.c +5 -0
@@ -591,6 +591,8 @@ void __init uv_system_init(void) bytes =sizeof (struct uv_blade_info ) *uv_num_possible_blades (); uv_blade_info =kmalloc (bytes,GFP_KERNEL );BUG_ON (!uv_blade_info); +for (blade =0 ; blade <uv_num_possible_blades (); blade++) + uv_blade_info[blade].memory_nid =-1 ;get_lowmem_redirect (&lowmem_redir_base, &lowmem_redir_size);
@@ -629,6 +631,9 @@ void __init uv_system_init(void) lcpu = uv_blade_info[blade].nr_possible_cpus; uv_blade_info[blade].nr_possible_cpus++; +/* Any node on the blade, else will contain -1. */ + uv_blade_info[blade].memory_nid = nid; +uv_cpu_hub_info (cpu)->lowmem_remap_base = lowmem_redir_base;uv_cpu_hub_info (cpu)->lowmem_remap_top = lowmem_redir_size;uv_cpu_hub_info (cpu)->m_val = m_val;