mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-22 21:24:35 +02:00
OvmfPkg: QemuFwCfgLib: implement for SEC
The QemuFwCfgSecLib library instance - is stateless, - has no library constructor, - is available to SEC client code, - must be queried with QemuFwCfgIsAvailable() before use, - is restricted to SEC in order to limit the explicit querying requirement. (There is no current user.) Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15046 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
2ce7e221e7
commit
c90decb997
81
OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgSec.c
Normal file
81
OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgSec.c
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
/** @file
|
||||||
|
|
||||||
|
Stateless fw_cfg library implementation.
|
||||||
|
|
||||||
|
Clients must call QemuFwCfgIsAvailable() first.
|
||||||
|
|
||||||
|
Copyright (C) 2013, Red Hat, Inc.
|
||||||
|
Copyright (c) 2011 - 2013, Intel Corporation. All rights reserved.<BR>
|
||||||
|
|
||||||
|
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.
|
||||||
|
**/
|
||||||
|
|
||||||
|
#include <Library/DebugLib.h>
|
||||||
|
#include <Library/QemuFwCfgLib.h>
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns a boolean indicating if the firmware configuration interface
|
||||||
|
is available or not.
|
||||||
|
|
||||||
|
This function may change fw_cfg state.
|
||||||
|
|
||||||
|
@retval TRUE The interface is available
|
||||||
|
@retval FALSE The interface is not available
|
||||||
|
|
||||||
|
**/
|
||||||
|
BOOLEAN
|
||||||
|
EFIAPI
|
||||||
|
QemuFwCfgIsAvailable (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UINT32 Signature;
|
||||||
|
UINT32 Revision;
|
||||||
|
|
||||||
|
QemuFwCfgSelectItem (QemuFwCfgItemSignature);
|
||||||
|
Signature = QemuFwCfgRead32 ();
|
||||||
|
DEBUG ((EFI_D_INFO, "FW CFG Signature: 0x%x\n", Signature));
|
||||||
|
QemuFwCfgSelectItem (QemuFwCfgItemInterfaceVersion);
|
||||||
|
Revision = QemuFwCfgRead32 ();
|
||||||
|
DEBUG ((EFI_D_INFO, "FW CFG Revision: 0x%x\n", Revision));
|
||||||
|
if ((Signature != SIGNATURE_32 ('Q', 'E', 'M', 'U')) ||
|
||||||
|
(Revision < 1)
|
||||||
|
) {
|
||||||
|
DEBUG ((EFI_D_INFO, "QemuFwCfg interface not supported.\n"));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
DEBUG ((EFI_D_INFO, "QemuFwCfg interface is supported.\n"));
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns a boolean indicating if the firmware configuration interface is
|
||||||
|
available for library-internal purposes.
|
||||||
|
|
||||||
|
This function never changes fw_cfg state.
|
||||||
|
|
||||||
|
@retval TRUE The interface is available internally.
|
||||||
|
@retval FALSE The interface is not available internally.
|
||||||
|
**/
|
||||||
|
BOOLEAN
|
||||||
|
EFIAPI
|
||||||
|
InternalQemuFwCfgIsAvailable (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// We always return TRUE, because the consumer of this library ought to have
|
||||||
|
// called QemuFwCfgIsAvailable before making other calls which would hit this
|
||||||
|
// path.
|
||||||
|
//
|
||||||
|
return TRUE;
|
||||||
|
}
|
54
OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgSecLib.inf
Normal file
54
OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgSecLib.inf
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
## @file
|
||||||
|
#
|
||||||
|
# Stateless fw_cfg library that must be queried before use.
|
||||||
|
#
|
||||||
|
# Copyright (C) 2013, Red Hat, Inc.
|
||||||
|
# Copyright (c) 2008 - 2012, Intel Corporation. All rights reserved.<BR>
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
##
|
||||||
|
|
||||||
|
[Defines]
|
||||||
|
INF_VERSION = 0x00010005
|
||||||
|
BASE_NAME = QemuFwCfgSecLib
|
||||||
|
FILE_GUID = 60a910e5-7443-413d-9a30-97e57497cd1b
|
||||||
|
MODULE_TYPE = BASE
|
||||||
|
VERSION_STRING = 1.0
|
||||||
|
LIBRARY_CLASS = QemuFwCfgLib|SEC
|
||||||
|
|
||||||
|
#
|
||||||
|
# The following information is for reference only and not required by the build tools.
|
||||||
|
#
|
||||||
|
# VALID_ARCHITECTURES = IA32 X64
|
||||||
|
#
|
||||||
|
|
||||||
|
[Sources]
|
||||||
|
QemuFwCfgLib.c
|
||||||
|
QemuFwCfgSec.c
|
||||||
|
|
||||||
|
[Sources.IA32]
|
||||||
|
Ia32/IoLibExAsm.asm
|
||||||
|
Ia32/IoLibExAsm.S
|
||||||
|
|
||||||
|
[Sources.X64]
|
||||||
|
X64/IoLibExAsm.asm
|
||||||
|
X64/IoLibExAsm.S
|
||||||
|
|
||||||
|
[Packages]
|
||||||
|
MdePkg/MdePkg.dec
|
||||||
|
OvmfPkg/OvmfPkg.dec
|
||||||
|
|
||||||
|
[LibraryClasses]
|
||||||
|
BaseLib
|
||||||
|
BaseMemoryLib
|
||||||
|
DebugLib
|
||||||
|
IoLib
|
||||||
|
MemoryAllocationLib
|
||||||
|
|
@ -127,6 +127,7 @@
|
|||||||
!endif
|
!endif
|
||||||
|
|
||||||
[LibraryClasses.common.SEC]
|
[LibraryClasses.common.SEC]
|
||||||
|
QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgSecLib.inf
|
||||||
!ifdef $(DEBUG_ON_SERIAL_PORT)
|
!ifdef $(DEBUG_ON_SERIAL_PORT)
|
||||||
DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
|
DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
|
||||||
!else
|
!else
|
||||||
|
@ -132,6 +132,7 @@
|
|||||||
!endif
|
!endif
|
||||||
|
|
||||||
[LibraryClasses.common.SEC]
|
[LibraryClasses.common.SEC]
|
||||||
|
QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgSecLib.inf
|
||||||
!ifdef $(DEBUG_ON_SERIAL_PORT)
|
!ifdef $(DEBUG_ON_SERIAL_PORT)
|
||||||
DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
|
DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
|
||||||
!else
|
!else
|
||||||
|
@ -132,6 +132,7 @@
|
|||||||
!endif
|
!endif
|
||||||
|
|
||||||
[LibraryClasses.common.SEC]
|
[LibraryClasses.common.SEC]
|
||||||
|
QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgSecLib.inf
|
||||||
!ifdef $(DEBUG_ON_SERIAL_PORT)
|
!ifdef $(DEBUG_ON_SERIAL_PORT)
|
||||||
DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
|
DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
|
||||||
!else
|
!else
|
||||||
|
Loading…
x
Reference in New Issue
Block a user