[coreboot] AGESA: RunLateApTaskOnAllAPs(..) function and ProbeFilter
marcj303 at gmail.com
Fri Mar 8 21:37:45 CET 2013
On Thu, Mar 7, 2013 at 9:53 AM, Аладышев Константин <kostr22 at rambler.ru> wrote:
> AGESA code have two mechanisms to run tasks on AP cores. The first one is
> used before "Relinquish control of APs", and the second one is used after
> I doubt in the second one, cause it is used only in probe filter
> initialization (and now OS can't boot with this feature)
> I walked "RunLateApTaskOnAllAPs(..)" function [the second mechanism] step by
> step and didn't find of how system transmits task poinetrs to APs. It seems
> like code executes on BSC (boot strap core) as many times as APs present in
> AGESA code is very complicated, we traveles a lot to final function, that is
> located in the same file. If someone look at code, I drew little scheme of
> this travel. Here it is: http://tinypic.com/r/25sx7p3/6 Maybe i'am missing
> something, but I can't see the point, where agesa transmits pointers to APs.
> Also i put LibAmdMsrRead function in DisableAllCaches function and read MSRs
> containing NodeId and BSC bits. And for all cases of its execution
> DisableAllCaches prints that NodeId=0 and BSC=1. If i didn't mess up, it
> proves my theory above.
> So... How does "RunLateApTaskOnAllAPs(..)" work?
> Aladyshev Konstantin
> coreboot mailing list: coreboot at coreboot.org
I traced the calls and I agree with you. There is a bug here. AGESA
handles the early AP init, but the later init (post memory setup) uses
the callout BiosRunFuncOnAp and it is only running on the BSC, not
being directed to the APs. The re-entry point in AGESA is
AmdLateRunApTaskWrapper. That function clearly states:
; This entry point is tightly connected with the "AgesaRunFcnOnAp"
; call out. The AGESA software will call the call-out "AgesaRunFcnOnAp";
; the host environment will then call this entry point to have the AP
; execute the requested function. This is needed late in the Post and
; Resume branches for running an AP task since the AGESA software has
; relinquished control of the APs to the host environment.
; The host environment must implement the"AgesaRunFcnOnAp" call-out
; and route execution to the target AP.
The coreboot wrapper BiosRunFuncOnAp isn't doing the AP setup and
execution. This needs to be addressed.
Note, this problem doesn't manifest on APU systems, just multi-node
systems like fam15.
More information about the coreboot