Hi all,
I'm still suffering with following errors ONLY when using 4 core Trinity CPU on
the F2A85-M:
EventLog: EventClass = 2, EventInfo = 8040100.
Param1 = a00a, Param2 = 0.
Param3 = 0, Param4 = 0.
EventLog: EventClass = 2, EventInfo = 8040100.
Param1 = a00a, Param2 = 0.
Param3 = 0, Param4 = 0.
...
EventLog: EventClass = 2, EventInfo = 8040100.
Param1 = a00a, Param2 = 0.
Param3 = 0, Param4 = 0.
EventLog: EventClass = 2, EventInfo = 8040100.
Param1 = a00a, Param2 = 0.
Param3 = 0, Param4 = 0.
agesawrapper_amdinitpost failed: 4
Got past agesawrapper_amdinitpost
There is about 10? of them. System seems to boot fine. I still dont know what
those are but I decided to attack the problem via a backtrace.
I implemented a simple backtracer which I placed in the AGESA PutEventLog()
function. Once the function is visited I print:
agesawrapper_amdinitreset Fch OEM config in INIT RESET Done
EVENT BACKTRACE:
0xff82cfa7
0xff82f333
0xff82f377
0xff834e5a
0xff8349b2
0xff838bf3
0xff83663d
0xff837495
0xff861999
0xff8346f1
0xff82d661
0xff81db3c
0xff81a355
EVENT BACKTRACE:
...
Then with simple(stupid) script:
cat - | while read line ; do
unset A
if echo $line | grep ^0x > /dev/null ; then
A=`addr2line -e build/cbfs/fallback/romstage_xip.elf "$line" | tr -d "\n"`
fi
echo $line $A
done
It turns to:
agesawrapper_amdinitreset Fch OEM config in INIT RESET Done
EVENT BACKTRACE:
0xff82cfa7
/home/ruik/coreboot/src/vendorcode/amd/agesa/f15tn/Proc/CPU/heapManager.c:662
0xff82f333
/home/ruik/coreboot/src/vendorcode/amd/agesa/f15tn/Proc/Common/S3SaveState.c:217
0xff82f377
/home/ruik/coreboot/src/vendorcode/amd/agesa/f15tn/Proc/Common/S3SaveState.c:256
0xff834e5a
/home/ruik/coreboot/src/vendorcode/amd/agesa/f15tn/Proc/GNB/Modules/GnbCommonLib/GnbLibPciAcc.c:96
0xff8349b2
/home/ruik/coreboot/src/vendorcode/amd/agesa/f15tn/Proc/GNB/Modules/GnbCommonLib/GnbLib.c:161
0xff838bf3
/home/ruik/coreboot/src/vendorcode/amd/agesa/f15tn/Proc/GNB/Modules/GnbInitTN/GnbRegisterAccTN.c:1241
0xff83663d
/home/ruik/coreboot/src/vendorcode/amd/agesa/f15tn/Proc/GNB/Modules/GnbInitTN/GfxLibTN.c:330
0xff837495
/home/ruik/coreboot/src/vendorcode/amd/agesa/f15tn/Proc/GNB/Modules/GnbInitTN/GnbEarlyInitTN.c:840
0xff861999
/home/ruik/coreboot/src/vendorcode/amd/agesa/f15tn/Proc/GNB/Common/GnbLibFeatures.c:99
0xff8346f1
/home/ruik/coreboot/src/vendorcode/amd/agesa/f15tn/Proc/GNB/GnbInitAtEarly.c:122
0xff82d661
/home/ruik/coreboot/src/vendorcode/amd/agesa/f15tn/Proc/Common/AmdInitEarly.c:270
0xff81db3c /home/ruik/coreboot/src/mainboard/asus/f2a85-m/agesawrapper.c:234
0xff81a355 /home/ruik/coreboot/src/mainboard/asus/f2a85-m/romstage.c:135
EVENT BACKTRACE:
It makes me wonder why we dont have such backtrace function available? Or did I
miss something? Anyway I'm attaching a diff how this was hacked in. I wont have
time for this for couple of days. It could be handy for someone else, or even
better make it a real feature :)
Thanks
Rudolf
diff --git a/Makefile.inc b/Makefile.inc
index 315a9d9..ea57a8b 100644
--- a/Makefile.inc
+++ b/Makefile.inc
@@ -223,7 +223,8 @@ CFLAGS += -Wstrict-aliasing -Wshadow
ifeq ($(CONFIG_WARNINGS_ARE_ERRORS),y)
CFLAGS += -Werror
endif
-CFLAGS += -fno-common -ffreestanding -fno-builtin -fomit-frame-pointer
+CFLAGS += -fno-common -ffreestanding -fno-builtin
+#-fomit-frame-pointer
additional-dirs := $(objutil)/cbfstool $(objutil)/romcc $(objutil)/ifdtool \
$(objutil)/ifdfake $(objutil)/options
diff --git a/src/arch/x86/lib/c_start.S b/src/arch/x86/lib/c_start.S
index faea22d..8df4324 100644
--- a/src/arch/x86/lib/c_start.S
+++ b/src/arch/x86/lib/c_start.S
@@ -88,6 +88,7 @@ _start:
#if CONFIG_GDB_WAIT
call gdb_stub_breakpoint
#endif
+ xorl %ebp, %ebp /* construct valid stackframe */
call main
/* NOTREACHED */
.Lhlt:
diff --git a/src/cpu/amd/agesa/cache_as_ram.inc b/src/cpu/amd/agesa/cache_as_ram.inc
index 449cf69..288f5d2 100644
--- a/src/cpu/amd/agesa/cache_as_ram.inc
+++ b/src/cpu/amd/agesa/cache_as_ram.inc
@@ -76,6 +76,7 @@ cache_as_ram_setup:
pushl %ebx /* init detected */
pushl %edx /* bist */
+ xorl %ebp, %ebp /*set stack frame end */
call cache_as_ram_main
/* Should never see this postcode */
diff --git a/src/cpu/x86/lapic/secondary.S b/src/cpu/x86/lapic/secondary.S
index 6edcd0a..5c79e87 100644
--- a/src/cpu/x86/lapic/secondary.S
+++ b/src/cpu/x86/lapic/secondary.S
@@ -59,7 +59,7 @@ __ap_protected_start:
movl secondary_cpu_index, %edi
pushl %edi
movl %eax, secondary_stack
-
+ xorl %ebp, %ebp /* valid stackframe */
call secondary_cpu_init
1: hlt
jmp 1b
diff --git a/src/vendorcode/amd/agesa/f15tn/Proc/CPU/cpuEventLog.c b/src/vendorcode/amd/agesa/f15tn/Proc/CPU/cpuEventLog.c
index f73f50b..c02a7b0 100644
--- a/src/vendorcode/amd/agesa/f15tn/Proc/CPU/cpuEventLog.c
+++ b/src/vendorcode/amd/agesa/f15tn/Proc/CPU/cpuEventLog.c
@@ -189,6 +189,29 @@ EventLogInitialization (
* @param[in] StdHeader Header for library and services
*
*/
+#define get_bp(bp) asm("movl %%ebp, %0" : "=r" (bp) :)
+
+static void do_backtrace(void)
+{
+//uint32_t ebp;
+uint32_t *p;
+get_bp(p);
+printk(BIOS_DEBUG, "EVENT BACKTRACE:\n");
+
+do {
+
+if (p[0] != 0) {
+ printk(BIOS_DEBUG, "0x%08x\n", p[1]);
+}
+p = (uint32_t *) p[0];
+
+
+} while (p != NULL);
+printk(BIOS_DEBUG, "\n");
+}
+
+
+
VOID
PutEventLog (
IN AGESA_STATUS EventClass,
@@ -213,6 +236,8 @@ PutEventLog (
(EventClass == AGESA_UNSUPPORTED) ? "UNSUPPORTED" :
"SUCCESS", EventInfo, DataParam1, DataParam2, DataParam3, DataParam4);
+ do_backtrace();
+
AgesaEventAlloc = NULL;
GetEventLogHeapPointer (&AgesaEventAlloc, StdHeader);
ASSERT (AgesaEventAlloc != NULL);
--
coreboot mailing list: coreboot@coreboot.org
http://www.coreboot.org/mailman/listinfo/coreboot