OvmfPkg/README: document 4MB flash layout

Cc: Jordan Justen <jordan.l.justen@intel.com>
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=527
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
Laszlo Ersek 2017-05-06 18:09:28 +02:00
parent c9e7907d09
commit f78c8bf2c6
1 changed files with 31 additions and 8 deletions

View File

@ -245,15 +245,20 @@ longer.)
=== OVMF Flash Layout ===
Like all current IA32/X64 system designs, OVMF's firmware
device (rom/flash) appears in QEMU's physical address space
just below 4GB (0x100000000).
Like all current IA32/X64 system designs, OVMF's firmware device (rom/flash)
appears in QEMU's physical address space just below 4GB (0x100000000).
The layout of the firmware device in memory looks like:
OVMF supports building a 1MB, 2MB or 4MB flash image (see the DSC files for the
FD_SIZE_1MB, FD_SIZE_2MB, FD_SIZE_4MB build defines). The base address for the
1MB image in QEMU physical memory is 0xfff00000. The base address for the 2MB
image is 0xffe00000. The base address for the 4MB image is 0xffc00000.
Using the 1MB or 2MB image, the layout of the firmware device in memory looks
like:
+--------------------------------------- 4GB (0x100000000)
| VTF0 (16-bit reset code) and OVMF SEC
| (SECFV)
| (SECFV, 208KB/0x34000)
+--------------------------------------- varies based on flash size
|
| Compressed main firmware image
@ -271,9 +276,27 @@ The layout of the firmware device in memory looks like:
| area (56KB/0xe000)
+--------------------------------------- base address
OVMF supports building a 1MB or a 2MB flash image. The base address for
a 1MB image in QEMU physical memory is 0xfff00000. The base address for
a 2MB image is 0xffe00000.
Using the 4MB image, the layout of the firmware device in memory looks like:
+--------------------------------------- base + 0x400000 (4GB/0x100000000)
| VTF0 (16-bit reset code) and OVMF SEC
| (SECFV, 208KB/0x34000)
+--------------------------------------- base + 0x3cc000
|
| Compressed main firmware image
| (FVMAIN_COMPACT, 3360KB/0x348000)
|
+--------------------------------------- base + 0x84000
| Fault-tolerant write (FTW)
| Spare blocks (264KB/0x42000)
+--------------------------------------- base + 0x42000
| FTW Work block (4KB/0x1000)
+--------------------------------------- base + 0x41000
| Event log area (4KB/0x1000)
+--------------------------------------- base + 0x40000
| Non-volatile variable storage
| area (256KB/0x40000)
+--------------------------------------- base address (0xffc00000)
The code in SECFV locates FVMAIN_COMPACT, and decompresses the
main firmware (MAINFV) into RAM memory at address 0x800000. The