The attached patch fixes vsmsetup for the AMD GX2 .
It was broken at least since rev 4611.
This patch is newconfig build and boot tested, it now gives a :
VSA2 VR signature verified message.

Signed-off-by: Nils Jacobs <[email protected]>

There is at least one "little" problem with this patch:
it breaks KBUILD!
After days of searching i could not find the culprit.
Maybe someone else can fix that, or at least give me a hint?
I also attached the build log.

Thanks,Nils. 
Index: src/cpu/amd/model_gx2/Config.lb
===================================================================
--- src/cpu/amd/model_gx2/Config.lb	(revision 5007)
+++ src/cpu/amd/model_gx2/Config.lb	(working copy)
@@ -4,4 +4,5 @@
 dir /cpu/x86/smm
 driver model_gx2_init.o
 object cpubug.o
+object gdt2.o
 object vsmsetup.o
Index: src/cpu/amd/model_gx2/gdt2.c
===================================================================
--- src/cpu/amd/model_gx2/gdt2.c	(revision 0)
+++ src/cpu/amd/model_gx2/gdt2.c	(revision 0)
@@ -0,0 +1,85 @@
+/*
+ *  Erik Arjan Hendriks <[email protected]>
+ *  Copyright (C) 2000 Scyld.
+ *  Copyright (C) 2000 Scyld Computing Corporation
+ *  Copyright (C) 2001 University of California.  LA-CC Number 01-67.
+ *  Copyright (C) 2005 [email protected]
+ *  Copyright (C) 2007 coresystems GmbH
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ */
+
+
+/* Declare a temporary global descriptor table - 
+ * necessary because the core part of the bios 
+ * no longer sets up any 16 bit segments 
+ */
+
+__asm__ (
+	/* pointer to original gdt */
+	"	.globl gdtarg\n"
+	"gdtarg:			\n"
+	"	.word	gdt_limit	\n"
+	"	.long	gdt	       	\n"		
+
+	/* compute the table limit */
+	"__mygdt_limit = __mygdt_end - __mygdt - 1	\n"
+	"	.globl __mygdtaddr\n"
+	"__mygdtaddr:			\n"
+	"	.word	__mygdt_limit  	\n"
+	"	.long	__mygdt	       	\n"
+
+	"	.globl __mygdt\n"
+	"__mygdt: 		       	\n"
+	/* selgdt 0, unused */
+	"	.word	0x0000, 0x0000	\n"
+	"	.byte	0x00, 0x00, 0x00, 0x00	\n"
+
+	/* selgdt 8, unused */
+	"	.word	0x0000, 0x0000	       	\n"
+	"	.byte	0x00, 0x00, 0x00, 0x00	\n"
+
+	/* selgdt 0x10, flat code segment */
+	"	.word	0xffff, 0x0000	       	\n"
+	"	.byte	0x00, 0x9b, 0xcf, 0x00	\n"	
+
+	/* selgdt 0x18, flat data segment */
+	"	.word	0xffff, 0x0000	       	\n"
+	"	.byte	0x00, 0x93, 0xcf, 0x00	\n"
+
+	/* selgdt 0x20, unused */
+	"	.word	0x0000, 0x0000	       	\n"
+	"	.byte	0x00, 0x00, 0x00, 0x00	\n"
+
+        /* selgdt 0x28 16-bit 64k code at 0x00000000 */
+	"	.word	0xffff, 0x0000	       	\n"
+	"	.byte	0, 0x9a, 0, 0	       	\n"
+
+	/* selgdt 0x30 16-bit 64k data at 0x00000000 */
+	"	.word	0xffff, 0x0000	       	\n"
+	"	.byte	0, 0x92, 0, 0	       	\n"
+
+	"__mygdt_end:				\n"
+
+	/* Declare a pointer to where our idt is going to be i.e. at mem zero */
+	"	.globl __myidt\n"
+	 "__myidt:		\n"
+	 /* 16-bit limit */
+	 "	.word 1023	\n"
+	 /* 24-bit base */
+	 "	.long 0		\n"
+	 "	.word 0		\n"
+);
Index: src/cpu/amd/model_gx2/Makefile.inc
===================================================================
--- src/cpu/amd/model_gx2/Makefile.inc	(revision 5007)
+++ src/cpu/amd/model_gx2/Makefile.inc	(working copy)
@@ -4,4 +4,5 @@
 subdirs-y += ../../x86/smm
 driver-y += model_gx2_init.o
 obj-y += cpubug.o
