American Megatrends, Inc.

PTT

Copyright

Release Notes

© American Megatrends, Inc.


Copyright

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

Copyright (c) 1999-2012 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.


Release Notes - NDA Required

Component Information:
Component Title: Post Time Tuning
Component Reference Name: FastBoot
Component Type: eModule
Release Date: 2013-07-19
Source Control Label: 4.6.4.0_PTT_16
Source Control Location: SS: Alaska;$/Alaska/SOURCE/Modules/PTT
Dependencies
ONE
Dependent Component Title: USB
Dependent Component Reference Name: USB
Dependent Source Control Label: 4.6.3_USB_08.10.24
Dependent Source Control Location: SS: Alaska;$/Alaska/SOURCE/Modules/USB/Alaska;
TWO
Dependent Component Title: AHCI
Dependent Component Reference Name: AHCI
Dependent Source Control Label: 4.6.3_AhciSrc_023
Dependent Source Control Location: SS: Alaska;$/Alaska/SOURCE/Modules/AHCI/Alaska;
Or update eip118033's patch.
Non-Compiled BIN and LIB File(s) within this Component:
N0NE
Component Description:
PTT is the abbreviation of Post Time Tuning, this eModule is developed based on FastBoot eModule. Due to the variation of usage and variation platform hardware, the best fast boot model does not exist for all platforms. PTT eModule integrate the FastBoot module and provide more optional solutions for user to adjust and make the suitable solutions for their requirement.
Usage:
How to enable FastBoot?
Fast boot from previous boot device
1. Enable "FastBoot" setup option in Boot page.
2. Set the boot device as the highest boot priority.
3. FastBoot need a successful boot to store boot device information, and then fastboot will work at second boot.
How to switch from fastboot to normal boot?
1. Once hotkey (enter setup, popup menu... etc.) is detected, fastboot will be aborted and keep on going through a normal boot path.
2. System Reset during post. The System will enter Setup in next boot automatically. It's a fail safe mechanism for user to disable Fastboot if neeeded.
Fast boot sub setup Items
SATA Support
HDD Only - Only HDD device will be available in OS and POST.
All Sata Devices - All SATA devices will be available in OS and Post.
Last Boot HDD Only - Only last boot HDD device will be available in OS and Post.
VGA Support
EFI Driver - Install EFI driver and service for VGA
Auto - Only install Legacy OpRom with Legacy OS, and logo would not be shown during Post. EFI driver and service will still be installed with EFI OS.
USB Support
Disabled - All USB devices will NOT be available until after OS boot.
Full Initial - All USB devices will be available in OS and Post.
Partial Initial - USB mass storage type devcie will be skipped. And the other specific USB ports/devices could be skipped according to token "USB_SKIP_TABLE".
PS2 Devices Support
Enabled - PS2 devices will be available in OS and Post.
Disabled - PS2 devices will NOT be available in Post. PS2ms.asl and PS2kb.asl may need to porting for PS2 device working in ACPI OS.
NetWork Stack Driver Support
Enabled - NetWrok Stack driver is supported in fast boot path.
Disabled - Network Stack drivers would NOT be started in fast boot path.
Fast Boot Policy Protocol
Fast Boot Policy protocol is created for dynamic changing fast boot behavior. OEM/BSP can locate this protocol, and change the policy before BIOS run into fastboot path.
Below are elements and default value in fast boot policy protocol.
BOOLEAN FastBootEnable -> SetupOption "FastBoot Enable"
BOOLEAN TestMode -> token "FAST_BOOT_TEST_MODE"
===========pervious boot information=================
BOOLEAN UEfiBoot -> Pervious Boot is EFI or Legacy type
UINT16 BootOptionNumber -> Boot Option number if previous boot is EFI
UINT16 DevStrCheckSum -> Device string checksum if pervious boot is Legacy
EFI_DEVICE_PATH_PROTOCOL *FastBootOption -> Device path of pervious boot device.
BOOLEAN LastBootFailure -> whether boot failure occurs in previous boot
BOOLEAN LastBootVarPresence -> whether "LastBoot" Var is exist.
UINT32 BootCount -> How many times boot with fastboot mode
===========previous boot sata information=================
VOID *SataDevice -> All SATA device information, include Bus, Device, Function, ClassCode, DeviceType, Port number, and Serial number.
===========fast boot behavior para=================
BOOLEAN FirstFastBootInS4 -> allow first fast boot in S4.
BOOLEAN CheckBootOptionNumber -> Check boot option number is first boot option in boot order in fast boot path.
BOOLEAN CheckDevStrCheckSum -> Check device string is as same as a previous boot device.
BOOLEAN SATASupport -> SetupOption "SATA Support".
BOOLEAN VGASupport -> SetupOption "VGA Support".
BOOLEAN UsbSupport -> SetupOption "USB Support".
VOID *UsbSkipTable -> USB skip table, it's used when "Partial Initial" is selected.
UINTN UsbSkipTableSize -> USB skip table size
BOOLEAN Ps2Support -> SetupOption "PS2 Devices Support".
BOOLEAN NetWorkStackSupport -> SetupOption "NetWork Stack Driver Support".
SKIP_PCI_LIST *SkipPciList -> Token "FAST_BOOT_PCI_SKIP_LIST", the list of the skipped controller in procedure "FbConnectEverything".
UINTN SkipPciListSize -> SkipPciList table size.
BOOLEAN CheckPassword -> Token "ALLOW_CHECKING_PASSWORD", allow checking password in fast boot path.
BOOLEAN SkipTSEHandshake -> Token "SKIP_TSE_HANDSHAKE", skip TSE handshake in fast boot path.
BOOLEAN InFastBootPath -> A flag to show whether code flow is in the fast boot path now.
Filename | Description
PTT | Root\Core\em\PTT
FastBoot.cif | VeB component description file
FastBoot.c | Main functionality implementation file
FastBoot.mak | Component make file
FastBoot.sd | Component setup controls definition file
FastBoot.sdl | Component configuration file
FastBoot.uni | Component setup strings file
FastBootDxe.c | Main Dxe functionality implementation file
FastBootRuntime.c | Runtime callback implementation file
FastBootTseHook.c | "Console input device available" event callback
PTT.chm | Component help file
FastBootPei | Root\Core\em\FastBoot - Fast boot Pei Driver.
FastBootPei.cif | Veb component description file
FastBootPei.c | Main Pei functionality implementation file
FastBootPei.dxs | Dependency file of FastBootPei PEIM
FastBootPei.mak | Component make file
FastBoot Protocol | Root\Include\Protocol - Fast boot protocol definitions.
FastBootProtocol.cif | Veb component description file
FastBootProtocol.h | Data structures and functions definition file
FastBoot Includes | Root\Include - Fast boot include files.
FastBootIncludes.cif | Veb component description file
FastBoot.h | Data structures and functions definition file
FastBootSMI | Root\Core\em\FastBoot - Fast boot SMI Functions.
FastBootSMI.cif | Veb component description file
FastBootSMI.c | Main SMI functionality implementation file
FastBootSMI.dxs | Dependency file
FastBootSMI.mak | Component make file
FastBootSMI.sdl | Component configuration file
FastBootOption | Root\Core\em\FastBoot\FastBootOption - Report pseudo boot option.
FastBootOption.cif | Veb component description file
FastBootOption.c | Fast Boot Option main functions
FastBootOption.dxs | Dependency file
FastBootOption.h | Data structures and functions definition file
FastBootOption.mak | Component make file
FastBootOption.sdl | Component configuration file
FastBootOptionBds.c | Related functions link to BDS elink
Non-Compiled BIN and LIB File(s) in Flavor:
N0NE
AMI Build Tools:
Tools Label: 4.5.5_TOOLS_39, Dated: 2012-04-04
Visual eBios: RSS.5.72.0220, Dated: 2012-01-04
Compiler Tool(s): Microsoft Windows Driver Kit (WDK) Ver. 7600.16385.1
Compiler Tool(s): Microsoft Windows Driver Development Kit (DDK) Ver. 3790.1830
New features added in this label:
Add function to make sure before boot to OS, BIOS is in fastboot path.
General Bug Fixes and EIP Addressed in this Label:
General Bug Fixes
If set two HDD password and use Raid mode, fastboot will fail.
The Rumtime Memory Allocation in SmiVariable Module may cause S4 Resume Failure.

EIP Addressed
EIP126196 - Adding "Support Raid Driver" token feature for PTT module.
EIP118901 - Publish HII data in fastboot path.
EIP129092 - Add CloseEvent in OnExitBootServices in FastBootOption.c.
EIP125309 - Add function to make sure before boot to OS, BIOS is in fastboot path.
EIP130731 - Use file system protocol to check boot loader exist or not.
EIP130744 - Add a condition "iAMT_SUPPORT" for Elink "IsAmtBoot".
Files Changed for General Bug Fixes and EIP Addressed in this Label:
General Bug Fixes
None

EIP Addressed
Core\EM\FastBoot\FastBoot.c (EIP126196) (EIP118901) (EIP125309) (EIP130731)
Core\EM\FastBoot\FastBoot.sd (EIP126196)
Core\EM\FastBoot\FastBootRuntime.c (EIP126196)
Core\EM\FastBoot\FastBoot.sdl (EIP126196) (EIP125309) (EIP130744)
Core\EM\FastBoot\FastBootTseHook.c (EIP125309)
Core\EM\FastBoot\FastBootOption\FastBootOption.c (EIP129092)
Include\FastBoot.h (EIP126196) (EIP125309)
Known Limitations and Erratas in this label:
Boot from devices installed by AMD RAID Legacy Option ROMs, such as PXE or SCSI devices, is not supported.
About RAID test result:

When AMD RAID option rom create legacy boot option, there is no handle and device path in BBS table, so fastboot function can't support it.
Remaining Issues:
NONE
Unit Testing:
Test1: Enable FastBoot function
1. Enable "FastBoot" setup option in Boot page.
2. Set the boot device as the highest boot priority.
3. FastBoot need a successfully boot to store boot device information, and it will work at second boot.
4. OS system can boot successfully,and S3, S4, S5 is working well.
Test2: Enable FastBoot Skip function
1. Set "VGA Support" option as "Auto" and boot with Legacy OS, User will not see the logo when fastboot is work.
2. Set "USB Support" option as "Disabled", USB device will not be initialized during post. Set "USB Support" as "Partial Initial", USB storage will NOT be available before OS boot
3. Set "PS2 Devices Support" option as "Disabled", PS2 device will not be initialized during post.
4. Set "SATA Support" option as "HDD Only", ODD will not be initialized during post. Set "SATA Support" as "All Sata Devices", ODD and HDD will be initialized during post. Set "SATA Support" as "Last Boot HDD Only", only last boot HDD will be initialized in POST.
Test3: FastBoot Test Mode
1. Enable token "FAST_BOOT_TEST_MODE", "PEI_PERFORMANCE", and "DXE_PERFORMANCE".
2. Copy Shell with Dp tools into boot device file system partition. EX: fs0:\EFI\DP\BOOTx64.efi
3. Enable "FastBoot" setup option in Boot page.
3. If pervious boot device is EFI OS, and BOOTx64.efi location is correct. Fast Boot will attempt to boot with \EFI\DP\BOOTx64.efi
Chipset Porting:
There would need Chipset to get current SATA device information in PEI phase to HOB, please check fastboot.h for the format, and EIP 114861 for sample code.
Validation Testing:
Tested on the Below Platform
Board platform - ChiefRiver
BIOS Information - SS: Alaska;$/Alaska/Projects/Intel/IvyBridge/PantherPoint_ChiefRiver_Crb_1APTJ/; 4.6.5.4_VEB_1APTJ027
OS can boot successfully with fastboot enabled.
S3,S4,and S5 test pass.
About Raid test result, please check eip 113454 for more information.
Release History:
4.6.4.0_PTT_15 Release Notes
4.6.4.0_PTT_14 Release Notes
4.6.4.0_PTT_13 Release Notes
4.6.4.0_PTT_12 Release Notes
4.6.4.0_PTT_11 Release Notes
4.6.4.0_PTT_10 Release Notes

© American Megatrends Inc.


Release Notes - NDA Required

Component Information:
Component Title: Post Time Tuning
Component Reference Name: FastBoot
Component Type: eModule
Release Date: 2012-04-20
Source Control Label: 4.6.4.0_PTT_10
Source Control Location: SS:$/Alaska/SOURCE/Modules/PTT

Dependencies
N0NE
Non-Compiled BIN and LIB File(s) within this Component:
N0NE
Component Description:
PTT is the abbreviation of Post Time Tuning, this eModule is developed based on FastBoot eModule. Due to the variation of usage and variation platform hardware, the best fast boot model does not exist for all platforms. PTT eModule integrate the FastBoot module and provide more optional solutions for user to adjust and make the suitable solutions for their requirement.
Usage:
How to enable FastBoot?
Fast boot from previous boot device
1. Enable "FastBoot" setup option in Boot page.
2. Set the boot device as the highest boot priority.
3. FastBoot need a successful boot to store boot device information, and then fastboot will work at senond boot.
Fast boot from specific device
1. Create "FastOemBootOption" variable that contains device path of the specific device. It needs porting job in your project.
2. Enable "FastBoot" setup option in Boot page.
3. Fast Boot will work in next boot.
How to switch from fastboot to normal?
1. Once hotkey (enter steup, popup menu... etc.) is detected, fastboot will be aborted and keep on going through normal boot path.
2. System Reset during post. System will enter Setup in next boot automatically. It a fail safe mechanism for user to disable Fastboot if neeeded.
Filename | Description
PTT | Root\Core\em\PTT
FastBoot.cif | VeB component description file
FastBoot.sdl | Component configuration file
FastBoot.mak | Component make file
FastBootRuntime.c | Runtime callback implementation file
FastBootTseHook.c | "Console input device available" event callback
FastBoot.c | Main functionality implementation file
PTT.chm | Component help file
FastBoot.sd | Component setup controls definition file
FastBoot.uni | Component setup strings file
FastBootDxe.c | Main Dxe functionality implementation file
FastBootPei | Root\Core\em\FastBoot - Fast boot Pei Driver.
FastBootPei.cif | Veb component description file
FastBootPei.mak | Component make file
FastBootPei.c | Main Pei functionality implementation file
FastBootPei.dxs | Dependency file of FastBootPei PEIM
FastBoot Protocol | Root\Include\Protocol - Fast boot protocol definitions.
FastBootProtocol.cif | Veb component description file
FastBootProtocol.h | Data structures and functions definition file
FastBoot Includes | Root\Include - Fast boot include files.
FastBootIncludes.cif | Veb component description file
FastBoot.h | Data structures and functions definition file
FastBootSMI | Root\Core\em\FastBoot - Fast boot SMI Functions.
FastBootSMI.cif | Veb component description file
FastBootSMI.sdl | Component configuration file
FastBootSMI.c | Main SMI functionality implementation file
FastBootSMI.dxs | Dependency file
FastBootSMI.mak | Component make file
AMI Build Tools:
Tools Label: 4.5.5_tools_36, Dated: 2011-06-30
Visual eBios: RSS.5.70.0171, Dated: 2010-10-04
Compiler Tool(s): Microsoft Windows Driver Kit (WDK) Ver. 7600.16385.1
Compiler Tool(s): Microsoft Windows Driver Development Kit (DDK) Ver. 3790.1830
New features added in this label:
EIP87526 - Fast boot from specific device without recording device information from previous boot
General Bug Fixes:
Usb addon card is not connected successfully when connect Console In devices.
SugarBay got build errors if TSE is disabled
After reboot 2 times, system will show error message and hang up if enabled Fast boot with skip VGA
SUT can't be unlock by network when FastBoot enabled, it always needs to input PIN code and recovery key even connected to WDS Server.
EIP addressed in this label:
EIP85135 - When enabled XHCI support difficult into setup menu.
EIP87452 - 1. Create an elink "ReturnNormalMode", OEM/ODM can link their procedure to handle the fastboot failure case. 2. Disconnect USB controller when return to normal mode.
EIP71257 - SugarBay got build errors if TSE is disabled.
EIP73019 - Code logic improvment, 'Index' used on line 1489, conditionally not set.
EIP75718 - After reboot 2 times, system will show error message and hang up if enabled Fast boot with skip VGA.
EIP75969 - Moved signaling of ReadyToBoot event on EFI boot path before call to LoadImage as per UEFI spec.
EIP86042 - For Win8 seamless boot, BIOS should not clear screen when boot into OS.
EIP87526 - Fastboot from specific device without recording device infomration from previous boot.
EIP86159 - SUT can't be unlock by network when FastBoot enabled, it always needs to input PIN code and recovery key even connected to WDS Server.
EIP68563 - Manufacturing Mode not set for the FastBoot setup options.
Files changed for EIP fixes:
Core\EM\FastBoot\FastBoot.c
Core\EM\FastBoot\FastBoot.sdl
Core\EM\FastBoot\FastBoot.mak
Core\EM\FastBoot\FastBoot.sd
Core\EM\FastBoot\FastBoot.uni
Core\EM\FastBoot\FastBootTseHook.c
Include\FastBoot.h
Include\Protocol\FastBootProtocol.h
Known issues and limitations in this label:
Boot from devices installed by Legacy Option ROMs, such as PXE or SCSI devices, is not supported
If SkipVGA is enabled, and csm policy is uefi only/first. System may hang when fastboot switch to normal boot with Intel GOP driver.
Remaining Issues:
None
Unit Testing:
Test1: Enable FastBoot function
1. Enable "FastBoot" setup option in Boot page.
2. Set the boot device as the highest boot priority.
3. FastBoot need a successfully boot to store boot device information, and it will work at senond boot.
4. OS system can boot suceesffully,and S3, S4, S5 is work well.
Test2: Enable FastBoot Skip function
1. Enable "Skip VGA" option, User will not see the logo when fastboot is work.
2. Enable "Skip USB" option, USB device will not be initialized during post.
3. Enable "Skip PS2" option, PS2 device will not be initialized during post.
Validation Testing:
Tested on the Below Platform
Board platform - ChiefRiver
BIOS Information - SS: Alaska;$/Alaska/Projects/Intel/IvyBridge/PantherPoint_ChiefRiver_Crb_1APTJ/; 4.6.5.3_VEB_1APTJ019
OS can boot successfully with fastboot enabled.
S3,S4,and S5 test pass.
Release History:
4.6.4.0_PTT_10

[TAG] EIP85135
[Category] Bug Fix
[Severity] Normal
[Symptom] When enabled XHCI support difficult into setup menu
[RootCause] Usb addon card is not connected successfully when connect Console In devices.
[Solution] Create FbConnectEverything procedure to connect usb controller.
[Files] FastBoot.c FastBoot.sdl

[Category] Improvement
[Description] Replace procedure "FbAllDriverConnect" by elink "CallTheDispatcher" and "SignalAllDriversConnectedEvent".
[Files] FastBoot.c FastBoot.sdl

[TAG] EIP87452
[Category] Improvement
[Description] 1. Create an elink "ReturnNormalMode", OEM/ODM can link their procedure to handle the fastboot failure case. 2. Disconnect USB controller when return to normal mode.
[Files] FastBoot.c FastBoot.h FastBoot.mak FastBoot.sdl

[TAG] EIP71257
[Category] Bug Fix
[Severity] Normal
[Symptom] SugarBay got build errors if TSE is disabled.
[RootCause] TSE_MAJOR and TSE_MINOR are not defined when TSE is disabled.
[Solution] Add define for TSE_MINOR and TSE_MAJOR if they are not defined.
[Files] FastBoot.c

[TAG] EIP73019
[Category] Improvement
[Description] Code logic improvment, 'Index' used on line 1489, conditionally not set
[Files] FastBoot.c

[TAG] EIP75718
[Category] Bug Fix
[Severity] Normal
[Symptom] After reboot 2 times, system will show error message and hang up if enabled Fast boot with skip VGA
[RootCause] In SG mode, fastboot need to consider mutli VGA case.
[Solution] Disable PCI VGA device when check or install VGA rom failure.
[Files] FastBoot.c

[TAG] EIP75969
[Category] Improvement
[Description] Moved signaling of ReadyToBoot event on EFI boot path before call to LoadImage as per UEFI spec.
[Files] FastBoot.c

[TAG] EIP86042
[Category] Improvement
[Description] For Win8 seamless boot, BIOS should not clear screen when boot into OS.
[Files] FastBoot.c

[Category] Improvement
[Description] Replace procedure "FbAllDriverConnect" by elink "CallTheDispatcher" and "SignalAllDriversConnectedEvent".
[Files] FastBoot.c FastBoot.sdl

[TAG] EIP87526
[Category] New Feature
[Description] Fastboot from specific device without recording device infomration from previous boot
[Files] FastBoot.c

[TAG] EIP86159
[Category] Bug Fix
[Severity] Important
[Symptom] SUT can't be unlock by network when FastBoot enabled, it always needs to input PIN code and recovery key even connected to WDS Server.
[RootCause] Network stack protocol didn't install in fastboot path.
[Solution] Connect Network device and install network stack protocol.
[Files] FastBoot.c

[TAG] EIP68563
[Category] Improvement
[Description] Manufacturing Mode not set for the FastBoot setup options.
[Files] FastBoot.sd FastBoot.uni

[Description] Modify the default of SETUP_DATA.FastBoot as token DEFAULT_FAST_BOOT.
[Files] FastBoot.sd

[Category] Improvement
[Description] Replace procedure "FbAllDriverConnect" by elink "CallTheDispatcher" and "SignalAllDriversConnectedEvent".
[Files] FastBoot.c FastBoot.sdl

4.6.4.0_PTT_09

[TAG] EIP68329
[Category] Bug Fix
[Severity] Important
[Symptom] OS can't back to desktop correctly after resumed from S3.
[RootCause] TSEIDEPasswordFreezeDevices is skipped in fastboot path if SKIP_TSE_HANDSHAKE is enabled.
[Solution] Call TSEIDEPasswordFreezeDevices after ReadyToBoot Event in fastboot path.
[Files] FastBoot.c FastBootProtocol.h FastBootTseHook.c

4.6.4.0_PTT_08

[TAG] EIP63924
[Category] Improvement
[Description] 1. Add elink for FastBoot mode change, default checking rule is check post hotkey.2. Timer call back for check hotkey is not necessary. Create a protocol for calling checkforkey in TSE.3. Since EIP68383 improve the performance of ps2 keyboard, we don't need to exchange the initial order of ConIn/ConOut for getting more time to detect hotkey.
[Files] FastBoot.sdl FastBoot.mak FastBoot.c FastBootTseHook.c FastBoot.h FastBootProtocol.h

[TAG] EIP62845
[Category] New Feature
[Description] Connect all Sata devices in fastboot path.
[Files] FastBoot.c FastBoot.mak FastBoot.sdl

[TAG] EIP67571
[Category] Bug Fix
[Severity] Important
[Symptom] All FastBoot setup options are enabled in manufacturing mode.
[RootCause] MANUFACTURING is set in FastBoot Setup option.
[Solution] Remove MANUFACTURING flag.
[Files] FastBoot.sd

4.6.4.0_PTT_07

[TAG] EIP62683
[Category] New Feature
[Description] Add an Elink after AllDriverConnect in fastboot path.
[Files] FastBoot.cif FastBoot.sdl FastBoot.mak

4.6.4.0_PTT_06

[TAG] EIP60794
[Category] Improvement
[Description] Post Time Tuning eModule improvement for CSP.
1.Clear screen before boot into shell and enable cursor.
2.Move Fastboot.h to include folder.
[Files] FastBoot.cif FastBootIncludes.cif FastBoot.h

4.6.4.0_PTT_05

[TAG] EIP57430
[Category] New Feature
[Description] PTT module is not compatible with core 4.6.5.0. Modify it to make build pass
[Files] FastBootDxe.c

[TAG] EIP56151
[Category] Improvement
[Description] PTT eModule has several compiled errors if CSM eModule is removed, that must be solved.
[Files] FastBoot.c FastBoot.sd

[TAG] EIP54286
[Category] Improvement
[Description] Add elink for IsFastBoot Function to overwirte it, it can help OEM/ODM to implement their "FAST BOOT" feature easily.
[Files] FastBoot.sdl FastBoot.mak FastBoot.c

[TAG] EIP51391
[Category] Bug Fix
[Severity] Normal
[Symptom] In windows, use DmiEdit to change SMBIOS data, and update. SMBIOS will update failure in next boot.
[RootCause] The reason cause this issue is, ROM will copy to ram in end of PEI phase. When SMBIOS Dxe driver update modified data to flash, the firmware volume block protocol is pointer to RAM, not flash. So it will cause update failure.
[Solution] Before SMBIOS Dxe driver, restore the Base Address of Firmware Volume Block Protocol from RAM to ROM.
[Files] FastBoot.sdl FastBoot.mak FastBoot.cif

[TAG] EIP54993
[Category] Improvement
[Severity] Normal
[Description]
1.Sync with Fastboot_10
2.Remove token "SAVE_LAST_BOOT_DEVICE_CHECKSUM"
3.Add token "CALL_DISPATCHER_AGAIN_IN_FASTBOOT"
4.Use SimpleText protocol to detect mode change hotkey instead of pBS->ConIn.
5.Simplify the code about "AMILEGACY16_FASTBOOT_SOLUTION".
6.Fixed a bug that SATA device can't be found if keep TSE execution on fastboot path.
[Files] FastBoot.cif FastBoot.sdl FastBootRuntime.c FastBootTseHook.c FastBoot.c FastBoot.h FastBoot.sd FastBootProtocol.cif FastBootProtocol.h FastBootSMI.cif FastBootSMI.sdl FastBootSMI.c FastBootSMI.dxs FastBootSMI.mak

4.6.4_PTT_04

[TAG] EIP48698
[Category] Bug Fix
[Severity] Critical
[Symptom] CPU exception when all ConIn are skipped.
[RootCause] It's side effect of "EIP48698". "FBTimerCallback" is called when pBS-> ConIn is Null.
[Solution] Move "FBTimerCallback" to after "InstallDummySimpleTextProtocol" to make sure pBS->Con is not Null.
[Files] FastBoot.cif FastBoot.sdl FastBootPei.cif FastBootPei.mak FastBootPei.c FastBootPei.dxs

4.6.4_PTT_03

[TAG] EIP47280
[Category] New Feature
[Description] Currently, BIOS will copy FV_MAIN or FV_BB into memory in DXE phase.If BIOS copy rom before CPU disable flash cache in PEI phase.Some data are in cache already, don't need to read from physical ROM.It can help to save some time.
[Files] FastBoot.cif FastBoot.sdl FastBootPei.cif FastBootPei.mak FastBootPei.c FastBootPei.dxs

[TAG] EIP47397
[Category] Improvement
[Description] 1. Move all console related functions into PTT module to avoid uncompatible with different core version.
2. Install dumy SimpleTextCoin protocol when pBS->ConIn & pBS-ConOut is Null.
3. Raise timer call back as TPL_HIGH_LEVEL level, it will give BIOS more chance to mode change successfully.
4. Remove FASTBOOT_CONSOLE_SETTING token.Add setup option for fastboot setting, "Skip VGA", "Skip USB", Skip "PS2".
[Files] FastBoot.c FastBoot.h FastBoot.sd FastBoot.sdl FastBoot.uni

[TAG] EIP48698
[Category] Improvement
[Description] For improving success ratio of mode change by hotkey. Move some work into PTT module, it can make BIOS have more time to detect hotkey. 1.Install and execute VGA OpRom in PTT module. 2.Replace the order of connect ConIn/ConOut.
[Files] FastBoot.c

4.6.4_PTT_02

[TAG] EIP46688
[Category] Bug Fix
[Severity] Critical
[Symptom] After dd PTT moduel and enable fast boot, the system will have a CPU exception 0xOD error during POST
[RootCause] The root cause is EFI_COMPONENT_NAME_PROTOCOL_GUID and EFI_COMPONENT_NAME2_PROTOCOL_GUID is used in different UEFI version.
[Solution] Add UEFI versrion checking rule to avoid this problem.
[Files] fastboot.c

4.6.4_PTT_01
Fix build error issue
4.6.4_PTT_00
Initial release
Porting Guide:

For support fastboot with specific device, "FastOemBootOption" must be created.
Below is the variable format.

FastOemBootOption of Legacy device
{
    UINT16 BootOption type - FAST_BOOT_TYPE_LEGACY (0x00)
    EFI_DEVICE_PATH_PROTOCOL FilePathList[];
}

FastOemBootOption of EFI device
{
    UINT16 BootOption type - FAST_BOOT_TYPE_EFI (0x01)
    EFI_DEVICE_PATH_PROTOCOL FilePathList[];(Including parition and file path)
    UINT8 LOAD_OPTION[]
}

Below are some samples.

// usb key
UINT8 BootOption[] = {
FAST_BOOT_TYPE_LEGACY,
0x00,

0x02, //Type
0x01, //Sub Type
0x0C,0x00, //Length of this structure
0xD0,0x41,0x03,0x0A, //_HID
0x00,0x00,0x00,0x00, //_UID

0x01, //Type
0x01, //Sub Type
0x06,0x00, //Length of this structure
0x00, //function
0x1D, //device

0x03, //Type
0x05, //Sub Type
0x06,0x00, //Length of this structure
0x01, //parent port number
0x00, //interface number

0x03, //Type
0x05, //Sub Type
0x06,0x00, //Length of this structure
0x01, //parent port number
0x00, //interface number

0x7f,0xff,0x04,0x00 //End of Hardware Device Path
};

// achi sata port
UINT8 BootOption1[] = {
FAST_BOOT_TYPE_LEGACY,
0x00,

0x02, //Type
0x01, //Sub Type
0x0C,0x00, //Length of this structure
0xD0,0x41,0x03,0x0A, //_HID
0x00,0x00,0x00,0x00, //_UID

0x01, //Type
0x01, //Sub Type
0x06,0x00, //Length of this structure
0x02, //function
0x1f, //device

0x03, //Type
0x12, //Sub Type
0x0a,0x00, //Length of this structure
0x05,0x00, //HBA port number
0xff,0xff, //port multiplier port number
0x00,0x00, //logic unit number

0x7f,0xff,0x04,0x00 //End of Hardware Device Path
};

// ide sata port
UINT8 BootOption2[] = {
FAST_BOOT_TYPE_LEGACY,
0x00,

0x02, //Type
0x01, //Sub Type
0x0C,0x00, //Length of this structure
0xD0,0x41,0x03,0x0A, //_HID
0x00,0x00,0x00,0x00, //_UID

0x01, //Type
0x01, //Sub Type
0x06,0x00, //Length of this structure
0x05, //function
0x1f, //device

0x03, //Type
0x01, //Sub Type
0x08,0x00, //Length of this structure
0x01, //PrimarySecondary
0x00, //MaterSlave
0x00,0x00, //logic unit number

0x7f,0xff,0x04,0x00 //End of Hardware Device Path
};

//uefi ahci sata win8
UINT8 BootOption3[] = {
FAST_BOOT_TYPE_EFI,
0x00,

0x02, //Type
0x01, //Sub Type
0x0C,0x00, //Length of this structure
0xD0,0x41,0x03,0x0A, //_HID
0x00,0x00,0x00,0x00, //_UID

0x01, //Type
0x01, //Sub Type
0x06,0x00, //Length of this structure
0x02, //function
0x1f, //device

0x03, //Type
0x12, //Sub Type
0x0A,0x00, //Length of this structure
0x05,0x00, //HBA port number
0xff,0xff, //port multiplier port number
0x00,0x00, //logic unit number

0x04, //Type
0x01, //Sub Type
0x2a,0x00, //Length of this structure
0x02,0x00,0x00,0x00, //partiton number
0x00,0x68,0x09,0x00,0x00,0x00,0x00,0x00, //partiton start
0x00,0x20,0x03,0x00,0x00,0x00,0x00,0x00, //partiton size
0xb6,0x92,0x05,0x2b,0x36,0x68,0xad,0x47,0x88,0x9a,0xba,0xef,0x07,0x2c,0x20,0x5b, //signature
0x02, //partiton format
0x02, //signature type

0x04, //Type
0x04, //Sub Type
0x46,0x00, //Length of this structure
0x5c,0x00,0x45,0x00,0x46,0x00,0x49,0x00,0x5c,0x00,0x4d,0x00,0x69,0x00,0x63,0x00,0x72,0x00,0x6f,0x00,0x73,0x00,0x6f,0x00,0x66,0x00,0x74,0x00,0x5c,0x00,
0x42,0x00,0x6f,0x00,0x6f,0x00,0x74,0x00,0x5c,0x00,0x62,0x00,0x6f,0x00,0x6f,0x00,0x74,0x00,0x6d,0x00,0x67,0x00,0x66,0x00,0x77,0x00,0x2e,0x00,0x65,0x00,0x66,0x00,0x69,0x00,0x00,0x00,
0x7f,0xff,0x04,0x00, //End of Hardware Device Path

0x04,0x00,0x00,0x00, //load option size
0x41,0x4d,0x42,0x4f
};

© American Megatrends Inc.


Release Notes - NDA Required

Component Information:
Component Title: Post Time Tuning
Component Reference Name: FastBoot
Component Type: eModule
Release Date: 2012-06-08
Source Control Label: 4.6.4.0_PTT_11
Source Control Location: SS: Alaska;$/Alaska/SOURCE/Modules/PTT
Dependencies
Component Dependencies
N0NE

File Dependencies
N0NE

Protocol Dependencies
N0NE
Non-Compiled BIN and LIB File(s) within this Component:
N0NE
Component Description:
PTT is the abbreviation of Post Time Tuning, this eModule is developed based on FastBoot eModule. Due to the variation of usage and variation platform hardware, the best fast boot model does not exist for all platforms. PTT eModule integrate the FastBoot module and provide more optional solutions for user to adjust and make the suitable solutions for their requirement.
Usage:
How to enable FastBoot?
Fast boot from previous boot device
1. Enable "FastBoot" setup option in Boot page.
2. Set the boot device as the highest boot priority.
3. FastBoot need a successful boot to store boot device information, and then fastboot will work at second boot.
How to switch from fastboot to normal boot?
1. Once hotkey (enter setup, popup menu... etc.) is detected, fastboot will be aborted and keep on going through a normal boot path.
2. System Reset during post. The System will enter Setup in next boot automatically. It's a fail safe mechanism for user to disable Fastboot if neeeded.
Fast boot sub setup Items
VGA Support
EFI Driver - Install EFI driver and service for VGA
Auto - Only install Legacy OpRom with Legacy OS, and logo would not be shown during Post. EFI driver and service will still be installed with EFI OS.
USB Support
Disabled - All USB devices will NOT be available until after OS boot.
Full Initial - All USB devices will be available in OS and Post.
Partial Initial - According to token "USB_SKIP_TABLE", specific USB port/device will NOT be available before OS boot.
PS2 Devices Support
Enabled - PS2 devices will be available in OS and Post.
Disabled - PS2 devices will NOT be available in Post. PS2ms.asl and PS2kb.asl may need to porting for PS2 device working in ACPI OS.
NetWork Stack Driver Support
Enabled - NetWrok Stack driver is supported in fast boot path.
Disabled - Network Stack drivers would NOT be started in fast boot path.
Fast Boot Policy Protocol
Fast Boot Policy protocol is created for dynamic changing fast boot behavior. OEM/BSP can locate this protocol, and change the policy before BIOS run into fastboot path.
Below are elements and default value in fast boot policy protocol.
BOOLEAN FastBootEnable -> SetupOption "FastBoot Enable"
BOOLEAN TestMode -> token "FAST_BOOT_TEST_MODE"
===========pervious boot information=================
BOOLEAN UEfiBoot -> Pervious Boot is EFI or Legacy type
UINT16 BootOptionNumber -> Boot Option number if previous boot is EFI
UINT16 DevStrCheckSum -> Device string checksum if pervious boot is Legacy
EFI_DEVICE_PATH_PROTOCOL *FastBootOption -> Device path of pervious boot device.
BOOLEAN LastBootFailure -> whether boot failure occurs in previous boot
BOOLEAN LastBootVarPresence -> whether "LastBoot" Var is exist.
UINT32 BootCount -> How many times boot with fastboot mode
===========fast boot behavior para=================
BOOLEAN FirstFastBootInS4 -> allow first fast boot in S4.
BOOLEAN CheckBootOptionNumber -> Check boot option number is first boot option in boot order in fast boot path.
BOOLEAN CheckDevStrCheckSum -> Check device string is as same as a previous boot device.
BOOLEAN VGASupport -> SetupOption "VGA Support".
BOOLEAN UsbSupport -> SetupOption "USB Support".
VOID *UsbSkipTable -> USB skip table, it's used when "Partial Initial" is selected.
UINTN UsbSkipTableSize -> USB skip table size
BOOLEAN Ps2Support -> SetupOption "PS2 Devices Support".
BOOLEAN NetWorkStackSupport -> SetupOption "NetWork Stack Driver Support".
SKIP_PCI_LIST *SkipPciList -> Token "FAST_BOOT_PCI_SKIP_LIST", the list of the skipped controller in procedure "FbConnectEverything".
UINTN SkipPciListSize -> SkipPciList table size.
BOOLEAN CheckPassword -> Token "ALLOW_CHECKING_PASSWORD", allow checking password in fast boot path.
BOOLEAN SkipTSEHandshake -> Token "SKIP_TSE_HANDSHAKE", skip TSE handshake in fast boot path.
Filename | Description
PTT | Root\Core\em\PTT
FastBoot.cif | VeB component description file
FastBoot.sdl | Component configuration file
FastBoot.mak | Component make file
FastBootRuntime.c | Runtime callback implementation file
FastBootTseHook.c | "Console input device available" event callback
FastBoot.c | Main functionality implementation file
PTT.chm | Component help file
FastBoot.sd | Component setup controls definition file
FastBoot.uni | Component setup strings file
FastBootDxe.c | Main Dxe functionality implementation file
FastBootPei | Root\Core\em\FastBoot - Fast boot Pei Driver.
FastBootPei.cif | Veb component description file
FastBootPei.mak | Component make file
FastBootPei.c | Main Pei functionality implementation file
FastBootPei.dxs | Dependency file of FastBootPei PEIM
FastBoot Protocol | Root\Include\Protocol - Fast boot protocol definitions.
FastBootProtocol.cif | Veb component description file
FastBootProtocol.h | Data structures and functions definition file
FastBoot Includes | Root\Include - Fast boot include files.
FastBootIncludes.cif | Veb component description file
FastBoot.h | Data structures and functions definition file
FastBootSMI | Root\Core\em\FastBoot - Fast boot SMI Functions.
FastBootSMI.cif | Veb component description file
FastBootSMI.sdl | Component configuration file
FastBootSMI.c | Main SMI functionality implementation file
FastBootSMI.dxs | Dependency file
FastBootSMI.mak | Component make file
Non-Compiled BIN and LIB File(s) in Flavor:
N0NE
AMI Build Tools:
Tools Label: 4.5.5_TOOLS_39, Dated: 2012-04-04
Visual eBios: RSS.5.72.0220, Dated: 2012-01-04
Compiler Tool(s): Microsoft Windows Driver Kit (WDK) Ver. 7600.16385.1
Compiler Tool(s): Microsoft Windows Driver Development Kit (DDK) Ver. 3790.1830
New features added in this label:
Fast Boot Policy Support - Create a Fast Boot Policy protocol, fast boot behavior is managed by this protocol.
General Bug Fixes and EIP Addressed in this Label:
General Bug Fixes
NONE

EIP Addressed
EIP #87390 - TCG Bitlocker Driver Encryption error if set the Fast boot enable - Set USB device priority as BBS_DO_NOT_BOOT_FROM for installing int13 service. Raise TPL as TPL_HIGH_LEVEL for invoking TPM callback function "OnPciIOInstalled".
EIP #91800 - The USB_SKIP_LIST which in the SBDXE.c in the routing “sbUsbProtocolCallback” is not working. - Backup SkipTable pointer before setting new skip table in Fastboot path. If return to normal boot mode, restore the skip table pointer to backup one.
Files Changed for General Bug Fixes and EIP Addressed in this Label:
General Bug Fixes
NONE

EIP Addressed
Include\FastBoot.h (EIP #87390) (EIP #90455)
Include\Protocol\FastBootProtocol.h (EIP #90455)
Core\EM\FastBoot\FastBoot.c (EIP #91800)(EIP #87390) (EIP #90455)
Core\EM\FastBoot\FastBoot.sdl (EIP #90455)
Core\EM\FastBoot\FastBoot.sd (EIP #90455)
Core\EM\FastBoot\FastBoot.uni (EIP #90455)
Core\EM\FastBoot\FastBootRuntime.c (EIP #90455)
Core\EM\FastBoot\FastBootTseHook.c (EIP #90455)
Known Limitations and Erratas in this label:
Boot from devices installed by Legacy Option ROMs, such as PXE or SCSI devices, is not supported
Remaining Issues:
NONE
Unit Testing:
Test1: Enable FastBoot function
1. Enable "FastBoot" setup option in Boot page.
2. Set the boot device as the highest boot priority.
3. FastBoot need a successfully boot to store boot device information, and it will work at second boot.
4. OS system can boot successfully,and S3, S4, S5 is working well.
Test2: Enable FastBoot Skip function
1. Set "VGA Support" option as "Auto" and boot with Legacy OS, User will not see the logo when fastboot is work.
2. Set "USB Support" option as "Disabled", USB device will not be initialized during post. Set "USB Support" as "Partial Initial", USB storage will NOT be available before OS boot
3. Set "PS2 Devices Support" option as "Disabled", PS2 device will not be initialized during post.
Test3: FastBoot Test Mode
1. Enable token "FAST_BOOT_TEST_MODE", "PEI_PERFORMANCE", and "DXE_PERFORMANCE".
2. Copy Shell with Dp tools into boot device file system partition. EX: fs0:\EFI\DP\BOOTx64.efi
3. Enable "FastBoot" setup option in Boot page.
3. If pervious boot device is EFI OS, and BOOTx64.efi location is correct. Fast Boot will attempt to boot with \EFI\DP\BOOTx64.efi
Validation Testing:
Tested on the Below Platform
Board platform - ChiefRiver
BIOS Information - SS: Alaska;$/Alaska/Projects/Intel/IvyBridge/PantherPoint_ChiefRiver_Crb_1APTJ/; 4.6.5.3_VEB_1APTJ021
OS can boot successfully with fastboot enabled.
S3,S4,and S5 test pass.
Release History:
4.6.4.0_PTT_10 Release Notes

© American Megatrends Inc.


Release Notes - NDA Required

Component Information:
Component Title: Post Time Tuning
Component Reference Name: FastBoot
Component Type: eModule
Release Date: 2012-09-06
Source Control Label: 4.6.4.0_PTT_12
Source Control Location: SS: Alaska;$/Alaska/SOURCE/Modules/PTT
Dependencies
Component Dependencies
Dependent Component Title: USB
Dependent Component Reference Name: USB
Dependent Source Control Label: 4.6.3_USB_08.10.24
Dependent Source Control Location: SS: Alaska;$/Alaska/SOURCE/Modules/USB/Alaska;

File Dependencies
N0NE

Protocol Dependencies
N0NE
Non-Compiled BIN and LIB File(s) within this Component:
N0NE
Component Description:
PTT is the abbreviation of Post Time Tuning, this eModule is developed based on FastBoot eModule. Due to the variation of usage and variation platform hardware, the best fast boot model does not exist for all platforms. PTT eModule integrate the FastBoot module and provide more optional solutions for user to adjust and make the suitable solutions for their requirement.
Usage:
How to enable FastBoot?
Fast boot from previous boot device
1. Enable "FastBoot" setup option in Boot page.
2. Set the boot device as the highest boot priority.
3. FastBoot need a successful boot to store boot device information, and then fastboot will work at second boot.
How to switch from fastboot to normal boot?
1. Once hotkey (enter setup, popup menu... etc.) is detected, fastboot will be aborted and keep on going through a normal boot path.
2. System Reset during post. The System will enter Setup in next boot automatically. It's a fail safe mechanism for user to disable Fastboot if neeeded.
Fast boot sub setup Items
VGA Support
EFI Driver - Install EFI driver and service for VGA
Auto - Only install Legacy OpRom with Legacy OS, and logo would not be shown during Post. EFI driver and service will still be installed with EFI OS.
USB Support
Disabled - All USB devices will NOT be available until after OS boot.
Full Initial - All USB devices will be available in OS and Post.
Partial Initial - According to token "USB_SKIP_TABLE", specific USB port/device will NOT be available before OS boot.
PS2 Devices Support
Enabled - PS2 devices will be available in OS and Post.
Disabled - PS2 devices will NOT be available in Post. PS2ms.asl and PS2kb.asl may need to porting for PS2 device working in ACPI OS.
NetWork Stack Driver Support
Enabled - NetWrok Stack driver is supported in fast boot path.
Disabled - Network Stack drivers would NOT be started in fast boot path.
Fast Boot Policy Protocol
Fast Boot Policy protocol is created for dynamic changing fast boot behavior. OEM/BSP can locate this protocol, and change the policy before BIOS run into fastboot path.
Below are elements and default value in fast boot policy protocol.
BOOLEAN FastBootEnable -> SetupOption "FastBoot Enable"
BOOLEAN TestMode -> token "FAST_BOOT_TEST_MODE"
===========pervious boot information=================
BOOLEAN UEfiBoot -> Pervious Boot is EFI or Legacy type
UINT16 BootOptionNumber -> Boot Option number if previous boot is EFI
UINT16 DevStrCheckSum -> Device string checksum if pervious boot is Legacy
EFI_DEVICE_PATH_PROTOCOL *FastBootOption -> Device path of pervious boot device.
BOOLEAN LastBootFailure -> whether boot failure occurs in previous boot
BOOLEAN LastBootVarPresence -> whether "LastBoot" Var is exist.
UINT32 BootCount -> How many times boot with fastboot mode
===========fast boot behavior para=================
BOOLEAN FirstFastBootInS4 -> allow first fast boot in S4.
BOOLEAN CheckBootOptionNumber -> Check boot option number is first boot option in boot order in fast boot path.
BOOLEAN CheckDevStrCheckSum -> Check device string is as same as a previous boot device.
BOOLEAN VGASupport -> SetupOption "VGA Support".
BOOLEAN UsbSupport -> SetupOption "USB Support".
VOID *UsbSkipTable -> USB skip table, it's used when "Partial Initial" is selected.
UINTN UsbSkipTableSize -> USB skip table size
BOOLEAN Ps2Support -> SetupOption "PS2 Devices Support".
BOOLEAN NetWorkStackSupport -> SetupOption "NetWork Stack Driver Support".
SKIP_PCI_LIST *SkipPciList -> Token "FAST_BOOT_PCI_SKIP_LIST", the list of the skipped controller in procedure "FbConnectEverything".
UINTN SkipPciListSize -> SkipPciList table size.
BOOLEAN CheckPassword -> Token "ALLOW_CHECKING_PASSWORD", allow checking password in fast boot path.
BOOLEAN SkipTSEHandshake -> Token "SKIP_TSE_HANDSHAKE", skip TSE handshake in fast boot path.
BOOLEAN ConnectAllSata -> Token "CONNECT_ALL_SATA_DEVICE_IN_FASTBOOT", connect all SATA device in fast boot path.
BOOLEAN InFastBootPath -> A flag to show whether code flow is in the fast boot path now.
Filename | Description
PTT | Root\Core\em\PTT
FastBoot.cif | VeB component description file
FastBoot.sdl | Component configuration file
FastBoot.mak | Component make file
FastBootRuntime.c | Runtime callback implementation file
FastBootTseHook.c | "Console input device available" event callback
FastBoot.c | Main functionality implementation file
PTT.chm | Component help file
FastBoot.sd | Component setup controls definition file
FastBoot.uni | Component setup strings file
FastBootDxe.c | Main Dxe functionality implementation file
FastBootPei | Root\Core\em\FastBoot - Fast boot Pei Driver.
FastBootPei.cif | Veb component description file
FastBootPei.mak | Component make file
FastBootPei.c | Main Pei functionality implementation file
FastBootPei.dxs | Dependency file of FastBootPei PEIM
FastBoot Protocol | Root\Include\Protocol - Fast boot protocol definitions.
FastBootProtocol.cif | Veb component description file
FastBootProtocol.h | Data structures and functions definition file
FastBoot Includes | Root\Include - Fast boot include files.
FastBootIncludes.cif | Veb component description file
FastBoot.h | Data structures and functions definition file
FastBootSMI | Root\Core\em\FastBoot - Fast boot SMI Functions.
FastBootSMI.cif | Veb component description file
FastBootSMI.sdl | Component configuration file
FastBootSMI.c | Main SMI functionality implementation file
FastBootSMI.dxs | Dependency file
FastBootSMI.mak | Component make file
Non-Compiled BIN and LIB File(s) in Flavor:
N0NE
AMI Build Tools:
Tools Label: 4.5.5_TOOLS_39, Dated: 2012-04-04
Visual eBios: RSS.5.72.0220, Dated: 2012-01-04
Compiler Tool(s): Microsoft Windows Driver Kit (WDK) Ver. 7600.16385.1
Compiler Tool(s): Microsoft Windows Driver Development Kit (DDK) Ver. 3790.1830
New features added in this label:
Fast boot boot option selection - IS_VALID_FASTBOOT_BOOT_OPTION_FUNC is a hook for selecting the boot option used for fast boot.
Add CONNECT_ALL_SATA_DEVICE_IN_FASTBOOT function into FastBoot Policy.
Add "Test mode" into FastBoot setup menu.
Add token "LAST_BOOT_FAIL_MECHANISM" to enabled/disabled FastBoot fail mechanism. If the last fast boot is failure, BIOS will attempt to enter setup next boot.
Provide a sample in IsValidFastBootOption procedure, it will parse the device path in the boot option to know this boot option is LegacyType, UsbDevice, HardDrive, CDROM, NetWork, or WindowsBootManager.
According to the existence of user password, PTT can decide to skip "ProcessConInAvailability" automatically.
Add a flag "InFastBootPath" in FAST_BOOT_POLICY protocol.
General Bug Fixes and EIP Addressed in this Label:
General Bug Fixes
Fix logic defect in the if statement in procedure "FastBootCheckForKey".
Consider fast boot failed case, chagne boot flow back to BOOT_FLOW_CONDITION_NORMAL.
Fixed the logic of IsFastBoot elink. System only enter FastBoot path when all the IsFastBoot elinks return TRUE.

EIP Addressed
EIP97474 - Some handles are not connectted in FbConnectEverything. - Connect all handles and only skip the devices we expected.
EIP91458 - USB LAN is identified as USB Hdd, and it cause fast boot behavior wrong. - Add checking rule for USB LAN, this kind of device would not be the fast boot device.
EIP95568 - SATA HDD device is not found under UEFI Shell when SATA mode is RAID. - Connect RAID controller in ConnectAllSATADevices procedure.
EIP96292 - Bitlock test failure when fast boot enabled and USB support is as "partial initial". - Usb module provides the policy control for USB mass storage driver enabled/disabled dynamically.
EIP100342 - System hangs if remove monitor cable (D-SUB\DVI\HDMI) when FastBoot enabled. - Signal CONSOLE_OUT_DEVICES_STARTED_PROTOCOL_GUID and install simple text out protocol even if there is no ConOut devcie.
Files Changed for General Bug Fixes and EIP Addressed in this Label:
General Bug Fixes
Core\EM\FastBoot\FastBoot.c
Include\Protocol\FastBootProtocol.h
Core\EM\FastBoot\FastBoot.sdl

EIP Addressed
Core\EM\FastBoot\FastBoot.c (EIP97474)(EIP91458)(EIP95568)(EIP100342)
Core\EM\FastBoot\FastBoot.sdl (EIP97474)(EIP96292)
Known Limitations and Erratas in this label:
Boot from devices installed by Legacy Option ROMs, such as PXE or SCSI devices, is not supported
Remaining Issues:
NONE
Unit Testing:
Test1: Enable FastBoot function
1. Enable "FastBoot" setup option in Boot page.
2. Set the boot device as the highest boot priority.
3. FastBoot need a successfully boot to store boot device information, and it will work at second boot.
4. OS system can boot successfully,and S3, S4, S5 is working well.
Test2: Enable FastBoot Skip function
1. Set "VGA Support" option as "Auto" and boot with Legacy OS, User will not see the logo when fastboot is work.
2. Set "USB Support" option as "Disabled", USB device will not be initialized during post. Set "USB Support" as "Partial Initial", USB storage will NOT be available before OS boot
3. Set "PS2 Devices Support" option as "Disabled", PS2 device will not be initialized during post.
Test3: FastBoot Test Mode
1. Enable token "FAST_BOOT_TEST_MODE", "PEI_PERFORMANCE", and "DXE_PERFORMANCE".
2. Copy Shell with Dp tools into boot device file system partition. EX: fs0:\EFI\DP\BOOTx64.efi
3. Enable "FastBoot" setup option in Boot page.
3. If pervious boot device is EFI OS, and BOOTx64.efi location is correct. Fast Boot will attempt to boot with \EFI\DP\BOOTx64.efi
Validation Testing:
Tested on the Below Platform
Board platform - ChiefRiver
BIOS Information - SS: Alaska;$/Alaska/Projects/Intel/IvyBridge/PantherPoint_ChiefRiver_Crb_1APTJ/; 4.6.5.3_VEB_1APTJ023
OS can boot successfully with fastboot enabled.
S3,S4,and S5 test pass.
Release History:
4.6.4.0_PTT_11 Release Notes
4.6.4.0_PTT_10 Release Notes

© American Megatrends Inc.


Release Notes - NDA Required

Component Information:
Component Title: Post Time Tuning
Component Reference Name: FastBoot
Component Type: eModule
Release Date: 2012-11-30
Source Control Label: 4.6.4.0_PTT_13
Source Control Location: SS: Alaska;$/Alaska/SOURCE/Modules/PTT
Dependencies
Component Dependencies
Dependent Component Title: USB
Dependent Component Reference Name: USB
Dependent Source Control Label: 4.6.3_USB_08.10.24
Dependent Source Control Location: SS: Alaska;$/Alaska/SOURCE/Modules/USB/Alaska;

File Dependencies
N0NE

Protocol Dependencies
N0NE
Non-Compiled BIN and LIB File(s) within this Component:
N0NE
Component Description:
PTT is the abbreviation of Post Time Tuning, this eModule is developed based on FastBoot eModule. Due to the variation of usage and variation platform hardware, the best fast boot model does not exist for all platforms. PTT eModule integrate the FastBoot module and provide more optional solutions for user to adjust and make the suitable solutions for their requirement.
Usage:
How to enable FastBoot?
Fast boot from previous boot device
1. Enable "FastBoot" setup option in Boot page.
2. Set the boot device as the highest boot priority.
3. FastBoot need a successful boot to store boot device information, and then fastboot will work at second boot.
How to switch from fastboot to normal boot?
1. Once hotkey (enter setup, popup menu... etc.) is detected, fastboot will be aborted and keep on going through a normal boot path.
2. System Reset during post. The System will enter Setup in next boot automatically. It's a fail safe mechanism for user to disable Fastboot if neeeded.
Fast boot sub setup Items
VGA Support
EFI Driver - Install EFI driver and service for VGA
Auto - Only install Legacy OpRom with Legacy OS, and logo would not be shown during Post. EFI driver and service will still be installed with EFI OS.
USB Support
Disabled - All USB devices will NOT be available until after OS boot.
Full Initial - All USB devices will be available in OS and Post.
Partial Initial - According to token "USB_SKIP_TABLE", specific USB port/device will NOT be available before OS boot.
PS2 Devices Support
Enabled - PS2 devices will be available in OS and Post.
Disabled - PS2 devices will NOT be available in Post. PS2ms.asl and PS2kb.asl may need to porting for PS2 device working in ACPI OS.
NetWork Stack Driver Support
Enabled - NetWrok Stack driver is supported in fast boot path.
Disabled - Network Stack drivers would NOT be started in fast boot path.
Fast Boot Policy Protocol
Fast Boot Policy protocol is created for dynamic changing fast boot behavior. OEM/BSP can locate this protocol, and change the policy before BIOS run into fastboot path.
Below are elements and default value in fast boot policy protocol.
BOOLEAN FastBootEnable -> SetupOption "FastBoot Enable"
BOOLEAN TestMode -> token "FAST_BOOT_TEST_MODE"
===========pervious boot information=================
BOOLEAN UEfiBoot -> Pervious Boot is EFI or Legacy type
UINT16 BootOptionNumber -> Boot Option number if previous boot is EFI
UINT16 DevStrCheckSum -> Device string checksum if pervious boot is Legacy
EFI_DEVICE_PATH_PROTOCOL *FastBootOption -> Device path of pervious boot device.
BOOLEAN LastBootFailure -> whether boot failure occurs in previous boot
BOOLEAN LastBootVarPresence -> whether "LastBoot" Var is exist.
UINT32 BootCount -> How many times boot with fastboot mode
===========fast boot behavior para=================
BOOLEAN FirstFastBootInS4 -> allow first fast boot in S4.
BOOLEAN CheckBootOptionNumber -> Check boot option number is first boot option in boot order in fast boot path.
BOOLEAN CheckDevStrCheckSum -> Check device string is as same as a previous boot device.
BOOLEAN VGASupport -> SetupOption "VGA Support".
BOOLEAN UsbSupport -> SetupOption "USB Support".
VOID *UsbSkipTable -> USB skip table, it's used when "Partial Initial" is selected.
UINTN UsbSkipTableSize -> USB skip table size
BOOLEAN Ps2Support -> SetupOption "PS2 Devices Support".
BOOLEAN NetWorkStackSupport -> SetupOption "NetWork Stack Driver Support".
SKIP_PCI_LIST *SkipPciList -> Token "FAST_BOOT_PCI_SKIP_LIST", the list of the skipped controller in procedure "FbConnectEverything".
UINTN SkipPciListSize -> SkipPciList table size.
BOOLEAN CheckPassword -> Token "ALLOW_CHECKING_PASSWORD", allow checking password in fast boot path.
BOOLEAN SkipTSEHandshake -> Token "SKIP_TSE_HANDSHAKE", skip TSE handshake in fast boot path.
BOOLEAN ConnectAllSata -> Token "CONNECT_ALL_SATA_DEVICE_IN_FASTBOOT", connect all SATA device in fast boot path.
BOOLEAN InFastBootPath -> A flag to show whether code flow is in the fast boot path now.
Filename | Description
PTT | Root\Core\em\PTT
FastBoot.cif | VeB component description file
FastBoot.c | Main functionality implementation file
FastBoot.mak | Component make file
FastBoot.sd | Component setup controls definition file
FastBoot.sdl | Component configuration file
FastBoot.uni | Component setup strings file
FastBootDxe.c | Main Dxe functionality implementation file
FastBootRuntime.c | Runtime callback implementation file
FastBootTseHook.c | "Console input device available" event callback
PTT.chm | Component help file
FastBootPei | Root\Core\em\FastBoot - Fast boot Pei Driver.
FastBootPei.cif | Veb component description file
FastBootPei.c | Main Pei functionality implementation file
FastBootPei.dxs | Dependency file of FastBootPei PEIM
FastBootPei.mak | Component make file
FastBoot Protocol | Root\Include\Protocol - Fast boot protocol definitions.
FastBootProtocol.cif | Veb component description file
FastBootProtocol.h | Data structures and functions definition file
FastBoot Includes | Root\Include - Fast boot include files.
FastBootIncludes.cif | Veb component description file
FastBoot.h | Data structures and functions definition file
FastBootSMI | Root\Core\em\FastBoot - Fast boot SMI Functions.
FastBootSMI.cif | Veb component description file
FastBootSMI.c | Main SMI functionality implementation file
FastBootSMI.dxs | Dependency file
FastBootSMI.mak | Component make file
FastBootSMI.sdl | Component configuration file
FastBootOption | Root\Core\em\FastBoot\FastBootOption - Report pseudo boot option.
FastBootOption.cif | Veb component description file
FastBootOption.c | Fast Boot Option main functions
FastBootOption.dxs | Dependency file
FastBootOption.h | Data structures and functions definition file
FastBootOption.mak | Component make file
FastBootOption.sdl | Component configuration file
FastBootOptionBds.c | Related functions link to BDS elink
Non-Compiled BIN and LIB File(s) in Flavor:
N0NE
AMI Build Tools:
Tools Label: 4.5.5_TOOLS_39, Dated: 2012-04-04
Visual eBios: RSS.5.72.0220, Dated: 2012-01-04
Compiler Tool(s): Microsoft Windows Driver Kit (WDK) Ver. 7600.16385.1
Compiler Tool(s): Microsoft Windows Driver Development Kit (DDK) Ver. 3790.1830
New features added in this label:
If fast boot failure counter reach a MAX_LAST_BOOT_FAIL_COUNT, system will perform a full boot.
Report pseudo boot option for Windows 'Boot To Device' support
General Bug Fixes and EIP Addressed in this Label:
General Bug Fixes
Fix build error because AMI_AMT_BOOT_OPTION_GUID is not found on non-Intel platforms..

EIP Addressed
EIP102931 - When issue the Local HDD Boot from WebUI, sometimes the BIOS can't boot from Local Hard Disk drive and enter BIOS setup. - If AMT boot is request, boot with normal boot path and set Setup boot flow as BOOT_FLOW_CONDITION_NORMAL.
EIP105175 - USB controller does not skip in Fast Boot path when set USB support as disabled. - Set Runtime flag just before boot into image or legacy environment to make sure the ReadKeyStroke is called by OS, not BIOS.
Files Changed for General Bug Fixes and EIP Addressed in this Label:
General Bug Fixes
Core\EM\FastBoot\FastBoot.c

EIP Addressed
Core\EM\FastBoot\FastBoot.c (EIP102931)(EIP105175)
Core\EM\FastBoot\FastBoot.sdl (EIP102931)
Known Limitations and Erratas in this label:
Boot from devices installed by Legacy Option ROMs, such as PXE or SCSI devices, is not supported
Remaining Issues:
NONE
Unit Testing:
Test1: Enable FastBoot function
1. Enable "FastBoot" setup option in Boot page.
2. Set the boot device as the highest boot priority.
3. FastBoot need a successfully boot to store boot device information, and it will work at second boot.
4. OS system can boot successfully,and S3, S4, S5 is working well.
Test2: Enable FastBoot Skip function
1. Set "VGA Support" option as "Auto" and boot with Legacy OS, User will not see the logo when fastboot is work.
2. Set "USB Support" option as "Disabled", USB device will not be initialized during post. Set "USB Support" as "Partial Initial", USB storage will NOT be available before OS boot
3. Set "PS2 Devices Support" option as "Disabled", PS2 device will not be initialized during post.
Test3: FastBoot Test Mode
1. Enable token "FAST_BOOT_TEST_MODE", "PEI_PERFORMANCE", and "DXE_PERFORMANCE".
2. Copy Shell with Dp tools into boot device file system partition. EX: fs0:\EFI\DP\BOOTx64.efi
3. Enable "FastBoot" setup option in Boot page.
3. If pervious boot device is EFI OS, and BOOTx64.efi location is correct. Fast Boot will attempt to boot with \EFI\DP\BOOTx64.efi
Validation Testing:
Tested on the Below Platform
Board platform - ChiefRiver
BIOS Information - SS: Alaska;$/Alaska/Projects/Intel/IvyBridge/PantherPoint_ChiefRiver_Crb_1APTJ/; 4.6.5.3_VEB_1APTJ025
OS can boot successfully with fastboot enabled.
S3,S4,and S5 test pass.
Release History:
4.6.4.0_PTT_12 Release Notes
4.6.4.0_PTT_11 Release Notes
4.6.4.0_PTT_10 Release Notes

© American Megatrends Inc.


Release Notes - NDA Required

Component Information:
Component Title: Post Time Tuning
Component Reference Name: FastBoot
Component Type: eModule
Release Date: 2013-01-29
Source Control Label: 4.6.4.0_PTT_14
Source Control Location: SS: Alaska;$/Alaska/SOURCE/Modules/PTT
Dependencies
Component Dependencies
Dependent Component Title: USB
Dependent Component Reference Name: USB
Dependent Source Control Label: 4.6.3_USB_08.10.24
Dependent Source Control Location: SS: Alaska;$/Alaska/SOURCE/Modules/USB/Alaska;

File Dependencies
N0NE

Protocol Dependencies
N0NE
Non-Compiled BIN and LIB File(s) within this Component:
N0NE
Component Description:
PTT is the abbreviation of Post Time Tuning, this eModule is developed based on FastBoot eModule. Due to the variation of usage and variation platform hardware, the best fast boot model does not exist for all platforms. PTT eModule integrate the FastBoot module and provide more optional solutions for user to adjust and make the suitable solutions for their requirement.
Usage:
How to enable FastBoot?
Fast boot from previous boot device
1. Enable "FastBoot" setup option in Boot page.
2. Set the boot device as the highest boot priority.
3. FastBoot need a successful boot to store boot device information, and then fastboot will work at second boot.
How to switch from fastboot to normal boot?
1. Once hotkey (enter setup, popup menu... etc.) is detected, fastboot will be aborted and keep on going through a normal boot path.
2. System Reset during post. The System will enter Setup in next boot automatically. It's a fail safe mechanism for user to disable Fastboot if neeeded.
Fast boot sub setup Items
VGA Support
EFI Driver - Install EFI driver and service for VGA
Auto - Only install Legacy OpRom with Legacy OS, and logo would not be shown during Post. EFI driver and service will still be installed with EFI OS.
USB Support
Disabled - All USB devices will NOT be available until after OS boot.
Full Initial - All USB devices will be available in OS and Post.
Partial Initial - USB mass storage type devcie will be skipped. And the other specific USB ports/devices could be skipped according to token "USB_SKIP_TABLE".
PS2 Devices Support
Enabled - PS2 devices will be available in OS and Post.
Disabled - PS2 devices will NOT be available in Post. PS2ms.asl and PS2kb.asl may need to porting for PS2 device working in ACPI OS.
NetWork Stack Driver Support
Enabled - NetWrok Stack driver is supported in fast boot path.
Disabled - Network Stack drivers would NOT be started in fast boot path.
Fast Boot Policy Protocol
Fast Boot Policy protocol is created for dynamic changing fast boot behavior. OEM/BSP can locate this protocol, and change the policy before BIOS run into fastboot path.
Below are elements and default value in fast boot policy protocol.
BOOLEAN FastBootEnable -> SetupOption "FastBoot Enable"
BOOLEAN TestMode -> token "FAST_BOOT_TEST_MODE"
===========pervious boot information=================
BOOLEAN UEfiBoot -> Pervious Boot is EFI or Legacy type
UINT16 BootOptionNumber -> Boot Option number if previous boot is EFI
UINT16 DevStrCheckSum -> Device string checksum if pervious boot is Legacy
EFI_DEVICE_PATH_PROTOCOL *FastBootOption -> Device path of pervious boot device.
BOOLEAN LastBootFailure -> whether boot failure occurs in previous boot
BOOLEAN LastBootVarPresence -> whether "LastBoot" Var is exist.
UINT32 BootCount -> How many times boot with fastboot mode
===========fast boot behavior para=================
BOOLEAN FirstFastBootInS4 -> allow first fast boot in S4.
BOOLEAN CheckBootOptionNumber -> Check boot option number is first boot option in boot order in fast boot path.
BOOLEAN CheckDevStrCheckSum -> Check device string is as same as a previous boot device.
BOOLEAN VGASupport -> SetupOption "VGA Support".
BOOLEAN UsbSupport -> SetupOption "USB Support".
VOID *UsbSkipTable -> USB skip table, it's used when "Partial Initial" is selected.
UINTN UsbSkipTableSize -> USB skip table size
BOOLEAN Ps2Support -> SetupOption "PS2 Devices Support".
BOOLEAN NetWorkStackSupport -> SetupOption "NetWork Stack Driver Support".
SKIP_PCI_LIST *SkipPciList -> Token "FAST_BOOT_PCI_SKIP_LIST", the list of the skipped controller in procedure "FbConnectEverything".
UINTN SkipPciListSize -> SkipPciList table size.
BOOLEAN CheckPassword -> Token "ALLOW_CHECKING_PASSWORD", allow checking password in fast boot path.
BOOLEAN SkipTSEHandshake -> Token "SKIP_TSE_HANDSHAKE", skip TSE handshake in fast boot path.
BOOLEAN ConnectAllSata -> Token "CONNECT_ALL_SATA_DEVICE_IN_FASTBOOT", connect all SATA device in fast boot path.
BOOLEAN InFastBootPath -> A flag to show whether code flow is in the fast boot path now.
Filename | Description
PTT | Root\Core\em\PTT
FastBoot.cif | VeB component description file
FastBoot.c | Main functionality implementation file
FastBoot.mak | Component make file
FastBoot.sd | Component setup controls definition file
FastBoot.sdl | Component configuration file
FastBoot.uni | Component setup strings file
FastBootDxe.c | Main Dxe functionality implementation file
FastBootRuntime.c | Runtime callback implementation file
FastBootTseHook.c | "Console input device available" event callback
PTT.chm | Component help file
FastBootPei | Root\Core\em\FastBoot - Fast boot Pei Driver.
FastBootPei.cif | Veb component description file
FastBootPei.c | Main Pei functionality implementation file
FastBootPei.dxs | Dependency file of FastBootPei PEIM
FastBootPei.mak | Component make file
FastBoot Protocol | Root\Include\Protocol - Fast boot protocol definitions.
FastBootProtocol.cif | Veb component description file
FastBootProtocol.h | Data structures and functions definition file
FastBoot Includes | Root\Include - Fast boot include files.
FastBootIncludes.cif | Veb component description file
FastBoot.h | Data structures and functions definition file
FastBootSMI | Root\Core\em\FastBoot - Fast boot SMI Functions.
FastBootSMI.cif | Veb component description file
FastBootSMI.c | Main SMI functionality implementation file
FastBootSMI.dxs | Dependency file
FastBootSMI.mak | Component make file
FastBootSMI.sdl | Component configuration file
FastBootOption | Root\Core\em\FastBoot\FastBootOption - Report pseudo boot option.
FastBootOption.cif | Veb component description file
FastBootOption.c | Fast Boot Option main functions
FastBootOption.dxs | Dependency file
FastBootOption.h | Data structures and functions definition file
FastBootOption.mak | Component make file
FastBootOption.sdl | Component configuration file
FastBootOptionBds.c | Related functions link to BDS elink
Non-Compiled BIN and LIB File(s) in Flavor:
N0NE
AMI Build Tools:
Tools Label: 4.5.5_TOOLS_39, Dated: 2012-04-04
Visual eBios: RSS.5.72.0220, Dated: 2012-01-04
Compiler Tool(s): Microsoft Windows Driver Kit (WDK) Ver. 7600.16385.1
Compiler Tool(s): Microsoft Windows Driver Development Kit (DDK) Ver. 3790.1830
New features added in this label:
None
General Bug Fixes and EIP Addressed in this Label:
General Bug Fixes
None

EIP Addressed
EIP110027 - The parameter BootPolicy should NOT set as TRUE when load image if this loading is not for boot.
EIP111095 - Win8 will create "WINDOWS BOOT MANAGER" and change this boot option as the highest boot priority when first time boot into Win8. It may cause fast boot fail because boot order is changed by OS. To avoid this problem, we check devcie path again if boot option number is check failure.
EIP113574 - Update the PTT eModule to utilize Setup Customization.
Boot variables is in upper case from version 4.6.4.1.
Files Changed for General Bug Fixes and EIP Addressed in this Label:
General Bug Fixes
None

EIP Addressed
Core\EM\FastBoot\FastBoot.c (EIP11027)(EIP111095)
Core\EM\FastBoot\FastBoot.sd (EIP113574)
Core\EM\FastBoot\FastBoot.sd (EIP113574)
Known Limitations and Erratas in this label:
Boot from devices installed by Legacy Option ROMs, such as PXE or SCSI devices, is not supported
Remaining Issues:
NONE
Unit Testing:
Test1: Enable FastBoot function
1. Enable "FastBoot" setup option in Boot page.
2. Set the boot device as the highest boot priority.
3. FastBoot need a successfully boot to store boot device information, and it will work at second boot.
4. OS system can boot successfully,and S3, S4, S5 is working well.
Test2: Enable FastBoot Skip function
1. Set "VGA Support" option as "Auto" and boot with Legacy OS, User will not see the logo when fastboot is work.
2. Set "USB Support" option as "Disabled", USB device will not be initialized during post. Set "USB Support" as "Partial Initial", USB storage will NOT be available before OS boot
3. Set "PS2 Devices Support" option as "Disabled", PS2 device will not be initialized during post.
Test3: FastBoot Test Mode
1. Enable token "FAST_BOOT_TEST_MODE", "PEI_PERFORMANCE", and "DXE_PERFORMANCE".
2. Copy Shell with Dp tools into boot device file system partition. EX: fs0:\EFI\DP\BOOTx64.efi
3. Enable "FastBoot" setup option in Boot page.
3. If pervious boot device is EFI OS, and BOOTx64.efi location is correct. Fast Boot will attempt to boot with \EFI\DP\BOOTx64.efi
Validation Testing:
Tested on the Below Platform
Board platform - ChiefRiver
BIOS Information - SS: Alaska;$/Alaska/Projects/Intel/IvyBridge/PantherPoint_ChiefRiver_Crb_1APTJ/; 4.6.5.4_VEB_1APTJ026
OS can boot successfully with fastboot enabled.
S3,S4,and S5 test pass.
Release History:
4.6.4.0_PTT_13 Release Notes
4.6.4.0_PTT_12 Release Notes
4.6.4.0_PTT_11 Release Notes
4.6.4.0_PTT_10 Release Notes

© American Megatrends Inc.


Release Notes - NDA Required

Component Information:
Component Title: Post Time Tuning
Component Reference Name: FastBoot
Component Type: eModule
Release Date: 2013-04-19
Source Control Label: 4.6.4.0_PTT_15
Source Control Location: SS: Alaska;$/Alaska/SOURCE/Modules/PTT
Dependencies
ONE
Dependent Component Title: USB
Dependent Component Reference Name: USB
Dependent Source Control Label: 4.6.3_USB_08.10.24
Dependent Source Control Location: SS: Alaska;$/Alaska/SOURCE/Modules/USB/Alaska;
TWO
Dependent Component Title: AHCI
Dependent Component Reference Name: AHCI
Dependent Source Control Label: 4.6.3_AhciSrc_023
Dependent Source Control Location: SS: Alaska;$/Alaska/SOURCE/Modules/AHCI/Alaska;
Or update eip118033's patch.
Non-Compiled BIN and LIB File(s) within this Component:
N0NE
Component Description:
PTT is the abbreviation of Post Time Tuning, this eModule is developed based on FastBoot eModule. Due to the variation of usage and variation platform hardware, the best fast boot model does not exist for all platforms. PTT eModule integrate the FastBoot module and provide more optional solutions for user to adjust and make the suitable solutions for their requirement.
Usage:
How to enable FastBoot?
Fast boot from previous boot device
1. Enable "FastBoot" setup option in Boot page.
2. Set the boot device as the highest boot priority.
3. FastBoot need a successful boot to store boot device information, and then fastboot will work at second boot.
How to switch from fastboot to normal boot?
1. Once hotkey (enter setup, popup menu... etc.) is detected, fastboot will be aborted and keep on going through a normal boot path.
2. System Reset during post. The System will enter Setup in next boot automatically. It's a fail safe mechanism for user to disable Fastboot if neeeded.
Fast boot sub setup Items
SATA Support
HDD Only - Only HDD device will be available in OS and POST.
All Sata Devices - All SATA devices will be available in OS and Post.
Last Boot HDD Only - Only last boot HDD device will be available in OS and Post.
VGA Support
EFI Driver - Install EFI driver and service for VGA
Auto - Only install Legacy OpRom with Legacy OS, and logo would not be shown during Post. EFI driver and service will still be installed with EFI OS.
USB Support
Disabled - All USB devices will NOT be available until after OS boot.
Full Initial - All USB devices will be available in OS and Post.
Partial Initial - USB mass storage type devcie will be skipped. And the other specific USB ports/devices could be skipped according to token "USB_SKIP_TABLE".
PS2 Devices Support
Enabled - PS2 devices will be available in OS and Post.
Disabled - PS2 devices will NOT be available in Post. PS2ms.asl and PS2kb.asl may need to porting for PS2 device working in ACPI OS.
NetWork Stack Driver Support
Enabled - NetWrok Stack driver is supported in fast boot path.
Disabled - Network Stack drivers would NOT be started in fast boot path.
Fast Boot Policy Protocol
Fast Boot Policy protocol is created for dynamic changing fast boot behavior. OEM/BSP can locate this protocol, and change the policy before BIOS run into fastboot path.
Below are elements and default value in fast boot policy protocol.
BOOLEAN FastBootEnable -> SetupOption "FastBoot Enable"
BOOLEAN TestMode -> token "FAST_BOOT_TEST_MODE"
===========pervious boot information=================
BOOLEAN UEfiBoot -> Pervious Boot is EFI or Legacy type
UINT16 BootOptionNumber -> Boot Option number if previous boot is EFI
UINT16 DevStrCheckSum -> Device string checksum if pervious boot is Legacy
EFI_DEVICE_PATH_PROTOCOL *FastBootOption -> Device path of pervious boot device.
BOOLEAN LastBootFailure -> whether boot failure occurs in previous boot
BOOLEAN LastBootVarPresence -> whether "LastBoot" Var is exist.
UINT32 BootCount -> How many times boot with fastboot mode
===========previous boot sata information=================
VOID *SataDevice -> All SATA device information, include Bus, Device, Function, ClassCode, DeviceType, Port number, and Serial number.
===========fast boot behavior para=================
BOOLEAN FirstFastBootInS4 -> allow first fast boot in S4.
BOOLEAN CheckBootOptionNumber -> Check boot option number is first boot option in boot order in fast boot path.
BOOLEAN CheckDevStrCheckSum -> Check device string is as same as a previous boot device.
BOOLEAN SATASupport -> SetupOption "SATA Support".
BOOLEAN VGASupport -> SetupOption "VGA Support".
BOOLEAN UsbSupport -> SetupOption "USB Support".
VOID *UsbSkipTable -> USB skip table, it's used when "Partial Initial" is selected.
UINTN UsbSkipTableSize -> USB skip table size
BOOLEAN Ps2Support -> SetupOption "PS2 Devices Support".
BOOLEAN NetWorkStackSupport -> SetupOption "NetWork Stack Driver Support".
SKIP_PCI_LIST *SkipPciList -> Token "FAST_BOOT_PCI_SKIP_LIST", the list of the skipped controller in procedure "FbConnectEverything".
UINTN SkipPciListSize -> SkipPciList table size.
BOOLEAN CheckPassword -> Token "ALLOW_CHECKING_PASSWORD", allow checking password in fast boot path.
BOOLEAN SkipTSEHandshake -> Token "SKIP_TSE_HANDSHAKE", skip TSE handshake in fast boot path.
BOOLEAN InFastBootPath -> A flag to show whether code flow is in the fast boot path now.
Filename | Description
PTT | Root\Core\em\PTT
FastBoot.cif | VeB component description file
FastBoot.c | Main functionality implementation file
FastBoot.mak | Component make file
FastBoot.sd | Component setup controls definition file
FastBoot.sdl | Component configuration file
FastBoot.uni | Component setup strings file
FastBootDxe.c | Main Dxe functionality implementation file
FastBootRuntime.c | Runtime callback implementation file
FastBootTseHook.c | "Console input device available" event callback
PTT.chm | Component help file
FastBootPei | Root\Core\em\FastBoot - Fast boot Pei Driver.
FastBootPei.cif | Veb component description file
FastBootPei.c | Main Pei functionality implementation file
FastBootPei.dxs | Dependency file of FastBootPei PEIM
FastBootPei.mak | Component make file
FastBoot Protocol | Root\Include\Protocol - Fast boot protocol definitions.
FastBootProtocol.cif | Veb component description file
FastBootProtocol.h | Data structures and functions definition file
FastBoot Includes | Root\Include - Fast boot include files.
FastBootIncludes.cif | Veb component description file
FastBoot.h | Data structures and functions definition file
FastBootSMI | Root\Core\em\FastBoot - Fast boot SMI Functions.
FastBootSMI.cif | Veb component description file
FastBootSMI.c | Main SMI functionality implementation file
FastBootSMI.dxs | Dependency file
FastBootSMI.mak | Component make file
FastBootSMI.sdl | Component configuration file
FastBootOption | Root\Core\em\FastBoot\FastBootOption - Report pseudo boot option.
FastBootOption.cif | Veb component description file
FastBootOption.c | Fast Boot Option main functions
FastBootOption.dxs | Dependency file
FastBootOption.h | Data structures and functions definition file
FastBootOption.mak | Component make file
FastBootOption.sdl | Component configuration file
FastBootOptionBds.c | Related functions link to BDS elink
Non-Compiled BIN and LIB File(s) in Flavor:
N0NE
AMI Build Tools:
Tools Label: 4.5.5_TOOLS_39, Dated: 2012-04-04
Visual eBios: RSS.5.72.0220, Dated: 2012-01-04
Compiler Tool(s): Microsoft Windows Driver Kit (WDK) Ver. 7600.16385.1
Compiler Tool(s): Microsoft Windows Driver Development Kit (DDK) Ver. 3790.1830
New features added in this label:
Support Raid mode on FastBoot
General Bug Fixes and EIP Addressed in this Label:
General Bug Fixes
None

EIP Addressed
EIP113454 - Support Raid mode on FastBoot.
Files Changed for General Bug Fixes and EIP Addressed in this Label:
General Bug Fixes
None

EIP Addressed
Core\EM\FastBoot\FastBoot.c (EIP113454)
Core\EM\FastBoot\FastBoot.sd (EIP113454)
Core\EM\FastBoot\FastBootRuntime.c (EIP113454)
Core\EM\FastBoot\FastBoot.sdl (EIP113454)
Include\Protocol\FastBootProtocol.h (EIP113454)
Include\FastBoot.h (EIP113454)
Known Limitations and Erratas in this label:
Boot from devices installed by AMD RAID Legacy Option ROMs, such as PXE or SCSI devices, is not supported.
About RAID test result:

When AMD RAID option rom create legacy boot option, there is no handle and device path in BBS table, so fastboot function can't support it.
Remaining Issues:
NONE
Unit Testing:
Test1: Enable FastBoot function
1. Enable "FastBoot" setup option in Boot page.
2. Set the boot device as the highest boot priority.
3. FastBoot need a successfully boot to store boot device information, and it will work at second boot.
4. OS system can boot successfully,and S3, S4, S5 is working well.
Test2: Enable FastBoot Skip function
1. Set "VGA Support" option as "Auto" and boot with Legacy OS, User will not see the logo when fastboot is work.
2. Set "USB Support" option as "Disabled", USB device will not be initialized during post. Set "USB Support" as "Partial Initial", USB storage will NOT be available before OS boot
3. Set "PS2 Devices Support" option as "Disabled", PS2 device will not be initialized during post.
4. Set "SATA Support" option as "HDD Only", ODD will not be initialized during post. Set "SATA Support" as "All Sata Devices", ODD and HDD will be initialized during post. Set "SATA Support" as "Last Boot HDD Only", only last boot HDD will be initialized in POST.
Test3: FastBoot Test Mode
1. Enable token "FAST_BOOT_TEST_MODE", "PEI_PERFORMANCE", and "DXE_PERFORMANCE".
2. Copy Shell with Dp tools into boot device file system partition. EX: fs0:\EFI\DP\BOOTx64.efi
3. Enable "FastBoot" setup option in Boot page.
3. If pervious boot device is EFI OS, and BOOTx64.efi location is correct. Fast Boot will attempt to boot with \EFI\DP\BOOTx64.efi
Chipset Porting:
There would need Chipset to get current SATA device information in PEI phase to HOB, please check fastboot.h for the format, and EIP 114861 for sample code.
Validation Testing:
Tested on the Below Platform
Board platform - ChiefRiver
BIOS Information - SS: Alaska;$/Alaska/Projects/Intel/IvyBridge/PantherPoint_ChiefRiver_Crb_1APTJ/; 4.6.5.4_VEB_1APTJ027
OS can boot successfully with fastboot enabled.
S3,S4,and S5 test pass.
About Raid test result, please check eip 113454 for more information.
Release History:
4.6.4.0_PTT_14 Release Notes
4.6.4.0_PTT_13 Release Notes
4.6.4.0_PTT_12 Release Notes
4.6.4.0_PTT_11 Release Notes
4.6.4.0_PTT_10 Release Notes

© American Megatrends Inc.


Function by File Name

AMIBIOS Function Reference

By File Name

The following is a list of the source files.
For a list in alphabetical order, see In Alphabetical Order.

  • FastBoot.c
  • FastBoot.h
  • FastBoot.mak
  • FastBoot.sd
  • FastBootDxe.c
  • FastBootOption.c
  • FastBootOption.dxs
  • FastBootOption.h
  • FastBootOption.mak
  • FastBootOptionBds.c
  • FastBootPei.c
  • FastBootPei.mak
  • FastBootProtocol.h
  • FastBootRuntime.c
  • FastBootSMI.c
  • FastBootSMI.mak
  • FastBootTseHook.c
Built on 16:42:17 08/05/13


FastBoot.c

Description:
Implementation of fast boot functionality

The following functions are used in the file: FastBoot.c.

Function | Description
_RegisterShellGuid | Registers the shell guid
_ShellClearScreen | Clears the screen for shell boot
ChangeSetupBootFlow | Changea Setup Boot Flow
CheckConnectedHdd | Check connected Hdds are as same as previous boot's.
CheckLoader | This function checks if OS loader present on given device
CheckPostManagerKey | Check TSE Post key is pressed or not.
CollectSataDeviceInfo | Collect the Sata device information created by Ahci and Ide bus driver
ConnectAllAmdRaidController | Connect All Amd Raid Controller
ConnectAllSataDevices | Connect All Stat Devcies
ConnectDevicePath_Recursive | Connect controller by device path recursively.
ConnectFastEfiBootDevice | Connect UEFI FastBoot Device
ConnectFastLegacyBoot | Connect Legacy FastBoot Device
ConnectHddDevices | Connect all previous boot Hdds.
ConnectLastHddDevice | Connect previous boot Hdd
CreateEfiFastBootOption | This function creates UEFI fast boot option and save it to NVRAM
CreateLegacyFastBootOption | This function creates Legacy fast boot option and save it to NVRAM
DisconnectUsbController | This function resets skip table for Usb driver and disconnect all usb controllers
FastBoot | FastBoot entry point
FastBootClearBootFailFlag | FastBoot clear boot fail flag callback
FastBootReadyToBootNotify | FastBoot ReadyToBoot callback
FastBootWorker | FastBoot main function
FastConnectSata | Connect Sata controller in fast boot path.
FastEfiBoot | UEFI FastBoot path
FastLegacyBoot | Legacy FastBoot path
FbConnectEverything | This function connects all PCI handles excpet PCI devices in FAST_BOOT_PCI_SKIP_LIST
FindDevicePath | Search DevicePath and find out indicated device path node.
GetSataPortPresentHOB | Get Sata port present HOB
IsAmtBoot | Do NOT perform FastBoot if AMT boot is request.
IsBootToShell | Function to determine if the boot path is to UEFI Shell
IsFastBoot | This function FastBoot is enabled or disabled by checking elink "IsFastBootList"
IsFastBootDeafult | This function returns the status of Fast boot setup option
IsLegacyRaidDevicePath | Check device path is legacy raid device path or not.
IsOneOfDP | Determines whether a device path, pAll, contains another device path, pOne.
IsSataDevicePath | Check device path is for sata devcie or not
IsSupportedDevice | This function detects if FastBoot is supported for given device
OemConfigurationChanged | This function checks if configuration was changed since last boot
ResetFastBootVariable | This function resets FastBoot variable if FastBoot path failed
SetUsbSkipTable | Skip all usb port in FastBoot path by setting skip table in usb protocol.
TseHandShake | This function executes FastBoot path via AMI TSE boot manager

Built on 16:42:17 08/05/13


_RegisterShellGuid in the FastBoot.c

Function : _RegisterShellGuid

File: FastBoot.c
Description:
Registers the shell guid
Input:
VOID
Output:
VOID
Built on 16:42:16 08/05/13


_ShellClearScreen in the FastBoot.c

Function : _ShellClearScreen

File: FastBoot.c
Description:
Clears the screen for shell boot
Input:
EFI_EVENT , VOID *
Output:
VOID


ChangeSetupBootFlow in the FastBoot.c

Function : ChangeSetupBootFlow

File: FastBoot.c
Description:
Changea Setup Boot Flow
Input:
UINT32 BootFlow
Output:
EFI_STATUS


CheckConnectedHdd in the FastBoot.c

Function : CheckConnectedHdd

File: FastBoot.c
Description:
Check connected Hdds are as same as previous boot's.
Input:
IN UINT16 BDF - BDF of previous boot's Hdd
IN UINT16 ClassCode - Class of previous boot's Hdd
IN UINT8  PortNum - Port Number of previous boot's Hdd
Output:
EFI_STATUS


CheckLoader in the FastBoot.c

Function : CheckLoader

File: FastBoot.c
Description:
This function checks if OS loader present on given device
Input:
IN EFI_DEVICE_PATH_PROTOCOL *Dp - pointer to device path of bootable device
Output:
EFI_STATUS


CheckPostManagerKey in the FastBoot.c

Function : CheckPostManagerKey

File: FastBoot.c
Description:
Check TSE Post key is pressed or not.
Input:
None
Output:
TRUE - Post key is pressed
FALSE - Post key is not pressed


CollectSataDeviceInfo in the FastBoot.c

Function : CollectSataDeviceInfo

File: FastBoot.c
Description:
Collect the Sata device information created by Ahci and Ide
bus driver
Input:
IN FAST_BOOT *Var - FastBoot variable
Output:
None


ConnectAllAmdRaidController in the FastBoot.c

Function : ConnectAllAmdRaidController

File: FastBoot.c
Description:
Connect All Amd Raid Controller
Input:
None
Output:
None


ConnectAllSataDevices in the FastBoot.c

Function : ConnectAllSataDevices

File: FastBoot.c
Description:
Connect All Stat Devcies
Input:
None
Output:
EFI_STATUS


ConnectDevicePath_Recursive in the FastBoot.c

Function : ConnectDevicePath_Recursive

File: FastBoot.c
Description:
Connect controller by device path recursively.
Input:
IN EFI_DEVICE_PATH_PROTOCOL *pPath - Device path want to be connected.
Output:
None


ConnectFastEfiBootDevice in the FastBoot.c

Function : ConnectFastEfiBootDevice

File: FastBoot.c
Description:
Connect UEFI FastBoot Device
Input:
None
Output:
None


ConnectFastLegacyBoot in the FastBoot.c

Function : ConnectFastLegacyBoot

File: FastBoot.c
Description:
Connect Legacy FastBoot Device
Input:
None
Output:
None


ConnectHddDevices in the FastBoot.c

Function : ConnectHddDevices

File: FastBoot.c
Description:
Connect all previous boot Hdds.
Input:
None
Output:
None


ConnectLastHddDevice in the FastBoot.c

Function : ConnectLastHddDevice

File: FastBoot.c
Description:
Connect previous boot Hdd
Input:
None
Output:
None


CreateEfiFastBootOption in the FastBoot.c

Function : CreateEfiFastBootOption

File: FastBoot.c
Description:
This function creates UEFI fast boot option and save it to NVRAM
Input:
IN EFI_LOAD_OPTION *BootOption - pointer to regular boot option to boot to
IN UINTN OptionSize - size of option additional parameters
IN UINT16 OptionNumber - number of boot option in BootOrder variable
Output:
EFI_STATUS


CreateLegacyFastBootOption in the FastBoot.c

Function : CreateLegacyFastBootOption

File: FastBoot.c
Description:
This function creates Legacy fast boot option and save it to NVRAM
Input:
None
Output:
EFI_STATUS


DisconnectUsbController in the FastBoot.c

Function : DisconnectUsbController

File: FastBoot.c
Description:
This function resets skip table for Usb driver and disconnect
        all usb controllers
Input:
None
Output:
None


FastBoot in the FastBoot.c

Function : FastBoot

File: FastBoot.c
Description:
FastBoot entry point
Input:
None
Output:
None


FastBootClearBootFailFlag in the FastBoot.c

Function : FastBootClearBootFailFlag

File: FastBoot.c
Description:
FastBoot clear boot fail flag callback
Input:
IN EFI_EVENT Event - Callback event
IN VOID *Context - pointer to calling context
Output:
None


FastBootReadyToBootNotify in the FastBoot.c

Function : FastBootReadyToBootNotify

File: FastBoot.c
Description:
FastBoot ReadyToBoot callback
Input:
IN EFI_EVENT Event - Callback event
IN VOID *Context - pointer to calling context
Output:
None


FastBootWorker in the FastBoot.c

Function : FastBootWorker

File: FastBoot.c
Description:
FastBoot main function
Input:
None
Output:
None


FastConnectSata in the FastBoot.c

Function : FastConnectSata

File: FastBoot.c
Description:
Connect Sata controller in fast boot path.
Input:
None
Output:
EFI_STATUS


FastEfiBoot in the FastBoot.c

Function : FastEfiBoot

File: FastBoot.c
Description:
UEFI FastBoot path
Input:
None
Output:
None


FastLegacyBoot in the FastBoot.c

Function : FastLegacyBoot

File: FastBoot.c
Description:
Legacy FastBoot path
Input:
None
Output:
None


FbConnectEverything in the FastBoot.c

Function : FbConnectEverything

File: FastBoot.c
Description:
This function connects all PCI handles excpet PCI devices in
FAST_BOOT_PCI_SKIP_LIST
Input:
None
Output:
None


FindDevicePath in the FastBoot.c

Function : FindDevicePath

File: FastBoot.c
Description:
Search DevicePath and find out indicated device path node.
Input:
IN OUT   EFI_DEVICE_PATH_PROTOCOL *DevicePath - Searched device path
IN       UINT8                    Type - Indicated device path type
IN       UINT8                    SubType - Indicated device path sub type
Output:
EFI_DEVICE_PATH_PROTOCOL - return indicated device path
                          pointer otherwise NULL.


GetSataPortPresentHOB in the FastBoot.c

Function : GetSataPortPresentHOB

File: FastBoot.c
Description:
Get Sata port present HOB
Input:
IN OUT SATA_PRESENT_HOB **SataPresentHob
Output:
None


IsAmtBoot in the FastBoot.c

Function : IsAmtBoot

File: FastBoot.c
Description:
Do NOT perform FastBoot if AMT boot is request.
Input:
IN  SETUP_DATA  *FbSetupData - ptr of SetupData
Output:
TRUE if fast boot is enabled, FALSE otherwise


IsBootToShell in the FastBoot.c

Function : IsBootToShell

File: FastBoot.c
Description:
Function to determine if the boot path is to UEFI Shell
Input:
IN EFI_DEVICE_PATH_PROTOCOL *Dp - pointer to device path of bootable device
Output:
TRUE - if it's UEFI Shell boot path, FALSE otherwise


IsFastBoot in the FastBoot.c

Function : IsFastBoot

File: FastBoot.c
Description:
This function FastBoot is enabled or disabled by checking
elink "IsFastBootList"
Input:
None
Output:
TRUE if fast boot is enabled, FALSE otherwise


IsFastBootDeafult in the FastBoot.c

Function : IsFastBootDeafult

File: FastBoot.c
Description:
This function returns the status of Fast boot setup option
Input:
IN  SETUP_DATA  *FbSetupData - ptr of SetupData
Output:
TRUE if fast boot is enabled, FALSE otherwise


IsLegacyRaidDevicePath in the FastBoot.c

Function : IsLegacyRaidDevicePath

File: FastBoot.c
Description:
Check device path is legacy raid device path or not.
Input:
IN EFI_DEVICE_PATH_PROTOCOL *Dp - Device path need to be checked.
Output:
BOOLEAN TRUE,the devcie path is for legacy raid devcie, otherwise False.


IsOneOfDP in the FastBoot.c

Function : IsOneOfDP

File: FastBoot.c
Description:
Determines whether a device path, pAll, contains another
device path, pOne.
Input:
IN EFI_DEVICE_PATH_PROTOCOL *pAll - The device path to be scanned.
IN EFI_DEVICE_PATH_PROTOCOL *pOne - The device path to locate within pAll.
Output:
None


IsSataDevicePath in the FastBoot.c

Function : IsSataDevicePath

File: FastBoot.c
Description:
Check device path is for sata devcie or not
Input:
IN EFI_DEVICE_PATH_PROTOCOL *Dp - Device path need to be checked.
Output:
BOOLEAN TRUE,the devcie path is for sata devcie, otherwise False.
Built on 16:42:17 08/05/13


IsSupportedDevice in the FastBoot.c

Function : IsSupportedDevice

File: FastBoot.c
Description:
This function detects if FastBoot is supported for given device
Input:
IN EFI_DEVICE_PATH_PROTOCOL *Dp - pointer to device path of bootable device
OUT BOOLEAN *UsbMassStorage - TRUE if device is USB device, FALSE otherwise
Output:
TRUE if FastBoot is supported for given device, FALSE otherwise
Built on 16:42:17 08/05/13


OemConfigurationChanged in the FastBoot.c

Function : OemConfigurationChanged

File: FastBoot.c
Description:
This function checks if configuration was changed since last boot
Input:
None
Output:
TRUE if configuration was changed, FALSE otherwise
Built on 16:42:17 08/05/13


ResetFastBootVariable in the FastBoot.c

Function : ResetFastBootVariable

File: FastBoot.c
Description:
This function resets FastBoot variable if FastBoot path failed
Input:
None
Output:
None
Built on 16:42:17 08/05/13


SetUsbSkipTable in the FastBoot.c

Function : SetUsbSkipTable

File: FastBoot.c
Description:
Skip all usb port in FastBoot path by setting skip table in usb protocol.
Input:
None
Output:
None
Built on 16:42:17 08/05/13


TseHandShake in the FastBoot.c

Function : TseHandShake

File: FastBoot.c
Description:
This function executes FastBoot path via AMI TSE boot manager
Input:
FAST_BOOT LastBoot - last successful fast boot information
Output:
EFI_ERROR - if fast boot via AMI TSE cannot be executed
Built on 16:42:17 08/05/13


FastBoot.h

Description:
Fast boot functions definitions
Built on 16:42:17 08/05/13


FastBoot.mak

Description:
Make file to build FastBoot library part
Built on 16:42:17 08/05/13


FastBoot.sd

Description:
FastBoot Setup data definitions, currently go under Boot page
Built on 16:42:17 08/05/13


FastBootDxe.c

Description:
Implementation of fast boot Dxe functionality

The following functions are used in the file: FastBootDxe.c.

Function | Description
FastBootDxeEntry | DXE Entry Point for FastBoot Driver.

Built on 16:42:17 08/05/13


FastBootDxeEntry in the FastBootDxe.c

Function : FastBootDxeEntry

File: FastBootDxe.c
Description:
DXE Entry Point for FastBoot Driver.
Input:
EFI_HANDLE          - ImageHandle
EFI_SYSTEM_TABLE*   - SystemTable
Output:
EFI_STATUS


FastBootOption.c

Description:
FastBootOption Support

The following functions are used in the file: FastBootOption.c.

Function | Description
AddBootOption | calculate devicepath length
CreateBootOption | Create variable Boot####
CreateTempBootOption | This function is the entry point for FastBootOption Driver.
FastBootOptionEntryPoint | This function is the entry point for FastBootOption Driver.
GetUEFIBootName | Get Variable Boot#### and return data pointer.
OnExitBootServices | EXIT_BOOT_SERVICES notification callback function.

Built on 16:42:17 08/05/13


AddBootOption in the FastBootOption.c

Function : AddBootOption

File: FastBootOption.c
Description:
calculate devicepath length
Input:
IN UINT16 Number
IN EFI_DEVICE_PATH_PROTOCOL *Dp
IN UINT32 Attributes
IN VOID *pOptions
IN UINTN OptionsSize
IN CHAR16 *DefaultName
Output:
Modified:
Notes:

Referrals:


CreateBootOption in the FastBootOption.c

Function : CreateBootOption

File: FastBootOption.c
Description:
Create variable Boot####
Input:
IN UINT16 OptionNumber
IN UINT16 Index
IN UINT16 DevType
Output:
Modified:
Notes:

Referrals:


CreateTempBootOption in the FastBootOption.c

Function : CreateTempBootOption

File: FastBootOption.c
Description:
This function is the entry point for FastBootOption Driver.
Input:

Output:

Notes:


FastBootOptionEntryPoint in the FastBootOption.c

Function : FastBootOptionEntryPoint

File: FastBootOption.c
Description:
This function is the entry point for FastBootOption Driver.
Input:
EFI_HANDLE          ImageHandle     Image handle.
EFI_SYSTEM_TABLE    *SystemTable    Pointer to the EFI system table.
Output:
EFI_SUCCESS         Security interface installed.
EFI_ERROR           Security interface not installed or unable to locate
       some protocol.
Notes:
Entry Points are used to locate or install protocol interfaces and
notification events.


GetUEFIBootName in the FastBootOption.c

Function : GetUEFIBootName

File: FastBootOption.c
Description:
Get Variable Boot#### and return data pointer.
Input:
IN UINT16 BootIndex
Output:
EFI_LOAD_OPTION
Modified:
Notes:

Referrals:


OnExitBootServices in the FastBootOption.c

Function : OnExitBootServices

File: FastBootOption.c
Description:
EXIT_BOOT_SERVICES notification callback function.
Built on 16:42:17 08/05/13


FastBootOption.dxs

Description:
Dependency expression for FastBootOption driver.
Built on 16:42:17 08/05/13


FastBootOption.h

Description:
This file contains the Includes, Definitions, typedefs,
Variable and External Declarations, Structure and
function prototypes needed for the IdeSecurity driver
Built on 16:42:17 08/05/13


FastBootOption.mak

Description:
Make file to build FastBootOption Driver Sources.
Built on 16:42:17 08/05/13


FastBootOptionBds.c

Description:
The following functions are used in the file: FastBootOptionBds.c.

Function | Description
CheckBootNextTempBootOption | Check BootNext device and find uefi device, adjust BootNext number.
GetUefiDeviceType | Function returns device type
RemoveFastBootOption | Remove all TempUefiDevice Bootoption.
SetBootNextBootOption | Compare Boot device type and re-setting variable "BootNext"
Built on 16:42:17 08/05/13


CheckBootNextTempBootOption in the FastBootOptionBds.c

Function : CheckBootNextTempBootOption

File: FastBootOptionBds.c
Description:
Check BootNext device and find uefi device, adjust BootNext
number.
Input:
Output:


GetUefiDeviceType in the FastBootOptionBds.c

Function : GetUefiDeviceType

File: FastBootOptionBds.c
Description:
Function returns device type
Input:
EFI_DEVICE_PATH_PROTOCOL *Dp -
Output:
UINT32 - device type


RemoveFastBootOption in the FastBootOptionBds.c

Function : RemoveFastBootOption

File: FastBootOptionBds.c
Description:
Remove all TempUefiDevice Bootoption.
Input:
Output:

Built on 16:42:17 08/05/13


SetBootNextBootOption in the FastBootOptionBds.c

Function : SetBootNextBootOption

File: FastBootOptionBds.c
Description:
Compare Boot device type and re-setting variable "BootNext"
Input:
NONE
Output:
NONE
Built on 16:42:17 08/05/13


FastBootPei.c

Description:
Fast Boot Pei Driver
Built on 16:42:17 08/05/13


FastBootPei.mak

Description:
Make file to build FastBootPei FFS
Built on 16:42:17 08/05/13


FastBootProtocol.h

Description:
Fast boot protocol definitions
Built on 16:42:17 08/05/13


FastBootRuntime.c

Description:
Implementation of callback when variable services is enabled

The following functions are used in the file: FastBootRuntime.c.

Function | Description
FastBootEntry | FastBoot runtime callback entry point
FastBootGetVarCallback | FastBoot runtime callback
GetSataPortPresentHOB | Get Sata port present HOB
IsSataPortPresentChanged | Check whether Sata Port Present status is changed.
SetDefaultFastBootPolicy | Fill default Fast Boot Plicy

Built on 16:42:17 08/05/13


FastBootEntry in the FastBootRuntime.c

Function : FastBootEntry

File: FastBootRuntime.c
Description:
FastBoot runtime callback entry point
Input:
IN EFI_HANDLE ImageHandle - Image handle
IN EFI_SYSTEM_TABLE *SystemTable - pointer to system table
Output:
EFI_STATUS


FastBootGetVarCallback in the FastBootRuntime.c

Function : FastBootGetVarCallback

File: FastBootRuntime.c
Description:
FastBoot runtime callback
Input:
IN EFI_EVENT Event - Callback event
IN VOID *Context - pointer to calling context
Output:
None


GetSataPortPresentHOB in the FastBootRuntime.c

Function : GetSataPortPresentHOB

File: FastBootRuntime.c
Description:
Get Sata port present HOB
Input:
IN OUT SATA_PRESENT_HOB **SataPresentHob
Output:
EFI_STATUS


IsSataPortPresentChanged in the FastBootRuntime.c

Function : IsSataPortPresentChanged

File: FastBootRuntime.c
Description:
Check whether Sata Port Present status is changed.
Input:
IN FAST_BOOT *FbVariable - Fast Boot Variable pointer
Output:
BOOLEAN TRUE - Sata port present status is changed.
       FALSE - Sata port present status is NOT changed.
Built on 16:42:17 08/05/13


SetDefaultFastBootPolicy in the FastBootRuntime.c

Function : SetDefaultFastBootPolicy

File: FastBootRuntime.c
Description:
Fill default Fast Boot Plicy
Input:
IN SETUP_DATA *SetupData - pointer to SetupData
IN FAST_BOOT *FbVariable - pointer to FastBoot variable
Output:
None
Built on 16:42:17 08/05/13


FastBootSMI.c

Description:
Implementation of fast boot smi functionality

The following functions are used in the file: FastBootSMI.c.

Function | Description
FastBootSMIEntryPoint | FastBootSMIEntryPoint
InSmmFunction | InSmmFunction
SwSmiHandler | SwSmiHandler

Built on 16:42:17 08/05/13


FastBootSMIEntryPoint in the FastBootSMI.c

Function : FastBootSMIEntryPoint

File: FastBootSMI.c
Description:
FastBootSMIEntryPoint
Input:
IN EFI_HANDLE		ImageHandle,
IN EFI_SYSTEM_TABLE	*SystemTable
Output:
EFI_STATUS


InSmmFunction in the FastBootSMI.c

Function : InSmmFunction

File: FastBootSMI.c
Description:
InSmmFunction
Input:
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
Output:
EFI_STATUS


SwSmiHandler in the FastBootSMI.c

Function : SwSmiHandler

File: FastBootSMI.c
Description:
SwSmiHandler
Input:
IN EFI_HANDLE                   DispatchHandle,
IN EFI_SMM_SW_DISPATCH_CONTEXT  *DispatchContext
Output:
VOID
Built on 16:42:17 08/05/13


FastBootSMI.mak

Description:
Make file for FastBoot SMI.
Built on 16:42:17 08/05/13


FastBootTseHook.c

Description:
Implementation of suppress of TSE "Press DEL..." message

The following functions are used in the file: FastBootTseHook.c.

Function | Description
FastBootBbsBootHook | Function that will be called instead of generic TSE callback on BBS popup boot path
FastBootCheckForKey | This function check TSE variable,gEnterSetup and gBootFlow.
FastBootConInAvailHook | Function that will be called instead of generic TSE callback on Console Input device is installed event
FastBootLaunch | Function that will be called instead of generic TSE callback on fast boot path
FastBootMinisetupDriverEntryHook | Function that will be called when enter TSE Dxe entry
FastBootStopCheckForKeyTimer | This function stop the timer of CheckForKey callback

Built on 16:42:17 08/05/13


FastBootBbsBootHook in the FastBootTseHook.c

Function : FastBootBbsBootHook

File: FastBootTseHook.c
Description:
Function that will be called instead of generic TSE callback
on BBS popup boot path
Input:
None
Output:
None


FastBootCheckForKey in the FastBootTseHook.c

Function : FastBootCheckForKey

File: FastBootTseHook.c
Description:
This function check TSE variable,gEnterSetup and gBootFlow.
Input:
BOOLEAN *EnterSetup
UINT32  *BootFlow
Output:
EFI_SUCCESS - Bootflow is changed or EnterSetup if true


FastBootConInAvailHook in the FastBootTseHook.c

Function : FastBootConInAvailHook

File: FastBootTseHook.c
Description:
Function that will be called instead of generic TSE callback
on Console Input device is installed event
Input:
None
Output:
FALSE - as per TSE requirement, that no password was entered


FastBootLaunch in the FastBootTseHook.c

Function : FastBootLaunch

File: FastBootTseHook.c
Description:
Function that will be called instead of generic TSE callback
on fast boot path
Input:
None
Output:
None


FastBootMinisetupDriverEntryHook in the FastBootTseHook.c

Function : FastBootMinisetupDriverEntryHook

File: FastBootTseHook.c
Description:
Function that will be called when enter TSE Dxe entry
Input:
None
Output:
FALSE - as per TSE requirement, that no password was entered


FastBootStopCheckForKeyTimer in the FastBootTseHook.c

Function : FastBootStopCheckForKeyTimer

File: FastBootTseHook.c
Description:
This function stop the timer of CheckForKey callback
Input:
None
Output:
EFI_STATUS


Functions in Alphabetical Order

In Alphabetical Order

The following topics provide a list in alphabetical order.
For a list by file name, see By File Name.

  • ?
  • A
  • C
  • D
  • F
  • G
  • I
  • O
  • R
  • S
  • T


Functions in Alphabetical Order

?

Function | Description
_RegisterShellGuid | Registers the shell guid
_ShellClearScreen | Clears the screen for shell boot


Functions in Alphabetical Order

A

Function | Description
AddBootOption | calculate devicepath length


Functions in Alphabetical Order

C

Function | Description
ChangeSetupBootFlow | Changea Setup Boot Flow
CheckBootNextTempBootOption | Check BootNext device and find uefi device, adjust BootNext number.
CheckConnectedHdd | Check connected Hdds are as same as previous boot's.
CheckLoader | This function checks if OS loader present on given device
CheckPostManagerKey | Check TSE Post key is pressed or not.
CollectSataDeviceInfo | Collect the Sata device information created by Ahci and Ide bus driver
ConnectAllAmdRaidController | Connect All Amd Raid Controller
ConnectAllSataDevices | Connect All Stat Devcies
ConnectDevicePath_Recursive | Connect controller by device path recursively.
ConnectFastEfiBootDevice | Connect UEFI FastBoot Device
ConnectFastLegacyBoot | Connect Legacy FastBoot Device
ConnectHddDevices | Connect all previous boot Hdds.
ConnectLastHddDevice | Connect previous boot Hdd
CreateBootOption | Create variable Boot####
CreateEfiFastBootOption | This function creates UEFI fast boot option and save it to NVRAM
CreateLegacyFastBootOption | This function creates Legacy fast boot option and save it to NVRAM
CreateTempBootOption | This function is the entry point for FastBootOption Driver.


Functions in Alphabetical Order

D

Function | Description
DisconnectUsbController | This function resets skip table for Usb driver and disconnect all usb controllers


Functions in Alphabetical Order

F

Function | Description
FastBoot | FastBoot entry point
FastBootBbsBootHook | Function that will be called instead of generic TSE callback on BBS popup boot path
FastBootCheckForKey | This function check TSE variable,gEnterSetup and gBootFlow.
FastBootClearBootFailFlag | FastBoot clear boot fail flag callback
FastBootConInAvailHook | Function that will be called instead of generic TSE callback on Console Input device is installed event
FastBootDxeEntry | DXE Entry Point for FastBoot Driver.
FastBootEntry | FastBoot runtime callback entry point
FastBootGetVarCallback | FastBoot runtime callback
FastBootLaunch | Function that will be called instead of generic TSE callback on fast boot path
FastBootMinisetupDriverEntryHook | Function that will be called when enter TSE Dxe entry
FastBootOptionEntryPoint | This function is the entry point for FastBootOption Driver.
FastBootReadyToBootNotify | FastBoot ReadyToBoot callback
FastBootSMIEntryPoint | FastBootSMIEntryPoint
FastBootStopCheckForKeyTimer | This function stop the timer of CheckForKey callback
FastBootWorker | FastBoot main function
FastConnectSata | Connect Sata controller in fast boot path.
FastEfiBoot | UEFI FastBoot path
FastLegacyBoot | Legacy FastBoot path
FbConnectEverything | This function connects all PCI handles excpet PCI devices in FAST_BOOT_PCI_SKIP_LIST
FindDevicePath | Search DevicePath and find out indicated device path node.


Functions in Alphabetical Order

G

Function | Description
GetSataPortPresentHOB | Get Sata port present HOB
GetSataPortPresentHOB | Get Sata port present HOB
GetUEFIBootName | Get Variable Boot#### and return data pointer.
GetUefiDeviceType | Function returns device type


Functions in Alphabetical Order

I

Function | Description
InSmmFunction | InSmmFunction
IsAmtBoot | Do NOT perform FastBoot if AMT boot is request.
IsBootToShell | Function to determine if the boot path is to UEFI Shell
IsFastBoot | This function FastBoot is enabled or disabled by checking elink "IsFastBootList"
IsFastBootDeafult | This function returns the status of Fast boot setup option
IsLegacyRaidDevicePath | Check device path is legacy raid device path or not.
IsOneOfDP | Determines whether a device path, pAll, contains another device path, pOne.
IsSataDevicePath | Check device path is for sata devcie or not
IsSataPortPresentChanged | Check whether Sata Port Present status is changed.
IsSupportedDevice | This function detects if FastBoot is supported for given device


Functions in Alphabetical Order

O

Function | Description
OemConfigurationChanged | This function checks if configuration was changed since last boot
OnExitBootServices | EXIT_BOOT_SERVICES notification callback function.


Functions in Alphabetical Order

R

Function | Description
RemoveFastBootOption | Remove all TempUefiDevice Bootoption.
ResetFastBootVariable | This function resets FastBoot variable if FastBoot path failed


Functions in Alphabetical Order

S

Function | Description
SetBootNextBootOption | Compare Boot device type and re-setting variable "BootNext"
SetDefaultFastBootPolicy | Fill default Fast Boot Plicy
SetUsbSkipTable | Skip all usb port in FastBoot path by setting skip table in usb protocol.
SwSmiHandler | SwSmiHandler


Functions in Alphabetical Order

T

Function | Description
TseHandShake | This function executes FastBoot path via AMI TSE boot manager


General Information

Built on 16:42:17 08/05/13


[TAG]           EIP110027
[Category]      Improvement
[Description]  	The parameter BootPolicy should NOT set as TRUE when load image if this loading is not for boot.
[Files]         FastBoot.c

[TAG]           EIP111095
[Category]      Improvement
[Description]   Win8 will create "WINDOWS BOOT MANAGER" and change this boot option as the highest boot priority when first time boot into Win8. It may cause fast boot fail because boot order is changed by OS. To avoid this problem, we check devcie path again if boot option number is check failure.
[Files]         FastBoot.c

Boot variables is in upper case from version 4.6.4.1.
[Files]  		FastBoot.c

[TAG]           EIP113574
[Category]      Spec Update
[Severity]      Normal
[Description]   Update the PTT eModule to utilize Setup Customization
[Files]         FastBoot.sd FastBoot.uni