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:[email protected]] > Sent: Saturday, March 09, 2013 4:38 AM > To: Аладышев Константин; [email protected]; Martin Roth; Bao, > Zheng > Cc: [email protected] > Subject: Re: [coreboot] AGESA: RunLateApTaskOnAllAPs(..) function and > ProbeFilter > > On Thu, Mar 7, 2013 at 9:53 AM, §Ў§Э§С§Х§н§к§Ц§У §¬§а§Я§г§д§С§Я§д§Ъ§Я > <[email protected]> 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: [email protected] > > 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 -- coreboot mailing list: [email protected] http://www.coreboot.org/mailman/listinfo/coreboot

