* [PATCH] x86/uv - fix for no memory at paddr 0
@ 2009-04-20 13:25 Jack Steiner
2009-04-20 16:12 ` [tip:x86/urgent] x86/uv: " tip-bot for Jack Steiner
0 siblings, 1 reply; 2+ messages in thread
From: Jack Steiner @ 2009-04-20 13:25 UTC (permalink / raw)
To: mingo, tglx; +Cc: linux-kernel
x86/uv: fix for no memory at paddr 0
Fix endcase where the memory at physical address 0 does not really
exist AND one of the sockets on blade 0 has no active cpus.
The memory that _appears_ to be at physical address 0 is actually
memory that located at a different address but has been remapped by
the chipset so that it appears to be at physical address 0.
When determining the UV pnode, the algorithm for determining the pnode
incorrectly used the relocated physical address instead of the actual
(global) address.
[ Impact: boot failure on partitioned systems ]
Signed-off-by: Jack Steiner <steiner@sgi.com>
---
arch/x86/kernel/apic/x2apic_uv_x.c | 1 +
1 file changed, 1 insertion(+)
Index: linux/arch/x86/kernel/apic/x2apic_uv_x.c
===================================================================
--- linux.orig/arch/x86/kernel/apic/x2apic_uv_x.c 2009-04-13 11:22:12.000000000 -0500
+++ linux/arch/x86/kernel/apic/x2apic_uv_x.c 2009-04-13 11:22:46.000000000 -0500
@@ -652,6 +652,7 @@ void __init uv_system_init(void)
if (uv_node_to_blade[nid] >= 0)
continue;
paddr = node_start_pfn(nid) << PAGE_SHIFT;
+ paddr = uv_soc_phys_ram_to_gpa(paddr);
pnode = (paddr >> m_val) & pnode_mask;
blade = boot_pnode_to_blade(pnode);
uv_node_to_blade[nid] = blade;
^ permalink raw reply [flat|nested] 2+ messages in thread
* [tip:x86/urgent] x86/uv: fix for no memory at paddr 0
2009-04-20 13:25 [PATCH] x86/uv - fix for no memory at paddr 0 Jack Steiner
@ 2009-04-20 16:12 ` tip-bot for Jack Steiner
0 siblings, 0 replies; 2+ messages in thread
From: tip-bot for Jack Steiner @ 2009-04-20 16:12 UTC (permalink / raw)
To: linux-tip-commits; +Cc: linux-kernel, hpa, mingo, steiner, tglx, mingo
Commit-ID: fc61e6636d13eb3a23eb29b4327eeee9de0ef3bc
Gitweb: http://git.kernel.org/tip/fc61e6636d13eb3a23eb29b4327eeee9de0ef3bc
Author: Jack Steiner <steiner@sgi.com>
AuthorDate: Mon, 20 Apr 2009 08:25:31 -0500
Committer: Ingo Molnar <mingo@elte.hu>
CommitDate: Mon, 20 Apr 2009 18:09:18 +0200
x86/uv: fix for no memory at paddr 0
Fix endcase where the memory at physical address 0 does not really
exist AND one of the sockets on blade 0 has no active cpus.
The memory that _appears_ to be at physical address 0 is actually
memory that located at a different address but has been remapped by
the chipset so that it appears to be at physical address 0.
When determining the UV pnode, the algorithm for determining the pnode
incorrectly used the relocated physical address instead of the actual
(global) address.
[ Impact: boot failure on partitioned systems ]
Signed-off-by: Jack Steiner <steiner@sgi.com>
LKML-Reference: <20090420132530.GA23156@sgi.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
arch/x86/kernel/apic/x2apic_uv_x.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c
index d671233..2bda693 100644
--- a/arch/x86/kernel/apic/x2apic_uv_x.c
+++ b/arch/x86/kernel/apic/x2apic_uv_x.c
@@ -652,6 +652,7 @@ void __init uv_system_init(void)
if (uv_node_to_blade[nid] >= 0)
continue;
paddr = node_start_pfn(nid) << PAGE_SHIFT;
+ paddr = uv_soc_phys_ram_to_gpa(paddr);
pnode = (paddr >> m_val) & pnode_mask;
blade = boot_pnode_to_blade(pnode);
uv_node_to_blade[nid] = blade;
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2009-04-20 16:13 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-04-20 13:25 [PATCH] x86/uv - fix for no memory at paddr 0 Jack Steiner
2009-04-20 16:12 ` [tip:x86/urgent] x86/uv: " tip-bot for Jack Steiner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).