The following information addresses the usage of the different components and outlines the system or platform requirements needed to properly support the usage of the Intel® VROC family of products, including Intel® VROC (VMD NVMe* RAID), Intel® VROC (SATA RAID) and Intel® VROC (Non-VMD NVMe* RAID). To learn about specific Pre-OS environment features supported by each Intel® VROC sub-product, refer to the following resources:
Intel® VROC Features | Pre-OS management is one of the features of the Intel® VROC family of products. To learn about other features of Intel® VROC, refer to the Intel® Virtual RAID on CPU (Intel® VROC) Technical Product Specification for Windows*. |
The Intel® VROC family of products provides UEFI drivers to support the UEFI BIOS environment. The UEFI drivers provide an HII interface to support a BIOS level menu-driven configuration tool that is accessed in the BIOS setup. The Intel® VROC UEFI images included support for Intel® Volume Management Device (Intel® VMD) and SATA/sSATA/tSATA controllers set to RAID mode.
Specification References | This information is not intended to be a go-to reference for the UEFI specification. The specification is owned by the UEFI working group and detailed information regarding UEFI can be found in documents published by that organization. The Intel® VROC UEFI driver implementation conforms to the UEFI specification and is in compliance with version 2.3.1. At the time that this product was developed, the below specifications were the latest and the versions that were used in the design. Intel® VROC 7.6 Pre-OS is also compliant with version 2.7. |
An HII-compliant user interface is provided for the pre-boot configuration of the RAID system.
The Intel® VROC UEFI driver FORMSET_GUID is:
FORMSET_GUID {0xd37bcd57, 0xaba1, 0x44e6, {0xa9, 0x2c, 0x89, 0x8b, 0x15, 0x8f, 0x2f, 0x59}} {D37BCD57-ABA1-44e6-A92C-898B158F2F59}
This section covers what the BIOS vendor is required to accomplish to ensure that the platform is compatible with the Intel® VROC UEFI driver. For information on what the Intel® VROC UEFI driver was designed to support, refer to the Relevant Specifications section in the Intel® Virtual RAID on CPU (Intel® VROC) Technical Product Specification for Windows*.
The Intel® VROC UEFI drivers require the following protocols/functions to be provided by the BIOS:
EFI_BOOT_SERVICES:
EFI_RUNTIME_SERVICES:
Other Protocols:
If the BIOS vendor plans to use the Intel® VROC HII-compliant UI, then the following protocols/functions are required to be provided by the BIOS:
The Intel® VROC UEFI drivers provide the following protocols:
Platform UEFI BIOS
Download and Integrate the Intel® VROC UEFI Package
Verify Compliance
There are tools provided to help verify that this process has been completed successfully. Reference Intel® Virtual RAID on CPU (Intel® VROC) VMD NVMe* RAID Pre-OS Components and Intel® Virtual RAID on CPU (Intel® VROC) SATA RAID Pre-OS Components for these files and instructions.
The following UEFI 2.3.1 SCT tests will appear as fail in reports generated using the Report Generation tool of the SCT framework. The Report Generation tool is the only method that should be used to determine if tests fail. Do not determine test failing test results by viewing the raw log files. The Report Generation tool will discard any test results that failed due to an invalid system configuration.
Bootable Image Support Test\Block IO Protocol Test
EFI_BLOCK_IO_PROTOCOL.Reset - Reset() returns EFI_SUCCESS with ExtendedVerification being TRUE.
EFI_BLOCK_IO_PROTOCOL.Reset - Reset() returns EFI_SUCCESS with ExtendedVerification being FALSE.
EFI_BLOCK_IO_PROTOCOL.ReadBlocks - ReadBlocks() returns EFI_SUCCESS with valid parameter.
EXT_SCSI_PASSTHRU_PROTOCOL Test
EFI_ATA_PASS_THRU_PROTOCOL.BuildDevicePath - call BuildDevicePath with NULL DevicePath.
HII Test\HII Config Access Protocol Test
EFHII_CONFIG_ACCESS_PROTOCOL.RouteConfig - RouteConfig() returns EFI_NOT_FOUND if no target was defined.
HII_CONFIG_ACCESS_PROTOCOL.RouteConfig - RouteConfig() returns EFI_INVALID_PARAMETER with configuration been NULL.
HII_CONFIG_ACCESS_PROTOCOL.RouteConfig- RouteConfig() returns EFI_SUCCESS with valid parameter.
The Intel® VROC family of products provides support for the UEFI Health Protocol as defined in the UEFI specifications listed above. Intel® VROC provides support for EFI_DRIVER_HEALTH_PROTOCOL.GetHealthStatus(). The types of health status messages that Intel® VROC will report will match those messages that are displayed in the Intel® VROC UEFI HII. A health status of failed will be returned when:
Support for EFI_DRIVER_HEALTH_PROTOCOL.Repair() is currently not supported.
There are three ways to determine the version of the Intel® VROC UEFI driver(s) integrated into the system BIOS. Use the following procedure to determine the version.
When the platform BIOS is configured to boot from the Intel® VROC UEFI, to obtain the driver version or to verify that the UEFI driver is loaded just enter into the BIOS setup or press the hot key to enter into the Boot Option menu. Boot into a UEFI shell environment and type the command Shell:>drivers.
The Intel® VROC UEFI driver will be shown along with the version, where xx.x.x.xxxx will be replaced with the actual UEFI OROM version. For example: “CD 0000000B B - - 1 2 Intel(R) VROC xx.x.x.xxxx SATA Driver”.
The Intel® VROC family of products includes the support for the Intel® VROC (SATA RAID) UEFI driver to report the physical port for devices connected to the SATA/sSATA controllers. In some of the releases of the Intel® VROC UEFI driver, the device information provided (i.e., to the UEFI shell environment) was based off the enumeration values created during the discovery of the devices attached. To support a manufacturing environment that relies on this information to identify the physical port the device is connected to, the UEFI driver now reports out the physical port value instead of the enumerated value. The data is displayed as a set of three values in the following order: X-Y-Z.
The Intel® VROC HII interface allows users to create bootable RAID volumes. This procedure should only be used for a newly built system or reinstall of the operating system. Refer to the instructions on how to create a RAID volume from the Intel® VROC HII interface in the Intel® Virtual RAID on CPU (Intel® VROC) Pre-Operating System (Pre-OS) Getting Started Guide.
The Intel® VROC (SATA RAID) and Intel® VROC (VMD NVMe* RAID) drivers can and should be used to install the Windows* operating system when the platform is configured for RAID mode. For conditions where the Windows* operating system is already installed, the Intel® VROC drivers can be loaded/installed from the operating system environment.
Follow these steps to install the Pre-OS driver during the Windows* OS installation:
The Intel® VROC family of products supports the ability to select any volume as the operating system boot volume, provided the volume size meets the minimum size requirements for the operating system being installed. The operating system installer will be able to install the operating system onto the specified RAID volume.
The Intel® VROC Pre-OS UEFI HII provides support for the ability to attempt to recover a failed Intel® VROC RAID volume. When a failed RAID volume is encountered during boot, the option is made available in the Intel® VROC HII page for which the user can select. This is a multi-step process.
Warning | Intel makes no guarantee of successful recovery from a failed state using this option. This must be treated as a last chance effort and there is no guarantee that there won’t be some data loss. Intel always recommends recovering a failed RAID volume by recreating the RAID volume from scratch and restore the data from the latest platform image backup. |
This feature is accessed through the Intel® VROC HII when the platform boots with a failed Intel® VROC RAID volume present. It is important to note that for this to work, there must be enough Intel® VROC RAID member drives present to place the failed RAID volume back into a degraded state. The process to attempt to recover the failed RAID volume begins by booting the platform into the BIOS setup and then navigating into the Intel® VROC HII. By selecting the failed volume, an option will be available to force the volume back into a degraded (or normal) state. This will expose the next option to specify the Intel® VROC RAID volume member drives to enable this action. Once the necessary drives are selected, the RAID volume will be forced back into a degraded state. From that state the RAID volume can be rebuilt.
The following example shows how a failed Intel® VROC RAID volume is recovered. In this example, the RAID volume configuration is a four-drive RAID 10 volume. In this example, Disk 0 is removed (putting the RAID volume into a degraded state) followed by Disk 1 to simulate a platform hardware failure scenario. This platform behavior will cause the RAID 10 volume into a failed state. The example steps through the process of reinserting the missing disks and the steps to recover the failed volume. This process does not guarantee that all the data can be recovered.
Intel® VROC 7.7 provides limited support for the UEFI Firmware Management Protocol (FMP) as outlined in UEFI Specification version 2.9. See more in New Features Introduced with the Intel® Virtual RAID on CPU (Intel® VROC) 7.7 Release for Windows*.
The Intel® VROC (VMD NVMe* RAID) UEFI driver will respond to a GetImageInfo command with EFI_FIRMWARE_IMAGE_DESCRIPTORS filled in the following way:
Attribute | Value |
IMAGE_ATTRIBUTE_IMAGE_UPDATABLE | If this is the first firmware slot and FRMW bit 0 is set, then attribute cleared to 0, otherwise attribute set to 1. |
IMAGE_ATTRIBUTE_RESET_REQUIRED | Cleared. |
IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED | Cleared. |
IMAGE_ATTRIBUTE_IN_USE | If this firmware slot is active (pointed by AFI 2:0 in NVMe* specification), then set, otherwise cleared. |
IMAGE_ATTRIBUTE_UEFI_IMAGE | Cleared. |
IMAGE_ATTRIBUTE_DEPENDENCY | Cleared. |
Bits | Value (Physical Location of NVMe* Drive) |
63:32 | 0 |
31:24 | CPU Socket Number |
23:16 | VMD Controller Number |
15:8 | Root Port Offset |
7:0 | PCIe Slot Number |
The Intel® VROC (VMD NVMe* RAID) UEFI driver will return as many EFI_FIRMWARE_IMAGE_DESCRIPTORS as the number of NVMe* firmware slots with non-zero firmware revisions.
The Intel® VROC (VMD NVMe* RAID) UEFI driver will return PackageVersion equal to 0xFFFFFFFF and PackageVersionName equal to NULL pointer.
When the Intel® VROC (VMD NVMe* RAID) UEFI driver receives a SetImage command, it will update the NVMe* SSDs with the image provided.
Firmware Activation
When Intel® VROC (VMD NVMe* RAID) receives a SetImage function for an NVMe* SSD that does not support firmware activation without reset, Intel® VROC will send the firmware image to the NVMe* SSD; activate the firmware and then reset the NVMe* SSD (Controller Level Reset).
When Intel® VROC (VMD NVMe* RAID) receives a SetImage function for an NVMe* SSD that does support firmware activation without reset, Intel® VROC will send the firmware image to the NVMe* drive and activate the new firmware immediately.
Firmware Update Status
Intel® VROC (VMD NVMe* RAID) will report the firmware progress update in multiple stages:
The Intel® VROC (SATA RAID) UEFI driver will respond to a GetImageInfo command. It will respond with EFI_FIRMWARE_IMAGE_DESCRIPTORS filled in the following way:
Attribute | Value |
IMAGE_ATTRIBUTE_IMAGE_UPDATABLE | If DOWNLOAD_MICROCODE or DOWNLOAD_MICROCODE_DMA is supported, then attribute set to 1, otherwise attribute cleared to 0. |
IMAGE_ATTRIBUTE_RESET_REQUIRED | Cleared. |
IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED | Cleared. |
IMAGE_ATTRIBUTE_IN_USE | Set. |
IMAGE_ATTRIBUTE_UEFI_IMAGE | Cleared. |
IMAGE_ATTRIBUTE_DEPENDENCY | Cleared. |
The Intel® VROC (SATA RAID) UEFI driver will return one EFI_FIRMWARE_IMAGE_DESCRIPTOR.
The Intel® VROC (SATA RAID) UEFI driver will return PackageVersion equal to 0xFFFFFFFF and PackageVersionName equal to NULL pointer.
When Intel® VROC (SATA RAID) receives a SetImage command, Intel® VROC will update the SATA drive with the image provided. Intel® VROC will select ATA_DOWNLOAD_MICROCODE subcommand based on the drive capabilities, the VendorCode argument and the _ATA_DM_SUBCOMMAND_SELECTION_POLICY to update the firmware.
If the SetImage command contains invalid parameters, Intel® VROC will return the EFI_INVALID_PARAMETER status.
Firmware Update Progress
Intel® VROC (SATA RAID) will report the firmware progress update in multiple stages, reported proportionally to the number of image chunks already sent to the drive, up to 100%, when the ATA_DOWNLOAD_MICROCODE subcommand is 03h.
When the ATA_DOWNLOAD_MICROCODE subcommands are 0Eh and 0Fh, Intel® VROC (SATA RAID) will report the firmware update progress in multiple stages:
Intel® VROC will display the physical drive location information in UEFI as explained in New Features Introduced with the Intel® Virtual RAID on CPU (Intel® VROC) 8.0 Release for Windows*.
The Intel® VROC (VMD NVMe* RAID) UEFI driver will process NVMe* SSDs that support multiple namespaces, by reporting the first namespace as the one that Intel® VROC (VMD NVMe* RAID) will recognize.
Intel® VROC provides support for platform manufacturers to disable the Locate LED functionality within the Intel® VROC LED Management. By enabling the feature, the platform manufacturers can use their own tools to initiate a Locate LED functionality within their platform. The mechanism that is used to accomplish this feature through the EFI variable is called VrocUefiConfig. When this feature is enabled, the Locate LED option will be hidden in the Intel® VROC UEFI HII menus.
The description of the VrocUefiConfig interface to be able to disable Intel® VROC LED Management is as follows:
#define VROC_UEFI_CONFIG_STR L"VrocUefiConfig"
#define VROC_UEFI_CONFIG_SATA_HII_DISABLE_LOCATE_LED 0x1
#define VROC_UEFI_CONFIG_VMD_HII_DISABLE_LOCATE_LED 0x2
typedef UINT64 VrocUefiConfig;
To disable Locate LED from HII, customers must set this variable via SetVariable() (refer to UEFI_Spec_2_7.pdf, section 8.2):
typedef
EFI_STATUS
SetVariable (
IN CHAR16 *VariableName,
IN EFI_GUID *VendorGuid,
IN UINT32 Attributes,
IN UINTN DataSize,
IN VOID *Data
);
SetVariable() example call which disables Locate LED from both Intel® VROC (SATA RAID) and Intel® VROC (VMD NVMe* RAID) HII:
EFI_GUID IntelVrocGuid = { 0x193dfefa, 0xa445, 0x4302, { 0x99, 0xd8, 0xef, 0x3a, 0xad, 0x1a, 0x04, 0xc6 } };
VrocUefiConfig = VROC_UEFI_CONFIG_SATA_HII_DISABLE_LOCATE_LED | VROC_UEFI_CONFIG_VMD_HII_DISABLE_LOCATE_LED;
SetVariable(
VROC_UEFI_CONFIG_STR,
&IntelVrocGuid,
EFI_VARIABLE_BOOTSERVICE_ACCESS,
sizeof(vrocUefiConfig),
&vrocUefiConfig
);
The Intel® VROC UEFI driver HII will read the VrocUefiConfig EFI variable only once, when entering the Disk Info Form for the first time. The Disk Info Form is the form where Locate LED can be located. That means that SetVariable() does not have to be called before loading the Intel® VROC UEFI drivers, because all drivers will be loaded and initialized prior to the user entering the Intel® VROC HII. For this, there are no additional depex files needed and SetVariable() may be called any time during BIOS initialization.
When the VrocUefiConfig EFI variable is not set or set to a value of 0, the Intel® VROC UEFI drivers work as usual and Intel® VROC will manage the Locate LED process.
The Intel® VROC RAID configuration tools (RCfg) will report an error message when VrocUefiConfig states that Intel® VROC LED Management is not to be supported.