+obj-y += gdt2.o
 obj-y += vsmsetup.o
Index: src/cpu/amd/model_gx2/vsmsetup.c
===================================================================
--- src/cpu/amd/model_gx2/vsmsetup.c	(revision 5007)
+++ src/cpu/amd/model_gx2/vsmsetup.c	(working copy)
@@ -33,6 +33,7 @@
 #include <cpu/x86/lapic.h>
 #include <cpu/x86/cache.h>
 #include <arch/io.h>
+#include <cpu/amd/gx2def.h>
 #include <cbfs.h>
 
 u32 VSA_vrRead(u16 classIndex);
@@ -208,7 +209,7 @@
 
 	/* ecx gets smm, edx gets sysm. */
 	printk_err("Call real_mode_switch_call_vsm\n");
-//	real_mode_switch_call_vsm(MSR_GLIU0_SMM, MSR_GLIU0_SYSMEM);
+	real_mode_switch_call_vsm(MSR_GLIU0_SMM, MSR_GLIU0_SYSMEM);
 
 	/* Restart Timer 1. */
 	outb(0x56, 0x43);
n...@debian:~/coreboot_5007$ make
    GEN        build.h           
    HOSTCC     romcc (this may take a while)
/home/nils/coreboot_5007/util/romcc/romcc.c: In function ‘scc_transform’:
/home/nils/coreboot_5007/util/romcc/romcc.c:21104: warning: format ‘%5ld’ 
expects type ‘long int’, but argument 3 has type ‘int’
cs5536_early_setup.c:40.73: cs5536_early_setup.c:204.28: auto.c:135.27: 
warning: left shift count >= width of type              
    CC         lib/uart8250.o                                                   
                                                
    CC         lib/memset.o                                                     
                                                
    CC         lib/memcpy.o                                                     
                                                
    CC         lib/memcmp.o                                                     
                                                
    CC         lib/cbfs.o                                                       
                                                
    CC         lib/lzma.o                                                       
                                                
    CC         console/vtxprintf.o                                              
                                                
    CC         arch/i386/lib/printk_init.o                                      
                                                
    CC         arch/i386/lib/cbfs_and_run.o                                     
                                                
    LINK       coreboot                                                         
                                                
/usr/bin/ld: warning: .note.gnu.build-id section discarded, --build-id ignored. 
                                                
    OBJCOPY    coreboot.bootblock                                               
                                                
    HOSTCC     util/cbfstool/common.o                                           
                                                
    HOSTCC     util/cbfstool/compress.o                                         
                                                
    HOSTCXX    util/cbfstool/minilzma.o                                         
                                                
    HOSTCXX    util/cbfstool/LZMAEncoder.o                                      
                                                
    HOSTCXX    util/cbfstool/LZInWindow.o                                       
                                                
    HOSTCXX    util/cbfstool/RangeCoderBit.o                                    
                                                
    HOSTCXX    util/cbfstool/StreamUtils.o                                      
                                                
    HOSTCXX    util/cbfstool/OutBuffer.o                                        
                                                
    HOSTCXX    util/cbfstool/Alloc.o                                            
                                                
    HOSTCXX    util/cbfstool/CRC.o                                              
                                                
    HOSTCC     util/cbfstool/cbfs-mkstage.o                                     
                                                
    HOSTCC     util/cbfstool/cbfs-mkpayload.o                                   
                                                
    HOSTCC     util/cbfstool/cbfstool.o                                         
                                                
    HOSTCXX    util/cbfstool/cbfstool (link)                                    
                                                
    CC         arch/i386/lib/c_start.o                                          
                                                
    CC         mainboard/amd/rumba/mainboard.o                                  
                                                
    CC         console/uart8250_console.o                                       
                                                
    CC         cpu/amd/model_gx2/model_gx2_init.o                               
                                                
    CC         southbridge/amd/cs5536/cs5536.o                                  
                                                
