mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-27 07:34:06 +02:00
QuarkPlatformPkg/ForceRecovery: Add UEFI application to force recovery
https://bugzilla.tianocore.org/show_bug.cgi?id=138 This UEFI Application sets a sticky bit that persists across reset to force a boot mode of BOOT_IN_RECOVERY_MODE. It then performs a warm reset using the UEFI Runtime Service ResetSystem(). Cc: Kelly Steele <kelly.steele@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Michael Kinney <michael.d.kinney@intel.com> Reviewed-by: Kelly Steele <kelly.steele@intel.com>
This commit is contained in:
parent
5f82e02a4b
commit
9c3dea8dda
53
QuarkPlatformPkg/Application/ForceRecovery/ForceRecovery.c
Normal file
53
QuarkPlatformPkg/Application/ForceRecovery/ForceRecovery.c
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
/** @file
|
||||||
|
Application that sets a sticky bit to force recovery on next reset.
|
||||||
|
|
||||||
|
Copyright (c) 2016, 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 <Uefi.h>
|
||||||
|
|
||||||
|
#include <Library/UefiRuntimeServicesTableLib.h>
|
||||||
|
#include <Library/QNCAccessLib.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
The user Entry Point for Application. The user code starts with this function
|
||||||
|
as the real entry point for the application.
|
||||||
|
|
||||||
|
@param[in] ImageHandle The firmware allocated handle for the EFI image.
|
||||||
|
@param[in] SystemTable A pointer to the EFI System Table.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The entry point is executed successfully.
|
||||||
|
@retval other Some error occurs when executing this entry point.
|
||||||
|
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
UefiMain (
|
||||||
|
IN EFI_HANDLE ImageHandle,
|
||||||
|
IN EFI_SYSTEM_TABLE *SystemTable
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Set 'B_CFG_STICKY_RW_FORCE_RECOVERY' sticky bit so we know we need to do a recovery following warm reset
|
||||||
|
//
|
||||||
|
QNCAltPortWrite (
|
||||||
|
QUARK_SCSS_SOC_UNIT_SB_PORT_ID,
|
||||||
|
QUARK_SCSS_SOC_UNIT_CFG_STICKY_RW,
|
||||||
|
QNCAltPortRead (QUARK_SCSS_SOC_UNIT_SB_PORT_ID, QUARK_SCSS_SOC_UNIT_CFG_STICKY_RW) | B_CFG_STICKY_RW_FORCE_RECOVERY
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Do a warm reset
|
||||||
|
//
|
||||||
|
gRT->ResetSystem (EfiResetWarm, EFI_SUCCESS, 0, NULL);
|
||||||
|
|
||||||
|
return EFI_SUCCESS;
|
||||||
|
}
|
39
QuarkPlatformPkg/Application/ForceRecovery/ForceRecovery.inf
Normal file
39
QuarkPlatformPkg/Application/ForceRecovery/ForceRecovery.inf
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
## @file
|
||||||
|
# Application that sets a sticky bit to force recovery on next reset.
|
||||||
|
#
|
||||||
|
# Copyright (c) 2016, 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 = ForceRecovery
|
||||||
|
FILE_GUID = 3A61FD45-69A0-42AD-B261-24DA451BF442
|
||||||
|
MODULE_TYPE = UEFI_APPLICATION
|
||||||
|
VERSION_STRING = 1.0
|
||||||
|
ENTRY_POINT = UefiMain
|
||||||
|
|
||||||
|
#
|
||||||
|
# The following information is for reference only and not required by the build tools.
|
||||||
|
#
|
||||||
|
# VALID_ARCHITECTURES = IA32
|
||||||
|
#
|
||||||
|
|
||||||
|
[Sources]
|
||||||
|
ForceRecovery.c
|
||||||
|
|
||||||
|
[Packages]
|
||||||
|
MdePkg/MdePkg.dec
|
||||||
|
QuarkSocPkg/QuarkSocPkg.dec
|
||||||
|
|
||||||
|
[LibraryClasses]
|
||||||
|
UefiApplicationEntryPoint
|
||||||
|
UefiRuntimeServicesTableLib
|
||||||
|
QNCAccessLib
|
Loading…
x
Reference in New Issue
Block a user