mirror of
https://github.com/fail0verflow/switch-coreboot.git
synced 2025-05-04 01:39:18 -04:00
UPSTREAM: agesawrapper: Fix endless loop on bettong
AGESA AmdInitEarly() reconfigures the lapic timer in a way that
conflicts with lapic/apic_timer.
This results in an endless loop when printk() is called after
AmdInitEarly() and before the apic_timer is initialized.
This patch forces a reconfiguration of the timer after
AmdInitEarly() is called.
Codepath of the endless loop:
printk()->
(...)->
uart_tx_byte->
uart8250_mem_tx_byte->
udelay()->
start = lapic_read(LAPIC_TMCCT);
do {
value = lapic_read(LAPIC_TMCCT);
} while ((start - value) < ticks);
[lapic_read returns the same value after AmdInitEarly()]
BUG=none
BRANCH=none
TEST=none
Change-Id: I32003d5fc62bcd2a54a91dc536d0e43315642c28
Signed-off-by: Patrick Georgi <pgeorgi@chromium.org>
Original-Commit-Id: b2bb6ad2a7
Original-Change-Id: I1a08789c89401b2bf6d11846ad7c376bfc68801b
Original-Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
Original-Reviewed-on: https://review.coreboot.org/17924
Original-Tested-by: build bot (Jenkins)
Original-Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Original-Reviewed-by: Marshall Dawson <marshalldawson3rd@gmail.com>
Original-Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-on: https://chromium-review.googlesource.com/450237
This commit is contained in:
parent
7d0126c84b
commit
067e4274df
1 changed files with 7 additions and 0 deletions
|
@ -15,6 +15,7 @@
|
|||
|
||||
#include <AGESA.h>
|
||||
#include <cbfs.h>
|
||||
#include <delay.h>
|
||||
#include <cpu/amd/pi/s3_resume.h>
|
||||
#include <cpu/x86/mtrr.h>
|
||||
#include <cpuRegisters.h>
|
||||
|
@ -107,6 +108,12 @@ AGESA_STATUS agesawrapper_amdinitearly(void)
|
|||
|
||||
AmdEarlyParamsPtr->GnbConfig.PsppPolicy = PsppDisabled;
|
||||
status = AmdInitEarly ((AMD_EARLY_PARAMS *)AmdParamStruct.NewStructPtr);
|
||||
/*
|
||||
* init_timer() needs to be called on CZ PI, because AGESA resets the LAPIC reload value
|
||||
* on the AMD_INIT_EARLY call
|
||||
*/
|
||||
if (IS_ENABLED(CONFIG_CPU_AMD_PI_00660F01))
|
||||
init_timer();
|
||||
if (status != AGESA_SUCCESS) agesawrapper_amdreadeventlog(AmdParamStruct.StdHeader.HeapStatus);
|
||||
AmdReleaseStruct (&AmdParamStruct);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue