Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 365421
b: refs/heads/master
c: 7c243c7
h: refs/heads/master
i:
  365419: 28c1a08
v: v3
  • Loading branch information
Russ Anderson authored and Linus Torvalds committed Apr 29, 2013
1 parent 96bd35e commit 2275b9c
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 3 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: fed5b64a95326697f942f5003c138c7ff3043ef5
refs/heads/master: 7c243c7168dcc1bc2081fc0494923cd7cc808fb6
15 changes: 14 additions & 1 deletion trunk/arch/ia64/mm/numa.c
Original file line number Diff line number Diff line change
Expand Up @@ -61,13 +61,26 @@ paddr_to_nid(unsigned long paddr)
int __meminit __early_pfn_to_nid(unsigned long pfn)
{
int i, section = pfn >> PFN_SECTION_SHIFT, ssec, esec;
/*
* NOTE: The following SMP-unsafe globals are only used early in boot
* when the kernel is running single-threaded.
*/
static int __meminitdata last_ssec, last_esec;
static int __meminitdata last_nid;

if (section >= last_ssec && section < last_esec)
return last_nid;

for (i = 0; i < num_node_memblks; i++) {
ssec = node_memblk[i].start_paddr >> PA_SECTION_SHIFT;
esec = (node_memblk[i].start_paddr + node_memblk[i].size +
((1L << PA_SECTION_SHIFT) - 1)) >> PA_SECTION_SHIFT;
if (section >= ssec && section < esec)
if (section >= ssec && section < esec) {
last_ssec = ssec;
last_esec = esec;
last_nid = node_memblk[i].nid;
return node_memblk[i].nid;
}
}

return -1;
Expand Down
15 changes: 14 additions & 1 deletion trunk/mm/page_alloc.c
Original file line number Diff line number Diff line change
Expand Up @@ -4187,10 +4187,23 @@ int __meminit __early_pfn_to_nid(unsigned long pfn)
{
unsigned long start_pfn, end_pfn;
int i, nid;
/*
* NOTE: The following SMP-unsafe globals are only used early in boot
* when the kernel is running single-threaded.
*/
static unsigned long __meminitdata last_start_pfn, last_end_pfn;
static int __meminitdata last_nid;

if (last_start_pfn <= pfn && pfn < last_end_pfn)
return last_nid;

for_each_mem_pfn_range(i, MAX_NUMNODES, &start_pfn, &end_pfn, &nid)
if (start_pfn <= pfn && pfn < end_pfn)
if (start_pfn <= pfn && pfn < end_pfn) {
last_start_pfn = start_pfn;
last_end_pfn = end_pfn;
last_nid = nid;
return nid;
}
/* This is a memory hole */
return -1;
}
Expand Down

0 comments on commit 2275b9c

Please sign in to comment.