File 19571-x86-numa-shift.patch of Package xen

# HG changeset patch
# User Keir Fraser <keir.fraser@citrix.com>
# Date 1240485689 -3600
# Node ID 3ccd0f0dba5bc3491095bc0f72f41e17190eacf8
# Parent  855e2f5ddb6702fddc4fb5afa15a323d8ef93c48
x86 numa: Fix left shift overflows

Signed-off-by: Yang Xiaowei <xiaowei.yang@intel.com>

--- a/xen/arch/x86/numa.c
+++ b/xen/arch/x86/numa.c
@@ -74,7 +74,7 @@ populate_memnodemap(const struct node *n
 			if (memnodemap[addr >> shift] != 0xff)
 				return -1;
 			memnodemap[addr >> shift] = i;
-			addr += (1UL << shift);
+			addr += (1ULL << shift);
 		} while (addr < end);
 		res = 1;
 	} 
@@ -290,7 +290,7 @@ static void dump_numa(unsigned char key)
 		  (u32)(now>>32), (u32)now);
 
 	for_each_online_node(i) {
-		paddr_t pa = (NODE_DATA(i)->node_start_pfn + 1)<< PAGE_SHIFT;
+		paddr_t pa = (paddr_t)(NODE_DATA(i)->node_start_pfn + 1)<< PAGE_SHIFT;
 		printk("idx%d -> NODE%d start->%lu size->%lu\n",
 			  i, NODE_DATA(i)->node_id,
 			  NODE_DATA(i)->node_start_pfn,
@@ -314,7 +314,7 @@ static void dump_numa(unsigned char key)
 
 		page_list_for_each(page, &d->page_list)
 		{
-			i = phys_to_nid(page_to_mfn(page) << PAGE_SHIFT);
+			i = phys_to_nid((paddr_t)page_to_mfn(page) << PAGE_SHIFT);
 			page_num_node[i]++;
 		}
 
openSUSE Build Service is sponsored by