[coreboot] Reset and hang with AGESA on Fam14/SB800 and errors in `agesawrapper_amdinitpost`
Paul Menzel
paulepanter at users.sourceforge.net
Tue Apr 9 10:35:01 CEST 2013
Dear coreboot folks,
I am adding Fam14 to the subject line as, for the ASRock E350M1 and the
issue below, AGESA is used for the processor/northbridge Family 14 and
CIMx for the southbridge SB800.
Am Sonntag, den 07.04.2013, 02:48 +0200 schrieb Paul Menzel:
> using an ASRock E350M1 with coreboot built from
>
> commit 120d4bd8e644fc26f367022f3338264150a7ac4a
> Author: Paul Menzel <paulepanter at users.sourceforge.net>
> Date: Sat Apr 6 21:03:22 2013 +0200
>
> Revert "cbfstool: Replace C++ code with C code"
>
> This reverts commit
> aa3f7ba36ebe3a933aa664f826382f60b31e86f1.
>
> commit 161ccc76ea0f8941a34c5bed323cc9ba1fe0221d
> Author: Ronald G. Minnich <rminnich at gmail.com>
> Date: Fri Apr 5 13:35:29 2013 -0700
>
> exynos5250: add a chip.h file for the display register settings
>
> Reviewed-on: http://review.coreboot.org/3031
>
> and a GRUB payload
>
> $ build/cbfstool build/coreboot.rom print
> coreboot.rom: 4096 kB, bootblocksize 1008, romsize 4194304, offset 0x0
> alignment: 64 bytes
>
> Name Offset Type Size
> cmos_layout.bin 0x0 cmos_layout 1776
> pci1002,9802.rom 0x740 optionrom 65536
> fallback/romstage 0x10780 stage 347052
> fallback/coreboot_ram 0x65380 stage 205910
> fallback/payload 0x97840 payload 197874
> (empty) 0xc7d80 null 3374616
>
> it worked the first time after restarting the system (serial cable *not*
> connected) and therefore testing the newly written image. Then shutting
> it down and turning it on again it reset in several boot attempts after
> loading the GRUB payload(?) *with* the serial cable connected (PSU
> turned off each time for one or two seconds) until it finally
> successfully started again.
>
> […]
> Loading Linux 3.7.5+ ...
> error: disk `mduuid/fb7f3dc5d183cab6121231201a2207b9' not found.
> Loading initial ramdisk ...
This is right before GRUB calls `initrd /initrd.img-3.7.5+`. Note that
the drive is currently not available. No idea if that is causing the
reset.
> coreboot-4.0-3984-g120d4bd Sat Apr 6 21:20:24 CEST 2013 starting...
> BSP Family_Model: 00500f10
> cpu_init_detectedx = 00000000
> agesawrapper_amdinitmmio passed.
> agesawrapper_amdinitreset passed.
> agesawrapper_amdinitearly passed.
> agesawrapper_amdinitpost
> 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.
>
> 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.
>
> 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.
>
> 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.
It is nice when we can just search for error codes. (I wish this would
have been the first thing I tried.)
$ git grep 8040100
src/vendorcode/amd/agesa/f10/AGESA.h:#define CPU_ERROR_HEAP_BUFFER_HANDLE_IS_NOT_PRESENT 0x08040100
src/vendorcode/amd/agesa/f10/Legacy/agesa.inc:CPU_ERROR_HEAP_BUFFER_HANDLE_IS_NOT_PRESENT EQU 008040100h
src/vendorcode/amd/agesa/f12/AGESA.h:#define CPU_ERROR_HEAP_BUFFER_HANDLE_IS_NOT_PRESENT 0x08040100
src/vendorcode/amd/agesa/f12/Legacy/agesa.inc:CPU_ERROR_HEAP_BUFFER_HANDLE_IS_NOT_PRESENT EQU 008040100h
src/vendorcode/amd/agesa/f14/AGESA.h:#define CPU_ERROR_HEAP_BUFFER_HANDLE_IS_NOT_PRESENT 0x08040100
src/vendorcode/amd/agesa/f14/Legacy/agesa.inc:CPU_ERROR_HEAP_BUFFER_HANDLE_IS_NOT_PRESENT EQU 008040100h
src/vendorcode/amd/agesa/f15/AGESA.h:#define CPU_ERROR_HEAP_BUFFER_HANDLE_IS_NOT_PRESENT 0x08040100
src/vendorcode/amd/agesa/f15/Legacy/agesa.inc:CPU_ERROR_HEAP_BUFFER_HANDLE_IS_NOT_PRESENT EQU 008040100h
src/vendorcode/amd/agesa/f15tn/AGESA.h:#define CPU_ERROR_HEAP_BUFFER_HANDLE_IS_NOT_PRESENT 0x08040100ul
src/vendorcode/amd/agesa/f15tn/Legacy/agesa.inc:CPU_ERROR_HEAP_BUFFER_HANDLE_IS_NOT_PRESENT EQU 008040100h
$ nl src/vendorcode/amd/agesa/f14/AGESA.h | grep -B 20 -A 14 CPU_ERROR_HEAP_BUFFER_HANDLE_IS_NOT_PRESENT
1615 /*----------------------------------------------------------------------------
1616 *
1617 * CPU RELATED DEFINITIONS
1618 *
1619 *----------------------------------------------------------------------------
1620 */
1621 // CPU Event definitions.
1622 // Defines used to filter CPU events based on functional blocks
1623 #define CPU_EVENT_PM_EVENT_MASK 0xFF00FF00
1624 #define CPU_EVENT_PM_EVENT_CLASS 0x08000400
1625 //================================================================
1626 // CPU General events
1627 // Heap allocation (AppFunction = 01h)
1628 #define CPU_ERROR_HEAP_BUFFER_IS_NOT_PRESENT 0x08000100
1629 #define CPU_ERROR_HEAP_IS_ALREADY_INITIALIZED 0x08010100
1630 #define CPU_ERROR_HEAP_IS_FULL 0x08020100
1631 #define CPU_ERROR_HEAP_BUFFER_HANDLE_IS_ALREADY_USED 0x08030100
1632 #define CPU_ERROR_HEAP_BUFFER_HANDLE_IS_NOT_PRESENT 0x08040100
1633 // BrandId (AppFunction = 02h)
1634 #define CPU_ERROR_BRANDID_HEAP_NOT_AVAILABLE 0x08000200
1635 // Micro code patch (AppFunction = 03h)
1636 #define CPU_ERROR_MICRO_CODE_PATCH_IS_NOT_LOADED 0x08000300
1637 // Power management (AppFunction = 04h)
1638 #define CPU_EVENT_PM_PSTATE_OVERCURRENT 0x08000400
1639 #define CPU_EVENT_PM_ALL_PSTATE_OVERCURRENT 0x08010400
1640 #define CPU_ERROR_PSTATE_HEAP_NOT_AVAILABLE 0x08020400
1641 #define CPU_ERROR_PM_NB_PSTATE_MISMATCH 0x08030400
1642 // BIST (AppFunction = 05h)
1643 #define CPU_EVENT_BIST_ERROR 0x08000500
1644 //=================================================================
1645 // CPU Feature events
So in this case, we have `CPU_ERROR_HEAP_BUFFER_HANDLE_IS_NOT_PRESENT`.
$ git grep CPU_ERROR_HEAP_BUFFER_HANDLE_IS_NOT_PRESENT src/vendorcode/amd/agesa/f14/
src/vendorcode/amd/agesa/f14/AGESA.h:#define CPU_ERROR_HEAP_BUFFER_HANDLE_IS_NOT_PRESENT 0x08040100
src/vendorcode/amd/agesa/f14/Legacy/agesa.inc:CPU_ERROR_HEAP_BUFFER_HANDLE_IS_NOT_PRESENT EQU 008040100h
src/vendorcode/amd/agesa/f14/Proc/CPU/heapManager.c: CPU_ERROR_HEAP_BUFFER_HANDLE_IS_NOT_PRESENT,
src/vendorcode/amd/agesa/f14/Proc/CPU/heapManager.c: CPU_ERROR_HEAP_BUFFER_HANDLE_IS_NOT_PRESENT,
Looking at
/*---------------------------------------------------------------------------------------*/
/**
* Deallocates a previously allocated buffer in the heap
[…]
*/
AGESA_STATUS
HeapDeallocateBuffer (
IN UINT32 BufferHandle,
IN AMD_CONFIG_PARAMS *StdHeader
)
{
[…]
// If we are still unable to locate the buffer handle, return AGESA_BOUNDS_CHK
if ((BaseAddress != NULL) && (HeapManager->Signature == HEAP_SIGNATURE_VALID)) {
PutEventLog (AGESA_BOUNDS_CHK,
CPU_ERROR_HEAP_BUFFER_HANDLE_IS_NOT_PRESENT,
BufferHandle, 0, 0, 0, StdHeader);
} else {
ASSERT (FALSE);
}
return AGESA_BOUNDS_CHK;
}
}
/*---------------------------------------------------------------------------------------*/
/**
* Locates a previously allocated buffer on the heap.
[…]
*/
AGESA_STATUS
HeapLocateBuffer (
IN OUT LOCATE_HEAP_PTR *LocateHeap,
IN AMD_CONFIG_PARAMS *StdHeader
)
{
[…]
// If we are still unable to deallocate the buffer handle, return AGESA_BOUNDS_CHK
LocateHeap->BufferPtr = NULL;
LocateHeap->BufferSize = 0;
if ((BaseAddress != NULL) && (HeapManager->Signature == HEAP_SIGNATURE_VALID)) {
PutEventLog (AGESA_BOUNDS_CHK,
CPU_ERROR_HEAP_BUFFER_HANDLE_IS_NOT_PRESENT,
LocateHeap->BufferHandle, 0, 0, 0, StdHeader);
} else {
ASSERT (FALSE);
}
return AGESA_BOUNDS_CHK;
}
}
So this seems not the cause for the hang. Another indication is that it
is not the last event log.
> EventLog: EventClass = 7, EventInfo = 4011c00.
> Param1 = 0, Param2 = 0.
> Param3 = 0, Param4 = 0.
> error level: 7
Here I am stuck now. Searching for 4011c00, did not return anything.
Could you somebody please give me a hint.
> agesawrapper_amdinitenv
>
> I think I had already seen this some weeks ago, but did not have time
> yet to report this issue.
I am getting this quite often now. Turning power off and back on to
restart the machine sometimes works and sometimes does not. Repeating
that several times I am often lucky and the system is able to start
normally.
Thanks,
Paul
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20130409/e09ba405/attachment.sig>
More information about the coreboot
mailing list