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.
        struct sys_info *sysinfox = ((CONFIG_LB_MEM_TOPK<<10) - 
DCACHE_RAM_GLOBAL_VAR_SIZE);
        wait_till_sysinfo_in_ram(); // use pci to get it
 
@@ -2012,6 +2013,7 @@
                sysinfo->mem_trained[nodeid] = sysinfox->mem_trained[nodeid];
                memcpy(&sysinfo->ctrl[nodeid], &sysinfox->ctrl[nodeid], 
sizeof(struct mem_controller));
        #else
+#error Broken here as well.
                memcpy(sysinfo, sysinfox, DCACHE_RAM_GLOBAL_VAR_SIZE);
        #endif
                set_top_mem_ap(sysinfo->tom_k, sysinfo->tom2_k); // keep the 
ap's tom consistent with bsp's



Even if the stuff above is fixed, we absolutely have to finish the
concept of accessing global variables by adding locking and/or spelling
out the access rules, especially for the CAR stage.

Oh, and can we please mark struct sys_info as const where possible and
also not pass it around as parameter. Especially if we perform stack
relocation, this can lead to really nasty problems.
Thanks.

Regards,
Carl-Daniel

-- 
http://www.hailfinger.org/


--
coreboot mailing list
[email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to