X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=OvmfPkg%2FQemuFlashFvbServicesRuntimeDxe%2FQemuFlash.c;h=c81c58972bf22b9aa6192b47d7fa4ebe33c147da;hb=49fb605709796488589c6f282522283911a575f6;hp=f9c6f5c553a6b3ec04fbe33b7dea65f797dbfd3f;hpb=06f1982a6498731d9ef96a16b3fcd5937f317bd8;p=mirror_edk2.git
diff --git a/OvmfPkg/QemuFlashFvbServicesRuntimeDxe/QemuFlash.c b/OvmfPkg/QemuFlashFvbServicesRuntimeDxe/QemuFlash.c
index f9c6f5c553..c81c58972b 100644
--- a/OvmfPkg/QemuFlashFvbServicesRuntimeDxe/QemuFlash.c
+++ b/OvmfPkg/QemuFlashFvbServicesRuntimeDxe/QemuFlash.c
@@ -2,23 +2,14 @@
OVMF support for QEMU system firmware flash device
Copyright (c) 2009 - 2013, Intel Corporation. All rights reserved.
- This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
**/
-#include "PiDxe.h"
-#include
#include
+#include
#include
-#include
-#include
-#include
#include "QemuFlash.h"
@@ -33,20 +24,11 @@
#define CLEARED_ARRAY_STATUS 0x00
-STATIC UINT8 *mFlashBase = NULL;
+UINT8 *mFlashBase;
+
STATIC UINTN mFdBlockSize = 0;
STATIC UINTN mFdBlockCount = 0;
-
-VOID
-QemuFlashConvertPointers (
- VOID
- )
-{
- EfiConvertPointer (0x0, (VOID **) &mFlashBase);
-}
-
-
STATIC
volatile UINT8*
QemuFlashPtr (
@@ -54,7 +36,7 @@ QemuFlashPtr (
IN UINTN Offset
)
{
- return mFlashBase + (Lba * mFdBlockSize) + Offset;
+ return mFlashBase + ((UINTN)Lba * mFdBlockSize) + Offset;
}
@@ -256,7 +238,17 @@ QemuFlashInitialize (
ASSERT(PcdGet32 (PcdOvmfFirmwareFdSize) % mFdBlockSize == 0);
mFdBlockCount = PcdGet32 (PcdOvmfFirmwareFdSize) / mFdBlockSize;
+ //
+ // execute module specific hooks before probing the flash
+ //
+ QemuFlashBeforeProbe (
+ (EFI_PHYSICAL_ADDRESS)(UINTN) mFlashBase,
+ mFdBlockSize,
+ mFdBlockCount
+ );
+
if (!QemuFlashDetected ()) {
+ ASSERT (!FeaturePcdGet (PcdSmmSmramRequire));
return EFI_WRITE_PROTECTED;
}