diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-24 11:37:29 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-24 11:37:29 -0400 |
| commit | e270b51df657011983241ec61a1fc7de186e16cd (patch) | |
| tree | 3397be4cbf31676ca6ebb187903e8cfc2218f223 /arch/sparc64/kernel/prom.c | |
| parent | 8fa82790fb9dfe57aeafc8de6b6a5c1df63efa06 (diff) | |
| parent | 227739bf4c110bbd02d0c0f13b272c32de406e4c (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6: (23 commits)
sparc: sunzilog uart order
[SPARC64]: Detect trap frames in stack backtraces.
[SPARC64]: %l6 trap return handling no longer necessary.
[SPARC64]: Use trap type stored in pt_regs to handle syscall restart.
[SPARC64]: Store magic cookie and trap type in pt_regs.
[SPARC64]: PROM debug console can be CON_ANYTIME.
sparc64: cleanup after SunOS/Solaris binary emulation removal
sparc: cleanup after SunOS binary emulation removal
[SPARC64]: Add NUMA support.
[SPARC64]: Allocate TSB node-local.
[SPARC64]: NUMA device infrastructure.
[SPARC64]: Kill pci_iommu_table_init() declaration.
[SPARC64]: Once we have the boot cmdline, call parse_early_param()
[SPARC64]: Remove unused asm-sparc64/numnodes.h
[SPARC64]: Decrease SECTION_SIZE_BITS to 30.
[SPARC64]: Initialize MDESC earlier and use lmb_alloc()
[SPARC64]: Use lmb_alloc() for PROM device tree.
[SPARC64]: Call real_setup_per_cpu_areas() earlier and use lmb_alloc().
[SPARC64]: Fully use LMB information in bootmem_init().
[SPARC64]: Start using LMB information in bootmem_init().
...
Diffstat (limited to 'arch/sparc64/kernel/prom.c')
| -rw-r--r-- | arch/sparc64/kernel/prom.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/arch/sparc64/kernel/prom.c b/arch/sparc64/kernel/prom.c index 68964ddcde1e..ed03a18d3b36 100644 --- a/arch/sparc64/kernel/prom.c +++ b/arch/sparc64/kernel/prom.c | |||
| @@ -19,8 +19,8 @@ | |||
| 19 | #include <linux/types.h> | 19 | #include <linux/types.h> |
| 20 | #include <linux/string.h> | 20 | #include <linux/string.h> |
| 21 | #include <linux/mm.h> | 21 | #include <linux/mm.h> |
| 22 | #include <linux/bootmem.h> | ||
| 23 | #include <linux/module.h> | 22 | #include <linux/module.h> |
| 23 | #include <linux/lmb.h> | ||
| 24 | 24 | ||
| 25 | #include <asm/prom.h> | 25 | #include <asm/prom.h> |
| 26 | #include <asm/of_device.h> | 26 | #include <asm/of_device.h> |
| @@ -122,16 +122,20 @@ int of_find_in_proplist(const char *list, const char *match, int len) | |||
| 122 | } | 122 | } |
| 123 | EXPORT_SYMBOL(of_find_in_proplist); | 123 | EXPORT_SYMBOL(of_find_in_proplist); |
| 124 | 124 | ||
| 125 | static unsigned int prom_early_allocated; | 125 | static unsigned int prom_early_allocated __initdata; |
| 126 | 126 | ||
| 127 | static void * __init prom_early_alloc(unsigned long size) | 127 | static void * __init prom_early_alloc(unsigned long size) |
| 128 | { | 128 | { |
| 129 | unsigned long paddr = lmb_alloc(size, SMP_CACHE_BYTES); | ||
| 129 | void *ret; | 130 | void *ret; |
| 130 | 131 | ||
| 131 | ret = __alloc_bootmem(size, SMP_CACHE_BYTES, 0UL); | 132 | if (!paddr) { |
| 132 | if (ret != NULL) | 133 | prom_printf("prom_early_alloc(%lu) failed\n"); |
| 133 | memset(ret, 0, size); | 134 | prom_halt(); |
| 135 | } | ||
| 134 | 136 | ||
| 137 | ret = __va(paddr); | ||
| 138 | memset(ret, 0, size); | ||
| 135 | prom_early_allocated += size; | 139 | prom_early_allocated += size; |
| 136 | 140 | ||
| 137 | return ret; | 141 | return ret; |
