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