one possible issue with ovmf fvb


maobibo
 

Hi Gerd,

I am porting Loongarch Qemu uefi bios, and I want to use reuse ovmf code. And I encounter one problem
when using OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.c

here is piece of code:
-----------------------------------------------------------
Initialize = TRUE;
if (PcdGet64 (PcdEmuVariableNvStoreReserved) != 0) {
Ptr = (VOID*)(UINTN) PcdGet64 (PcdEmuVariableNvStoreReserved);
DEBUG ((
DEBUG_INFO,
"EMU Variable FVB: Using pre-reserved block at %p\n",
Ptr
));
Status = ValidateFvHeader (Ptr);
if (!EFI_ERROR (Status)) {
DEBUG ((DEBUG_INFO, "EMU Variable FVB: Found valid pre-existing FV\n"));
Initialize = FALSE;
}
} else {
Ptr = AllocateRuntimePages (EFI_SIZE_TO_PAGES (EMU_FVB_SIZE));
}

mEmuVarsFvb.BufferPtr = Ptr;

//
// Initialize the main FV header and variable store header
//
if (Initialize) {
SetMem (Ptr, EMU_FVB_SIZE, ERASED_UINT8);
InitializeFvAndVariableStoreHeaders (Ptr);
}
PcdStatus = PcdSet64S (PcdFlashNvStorageVariableBase64, (UINT32)(UINTN) Ptr);
ASSERT_RETURN_ERROR (PcdStatus);

On my tcg vm, Ptr will be 64-bit physical address if memory exceeds 4G, I do not know whether there is similar issue on x64 ovmf.
ditto for the following PcdFlashNvStorageFtwSpareBase/PcdFlashNvStorageFtwWorkingBase

Can uefi bios manage memory beyond 4G?


regards
bibo, mao

Join devel@edk2.groups.io to automatically receive all group messages.