American Megatrends, Inc.

IdeSMART

Copyright

Release Notes

© American Megatrends, Inc.


Copyright

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

Copyright (c) 1999-2011 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: IdeSMART
Component Reference Name: IdeSMART
Component Type: eModule
Release Date: 2011-12-27
Source Control Label: 4.6.5.1_HddSmart_007
Source Control Location: SS: Alaska;$/Alaska/SOURCE/Modules/HddSmart;

Driver Dependencies
Idebus or AhciBus
Protocol Dependencies
N0NE
File Dependencies
N0NE
Non-Compiled BIN and LIB File(s) within this Component:
N0NE
Component Description:
The IdeSMART Module can be added to EFI APTIO BIOS to support Initialization of Protocols for self-test, Diagnostic and Display messages. Main Purpose of the Module is to initialize the Smart Support and running self and diagnostic test. If the Self-test fails this would also inform the user with displaying Error Message in the Post. This Module is designed in a way that it would be compatible for both Bus Interfaces.
Filename | Description
Main Component | Root\Core\em\HddSmart
IdeSMART.cif | Component information file for the eModule
IdeSMART.mak | Make file becomes part of the BIOS build process
IdeSMART.sdl | Contains BIOS build parameters.
IdeSMART.c | Driver Entry and implementation of HDD Smart protocol
IdeSMART.h | Headers, Definitions, Macros and Function Prototypes are defined in this File.
IdeSMART.dxs | Files that has dependency of this Module with the other modules.
IdeSMART.uni | Files that contains Strings related definitions for Display
IdeSMART.chm | Contains the ReleaseNotes for HDD Smart
IdeSMART.sd | File that contains the Setup Options and Information Displayed in Bios Setup
BIOS Parameters:
Parameter Name | Type | Description
IdeSMART_Support | Boolean | Master Switch to Enable/Disable the IdeSmart module.
ENABLE_SMART | Boolean | Token to Control Whether SMART Enable Command need to be sent to the Drive.
SMART_DIAGNOSTICS_SUPPORT | Boolean | Token to Control SMARTInterface protocol for running SMART diagnostics needs to be Present or Not.
WAIT_FOR_ERROR_KEY | Expression | Token that Defines Which Key to Press for Resume in Post After error message
DEFAULT_SMART_SELFTEST | Integer | Default setup value of HDD SMART status check:\1 - Check SMART status during POST\0 - Do not Check SMART status during POST
AMI Build Tools:
Tools Label: 4.5.5_Tools_33, Dated: 2010-07-07
Visual eBios: RSS 5.69.0148, Dated: 2010-07-07
Compiler Tool(s): Microsoft's Windows Driver Kit (WDK) Ver. 7600.16385.1
New features added in this label:
None
General Bug Fixes:
None
EIP addressed in this label:
  • EIP77259 - Included rollbacked check-ins from ver 5, 6 and made it compatible with core 4.6.5.3..

  • EIP77527 - IdeSecurity, IdeAcoustic and IdeSmart changes should be done based on the Core Version checking.

