0

I am using Tianocore for booting Linux, I understand that Linux can avail Tianocore Runtime services (reboot, update_capsule etc.), it means that some part of Tianocore code remains untouched by linux. Linux will never touch that memory.

My question, is it some part of Tianocore code (related to Runtime Services) or the whole of Tianocore remains untouched by Linux kernel even after boot ?

and, how does Linux kernel comes to know about memory areas that contain Tianocore image ?

Yu Hao
  • 119,891
  • 44
  • 235
  • 294
user28264
  • 249
  • 2
  • 9
  • 1
    I'm voting to close this question as off-topic because it's not about a concrete programming problem, but about a Linux implementation detail. – MSalters Oct 14 '15 at 06:56
  • Agreed, but if it could be reworded to fit some quite useful answers could follow. – unixsmurf Oct 14 '15 at 10:02
  • TeanoCore is the sample code implementation. It doesn't meant that UEFI firmware on your platform implemented exactly this way. TeanoCore is just a reference code for vendors and UEFI developers. Yes UEFI run-time services (as part of UEFI firmware loaded into dram) stay alive until platform is powered on and is available for OS and there is a UEFI standard that says where exactly the physical address of the access point to UEFI run-time services is and how much memory it occupies. – Alex D Oct 14 '15 at 16:56

1 Answers1

0

There are many memory types that can be allocated by UEFI implementation (using AllocatePool or AllocatePages BootServices), and some of them will remain untouched by UEFI-aware OS, others will be freed. All regions of memory that shouldn't be freed will also be added to e820 memory map to prevent legacy OSes from corrupting them.

Normally, only a small portion of allocated memory is not freed after ExitBS event: runtime services code and data, ACPI tables and MMIO regions.

CodeRush
  • 839
  • 4
  • 10