[coreboot] AGESA: RunLateApTaskOnAllAPs(..) function and ProbeFilter

Bao, Zheng 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.

Zheng

> -----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,
> Zheng
> Cc: coreboot at coreboot.org
> Subject: Re: [coreboot] AGESA: RunLateApTaskOnAllAPs(..) function and
> ProbeFilter
> 
> 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
> > 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
> seems
> > 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
> 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
> > 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
> "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.
> ;
> ;   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.
> 
> Marc
> 
> --
> http://se-eng.com





More information about the coreboot mailing list