Files changed for EIP fixes:
  • Root\Core\EM\HddSmart\IdeSMART.c(Eip#77259, #77527)

  • Root\Core\EM\HddSmart\IdeSMART.h(Eip#77259)

  • Root\Core\EM\HddSmart\IdeSMART.uni(Eip#77259)

  • Root\Core\EM\HddSmart\IdeSMART.dxs(Eip#77259)

  • Root\Core\EM\HddSmart\IdeSMART.mak(Eip#77259)

Known issues and limitations in this label:
None
Remaining Issues:
None
Unit Testing:
  1. Test case :
    OS Boot | SMART BAD display
    PASS | PASS
Validation Test Report

Validation Test Report.
Release History:

4.6.5.1_HddSmart_007

  • [TAG] - EIP77259
    [Category] - Improvement
    [Description] - Included rollbacked check-ins from ver 5, 6 and made it compatible with core 4.6.5.3.
    [Files] - IdeSMART.c, IdeSMART.h, IdeSMART.mak, IdeSMART.uni, IdeSMART.dxs

  • [TAG] - EIP77527
    [Category] - Improvement
    [Description] - IdeSecurity, IdeAcoustic and IdeSmart changes should be done based on the Core Version checking.
    [Files] - IdeSecurity.c, IdeSmart.c , Acoustic.c

4.6.4.1_HddSmart_006

  • [TAG] - EIP45383
    [Category] - New Feature
    [Description] - Added Setup option in Advanced setup page to Check HDD SMART status in POST.
    [Files] - IdeSMART.c, IdeSMART.sdl, IdeSMART.uni, IdeSMART.sd, IdeSMART.cif

4.6.4.1_HddSmart_005A

  • EIP#34744
    UEFI2.1 compliance change EIP#34744.
  • EIP#31559
    Request additional generic functionality to be added to the IdeSMART component.EIP#31559
  • EIP 37065
    System hang or reset when set AHCI mode and install a SMART failed HDD with AHCI mode.
  • EIP#31559
    Added ELINK for OEM to override SMART error handling. EIP#31559 Also has coding standard changes
  • EIP#39414
    Ide Smart Protocol reports errors and prompts for continuing when SMARTReturnStatus function is called. EIP#39414
  • EIP#42492
    Ide Smart doesn't support the ATA 8 Read Smart Data. EIP#42492 Corrected datasize for PollPeriod in Selftest funtion

  • [TAG] - EIP36485
    [Category] - Action Item
    [Description] - IDESMART module enhancement
    [Files] - IdeSmart.c,IdeSmart.h,PIdeBus.h

  • [TAG] - EIP53571
    [Category] - Enhancement
    [Description] - AMI headers update in IDESmart module
    [Files] - IdeSmart.mak,IdeSmart.c,IdeSmart.c,IdeSmart.dxs,IdeSmart.uni

  • [TAG] - EIP36485
    [Category] - Enhancement
    [Description] - IDESMART module enhancement
    [Files] - IdeSmart.mak,IdeSmart.c,IdeSmart.h,IdeSmart.dxs

  • [TAG] - EIP54437
    [Category] - Defect
    [Description] - IDESMART.C is not checking the Status
    [Files] - IdeSmart.c

  • [TAG] - EIP 55534
    [Category]- Defect
    [Symptom] - Component HddSmart not labeled for CORE 4.6.4.1
    [Solution] - IdeSmart is updated for Core 4.6.4.1
    [Files] - IdeSmart.c,Idesmart.h,IdeSmart.mak,IdeSmart.d

  • [TAG] - EIP55708
    [Category] - Improvement
    [Description] - If IdeSmart Error is detected and Quiet Boot is
    enabled,the system waits for F1, while Quiet Boot Logo is displayed.
    [Solution] - If the IdeSmart error found, switch to PostScreen and display the error msg.

  • [TAG] - EIP36485
    [Category] - Enhancement
    [Description] - IDESMART module enhancement
    [Files] - IdeSmart.chm

  • [TAG] EIP51537
    [Category] Action Item
    [Synopsis] HddSmart Module - Please correct the Release notes and make sure your Module is compiled correctly
    [Solution] Corrected Release notes and tested with WDK compiler.
    [Files] IdeSmart.chm

  • [TAG] - EIP 55534
    [Category]- Defect
    [Symptom] - Component HddSmart not labeled for CORE 4.6.4.1
    [Solution] - IdeSmart is updated for Core 4.6.4.1
    [Files] - IdeSmart.c,Idesmart.h,IdeSmart.mak,IdeSmart.dxs,IdeSmart.uni,IdeSmart.

  • [TAG] EIP56306
    [Category] Improvement
    [Description] CHM file update for (INT)4.6.4.1_HddSmart_005a label
    [Files] IdeSMART.chm
4.6.3_HddSmart_004
  • EIP 34207
    Comment out LegacyBios.h in IdeSMART.h.
4.6.3_HddSmart_003
  • Coding standard and updated the headers.
4.6.3_HddSmart_002a
  • Minor Fixes like Adding TargetH for Master Token and Proper Comments.
4.6.3_HddSmart_002
  • Fixed the Left Shift, which was accidentally checked in with extra LT symbol.
4.6.3_HddSmart_001
  • Initial Check In.

© American Megatrends Inc.


Release Notes - NDA Required

Validation Test Report for IdeSMART Label (INT)_a_4.6.5.1_HddSmart_007

Platform Information Form :

Board Information - HuronRiver
BIOS Information (Label, Path) - Labeled'4.6.5.1_VEB_1ABUC102'; Path 'SS: Alaska;$/Alaska/Projects/Intel/SandyBridge/CougarPoint_HuronRiver_4650_1ABUC/HuronRiver.veb';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions
Build

REF-31549: .N/A Test ROM Build---- PASS
Status Update:

S.M.A.R.T.

1) REF-28785: Not OS Specific Bad S.M.A.R.T. Hard Drive Detection ---- U/T
Status Update: Bad S.M.A.R.T. Hard Drive is not available

2) REF-31714: Not OS Specific Hard Drive with S.M.A.R.T support (No errors) ---- PASS
Status Update:

3) REF-31715 : Not OS Specific Hard Drive Without S.M.A.R.T Support ---- PASS
Status Update:

Platform Information Form :

Board Information - Piketon
BIOS Information (Label, Path) - Labeled '(INT)4.6.5_DH55HC_21'; Path 'SS: Alaska;$/Alaska/Projects/Intel/Piketon/DH55HC/DH55HC.veb';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions
Build

REF-31549: .N/A Test ROM Build---- PASS
Status Update:

S.M.A.R.T.

1) REF-28785: Not OS Specific Bad S.M.A.R.T. Hard Drive Detection ---- U/T
Status Update: Bad S.M.A.R.T. Hard Drive is not available

2) REF-31714: Not OS Specific Hard Drive with S.M.A.R.T support (No errors) ---- PASS
Status Update:

3) REF-31715 : Not OS Specific Hard Drive Without S.M.A.R.T Support ---- PASS
Status Update:

Platform Information Form :

Board Information - Bromolow
BIOS Information (Label, Path) - Labeled'4.6.4.1_VEB_1AOSX015'; Path 'SS: Alaska;$/Alaska/Projects/Intel/SandyBridge/CougarPoint_Bromolow_Crb_1AOSX/Bromolow.veb';
Chipset Information (Type, Stepping) -
CPU Information (Type, Stepping) -
Memory Info (Manufacturer, Speed, Configuration) -
Graphics (Please specify which one in used) -
Chipset driver Version -
Graphics drive Version -

The following BQA Tests have been validated in UEFI 2.3.1 BIOS Versions
Build

REF-31549: .N/A Test ROM Build---- PASS
Status Update:

S.M.A.R.T.

1) REF-28785: Not OS Specific Bad S.M.A.R.T. Hard Drive Detection ---- U/T
Status Update: Bad S.M.A.R.T. Hard Drive is not available

2) REF-31714: Not OS Specific Hard Drive with S.M.A.R.T support (No errors) ---- PASS
Status Update:

3) REF-31715 : Not OS Specific Hard Drive Without S.M.A.R.T Support ---- PASS
Status Update:


Function by File Name

AMIBIOS Function Reference

By File Name

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

  • IdeSMART.c
  • IdeSMART.dxs
  • IdeSMART.h
  • IdeSMART.mak
  • IdeSMART.sd
Built on 12:25:39 12/27/11


IdeSMART.c

Description:
IDE SMART Support

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

Function | Description
CommonNonDataHook | Common Hook which Calls Non Data Command.
GetHiiString | This function Reads a String from HII
IdeSMARTEntryPoint | This function is the entry point for IDE SMART Driver.
InitSMARTSupport | Initialize SMART functionality
InstallSMARTInterface | Installs SMARTInterface Protocol
ReportSmartFailure | Wrapper Function to call a ELINKed function
SendSMARTCommand | Sends any Non-Data SMART Command.
SMARTAbortSelfTest | Aborts SMART Self Test.
SmartErrorThresholdExceeded | Default function to report SMART failures to the POST screen
SMARTGetSmartData | Get SMART data of the harddisk.
SmartReadData | Sends any Data In SMART command.
SMARTReturnStatus | Returns SMART status
SMARTReturnStatusWrapper | Return SMART Status
SMARTSelfTest | Starts SMART SelfTest. SelfTestType will indicate whether to run short or extended selftest.
SMARTSelfTestStatus | Starts SMART SelfTest. SelfTestType will indicate whether to run short or extended selftest.
SmartWriteData | Sends any Data Out SMART command.
UnInstallSMARTInterface | Uninstall SMARTInterface Protocol


CommonNonDataHook in the IdeSMART.c

Function : CommonNonDataHook

File: IdeSMART.c
Description:
Common Hook which Calls Non Data Command.
Input:
IN    VOID*                 BusInterface,
IN    COMMAND_STRUCTURE     CommandStructure,
IN    BOOLEAN               ModeFlag
Output:
EFI_STATUS


GetHiiString in the IdeSMART.c

Function : GetHiiString

File: IdeSMART.c
Description:
This function Reads a String from HII
Input:
HiiHandle - Efi Hii Handle
Token     - String Token
Output:
Returns  Pointer to allocated String Buffer
NULL -  if could not get the data


IdeSMARTEntryPoint in the IdeSMART.c

Function : IdeSMARTEntryPoint

File: IdeSMART.c
Description:
This function is the entry point for IDE SMART Driver.
Input:
EFI_HANDLE          ImageHandle     Image handle.
EFI_SYSTEM_TABLE    *SystemTable    Pointer to the EFI system table.
Output:
EFI_STATUS
EFI_SUCCESS         When everything is going on fine!
Notes:
Entry Points are used to locate or install protocol interfaces and
notification events.


InitSMARTSupport in the IdeSMART.c

Function : InitSMARTSupport

File: IdeSMART.c
Description:
Initialize SMART functionality
Input:
IN VOID             *BusInterface,
IN BOOLEAN          ModeFlag
Output:
EFI_STATUS
Referrals:
ConfigureIdeDeviceAndController, ConfigureIdeDevice


InstallSMARTInterface in the IdeSMART.c

Function : InstallSMARTInterface

File: IdeSMART.c
Description:
Installs SMARTInterface Protocol
Input:
IN VOID             *BusInterface
IN BOOLEAN          ModeFlag
Output:
EFI_STATUS
Notes:
Already SMART support capability has been established.


ReportSmartFailure in the IdeSMART.c

Function : ReportSmartFailure

File: IdeSMART.c
Description:
Wrapper Function to call a ELINKed function
Input:
BOOLEAN Mode - TRUE - Device is in IDE mode
         FALSE - Device is in AHCI mode
VOID *Interface - Interface.  Should be cast into SATA_DEVICE_INTERFACE
or IDE_BUS_PROTOCOL depending on Mode parameter
Output:
none
Returns:
none
Referrals:
SmartErrorThresholdExceeded


SendSMARTCommand in the IdeSMART.c

Function : SendSMARTCommand

File: IdeSMART.c
Description:
Sends any Non-Data SMART Command.
Input:
IN      IDE_SMART_INTERFACE         *This
IN      UINT8                       SubCommand,
IN      UINT8                       AutoSaveEnable,      //OPTIONAL
IN      UINT8                       SelfTestType         //OPTIONAL
Output:
EFI_STATUS
Notes:
Returns EFI_UNSUPPORTED when SMART feature is not enabled.
Referrals:
IdeNonDataCommand, ExecuteNonDataCommand


SMARTAbortSelfTest in the IdeSMART.c

Function : SMARTAbortSelfTest

File: IdeSMART.c
Description:
Aborts SMART Self Test.
Input:
IN  IDE_SMART_INTERFACE *This
Output:
EFI_STATUS


SmartErrorThresholdExceeded in the IdeSMART.c

Function : SmartErrorThresholdExceeded

File: IdeSMART.c
Description:
Default function to report SMART failures to the POST screen
Input:
BOOLEAN Mode - TRUE - Device is in IDE mode
         FALSE - Device is in AHCI mode
VOID *Interface - Interface.  Should be cast into SATA_DEVICE_INTERFACE
or IDE_BUS_PROTOCOL depending on Mode parameter
Output:
none
Returns:
none
Referrals:
SMARTReturnStatusWrapper


SMARTGetSmartData in the IdeSMART.c

Function : SMARTGetSmartData

File: IdeSMART.c
Description:
Get SMART data of the harddisk.
Input:
IN  IDE_SMART_INTERFACE This
Output:
OUT UINT8   **SmartData


SmartReadData in the IdeSMART.c

Function : SmartReadData

File: IdeSMART.c
Description:
Sends any Data In SMART command.
Input:
IN      IDE_SMART_INTERFACE         *This
IN      UINT8                       SubCommand,
IN      VOID                        *Buffer,
IN      UINT8                       LogAddress,   //OPTIONAL
IN      UINT8                       SectorCount   //OPTIONAL
Output:
EFI_STATUS
Referrals:
AtaPioDataIn, SataPioDataOut


SMARTReturnStatus in the IdeSMART.c

Function : SMARTReturnStatus

File: IdeSMART.c
Description:
Returns SMART status
Input:
IN      IDE_SMART_INTERFACE         *This
Output:
EFI_STATUS
Notes:
Returns EFI_SUCCESS if threshold is not exceeded.


SMARTReturnStatusWrapper in the IdeSMART.c

Function : SMARTReturnStatusWrapper

File: IdeSMART.c
Description:
Return SMART Status
Input:
IN VOID             *BusInterface,
IN BOOLEAN          ModeFlag
Output:
EFI_STATUS
Notes:
Returns EFI_SUCCESS if threshold is not exceeded.
Referrals:
ConfigureIdeDeviceAndController, ConfigureIdeDevice


SMARTSelfTest in the IdeSMART.c

Function : SMARTSelfTest

File: IdeSMART.c
Description:
Starts SMART SelfTest. SelfTestType will indicate whether to run
short or extended selftest.
Input:
IN  IDE_SMART_INTERFACE     *This,
IN  UINT8                   SelfTestType, ( 0 : short, 1 :extended)
OUT UINT16                   *PollPeriod (Minutes)
Output:
EFI_STATUS
PollPeriod will indicate the recommended time interval between polling.
Frequent polling will either abort the self test or may prolong it.


SMARTSelfTestStatus in the IdeSMART.c

Function : SMARTSelfTestStatus

File: IdeSMART.c
Description:
Starts SMART SelfTest. SelfTestType will indicate whether to run
short or extended selftest.
Input:
IN      IDE_SMART_INTERFACE         *This,
OUT     UINT8                       *TestStatus
Output:
EFI_STATUS : TestStatus is valid only when EFI_STATUS is EFI_SUCCESS
TestStatus : Will indicate the % of test completed.
TestStatus = 0xFF Indicates Self Test Failed and EFI_STATUS = EFI_ERROR
Example: When TestStatus = 10, 10% of the test has been done.


SmartWriteData in the IdeSMART.c

Function : SmartWriteData

File: IdeSMART.c
Description:
Sends any Data Out SMART command.
Input:
IN      IDE_SMART_INTERFACE         *This
IN      UINT8                       SubCommand,
IN      VOID                        *Buffer,
IN      UINT8                       LogAddress,
IN      UINT8                       SectorCount
Output:
EFI_STATUS
Referrals:
AtaPioDataOut, SataPioDataOut


UnInstallSMARTInterface in the IdeSMART.c

Function : UnInstallSMARTInterface

File: IdeSMART.c
Description:
Uninstall SMARTInterface Protocol
Input:
IN VOID             *BusInterface
IN BOOLEAN          ModeFlag
Output:
EFI_STATUS
Referrals:
IdeBusStop


IdeSMART.dxs

Description:
This file is the dependency file for the IdeSmart driver


IdeSMART.h

Description:
This file contains the Includes, Definitions, typedefs,
        Variable and External Declarations, Structure and
function prototypes needed for the IdeSMART driver


IdeSMART.mak

Description:
Make file to build IdeSmart module


IdeSMART.sd

Description:
IdeSMART related setup definitions.


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.

  • C
  • G
  • I
  • R
  • S
  • U


Functions in Alphabetical Order

C

Function | Description
CommonNonDataHook | Common Hook which Calls Non Data Command.


Functions in Alphabetical Order

G

Function | Description
GetHiiString | This function Reads a String from HII


Functions in Alphabetical Order

I

Function | Description
IdeSMARTEntryPoint | This function is the entry point for IDE SMART Driver.
InitSMARTSupport | Initialize SMART functionality
InstallSMARTInterface | Installs SMARTInterface Protocol


Functions in Alphabetical Order

R

Function | Description
ReportSmartFailure | Wrapper Function to call a ELINKed function


Functions in Alphabetical Order

S

Function | Description
SendSMARTCommand | Sends any Non-Data SMART Command.
SMARTAbortSelfTest | Aborts SMART Self Test.
SmartErrorThresholdExceeded | Default function to report SMART failures to the POST screen
SMARTGetSmartData | Get SMART data of the harddisk.
SmartReadData | Sends any Data In SMART command.
SMARTReturnStatus | Returns SMART status
SMARTReturnStatusWrapper | Return SMART Status
SMARTSelfTest | Starts SMART SelfTest. SelfTestType will indicate whether to run short or extended selftest.
SMARTSelfTestStatus | Starts SMART SelfTest. SelfTestType will indicate whether to run short or extended selftest.
SmartWriteData | Sends any Data Out SMART command.


Functions in Alphabetical Order

U

Function | Description
UnInstallSMARTInterface | Uninstall SMARTInterface Protocol


General Information