diff options
| author | Ingo Molnar <mingo@elte.hu> | 2008-08-14 06:19:59 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2008-08-14 06:19:59 -0400 |
| commit | 8d7ccaa545490cdffdfaff0842436a8dd85cf47b (patch) | |
| tree | 8129b5907161bc6ae26deb3645ce1e280c5e1f51 /mm/vmalloc.c | |
| parent | b2139aa0eec330c711c5a279db361e5ef1178e78 (diff) | |
| parent | 30a2f3c60a84092c8084dfe788b710f8d0768cd4 (diff) | |
Merge commit 'v2.6.27-rc3' into x86/prototypes
Conflicts:
include/asm-x86/dma-mapping.h
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'mm/vmalloc.c')
| -rw-r--r-- | mm/vmalloc.c | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 6e45b0f3d125..85b9a0d2c877 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c | |||
| @@ -381,16 +381,14 @@ static void __vunmap(const void *addr, int deallocate_pages) | |||
| 381 | return; | 381 | return; |
| 382 | 382 | ||
| 383 | if ((PAGE_SIZE-1) & (unsigned long)addr) { | 383 | if ((PAGE_SIZE-1) & (unsigned long)addr) { |
| 384 | printk(KERN_ERR "Trying to vfree() bad address (%p)\n", addr); | 384 | WARN(1, KERN_ERR "Trying to vfree() bad address (%p)\n", addr); |
| 385 | WARN_ON(1); | ||
| 386 | return; | 385 | return; |
| 387 | } | 386 | } |
| 388 | 387 | ||
| 389 | area = remove_vm_area(addr); | 388 | area = remove_vm_area(addr); |
| 390 | if (unlikely(!area)) { | 389 | if (unlikely(!area)) { |
| 391 | printk(KERN_ERR "Trying to vfree() nonexistent vm area (%p)\n", | 390 | WARN(1, KERN_ERR "Trying to vfree() nonexistent vm area (%p)\n", |
| 392 | addr); | 391 | addr); |
| 393 | WARN_ON(1); | ||
| 394 | return; | 392 | return; |
| 395 | } | 393 | } |
| 396 | 394 | ||
| @@ -931,6 +929,25 @@ static void s_stop(struct seq_file *m, void *p) | |||
| 931 | read_unlock(&vmlist_lock); | 929 | read_unlock(&vmlist_lock); |
| 932 | } | 930 | } |
| 933 | 931 | ||
| 932 | static void show_numa_info(struct seq_file *m, struct vm_struct *v) | ||
| 933 | { | ||
| 934 | if (NUMA_BUILD) { | ||
| 935 | unsigned int nr, *counters = m->private; | ||
| 936 | |||
| 937 | if (!counters) | ||
| 938 | return; | ||
| 939 | |||
| 940 | memset(counters, 0, nr_node_ids * sizeof(unsigned int)); | ||
| 941 | |||
| 942 | for (nr = 0; nr < v->nr_pages; nr++) | ||
| 943 | counters[page_to_nid(v->pages[nr])]++; | ||
| 944 | |||
| 945 | for_each_node_state(nr, N_HIGH_MEMORY) | ||
| 946 | if (counters[nr]) | ||
| 947 | seq_printf(m, " N%u=%u", nr, counters[nr]); | ||
| 948 | } | ||
| 949 | } | ||
| 950 | |||
| 934 | static int s_show(struct seq_file *m, void *p) | 951 | static int s_show(struct seq_file *m, void *p) |
| 935 | { | 952 | { |
| 936 | struct vm_struct *v = p; | 953 | struct vm_struct *v = p; |
| @@ -967,6 +984,7 @@ static int s_show(struct seq_file *m, void *p) | |||
| 967 | if (v->flags & VM_VPAGES) | 984 | if (v->flags & VM_VPAGES) |
| 968 | seq_printf(m, " vpages"); | 985 | seq_printf(m, " vpages"); |
| 969 | 986 | ||
| 987 | show_numa_info(m, v); | ||
| 970 | seq_putc(m, '\n'); | 988 | seq_putc(m, '\n'); |
| 971 | return 0; | 989 | return 0; |
| 972 | } | 990 | } |
