AGESA: Move debug helper to eventlog file
Change-Id: I2d74f934936e250886526b9c8482f500628a1158 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/31513 Reviewed-by: Marshall Dawson <marshalldawson3rd@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
committed by
Patrick Georgi
parent
ec85e2f55d
commit
d1d4f937ec
@ -1,6 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of the coreboot project.
|
* This file is part of the coreboot project.
|
||||||
*
|
*
|
||||||
|
* Copyright (C) 2016 Kyösti Mälkki
|
||||||
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation; version 2 of the License.
|
* the Free Software Foundation; version 2 of the License.
|
||||||
@ -18,6 +20,7 @@
|
|||||||
#include <northbridge/amd/agesa/state_machine.h>
|
#include <northbridge/amd/agesa/state_machine.h>
|
||||||
#include <northbridge/amd/agesa/BiosCallOuts.h>
|
#include <northbridge/amd/agesa/BiosCallOuts.h>
|
||||||
#include <amdlib.h>
|
#include <amdlib.h>
|
||||||
|
#include <debug_util.h>
|
||||||
#include <AGESA.h>
|
#include <AGESA.h>
|
||||||
#include <AMD.h>
|
#include <AMD.h>
|
||||||
|
|
||||||
@ -40,7 +43,7 @@ static const char *AgesaFunctionNameStr[] = {
|
|||||||
* under vendorcode/ tree.
|
* under vendorcode/ tree.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const char *agesa_struct_name(int state)
|
static const char *agesa_struct_name(AGESA_STRUCT_NAME state)
|
||||||
{
|
{
|
||||||
#if CONFIG(CPU_AMD_AGESA_OPENSOURCE)
|
#if CONFIG(CPU_AMD_AGESA_OPENSOURCE)
|
||||||
if ((state < AMD_INIT_RECOVERY) || (state > AMD_IDENTIFY_DIMMS))
|
if ((state < AMD_INIT_RECOVERY) || (state > AMD_IDENTIFY_DIMMS))
|
||||||
@ -57,6 +60,27 @@ const char *agesa_struct_name(int state)
|
|||||||
return AgesaFunctionNameStr[index];
|
return AgesaFunctionNameStr[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void agesa_state_on_entry(struct agesa_state *task, AGESA_STRUCT_NAME func)
|
||||||
|
{
|
||||||
|
task->apic_id = (u8) (cpuid_ebx(1) >> 24);
|
||||||
|
task->func = func;
|
||||||
|
task->function_name = agesa_struct_name(func);
|
||||||
|
|
||||||
|
printk(BIOS_DEBUG, "\nAPIC %02d: ** Enter %s [%08x]\n",
|
||||||
|
task->apic_id, task->function_name, task->func);
|
||||||
|
}
|
||||||
|
|
||||||
|
void agesa_state_on_exit(struct agesa_state *task,
|
||||||
|
AMD_CONFIG_PARAMS *StdHeader)
|
||||||
|
{
|
||||||
|
printk(BIOS_DEBUG, "APIC %02d: Heap in %s (%d) at 0x%08x\n",
|
||||||
|
task->apic_id, heap_status_name(StdHeader->HeapStatus),
|
||||||
|
StdHeader->HeapStatus, (u32)StdHeader->HeapBasePtr);
|
||||||
|
|
||||||
|
printk(BIOS_DEBUG, "APIC %02d: ** Exit %s [%08x]\n",
|
||||||
|
task->apic_id, task->function_name, task->func);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Possible AGESA_STATUS values:
|
* Possible AGESA_STATUS values:
|
||||||
*
|
*
|
||||||
|
@ -26,7 +26,6 @@
|
|||||||
#include <northbridge/amd/agesa/BiosCallOuts.h>
|
#include <northbridge/amd/agesa/BiosCallOuts.h>
|
||||||
#include <amdlib.h>
|
#include <amdlib.h>
|
||||||
|
|
||||||
#include <debug_util.h>
|
|
||||||
#include <AMD.h>
|
#include <AMD.h>
|
||||||
|
|
||||||
#if CONFIG(CPU_AMD_AGESA_OPENSOURCE)
|
#if CONFIG(CPU_AMD_AGESA_OPENSOURCE)
|
||||||
@ -231,38 +230,6 @@ static AGESA_STATUS ramstage_dispatch(struct sysinfo *cb,
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* DEBUG trace helper */
|
|
||||||
|
|
||||||
struct agesa_state
|
|
||||||
{
|
|
||||||
u8 apic_id;
|
|
||||||
|
|
||||||
AGESA_STRUCT_NAME func;
|
|
||||||
const char *function_name;
|
|
||||||
};
|
|
||||||
|
|
||||||
static void state_on_entry(struct agesa_state *task, AGESA_STRUCT_NAME func,
|
|
||||||
const char *struct_name)
|
|
||||||
{
|
|
||||||
task->apic_id = (u8) (cpuid_ebx(1) >> 24);
|
|
||||||
task->func = func;
|
|
||||||
task->function_name = struct_name;
|
|
||||||
|
|
||||||
printk(BIOS_DEBUG, "\nAPIC %02d: ** Enter %s [%08x]\n",
|
|
||||||
task->apic_id, task->function_name, task->func);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void state_on_exit(struct agesa_state *task,
|
|
||||||
AMD_CONFIG_PARAMS *StdHeader)
|
|
||||||
{
|
|
||||||
printk(BIOS_DEBUG, "APIC %02d: Heap in %s (%d) at 0x%08x\n",
|
|
||||||
task->apic_id, heap_status_name(StdHeader->HeapStatus),
|
|
||||||
StdHeader->HeapStatus, (u32)StdHeader->HeapBasePtr);
|
|
||||||
|
|
||||||
printk(BIOS_DEBUG, "APIC %02d: ** Exit %s [%08x]\n",
|
|
||||||
task->apic_id, task->function_name, task->func);
|
|
||||||
}
|
|
||||||
|
|
||||||
int agesa_execute_state(struct sysinfo *cb, AGESA_STRUCT_NAME func)
|
int agesa_execute_state(struct sysinfo *cb, AGESA_STRUCT_NAME func)
|
||||||
{
|
{
|
||||||
AMD_INTERFACE_PARAMS aip;
|
AMD_INTERFACE_PARAMS aip;
|
||||||
@ -272,13 +239,12 @@ int agesa_execute_state(struct sysinfo *cb, AGESA_STRUCT_NAME func)
|
|||||||
} agesa_params;
|
} agesa_params;
|
||||||
void *buf = NULL;
|
void *buf = NULL;
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
const char *state_name = agesa_struct_name(func);
|
|
||||||
|
|
||||||
AGESA_STATUS status, final;
|
AGESA_STATUS status, final;
|
||||||
|
|
||||||
struct agesa_state task;
|
struct agesa_state task;
|
||||||
memset(&task, 0, sizeof(task));
|
memset(&task, 0, sizeof(task));
|
||||||
state_on_entry(&task, func, state_name);
|
agesa_state_on_entry(&task, func);
|
||||||
|
|
||||||
aip.StdHeader = cb->StdHeader;
|
aip.StdHeader = cb->StdHeader;
|
||||||
|
|
||||||
@ -302,13 +268,13 @@ int agesa_execute_state(struct sysinfo *cb, AGESA_STRUCT_NAME func)
|
|||||||
if (ENV_RAMSTAGE)
|
if (ENV_RAMSTAGE)
|
||||||
final = ramstage_dispatch(cb, func, StdHeader);
|
final = ramstage_dispatch(cb, func, StdHeader);
|
||||||
|
|
||||||
agesawrapper_trace(final, StdHeader, state_name);
|
agesawrapper_trace(final, StdHeader, task.function_name);
|
||||||
ASSERT(final < AGESA_FATAL);
|
ASSERT(final < AGESA_FATAL);
|
||||||
|
|
||||||
status = amd_release_struct(&aip);
|
status = amd_release_struct(&aip);
|
||||||
ASSERT(status == AGESA_SUCCESS);
|
ASSERT(status == AGESA_SUCCESS);
|
||||||
|
|
||||||
state_on_exit(&task, &aip.StdHeader);
|
agesa_state_on_exit(&task, &aip.StdHeader);
|
||||||
|
|
||||||
return (final < AGESA_FATAL) ? 0 : -1;
|
return (final < AGESA_FATAL) ? 0 : -1;
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,6 @@
|
|||||||
#define HAS_LEGACY_WRAPPER CONFIG(BINARYPI_LEGACY_WRAPPER)
|
#define HAS_LEGACY_WRAPPER CONFIG(BINARYPI_LEGACY_WRAPPER)
|
||||||
|
|
||||||
/* eventlog */
|
/* eventlog */
|
||||||
const char *agesa_struct_name(int state);
|
|
||||||
void agesawrapper_trace(AGESA_STATUS ret, AMD_CONFIG_PARAMS *StdHeader, const char *func);
|
void agesawrapper_trace(AGESA_STATUS ret, AMD_CONFIG_PARAMS *StdHeader, const char *func);
|
||||||
AGESA_STATUS agesawrapper_amdreadeventlog(UINT8 HeapStatus);
|
AGESA_STATUS agesawrapper_amdreadeventlog(UINT8 HeapStatus);
|
||||||
|
|
||||||
@ -54,6 +53,17 @@ void board_BeforeAgesa(struct sysinfo *cb);
|
|||||||
void platform_once(struct sysinfo *cb);
|
void platform_once(struct sysinfo *cb);
|
||||||
|
|
||||||
void agesa_set_interface(struct sysinfo *cb);
|
void agesa_set_interface(struct sysinfo *cb);
|
||||||
|
|
||||||
|
struct agesa_state {
|
||||||
|
u8 apic_id;
|
||||||
|
|
||||||
|
AGESA_STRUCT_NAME func;
|
||||||
|
const char *function_name;
|
||||||
|
};
|
||||||
|
|
||||||
|
void agesa_state_on_entry(struct agesa_state *task, AGESA_STRUCT_NAME func);
|
||||||
|
void agesa_state_on_exit(struct agesa_state *task,
|
||||||
|
AMD_CONFIG_PARAMS *StdHeader);
|
||||||
int agesa_execute_state(struct sysinfo *cb, AGESA_STRUCT_NAME func);
|
int agesa_execute_state(struct sysinfo *cb, AGESA_STRUCT_NAME func);
|
||||||
|
|
||||||
/* AGESA dispatchers */
|
/* AGESA dispatchers */
|
||||||
|
Reference in New Issue
Block a user