Thanks for Zach's clarify, then I think that makes sense BIOS has problem if kernel need call ExitBootServices() more then 2 times.
Thanks Joey Lee 於 二,2013-06-18 於 04:20 +0000,Zachary Bobroff 提到: > The timer is shutdown before callbacks on exitbootservices are called. The > bios should be entirely single threaded at this point unless Linux has > started some other CPUs. So exitbootservices will not return until each > until each callback is complete. In short, then it would return the status > of failure if the memory map has changed, success otherwise. The callbacks > are not called on any subsequent call to exitbootservices, so the map should > stay the same then. > > Sent from my iPhone > > On Jun 17, 2013, at 10:48 PM, "joeyli" <j...@suse.com> wrote: > > > Hi Zach, > > > > 於 二,2013-06-18 於 00:18 +0000,Zachary Bobroff 提到: > >> All, > >> > >>>> Why a single retry is having reasonable guarantees to work when the > >> original one failed (nothing prevents an event handler to do another > >> allocation the next time through). > >> > >> This patch is being submitted because of the potential issues that > >> occur when 3rd party option ROMs are signaled by the ExitBootServices > >> event. At the time they are signaled, they can perform any number of > >> actions that would change the EFI Memory map. This wasn't actually > >> seen with our default implementation of our firmware, it was seen when > >> this plug-in card's option rom was run. > >> > >> We only need to retry once because of what is in the UEFI > >> specification 2.3.1 Errata C. The exact verbiage is as follows: > >> > >> The ExitBootServices() function is called by the currently executing > >> EFI OS loader image to terminate all boot services. On success, the > >> loader becomes responsible for the continued operation of the system. > >> All events of type EVT_SIGNAL_EXIT_BOOT_SERVICES must be signaled > >> before ExitBootServices() returns EFI_SUCCESS. The events are only > >> signaled once even if ExitBootServices() is called multiple times. > >> > >> Since the firmware will only signal the ExitBootServices event once, > >> the code that has the potential to change the memory map will only be > >> signaled on the first call to exit boot services. > > > > Does it possible have any delay time of 3rd party ROMs to change EFI > > memory map after they are signaled? > > or ExitBootServices() will wait all 3rd party ROMs updated memory map > > finished then return true/false to kernel? > > > > > > Thanks a lot! > > Joey Lee > > > > The information contained in this message may be confidential and proprietary > to American Megatrends, Inc. This communication is intended to be read only > by the individual or entity to whom it is addressed or by their designee. If > the reader of this message is not the intended recipient, you are on notice > that any distribution of this message, in any form, is strictly prohibited. > Please promptly notify the sender by reply e-mail or by telephone at > 770-246-8600, and then delete or destroy all copies of the transmission. > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/