--- /dev/null
+/** @file\r
+\r
+ Stateful and implicitly initialized fw_cfg library implementation.\r
+\r
+ Copyright (C) 2013, Red Hat, Inc.\r
+ Copyright (c) 2011 - 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, WITHOUT\r
+ WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+**/\r
+\r
+#include <Library/DebugLib.h>\r
+#include <Library/QemuFwCfgLib.h>\r
+\r
+#include "QemuFwCfgLibInternal.h"\r
+\r
+STATIC BOOLEAN mQemuFwCfgSupported = FALSE;\r
+STATIC BOOLEAN mQemuFwCfgDmaSupported;\r
+\r
+\r
+/**\r
+ Returns a boolean indicating if the firmware configuration interface\r
+ is available or not.\r
+\r
+ This function may change fw_cfg state.\r
+\r
+ @retval TRUE The interface is available\r
+ @retval FALSE The interface is not available\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+QemuFwCfgIsAvailable (\r
+ VOID\r
+ )\r
+{\r
+ return InternalQemuFwCfgIsAvailable ();\r
+}\r
+\r
+\r
+RETURN_STATUS\r
+EFIAPI\r
+QemuFwCfgInitialize (\r
+ VOID\r
+ )\r
+{\r
+ UINT32 Signature;\r
+ UINT32 Revision;\r
+\r
+ //\r
+ // Enable the access routines while probing to see if it is supported.\r
+ // For probing we always use the IO Port (IoReadFifo8()) access method.\r
+ //\r
+ mQemuFwCfgSupported = TRUE;\r
+ mQemuFwCfgDmaSupported = FALSE;\r
+\r
+ QemuFwCfgSelectItem (QemuFwCfgItemSignature);\r
+ Signature = QemuFwCfgRead32 ();\r
+ DEBUG ((EFI_D_INFO, "FW CFG Signature: 0x%x\n", Signature));\r
+ QemuFwCfgSelectItem (QemuFwCfgItemInterfaceVersion);\r
+ Revision = QemuFwCfgRead32 ();\r
+ DEBUG ((EFI_D_INFO, "FW CFG Revision: 0x%x\n", Revision));\r
+ if ((Signature != SIGNATURE_32 ('Q', 'E', 'M', 'U')) ||\r
+ (Revision < 1)\r
+ ) {\r
+ DEBUG ((EFI_D_INFO, "QemuFwCfg interface not supported.\n"));\r
+ mQemuFwCfgSupported = FALSE;\r
+ return RETURN_SUCCESS;\r
+ }\r
+\r
+ if ((Revision & FW_CFG_F_DMA) == 0) {\r
+ DEBUG ((DEBUG_INFO, "QemuFwCfg interface (IO Port) is supported.\n"));\r
+ } else {\r
+ mQemuFwCfgDmaSupported = TRUE;\r
+ DEBUG ((DEBUG_INFO, "QemuFwCfg interface (DMA) is supported.\n"));\r
+ }\r
+ return RETURN_SUCCESS;\r
+}\r
+\r
+\r
+/**\r
+ Returns a boolean indicating if the firmware configuration interface is\r
+ available for library-internal purposes.\r
+\r
+ This function never changes fw_cfg state.\r
+\r
+ @retval TRUE The interface is available internally.\r
+ @retval FALSE The interface is not available internally.\r
+**/\r
+BOOLEAN\r
+InternalQemuFwCfgIsAvailable (\r
+ VOID\r
+ )\r
+{\r
+ return mQemuFwCfgSupported;\r
+}\r
+\r
+/**\r
+ Returns a boolean indicating whether QEMU provides the DMA-like access method\r
+ for fw_cfg.\r
+\r
+ @retval TRUE The DMA-like access method is available.\r
+ @retval FALSE The DMA-like access method is unavailable.\r
+**/\r
+BOOLEAN\r
+InternalQemuFwCfgDmaIsAvailable (\r
+ VOID\r
+ )\r
+{\r
+ return mQemuFwCfgDmaSupported;\r
+}\r
--- /dev/null
+## @file\r
+#\r
+# Stateful, implicitly initialized fw_cfg library.\r
+#\r
+# Copyright (C) 2013, Red Hat, Inc.\r
+# Copyright (c) 2008 - 2012, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>\r
+#\r
+# This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this 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
+#\r
+##\r
+\r
+[Defines]\r
+ INF_VERSION = 0x00010005\r
+ BASE_NAME = QemuFwCfgDxeLib\r
+ FILE_GUID = 80474090-55e7-4c28-b25c-9f236ba41f28\r
+ MODULE_TYPE = BASE\r
+ VERSION_STRING = 1.0\r
+ LIBRARY_CLASS = QemuFwCfgLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER\r
+\r
+ CONSTRUCTOR = QemuFwCfgInitialize\r
+\r
+#\r
+# The following information is for reference only and not required by the build tools.\r
+#\r
+# VALID_ARCHITECTURES = IA32 X64\r
+#\r
+\r
+[Sources]\r
+ QemuFwCfgLibInternal.h\r
+ QemuFwCfgLib.c\r
+ QemuFwCfgDxe.c\r
+\r
+[Packages]\r
+ MdePkg/MdePkg.dec\r
+ OvmfPkg/OvmfPkg.dec\r
+\r
+[LibraryClasses]\r
+ BaseLib\r
+ BaseMemoryLib\r
+ DebugLib\r
+ IoLib\r
+ MemoryAllocationLib\r
+\r
+++ /dev/null
-## @file\r
-#\r
-# Stateful, implicitly initialized fw_cfg library.\r
-#\r
-# Copyright (C) 2013, Red Hat, Inc.\r
-# Copyright (c) 2008 - 2012, Intel Corporation. All rights reserved.<BR>\r
-# Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>\r
-#\r
-# This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this 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
-#\r
-##\r
-\r
-[Defines]\r
- INF_VERSION = 0x00010005\r
- BASE_NAME = QemuFwCfgLib\r
- FILE_GUID = fdd53716-31e1-4acc-9007-8bd5d877c96f\r
- MODULE_TYPE = BASE\r
- VERSION_STRING = 1.0\r
- LIBRARY_CLASS = QemuFwCfgLib|PEIM DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER\r
-\r
- CONSTRUCTOR = QemuFwCfgInitialize\r
-\r
-#\r
-# The following information is for reference only and not required by the build tools.\r
-#\r
-# VALID_ARCHITECTURES = IA32 X64\r
-#\r
-\r
-[Sources]\r
- QemuFwCfgLibInternal.h\r
- QemuFwCfgLib.c\r
- QemuFwCfgPeiDxe.c\r
-\r
-[Packages]\r
- MdePkg/MdePkg.dec\r
- OvmfPkg/OvmfPkg.dec\r
-\r
-[LibraryClasses]\r
- BaseLib\r
- BaseMemoryLib\r
- DebugLib\r
- IoLib\r
- MemoryAllocationLib\r
-\r
--- /dev/null
+/** @file\r
+\r
+ Stateful and implicitly initialized fw_cfg library implementation.\r
+\r
+ Copyright (C) 2013, Red Hat, Inc.\r
+ Copyright (c) 2011 - 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, WITHOUT\r
+ WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+**/\r
+\r
+#include <Library/DebugLib.h>\r
+#include <Library/QemuFwCfgLib.h>\r
+\r
+#include "QemuFwCfgLibInternal.h"\r
+\r
+STATIC BOOLEAN mQemuFwCfgSupported = FALSE;\r
+STATIC BOOLEAN mQemuFwCfgDmaSupported;\r
+\r
+\r
+/**\r
+ Returns a boolean indicating if the firmware configuration interface\r
+ is available or not.\r
+\r
+ This function may change fw_cfg state.\r
+\r
+ @retval TRUE The interface is available\r
+ @retval FALSE The interface is not available\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+QemuFwCfgIsAvailable (\r
+ VOID\r
+ )\r
+{\r
+ return InternalQemuFwCfgIsAvailable ();\r
+}\r
+\r
+\r
+RETURN_STATUS\r
+EFIAPI\r
+QemuFwCfgInitialize (\r
+ VOID\r
+ )\r
+{\r
+ UINT32 Signature;\r
+ UINT32 Revision;\r
+\r
+ //\r
+ // Enable the access routines while probing to see if it is supported.\r
+ // For probing we always use the IO Port (IoReadFifo8()) access method.\r
+ //\r
+ mQemuFwCfgSupported = TRUE;\r
+ mQemuFwCfgDmaSupported = FALSE;\r
+\r
+ QemuFwCfgSelectItem (QemuFwCfgItemSignature);\r
+ Signature = QemuFwCfgRead32 ();\r
+ DEBUG ((EFI_D_INFO, "FW CFG Signature: 0x%x\n", Signature));\r
+ QemuFwCfgSelectItem (QemuFwCfgItemInterfaceVersion);\r
+ Revision = QemuFwCfgRead32 ();\r
+ DEBUG ((EFI_D_INFO, "FW CFG Revision: 0x%x\n", Revision));\r
+ if ((Signature != SIGNATURE_32 ('Q', 'E', 'M', 'U')) ||\r
+ (Revision < 1)\r
+ ) {\r
+ DEBUG ((EFI_D_INFO, "QemuFwCfg interface not supported.\n"));\r
+ mQemuFwCfgSupported = FALSE;\r
+ return RETURN_SUCCESS;\r
+ }\r
+\r
+ if ((Revision & FW_CFG_F_DMA) == 0) {\r
+ DEBUG ((DEBUG_INFO, "QemuFwCfg interface (IO Port) is supported.\n"));\r
+ } else {\r
+ mQemuFwCfgDmaSupported = TRUE;\r
+ DEBUG ((DEBUG_INFO, "QemuFwCfg interface (DMA) is supported.\n"));\r
+ }\r
+ return RETURN_SUCCESS;\r
+}\r
+\r
+\r
+/**\r
+ Returns a boolean indicating if the firmware configuration interface is\r
+ available for library-internal purposes.\r
+\r
+ This function never changes fw_cfg state.\r
+\r
+ @retval TRUE The interface is available internally.\r
+ @retval FALSE The interface is not available internally.\r
+**/\r
+BOOLEAN\r
+InternalQemuFwCfgIsAvailable (\r
+ VOID\r
+ )\r
+{\r
+ return mQemuFwCfgSupported;\r
+}\r
+\r
+/**\r
+ Returns a boolean indicating whether QEMU provides the DMA-like access method\r
+ for fw_cfg.\r
+\r
+ @retval TRUE The DMA-like access method is available.\r
+ @retval FALSE The DMA-like access method is unavailable.\r
+**/\r
+BOOLEAN\r
+InternalQemuFwCfgDmaIsAvailable (\r
+ VOID\r
+ )\r
+{\r
+ return mQemuFwCfgDmaSupported;\r
+}\r
+++ /dev/null
-/** @file\r
-\r
- Stateful and implicitly initialized fw_cfg library implementation.\r
-\r
- Copyright (C) 2013, Red Hat, Inc.\r
- Copyright (c) 2011 - 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, WITHOUT\r
- WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-**/\r
-\r
-#include <Library/DebugLib.h>\r
-#include <Library/QemuFwCfgLib.h>\r
-\r
-#include "QemuFwCfgLibInternal.h"\r
-\r
-STATIC BOOLEAN mQemuFwCfgSupported = FALSE;\r
-STATIC BOOLEAN mQemuFwCfgDmaSupported;\r
-\r
-\r
-/**\r
- Returns a boolean indicating if the firmware configuration interface\r
- is available or not.\r
-\r
- This function may change fw_cfg state.\r
-\r
- @retval TRUE The interface is available\r
- @retval FALSE The interface is not available\r
-\r
-**/\r
-BOOLEAN\r
-EFIAPI\r
-QemuFwCfgIsAvailable (\r
- VOID\r
- )\r
-{\r
- return InternalQemuFwCfgIsAvailable ();\r
-}\r
-\r
-\r
-RETURN_STATUS\r
-EFIAPI\r
-QemuFwCfgInitialize (\r
- VOID\r
- )\r
-{\r
- UINT32 Signature;\r
- UINT32 Revision;\r
-\r
- //\r
- // Enable the access routines while probing to see if it is supported.\r
- // For probing we always use the IO Port (IoReadFifo8()) access method.\r
- //\r
- mQemuFwCfgSupported = TRUE;\r
- mQemuFwCfgDmaSupported = FALSE;\r
-\r
- QemuFwCfgSelectItem (QemuFwCfgItemSignature);\r
- Signature = QemuFwCfgRead32 ();\r
- DEBUG ((EFI_D_INFO, "FW CFG Signature: 0x%x\n", Signature));\r
- QemuFwCfgSelectItem (QemuFwCfgItemInterfaceVersion);\r
- Revision = QemuFwCfgRead32 ();\r
- DEBUG ((EFI_D_INFO, "FW CFG Revision: 0x%x\n", Revision));\r
- if ((Signature != SIGNATURE_32 ('Q', 'E', 'M', 'U')) ||\r
- (Revision < 1)\r
- ) {\r
- DEBUG ((EFI_D_INFO, "QemuFwCfg interface not supported.\n"));\r
- mQemuFwCfgSupported = FALSE;\r
- return RETURN_SUCCESS;\r
- }\r
-\r
- if ((Revision & FW_CFG_F_DMA) == 0) {\r
- DEBUG ((DEBUG_INFO, "QemuFwCfg interface (IO Port) is supported.\n"));\r
- } else {\r
- mQemuFwCfgDmaSupported = TRUE;\r
- DEBUG ((DEBUG_INFO, "QemuFwCfg interface (DMA) is supported.\n"));\r
- }\r
- return RETURN_SUCCESS;\r
-}\r
-\r
-\r
-/**\r
- Returns a boolean indicating if the firmware configuration interface is\r
- available for library-internal purposes.\r
-\r
- This function never changes fw_cfg state.\r
-\r
- @retval TRUE The interface is available internally.\r
- @retval FALSE The interface is not available internally.\r
-**/\r
-BOOLEAN\r
-InternalQemuFwCfgIsAvailable (\r
- VOID\r
- )\r
-{\r
- return mQemuFwCfgSupported;\r
-}\r
-\r
-/**\r
- Returns a boolean indicating whether QEMU provides the DMA-like access method\r
- for fw_cfg.\r
-\r
- @retval TRUE The DMA-like access method is available.\r
- @retval FALSE The DMA-like access method is unavailable.\r
-**/\r
-BOOLEAN\r
-InternalQemuFwCfgDmaIsAvailable (\r
- VOID\r
- )\r
-{\r
- return mQemuFwCfgDmaSupported;\r
-}\r
--- /dev/null
+## @file\r
+#\r
+# Stateful, implicitly initialized fw_cfg library.\r
+#\r
+# Copyright (C) 2013, Red Hat, Inc.\r
+# Copyright (c) 2008 - 2012, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>\r
+#\r
+# This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this 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
+#\r
+##\r
+\r
+[Defines]\r
+ INF_VERSION = 0x00010005\r
+ BASE_NAME = QemuFwCfgPeiLib\r
+ FILE_GUID = ddd4f5f0-5304-42a8-9efa-d14bf11a3533\r
+ MODULE_TYPE = BASE\r
+ VERSION_STRING = 1.0\r
+ LIBRARY_CLASS = QemuFwCfgLib|PEIM\r
+\r
+ CONSTRUCTOR = QemuFwCfgInitialize\r
+\r
+#\r
+# The following information is for reference only and not required by the build tools.\r
+#\r
+# VALID_ARCHITECTURES = IA32 X64\r
+#\r
+\r
+[Sources]\r
+ QemuFwCfgLibInternal.h\r
+ QemuFwCfgLib.c\r
+ QemuFwCfgPei.c\r
+\r
+[Packages]\r
+ MdePkg/MdePkg.dec\r
+ OvmfPkg/OvmfPkg.dec\r
+\r
+[LibraryClasses]\r
+ BaseLib\r
+ BaseMemoryLib\r
+ DebugLib\r
+ IoLib\r
+ MemoryAllocationLib\r
+\r
DpcLib|MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf\r
UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf\r
SerializeVariablesLib|OvmfPkg/Library/SerializeVariablesLib/SerializeVariablesLib.inf\r
- QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgLib.inf\r
+ QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgDxeLib.inf\r
VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf\r
LoadLinuxLib|OvmfPkg/Library/LoadLinuxLib/LoadLinuxLib.inf\r
MemEncryptSevLib|OvmfPkg/Library/BaseMemEncryptSevLib/BaseMemEncryptSevLib.inf\r
MpInitLib|UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.inf\r
QemuFwCfgS3Lib|OvmfPkg/Library/QemuFwCfgS3Lib/PeiQemuFwCfgS3LibFwCfg.inf\r
PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf\r
+ QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgPeiLib.inf\r
\r
[LibraryClasses.common.DXE_CORE]\r
HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf\r
DpcLib|MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf\r
UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf\r
SerializeVariablesLib|OvmfPkg/Library/SerializeVariablesLib/SerializeVariablesLib.inf\r
- QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgLib.inf\r
+ QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgDxeLib.inf\r
VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf\r
LoadLinuxLib|OvmfPkg/Library/LoadLinuxLib/LoadLinuxLib.inf\r
MemEncryptSevLib|OvmfPkg/Library/BaseMemEncryptSevLib/BaseMemEncryptSevLib.inf\r
MpInitLib|UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.inf\r
QemuFwCfgS3Lib|OvmfPkg/Library/QemuFwCfgS3Lib/PeiQemuFwCfgS3LibFwCfg.inf\r
PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf\r
+ QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgPeiLib.inf\r
\r
[LibraryClasses.common.DXE_CORE]\r
HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf\r
DpcLib|MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf\r
UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf\r
SerializeVariablesLib|OvmfPkg/Library/SerializeVariablesLib/SerializeVariablesLib.inf\r
- QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgLib.inf\r
+ QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgDxeLib.inf\r
VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf\r
LoadLinuxLib|OvmfPkg/Library/LoadLinuxLib/LoadLinuxLib.inf\r
MemEncryptSevLib|OvmfPkg/Library/BaseMemEncryptSevLib/BaseMemEncryptSevLib.inf\r
MpInitLib|UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.inf\r
QemuFwCfgS3Lib|OvmfPkg/Library/QemuFwCfgS3Lib/PeiQemuFwCfgS3LibFwCfg.inf\r
PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf\r
+ QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgPeiLib.inf\r
\r
[LibraryClasses.common.DXE_CORE]\r
HobLib|MdePkg/Library/DxeCoreHobLib/DxeCoreHobLib.inf\r