[coreboot] AGESA: RunLateApTaskOnAllAPs(..) function and ProbeFilter
Zheng.Bao at amd.com
Mon Mar 11 08:42:41 CET 2013
Yes, it requires IBV to provide a framework to set up the stack and heap to run a task on AP.
It seems unreasonable.
> -----Original Message-----
> From: Marc Jones [mailto:marcj303 at gmail.com]
> Sent: Saturday, March 09, 2013 4:38 AM
> To: Аладышев Константин; bruce.griffith at se-eng.com; Martin Roth; Bao,
> Cc: coreboot at coreboot.org
> Subject: Re: [coreboot] AGESA: RunLateApTaskOnAllAPs(..) function and
> 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
> > it.
> > 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
> > like code executes on BSC (boot strap core) as many times as APs
> present in
> > system.
> > 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
> > 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,
> > proves my theory above.
> > So... How does "RunLateApTaskOnAllAPs(..)" work?
> > ______________
> > Aladyshev Konstantin
> > --
> > coreboot mailing list: coreboot at coreboot.org
> > http://www.coreboot.org/mailman/listinfo/coreboot
> 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:
> ; Purpose:
> ; This entry point is tightly connected with the "AgesaRunFcnOnAp"
> ; call out. The AGESA software will call the call-out
> ; the host environment will then call this entry point to have the
> ; execute the requested function. This is needed late in the Post
> ; Resume branches for running an AP task since the AGESA software
> ; relinquished control of the APs to the host environment.
> ; Dependencies:
> ; 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