[coreboot] [commit] r4976 - trunk/src/cpu/amd/model_lx

svn at coreboot.org svn at coreboot.org
Thu Dec 10 18:38:30 CET 2009


Author: oxygene
Date: 2009-12-10 18:38:30 +0100 (Thu, 10 Dec 2009)
New Revision: 4976

Modified:
   trunk/src/cpu/amd/model_lx/vsmsetup.c
Log:
Push VSA into CBFS for amd/lx systems. It's not hooked up to
the build system yet, so some additional steps are necessary.
It's not that bad, given that the code didn't work before.

You have to convert the VSA bios image to ELF using the following
commands (assuming i386/32bit binutils, if in doubt, use crossgcc's
i386-elf-* tools):

objcopy --set-start 0x20 --adjust-vma 0x60000 -I binary -O elf32-i386 -B i386 vsa.binary vsa.o
ld -e 0x60020 --section-start .data=0x60000 vsa.o -o vsa.elf

Then, after build, use
cbfstool coreboot.rom add-stage vsa.elf vsa l
to add it to the image.


Signed-off-by: Patrick Georgi <patrick.georgi at coresystems.de>
Acked-by: Peter Stuge <peter at stuge.se>


Modified: trunk/src/cpu/amd/model_lx/vsmsetup.c
===================================================================
--- trunk/src/cpu/amd/model_lx/vsmsetup.c	2009-12-06 12:14:39 UTC (rev 4975)
+++ trunk/src/cpu/amd/model_lx/vsmsetup.c	2009-12-10 17:38:30 UTC (rev 4976)
@@ -7,10 +7,8 @@
 #include <string.h>
 #include <cpu/amd/lxdef.h>
 #include <cpu/amd/vr.h>
+#include <cbfs.h>
 
-// andrei: use the /lib copy of nrv2b
-#include "../lib/nrv2b.c"
-
 #define VSA2_BUFFER			0x60000
 #define VSA2_ENTRY_POINT	0x60020
 
@@ -272,11 +270,9 @@
 {
 	device_t dev;
 	unsigned long busdevfn;
-	unsigned int rom = 0;
 	unsigned char *buf;
 	unsigned int size = SMM_SIZE * 1024;
 	int i;
-	unsigned long ilen, olen;
 
 	printk_err("do_vsmbios\n");
 	/* clear vsm bios data area */
@@ -291,12 +287,10 @@
 	 * much better parameterized
 	 */
 
-	// TODO this is a CBFS candidate
-	//VSA is cat onto the end after LB builds
-	rom = ((unsigned long)0) - (CONFIG_ROM_SIZE + 36 * 1024);
-	buf = (unsigned char *)VSA2_BUFFER;
-	olen = unrv2b((uint8_t *) rom, buf, &ilen);
-	printk_debug("buf ilen %d olen%d\n", ilen, olen);
+	if ((unsigned int)cbfs_load_stage("vsa") != VSA2_ENTRY_POINT) {
+		printk_err("do_vsmbios: Failed to load VSA.\n");
+	}
+	buf = VSA2_BUFFER;
 	printk_debug("buf %p *buf %d buf[256k] %d\n",
 		     buf, buf[0], buf[SMM_SIZE * 1024]);
 	printk_debug("buf[0x20] signature is %x:%x:%x:%x\n",





More information about the coreboot mailing list