[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20090420132530.GA23156@sgi.com>
Date: Mon, 20 Apr 2009 08:25:31 -0500
From: Jack Steiner <steiner@....com>
To: mingo@...e.hu, tglx@...utronix.de
Cc: linux-kernel@...r.kernel.org
Subject: [PATCH] x86/uv - fix for no memory at paddr 0
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@....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;
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists