mirror of https://github.com/acidanthera/audk.git
ArmVirtPkg/NorFlashQemuLib: disregard our primary FV
The primary FV contains the firmware boot image, which is not runtime updatable in our case. So exposing it to the NOR flash driver is undesirable, since it may attempt to modify the NOR flash contents. It is also rather pointless, since we don't keep anything there that we care to expose. (the SEC and PEI phase modules are not executable from DXE context, and the contents of the embedded DXE phase FV are exposed by the DXE core directly via the FVB2 protocol) So let's disregard the NOR flash block that covers the primary FV. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
This commit is contained in:
parent
aa1097921d
commit
5e27deed43
|
@ -75,13 +75,22 @@ NorFlashPlatformGetDevices (
|
||||||
Size = SwapBytes64 (ReadUnaligned64 ((VOID *)&Reg[2]));
|
Size = SwapBytes64 (ReadUnaligned64 ((VOID *)&Reg[2]));
|
||||||
Reg += 4;
|
Reg += 4;
|
||||||
|
|
||||||
|
PropSize -= 4 * sizeof (UINT32);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Disregard any flash devices that overlap with the primary FV.
|
||||||
|
// The firmware is not updatable from inside the guest anyway.
|
||||||
|
//
|
||||||
|
if ((PcdGet64 (PcdFvBaseAddress) + PcdGet32 (PcdFvSize) > Base) &&
|
||||||
|
(Base + Size) > PcdGet64 (PcdFvBaseAddress)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
mNorFlashDevices[Num].DeviceBaseAddress = (UINTN)Base;
|
mNorFlashDevices[Num].DeviceBaseAddress = (UINTN)Base;
|
||||||
mNorFlashDevices[Num].RegionBaseAddress = (UINTN)Base;
|
mNorFlashDevices[Num].RegionBaseAddress = (UINTN)Base;
|
||||||
mNorFlashDevices[Num].Size = (UINTN)Size;
|
mNorFlashDevices[Num].Size = (UINTN)Size;
|
||||||
mNorFlashDevices[Num].BlockSize = QEMU_NOR_BLOCK_SIZE;
|
mNorFlashDevices[Num].BlockSize = QEMU_NOR_BLOCK_SIZE;
|
||||||
Num++;
|
Num++;
|
||||||
|
|
||||||
PropSize -= 4 * sizeof (UINT32);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
[Packages]
|
[Packages]
|
||||||
MdePkg/MdePkg.dec
|
MdePkg/MdePkg.dec
|
||||||
ArmPlatformPkg/ArmPlatformPkg.dec
|
ArmPlatformPkg/ArmPlatformPkg.dec
|
||||||
|
ArmPkg/ArmPkg.dec
|
||||||
ArmVirtPkg/ArmVirtPkg.dec
|
ArmVirtPkg/ArmVirtPkg.dec
|
||||||
|
|
||||||
[LibraryClasses]
|
[LibraryClasses]
|
||||||
|
@ -40,3 +41,7 @@
|
||||||
|
|
||||||
[Depex]
|
[Depex]
|
||||||
gFdtClientProtocolGuid
|
gFdtClientProtocolGuid
|
||||||
|
|
||||||
|
[Pcd]
|
||||||
|
gArmTokenSpaceGuid.PcdFvBaseAddress
|
||||||
|
gArmTokenSpaceGuid.PcdFvSize
|
||||||
|
|
Loading…
Reference in New Issue