On 18 September 2017 at 18:52, Zeng, Star <[email protected]> wrote: > As I know according to UEFI spec, it has no requirement about the Table needs > to be in runtime memory, but only requires the list (holding Guid value and > Table pointer) needs to be in runtime memory. > > "The InstallConfigurationTable() function is used to maintain the list of > configuration tables that are stored in the EFI System Table. The list is > stored as an array of (GUID, Pointer) pairs. The list must be allocated from > pool memory with PoolType set to EfiRuntimeServicesData." > > > Jiewen, you should know more detail about this feature. >
Whether the list of configuration tables is in runtime memory and whether the tables themselves are in runtime memory are completely different things. Runtime memory will get a mapping in the virtual tables created by the OS, which is only necessary if the firmware itself refers to the contents when runtime services are in progress. Using runtime memory so that it will be automatically protected from allocation by the OS implies that the memory is lost even if the OS does not understand the table type in the first place. And if it does understand the table type, it can reserve the region itself. In summary, using runtime memory for configuration tables is a bad idea, and the fact that it is recommended for SMbios (and there is even a mention that no virtual mapping should be requested, which is impossible) is a mistake IMO. -- Ard. _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

