diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-08-15 20:07:01 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-08-15 20:07:01 -0400 |
commit | aacea90fa447855f2d5a15ee0b9fd5273cdd7c5b (patch) | |
tree | eaf2e94991a8717d5b33e092482260ee1453ac4b | |
parent | ddf343f635fe4440cad528e12f96f28bd50aa099 (diff) | |
parent | 2856cc2e4d0852c3ddaae9dcb19cb9396512eb08 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc
Pull two sparc fixes from David S. Miller.
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
sparc64: Be less verbose during vmemmap population.
sparc64: do not clobber personality flags in sys_sparc64_personality()
-rw-r--r-- | arch/sparc/kernel/sys_sparc_64.c | 10 | ||||
-rw-r--r-- | arch/sparc/mm/init_64.c | 28 |
2 files changed, 28 insertions, 10 deletions
diff --git a/arch/sparc/kernel/sys_sparc_64.c b/arch/sparc/kernel/sys_sparc_64.c index 0dc1f5786081..11c6c9603e71 100644 --- a/arch/sparc/kernel/sys_sparc_64.c +++ b/arch/sparc/kernel/sys_sparc_64.c | |||
@@ -502,12 +502,12 @@ SYSCALL_DEFINE1(sparc64_personality, unsigned long, personality) | |||
502 | { | 502 | { |
503 | int ret; | 503 | int ret; |
504 | 504 | ||
505 | if (current->personality == PER_LINUX32 && | 505 | if (personality(current->personality) == PER_LINUX32 && |
506 | personality == PER_LINUX) | 506 | personality(personality) == PER_LINUX) |
507 | personality = PER_LINUX32; | 507 | personality |= PER_LINUX32; |
508 | ret = sys_personality(personality); | 508 | ret = sys_personality(personality); |
509 | if (ret == PER_LINUX32) | 509 | if (personality(ret) == PER_LINUX32) |
510 | ret = PER_LINUX; | 510 | ret &= ~PER_LINUX32; |
511 | 511 | ||
512 | return ret; | 512 | return ret; |
513 | } | 513 | } |
diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c index 6026fdd1b2ed..d58edf5fefdb 100644 --- a/arch/sparc/mm/init_64.c +++ b/arch/sparc/mm/init_64.c | |||
@@ -2020,6 +2020,9 @@ EXPORT_SYMBOL(_PAGE_CACHE); | |||
2020 | #ifdef CONFIG_SPARSEMEM_VMEMMAP | 2020 | #ifdef CONFIG_SPARSEMEM_VMEMMAP |
2021 | unsigned long vmemmap_table[VMEMMAP_SIZE]; | 2021 | unsigned long vmemmap_table[VMEMMAP_SIZE]; |
2022 | 2022 | ||
2023 | static long __meminitdata addr_start, addr_end; | ||
2024 | static int __meminitdata node_start; | ||
2025 | |||
2023 | int __meminit vmemmap_populate(struct page *start, unsigned long nr, int node) | 2026 | int __meminit vmemmap_populate(struct page *start, unsigned long nr, int node) |
2024 | { | 2027 | { |
2025 | unsigned long vstart = (unsigned long) start; | 2028 | unsigned long vstart = (unsigned long) start; |
@@ -2050,15 +2053,30 @@ int __meminit vmemmap_populate(struct page *start, unsigned long nr, int node) | |||
2050 | 2053 | ||
2051 | *vmem_pp = pte_base | __pa(block); | 2054 | *vmem_pp = pte_base | __pa(block); |
2052 | 2055 | ||
2053 | printk(KERN_INFO "[%p-%p] page_structs=%lu " | 2056 | /* check to see if we have contiguous blocks */ |
2054 | "node=%d entry=%lu/%lu\n", start, block, nr, | 2057 | if (addr_end != addr || node_start != node) { |
2055 | node, | 2058 | if (addr_start) |
2056 | addr >> VMEMMAP_CHUNK_SHIFT, | 2059 | printk(KERN_DEBUG " [%lx-%lx] on node %d\n", |
2057 | VMEMMAP_SIZE); | 2060 | addr_start, addr_end-1, node_start); |
2061 | addr_start = addr; | ||
2062 | node_start = node; | ||
2063 | } | ||
2064 | addr_end = addr + VMEMMAP_CHUNK; | ||
2058 | } | 2065 | } |
2059 | } | 2066 | } |
2060 | return 0; | 2067 | return 0; |
2061 | } | 2068 | } |
2069 | |||
2070 | void __meminit vmemmap_populate_print_last(void) | ||
2071 | { | ||
2072 | if (addr_start) { | ||
2073 | printk(KERN_DEBUG " [%lx-%lx] on node %d\n", | ||
2074 | addr_start, addr_end-1, node_start); | ||
2075 | addr_start = 0; | ||
2076 | addr_end = 0; | ||
2077 | node_start = 0; | ||
2078 | } | ||
2079 | } | ||
2062 | #endif /* CONFIG_SPARSEMEM_VMEMMAP */ | 2080 | #endif /* CONFIG_SPARSEMEM_VMEMMAP */ |
2063 | 2081 | ||
2064 | static void prot_init_common(unsigned long page_none, | 2082 | static void prot_init_common(unsigned long page_none, |