src/southbridge/amd/cs5536/cs5536.c:80: warning: excess elements in struct 
initializer                                          
src/southbridge/amd/cs5536/cs5536.c:80: warning: (near initialization for 
‘acpi_init_table[11]’)                                
src/southbridge/amd/cs5536/cs5536.c:201: warning: function declaration isn’t a 
prototype                                        
src/southbridge/amd/cs5536/cs5536.c:505: warning: no previous prototype for 
‘chipsetinit’                                       
src/southbridge/amd/cs5536/cs5536.c: In function ‘chipsetinit’:                 
                                                
src/southbridge/amd/cs5536/cs5536.c:511: warning: ‘dev’ is used uninitialized 
in this function                                  
    CC         southbridge/amd/cs5536/cs5536_ide.o                              
                                                
src/southbridge/amd/cs5536/cs5536_ide.c:50: warning: ‘ide_enable’ defined but 
not used                                          
    CC         southbridge/amd/cs5536/cs5536_pirq.o                             
                                                
    CC         northbridge/amd/gx2/northbridge.o                                
                                                
src/northbridge/amd/gx2/northbridge.c:28: warning: no previous prototype for 
‘sizeram’                                          
src/northbridge/amd/gx2/northbridge.c: In function ‘irq_init_steering’:         
                                                
src/northbridge/amd/gx2/northbridge.c:130: warning: format ‘%08X’ expects type 
‘unsigned int’, but argument 4 has type ‘struct device *’
src/northbridge/amd/gx2/northbridge.c: At top level:                            
                                                        
src/northbridge/amd/gx2/northbridge.c:194: warning: no previous prototype for 
‘setup_gx2’                                               
src/northbridge/amd/gx2/northbridge.c: In function ‘setup_gx2’:                 
                                                        
src/northbridge/amd/gx2/northbridge.c:243: warning: format ‘%x’ expects type 
‘unsigned int’, but argument 4 has type ‘long unsigned int’
src/northbridge/amd/gx2/northbridge.c:243: warning: format ‘%x’ expects type 
‘unsigned int’, but argument 5 has type ‘long unsigned int’
src/northbridge/amd/gx2/northbridge.c: In function ‘set_resources’:             
                                                        
src/northbridge/amd/gx2/northbridge.c:303: warning: unused variable ‘line’      
                                                        
src/northbridge/amd/gx2/northbridge.c:301: warning: unused variable ‘last’      
                                                        
src/northbridge/amd/gx2/northbridge.c:301: warning: unused variable ‘resource’  
                                                        
src/northbridge/amd/gx2/northbridge.c: At top level:                            
                                                        
src/northbridge/amd/gx2/northbridge.c:375: warning: ‘tolm_test’ defined but not 
used                                                    
    SCONFIG    mainboard/amd/rumba/config.py                                    
                                                        
    SCONFIG    mainboard/amd/rumba/static.c                                     
                                                        
    SCONFIG    mainboard/amd/rumba/static.dot                                   
                                                        
    CC         mainboard/amd/rumba/irq_tables.o                                 
                                                        
    CC         lib/clog2.o                                                      
                                                        
    CC         lib/memmove.o                                                    
                                                        
    CC         lib/malloc.o                                                     
                                                        
    CC         lib/delay.o                                                      
                                                        
    CC         lib/fallback_boot.o                                              
                                                        
    CC         lib/compute_ip_checksum.o                                        
                                                        
    CC         lib/version.o                                                    
                                                        
    CC         lib/gcc.o                                                        
                                                        
    CC         lib/cbmem.o                                                      
                                                        
    CC         boot/hardwaremain.o                                              
                                                        
    CC         boot/selfboot.o                                                  
                                                        
    CC         console/printk.o                                                 
                                                        
    CC         console/console.o                                                
                                                        
    CC         console/vsprintf.o                                               
                                                        
    CC         devices/device.o                                                 
                                                        
    CC         devices/root_device.o                                            
                                                        
    CC         devices/device_util.o                                            
                                                        
    CC         devices/pci_device.o                                             
                                                        
    CC         devices/pcix_device.o                                            
                                                        
    CC         devices/pciexp_device.o                                          
                                                        
    CC         devices/agp_device.o                                             
                                                        
    CC         devices/cardbus_device.o                                         
                                                        
    CC         devices/pnp_device.o                                             
                                                        
    CC         devices/pci_ops.o                                                
                                                        
    CC         devices/smbus_ops.o                                              
                                                        
    CC         devices/pci_rom.o                                                
                                                        
    CC         pc80/mc146818rtc.o                                               
                                                        
