Hi Gabe, Last nit, I promise, and then I'll apply it all to u-boot-x86/next
On 03/12/11 22:18, Gabe Black wrote: > Also approximate the size of RAM using the largest RAM address available > in the tables. There may be areas which are marked as reserved which are > actually at the end of RAM. > > Signed-off-by: Gabe Black <gabebl...@chromium.org> > --- > Changes in v2: > - Moved the coreboot specfic e820 function into this patch. > > arch/x86/cpu/coreboot/sdram.c | 38 +++++++++++++++++++++++++++++++++++++- > arch/x86/include/asm/zimage.h | 5 +++++ > 2 files changed, 42 insertions(+), 1 deletions(-) > > diff --git a/arch/x86/cpu/coreboot/sdram.c b/arch/x86/cpu/coreboot/sdram.c > index b56085a..f8fdac6 100644 > --- a/arch/x86/cpu/coreboot/sdram.c > +++ b/arch/x86/cpu/coreboot/sdram.c > @@ -23,13 +23,49 @@ > */ > > #include <common.h> > +#include <malloc.h> > +#include <asm/e820.h> > #include <asm/u-boot-x86.h> > +#include <asm/global_data.h> > +#include <asm/arch-coreboot/sysinfo.h> > +#include <asm/arch-coreboot/tables.h> > > DECLARE_GLOBAL_DATA_PTR; > > +unsigned install_e820_map(unsigned max_entries, struct e820entry *entries) > +{ > + int i; > + > + unsigned num_entries = min(lib_sysinfo.n_memranges, max_entries); > + if (num_entries < lib_sysinfo.n_memranges) { > + printf("Warning: Limiting e820 map to %d entries.\n", > + num_entries); > + } > + for (i = 0; i < num_entries; i++) { > + struct memrange *memrange = &lib_sysinfo.memrange[i]; > + > + entries[i].addr = memrange->base; > + entries[i].size = memrange->size; > + entries[i].type = memrange->type; > + } > + return num_entries; > +} > + > int dram_init_f(void) > { > - gd->ram_size = 64*1024*1024; > + int i; > + phys_size_t ram_size = 0; > + > + for (i = 0; i < lib_sysinfo.n_memranges; i++) { > + struct memrange *memrange = &lib_sysinfo.memrange[i]; > + unsigned long long end = memrange->base + memrange->size; > + > + if (memrange->type == CB_MEM_RAM && end > ram_size) > + ram_size = end; > + } > + gd->ram_size = ram_size; > + if (ram_size == 0) > + return -1; > return 0; > } > > diff --git a/arch/x86/include/asm/zimage.h b/arch/x86/include/asm/zimage.h > index 8ee6a74..3a68bb0 100644 > --- a/arch/x86/include/asm/zimage.h > +++ b/arch/x86/include/asm/zimage.h The zimage.h changes belong in patch 3 > @@ -24,6 +24,8 @@ > #ifndef _ASM_ZIMAGE_H_ > #define _ASM_ZIMAGE_H_ > > +#include <asm/e820.h> > + > /* linux i386 zImage/bzImage header. Offsets relative to > * the start of the image */ > > @@ -44,6 +46,9 @@ > #define BZIMAGE_LOAD_ADDR 0x100000 > #define ZIMAGE_LOAD_ADDR 0x10000 > > +/* Implementation defined function to install an e820 map. */ > +unsigned install_e820_map(unsigned max_entries, struct e820entry *); > + Should be u8 as boot_params.e820_entries is u8 (__u8 really, but we don't use the kernel data types) > void *load_zimage(char *image, unsigned long kernel_size, > unsigned long initrd_addr, unsigned long initrd_size, > int auto_boot, void **load_address); Regards, Graeme _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot