Boot Script Hide: Data Structures

Boot Script Hide 4.6.5.5_BootScriptHide_02
  • Main Page
  • Data Structures
  • Data Structure Index
  • Data Fields
Data Structures
Here are the data structures with brief descriptions:
o C BOOT_SCRIPT_DISPATCH | Structure copied out of BootScriptPrivate.h
o C BOOT_SCRIPT_INFO_STRUCTURE | Structure copied out of BootScriptPrivate.h
\ C S3_RESUME2_PRIVATE |
Generated on Wed May 25 2016 11:27:13 for Boot Script Hide by doxygen 1.8.4


Boot Script Hide: BOOT_SCRIPT_DISPATCH Struct Reference

  • Data Structure Index
  • Data Fields
Data Fields
BOOT_SCRIPT_DISPATCH Struct Reference

Structure copied out of BootScriptPrivate.h. More...

Data Fields

UINT16 | Type
Type of this boot script entry.
EFI_PHYSICAL_ADDRESS | EntryPoint
Entry point of the code to be dispatched.

Detailed Description

Structure copied out of BootScriptPrivate.h.

The documentation for this struct was generated from the following file:
  • Core/EM/BootScriptHide/BootScriptHideSmm.c


Boot Script Hide: BOOT_SCRIPT_INFO_STRUCTURE Struct Reference

  • Data Structure Index
  • Data Fields
Data Fields
BOOT_SCRIPT_INFO_STRUCTURE Struct Reference

Structure copied out of BootScriptPrivate.h. More...

Data Fields

UINT32 | UniqueIndex
Index of this entry.
UINT32 | Length
Length of this entry.

Detailed Description

Structure copied out of BootScriptPrivate.h.

The documentation for this struct was generated from the following file:
  • Core/EM/BootScriptHide/BootScriptHideSmm.c


Boot Script Hide: S3_RESUME2_PRIVATE Struct Reference

  • Data Structure Index
  • Data Fields
Data Fields
S3_RESUME2_PRIVATE Struct Reference

Data Fields

EFI_PEI_S3_RESUME2_PPI | Ppi
EFI_PEI_S3_RESUME2_PPI * | OriginalPpi
The documentation for this struct was generated from the following file:
  • Core/EM/BootScriptHide/BootScriptHidePei.c


Boot Script Hide: Data Structure Index

  • Data Structure Index
  • Data Fields
Data Structure Index
B | S
B
BOOT_SCRIPT_DISPATCH
BOOT_SCRIPT_INFO_STRUCTURE
S
S3_RESUME2_PRIVATE
B | S


Boot Script Hide: Data Fields

  • Data Structure Index
  • Data Fields
  • All
  • Variables
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
  • EntryPoint : BOOT_SCRIPT_DISPATCH
  • Length : BOOT_SCRIPT_INFO_STRUCTURE
  • Type : BOOT_SCRIPT_DISPATCH
  • UniqueIndex : BOOT_SCRIPT_INFO_STRUCTURE


Boot Script Hide: Data Fields - Variables

  • Data Structure Index
  • Data Fields
  • All
  • Variables
  • EntryPoint : BOOT_SCRIPT_DISPATCH
  • Length : BOOT_SCRIPT_INFO_STRUCTURE
  • Type : BOOT_SCRIPT_DISPATCH
  • UniqueIndex : BOOT_SCRIPT_INFO_STRUCTURE


Copyright

American Megatrends, Inc.
5555 Oakbrook Parkway
Suite 200
Norcross, GA 30093 (USA)

Copyright (c) 1999-2016 American Megatrends, Inc. All Rights Reserved.

This publication contains proprietary information, which is protected by copyright. No part of this publication may be reproduced, transcribed, stored in a retrieval system, translated into any language or computer language, or transmitted in any form whatsoever without the prior written consent of the publisher, American Megatrends, Inc.

American Megatrends, Inc. retains the right to update, change, modify this publication at any time, without notice.

For Additional Information

Call American Megatrends BIOS Sales Department at 1-800-828-9264 for additional information.

Limitations of Liability

In no event shall American Megatrends be held liable for any loss, expenses, or damages of any kind whatsoever, whether direct, indirect, incidental, or consequential, arising from the design or use of this product or the support materials provided with the product.

Limited Warranty

No warranties are made, either expressed or implied, with regard to the contents of this work, its merchantability, or fitness for a particular use. American Megatrends assumes no responsibility for errors and omissions or for the uses made of the material contained herein or reader decisions based on such use.

Trademark and Copyright Acknowledgments

All product names used in this publication are for identification purposes only and are trademarks of their respective Companies.


Boot Script Hide: Core/EM/BootScriptHide Directory Reference

  • Core
  • EM
  • BootScriptHide
BootScriptHide Directory Reference

Files

file | BootScriptHide.mak
file | BootScriptHide.sdl
file | BootScriptHideDxe.c
file | BootScriptHideDxe.dxs
file | BootScriptHidePei.c
file | BootScriptHidePei.dxs
file | BootScriptHideSmm.c
file | BootScriptHideSmm.dxs
file | doxygen_objdb_4436.tmp


Boot Script Hide: Core Directory Reference

  • Core
Core Directory Reference

Directories

directory EM


Boot Script Hide: Core/EM Directory Reference

  • Core
  • EM
EM Directory Reference

Directories

directory BootScriptHide


Boot Script Hide: C:/AptioV/DoxygenDox Directory Reference

  • AptioV
  • DoxygenDox
DoxygenDox Directory Reference

Files

file DoxyDefault.Dox


Boot Script Hide: C:/AptioV Directory Reference

  • AptioV
AptioV Directory Reference

Directories

directory DoxygenDox


Boot Script Hide: Main Page

Boot Script Hide Documentation
Main Page

Release Notes

Copyright


Release Notes - NDA Required

Component Information:
Component Title: Boot Script Hide
Component Reference Name: BootScriptHide
Component Type: eModule
Release Date: 2016-05-25
Source Control Label: 4.6.5.5_BootScriptHide_02
Source Control Location: SS: Alaska; $/Alaska/SOURCE/Modules/BootScriptHide
Dependencies
Component Dependencies
ONE
Dependent Component Title: ACPI
Dependent Component Reference Name: ACPI
Dependent Source Control Label: 4.6.4.0_ACPI_46
Dependent Source Control Location: SS: Alaska;$/Alaska/BIN/Modules/ACPI;
TWO
Dependent Component Title: SMM
Dependent Component Reference Name: SMM
Dependent Source Control Label: 4.6.3_SMM_46
Dependent Source Control Location: SS: Alaska;$/Alaska/SOURCE/Modules/SMM;

File Dependencies
N0NE

Protocol Dependencies
ONE
Dependent Protocol Name: EFI_SMM_SW_DISPATCH2_PROTOCOL
Dependent Protocol GUID: {0x18a3c6dc, 0x5eea, 0x48c8, 0xa1, 0xc1, 0xb5, 0x33, 0x89, 0xf9, 0x89, 0x99}
TWO
Dependent Protocol Name: EFI_SMM_ACCESS2_PROTOCOL
Dependent Protocol GUID: {0xc2702b74, 0x800c, 0x4131, 0x87, 0x46, 0x8f, 0xb5, 0xb8, 0x9c, 0xe4, 0xac}
THREE
Dependent Protocol Name: EFI_SMM_CONTROL2_PROTOCOL
Dependent Protocol GUID: {0x843dc720, 0xab1e, 0x42cb, 0x93, 0x57, 0x8a, 0x0, 0x78, 0xf3, 0x56, 0x1b}

Ppi Dependencies
ONE
Dependent PPI Name: PEI_SMM_CONTROL_PPI
Dependent PPI GUID: {0x61c68702, 0x4d7e, 0x4f43, 0x8d, 0xef, 0xa7, 0x43, 0x5, 0xce, 0x74, 0xc5}
TWO
Dependent PPI Name: EFI_PEI_S3_RESUME2_PPI
Dependent PPI GUID: { 0x6D582DBC, 0xDB85, 0x4514, 0x8F, 0xCC, 0x5A, 0xDF, 0x62, 0x27, 0xB1, 0x47 }
Non-Compiled BIN and LIB File(s) within this Component:
N0NE
Component Description:
Resuming from a S3 sleep state still requires that the firmware do programming for the system devices. When going to the S3 sleep state, most of those devices were either turned off, or put into a low power mode. To enable resuming to the operating system, the firmware needs to put the devices back into the same operational state as they were when the operating system went to sleep. To facilitate this restoration of device operation, the firmware saves the initialization programming of each device into a set of tables in memory. This memory is marked as ACPI reserved, so the operating system will attempt to use these memory regions.
Even through this memory region is unused by the operating system, it is still exposed to other code that runs inside of the operating system. To help protect this region from corruption from an error programming running during the OS, this driver will save the set of boot script tables from regular system memory into the SMM protected region of memory. Then, when the system is attempting to resume from the S3 sleep state, these drivers will communicate with the SMM region of memory, and ask that the data be restored to the saved values. This enables the system to not worry about any possible corruption that occurred during the operating system time frame.
This is a caption
Filename | Description
BootScriptHide.cif | BootScriptHide CIF file, which contains all the list of all the files in this module.
BootScriptHide.mak | makefile that allow the modules to be compiled
BootScriptHide.chm | Help file for this module.
BootScriptHide.sdl | SDL token file for the BootScriptHide eModule.
BootScriptHideDxe.c | C Source file for the DXE Driver created by this module.
BootScriptHideDxe.dxs | Dependency section file for the DXE driver created by this module.
BootScriptHidePei.c | C Source file for the PEIM created by this module.
BootScriptHidePei.dxs | Dependency section file for the PEIM created by this module.
BootScriptHideSmm.c | C Source file for the SMM Driver created by this module.
BootScriptHideSmm.dxs | Dependency section file for the SMM driver created by this module.

AMI Build Tools:
Tools Label: 4.5.5_TOOLS_41, Dated: 2013-04-21
Visual eBios: RSS.5.72.0220, Dated: 2012-01-04
Compiler Tool(s): Microsoft Windows Driver Kit (WDK) Ver. 7600.16385.1
New features added in this label:
Added additional verification functionality to mitigate Security Attacks related to corrupting the ACPI FACS pointers
General Bug Fixes and EIP Addressed in this Label:
General Bug Fixes
None

EIP Addressed
EIP #268161 - Update BootScriptHide to comply with Security Vulnerability related to saving other memory regions at the same time as the boot scripts
Files Changed for General Bug Fixes and EIP Addressed in this Label:
General Bug Fixes
None

EIP Addressed
BootScriptHidePei.c - EIP #268161
BootScriptHideSmm.c - EIP #268161
Known Limitations and Erratas in this label:
Boot Scripts not saved
Boot Scripts are parsed by the SMM driver when it is called to save the tables. The parsing is to check if there are any dispatch driver entries that do not correspond to items contained in the Flash Part. If the SMM driver finds a dispatch entry (either EFI_BOOT_SCRIPT_DISPATCH_OPCODE or EFI_BOOT_SCRIPT_DISPATCH_2_OPCODE) and the memory address is in regular system memory, then the boot scripts will not be saved into SMM. Any driver that resides in system memory is susceptible to modification by malicious code, which, during the S3 resume path, would be able to access the system, system resources and system memory.
Proper chipset porting is required for the system to be able to boot when the boot scripts are not available
If the boot scripts are not saved, because of a bad opcode found in the boot script tables, then the code in the BootScriptHidePei PEIM will call to reset the system via the PeiServicse table. If the chipset is not ported correctly when it is determining the system boot mode, then this reset can result in the system not able to boot until an AC power cycle clears the power management registers that report the wake type of the system.
Remaining Issues:
None
Unit Testing:
Verified the installation of Windows 8/8.1
Booted to Windows 8/8.1 and verified the system was able to resume from S3 when using this module.
Added code to corrupt pointers after they were saved. Then booted to Windows 8/8.1. Triggered an s3, and verified that the other fields were found to be corrupted and cause a reset upon the resume of the system.
Validation Testing:
White box testing done and passed
Release History:
Release_00
Release_01

© American Megatrends Inc.


Release Notes - NDA Required

Component Information:
Component Title: Boot Script Hide
Component Reference Name: BootScriptHide
Component Type: eModule
Release Date: 2014-09-15
Source Control Label: 4.6.5.5_BootScriptHide_00
Source Control Location: SS: Alaska; $/Alaska/SOURCE/Modules/BootScriptHide
Dependencies
Component Dependencies
ONE
Dependent Component Title: ACPI
Dependent Component Reference Name: ACPI
Dependent Source Control Label: 4.6.4.0_ACPI_46
Dependent Source Control Location: SS: Alaska;$/Alaska/BIN/Modules/ACPI;
TWO
Dependent Component Title: SMM
Dependent Component Reference Name: SMM
Dependent Source Control Label: 4.6.3_SMM_46
Dependent Source Control Location: SS: Alaska;$/Alaska/SOURCE/Modules/SMM;

File Dependencies
N0NE

Protocol Dependencies
ONE
Dependent Protocol Name: EFI_SMM_SW_DISPATCH2_PROTOCOL
Dependent Protocol GUID: {0x18a3c6dc, 0x5eea, 0x48c8, 0xa1, 0xc1, 0xb5, 0x33, 0x89, 0xf9, 0x89, 0x99}
TWO
Dependent Protocol Name: EFI_SMM_ACCESS2_PROTOCOL
Dependent Protocol GUID: {0xc2702b74, 0x800c, 0x4131, 0x87, 0x46, 0x8f, 0xb5, 0xb8, 0x9c, 0xe4, 0xac}
THREE
Dependent Protocol Name: EFI_SMM_CONTROL2_PROTOCOL
Dependent Protocol GUID: {0x843dc720, 0xab1e, 0x42cb, 0x93, 0x57, 0x8a, 0x0, 0x78, 0xf3, 0x56, 0x1b}

Ppi Dependencies
ONE
Dependent PPI Name: PEI_SMM_CONTROL_PPI
Dependent PPI GUID: {0x61c68702, 0x4d7e, 0x4f43, 0x8d, 0xef, 0xa7, 0x43, 0x5, 0xce, 0x74, 0xc5}
TWO
Dependent PPI Name: EFI_PEI_S3_RESUME2_PPI
Dependent PPI GUID: { 0x6D582DBC, 0xDB85, 0x4514, 0x8F, 0xCC, 0x5A, 0xDF, 0x62, 0x27, 0xB1, 0x47 }
Non-Compiled BIN and LIB File(s) within this Component:
N0NE
Component Description:
Resuming from a S3 sleep state still requires that the firmware do programming for the system devices. When going to the S3 sleep state, most of those devices were either turned off, or put into a low power mode. To enable resuming to the operating system, the firmware needs to put the devices back into the same operational state as they were when the operating system went to sleep. To facilitate this restoration of device operation, the firmware saves the initialization programming of each device into a set of tables in memory. This memory is marked as ACPI reserved, so the operating system will attempt to use these memory regions.
Even through this memory region is unused by the operating system, it is still exposed to other code that runs inside of the operating system. To help protect this region from corruption from an error programming running during the OS, this driver will save the set of boot script tables from regular system memory into the SMM protected region of memory. Then, when the system is attempting to resume from the S3 sleep state, these drivers will communicate with the SMM region of memory, and ask that the data be restored to the saved values. This enables the system to not worry about any possible corruption that occurred during the operating system time frame.
This is a caption
Filename | Description
BootScriptHide.cif | BootScriptHide CIF file, which contains all the list of all the files in this module.
BootScriptHide.mak | makefile that allow the modules to be compiled
BootScriptHide.chm | Help file for this module.
BootScriptHide.sdl | SDL token file for the BootScriptHide eModule.
BootScriptHideDxe.c | C Source file for the DXE Driver created by this module.
BootScriptHideDxe.dxs | Dependency section file for the DXE driver created by this module.
BootScriptHidePei.c | C Source file for the PEIM created by this module.
BootScriptHidePei.dxs | Dependency section file for the PEIM created by this module.
BootScriptHideSmm.c | C Source file for the SMM Driver created by this module.
BootScriptHideSmm.dxs | Dependency section file for the SMM driver created by this module.

AMI Build Tools:
Tools Label: 4.5.5_TOOLS_41, Dated: 2013-04-21
Visual eBios: RSS.5.72.0220, Dated: 2012-01-04
Compiler Tool(s): Microsoft Windows Driver Kit (WDK) Ver. 7600.16385.1
New features added in this label:
NONE
General Bug Fixes and EIP Addressed in this Label:
General Bug Fixes
None

EIP Addressed
None
Files Changed for General Bug Fixes and EIP Addressed in this Label:
General Bug Fixes
None

EIP Addressed
None
Known Limitations and Erratas in this label:
Boot Scripts not saved
Boot Scripts are parsed by the SMM driver when it is called to save the tables. The parsing is to check if there are any dispatch driver entries that do not correspond to items contained in the Flash Part. If the SMM driver finds a dispatch entry (either EFI_BOOT_SCRIPT_DISPATCH_OPCODE or EFI_BOOT_SCRIPT_DISPATCH_2_OPCODE) and the memory address is in regular system memory, then the boot scripts will not be saved into SMM. Any driver that resides in system memory is susceptible to modification by malicious code, which, during the S3 resume path, would be able to access the system, system resources and system memory.
Proper chipset porting is required for the system to be able to boot when the boot scripts are not available
If the boot scripts are not saved, because of a bad opcode found in the boot script tables, then the code in the BootScriptHidePei PEIM will call to reset the system via the PeiServicse table. If the chipset is not ported correctly when it is determining the system boot mode, then this reset can result in the system not able to boot until an AC power cycle clears the power management registers that report the wake type of the system.
Remaining Issues:
NONE
Unit Testing:
Verified the installation of Windows 8/8.1, Windows 7 and Fedora Linux 20
Booted to Windows 8/8.1 and verified the system was able to resume from S3 when using this module.
Booted to Windows 8/8.1 and verified that the boot scripts were saved and restored. This was accomplished by clearing the boot script memory after the SWSMI triggers the save handlers. Verified that the system was able to goto sleep, and resume from sleep during this test.
Validation Testing:
None
Release History:
First release of this module

© American Megatrends Inc.


Release Notes - NDA Required

Component Information:
Component Title: Boot Script Hide
Component Reference Name: BootScriptHide
Component Type: eModule
Release Date: 2014-11-03
Source Control Label: 4.6.5.5_BootScriptHide_01
Source Control Location: SS: Alaska; $/Alaska/SOURCE/Modules/BootScriptHide
Dependencies
Component Dependencies
ONE
Dependent Component Title: ACPI
Dependent Component Reference Name: ACPI
Dependent Source Control Label: 4.6.4.0_ACPI_46
Dependent Source Control Location: SS: Alaska;$/Alaska/BIN/Modules/ACPI;
TWO
Dependent Component Title: SMM
Dependent Component Reference Name: SMM
Dependent Source Control Label: 4.6.3_SMM_46
Dependent Source Control Location: SS: Alaska;$/Alaska/SOURCE/Modules/SMM;

File Dependencies
N0NE

Protocol Dependencies
ONE
Dependent Protocol Name: EFI_SMM_SW_DISPATCH2_PROTOCOL
Dependent Protocol GUID: {0x18a3c6dc, 0x5eea, 0x48c8, 0xa1, 0xc1, 0xb5, 0x33, 0x89, 0xf9, 0x89, 0x99}
TWO
Dependent Protocol Name: EFI_SMM_ACCESS2_PROTOCOL
Dependent Protocol GUID: {0xc2702b74, 0x800c, 0x4131, 0x87, 0x46, 0x8f, 0xb5, 0xb8, 0x9c, 0xe4, 0xac}
THREE
Dependent Protocol Name: EFI_SMM_CONTROL2_PROTOCOL
Dependent Protocol GUID: {0x843dc720, 0xab1e, 0x42cb, 0x93, 0x57, 0x8a, 0x0, 0x78, 0xf3, 0x56, 0x1b}