src/pc80/mc146818rtc.c:99: warning: ‘rtc_checksum_valid’ defined but not used   
                                                        
src/pc80/mc146818rtc.c:112: warning: ‘rtc_set_checksum’ defined but not used    
                                                        
    CC         pc80/isa-dma.o                                                   
                                                        
    CC         pc80/i8259.o                                                     
                                                        
    CC         pc80/keyboard.o                                                  
                                                        
    CC         arch/i386/boot/boot.o                                            
                                                        
    CC         arch/i386/boot/coreboot_table.o                                  
                                                        
src/arch/i386/boot/coreboot_table.c:176: warning: ‘lb_cmos_checksum’ defined 
but not used                                               
    CC         arch/i386/boot/multiboot.o                                       
                                                        
    CC         arch/i386/boot/gdt.o                                             
                                                        
    CC         arch/i386/boot/tables.o                                          
                                                        
    CC         arch/i386/boot/pirq_routing.o                                    
                                                        
    CC         arch/i386/lib/cpu.o                                              
                                                        
    CC         arch/i386/lib/pci_ops_conf1.o                                    
                                                        
    CC         arch/i386/lib/pci_ops_conf2.o                                    
                                                        
    CC         arch/i386/lib/pci_ops_mmconf.o                                   
                                                        
    CC         arch/i386/lib/pci_ops_auto.o                                     
                                                        
    CC         arch/i386/lib/exception.o                                        
                                                        
    CC         pc80/vga/vga_io.o                                                
                                                        
    CC         cpu/amd/model_gx2/cpubug.o                                       
                                                        
src/cpu/amd/model_gx2/cpubug.c:95: warning: no previous prototype for ‘bug784’  
                                                        
src/cpu/amd/model_gx2/cpubug.c:136: warning: no previous prototype for 
‘eng1398’                                                        
src/cpu/amd/model_gx2/cpubug.c:168: warning: no previous prototype for 
‘eng2900’                                                        
src/cpu/amd/model_gx2/cpubug.c:251: warning: no previous prototype for 
‘bug118253’                                                      
src/cpu/amd/model_gx2/cpubug.c:261: warning: no previous prototype for 
‘bug118339’                                                      
src/cpu/amd/model_gx2/cpubug.c:340: warning: no previous prototype for 
‘disablememoryreadorder’                                         
src/cpu/amd/model_gx2/cpubug.c:350: warning: no previous prototype for ‘cpubug’ 
                                                        
src/cpu/amd/model_gx2/cpubug.c: In function ‘cpubug’:                           
                                                        
src/cpu/amd/model_gx2/cpubug.c:359: warning: too few arguments for format       
                                                        
    CC         cpu/amd/model_gx2/gdt2.o                                         
                                                        
    CC         cpu/amd/model_gx2/vsmsetup.o                                     
                                                        
src/cpu/amd/model_gx2/vsmsetup.c:170: warning: no previous prototype for 
‘VSA_msrRead’                                                  
src/cpu/amd/model_gx2/vsmsetup.c: In function ‘do_vsmbios’:                     
                                                        
src/cpu/amd/model_gx2/vsmsetup.c:198: warning: assignment makes pointer from 
integer without a cast                                     
    CC         northbridge/amd/gx2/northbridgeinit.o                            
                                                        
src/northbridge/amd/gx2/northbridgeinit.c: In function ‘writeglmsr’:            
                                                        
src/northbridge/amd/gx2/northbridgeinit.c:115: warning: format ‘%08x’ expects 
type ‘unsigned int’, but argument 4 has type ‘long unsigned int’
src/northbridge/amd/gx2/northbridgeinit.c:118: warning: format ‘%08x’ expects 
type ‘unsigned int’, but argument 4 has type ‘long unsigned int’
src/northbridge/amd/gx2/northbridgeinit.c: In function ‘SysmemInit’:            
                                                              
src/northbridge/amd/gx2/northbridgeinit.c:167: warning: format ‘%08x’ expects 
type ‘unsigned int’, but argument 4 has type ‘long unsigned int’
src/northbridge/amd/gx2/northbridgeinit.c: In function ‘DMMGL0Init’:            
                                                              
