************************************************************
************************************************************
*
*  Command Line Utility Readme.
*
*  This document makes references to products developed by
*  Intel. There are some restrictions on how these products
*  may be used, and what information may be disclosed to
*  others. Please read the Disclaimer section at the bottom
*  of this document, and contact your Intel field
*  representative if you would like more information.
*
************************************************************
************************************************************

************************************************************
*  
*  Intel is making no claims of usability, efficacy or 
*  warranty. The INTEL SOFTWARE LICENSE AGREEMENT contained
*  herein completely defines the license and use of this
*  software.
*
************************************************************

************************************************************
*  CONTENTS OF THIS DOCUMENT
************************************************************

This document contains the following sections:

1.  OVERVIEW
2.  SYSTEM REQUIREMENTS
3.  ENTERING THE COMMAND LINE UTILITY USER INTERFACE
4.  COMMAND LINE UTILITY USAGE
5.  COMMAND LINE RETURN CODES
6.  MIDDLEWARE ERROR CODES REFERENCE


************************************************************
* 1.  OVERVIEW
************************************************************

Intel(R) Rapid Storage Technology (Intel(R) RST) for CLI is 
a command line utility used to perform basic RAID operations
on RAID-enabled systems. Intel(R) RST for CLI supports RAID 0, 
RAID 1, RAID 5 and RAID 10 volumes. 
Intel(R) RST for CLI supports the following functionality: 
  - Creating RAID volumes including recovery volumes and arrays 
using the Create mode
  - Viewing properties of disks, volumes, arrays, and controllers 
using the Information mode
  - Managing RAID volumes, arrays, and disks using the Manage mode
  - Modifying existing volumes using the Modify mode
  - Accelerating a disk or volume with a specified SSD using 
the Accelerate mode


************************************************************
* 2.  SYSTEM REQUIREMENTS
************************************************************

Refer to Intel(R) Rapid Storage Technology product system
requirements.

**IMPORTANT NOTES**
The RstCli64 binaries should be unzipped to a secured folder
to prevent unauthorized users from making unintended changes to
the system's Optane(TM) volume.


************************************************************
* 3.  ENTERING THE COMMAND LINE UTILITY USER INTERFACE
************************************************************

Use the following steps to enter command line utility:
1.  Boot the system to Windows. 
2.  Open command prompt.
3.  Run rstcli.exe or rstcli64.exe with appropriate command 
line parameters.


