[LinuxBIOS] [BUILDROM] Add support for the AMD SimNow (TM) simulator (try 2)

Jordan Crouse jordan.crouse at amd.com
Wed Nov 28 19:32:12 CET 2007


Here is the refreshed patch for the SimNow support against current RCS.
Something is triggering my bat sense that the tree isn't exactly in a
right state, but I can't remember what it is.  Please test the tree with
and without the patch to make sure that its sane.

Jordan
-- 
Jordan Crouse
Systems Software Development Engineer 
Advanced Micro Devices, Inc.
-------------- next part --------------
[BUILDROM] Add support for the AMD SimNow (TM) simulator

Add a build option and a patch against LinuxBIOS to allow the 
Serengeti-Cheetah platform to come up on its emulated self in 
the SimNow simulator.

Signed-off-by: Jordan Crouse <jordan.crouse at amd.com>

Index: buildrom-devel/config/platforms/Config.in
===================================================================
--- buildrom-devel.orig/config/platforms/Config.in
+++ buildrom-devel/config/platforms/Config.in
@@ -87,4 +87,13 @@ config PLATFORM_SERENGETI_CHEETAH
        select PLATFORM_SUPPORT_64BIT
 
 endchoice
+
+config SIMNOW
+	bool "Build for the AMD SimNow (TM) emulator"
+	depends PLATFORM_SERENGETI_CHEETAH || PLATFORM_SERENGETI_CHEETAH_64
+	default n
+	help
+	  Say 'y' here to patch the build to work on an
+	  emulated platform in the AMD SimNow (TM) simulator
+
 endmenu
Index: buildrom-devel/packages/linuxbios/patches/simnow.patch
===================================================================
--- /dev/null
+++ buildrom-devel/packages/linuxbios/patches/simnow.patch
@@ -0,0 +1,59 @@
+Index: svn/src/northbridge/amd/amdk8/raminit_f_dqs.c
+===================================================================
+--- svn.orig/src/northbridge/amd/amdk8/raminit_f_dqs.c
++++ svn/src/northbridge/amd/amdk8/raminit_f_dqs.c
+@@ -1987,6 +1987,16 @@ static inline void train_ram_on_node(uns
+ 	struct sys_info *sysinfox = ((CONFIG_LB_MEM_TOPK<<10) - DCACHE_RAM_GLOBAL_VAR_SIZE);
+ 	wait_till_sysinfo_in_ram(); // use pci to get it
+ 
++	/* In SimNow, when we get to this point, CAR is disabled, so
++	 * our stack pointer points to never-never land, andjust it.
++	 */
++
++	__asm__ volatile (
++		"subl   %0, %%ebp\n\t"
++		"subl   %0, %%esp\n\t"
++		::"a"( (DCACHE_RAM_BASE + DCACHE_RAM_SIZE)- (CONFIG_LB_MEM_TOPK<<10) )
++	);
++
+ 	if(sysinfox->mem_trained[nodeid] == 0x80) {
+ 	#if 0
+ 		sysinfo->tom_k = sysinfox->tom_k;
+Index: svn/src/mainboard/amd/serengeti_cheetah/Options.lb
+===================================================================
+--- svn.orig/src/mainboard/amd/serengeti_cheetah/Options.lb
++++ svn/src/mainboard/amd/serengeti_cheetah/Options.lb
+@@ -218,7 +218,7 @@ default CONFIG_USE_INIT=0
+ ##
+ ## for rev F training on AP purpose
+ ##
+-default CONFIG_AP_CODE_IN_CAR=1
++default CONFIG_AP_CODE_IN_CAR=0
+ default MEM_TRAIN_SEQ=1
+ default WAIT_BEFORE_CPUS_INIT=1
+ 
+Index: svn/src/mainboard/amd/serengeti_cheetah/cache_as_ram_auto.c
+===================================================================
+--- svn.orig/src/mainboard/amd/serengeti_cheetah/cache_as_ram_auto.c
++++ svn/src/mainboard/amd/serengeti_cheetah/cache_as_ram_auto.c
+@@ -338,16 +338,18 @@ void real_main(unsigned long bist, unsig
+         }
+ #endif
+ 
+-#if 1
+ 	needs_reset = optimize_link_coherent_ht();
++#if 0
++	/* On SimNow, this causes issues - remove it for now */
+ 	needs_reset |= optimize_link_incoherent_ht(sysinfo);
++#endif
+ 
+         // fidvid change will issue one LDTSTOP and the HT change will be effective too
+         if (needs_reset) {
+                 print_info("ht reset -\r\n");
+                 soft_reset_x(sysinfo->sbbusn, sysinfo->sbdn);
+         }
+-#endif
++
+ 	allow_all_aps_stop(bsp_apicid);
+ 
+         //It's the time to set ctrl in sysinfo now;
Index: buildrom-devel/packages/linuxbios/serengeti_cheetah.mk
===================================================================
--- buildrom-devel.orig/packages/linuxbios/serengeti_cheetah.mk
+++ buildrom-devel/packages/linuxbios/serengeti_cheetah.mk
@@ -15,12 +15,17 @@ ifeq ($(HAVE_IASL),n)
 $(error To build LinuxBIOS, you need to install the 'iasl' tool)
 endif
 
+
 ifeq ($(CONFIG_PAYLOAD_LAB),y)
 	LINUXBIOS_PATCHES += $(PACKAGE_DIR)/linuxbios/patches/serengeti_cheetah-lab.patch
 else
 	LINUXBIOS_PATCHES += $(PACKAGE_DIR)/linuxbios/patches/serengeti_cheetah-payload.patch
 endif
 
+ifeq ($(CONFIG_SIMNOW),y)
+LINUXBIOS_PATCHES += $(PACKAGE_DIR)/linuxbios/patches/simnow.patch
+endif
+
 LINUXBIOS_BASE_DIR=svn
 LINUXBIOS_URL=svn://linuxbios.org/repos/trunk/LinuxBIOSv2
 LINUXBIOS_TARBALL=linuxbios-svn-$(LINUXBIOS_TAG).tar.gz


More information about the coreboot mailing list