On 2014-11-16 20:04:37, Jordan Justen wrote: > Reviewed-by: Jordan Justen <[email protected]>
Oh, I did have one feedback, that probably can be fixed when committed. For the subject, how about: UefiCpuPkg/CpuDxe: Put APs in wait for SIPI state at ExitBootServices -Jordan > On 2014-11-16 18:18:39, Chen Fan wrote: > > when gBS->ExitBootServices() is called, the APs should avoid > > to access the unsafed buff datas which were allocated by boot services. > > > > Contributed-under: TianoCore Contribution Agreement 1.0 > > Signed-off-by: Chen Fan <[email protected]> > > Tested-by: Gabriel Somlo <[email protected]> > > --- > > UefiCpuPkg/CpuDxe/CpuDxe.c | 33 +++++++++++++++++++++++++++++++++ > > 1 file changed, 33 insertions(+) > > > > diff --git a/UefiCpuPkg/CpuDxe/CpuDxe.c b/UefiCpuPkg/CpuDxe/CpuDxe.c > > index c9df4e1..7303e85 100644 > > --- a/UefiCpuPkg/CpuDxe/CpuDxe.c > > +++ b/UefiCpuPkg/CpuDxe/CpuDxe.c > > @@ -24,6 +24,8 @@ BOOLEAN mIsFlushingGCD; > > UINT64 mValidMtrrAddressMask = > > MTRR_LIB_CACHE_VALID_ADDRESS; > > UINT64 mValidMtrrBitsMask = MTRR_LIB_MSR_VALID_MASK; > > > > +EFI_EVENT mExitBootServicesEvent = (EFI_EVENT)NULL; > > + > > FIXED_MTRR mFixedMtrrTable[] = { > > { > > MTRR_LIB_IA32_MTRR_FIX64K_00000, > > @@ -826,6 +828,28 @@ IdleLoopEventCallback ( > > CpuSleep (); > > } > > > > +/** > > + Callback function for ExitBootServices. > > + > > + @param Event Event whose notification function is being > > invoked. > > + @param Context The pointer to the notification function's > > context, > > + which is implementation-dependent. > > + > > +**/ > > +VOID > > +EFIAPI > > +ExitBootServicesCallback ( > > + IN EFI_EVENT Event, > > + IN VOID *Context > > + ) > > +{ > > + // > > + // Avoid APs access invalid buff datas which allocated by Boot Services, > > + // so we send INIT IPI to APs to let them wait for SIPI state. > > + // > > + SendInitIpiAllExcludingSelf (); > > +} > > + > > > > /** > > Initialize the state information for the CPU Architectural Protocol. > > @@ -900,6 +924,15 @@ InitializeCpu ( > > > > InitializeMpSupport (); > > > > + Status = gBS->CreateEvent ( > > + EVT_SIGNAL_EXIT_BOOT_SERVICES, > > + TPL_CALLBACK, > > + ExitBootServicesCallback, > > + NULL, > > + &mExitBootServicesEvent > > + ); > > + ASSERT_EFI_ERROR (Status); > > + > > return Status; > > } > > > > -- > > 1.9.3 > > ------------------------------------------------------------------------------ Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server from Actuate! Instantly Supercharge Your Business Reports and Dashboards with Interactivity, Sharing, Native Excel Exports, App Integration & more Get technology previously reserved for billion-dollar corporations, FREE http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk _______________________________________________ edk2-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/edk2-devel