Ppi Dependencies
ONE
Dependent PPI Name: PEI_SMM_CONTROL_PPI
Dependent PPI GUID: {0x61c68702, 0x4d7e, 0x4f43, 0x8d, 0xef, 0xa7, 0x43, 0x5, 0xce, 0x74, 0xc5}
TWO
Dependent PPI Name: EFI_PEI_S3_RESUME2_PPI
Dependent PPI GUID: { 0x6D582DBC, 0xDB85, 0x4514, 0x8F, 0xCC, 0x5A, 0xDF, 0x62, 0x27, 0xB1, 0x47 }
Non-Compiled BIN and LIB File(s) within this Component:
N0NE
Component Description:
Resuming from a S3 sleep state still requires that the firmware do programming for the system devices. When going to the S3 sleep state, most of those devices were either turned off, or put into a low power mode. To enable resuming to the operating system, the firmware needs to put the devices back into the same operational state as they were when the operating system went to sleep. To facilitate this restoration of device operation, the firmware saves the initialization programming of each device into a set of tables in memory. This memory is marked as ACPI reserved, so the operating system will attempt to use these memory regions.
Even through this memory region is unused by the operating system, it is still exposed to other code that runs inside of the operating system. To help protect this region from corruption from an error programming running during the OS, this driver will save the set of boot script tables from regular system memory into the SMM protected region of memory. Then, when the system is attempting to resume from the S3 sleep state, these drivers will communicate with the SMM region of memory, and ask that the data be restored to the saved values. This enables the system to not worry about any possible corruption that occurred during the operating system time frame.
This is a caption
Filename | Description
BootScriptHide.cif | BootScriptHide CIF file, which contains all the list of all the files in this module.
BootScriptHide.mak | makefile that allow the modules to be compiled
BootScriptHide.chm | Help file for this module.
BootScriptHide.sdl | SDL token file for the BootScriptHide eModule.
BootScriptHideDxe.c | C Source file for the DXE Driver created by this module.
BootScriptHideDxe.dxs | Dependency section file for the DXE driver created by this module.
BootScriptHidePei.c | C Source file for the PEIM created by this module.
BootScriptHidePei.dxs | Dependency section file for the PEIM created by this module.
BootScriptHideSmm.c | C Source file for the SMM Driver created by this module.
BootScriptHideSmm.dxs | Dependency section file for the SMM driver created by this module.

AMI Build Tools:
Tools Label: 4.5.5_TOOLS_41, Dated: 2013-04-21
Visual eBios: RSS.5.72.0220, Dated: 2012-01-04
Compiler Tool(s): Microsoft Windows Driver Kit (WDK) Ver. 7600.16385.1
New features added in this label:
Function IsBufferInSmram() replaced with IsBadBuffer that performs additional checks on the memory range buffer
BootScriptSaved flag is added to signal that saved boot script buffer is valid
General Bug Fixes and EIP Addressed in this Label:
General Bug Fixes
None

EIP Addressed
None
Files Changed for General Bug Fixes and EIP Addressed in this Label:
General Bug Fixes
None

EIP Addressed
None
Known Limitations and Erratas in this label:
Boot Scripts not saved
Boot Scripts are parsed by the SMM driver when it is called to save the tables. The parsing is to check if there are any dispatch driver entries that do not correspond to items contained in the Flash Part. If the SMM driver finds a dispatch entry (either EFI_BOOT_SCRIPT_DISPATCH_OPCODE or EFI_BOOT_SCRIPT_DISPATCH_2_OPCODE) and the memory address is in regular system memory, then the boot scripts will not be saved into SMM. Any driver that resides in system memory is susceptible to modification by malicious code, which, during the S3 resume path, would be able to access the system, system resources and system memory.
Proper chipset porting is required for the system to be able to boot when the boot scripts are not available
If the boot scripts are not saved, because of a bad opcode found in the boot script tables, then the code in the BootScriptHidePei PEIM will call to reset the system via the PeiServicse table. If the chipset is not ported correctly when it is determining the system boot mode, then this reset can result in the system not able to boot until an AC power cycle clears the power management registers that report the wake type of the system.
Remaining Issues:
None
Unit Testing:
Verified the installation of Windows 8/8.1, Windows 7 and Fedora Linux 20
Booted to Windows 8/8.1 and verified the system was able to resume from S3 when using this module.
Booted to Windows 8/8.1 and verified that the boot scripts were saved and restored. This was accomplished by clearing the boot script memory after the SWSMI triggers the save handlers. Verified that the system was able to goto sleep, and resume from sleep during this test.
Validation Testing:
None
Release History:
Release_00

© American Megatrends Inc.