src/northbridge/amd/gx2/northbridgeinit.c:184: warning: format ‘%08x’ expects 
type ‘unsigned int’, but argument 4 has type ‘long int’
src/northbridge/amd/gx2/northbridgeinit.c:195: warning: format ‘%08x’ expects 
type ‘unsigned int’, but argument 4 has type ‘long unsigned int’
src/northbridge/amd/gx2/northbridgeinit.c: In function ‘DMMGL1Init’:
src/northbridge/amd/gx2/northbridgeinit.c:218: warning: format ‘%08x’ expects 
type ‘unsigned int’, but argument 4 has type ‘long unsigned int’
src/northbridge/amd/gx2/northbridgeinit.c: In function ‘SMMGL0Init’:
src/northbridge/amd/gx2/northbridgeinit.c:234: warning: format ‘%08x’ expects 
type ‘unsigned int’, but argument 4 has type ‘long int’
src/northbridge/amd/gx2/northbridgeinit.c:245: warning: format ‘%08x’ expects 
type ‘unsigned int’, but argument 4 has type ‘long unsigned int’
src/northbridge/amd/gx2/northbridgeinit.c: In function ‘SMMGL1Init’:
src/northbridge/amd/gx2/northbridgeinit.c:261: warning: format ‘%08x’ expects 
type ‘unsigned int’, but argument 4 has type ‘long unsigned int’
src/northbridge/amd/gx2/northbridgeinit.c: In function ‘ClockGatingInit’:
src/northbridge/amd/gx2/northbridgeinit.c:510: warning: format ‘%08x’ expects 
type ‘unsigned int’, but argument 4 has type ‘long unsigned int’
src/northbridge/amd/gx2/northbridgeinit.c:513: warning: format ‘%08x’ expects 
type ‘unsigned int’, but argument 4 has type ‘long unsigned int’
src/northbridge/amd/gx2/northbridgeinit.c: In function ‘GeodeLinkPriority’:
src/northbridge/amd/gx2/northbridgeinit.c:529: warning: format ‘%08x’ expects 
type ‘unsigned int’, but argument 4 has type ‘long unsigned int’
src/northbridge/amd/gx2/northbridgeinit.c:533: warning: format ‘%08x’ expects 
type ‘unsigned int’, but argument 4 has type ‘long unsigned int’
src/northbridge/amd/gx2/northbridgeinit.c: In function ‘RCONFInit’:
src/northbridge/amd/gx2/northbridgeinit.c:707: warning: unused variable 
‘RegionProp’
src/northbridge/amd/gx2/northbridgeinit.c: At top level:
src/northbridge/amd/gx2/northbridgeinit.c:771: warning: no previous prototype 
for ‘northbridgeinit’
    CC         northbridge/amd/gx2/chipsetinit.o
src/northbridge/amd/gx2/chipsetinit.c: In function ‘ChipsetGeodeLinkInit’:
src/northbridge/amd/gx2/chipsetinit.c:278: warning: suggest parentheses around 
+ or - inside shift
src/northbridge/amd/gx2/chipsetinit.c: At top level:
src/northbridge/amd/gx2/chipsetinit.c:289: warning: no previous prototype for 
‘chipsetinit’
src/northbridge/amd/gx2/chipsetinit.c:111: warning: ‘pmChipsetInit’ defined but 
not used
    CC         northbridge/amd/gx2/grphinit.o
src/northbridge/amd/gx2/grphinit.c:11: warning: no previous prototype for 
‘graphics_init’
    CC         cpu/x86/tsc/delay_tsc.o
    CC         cpu/x86/lapic/lapic.o
    CC         cpu/x86/lapic/lapic_cpu_init.o
    CC         cpu/x86/lapic/secondary.o
    CC         cpu/x86/cache/cache.o
    AR         coreboot.a
    CC         coreboot_ram.o
    CC         coreboot_ram
/home/nils/coreboot_5007/build/coreboot_ram.o: In function `__rms_16bit':
vsmsetup.c:(.text+0x7b2f): relocation truncated to fit: R_386_16 against `.text'
collect2: ld returned 1 exit status
make: *** [/home/nils/coreboot_5007/build/coreboot_ram] Fout 1
n...@debian:~/coreboot_5007$
-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to