Change CONFIG_LB_MEM_TOPK to CONFIG_RAMTOP to match CONFIG_RAMBASE.
Signed-off-by: Myles Watson <mylesgw@gmail.com> Acked-by: Peter Stuge <peter@stuge.se> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4788 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
@ -246,7 +246,7 @@ clear_fixed_var_mtrr_out:
|
||||
/* enable memory access for first MBs using top_mem */
|
||||
movl $TOP_MEM, %ecx
|
||||
xorl %edx, %edx
|
||||
movl $(((CONFIG_LB_MEM_TOPK << 10) + TOP_MEM_MASK) & ~TOP_MEM_MASK) , %eax
|
||||
movl $(((CONFIG_RAMTOP) + TOP_MEM_MASK) & ~TOP_MEM_MASK) , %eax
|
||||
wrmsr
|
||||
#endif /* CONFIG_USE_FAILOVER_IMAGE == 1*/
|
||||
|
||||
|
@ -9,15 +9,15 @@ static void __attribute__((noinline)) clear_init_ram(void)
|
||||
|
||||
#if CONFIG_HAVE_ACPI_RESUME == 1
|
||||
/* clear only coreboot used region of memory. Note: this may break ECC enabled boards */
|
||||
clear_memory( CONFIG_RAMBASE, (CONFIG_LB_MEM_TOPK << 10) - CONFIG_RAMBASE - CONFIG_DCACHE_RAM_SIZE);
|
||||
clear_memory( CONFIG_RAMBASE, (CONFIG_RAMTOP) - CONFIG_RAMBASE - CONFIG_DCACHE_RAM_SIZE);
|
||||
#else
|
||||
clear_memory(0, ((CONFIG_LB_MEM_TOPK<<10) - CONFIG_DCACHE_RAM_SIZE));
|
||||
clear_memory(0, ((CONFIG_RAMTOP) - CONFIG_DCACHE_RAM_SIZE));
|
||||
#endif
|
||||
}
|
||||
|
||||
/* be warned, this file will be used by core other than core 0/node 0 or core0/node0 when cpu_reset*/
|
||||
static void set_init_ram_access(void)
|
||||
{
|
||||
set_var_mtrr(0, 0x00000000, CONFIG_LB_MEM_TOPK << 10, MTRR_TYPE_WRBACK);
|
||||
set_var_mtrr(0, 0x00000000, CONFIG_RAMTOP, MTRR_TYPE_WRBACK);
|
||||
}
|
||||
|
||||
|
@ -56,13 +56,13 @@ static void post_cache_as_ram(void)
|
||||
print_debug_pcar("testx = ", testx);
|
||||
|
||||
/* copy data from cache as ram to
|
||||
ram need to set CONFIG_LB_MEM_TOPK to 2048 and use var mtrr instead.
|
||||
ram need to set CONFIG_RAMTOP to 2M and use var mtrr instead.
|
||||
*/
|
||||
#if CONFIG_LB_MEM_TOPK <= 1024
|
||||
#error "You need to set CONFIG_LB_MEM_TOPK greater than 1024"
|
||||
#if CONFIG_RAMTOP <= 0x100000
|
||||
#error "You need to set CONFIG_RAMTOP greater than 1M"
|
||||
#endif
|
||||
|
||||
set_init_ram_access(); /* So we can access RAM from [1M, CONFIG_LB_MEM_TOPK) */
|
||||
set_init_ram_access(); /* So we can access RAM from [1M, CONFIG_RAMTOP) */
|
||||
|
||||
// dump_mem(CONFIG_DCACHE_RAM_BASE+CONFIG_DCACHE_RAM_SIZE-0x8000, CONFIG_DCACHE_RAM_BASE+CONFIG_DCACHE_RAM_SIZE-0x7c00);
|
||||
print_debug("Copying data from cache to RAM -- switching to use RAM as stack... ");
|
||||
@ -76,14 +76,14 @@ static void post_cache_as_ram(void)
|
||||
);
|
||||
#endif
|
||||
|
||||
memcopy((void *)((CONFIG_LB_MEM_TOPK<<10)-CONFIG_DCACHE_RAM_SIZE), (void *)CONFIG_DCACHE_RAM_BASE, CONFIG_DCACHE_RAM_SIZE); //inline
|
||||
// dump_mem((CONFIG_LB_MEM_TOPK<<10) - 0x8000, (CONFIG_LB_MEM_TOPK<<10) - 0x7c00);
|
||||
memcopy((void *)((CONFIG_RAMTOP)-CONFIG_DCACHE_RAM_SIZE), (void *)CONFIG_DCACHE_RAM_BASE, CONFIG_DCACHE_RAM_SIZE); //inline
|
||||
// dump_mem((CONFIG_RAMTOP) - 0x8000, (CONFIG_RAMTOP) - 0x7c00);
|
||||
|
||||
__asm__ volatile (
|
||||
/* set new esp */ /* before CONFIG_RAMBASE */
|
||||
"subl %0, %%ebp\n\t"
|
||||
"subl %0, %%esp\n\t"
|
||||
::"a"( (CONFIG_DCACHE_RAM_BASE + CONFIG_DCACHE_RAM_SIZE)- (CONFIG_LB_MEM_TOPK<<10) )
|
||||
::"a"( (CONFIG_DCACHE_RAM_BASE + CONFIG_DCACHE_RAM_SIZE)- (CONFIG_RAMTOP) )
|
||||
); // We need to push %eax to the stack (CAR) before copy stack and pop it later after copy stack and change esp
|
||||
#if 0
|
||||
__asm__ volatile (
|
||||
@ -102,10 +102,10 @@ static void post_cache_as_ram(void)
|
||||
disable_cache_as_ram_bsp();
|
||||
|
||||
print_debug("Clearing initial memory region: ");
|
||||
clear_init_ram(); //except the range from [(CONFIG_LB_MEM_TOPK<<10) - CONFIG_DCACHE_RAM_SIZE, (CONFIG_LB_MEM_TOPK<<10))
|
||||
clear_init_ram(); //except the range from [(CONFIG_RAMTOP) - CONFIG_DCACHE_RAM_SIZE, (CONFIG_RAMTOP))
|
||||
print_debug("Done\r\n");
|
||||
|
||||
// dump_mem((CONFIG_LB_MEM_TOPK<<10) - 0x8000, (CONFIG_LB_MEM_TOPK<<10) - 0x7c00);
|
||||
// dump_mem((CONFIG_RAMTOP) - 0x8000, (CONFIG_RAMTOP) - 0x7c00);
|
||||
|
||||
#ifndef CONFIG_MEM_TRAIN_SEQ
|
||||
#define CONFIG_MEM_TRAIN_SEQ 0
|
||||
@ -113,7 +113,7 @@ static void post_cache_as_ram(void)
|
||||
set_sysinfo_in_ram(1); // So other core0 could start to train mem
|
||||
|
||||
#if CONFIG_MEM_TRAIN_SEQ == 1
|
||||
// struct sys_info *sysinfox = ((CONFIG_LB_MEM_TOPK<<10) - CONFIG_DCACHE_RAM_GLOBAL_VAR_SIZE);
|
||||
// struct sys_info *sysinfox = ((CONFIG_RAMTOP) - CONFIG_DCACHE_RAM_GLOBAL_VAR_SIZE);
|
||||
|
||||
// wait for ap memory to trained
|
||||
// wait_all_core0_mem_trained(sysinfox); // moved to lapic_init_cpus.c
|
||||
|
@ -33,7 +33,7 @@
|
||||
void cpus_ready_for_init(void)
|
||||
{
|
||||
#if CONFIG_MEM_TRAIN_SEQ == 1
|
||||
struct sys_info *sysinfox = (struct sys_info *)((CONFIG_LB_MEM_TOPK<<10) - CONFIG_DCACHE_RAM_GLOBAL_VAR_SIZE);
|
||||
struct sys_info *sysinfox = (struct sys_info *)((CONFIG_RAMTOP) - CONFIG_DCACHE_RAM_GLOBAL_VAR_SIZE);
|
||||
// wait for ap memory to trained
|
||||
wait_all_core0_mem_trained(sysinfox);
|
||||
#endif
|
||||
@ -182,7 +182,7 @@ static void set_init_ecc_mtrrs(void)
|
||||
msr.lo = 0x00000000 | MTRR_TYPE_WRBACK;
|
||||
wrmsr(MTRRphysBase_MSR(0), msr);
|
||||
msr.hi = 0x000000ff;
|
||||
msr.lo = ~((CONFIG_LB_MEM_TOPK << 10) - 1) | 0x800;
|
||||
msr.lo = ~((CONFIG_RAMTOP) - 1) | 0x800;
|
||||
wrmsr(MTRRphysMask_MSR(0), msr);
|
||||
|
||||
/* Set the default type to write combining */
|
||||
@ -308,8 +308,8 @@ static void init_ecc_memory(unsigned node_id)
|
||||
|
||||
/* Don't start too early */
|
||||
begink = startk;
|
||||
if (begink < CONFIG_LB_MEM_TOPK) {
|
||||
begink = CONFIG_LB_MEM_TOPK;
|
||||
if (begink < (CONFIG_RAMTOP >> 10)) {
|
||||
begink = (CONFIG_RAMTOP >>10);
|
||||
}
|
||||
|
||||
printk_debug("Clearing memory %luK - %luK: ", begink, endk);
|
||||
|
@ -38,7 +38,7 @@ static void do_amd_early_mtrr_init(const unsigned long *mtrr_msrs)
|
||||
|
||||
/* Enable memory access for 0 - 1MB using top_mem */
|
||||
msr.hi = 0;
|
||||
msr.lo = (((CONFIG_LB_MEM_TOPK << 10) + TOP_MEM_MASK) & ~TOP_MEM_MASK);
|
||||
msr.lo = (((CONFIG_RAMTOP) + TOP_MEM_MASK) & ~TOP_MEM_MASK);
|
||||
wrmsr(TOP_MEM, msr);
|
||||
|
||||
#if defined(CONFIG_XIP_ROM_SIZE)
|
||||
|
@ -246,17 +246,17 @@ int start_cpu(device_t cpu)
|
||||
index = ++last_cpu_index;
|
||||
|
||||
/* Find end of the new processors stack */
|
||||
#if (CONFIG_LB_MEM_TOPK>1024) && (CONFIG_RAMBASE < 0x100000) && ((CONFIG_CONSOLE_VGA==1) || (CONFIG_PCI_ROM_RUN == 1))
|
||||
#if (CONFIG_RAMTOP>0x100000) && (CONFIG_RAMBASE < 0x100000) && ((CONFIG_CONSOLE_VGA==1) || (CONFIG_PCI_ROM_RUN == 1))
|
||||
if(index<1) { // only keep bsp on low
|
||||
stack_end = ((unsigned long)_estack) - (CONFIG_STACK_SIZE*index) - sizeof(struct cpu_info);
|
||||
} else {
|
||||
// for all APs, let use stack after pgtbl, 20480 is the pgtbl size for every cpu
|
||||
stack_end = 0x100000+(20480 + CONFIG_STACK_SIZE)*CONFIG_MAX_CPUS - (CONFIG_STACK_SIZE*index);
|
||||
#if (0x100000+(20480 + CONFIG_STACK_SIZE)*CONFIG_MAX_CPUS) > (CONFIG_LB_MEM_TOPK<<10)
|
||||
#warning "We may need to increase CONFIG_LB_MEM_TOPK, it need to be more than (0x100000+(20480 + CONFIG_STACK_SIZE)*CONFIG_MAX_CPUS)\n"
|
||||
#if (0x100000+(20480 + CONFIG_STACK_SIZE)*CONFIG_MAX_CPUS) > (CONFIG_RAMTOP)
|
||||
#warning "We may need to increase CONFIG_RAMTOP, it need to be more than (0x100000+(20480 + CONFIG_STACK_SIZE)*CONFIG_MAX_CPUS)\n"
|
||||
#endif
|
||||
if(stack_end > (CONFIG_LB_MEM_TOPK<<10)) {
|
||||
printk_debug("start_cpu: Please increase the CONFIG_LB_MEM_TOPK more than %luK\n", stack_end>>10);
|
||||
if(stack_end > (CONFIG_RAMTOP)) {
|
||||
printk_debug("start_cpu: Please increase the CONFIG_RAMTOP more than %luK\n", stack_end);
|
||||
die("Can not go on\n");
|
||||
}
|
||||
stack_end -= sizeof(struct cpu_info);
|
||||
|
@ -11,8 +11,8 @@
|
||||
#if defined(CONFIG_XIP_ROM_BASE) && !defined(CONFIG_XIP_ROM_SIZE)
|
||||
# error "CONFIG_XIP_ROM_BASE without CONFIG_XIP_ROM_SIZE"
|
||||
#endif
|
||||
#if !defined(CONFIG_LB_MEM_TOPK)
|
||||
# error "CONFIG_LB_MEM_TOPK not defined"
|
||||
#if !defined(CONFIG_RAMTOP)
|
||||
# error "CONFIG_RAMTOP not defined"
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_XIP_ROM_SIZE) && ((CONFIG_XIP_ROM_SIZE & (CONFIG_XIP_ROM_SIZE -1)) != 0)
|
||||
@ -22,8 +22,8 @@
|
||||
# error "CONFIG_XIP_ROM_BASE is not a multiple of CONFIG_XIP_ROM_SIZE"
|
||||
#endif
|
||||
|
||||
#if (CONFIG_LB_MEM_TOPK & (CONFIG_LB_MEM_TOPK -1)) != 0
|
||||
# error "CONFIG_LB_MEM_TOPK must be a power of 2"
|
||||
#if (CONFIG_RAMTOP & (CONFIG_RAMTOP -1)) != 0
|
||||
# error "CONFIG_RAMTOP must be a power of 2"
|
||||
#endif
|
||||
|
||||
static void disable_var_mtrr(unsigned reg)
|
||||
@ -75,7 +75,7 @@ static void cache_lbmem(int type)
|
||||
{
|
||||
/* Enable caching for 0 - 1MB using variable mtrr */
|
||||
disable_cache();
|
||||
set_var_mtrr(0, 0x00000000, CONFIG_LB_MEM_TOPK << 10, type);
|
||||
set_var_mtrr(0, 0x00000000, CONFIG_RAMTOP, type);
|
||||
enable_cache();
|
||||
}
|
||||
|
||||
|
@ -54,19 +54,19 @@ void *map_2M_page(unsigned long page)
|
||||
struct pde pdp[512];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
#if (CONFIG_LB_MEM_TOPK>1024) && (CONFIG_RAMBASE<0x100000) && ((CONFIG_CONSOLE_VGA==1) || (CONFIG_PCI_ROM_RUN == 1))
|
||||
#if (CONFIG_RAMTOP>0x100000) && (CONFIG_RAMBASE<0x100000) && ((CONFIG_CONSOLE_VGA==1) || (CONFIG_PCI_ROM_RUN == 1))
|
||||
/*
|
||||
pgtbl is too big, so use last one 1M before CONFIG_LB_MEM_TOP, otherwise for 8 way dual core with vga support will push stack and heap cross 0xa0000,
|
||||
and that region need to be used as vga font buffer. Please make sure set CONFIG_LB_MEM_TOPK=2048 in MB Config
|
||||
and that region need to be used as vga font buffer. Please make sure set CONFIG_RAMTOP=0x200000 in MB Config
|
||||
*/
|
||||
struct pg_table *pgtbl = (struct pg_table*)0x100000; //1M
|
||||
|
||||
unsigned x_end = 0x100000 + sizeof(struct pg_table) * CONFIG_MAX_CPUS;
|
||||
#if (0x100000+20480*CONFIG_MAX_CPUS) > (CONFIG_LB_MEM_TOPK<<10)
|
||||
#warning "We may need to increase CONFIG_LB_MEM_TOPK, it need to be more than (0x100000+20480*CONFIG_MAX_CPUS)\n"
|
||||
#if (0x100000+20480*CONFIG_MAX_CPUS) > (CONFIG_RAMTOP)
|
||||
#warning "We may need to increase CONFIG_RAMTOP, it need to be more than (0x100000+20480*CONFIG_MAX_CPUS)\n"
|
||||
#endif
|
||||
if(x_end > (CONFIG_LB_MEM_TOPK<<10)) {
|
||||
printk_debug("map_2M_page: Please increase the CONFIG_LB_MEM_TOPK more than %dK\n", x_end>>10);
|
||||
if(x_end > (CONFIG_RAMTOP)) {
|
||||
printk_debug("map_2M_page: Please increase the CONFIG_RAMTOP more than %dK\n", x_end);
|
||||
die("Can not go on");
|
||||
}
|
||||
#else
|
||||
|
Reference in New Issue
Block a user