************************************************************
* 4.  COMMAND LINE UTILITY USAGE
************************************************************

   Information Options:
   ------------------------
   | Flag | Name          |
   ------------------------
   | -I   | --information |
   | -a   | --array       |
   |      | --comma       |
   | -c   | --controller  |
   | -d   | --disk        |
   | -v   | --volume      |
   ------------------------

   Information Usage:
   Displays disk, volume, array, and controller information.
    --information [--controller <name>|--array <name>|--volume <name>|--disk <PTL>]
                  [--comma]

   Information Examples:
    -I -v Volume
    -I -d 0-5-0-0
    -I --comma
    -I -v --comma
    -I -d 0-2-0-0 --comma
    --information --array Array_0000
    --information --help


   Create Options:
   ---------------------------------
   | Flag | Name                   |
   ---------------------------------
   | -l   | --level                |
   | -C   | --create               |
   | -s   | --stripe-size          |
   | -E   | --create-from-existing |
   | -n   | --name                 |
   | -z   | --size                 |
   ---------------------------------

   Create Usage:
   Creates a new volume and array or creates a new volume on an existing array.
    --create --level x [--size y] [--stripe-size z] --name string 
    [--create-from-existing diskId] diskId {[diskId]}

   Create Examples:
    -C -l 1 -n Volume 0-1-0-0 0-2-0-0
    --create -l 0 -z 5 --name RAID0Volume 0-3-0-0 0-4-0-0 0-5-0-0
    -C -l 1 -E 0-1-0-0 -n VolumeWithData 0-2-0-0
    --create --help


   Manage Options:
   --------------------------------
   | Flag | Name                  |
   --------------------------------
   | -M   | --manage              |
   | -x   | --cancel-verify       |
   | -i   | --initialize          |
   | -D   | --delete              |
   | -p   | --verify-repair       |
   | -F   | --normal              |
   | -f   | --normal-volume       |
   | -l   | --level               |
   | -S   | --spare               |
   | -T   | --delete-metadata     |
   | -N   | --not-spare           |
   | -P   | --volume-cache-policy |
   | -R   | --rebuild             |
   | -t   | --target              |
   | -U   | --verify              |
   | -w   | --write-cache         |
   | -Z   | --delete-all-metadata |
   |      | --no-sync             |
   | -u   | --unlock              |
   |      | --forceAction         |
   --------------------------------

   Manage Usage:
   Manages arrays, volumes and disks present in the storage system.
    --manage --cancel-verify volumeName
    --manage --delete volumeName
    --manage --verify-repair volumeName
    --manage --normal-volume volumeName
    --manage --normal diskId
    --manage --initialize volumeName
    --manage --delete-metadata diskId
    --manage --not-spare diskId
    --manage --volume-cache-policy off|wb --volume volumeName
    --manage --rebuild volumeName --target diskId
    --manage --spare diskId
    --manage --verify volumeName
    --manage --write-cache true|false --array arrayName
    --manage --delete-all-metadata [--no-sync]

   Manage Examples:
    --manage --spare 0-3-0-0
    -M -D VolumeDelete
    -M --normal 0-2-0-0
    --manage -w true -array Array_0000
    -M -U VolumeVerify
    --manage --help
    --manage -Z
    -M -Z --no-sync (Do not synchronize cache durning metadata deletion. Allowed only in WinPE)

   OptaneMemory Options:
   ------------------------------
   | Flag | Name                |
   ------------------------------
   |      | --OptaneMemory      |
   |      | --disable           |
   |      | --enable            |
   |      | --progress          |
   |      | --forceAction       |
   |      | --start             |
   |      | --clear-cache       |
   |      | --verbose           |
   |      | --info              |
   |      | --file-cache-offset |
   |      | --cache-size        |
   |      | --disk-to-accel     |
   |      | --drive-to-accel    |
   |      | --wait              |
   |      | --fast-drive        |
   ------------------------------

   OptaneMemory Usage:
   Manage Optane Memory configuration.
    --OptaneMemory --enable
                  [--file-cache-offset <starting LBA>]
                  [--forceAction]
    --OptaneMemory --enable --fast-drive <driveId> --drive-to-accel <driveId>
                  [--file-cache-offset <starting LBA>]
                  [--forceAction]
    --OptaneMemory --disable
                  [--forceAction]
    --OptaneMemory --progress
    --OptaneMemory --clear-cache
    --OptaneMemory --info <--verbose>

   OptaneMemory Examples:
    --OptaneMemory --enable
    --OptaneMemory --enable --fast-drive 0-3-0-0 --drive-to-accel 0-5-0-0
    --OptaneMemory --enable --fast-drive 0-3-0-0 --drive-to-accel 0-5-0-0 --file-cache-offset 468000
    --OptaneMemory --disable
    --OptaneMemory --clear-cache
    --OptaneMemory --info --verbose
    --OptaneMemory --help


   Modify Options:
   ------------------------
   | Flag | Name          |
   ------------------------
   | -m   | --modify      |
   | -A   | --add         |
   | -X   | --expand      |
   | -l   | --level       |
   | -n   | --name        |
   | -s   | --stripe-size |
   | -v   | --volume      |
   ------------------------

   Modify Usage:
   Modifies an existing volume or array.
    --modify --volume VolumeName --add diskId {[diskId]}
    --modify --volume VolumeName --expand
    --modify --volume VolumeName --level L [--add diskId {[diskId]}
    [--stripe-size s] [--name N]
    --modify --volume VolumeName --name n

   Modify Examples:
    -m -v Volume_0000 -A 0-3-0-0 0-4-0-0
    -m --volume ModifyVolume --level 5
    --modify -v Volume -n RenameVolume
    --modify --help


   Rescan Options:
   -------------------
   | Flag | Name     |
   -------------------
   | -r   | --rescan |
   -------------------

   Rescan Usage:
   Forces the system to rescan for hardware changes.
    --rescan

   Rescan Examples:
    --rescan


   Accelerate Options:
   -------------------------------
   | Flag | Name                 |
   -------------------------------
   |      | --accelerate         |
   |      | --SSD                |
   |      | --setAccelConfig     |
   |      | --disk-to-accel      |
   |      | --disassociate       |
   |      | --fast-drive         |
   |      | --drive-to-accel     |
   |      | --volume-to-accel    |
   |      | --mode               |
   |      | --cache-size         |
   |      | --reset-to-available |
   |      | --cache-volume       |
   |      | --recurse            |
   |      | --accel-info         |
   |      | --loadCache          |
   |      | --stats              |
   |      | --dumpStats          |
   |      | --clear-stats        |
   |      | --wait               |
   -------------------------------

   Accelerate Usage:
   Accelerates a given drive or volume with the specified fast drive.
    --accelerate --setAccelConfig|--disassociate|
                 --reset-to-available|--accel-info
    --accelerate --setAccelConfig --drive-to-accel <driveId> | 
                 --volume-to-accel <volume name>  --mode off
    --accelerate --disassociate --cache-volume <volume name>
    --accelerate --reset-to-available --cache-volume <volume name>
    --accelerate --loadCache <path\filename(s)> --recurse
   Common information options
    --accelerate --accel-info
    --accelerate --stats

   Accelerate Examples:
    --accelerate --setAccelConfig --drive-to-accel 0-5-0-0 --mode off
    --accelerate --setAccelConfig --volume-to-accel MyVolume --mode off
    --accelerate --disassociate --cache-volume Cache_Volume
    --accelerate --reset-to-available --cache-volume Cache_Volume

    --accelerate --loadCache "C:\*" --recurse
    --accelerate --loadCache "C:\Windows\*" --recurse -q

    --accelerate --accel-info
    --accelerate --stats
    --accelerate --help


   Version Options:
   --------------------
   | Flag | Name      |
   --------------------
   | -V   | --version |
   --------------------

   Version Usage:
   Displays version information.
    --version

   Version Examples:
    --version


   Vmd Options:
   ----------------------
   | Flag | Name        |
   ----------------------
   |      | --remap-all |
   |      | --vmd       |
   |      | --remap     |
   ----------------------

   Vmd Usage:
   Volume management device (VMD) configuration.
    --vmd --remap <scsiX>
    --vmd --remap-all

   Vmd Examples:
    --vmd --remap scsi2
    --vmd --remap-all


OPTIONS:

   -A <<host>-<bus>-<target>-<lun>>,  --add <<host>-<bus>-<target>-<lun>>
     Adds new disks to an existing volume.

   -a <Array name>,  --array <Array name>
     Lists information about the arrays in the storage system.

   --accel-info
     Lists information about Accelerate settings.

   --accelerate
     Accelerates a given drive or volume with the specified fast drive.

   --cache-size <size in GB>
     Sets a size in gigabytes for the cache memory. This is an optional 
     switch. If the size is not specified, the complete size of the fast drive 
     will be used for acceleration.

   --cache-volume <Volume name>
     Specifies a name for the volume used as cache.

   -c <<host>-<bus>-<target>-<lun>>,  --controller <<host>-<bus>-<target>-<lun>>
     Lists information about the controllers in the storage system.

   -C,  --create
     Creates a new volume and array or creates a new volume on an existing 
     array.

   --clear-cache
     Clear Optane block cache.

   --clear-stats
     Clear statistic information for NV cache

   --comma
     Lists information in a comma delimited format view.

   -D <Volume name>,  --delete <Volume name>
     Deletes the specified volume.

   -d <<host>-<bus>-<target>-<lun>>,  --disk <<host>-<bus>-<target>-<lun>>
     Lists information about the disks in the storage system.

   --disable
     Separate Optane Memory into Optane drive and capacity drive.

   --disableVersionCheck
     Disables the check that verifies the major release version of the 
     command-line interface matches that of the Intel(R) Rapid Storage 
     Technology driver. Warning! Bypassing this check may lead to unexpected 
     software behavior.

   --disassociate
     This action is only available if the accelerated drive or volume that is 
     associated with the cache drive is reported missing or inaccessible. As a 
     result, caching activity is no longer occurring. If you are unable to 
     reconnect the accelerated disk or volume, the only option is to remove 
     the association between the cache drive and the disk or volume. Once the 
     association between the cache and the accelerated disk or volume is 
     removed, all cache metadata and data is deleted from the cache drive. You 
     can then reset the solid-state drive to available or accelerate a 
     different disk or volume, as long as the cache drive is healthy.

   --disk-to-accel <<host>-<bus>-<target>-<lun>>
     see --drive-to-accel

   --drive-to-accel <<host>-<bus>-<target>-<lun>>
     Specifies a drive if accelerating a pass-through drive.

   --dumpStats
     Provides statistical information about the NV cache for further 
     investigation

   -E <<host>-<bus>-<target>-<lun>>,  --create-from-existing 
   <<host>-<bus>-<target>-<lun>>
     Identifies the disk if data is to be migrated from one of the disks. Disk 
     identifier is SCSI address.

   --enable
     Create Optane Memory

   --fast-drive <<host>-<bus>-<target>-<lun>>
     Specifies fast drive that will be used as cache/accelerator. If another 
     fast is being used as cache, then that volume needs to be deleted to use 
     a new fast drive.

   --file-cache-offset <size in GB>
     Parameter defining File Cache offset in LBA. This is optional switch

   -F <<host>-<bus>-<target>-<lun>>,  --normal <<host>-<bus>-<target>-<lun>>
     Resets failed or SMART event disk to normal.

   -f <Volume name>,  --normal-volume <Volume name>
     Resets failed RAID 0 volume to normal and recovers data.

   --forceAction
     Forces an action to be executed

   -h,  --help
     Displays help documentation for command line utility modes, options, 
     usage, examples, and return codes. When used with a mode switch (create, 
     information, mange, modify, or accelerate), instructions for that mode 
     display. For example, --create --help displays Create option help.

   -I,  --information
     Displays disk, volume, array, and controller information.

   -i <Volume name>,  --initialize <Volume name>
     Initializes the redundant data on a RAID 1, 5 or 10 volume.

   --info
     Lists information about Optane Memory settings.

   -l <0, 1, 5, 10>,  --level <0, 1, 5, 10>
     Changes the Raid type of an existing volume. Options are migrations from 
     RAID 1 to RAID 0 or 5, RAID 0 to RAID 5, and RAID 10 to RAID 5.

   --loadCache <"Path\filename(s)">
     Loads contents into the NV cache.

   -M,  --manage
     Manages arrays, volumes and disks present in the storage system.

   -m,  --modify
     Modifies an existing volume or array.

   --mode <Enhanced or Maximized mode>
     Specifies Accelerate mode as Enhanced or Maximized.

   -n <Volume name>,  --name <Volume name>
     Specifies a name for the volume created. Renames an existing volume in 
     Modify mode.

   -N <<host>-<bus>-<target>-<lun>>,  --not-spare <<host>-<bus>-<target>-<lun>>
     Resets a spare disk to available.

   --no-sync
     Do not synchronize cache durning metadata deletion. Allowed only in WinPE

   --OptaneMemory
     Manage Optane Memory configuration.

   --progress
     Displays the progress of file cache migration.

   -p <Volume name>,  --verify-repair <Volume name>
     Verifies and repairs the volume.

   -P <Volume name>,  --volume-cache-policy <Volume name>
     Sets volume cache policy to either off or wb.

   -q,  --quiet
     Suppresses output for create, modify, and manage modes. Not valid on info 
     mode.

   --recurse
     When loading content into the NV cache, recurses into sub directories.

   --remap <ScsiX>
     Pulls specified controller under VMD on next computer reboot.

   --remap-all
     Pulls all eligible controllers under VMD on next computer reboot.

   --reset-to-available
     Resets the cache volume to available.

   -R <Volume name>,  --rebuild <Volume name>
     Rebuilds the degraded volume.

   -r,  --rescan
     Forces the system to rescan for hardware changes.

   --setAccelConfig
     Sets the config for accelerating a volume or drive.

   --SSD <<host>-<bus>-<target>-<lun>>
     see --fast-drive 

   -S <<host>-<bus>-<target>-<lun>>,  --spare <<host>-<bus>-<target>-<lun>>
     Marks a disk as a spare.

   -s <size in KB>,  --stripe-size <size in KB>
     Sets a stripe size in kilobytes (2^10 bytes) for a volume. Valid when 
     creating or changing the type of a volume and for RAID 0, RAID 5 and RAID 
     10. Options are 4, 8, 16, 32, 64 and 128 KB.

   --start
     Start services for Optane Memory

   --stats
     Provides statistical information about the NV cache.

   -T <<host>-<bus>-<target>-<lun>>,  --delete-metadata 
   <<host>-<bus>-<target>-<lun>>
     Deletes the metadata from the specified disk.

   -t <<host>-<bus>-<target>-<lun>>,  --target <<host>-<bus>-<target>-<lun>>
     Indicates the pass-through disk to be used for rebuilding a degraded 
     volume.

   -u <password>,  --unlock <password>
     Unlocks a disk.

   -U <Volume name>,  --verify <Volume name>
     Verifies data on the volume.

   --verbose
     Enable verbose mode for some options (please check help for other 
     options)

   --vmd
     Volume management device (VMD) configuration.

   --volume-to-accel <Volume name>
     Specifies a name of the volume to be accelerated.

   -V,  --version
     Displays version information.

   -v <Volume name>,  --volume <Volume name>
     Lists information about the volumes on the system. Stipulates the volume 
     to act on when used in Modify or Manage mode.

   --wait
     Wait for completion of the cache migration before CLI exit

   -w <true or false>,  --write-cache <true or false>
     Enables or disables write cache for all disks that are part of an array.

   -x <Volume name>,  --cancel-verify <Volume name>
     Cancels a verify operation in progress.

   -X,  --expand
     Expands a volume to consume all available space in an array.

   -Z,  --delete-all-metadata
     Deletes the metadata from all disks on the system.

   -z <size in GB>,  --size <size in GB>
     Sets a size in gigabytes. This is an optional switch. If the size is not 
     specified or specified to 0, then the maximum size available will be 
     used.

************************************************************
* 5.  COMMAND LINE RETURN CODES
************************************************************


   0,  Success 
    Request completed successfully. 

   1,  Request Failed 
    Request is formatted correctly but failed to execute. 

   2,  Invalid Request
    Unrecognized command, request was formatted incorrectly. 

   3,  Invalid Device
    Request not formatted correctly, device passed in does not exist. 

   4,  Request Unsupported
    Request is not supported with the current configuration. 

   5,  Device State Invalid
    Request is not supported with the current device state.
 
   20, Invalid Stripe Size
    Stripe size is not supported. 

   21, Invalid Name
    Volume name is too long, has invalid characters, or already exists.
    Volume name cannot exceed 16 English characters. 

   22, Invalid Size
    Size requested is invalid. 

   23, Invalid Number Disks
    Number of disks requested is invalid. 

   24, Invalid RAID Level
    RAID level requested is invalid. 

   51, Specify Optane member disks
    There are too many valid pairs for Optane enable, please specify pair using --fastDrive and --drive-to-accel. 

   52, Optane feature not supported
    Intel(R) Optane(TM) memory feature is not supported on this system.

   54, Intel(R) Optane(TM) memory M-series support is discontinued
    System Acceleration with Intel(R) Optane(TM) memory M-series is not supported in this version
    of the Intel(R) Rapid Storage Technology driver.

   55, Intel(R) Optane(TM) memory M-series used in Intel(R) Optane(TM) memory volume
    System Acceleration with Intel(R) Optane(TM) memory M-series is not supported in this version of
    the Intel(R) Rapid Storage Technology driver and will be disabled.
    Once disabled, it will not be possible to re-able the Intel(R) Optane(TM) memory volume.
    To continue, please use the '--forceAction' command line parameter.

************************************************************
* 6.  MIDDLEWARE ERROR CODES REFERENCE
************************************************************

   0x20000000     SUCCESS | No error result
   0x20000001     WIN32_ERROR | Win32 error
   0xA0000002     GENERAL_FAULT
   0xA0000003     GENERAL_UNKNOWN_ERROR
   0xA0000004     GENERAL_INVALID_VALUE
   0xA0000006     GENERAL_NULL_PARAMETER
   0xA0000008     GENERAL_INVALID_STATE
   0xA000000E     GENERAL_INSUFF_MEM
   0xA0000032     GENERAL_NOT_IMPLEMENTED
   0xA00000AA     DRIVER_BUSY
   0xA0010001     ISI_INSUFFICIENTRESOURCES | ISI Status: Insufficient Resources
   0xA0010002     ISI_INVALIDPARAMETER | ISI Status: Invalid Parameter
   0xA0010003     ISI_INVALIDHANDLE | ISI Status: Invalid Handle
   0xA0010004     ISI_INVALIDSTRIPSIZE | ISI Status: Invalid Strip Size
   0xA0010005     ISI_INVALIDSTRING | ISI Status: Invalid String
   0xA0010006     ISI_INVALIDSIZE | ISI Status: Invalid Size
   0xA0010007     ISI_INVALIDRAIDLEVEL | ISI Status: Invalid Raid Level
   0xA0010008     ISI_INVALIDSESSION | ISI Status: Invalid Session
   0xA0010009     ISI_TIMEOUT | ISI Status: Timeout
   0xA001000A     ISI_NOTIMPLEMENTED | ISI Status: Not Implemented
   0xA001000B     ISI_DUPLICATE | ISI Status: Duplicate
   0xA001000C     ISI_NOTINITIALIZED | ISI Status: Not Initialized
   0xA001000D     ISI_BUFFERTOOSMALL | ISI Status: Buffer Too Small
   0xA001000E     ISI_NOTSUPPORTED | ISI Status: Not Supported
   0xA001000F     ISI_FAILED | ISI Status: Failed
   0xA0010010     ISI_INTERNALERROR | ISI Status: Internal Error
   0xA0010011     ISI_INVALIDSCOPE | ISI Status: Invalid Scope
   0xA0010012     ISI_INVALIDSTATE | ISI Status: Invalid State
   0xA0010013     ISI_RETRIESEXCEEDED | ISI Status: Retries Exceeded
   0xA0010014     ISI_WRONGPASSWORD | ISI Status: Wrong Password
   0xA0010015     ISI_DATAEXCEEDSLIMITS | ISI Status: Data Exceeds Limits
   0xA0010016     ISI_INSUFFICIENTPRIVILEGES | ISI Status: Insufficient Privileges
   0xA0010018     ISI_INVALID_REQUEST | Inappropriate request for current driver or device state
   0xA001004B     ISI_SHRINK_FAILED_GENERIC
   0xA001004C     ISI_SHRINK_LAST_PARTITION_NOT_DATA
   0xA001004D     ISI_SHRINK_LAST_PARTITION_TOO_SMALL
   0xA001004E     ISI_SHRINK_NOT_ENOUGH_SPACE
   0xA0010050     ISI_NO_CONTROLLER_FOUND
   0xA0010051     ISI_SHRINK_REQUESTED_SIZE_LESS_THAN_MIN
   0xA0010053     ISI_SHRINK_LAST_PARTITION_NOT_SHRINKABLE
   0xA0010054     ISI_SHRINK_NOT_ENOUGH_FREE_SPACE
   0xA0010055     ISI_SHRINK_WINRE_REQUIREMENT_FAILED
   0xA0010056     ISI_SHRINK_QUERY_DISK_FOR_GPT_ATTRIBUTE_CHANGE_FAILED
   0xA0010057     ISI_SHRINK_QUERY_DISK_FOR_PARTITION_TYPE_CHANGE_FAILED
   0xA0010058     ISI_SHRINK_GET_PARTITION_PROPS_FAILED
   0xA0010059     ISI_SHRINK_INCORRECT_PARTITION_TYPE
   0xA001005A     ISI_SHRINK_CHANGE_PARTITION_TYPE_FAILED
   0xA001005B     ISI_SHRINK_CHANGE_GPT_ATTRIBUTES_FAILED
   0xA001005C     ISI_SHRINK_QUERY_DISK_FOR_FILE_SYSTEM_CHECK_FAILED
   0xA001005D     ISI_SHRINK_FILE_SYSTEM_CHECK_FAILED
   0xA001005F     ISI_EVENT_WAITINGONRESULT
   0xA0010060     ISI_EVENT_SYNCFAULT
   0xA0010061     ISI_EVENT_TIMEOUT
   0xA0010062     ISI_EVENT_WAIT_FAILED
   0xA0010063     ISI_ACTION_VALIDATOR_HAS_USER_DATA
   0xA0010064     ISI_ACTION_VALIDATOR_REBOOT_ACTION_DENIED
   0xA0010065     ISI_ACTION_VALIDATOR_ROHI_CANT_ENABLE
   0xA0010066     ISI_ACTION_VALIDATOR_CLEAR_MD_ACTION_DENIED
   0xA0010067     ISI_ACTION_VALIDATOR_DENIED
   0xA0010068     ISI_ACTION_VALIDATOR_RAID_ACTION_ON_TG
   0xA0010069     ISI_ACTION_VALIDATOR_SUB_CC_SWITCH_FEATURE_NOT_SUPPORTED | preOS or Driver does not support SubClassCode switch feature
   0xA001006A     ISI_ACTION_VALIDATOR_SUB_CC_SWITCH_FEATURE_NOT_SUPPORTED_DISK | Disk does not support SubClassCode switch feature
   0xA001006B     ISI_ACTION_VALIDATOR_DISK_NOT_PASS_THRU | Disk is not pass thru, it has iRST metadata or is otherwise claimed
   0xA001006C     ISI_DISK_IS_WINDOWS_DYNAMIC | Disk is a Windows dynamic disk - not usable by RST solution
   0xA001006D     ISI_ACTION_VMD_REMAP_UNSUPPORTED_CONTROLLER | Controller can't be remapped
   0xA001006E     ISI_ACTION_VMD_REMAP_UNSUPPORTED_REMAP_OPERATION | Remaping a scheduled controller
   0xA001006F     ISI_ACTION_VMD_REMAP_UNSUPPORTED_REVERT_OPERATION | Reverting remap on a controller that is not currently scheduled for remap
   0xA0010070     ISI_ACTION_VMD_REMAP_NOTHING_TO_REMAP | Remap all action did nothing
   0xA0010071     ISI_ACTION_VMD_REMAP_NOTHING_TO_REVERT | Revert remap all action did nothing
   0xA0010072     ISI_ACTION_VMD_REMAP_OPERATION_FAILED_READ | Reading BIOS VMD remap EFI variable failed
   0xA0010073     ISI_ACTION_VMD_REMAP_OPERATION_FAILED_WRITE | Saving to BIOS VMD remap EFI variable failed
   0xA0010074     ISI_ACTION_VMD_REMAP_OPERATION_NO_VMD_ON_SYSTEM | VMD not on system. Can't perform remap operation
   0xA0010075     ISI_ACTION_VMD_REMAP_OPERATION_FAILED_READ_TOO_SMALL | BIOS VMD remap EFI variable failed - read less bytes than expected
   0xA0010076     ISI_ACTION_VMD_REMAP_NOT_SUPPORTED | BIOS VMD remap function not supported
   0xA0010077     ISI_ACTION_VMD_REMAP_HYBRID_NOT_ALL_MEMBERS | Must remap all members of Hybrid Drive in one operation
   0xA0010078     ISI_ACTION_VMD_REMAP_HYBRID_MISSING_MEMBER | Hybrid disk cannot have only 1 member - detection error
   0xA0010079     ISI_ACTION_VMD_REMAP_PCI_SWITCH_NOT_ALL_MEMBERS | Must remap all controllers under a PCI switch in one operation
   0xA001007A     ISI_ACTION_VALIDATOR_DISK_SHADOW_MBR_ENABLED | RAID or caching operations cannot use a disk with Shadow MBR enabled
   0xA001007B     ISI_ACTION_VALIDATOR_DISK_DISCRETE_OPTANE_EOL | Discrete Optane (M-Series) support is discontinued and it's not allowed to enable NGSA with it as caching drive
   0xA001007C     ISI_ACTION_VALIDATOR_OPTANE_DISABLE_LAST_TIME | Discrete Optane (M-Series) support is discontinued. After disable there will be no way to enable NGSA with that drive as cache
   0xA001007D     ISI_ACTION_VALIDATOR_MMG_ACTION_FORBIDDEN | Mammoth glacier can't be used for RAID nor NGSA. It is compatible only with BNCM.
   0xA00100C9     ISI_FAULT | Fault in ISI
   0xA003012D     IOCTL_FAULT | IOCTL Error: Fault in IOCTL code.
   0xA003012E     IOCTL_NOT_PERFORMED | IOCTL Error: IOCTL not invoked.
   0xA003012F     IOCTL_PREVIOUSLY_PERFORMED | IOCTL Error: IOCTL was previously performed, must call reset() to reuse instance.
   0xA0030130     IOCTL_NO_ASYNC_INVOKE | IOCTL Error: Asynchronous invoke not permitted in this class.
   0xA0030131     IOCTL_PENDING | IOCTL Error: Asynchronous invoke pending.
   0xA0030132     IOCTL_IOCTL_ERROR | IOCTL Error: Error in IOCTL call.
   0xA0030133     IOCTL_BAD_RESULTS | IOCTL Error: Results from driver failed verification.
   0xA0030134     IOCTL_LOCK_TIMEOUT | IOCTL Error: Thread failed to acquire the lock before timeout.
   0xA0030135     IOCTL_LOCK_BAD_FREE | IOCTL Error: Invalid unlock attempted.
   0xA0030136     IOCTL_LOCK_RELOCK | IOCTL Error: Owining thread attempted to relock.
   0xA0030137     IOCTL_IN_BUFFER_SIZE | IOCTL Error: Input buffer size is incorrect (usually too small).
   0xA0030138     IOCTL_OUT_BUFFER_SIZE | IOCTL Error: Output buffer size is incorrect (usually too small).
   0xA0030139     IOCTL_CONFIG_BUFFER_SIZE | IOCTL Error: RAID Get Set Config buffer size is too small (DataTransferLength).
   0xA003013A     IOCTL_BAD_RAID_CONFIG_GROUP | IOCTL Error: RAID Config Group has not been set.
   0xA003013B     IOCTL_BAD_RAID_DIRECTION | IOCTL Error: RAID Direction (Get or Set has not been set.
   0xA003013C     IOCTL_NEW_VALUE_NOT_SET | IOCTL Error: RAID Set Config value has not been set.
   0xA003013D     IOCTL_ZERO_LEN_SERIALNO | IOCTL Error: Volume name (Serial Number) cannot be empty string.
   0xA003013E     IOCTL_SERIALNO_TOO_LONG | IOCTL Error: Volume name (Serial Number) is too long.
   0xA003013F     IOCTL_SERIALNO_WHITESPACE | IOCTL Error: Volume name (Serial Number) cannot start with whitespace.
   0xA0030140     IOCTL_SERIALNO_INVALID | IOCTL Error: Volume name (Serial Number) contains invalid character(s).
   0xA0030141     IOCTL_SIMULATOR_NOT_FOUND | IOCTL Error: Driver Simulator not found.
   0xA0030142     IOCTL_INTERFACE_NOT_SUPPORTED | IOCTL Error: Interface version not supported
   0xA0040400     DRIVER_FAULT | DRIVER Error: Fault in Driver Code.
   0xA0040401     DRIVER_UNEXPECTED | DRIVER Error: Unexpected Driver Response.
   0xA0040402     DRIVER_BUFFER_OVERRUN | DRIVER Error: Driver response overran output buffer.
   0xA0040403     DRIVER_SHORT_RESPONSE | DRIVER Error: Driver response too short.
   0xA0040404     DRIVER_SRB_IO_RESPONSE | DRIVER Error: SRB_IO_CONTROL.ReturnCode indicates error.
   0xA0040405     DRIVER_ISM_VALIDATION_ERR | DRIVER Error: RAID ISM response buffer failed field-level validation.
   0xA0040406     DRIVER_CSMI_ERROR_STATUS | DRIVER Error: CSMI SSP Passthru returned error status.
   0xA0040407     DRIVER_CSMI_CRITICAL_ERROR | DRIVER Error: CSMI SSP Passthru returned error on mandatory command.
   0xA0050000     RAID_ISM_STS_OK | RAID ISM Status: No Error
   0xA0050001     RAID_ISM_STS_ERROR | RAID ISM Status: STS Error
   0xA0050002     RAID_ISM_BAD_KEY_CONTINUE | RAID ISM Status: Bad Key - Continue
   0xA0050003     RAID_ISM_BAD_KEY_ABORT | RAID ISM Status: Bad Key - Abort
   0xA0050004     RAID_ISM_SCALAR_ERROR | RAID ISM Status: Scalar Error
   0xA0050005     RAID_ISM_INVALID_GROUP_ID | RAID ISM Status: Invalid Group ID
   0xA0050006     RAID_ISM_NO_SUCH_FIELD | RAID ISM Status: No Such Field
   0xA0050007     RAID_ISM_TABLE_ERROR | RAID ISM Status: Table Error
   0xA0050008     RAID_ISM_DISK_TABLE_FULL | RAID ISM Status: Disk Table Full
   0xA0050009     RAID_ISM_PENDING | RAID ISM Status: Pending
   0xA005000A     RAID_ISM_INVALID_REQUEST | RAID ISM Status: Invalid Request
   0xA005000B     RAID_ISM_INVALID_PARAMETER | RAID ISM Status: Inavalid Parameter
   0xA005000C     RAID_ISM_AOAC_NOT_CONFIGURED
   0xA0060000     CFG_OK | RAID Config Status: Ok
   0xA0060001     CFG_HELP | RAID Config Status: Help
   0xA0060002     CFG_VOLUME_TABLE_FULL | RAID Config Status: Volume Table Full.
   0xA0060003     CFG_VOLUME_NAME_EMBEDDED_SPACES | RAID Config Status: Volume Name has embedded spaces.
   0xA0060004     CFG_DISK_TABLE_FULL | RAID Config Status: Disk Table Full.
   0xA0060005     CFG_VOLUME_NAME_TOO_SHORT | RAID Config Status: Volume Name too Short.
   0xA0060006     CFG_VOLUME_NAME_TOO_LONG | RAID Config Status: Volume Name too Long.
   0xA0060007     CFG_VOLUME_NAME_NOT_UNIQUE | RAID Config Status: Volume Name Not Unique.
   0xA0060008     CFG_NO_MEMBERS_SELECTED | RAID Config Status: No Members Selected.
   0xA0060009     CFG_TOO_FEW_MEMBERS_SELECTED | RAID Config Status: Too Few Members Selected.
   0xA006000A     CFG_TOO_MANY_MEMBERS_SELECTED | RAID Config Status: Too Many Members Selected.
   0xA006000B     CFG_VOLUME_NEEDS_THREE_MEMBERS | RAID Config Status: Volume Needs At Least Three Members.
   0xA006000C     CFG_TOO_MANY_DISKS_ONLINE | RAID Config Status: Too Many Disks Online.
   0xA006000D     CFG_ARRAY_NOT_STABLE | RAID Config Status: Array Not Stable.
   0xA006000E     CFG_NOT_ENOUGH_DISK_SPACE | RAID Config Status: Not Enough Available DiskS pace.
   0xA006000F     CFG_RAID3_STRIPE_TOO_BIG | RAID Config Status: Raid3 Stripe Too Big.
   0xA0060010     CFG_VOLUME_NAME_ALL_NUMERIC | RAID Config Status: Volume Name All Numeric.
   0xA0060011     CFG_DISK_TOO_SMALL_FOR_ARRAY | RAID Config Status: Disk Too Small For Array.
   0xA0060012     CFG_VOLUME_NOT_FOUND | RAID Config Status: Volume Not Found.
   0xA0060013     CFG_OPERATION_NOT_IMPLEMENTED | RAID Config Status: Operation Not Implemented.
   0xA0060014     CFG_VOLUME_NAME_ILLEGAL_CHARACTERS | RAID Config Status: Volume Name has Illegal Characters.
   0xA0060015     CFG_VOLUME_NAME_MUST_START_ALPHA | RAID Config Status: Volume Name Must Start Alpha.
   0xA0060016     CFG_VOL_ACTIONS_IN_PROGRESS | RAID Config Status: Volume Actions Still in Progress.
   0xA0060017     CFG_NOT_ENOUGH_RESOURCES | RAID Config Status: Not Enough Resources.
   0xA0060018     CFG_ABORT_MIGRATION_FAILED | RAID Config Status: Abort Migration Failed.
   0xA0060019     CFG_INITIALIZE_PARITY_FAILED | RAID Config Status: Initialize Parity Failed.
   0xA006001A     CFG_VERIFY_PARITY_FAILED | RAID Config Status: Verify Parity Failed.
   0xA006001B     CFG_CONFIG_HAS_CHANGED | RAID Config Status: Config has Changed.
   0xA006001C     CFG_REQUEST_OVERLAP | RAID Config Status: Request Overlap.
   0xA006001D     CFG_UNSPECIFIED_ERROR | RAID Config Status: Unspecified Error.
   0xA006001E     CFG_VOLUME_ALREADY_MIGRATING | RAID Config Status: Volume Already Migrating.
   0xA006001F     CFG_VOLUME_RSV_REL_RESET_ERROR | RAID Config Status: Volume Rsv Rel Reset Error.
   0xA0060020     CFG_VOLUME_DELETED_ACTION_NOT_DONE | RAID Config Status: Volume Deleted Action Not Done.
   0xA0060021     CFG_DISK_DELETED_ACTION_NOT_DONE | RAID Config Status: Disk Deleted Action Not Done.
   0xA0060022     CFG_DISK_NOT_FOUND | RAID Config Status: Disk Not Found.
   0xA0060023     CFG_DISK_ACTIONS_STILL_IN_PROGRESS | RAID Config Status: Disk Actions Still in Progress.
   0xA0060024     CFG_ILLEGAL_DISK_ACTION | RAID Config Status: Illegal Disk Action.
   0xA0060025     CFG_RAID_STRIP_SIZE_INVALID | RAID Config Status: RAID Strip Size Invalid.
   0xA0060026     CFG_ACTION_IGNORED_DISK_FAILURE | RAID Config Status: Action Ignored Disk Failure.
   0xA0060027     CFG_ACTION_IGNORED_ARRAY_REBUILD | RAID Config Status: Action Ignored Array Rebuilding.
   0xA0060028     CFG_ARRAY_NOT_NORMAL | RAID Config Status: Array is not in normal state.
   0xA0060029     CFG_RAID_LEVEL_INVALID | RAID Config Status: RAID level is invalid.
   0xA006002A     CFG_ARRAY_HAS_MULTIPLE_VOLUMES | RAID Config Status: Array has multiple volumes.
   0xA006002B     CFG_INVALID_PARAMETER | RAID Config Status: Invalid Parameter
   0xA006002C     CFG_NV_CACHE_IN_USE | RAID Config Status: NVM Cache In Use
   0xA006002D     CFG_NV_CACHE_NOT_PRESENT | RAID Config Status: NVM Cache Not Present
   0xA006002E     CFG_NV_CACHE_TOO_BIG | NVM Cache too big
   0xA006002F     CFG_AOAC_ERROR
   0xA0060030     CFG_INVALID_SPINDOWN_POLICY
   0xA0060031     CFG_INVALID_ERROR_CODE | RAID Config Status: Invalid Error Code
   0xA0070000     OPTANE_UNKNOWN
   0xA0070001     OPTANE_CONCATENATE_DRIVER_DISKSARENOTVALID
   0xA0070002     OPTANE_CONCATENATE_DRIVER_VOLUMENOTEXIST
   0xA0070003     OPTANE_CONCATENATE_DRIVER_PLATFORMNOTSUPPORTED
   0xA0070004     OPTANE_CONCATENATE_DRIVER_CONCATENATIONVOLUMEALREADYEXIST
   0xA0070005     OPTANE_CONCATENATE_DRIVER_OSONWRONGDISK
   0xA0070006     OPTANE_CONCATENATE_DRIVER_FILECACHESIZETOOBIG
   0xA0070007     OPTANE_CONCATENATE_DRIVER_FILECACHESIZETOOSMALL
   0xA0070008     OPTANE_CONCATENATE_DRIVER_NOSPACEFORMETADATA
   0xA0070009     OPTANE_CONCATENATE_DRIVER_INTERNALERROR
   0xA007000A     OPTANE_CONCATENATE_DRIVER_CONFIGURATIONNOTSUPPORTED
   0xA007000B     OPTANE_CONCATENATE_DRIVER_STARTBOUNDARYTOOSMALL
   0xA007000C     OPTANE_CONCATENATE_ISDI2_ALREADYENABLED
   0xA007000D     OPTANE_CONCATENATE_ISDI2_FASTMEDIANOTCLEAN
   0xA007000E     OPTANE_BLOCK_CACHEVOLUMEALREADYPRESENT
   0xA007000F     OPTANE_FASTMEDIAINVALIDFORCACHE
   0xA0070010     OPTANE_FASTMEDIATOOSMALLFORCACHE
   0xA0070011     OPTANE_UNALLOCATEDSPACEINVALID
   0xA0070012     OPTANE_BLOCK_CACHE_SIZEINVALID
   0xA0070013     OPTANE_BLOCKCACHECREATIONFAILED
   0xA0070014     OPTANE_SET_BLOCKCACHE_ACCELERATEMODEFAILED
   0xA0070015     OPTANE_CONCATENATE_ISDI2_ACCELERATEWITHBLOCKCACHEFAILED
   0xA0070016     OPTANE_CONCATENATE_ISDI2_SPECIFIEDFILECACHETOOBIG
   0xA0070017     OPTANE_CONCATENATE_ISDI2_NODISKPAIRFOUND
   0xA0070018     OPTANE_CONCATENATE_ISDI2_MANYDISKPAIRFOUND
   0xA0070019     OPTANE_DRIVER_FEATURENOTSUPPORTED
   0xA007001A     OPTANE_CONCATENATE_DRIVER_DISKPAIRDISKIDAREEQUAL
   0xA007001B     OPTANE_CONCATENATE_DRIVER_DISKPAIRFASTDISKNOTSUPPORTED
   0xA007001C     OPTANE_CONCATENATE_DRIVER_DISKPAIRSLOWDISKNOTSUPPORTED
   0xA007001D     OPTANE_CONCATENATE_DRIVER_DISKPAIRFASTDISKISTOOBIG
   0xA007001E     OPTANE_CONCATENATE_DRIVER_DISKPAIRINTERNALERROR
   0xA007001F     OPTANE_ISDI2_SERVICECOMMANDNOTCREATED
   0xA0070020     OPTANE_ISDI2_MIGRATIONSERVICENOTFOUND
   0xA0070021     OPTANE_ISDI2_MINIFILTERSERVICENOTFOUND
   0xA0070022     OPTANE_SEPARATE_DRIVER_CONCATENATEDVOLUMENOTEXIST
   0xA0070023     OPTANE_SEPARATE_DRIVER_MIGRATIONALREADYRUNNING
   0xA0070024     OPTANE_SEPARATE_ISDI2_OPTANEVOLUMENOTFOUND
   0xA0070025     OPTANE_DEACCELERATEFROMBLOCKCACHEFAILED
   0xA0070026     OPTANE_SEPARATE_ISDI2_DEACCELERATEFROMBLOCKCACHEFAILED
   0xA0070027     OPTANE_SEPARATE_ISDI2_DESTROYINGBLOCKCACHEFAILED
   0xA0070028     OPTANE_CONCATENATE_DRIVER_DISKINTERNALERROR
   0xA0070029     OPTANE_CONCATENATE_DRIVER_DISKVOLUMENOTEXIST
   0xA007002A     OPTANE_CONCATENATE_DRIVER_DISKISNOTDISK
   0xA007002B     OPTANE_CONCATENATE_DRIVER_DISKINCORRECTBLOCKSIZE
   0xA007002C     OPTANE_CONCATENATE_DRIVER_DISKTOOSMALL
   0xA007002D     OPTANE_CONCATENATE_DRIVER_DISKINCORRECTDISKTYPE
   0xA007002E     OPTANE_CONCATENATE_DRIVER_DISKINCORRECTPARTITIONTYPE
   0xA007002F     OPTANE_DRIVER_METADATAOPERATION_DISKNOTEXIST
   0xA0070030     OPTANE_DRIVER_METADATAOPERATION_FAILED
   0xA0070031     OPTANE_ISDI2_SETTING_BLOCK_CACHE_TO_SAFE_FAILED
   0xA0070032     OPTANE_CONCATENATE_ISDI2_DISKCONTAINSSYSTEMCOMPONENTS
   0xA0070033     OPTANE_SMART_EVENT_ON_SLOW
   0xA0070034     OPTANE_SMART_EVENT_ON_FAST
   0xA0070035     OPTANE_BAD_BLOCK_DETECTED
   0xA0070036     OPTANE_MIGRATION_FAILURE_ROLLBACK
   0xA0070037     OPTANE_CRITICAL_SECTION_NOT_OBTAINED
   0xA0070038     OPTANE_CRITICAL_SECTION_RE_ENTRY
   0xA00A0000     PINNING_UNAVALIABLE
   0xA00A0001     PINNING_PICK_FILE
   0xA00A0002     PINNING_PICK_FOLDER
   0xA00A0003     PINNING_PICK_APP
   0xA00A000B     PINNING_FILES_AND_FOLDERS_REFRESH
   0xA00A000D     PINNING_APPS_REFRESH
   0xA00A0015     PINNING_PIN_FILE_OR_FOLDER
   0xA00A0017     PINNING_PIN_APP
   0xA00A001F     PINNING_UNPIN_FILE_OR_FOLDER
   0xA00A0021     PINNING_UNPIN_APP
   0xA00A0029     PINNING_AVAIL_COMMUNICATION_ERROR
   0xA00A002A     PINNING_AVAIL_IN_PROGRESS
   0xA00A002B     PINNING_AVAIL_OPTANE_DISABLED
   0xA00A002C     PINNING_AVAIL_SMALL_CACHE
   0xA00A002D     PINNING_AVAIL_UNKNOWN_ISSUE
   0xA00A002E     PINNING_AVAIL_CONTROLLER_UNSUPPORTED
   0xA00A002F     PINNING_AVAIL_DATA_DRIVE_UNSUPPORTED
   0xA00A0030     PINNING_AVAIL_SMALL_SKU
   0xA00A0031     PINNING_FILE_CACHE_FULL
   0xA00A0032     PINNING_FILE_CACHE_ALMOST_FULL
   0xA00A0033     PINNING_DIRECTORY_NOT_FOUND
   0xA00A0034     PINNING_APP_NOT_FOUND
   0xA00A0035     PINNING_ACCESS_DENIED
   0xA00A0036     PINNING_FILE_CACHE_DISABLED

************************************************************
* Boost Software License - Version 1.0 - August 17th, 2003
************************************************************

Permission is hereby granted, free of charge, to any person or organization
obtaining a copy of the software and accompanying documentation covered by
this license (the "Software") to use, reproduce, display, distribute,
execute, and transmit the Software, and to prepare derivative works of the
Software, and to permit third-parties to whom the Software is furnished to
do so, all subject to the following:

The copyright notices in the Software and this entire statement, including
the above license grant, this restriction and the following disclaimer,
must be included in all copies of the Software, in whole or in part, and
all derivative works of the Software, unless such copies or derivative
works are solely in the form of machine-executable object code generated by
a source language processor.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.


************************************************************
* DISCLAIMER
************************************************************

INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL PRODUCTS.
NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY
INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS
PROVIDED IN INTEL'S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL
ASSUMES NO LIABILITY WHATSOEVER AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED
WARRANTY, RELATING TO SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY
OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER
INTELLECTUAL PROPERTY RIGHT.

UNLESS OTHERWISE AGREED IN WRITING BY INTEL, THE INTEL PRODUCTS ARE NOT 
DESIGNED NOR INTENDED FOR ANY APPLICATION IN WHICH THE FAILURE OF THE INTEL
PRODUCT COULD CREATE A SITUATION WHERE PERSONAL INJURY OR DEATH MAY OCCUR.

Intel may make changes to specifications and product descriptions at any
time, without notice. Designers must not rely on the absence or 
characteristics of any features or instructions marked "reserved" or "undefined". 
Intel reserves these for future definition and shall have no
responsibility whatsoever for conflicts or incompatibilities arising from 
future changes to them. The information here is subject to change without 
notice. Do not finalize a design with this information.

The products described in this document may contain design defects or
errors known as errata which may cause the product to deviate from 
published specifications. Current characterized errata are available on 
request.

Contact your local Intel sales office or your distributor to obtain the 
latest specifications and before placing your product order.

Copies of documents which have an order number and are referenced in this
document, or other Intel literature, may be obtained by calling 
1-800-548-4725, or go to: http://www.intel.com/#/en_us_01

Intel(R) is a trademark of Intel Corporation in the U.S. and other 
countries.

* Other names and brands may be claimed as the property of others
        
Copyright (C), Intel Corporation. All rights reserved.
************************************************************
* INTEL SOFTWARE LICENSE AGREEMENT
************************************************************

INTERNAL USE SOFTWARE LICENSE AGREEMENT

DO NOT DOWNLOAD, INSTALL, ACCESS, COPY, OR USE ANY PORTION OF THE SOFTWARE UNTIL YOU HAVE READ AND ACCEPTED THE TERMS AND CONDITIONS OF THIS AGREEMENT. BY INSTALLING, COPYING, ACCESSING, OR USING THE SOFTWARE, YOU AGREE TO BE LEGALLY BOUND BY THE TERMS AND CONDITIONS OF THIS AGREEMENT. If You do not agree to be bound by, or the entity for whose benefit You act has not authorized You to accept, these terms and conditions, do not install, access, copy, or use the Software and destroy all copies of the Software in Your possession.

This SOFTWARE LICENSE AGREEMENT (this “Agreement”) is entered into between Intel Corporation, a Delaware corporation (“Intel”) and You. “You” refers to you or your employer or other entity for whose benefit you act, as applicable. If you are agreeing to the terms and conditions of this Agreement on behalf of a company or other legal entity, you represent and warrant that you have the legal authority to bind that legal entity to the Agreement, in which case, "You" or "Your" shall be in reference to such entity. Intel and You are referred to herein individually as a “Party” or, together, as the “Parties”.

The Parties, in consideration of the mutual covenants contained in this Agreement, and for other good and valuable consideration, the receipt and sufficiency of which they acknowledge, and intending to be legally bound, agree as follows: 

1. PURPOSE. You seek to obtain, and Intel desires to provide You, under the terms of this Agreement, Software solely for Your internal efforts to develop or to test and evaluate products integrating Intel hardware and Intel software. “Software” refers to certain software or other collateral, including, but not limited to, related components, operating system, application program interfaces, device drivers, associated media, printed or electronic documentation and any updates or releases thereto associated with Intel product(s), software or service(s). “Intel-based product” refers to a device that includes, incorporates, or implements Intel product(s), software or service(s).

2. LIMITED LICENSE. Conditioned on Your compliance with the terms and conditions of this Agreement, Intel grants to You a limited, nonexclusive, nontransferable, revocable, worldwide, fully paid-up license during the term of this Agreement, without the right to sublicense, under Intel’s copyrights (subject to any third party licensing requirements), in each case solely within Your premises and only for Your internal demonstration, evaluation, testing, validation, and development of Your Intel-based products, to (i) prepare derivative works (as defined in 17 U.S.C. § 101 et seq.) of the Software (“Derivatives”), if provided or otherwise made available by Intel in source code form, and reproduce the Software, including Derivatives; (ii) display and perform an object code representation of the Software including Your Derivatives to Your customers or partners, with a need to know, only for demonstration and when integrated with and executed by Your Intel-based product or Intel hardware provided by Intel and subject to Your customers or partners entering a written confidentiality agreement in accordance with Section 7 (Confidentiality) herein; and (iii) have the rights in subparts (i) and (ii) performed by contractors working on Your behalf or at Your behest, provided that You remain fully liable to Intel for the actions and inactions of those contractors.

3. LICENSE RESTRICTIONS. All right, title and interest in and to the Software and associated documentation are and will remain the exclusive property of Intel and its licensors or suppliers. Unless expressly permitted under the Agreement, You will not, and will not allow any third party to (i) use, copy, distribute, sell or offer to sell the Software or associated documentation; (ii) modify, adapt, enhance, disassemble, decompile, reverse engineer, change or create derivative works from the Software except and only to the extent as specifically required by mandatory applicable laws or any applicable third party license terms accompanying the Software; (iii) use or make the Software available for the use or benefit of third parties; (iv) use the Software on Your products other than those that include the Intel silicon product(s), platform(s), or software identified in the Software; or (v) publish or provide any Software benchmark or comparison test results. You acknowledge that an essential basis of the bargain in this Agreement is that Intel grants You no licenses or other rights including, but not limited to, patent, copyright, trade secret, trademark, trade name, service mark or other intellectual property licenses or rights with respect to the Software and associated documentation, by implication, estoppel or otherwise, except for the licenses expressly granted above. You acknowledge there are significant uses of the Software in its original, unmodified and uncombined form. You may not remove any copyright notices from the Software.

4. LICENSE TO FEEDBACK. This Agreement does not obligate You to provide Intel with materials, information, comments, suggestions, Your Derivatives or other communication regarding the features, functions, performance or use of the Software (“Feedback”). If any portion of the Software is provided or otherwise made available by Intel in source code form, to the extent You provide Intel with Feedback in a tangible form, You grant to Intel and its affiliates a non-exclusive, perpetual, sublicenseable, irrevocable, worldwide, royalty-free, fully paid-up and transferable license, to and under all of Your intellectual property rights, whether perfected or not, to publicly perform, publicly display, reproduce, use, make, have made, sell, offer for sale, distribute, import, create derivative works of and otherwise exploit any comments, suggestions, descriptions, ideas or other feedback regarding the Software provided by You or on Your behalf.

5. OPEN SOURCE STATEMENT. The Software may include Open Source Software (OSS) licensed pursuant to OSS license agreement(s) identified in the OSS comments in the applicable source code file(s) and/or file header(s) provided with or otherwise associated with the Software. Neither You nor any Original Equipment Manufacturing, Original Device Manufacturing, customer, or distributor may subject any proprietary portion of the Software to any OSS license obligations including, without limitation, combining or distributing the Software with OSS in a manner that subjects Intel, the Software or any portion thereof to any OSS license obligation. Nothing in this Agreement limits any rights under, or grants rights that supersede, the terms of any applicable OSS license.

6. THIRD PARTY SOFTWARE. Certain third party software provided with or within the Software may only be used (a) upon securing a license directly from the software owner or (b) in combination with hardware components purchased from such third party and (c) subject to further license limitations by the software owner. A listing of any such third party limitations is in one or more text files accompanying the Software. You acknowledge Intel is not providing You with a license to such third party software and further that it is Your responsibility to obtain appropriate licenses from such third parties directly.

7. CONFIDENTIALITY. The terms and conditions of this Agreement, exchanged confidential information, as well as the Software are subject to the terms and conditions of the Non-Disclosure Agreement(s) and/or Intel Pre-Release Loan Agreement(s) (referred to herein collectively or individually as “NDA”) entered into by and in force between Intel and You, and in any case no less confidentiality protection than You apply to Your information of similar sensitivity. If You would like to have a contractor perform work on Your behalf that requires any access to or use of Software, You must obtain a written confidentiality agreement from the contractor which contains terms and conditions with respect to access to or use of Software no less restrictive than those set forth in this Agreement, excluding any distribution rights and use for any other purpose, and You will remain fully liable to Intel for the actions and inactions of those contractors. You may not use Intel's name in any publications, advertisements, or other announcements without Intel's prior written consent.

8. NO OBLIGATION; NO AGENCY. Intel may make changes to the Software, or items referenced therein, at any time without notice. Intel is not obligated to support, update, provide training for, or develop any further version of the Software or to grant any license thereto. No agency, franchise, partnership, joint-venture, or employee-employer relationship is intended or created by this Agreement.

9. EXCLUSION OF WARRANTIES. THE SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY EXPRESS OR IMPLIED WARRANTY OF ANY KIND INCLUDING WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, OR FITNESS FOR A PARTICULAR PURPOSE. Intel does not warrant or assume responsibility for the accuracy or completeness of any information, text, graphics, links or other items within the Software.

10. LIMITATION OF LIABILITY. IN NO EVENT WILL INTEL OR ITS AFFILIATES, LICENSORS OR SUPPLIERS (INCLUDING THEIR RESPECTIVE DIRECTORS, OFFICERS, EMPLOYEES, AND AGENTS) BE LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, LOST PROFITS, BUSINESS INTERRUPTION, OR LOST DATA) ARISING OUT OF OR IN RELATION TO THIS AGREEMENT, INCLUDING THE USE OF OR INABILITY TO USE THE SOFTWARE, EVEN IF INTEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME JURISDICTIONS PROHIBIT EXCLUSION OR LIMITATION OF LIABILITY FOR IMPLIED WARRANTIES OR CONSEQUENTIAL OR INCIDENTAL DAMAGES, SO THE ABOVE LIMITATION MAY IN PART NOT APPLY TO YOU. THE SOFTWARE LICENSED HEREUNDER IS NOT DESIGNED OR INTENDED FOR USE IN ANY MEDICAL, LIFE SAVING OR LIFE SUSTAINING SYSTEMS, TRANSPORTATION SYSTEMS, NUCLEAR SYSTEMS, OR FOR ANY OTHER MISSION CRITICAL APPLICATION IN WHICH THE FAILURE OF THE SOFTWARE COULD LEAD TO PERSONAL INJURY OR DEATH. YOU MAY ALSO HAVE OTHER LEGAL RIGHTS THAT VARY FROM JURISDICTION TO JURISDICTION. THE LIMITED REMEDIES, WARRANTY DISCLAIMER AND LIMITED LIABILITY ARE FUNDAMENTAL ELEMENTS OF THE BASIS OF THE BARGAIN BETWEEN INTEL AND YOU. YOU ACKNOWLEDGE INTEL WOULD BE UNABLE TO PROVIDE THE SOFTWARE WITHOUT SUCH LIMITATIONS.

11. TERMINATION AND SURVIVAL. Intel may terminate this Agreement for any reason with thirty (30) days’ notice and immediately if You or someone acting on Your behalf or at Your behest violates any of its terms or conditions. Upon termination, You will immediately destroy and ensure the destruction of the Software or return all copies of the Software to Intel (including providing certification of such destruction or return back to Intel). Upon termination of this Agreement, all licenses granted to You hereunder terminate immediately. All Sections of this Agreement, except Section 2, will survive termination.

12. GOVERNING LAW AND JURISDICTION. This Agreement and any dispute arising out of or relating to it will be governed by the laws of the U.S.A. and Delaware, without regard to conflict of laws principles. The Parties exclude the application of the United Nations Convention on Contracts for the International Sale of Goods (1980). The state and federal courts sitting in Delaware, U.S.A. will have exclusive jurisdiction over any dispute arising out of or relating to this Agreement. The Parties consent to personal jurisdiction and venue in those courts. A Party that obtains a judgment against the other Party in the courts identified in this section may enforce that judgment in any court that has jurisdiction over the Parties.

13. EXPORT REGULATIONS/EXPORT CONTROL. You agree that neither You nor Your subsidiaries will export/re-export the Software, directly or indirectly, to any country for which the U.S. Department of Commerce or any other agency or department of the U.S. Government or the foreign government from where it is shipping requires an export license, or other governmental approval, without first obtaining any such required license or approval. In the event the Software is exported from the U.S.A. or re-exported from a foreign destination by You or Your subsidiary, You will ensure that the distribution and export/re-export or import of the Software complies with all laws, regulations, orders, or other restrictions of the U.S. Export Administration Regulations and the appropriate foreign government.

14. GOVERNMENT RESTRICTED RIGHTS. The Software is a commercial item (as defined in 48 C.F.R. 2.101) consisting of commercial computer software and commercial computer software documentation (as those terms are used in 48 C.F.R. 12.212). Consistent with 48 C.F.R. 12.212 and 48 C.F.R 227.7202-1 through 227.7202-4, You will not provide the Software to the U.S. Government. Contractor or Manufacturer is Intel Corporation, 2200 Mission College Blvd., Santa Clara, CA 95054.

15. ASSIGNMENT. You may not delegate, assign or transfer this Agreement, the license(s) granted or any of Your rights or duties hereunder, expressly, by implication, by operation of law, or otherwise and any attempt to do so, without Intel’s express prior written consent, will be null and void. Intel may assign, delegate and transfer this Agreement, and its rights and obligations hereunder, in its sole discretion.

16. ENTIRE AGREEMENT; SEVERABILITY. The terms and conditions of this Agreement and any NDA with Intel constitute the entire agreement between the Parties with respect to the subject matter hereof, and merge and supersede all prior or contemporaneous agreements, understandings, negotiations and discussions. Neither Party will be bound by any terms, conditions, definitions, warranties, understandings, or representations with respect to the subject matter hereof other than as expressly provided herein. In the event any provision of this Agreement is unenforceable or invalid under any applicable law or applicable court decision, such unenforceability or invalidity will not render this Agreement unenforceable or invalid as a whole, instead such provision will be changed and interpreted so as to best accomplish the objectives of such provision within legal limits.

17. WAIVER. The failure of a Party to require performance by the other Party of any provision hereof will not affect the full right to require such performance at any time thereafter; nor will waiver by a Party of a breach of any provision hereof constitute a waiver of the provision itself.

18. PRIVACY.  YOUR PRIVACY RIGHTS ARE SET FORTH IN INTEL’S PRIVACY NOTICE, WHICH FORMS A PART OF THIS AGREEMENT. PLEASE REVIEW THE PRIVACY NOTICE AT HTTP://WWW.INTEL.COM/PRIVACY TO LEARN HOW INTEL COLLECTS, USES AND SHARES INFORMATION ABOUT YOU.