[coreboot] K8 RAMinit problematic code

Carl-Daniel Hailfinger c-d.hailfinger.devel.2006 at gmx.net
Mon Sep 1 19:10:05 CEST 2008

On 01.09.2008 17:39, ron minnich wrote:
> On Mon, Sep 1, 2008 at 8:12 AM, Carl-Daniel Hailfinger
> <c-d.hailfinger.devel.2006 at gmx.net> wrote:
>> Hi,
>> this patch is not to be applied, but an annotation from my tree.
>> Index: northbridge/amd/k8/dqs.c
>> ===================================================================
>> --- northbridge/amd/k8/dqs.c    (Revision 853)
>> +++ northbridge/amd/k8/dqs.c    (Arbeitskopie)
>> @@ -2001,6 +2001,7 @@
>>  static inline void train_ram_on_node(unsigned nodeid, unsigned coreid, struct sys_info *sysinfo, unsigned retcall)
>>  {
>>        if(coreid) return; // only do it on core0
>> +#error This is broken beyond repair. We need to use the generic global variable infrastructure, especially if we relocate the global variables without telling anybody.
> These fixes come in to play once single core is done.

Sorry, I meant that

struct sys_info *sysinfox = ((CONFIG_LB_MEM_TOPK<<10) - DCACHE_RAM_GLOBAL_VAR_SIZE);

is broken beyond repair. Basically, that code tries to establish a new
location for global variables without telling anyone.

> We're going to write this code as always SMP safe, and I want to
> remove the CONFIG_*_SMP conditionals. They make no sense for a bios.

Interesting point of view. As long as we're allowed to make locking on
pure uniprocessor architectures a no-op, I'm totally for it.



More information about the coreboot mailing list