\r
Copyright (c) 2009 - 2013, Intel Corporation. All rights reserved.<BR>\r
\r
- This program and the accompanying materials are licensed and made available\r
- under the terms and conditions of the BSD License which accompanies this\r
- distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
-#include "PiDxe.h"\r
-#include <Library/DebugLib.h>\r
#include <Library/BaseMemoryLib.h>\r
+#include <Library/DebugLib.h>\r
#include <Library/PcdLib.h>\r
-#include <Library/UefiBootServicesTableLib.h>\r
-#include <Library/UefiRuntimeLib.h>\r
-#include <Guid/EventGroup.h>\r
\r
#include "QemuFlash.h"\r
\r
#define CLEARED_ARRAY_STATUS 0x00\r
\r
\r
-STATIC UINT8 *mFlashBase = NULL;\r
+UINT8 *mFlashBase;\r
+\r
STATIC UINTN mFdBlockSize = 0;\r
STATIC UINTN mFdBlockCount = 0;\r
\r
-\r
-VOID\r
-QemuFlashConvertPointers (\r
- VOID\r
- )\r
-{\r
- EfiConvertPointer (0x0, (VOID **) &mFlashBase);\r
-}\r
-\r
-\r
STATIC\r
volatile UINT8*\r
QemuFlashPtr (\r
}\r
\r
if (Offset >= mFdBlockSize) {\r
- DEBUG ((EFI_D_INFO, "QEMU Flash: Failed to find probe location\n"));\r
+ DEBUG ((DEBUG_INFO, "QEMU Flash: Failed to find probe location\n"));\r
return FALSE;\r
}\r
\r
- DEBUG ((EFI_D_INFO, "QEMU Flash: Attempting flash detection at %p\n", Ptr));\r
+ DEBUG ((DEBUG_INFO, "QEMU Flash: Attempting flash detection at %p\n", Ptr));\r
\r
OriginalUint8 = *Ptr;\r
*Ptr = CLEAR_STATUS_CMD;\r
ProbeUint8 = *Ptr;\r
if (OriginalUint8 != CLEAR_STATUS_CMD &&\r
ProbeUint8 == CLEAR_STATUS_CMD) {\r
- DEBUG ((EFI_D_INFO, "QemuFlashDetected => FD behaves as RAM\n"));\r
+ DEBUG ((DEBUG_INFO, "QemuFlashDetected => FD behaves as RAM\n"));\r
*Ptr = OriginalUint8;\r
} else {\r
*Ptr = READ_STATUS_CMD;\r
ProbeUint8 = *Ptr;\r
if (ProbeUint8 == OriginalUint8) {\r
- DEBUG ((EFI_D_INFO, "QemuFlashDetected => FD behaves as ROM\n"));\r
+ DEBUG ((DEBUG_INFO, "QemuFlashDetected => FD behaves as ROM\n"));\r
} else if (ProbeUint8 == READ_STATUS_CMD) {\r
- DEBUG ((EFI_D_INFO, "QemuFlashDetected => FD behaves as RAM\n"));\r
+ DEBUG ((DEBUG_INFO, "QemuFlashDetected => FD behaves as RAM\n"));\r
*Ptr = OriginalUint8;\r
} else if (ProbeUint8 == CLEARED_ARRAY_STATUS) {\r
- DEBUG ((EFI_D_INFO, "QemuFlashDetected => FD behaves as FLASH\n"));\r
+ DEBUG ((DEBUG_INFO, "QemuFlashDetected => FD behaves as FLASH\n"));\r
FlashDetected = TRUE;\r
*Ptr = READ_ARRAY_CMD;\r
}\r
}\r
\r
- DEBUG ((EFI_D_INFO, "QemuFlashDetected => %a\n",\r
+ DEBUG ((DEBUG_INFO, "QemuFlashDetected => %a\n",\r
FlashDetected ? "Yes" : "No"));\r
return FlashDetected;\r
}\r
ASSERT(PcdGet32 (PcdOvmfFirmwareFdSize) % mFdBlockSize == 0);\r
mFdBlockCount = PcdGet32 (PcdOvmfFirmwareFdSize) / mFdBlockSize;\r
\r
+ //\r
+ // execute module specific hooks before probing the flash\r
+ //\r
+ QemuFlashBeforeProbe (\r
+ (EFI_PHYSICAL_ADDRESS)(UINTN) mFlashBase,\r
+ mFdBlockSize,\r
+ mFdBlockCount\r
+ );\r
+\r
if (!QemuFlashDetected ()) {\r
+ ASSERT (!FeaturePcdGet (PcdSmmSmramRequire));\r
return EFI_WRITE_PROTECTED;\r
}\r
\r