Patent ID: 12216946

DETAILED DESCRIPTION

For purposes of this disclosure, an information handling system may include any instrumentality or aggregate of instrumentalities operable to compute, calculate, determine, classify, process, transmit, receive, retrieve, originate, switch, store, display, communicate, manifest, detect, record, reproduce, handle, or utilize any form of information, intelligence, or data for business, scientific, control, or other purposes. For example, an information handling system may be a personal computer (e.g., desktop or laptop), tablet computer, mobile device (e.g., personal digital assistant (PDA) or smart phone), server (e.g., blade server or rack server), a network storage device, or any other suitable device and may vary in size, shape, performance, functionality, and price. The information handling system may include random access memory (RAM), one or more processing resources such as a central processing unit (CPU) or hardware or software control logic, ROM, and/or other types of nonvolatile memory. Additional components of the information handling system may include one or more disk drives, one or more network ports for communicating with external devices as well as various input and output (I/O) devices, such as a keyboard, a mouse, touchscreen and/or a video display. The information handling system may also include one or more buses operable to transmit communications between the various hardware components.

In one embodiment, IHS100,FIG.1, includes a processor102, which is connected to a bus104. Bus104serves as a connection between processor102and other components of IHS100. An input device106is coupled to processor102to provide input to processor102. Examples of input devices may include keyboards, touchscreens, pointing devices such as mouses, trackballs, and trackpads, and/or a variety of other input devices known in the art. Programs and data are stored on a mass storage device108, which is coupled to processor102. Examples of mass storage devices may include hard discs, optical disks, magneto-optical discs, solid-state storage devices, and/or a variety of other mass storage devices known in the art. IHS100further includes a display110, which is coupled to processor102by a video controller112. A system memory114is coupled to processor102to provide the processor with fast storage to facilitate execution of computer programs by processor102. Examples of system memory may include random access memory (RAM) devices such as dynamic RAM (DRAM), synchronous DRAM (SDRAM), solid state memory devices, and/or a variety of other memory devices known in the art. In an embodiment, a chassis116houses some or all of the components of IHS100. It should be understood that other buses and intermediate circuits can be deployed between the components described above and processor102to facilitate interconnection between the components and the processor102.

Referring now toFIG.2, an embodiment of a computing device200is illustrated that may provide the software RAID/management communication system of the present disclosure. In an embodiment, the computing device200may be provided by the IHS100discussed above with reference toFIG.1and/or may include some or all of the components of the IHS100, and in specific examples may be provided by a server device. However, while illustrated and discussed as being provided by a server device, one of skill in the art in possession of the present disclosure will recognize that the functionality of the computing device200discussed below may be provided by other devices that are configured to operate similarly as the computing device200discussed below. In the illustrated embodiment, the computing device200includes a chassis201that houses the components of the computing device200, only some of which are illustrated and described below.

In the embodiments illustrated and described below, the chassis201houses a plurality of storage devices202a,202b, and up to202c. However, while a plurality of storage devices202a-202care illustrated and described, one of skill in the art in possession of the present disclosure will appreciate how embodiments in which a single storage device is provided in the computing device200will fall within the scope of the present disclosure as well. In a specific example, the storage devices202a-202cmay be provided by Non-Volatile Memory express (NVMe) storage devices, although one of skill in the art in possession of the present disclosure will appreciate how other types of storage devices (and/or other types of devices with memory subsystem similar to the storage device memory subsystems described below) may allow for the software RAID/management communication functionality described below, and thus will fall within the scope of the present disclosure as well.

The chassis201may also house a processing system (not illustrated, but which may include the processor102(e.g., a Central Processing Unit (CPU)) discussed above with reference toFIG.1) and a memory system (not illustrated, but which may include the memory114(e.g., Dynamic Random Access Memory (DRAM)) discussed above with reference toFIG.1) that is coupled to the processing system and that includes instructions that, when executed by the processing system, cause the processing system to provide a software RAID engine204that is configured to perform the functionality of the software RAID engines, software RAID subsystems, and/or computing devices discussed below. As illustrated, the software RAID engine204is coupled to each of the storage devices202a-202c(e.g., via a coupling between the processing system and the storage devices202a-202c).

To provide a specific example, the software RAID engine204may be provided by dedicated hardware in the computing device200(e.g., a software RAID processing system and software RAID memory system) and may be configured to provide data storage virtualization technology and perform any of a variety of RAID operations that combine physical storage device(s) (e.g., the storage devices202a-202c) into logical storage device(s) for the purposes of data redundancy, perform improvements, and/or other RAID services that would be apparent to one of skill in the art. However, the inventors of the present disclosure are developing a software RAID engine that may be included in an operating system provided in a computing device, and thus software RAID engines integrated into an operating system provided by a CPU and DRAM in the computing device200are envisioned as falling within the scope of the present disclosure as well. However, while a specific software RAID engine and software RAID functionality has been described, one of skill in the art in possession of the present disclosure will appreciate how the software RAID engine of the present disclosure may be provided in a variety of manners to perform a variety of software RAID functionality while remaining within the scope of the present disclosure as well.

The chassis201may also house a management subsystem that, in the illustrated embodiment, is provided by a Baseboard Management Controller (BMC) device206such as, for example, an integrated DELL® Remote Access Controller (iDRAC) device that is included in server devices available from DELL® Inc. of Round Rock, Texas, United States, and that is configured to provide an out-of-band management platform that utilizes resources that are primarily separate from the resources of the server device, and may provide a browser-based interface and/or Command Line Interface (CLI) for managing and monitoring hardware in the server device. As illustrated, the BMC device206is coupled to each of the storage devices202a-202c. However, while a specific management subsystem is illustrated and described, one of skill in the art in possession of the present disclosure will appreciate how other management subsystems will fall within the scope of the present disclosure as well. Furthermore, while a specific computing device200has been illustrated and described, one of skill in the art in possession of the present disclosure will recognize that computing devices (or other devices operating according to the teachings of the present disclosure in a manner similar to that described below for the computing device200) may include a variety of components and/or component configurations for providing conventional computing device functionality, as well as the software RAID/management communication functionality discussed below, while remaining within the scope of the present disclosure as well.

Referring now toFIG.3, an embodiment of a Baseboard Management Controller (BMC) device300is illustrated that may provide the BMC device206discussed above with reference toFIG.2. As such, the BMC device300may be provided by the IHS100discussed above with reference toFIG.1and/or may include some or all of the components of the IHS100, and in specific example, may be provided by the iDRAC device described above. Furthermore, while illustrated and discussed as being provided by a BMC device/iDRAC device, one of skill in the art in possession of the present disclosure will recognize that the functionality of the BMC device300discussed below may be provided by other management subsystems that are configured to operate similarly as the BMC device300discussed below. In the illustrated embodiment, the BMC device300includes a chassis302that supports the components of the BMC device300, only some of which are illustrated and described below. For example, the chassis302may support a BMC processing system (not illustrated, but which may be similar to the processor102discussed above with reference toFIG.1) and a BMC memory system (not illustrated, but which may be similar to the memory114discussed above with reference toFIG.1) that is coupled to the BMC processing system and that includes instructions that, when executed by the BMC processing system, cause the BMC processing system to provide a BMC engine304that is configured to perform the functionality of the BMC engines, management subsystems, and/or BMC devices discussed below.

The chassis302may also house a storage system (not illustrated, but which may include the storage108discussed above with reference toFIG.1) that is coupled to the BMC engine304(e.g., via a coupling between the storage system and the processing system) and that includes a BMC database306that is configured to store any of the information utilized by the BMC engine304discussed below. The chassis302may also house a communication system308that is coupled to the BMC engine304(e.g., via a coupling between the communication system308and the BMC processing system) and that may be provided by a Network Interface Controller (NIC), wireless communication systems (e.g., BLUETOOTH®, Near Field Communication (NFC) components, WiFi components, etc.), and/or any other communication components that would be apparent to one of skill in the art in possession of the present disclosure. However, while a specific BMC device300has been illustrated and described, one of skill in the art in possession of the present disclosure will recognize that management subsystems (or other devices operating according to the teachings of the present disclosure in a manner similar to that described below for the BMC device300) may include a variety of components and/or component configurations for providing conventional management device functionality, as well as the software RAID/management communication functionality discussed below, while remaining within the scope of the present disclosure as well.

Referring now toFIG.4, an embodiment of a storage device400is illustrated that may provide any or each of the storage devices202a-202cdiscussed above with reference toFIG.2. As such, the storage device400may be provided by an NVMe storage device in specific examples. However, while illustrated and discussed as being provided by an NVMe storage device, one of skill in the art in possession of the present disclosure will recognize that the functionality of the storage device400discussed below may be provided by other types of devices that are configured to operate similarly as the storage device400discussed below in order to allow for the software RAID/management communication functionality described below. In the illustrated embodiment, the storage device400includes a chassis402that houses the components of the storage device400, only some of which are illustrated and described below.

For example, the chassis402may house a storage processing system (not illustrated, but which may be similar to the processor102discussed above with reference toFIG.1and may be included in a storage controller device) and a storage memory system (not illustrated, but which may be similar to the memory114discussed above with reference toFIG.1and may be included in a storage controller device) that is coupled to the storage processing system and that includes instructions that, when executed by the storage processing system, cause the storage processing system to provide a storage engine404that is configured to perform any of a variety of conventional storage functionality (e.g., NVMe storage functionality) that would be apparent to one of skill in the art in possession of the present disclosure, as well as any of the functionality of the storage engines and/or storage devices described below. The chassis402may also house a storage subsystem (not illustrated, but which may be similar to the storage108discussed above with reference toFIG.1) that is coupled to the storage engine404(e.g., via a coupling between the storage subsystem and the storage processing system) and that includes a storage database406that is configured to store any of the information utilized by the storage engine404discussed below.

The chassis402may also house a storage device memory subsystem that, in the embodiments illustrated and described below, is provided by a Controller Memory Buffer (CMB) device408in an NVMe storage device that is conventionally utilized by a host in a server device to provide Input/Output (I/O) commands for the NVMe storage device in a controller memory subsystem of an NVMe controller in that NVMe storage device, to perform Direct Memory Access (DMA) operations, to store non-persistent data, and/or provide other CMB functionality known in the art, and one of skill in the art in possession of the present disclosure with appreciate how the CMB device408may be configured for use with general purpose memory read/write operations to provide those I/O commands. However, while illustrated and described as being provided by a CMB device, one of skill in the art in possession of the present disclosure will appreciate how other memory subsystems in other devices may be utilized to enable the software RAID/management communication functionality described below, and thus will fall within the scope of the present disclosure as well.

The chassis402may also house a communication system410that is coupled to the storage engine404(e.g., via a coupling between the communication system408and the processing system) and the CMB device408and that may be provided by any of a variety of storage device communication components that would be apparent to one of skill in the art in possession of the present disclosure. However, while a specific storage device400has been illustrated and described, one of skill in the art in possession of the present disclosure will recognize that other types of storage devices (or other types of devices operating according to the teachings of the present disclosure in a manner similar to that described below for the storage device400) may include a variety of components and/or component configurations for providing conventional device functionality, as well as the software RAID/management communication functionality discussed below, while remaining within the scope of the present disclosure as well.

Referring now toFIGS.5A and5B, an embodiment of a method500for providing communication between a software Redundant Array of Independent Disk (RAID) subsystem and a management subsystem in a computing device is illustrated. As discussed below, the systems and methods of the present disclosure utilize a storage device memory subsystem in a storage device for communications between a software RAID subsystem and a management subsystem. For example, the software RAID/management communication system of the present disclosure may include a chassis housing a software Redundant Array of Independent Disk (RAID) subsystem and a management subsystem that are each coupled to a storage device having a storage device memory subsystem. The software RAID subsystem provides a software RAID information request in the storage device memory subsystem that requests the management subsystem provide software RAID information associated with the operation of a software RAID provided by the software RAID subsystem, the software RAID subsystem then periodically accesses the storage device memory subsystem and, when the software RAID subsystem determines that the management subsystem has provided a management information response in the storage device memory subsystem, the software RAID subsystem retrieves the software RAID information that was provided in the storage device memory subsystem by the management subsystem. As such, critical, real-time data may be exchanged between software RAID subsystems and management subsystems without the need to rely on changes/updates to an SMBIOS, BIOS, and/or IPMI and the corresponding time delays required for such changes/updates.

The method500begins at block502where a software RAID subsystem configures a storage device memory subsystem for communication with a management subsystem. In an embodiment, prior to the method500, a “software RAID/management communication” memory space in the CMB device408of the storage device202a/400may be reserved for software RAID subsystem/management subsystem communications. For example, the software RAID/management communication memory space may be mapped to a “software RAID/management communication” Base Address Register (BAR), and Controller Memory Buffer LOCation (CMBLOC) registers may store information identifying a mapped “software RAID/management communication” BAR number and “software RAID/management communication” memory space offset in the CMB device408of the storage device202a/400for the software RAID/management communication memory space. As will be appreciated by one of skill in the art in possession of the present disclosure, the software RAID/management communication BAR number and software RAID/management communication memory space offset in the CMBLOC registers may be utilized by the software RAID engine204and the BMC engine304to establish communications.

As will be appreciated by one of skill in the art in possession of the present disclosure, a storage device provider of the storage device (e.g., a storage device “vendor”) may provide vendor-specific memory address areas (e.g., BAR0 and/or BAR1) that may be utilized by the manufacturer of the computing device200to provide the software RAID/management communication memory space in the CMB device408of the storage device202a/400. However, in some examples, there may be restrictions on the use of those vendor-specific memory address areas (e.g., restrictions on PCIe read/write operations), and thus the use of other BARs to provide the software RAID/management communication memory space in the CMB device408of the storage device202a/400will fall within the scope of the present disclosure as well.

For example, as will be appreciated by one of skill in the art in possession of the present disclosure, the CMBLOC registers discussed above may store information identifying a “conventional” CMB memory space offset for a conventional CMB memory space in the CMB device408of the storage device202a/400that may be used by the storage device202a/400for conventional CMB operations, and the software RAID/management communication memory space of the present disclosure may be located inside the conventional CMB memory space that begins at the conventional CMB memory space offset. To provide a specific example, if the conventional CMB memory space offset is provided at a 0x100 memory address in the CMB device408of the storage device202a/400included in BAR2 (e.g., outside of the vendor-specific memory address areas BAR0 and BAR1), and if the software RAID/management communication memory space offset is 0x200 with a 0x300 size requirement for the software RAID/management communication memory space, then software RAID/management communication memory space may be provided between the 0x300 address and the 0x600 address in the CMB device408included in BAR2. However, while a specific example of the use of non-vendor-specific memory address areas for the software RAID/management communication memory space has been described, one of skill in the art in possession of the present disclosure will appreciate how the software RAID/management communication memory space may be provided in a variety of manners that will fall within the scope of the present disclosure as well.

In any of the embodiments discussed above, the software RAID/management communication memory space (e.g., the software RAID/management communication memory space offset and the size of the software RAID/management communication memory space) may be identified to the software RAID engine204and the BMC engine304in the BMC device206/300during or prior to the method500in order to enable use of the software RAID/management communication memory space by the software RAID engine204and the BMC engine304. In addition, the software RAID/management communication memory space (e.g., the software RAID/management communication memory space offset and the size of the software RAID/management communication memory space) may be identified to a host (e.g., an operating system) in the computing device200to prevent use of the software RAID/management communication memory space by the host. As such, one of skill in the art in possession of the present disclosure will appreciate how the software RAID/management communication memory space in the CMB device408may be configured in any of a variety of manners that ensure that it is not utilized for purposes other than the software RAID/management communications described below.

With reference toFIGS.6A and6B, in an embodiment of block502, the software RAID engine204in the computing device200may perform storage device memory subsystem configuration operations600that include configuring the CMB device408of the storage device202a/400(e.g., the software RAID/management communication memory space discussed above) via the communication system410in the storage device202a/400with a header602, a software RAID request queue604a, a software RAID response queue604b, a BMC request queue606a, a BMC response queue606b, a response buffer608, and/or any other storage device memory subsystem elements that one of skill in the art in possession of the present disclosure would recognize as providing for the functionality described below.

For example, in response to initialization of the computing device200, the software RAID engine204(e.g., a software RAID driver) may load, the storage device202a(e.g., an NVMe storage device) may initialize, the CMB device408in the storage device202a/400may be enabled, and the software RAID engine204may create the software RAID request queue604a, the software RAID response queue604b, the BMC request queue606a, and the BMC response queue606bin the software RAID/management communication memory space of the CMB device408. The software RAID engine204may then provide and/or update the header602in the software RAID/management communication memory space of the CMB device408with queue address information (e.g., queue base addresses for the software RAID request/response queues and the BMC request/response queues discussed above), CMB device ready information (e.g., indicating that the software RAID/management communication memory space of the CMB device408is ready for use), authentication information (e.g., a signature, key, or other authentication information that may be authenticated by the BMC device206/300as discussed below), head/tail information (e.g., initially set to “0/0” as discussed below), and/or any other information that would be apparent to one of skill in the art in possession of the present disclosure.

As will be appreciated by one of skill in the art in possession of the present disclosure, the header602configured in the software RAID/management communication memory space of the CMB device408of the storage device202a/400may store any information that is required to use the software RAID/management communication memory space as described below, including queue numbering information, the queue address information discussed above, information about a number of queues, basic communication data, the CMB device ready information discussed above, the head/tail information discussed above, and/or any other information that one of skill in the art in possession of the present disclosure would recognize as enabling the functionality described below. However, while a specific example of a header and the data included therein that enable communications via the software RAID/management communication memory space of the CMB device408is provided above, one of skill in the art in possession of the present disclosure will appreciate how communications via the software RAID/management communication memory space of the CMB device408may be enabled in a variety of manners that will fall within the scope of the present disclosure as well.

As discussed in further detail below, in a specific example, the software RAID request queue604aconfigured in the software RAID/management communication memory space of the CMB device408of the storage device202a/400may provide a management queue (e.g., rather than an Input/Output (I/O) queue) for the submission of software RAID information requests by the software RAID engine204in the computing device200, while the software RAID response queue604bconfigured in the software RAID/management communication memory space of the CMB device408may provide a management queue (e.g., rather than an I/O queue) for submission of software RAID information responses to software RAID information requests by the BMC engine304in the BMC device206/300in the computing device200. As such, the software RAID request queue604aand the software RAID response queue604bmay include any management queue features that one of skill in the art in possession of the present disclosure would recognize as providing for the functionality described below.

As also discussed in further detail below, in a specific example, the BMC request queue606aconfigured in the software RAID/management communication memory space of the CMB device408of the storage device202a/400may provide a management queue (e.g., rather than an (I/O) queue) for the submission of management information requests by the BMC engine304in the BMC device206/300in the computing device200, while the BMC response queue606bconfigured in the software RAID/management communication memory space of the CMB device408may provide a management queue (e.g., rather than an I/O queue) for submission of management information responses to management information requests by the software RAID engine204in the computing device200. As such, the BMC request queue606aand the BMC response queue606bmay include any management queue features that one of skill in the art in possession of the present disclosure would recognize as providing for the functionality described below.

As will be appreciated by one of skill in the art in possession of the present disclosure, in response to configuring the software RAID request/response queues and the BMC request/response queues, the software RAID engine204may update any associated queue information in the header602of the CMB device408of the storage device202a/400. However, while specific software RAID request/response queues and the BMC request/response queues are illustrated and described herein, one of skill in the art in possession of the present disclosure will appreciate how different numbers and/or configurations of the management queues described herein may be provided in the software RAID/management communication memory space of the CMB device408while remaining within the scope of the present disclosure as well. For example, one of skill in the art in possession of the present disclosure will appreciate how a minimum of one management queue pair may be provided to allow for the exchange of requests and responses between the software RAID engine204and the BMC engine304in the BMC device206/300while remaining within the scope of the present disclosure as well.

As discussed in further detail below, in a specific example, the response buffer608configured in the software RAID/management communication memory space of the CMB device408of the storage device202a/400may provide for the provisioning and retrieval of software RAID information requested by the software RAID engine204in the computing device200, as well as the provisioning and retrieval of management information requested by the BMC engine304in the BMC device206/300in the computing device200. However, while a specific example of a response buffer is provided herein, one of skill in the art in possession of the present disclosure will appreciate that the software RAID/management communication memory space of the CMB device408may be configured to transfer the software RAID information and/or management information described below in a variety of manners that will fall within the scope of the present disclosure as well.

In some embodiments, the software RAID engine204in the computing device200may set a register in the CMB device408of the storage device202a/400(e.g., by setting a CMBMSC.CRE register to “1”) in order to indicate an intent to utilize the software RAID/management communication memory space of the CMB device408for communication with the BMC device206/300in the computing device200. Furthermore, in response to providing the indication of an intent to the utilize the software RAID/management communication memory space of the CMB device408for communication with the BMC device206/300in the computing device200, the software RAID engine204in the computing device200may populate the header602in the CMB device408(e.g., with any of the information described above) and subsequently begin periodically accessing the header602in the CMB device408to determine whether the BMC engine304has provided a management communication.

With reference toFIGS.6C and6D, the BMC engine304in the BMC device206/300in the computing device200may perform CMB device read operations610that include reading any of a variety of information from the CMB device400via the communication system410in the storage device202a/400. As will be appreciated by one of skill in the art in possession of the present disclosure, the CMB device read operations610performed by the BMC engine304in the BMC device206/300in the computing device200may include reading (e.g., via NVMe-Management Interface (MI)-PCIe reads) CMB registers in the CMB device408of the storage device202a/400in order to identify CMB support information, BAR location information, CMB offset information, CMB size information, read/write bit information, and/or other CMB information that one of skill in the art in possession of the present disclosure will recognize enables the use of the CMB device408by the BMC engine304. Furthermore, the CMB device read operations610may allow the BMC engine304to determine that the register in the CMB device408was set by the software RAID engine204to indicate an intent to utilize the software RAID/management communication memory space of the CMB device408for communication with the BMC device206/300, and in response the BMC engine304in the BMC device206/300may determine that it should begin periodically accessing the header602in the CMB device408(e.g., via NVMe-MI-PCIe reads) to determine whether the software RAID engine204has provided a software RAID communication.

In an embodiment, the CMB device read operations610may also include the BMC engine304accessing the header602in the software RAID/management communication memory space of the CMB device408to retrieve authentication information (e.g., the signature, key, or other authentication information discussed above), and using any of a variety of authentication technique to authenticate the data provided by the software RAID engine204in the software RAID/management communication memory space of the CMB device408. For example, the authentication information may be provided by the software RAID engine204in one or more fields in the header602using information that is already known to the BMC engine304, and following its authentication the BMC engine304may proceed with performing the remainder of the method500. As will be appreciated by one of skill in the art in possession of the present disclosure, if the BMC engine304cannot authenticate information retrieved from the header602in the CMB device408, the BMC engine304may assume that the software RAID engine204has not yet configured the software RAID/management communication memory space of the CMB device408, and may periodically perform the CMB device read operations610until information that can be authenticated is retrieved from the header602.

The method500may then proceed to decision block504awhere the method500proceeds depending on whether the management subsystem identifies a software RAID information request in the storage device memory subsystem, as well as to decision block506awhere the method500proceeds depending on whether the software RAID subsystem identifies a management information request in the storage device memory subsystem. As will be appreciated by one of skill in the art in possession of the present disclosure, blocks504a-504eof the method500describe embodiments in which the software RAID subsystem may initiate communication with the management subsystem, while blocks506a-506eof the method500describe embodiments in which the management subsystem may initiate communication with the software RAID subsystem, and while the software-RAID-initiated communication of blocks504a-504eare described in detail below, the management-initiated communication of blocks506a-506emay be performed in a substantially similar manner except for where detailed below.

Beginning with the software-RAID-initiated communication of blocks504a-504e, in an embodiment of decision block504a, the BMC engine304in the BMC device206/300in the computing device200may access the software RAID/management communication memory space in the CMB device408of the storage device202a/400to determine whether a software RAID information request was provided by the software RAID engine204in the CMB device408. As discussed above, in response to determining that the software RAID engine204indicated an intent to utilize the software RAID/management communication memory space of the CMB device408for communication with the BMC device206/300, the BMC engine304in the BMC device206/300may begin periodically accessing the header602in the CMB device408to determine whether the software RAID engine204has provided a software RAID information request in the software RAID request queue604ain the CMB device408.

In a specific example, the software RAID engine204may be configured to increment a “tail” portion of the head/tail information stored in the header602in the CMB device408in response to submitting a software RAID information request in the software RAID request queue604ain the CMB device408, and thus the BMC engine304may be configured to periodically access the head/tail information stored in the header602in the CMB device408to determine whether the tail portion of the head/tail information matches a “head” portion of the head/tail information in order to determine whether a software RAID information request was provided by the software RAID engine204in the CMB device408. In other words, if the tail portion is greater than the head portion in the head/tail information, then the software RAID engine204has incremented that tail portion following the provisioning of the software RAID information request, while if the tail portion is equal to the head portion in the head/tail information, then the software RAID engine204has not provided a software RAID information request.

If, at decision block504a, the management subsystem does not identify a software RAID information request in the storage device memory subsystem, the method500returns to decision block504a. For example, if at decision block504athe BMC engine304in the BMC device206/300in the computing device200determines that the tail portion of the head/tail information in the header602in the CMB device408is equal to the head portion of the head/tail information in the header602in the CMB device408(e.g., the head/tail information remains as initially set during block502at “0/0”), the BMC engine304will determine that the software RAID engine204in the computing device200has not submitted a software RAID information request to the software RAID request queue604a, and the method500will return to decision block504a. As such, the method500may loop such that the BMC engine304periodically accesses the header602in the CMB device408at decision block504aas long as no software RAID information request is identified in the CMB device408(e.g., as long as the tail portion of the head/tail information is equal to the head portion of the head/tail information in the header602in the CMB device408).

With reference now to the management-initiated communication of blocks506a-506e, similarly as described above, the software RAID engine204in the computing device200may periodically access the software RAID/management communication memory space in the CMB device408of the storage device202a/400at decision block506ato determine whether a management information request was provided by the BMC engine304in the CMB device408. As discussed above, following the configuration of the software RAID/management communication memory space of the CMB device408for communication with the BMC device206/300, the software RAID engine204may periodically access the header602in the CMB device408to determine whether the BMC engine304has provided a management information request in the BMC request queue606ain the CMB device408.

In a specific example, the BMC engine304may be configured to increment the head portion of the head/tail information stored in the header602in the CMB device408in response to submitting a management information request in the BMC request queue606ain the CMB device408, and thus the software RAID engine204may be configured to periodically access the head/tail information stored in the header602in the CMB device408to determine whether the head portion of the head/tail information matches the tail portion of the head/tail information in order to determine whether a management information request was provided by the BMC engine304in the CMB device408. In other words, if the head portion is greater than the tail portion in the head/tail information, then the BMC engine304has incremented that head portion following the provisioning of the management information request, while if the head portion is equal to the tail portion in the head/tail information, then the BMC engine304has not provided a management information request.

If, at decision block506a, the software RAID subsystem does not identify a management information request in the storage device memory subsystem, the method500returns to decision block506a. For example, if at decision block506athe software RAID engine204in the in the computing device200determines that the head portion of the head/tail information in the header602in the CMB device408is equal to the tail portion of the head/tail information in the header602in the CMB device408(e.g., the head/tail information remains as initially set during block502at “0/0”), the software RAID engine204will determine that the BMC engine304in the BMC device206/300in the computing device200has not submitted a management information request to the BMC request queue606a, and the method500will return to decision block506a. As such, the method500may loop such that the software RAID engine204periodically accesses the header602in the CMB device408at decision block504aas long as no management information request is identified in the CMB device408(e.g., as long as the head portion of the head/tail information is equal to the tail portion of the head/tail information in the header602in the CMB device408).

Returning to the software-RAID-initiated communication of blocks504a-504e, if at decision block504athe management subsystem identifies a software RAID information request in the storage device memory subsystem, the method500proceeds to block504bwhere the management subsystem retrieves software RAID information identified in the software RAID information request. With reference toFIGS.7A and7B, in an embodiment of decision block504a, the software RAID engine204in the computing device200may perform software RAID information request submission operations700that include submitting a software RAID information request in the software RAID request queue604avia the communication system410in the storage device202a/400. For example, the software RAID information request may include any of a variety of formats (e.g., formats that may be defined by a vendor of the storage device202a/400), and may request any particular software RAID information, may identify the response buffer608as the location where the software RAID information should be provided, and/or may include any other information that one of skill in the art in possession of the present disclosure would recognize as allowing for the functionality discussed below.

In the specific examples provided below, the software RAID information request includes a request by the software RAID engine204for a bay identifier (e.g., the software RAID information request may include a vendor-defined opcode for “BAYID”) of a storage device (e.g., an NVMe storage device) in the computing device200, but one of skill in the art in possession of the present disclosure will appreciate that the software RAID engine204may request any of a variety of software RAID information (e.g., a slot identifier (“SlotID”), a form factor, etc.) while remaining within the scope of the present disclosure as well. As will be appreciated by one of skill in the art in possession of the present disclosure, any software RAID information requests (and/or alignments) submitted at decision block504amay conform to Management Component Transport Protocol (MCTP) standards.

Furthermore, with reference toFIGS.7C and7D, in an embodiment of decision block504a, the software RAID engine204in the computing device200may perform software RAID information request header identification operations702that include identifying the submission of the software RAID information request in the header602configured in the CMB device408via the communication system410in the storage device202a/400. Similarly as discussed above, the software RAID engine204may increment a tail portion of the head/tail information stored in the header602in the CMB device408(e.g., from the “0/0” as initially set during block502to “0/1”) in response to submitting the software RAID information request in the software RAID request queue604ain the CMB device408at decision block504a.

As such, with reference toFIGS.8A,8B, and8C, in an embodiment of decision block504aand as part of the periodic accesses of the header602in the CMB device408of the storage device202a/300, the BMC engine304in the BMC device206/300in the computing device200may perform software RAID information request identification operations800that include accessing the header602in the CMB device408in the storage device202a/400via the communication system410in the storage device202a/400and the communication system308in the BMC device206/300, and determining that the software RAID engine204in the computing device200has submitted a software RAID information request in the software RAID request queue604abased on the tail portion not matching the head portion of the head/tail information stored in the header602in the CMB device408(e.g., head/tail information such as “0/1” following an initial submission of a software RAID information request).

With reference toFIGS.8D,8E, and8F, in an embodiment of block504band in response to determining that the software RAID engine204in the computing device200has submitted a software RAID information request in the software RAID request queue604a, the BMC engine304in the BMC device206/300in the computing device200may perform software RAID information request retrieval operations802that include accessing the software RAID request queue604ain the CMB device408in the storage device202a/400via the communication system410in the storage device202a/400and the communication system308in the BMC device206/300, and retrieving the software RAID information request.

Returning to the management-initiated communication of blocks506a-506e, and similarly as described above, if at decision block506athe software RAID subsystem identifies a management information request in the storage device memory subsystem, the method500proceeds to block506bwhere the software RAID subsystem retrieves management information identified in the management information request. While not illustrated and described in detail, one of skill in the art in possession of the present disclosure will appreciate how decision block506aand block506bmay be performed by the software RAID engine204in the computing device200similarly as described above for the performance of decision block504aand block504bby the BMC engine304in the BMC device206/300in the computing device200. As such, the BMC engine304may submit a management information request in the BMC request queue606a, and any management information requests (and/or alignments) submitted at decision block506amay conform to MCTP standards. The BMC engine304may also identify the submission of the management information request in the header602configured in the CMB device408by incrementing a head portion of the head/tail information stored in the header602in the CMB device408in response to submitting the management information request (e.g., from the “0/0” as initially set during block502to “1/0”).

Subsequently and as part of the periodic accesses of the header602in the CMB device408of the storage device202a/300, the software RAID engine204in the computing device200may access the header602and determine that the BMC engine304has submitted a management information request in the BMC request queue606abased on the head portion not matching the tail portion of the head/tail information stored in the header602in the CMB device408(e.g., head/tail information such as “1/0” following an initial submission of a management information request). The software RAID engine204may then access the BMC request queue606aand retrieve the management information request.

Returning to the software-RAID-initiated communication of blocks504a-504e, the method500then proceeds to block504cwhere the management subsystem provides the software RAID information and a software RAID information response in the storage device memory subsystem. With reference toFIGS.8G,8H, and8I, in an embodiment of block504c, the BMC engine304in the BMC device206/300in the computing device200may perform software RAID information provisioning operations804that include retrieving the software RAID information (e.g., the BMC engine304may identify the vendor-defined opcode for “BAYID” in the software RAID information request and, in response, retrieve the BAYID of the NVMe storage device requested by the software RAID engine204in the specific example above), and transmitting that software RAID information via its communication system308and the communication system410in the storage device202a/400to the response buffer608in the CMB device408in the storage device202a/400.

With reference toFIGS.8J,8K, and8L, in an embodiment of block504c, the BMC engine304in the BMC device206/300in the computing device200may perform software RAID information response provisioning operations806that include transmitting a software RAID information response via its communication system308and the communication system410in the storage device202a/400to the software RAID response queue604bin the CMB device408in the storage device202a/400. Similarly as described above, any software RAID information responses (and/or alignments) submitted at block504cmay conform to MCTP standards. With reference toFIGS.8M,8N, and8O, in an embodiment of block504c, the BMC engine304in the BMC device206/300in the computing device200may perform software RAID information response identification operations808that include accessing the header602in the CMB device408of the storage device202a/400via its communication system308and the communication system410in the storage device202a/400, and updating the head portion of the head/tail information in the header602(e.g., from the “0/1” following the provisioning of the software RAID information request by the software RAID engine204to “1/1”) to indicate that the software RAID information response has been provided in response to the software RAID information request.

Returning to the management-initiated communication of blocks506a-506e, and similarly as described above, at block506cthe software RAID subsystem provides the management information and a management information response in the storage device memory subsystem. While not illustrated and described in detail, one of skill in the art in possession of the present disclosure will appreciate how block506cmay be performed by the software RAID engine204in the computing device200similarly as described above for the performance of block504cby the BMC engine304in the BMC device206/300in the computing device200. As such, the software RAID engine204may retrieve the management information requested by the BMC engine304, and transmit that management information to the response buffer608in the CMB device408in the storage device202a/400. Furthermore, the software RAID engine204may transmit management information response to the BMC response queue606bin the CMB device408, and any management information responses (and/or alignments) submitted at block506cmay conform to MCTP standards. Finally, the software RAID engine204may also access the header602in the CMB device408of the storage device202a/400, and update the tail portion of the head/tail information in the header602(e.g., from the “1/0” following the provisioning of the management information request by the BMC engine304to “1/1”) to indicate that the management information response has been provided in response to the management information request.

Returning to the software-RAID-initiated communication of blocks504a-504e, the method500then proceeds to block504dwhere the software RAID subsystem identifies the software RAID information response in the storage device memory subsystem. With reference toFIGS.9A and9B, in an embodiment of block504dand as part of the periodic accesses of the header602in the CMB device408of the storage device202a/300, the software RAID engine204in the computing device200may perform software RAID information response identification operations900that include accessing the header602in the CMB device408in the storage device202a/400via the communication system410in the storage device202a/400, and determining that the BMC engine304in the BMC device206/300in the computing device200has submitted a software RAID information response in the software RAID response queue604bbased on the tail portion being equal to the head portion of the head/tail information stored in the header602in the CMB device408(e.g., head/tail information such as “1/1” following a software RAID information response to an initial submission of a software RAID information request). In response to determining that the BMC engine304has submitted a software RAID information response in the software RAID response queue604b, the software RAID engine204will retrieve the software RAID information response from the software RAID response queue604b.

Returning to the management-initiated communication of blocks506a-506e, and similarly as described above, at block506dthe management subsystem identifies the management information response in the storage device memory subsystem. While not illustrated and described in detail, one of skill in the art in possession of the present disclosure will appreciate how block506dmay be performed by the BMC engine204in the BMC device206/300in the computing device200similarly as described above for the performance of block504dby the software RAID engine204in the computing device200. As such, as part of the periodic accesses of the header602in the CMB device408of the storage device202a/300, the BMC engine304in the BMC device206/300in the computing device200may access the header602in the CMB device408in the storage device202a/400and determine that the software RAID engine204has submitted a management information response in the management response queue606bbased on the head portion being equal to the tail portion of the head/tail information stored in the header602in the CMB device408(e.g., head/tail information such as “1/1” following a management information response to an initial submission of a management information request). In response to determining that the software RAID engine204has submitted a management information response in the management response queue606b, the BMC engine304will retrieve the management information response from the management response queue606b.

Returning to the software-RAID-initiated communication of blocks504a-504e, the method500then proceeds to block504ewhere the software RAID subsystem retrieves the software RAID information from the storage device memory subsystem. With reference toFIGS.9C and9D, in an embodiment of block504eand in response to determining that the BMC engine304in the BMC device206/300in the computing device200has submitted a management information response in the software RAID response queue604b, the software RAID engine204in the computing device200may perform software RAID information retrieval operations902that include retrieving the software RAID information (provided by the BMC engine304) from the response buffer608in the CMB device408in the storage device202a/400via the communication system410in the storage device202a/400. As such, the software RAID engine204may request and receive software RAID information from the BMC device206/300using the CMB device408in the storage device202a/400.

Returning to the management-initiated communication of blocks506a-506e, and similarly as described above, at block506ethe management subsystem retrieves the management information from the storage device memory subsystem. While not illustrated and described in detail, one of skill in the art in possession of the present disclosure will appreciate how block506emay be performed by the BMC engine204in the BMC device206/300in the computing device200similarly as described above for the performance of block504eby the software RAID engine204in the computing device200. As such, in response to determining that the software RAID engine204in the computing device200has submitted a management information response in the BMC response queue606b, the BMC engine304may retrieve the management information (provided by the software RAID engine204) from the response buffer608in the CMB device408in the storage device202a/400. As such, the BMC device206/300may request and receive management information from the software RAID engine204using the CMB device408in the storage device202a/400.

Thus, systems and methods have been described that utilize a storage device memory subsystem in a storage device for communications between a software RAID subsystem and a management subsystem. For example, the software RAID/management communication system of the present disclosure may include a chassis housing a software Redundant Array of Independent Disk (RAID) subsystem and a management subsystem that are each coupled to a storage device having a storage device memory subsystem. The software RAID subsystem provides a software RAID information request in the storage device memory subsystem that requests the management subsystem provide software RAID information associated with the operation of a software RAID provided by the software RAID subsystem, the software RAID subsystem then periodically accesses the storage device memory subsystem and, when the software RAID subsystem determines that the management subsystem has provided a management information response in the storage device memory subsystem, the software RAID subsystem retrieves the software RAID information that was provided in the storage device memory subsystem by the management subsystem. As such, critical, real-time data may be exchanged between software RAID subsystems and management subsystems without the need to rely on changes/updates to an SMBIOS, BIOS, and/or IPMI and the corresponding time delays required for such changes/updates.

Referring now toFIG.10, an embodiment of a method1000for providing trusted storage-device-based communications between a software RAID subsystem and a management subsystem in a computing device is illustrated. As discussed below, the systems and methods of the present disclosure provide for the provisioning of trusted storage-device-based communications between a management subsystem and a software RAID subsystem in computing device. For example, the software RAID/management trusted storage-device-based communication system of the present disclosure may include a chassis housing a software RAID subsystem, a storage device that is coupled to the software RAID subsystem and that includes a storage device memory subsystem, and a management subsystem that is coupled to the storage device. The management subsystem authenticates the storage device to establish management subsystem/storage device trust between the management subsystem and the storage device and, in response, uses the storage device to establish management subsystem/software RAID subsystem trust between the management subsystem and the software RAID subsystem. In response to establishing the management subsystem/storage device trust and the management subsystem/software RAID subsystem trust, the management subsystem transmits communications with the software RAID subsystem via the storage device memory subsystem in the storage device. As such, the authenticity of communications transmitted via a storage device and between a management subsystem and a software RAID subsystem may be ensured.

As will be appreciated by one of skill in the art in possession of the present disclosure, the method1000may be performed during the method500discussed above with reference toFIGS.5A and5B(e.g., subsequent to the configuration of the storage device memory subsystem at block502) in order to provide trusted storage-device-based communications between the software RAID engine204aand the BMC engine304in the BMC device206/300included in the computing device200during the method500. However, while a particular timing for establishing trust for particular communications between the software RAID engine204aand the BMC engine304has been described, one of skill in the art in possession of the present disclosure will appreciate how the method1000may be performed at other times to provide other trusted storage-device-based communications between the software RAID engine204aand the BMC engine304while remaining within the scope of the present disclosure as well.

As will be appreciated by one of skill in the art in possession of the present disclosure, the method1000described below may include blocks1002a,1004a, and1006ain which the management subsystem uses the storage device to establish management subsystem/software RAID subsystem trust with the software RAID subsystem prior to transmitting communications to the software RAID subsystem via the storage device, and/or may also include blocks1002b,1004b, and1006bin which the software RAID subsystem uses the storage device to establish software RAID subsystem/management subsystem trust with the management subsystem prior to transmitting communications to the management subsystem via the storage device, with either or both of blocks1002a-1006aand blocks1002b-1006bperformed as part of the method1000. Furthermore, while the establishment of trust for communications by the management subsystem is described in more detail below, one of skill in the art in possession of the present disclosure will recognize how trust for communications may established by the software RAID subsystem in a similar manner while remaining within the scope of the present disclosure as well.

With reference to the embodiment of the method1000involving blocks1002a-1006a, the method1000may begin at block1002awhere a management subsystem authenticates a storage device to establish management subsystem/storage device trust. With reference toFIGS.11A,11B, and11C, in an embodiment of block1002a, the BMC engine304in the BMC device206/300of the computing device200may perform storage device authentication operations1100with the storage engine404in the storage device202a/400via their respective communication systems308and410. In a specific example, the storage device authentication operations1100performed by the BMC engine304may be SPDM authentication operations that may include the BMC engine304performing any of a variety of SPDM challenge operations with the storage device202a/400(e.g., using certificates as described below), and the storage device202a/400providing any of a variety of SPDM challenge responses to those SPDM challenge operations, that one of skill in the art in possession of the present disclosure would recognize as providing for the authentication of the storage device202a/400with the BMC engine304as per the SPDM specification. As such, SPDM authentication operations may provide for the certificate-based authentication described below that results in the establishment of a secure encrypted communication channel used for the trusted storage-device-based communications described below.

However, while SPDM authentication operations have been described, one of skill in the art in possession of the present disclosure will appreciate how other storage device authentication operations will fall within the scope of the present disclosure as well. For example, the BMC engine304in the BMC device206/300of the computing device200may have access to a computing device component verification certificate (e.g., a Secure Component Verification (SCV) certificate included in computing device provided by DELL® Inc. of Round Rock, Texas, United States) that is configured for use in verifying components that were provided in the computing device200during its manufacture, and the BMC engine304may utilize that computing device component verification certificate during the storage device authentication operations1100to authenticate the storage device202a/400by verifying that storage device202a/400was provided in the computing device200during its manufacture (e.g., in embodiments in which the storage device202a/400does not support SPDM authentication operations). As such, following block1002a, the BMC engine304in the BMC device206/300may have authenticated the storage device202a/400such that management subsystem/storage device trust is established (i.e., such that a secure communication channel has been established between the BMC engine304and the storage device202a/400).

Furthermore, one of skill in the art in possession of the present disclosure will appreciate how the method1000involving blocks1002b-1006bmay also begin at block1002bwhere a software RAID subsystem authenticates a storage device to establish software RAID subsystem/storage device trust similarly as described above for the management subsystem at block1002a. As such, the software RAID engine204may perform storage device authentication operations with the storage device202a/400(e.g., the SPDM authentication operations discussed above, the storage device authentication operations using the computing device component verification certificate discussed above, etc.) such that software RAID subsystem/storage device trust is established (i.e., such that a secure communication channel has been established between the software RAID engine304and the storage device202a/400).

Returning to the embodiment of the method1000involving blocks1002a-1006a, the method1000may then proceed from block1002ato block1004awhere the management subsystem uses the storage device to establish management subsystem/software RAID subsystem trust. As discussed below, in different embodiments of block1004aand subsequent to establishing the management subsystem/storage device trust at block1002a, the BMC engine304in the BMC device206/300of the computing device200may use that storage device202a/400in different ways in order to establish management subsystem/software RAID subsystem trust. For example, with reference toFIG.12, an embodiment of a method1200for using a storage device to establish trust for storage-device-based communications between a software RAID subsystem and a management subsystem in a computing device is illustrated that may be performed during block1004aof the method1000. As discussed below, the method1200provides for the performance of software RAID subsystem authentication operations through the storage device in order to authenticate the software RAID subsystem and establish management subsystem/software RAID subsystem trust.

For example, the method1200may begin at block1202where the management subsystem provides a software RAID subsystem authentication request in a storage device memory subsystem of the storage device. With reference toFIGS.13A and13B, in an embodiment of block1202, the BMC engine304in the BMC device206/300of the computing device200may perform software RAID subsystem authentication request provisioning operations1300that include generating a software RAID subsystem authentication request and providing that software RAID subsystem authentication request to the storage device202a/400. As such, similarly as described above during the method500, at block1202the BMC engine304may provide the software RAID subsystem authentication request in the BMC request queue606ain the CMB device408.

With reference toFIG.13C, an embodiment of an authentication communication1300is illustrated that may be utilized by the BMC engine304to provide the software RAID subsystem authentication request in the BMC request queue606ain the CMB device408at block1202as part of the software RAID subsystem authentication request provisioning operations1300. The authentication communications1300in the examples provided below are Management Component Transport Protocol (MCTP) communications that are configured to transmit NVMe-MI commands (i.e., commands using the NVMe-MI protocol), and are used in the present disclosure to tunnel SPDM commands within the NVMe-MI commands. As such, the authentication communication1300in the illustrated embodiment includes a physical binding header1302that will have header information that depends on the physical medium (e.g., an Inter-Integrated Circuit (I2C) medium, a Peripheral Component Interconnect express (PCIe) Vendor Defined Message (VDM) medium, etc.) over which the authentication communication1300is transmitted. The authentication communication1300also includes an MCTP header1304(e.g., an MCTP transport header) and an MCTP payload1306, with an NVMe-MI header1308and NVMe-MI payload1310included in the MCTP payload1306, and an MCTP header1310a, an SPDM header1310b, and an SPDM payload1310cincluded in the NVMe-MI payload1310. However, while a specific example of the tunneling of SPDM commands in NVMe-MI commands transmitted using MCTP communications has been provided, communications that utilize other protocols and/or transmit authentication communications in other manners are envisioned as falling within the scope of the present disclosure as well.

Thus, continuing with the specific example provided above, at block1202the BMC engine304may generate an SPDM command that provides the software RAID subsystem authentication request discussed above, provide that SPDM command in the SPDM payload1310cof the authentication communication1300(while also providing any other information that one of skill in the art in possession of the present disclosure would recognize as being needed in the physical binding header1302, the MCTP header1304, the MCTP payload1306, the NVMe-MI header1308, the NVMe-MI payload1310, the MCTP header1310a, and/or the SPDM header1310bin order to provide the functionality described below), submit that authentication communication1300to the BMC request queue606ain the CMB device408of the storage device202a/400, and increment the head portion of the head/tail information stored in the header602in the CMB device408.

The method1200then proceeds to block1204where the software RAID subsystem retrieves the software RAID subsystem authentication request from the storage device memory subsystem in the storage device. With reference toFIG.14, in an embodiment of block1204, the software RAID engine204in the computing device200may perform software RAID subsystem authentication request retrieval operations1400that include retrieving the software RAID subsystem authentication request from the storage device202a. As such, similarly as described above with reference to block506bof the method500, as part of its periodic accesses of the header602in the CMB device408of the storage device202a/300, the software RAID engine204in the computing device200may access the header602and determine that the BMC engine304has submitted a software RAID subsystem authentication request in the BMC request queue606abased on the head portion not matching the tail portion of the head/tail information stored in the header602in the CMB device408and, in response, may then access the BMC request queue606aand retrieve the software RAID subsystem authentication request.

The method1200then proceeds to block1206where the software RAID subsystem provides a software RAID subsystem authentication response in the storage device memory subsystem in the storage device. With reference toFIG.15, in an embodiment of block1206and in response to retrieving the software RAID subsystem authentication request, the software RAID engine204in the computing device200may perform software RAID subsystem authentication response provisioning operations1500that include generating a software RAID subsystem authentication response and providing that response to the storage device202a.

Continuing with the specific example of the authentication communication1300provided above, at block1206the software RAID engine204may generate an SPDM command that provides the software RAID subsystem authentication response discussed above using any of a variety of SPDM request/response techniques that would be apparent to one of skill in the art in possession of the present disclosure, provide that SPDM command in the SPDM payload1310cof the authentication communication1300(while also providing any other information that one of skill in the art in possession of the present disclosure would recognize as being needed in the physical binding header1302, the MCTP header1304, the MCTP payload1306, the NVMe-MI header1308, the NVMe-MI payload1310, the MCTP header1310a, and/or the SPDM header1310bin order to provide the functionality described below), transmit that authentication communication1300to the BMC response queue606bin the CMB device408, access the header602in the CMB device408of the storage device202a/400, and update the tail portion of the head/tail information in the header602to indicate that the software RAID subsystem authentication response has been provided in response to the software RAID subsystem authentication request.

The method1200then proceeds to block1208where the management subsystem retrieves the software RAID subsystem authentication response from the storage device memory subsystem in the storage device. With reference toFIGS.16A and16B, in an embodiment of block1208, the BMC engine304in the BMC device206/300of the computing device200may perform software RAID subsystem authentication response retrieval operations1600that include retrieving the software RAID subsystem authentication response from the storage device202a. As such, similarly as described above with reference to block506dof the method500, as part of its periodic accesses of the header602in the CMB device408of the storage device202a/300, the BMC engine304may access the header602and determine that the software RAID engine204has submitted a software RAID subsystem authentication response in the BMC response queue606bbased on the tail portion not matching the head portion of the head/tail information stored in the header602in the CMB device408and, in response, may then access the BMC response queue606band retrieve the software RAID subsystem authentication response.

The method1200then proceeds to decision block1210where it is determined whether authentication communications have been completed. As will be appreciated by one of skill in the art in possession of the present disclosure, the management subsystem/software RAID subsystem authentication operations of the present disclosure (e.g., the SPDM authentication operations in the specific examples described above) may include a plurality of authentication communications (e.g., a plurality of software RAID subsystem authentication requests and responses at different iterations of blocks1202-1208), and thus in an embodiment of decision block1210, the BMC engine304in the BMC device206/300of the computing device200may determine whether those authentication communications have completed. If, at decision block1210, it is determined that authentication communications have not been completed, the method1200returns to block1202. As such, the method1200may loop such that authentication communications that provide the management subsystem/software RAID subsystem authentication operations of the present disclosure may be performed until the authentication communications have completed.

If, at decision block1210, it is determined that authentication communications have been completed, the method1200proceeds to block1212where the management subsystem authenticates the software RAID subsystem based on the software RAID subsystem authentication responses to establish the management subsystem/software RAID subsystem trust. In an embodiment, at block1212, the BMC engine304in the BMC device206/300of the computing device200may perform software RAID subsystem authentication operations that include authenticating the software RAID engine204in the computing device200based on the authentication communications transmitted during the iterations of the method1000(e.g., the plurality of software RAID subsystem authentication requests/responses described above). As such, continuing with the specific example provided above, at block1212the BMC engine304may perform any of a variety of SPDM authentication techniques using the software RAID subsystem authentication requests/responses that one of skill in the art in possession of the present disclosure will recognize as providing for the authentication of the software RAID engine204. As such, following block1212, the BMC engine304in the BMC device206/300of the computing device200may have authenticated the software RAID engine204in the computing device200such that management subsystem/software RAID subsystem trust is established (i.e., such that a secure communication channel has been established between the BMC engine304and the software RAID engine204).

Furthermore, one of skill in the art in possession of the present disclosure will appreciate how the method1000involving blocks1002b-1006bmay proceed from block1002bto block1004bwhere the software RAID subsystem uses the storage device to establish software RAID subsystem/management subsystem trust similarly as the management subsystem described above during the method1200. As such, the software RAID engine204may provide management subsystem authentication requests in the software RAID request queue604aof the CMB device408in the storage device202a/400similarly as described above with reference to block1202, the BMC engine304may retrieve management subsystem authentication requests similarly as described above with reference to block1204and provide management subsystem authentication responses in the software RAID response queue604bof the CMB device408in the storage device202a/400similarly as described above with reference to block1206, and the software RAID engine204may retrieve management subsystem authentication responses similarly as described above with reference to block1208in order to authenticate the BMC engine304and establish software RAID subsystem/management subsystem trust (i.e., such that a secure communication channel has been established between the software RAID engine204and the BMC engine304).

Further still, one of skill in the art in possession of the present disclosure will appreciate how some embodiments of the method1200may provide for mutual authentication of the BMC engine304and the software RAID engine204during the method1200. For example, using the SPDM authentication techniques discussed above, the authentication request and response exchanges at blocks1202-1208may be supplemented to allow the software RAID engine204to authenticate the BMC engine304to establish the software RAID subsystem/management subsystem trust discussed above (i.e., while the BMC engine304is authenticating the software RAID engine204to establish the management subsystem/software RAID subsystem trust as described in detail above).

As such, one of skill in the art in possession of the present disclosure will appreciate how the embodiments of the system and methods of the present disclosure may use a storage device to establish management subsystem/software RAID subsystem trust (and/or software RAID subsystem/management subsystem trust) by tunneling SPDM commands in NVMe-MI commands that are exchanged via a CMB device in that storage device. However, while the tunneling of authentication communications via a storage device to establish trust between a management subsystem and a software RAID subsystem has been described, one of skill in the art in possession of the present disclosure will appreciate how the storage device may be used in other manners to establish trust between a management subsystem and a software RAID subsystem while remaining within the scope of the present disclosure as well.

For example, with reference toFIG.17, an embodiment of a method1700for using a storage device to establish trust for storage-device-based communications between a software RAID subsystem and a management subsystem in a computing device is illustrated that may be performed during block1004aof the method1000. As discussed below, the method1700provides for the performance of software RAID subsystem authentication operations by the storage device in order to authenticate the software RAID subsystem and establish management subsystem/software RAID subsystem trust. As such, the storage device may operate as an authentication proxy for the management subsystem in order to establish the management subsystem/software RAID subsystem trust of the present disclosure.

The method1700may begin at optional block1702where the software RAID subsystem may authenticate the storage device to establish software RAID subsystem/storage device trust. As will be appreciated by one of skill in the art in possession of the present disclosure, optional block1702may be performed by the software RAID engine204in the computing device200during the method1700prior to responding to any communications from the storage device202a/400(e.g., prior to providing SPDM responses to SPDM challenges as part of the SPDM authentication operations described herein). With reference toFIGS.18A and18B, in an embodiment of optional block1702, the software RAID engine204in the computing device200may perform storage device authentication operations1800with the storage engine404in the storage device202a/400via the communication system410in the storage device202a/400. In a specific example, the storage device authentication operations1800performed by the software RAID engine204may be SPDM authentication operations that may include the software RAID engine204performing any of a variety of SPDM challenge operations with the storage device202a/400, and the storage device202a/400providing any of a variety of SPDM challenge responses to those SPDM challenge operations, that one of skill in the art in possession of the present disclosure would recognize as providing for the authentication of the storage device202a/400with the software RAID engine204as per the SPDM specification.

However, while SPDM authentication operations have been described, one of skill in the art in possession of the present disclosure will appreciate how other storage device authentication operations will fall within the scope of the present disclosure as well. For example, the software RAID engine204in the computing device200may have access to a computing device component verification certificate (e.g., the SCV certificate described above that may be included in computing device provided by DELL® Inc. of Round Rock, Texas, United States) that is configured for use in verifying components that were provided in the computing device200during its manufacture, and the software RAID engine204may utilize that computing device component verification certificate during the storage device authentication operations1800to authenticate the storage device202a/400by verifying that storage device202a/400was provided in the computing device200during its manufacture. As such, following block1702and in addition to the BMC engine304having authenticated the storage device202a/400to establish management subsystem/storage device trust at block1004aof the method1000, the software RAID engine204in the computing device200may have authenticated the storage device202a/400such that software RAID subsystem/storage device trust is established (i.e., such that a secure communication channel has been established between the software RAID engine204and the storage device202a/400).

The method1700may then proceed to (or begin at) block1704where the management subsystem provides a software RAID subsystem authentication instruction to the storage device. With reference toFIGS.19A,19B, and19C, in an embodiment of block1704, the BMC engine304in the BMC device206/300of the computing device200may perform software RAID subsystem authentication instruction provisioning operations1900that include generating a software RAID subsystem authentication instruction and providing that software RAID subsystem authentication instruction to the storage engine404in storage device202a/400via their communications systems308and410.

In a specific example, the software RAID subsystem authentication instruction generated by the BMC engine304at block1704may be provided in an Outside Equipment Manufacturer (OEM) vendor defined command (e.g., rather than the NVMe-IM commands described above) that may be defined by the manufacturer of the computing device200and implemented by the vendor of the storage device202/400, and in the example below is configured to instruct the storage device202a/400to authenticate the software RAID engine204in the computing device200using SPDM authentication techniques. Furthermore, in some embodiments the software RAID subsystem authentication instruction provisioning operations1900performed by the BMC engine304may include providing a root Certificate Authority (CA) certificate for the software RAID engine204(e.g., a software RAID subsystem identification certificate) to the storage device202a/400for use in performing SPDM authentication. However, embodiments in which the storage device202a/400includes the CA certificate for the software RAID engine204, or obtains it in other manners, are envisioned as falling within the scope of the present disclosure as well.

The method1700may then proceed to block1706where the storage device authenticates the software RAID subsystem. With reference toFIGS.20A and20B, in an embodiment of block1706and in response to receiving the software RAID subsystem authentication instruction, the storage engine404in the storage device202a/400may perform software RAID subsystem authentication operations2000via its communication system410to authenticate the software RAID engine204in the computing device200. Similarly as described in the specific examples above, the software RAID subsystem authentication operations2000performed by the storage device202a/400may be SPDM authentication operations that thus may include the plurality authentication requests and responses that one of skill in the art in possession of the present disclosure will recognize operate to allow the storage device202a/400to authenticate the software RAID engine204and establish storage device/software RAID subsystem trust (i.e., such that a secure communication channel has been established between the storage device202a/400and the software RAID engine204).

The method1700may then proceed to block1708where the storage device provides a software RAID subsystem authentication confirmation to the management subsystem to establish management subsystem/software RAID subsystem trust. With reference toFIGS.21A,21B, and21C, in an embodiment of block1708, the storage engine404in the storage device202a/400may perform software RAID subsystem authentication confirmation provisioning operations2100that include generating a software RAID subsystem authentication confirmation and providing the software RAID subsystem authentication confirmation to the BMC engine304in the BMC device206/300of the computing device200via their communication systems410and308. As will be appreciated by one of skill in the art in possession of the present disclosure, in response to the BMC engine304receiving the software RAID subsystem authentication confirmation, management subsystem/software RAID subsystem trust will be established (i.e., such that a secure communication channel has been established between the BMC engine304and the software RAID engine204) based on the management subsystem/storage device trust and the storage device/software RAID subsystem trust discussed above.

Furthermore, one of skill in the art in possession of the present disclosure will appreciate how the method1000involving blocks1002b-1006bmay proceed from block1002bto block1004bwhere the software RAID subsystem uses the storage device to establish software RAID subsystem/management subsystem trust similarly as the management subsystem described above during the method1700. As such, the BMC engine304may optionally authenticate the storage device202a/400to establish management subsystem/storage device trust similarly as described above at optional block1702, the software RAID engine204may provide a management subsystem authentication instruction to the storage device202a/400similarly as described above at block1704, the storage device202a/400may authenticate the BMC engine304similarly as described above at block1706, and the storage device202a/400may provide the management subsystem authentication confirmation to the software RAID engine204to establish software RAID subsystem/management subsystem trust similarly as described above at block1708.

Returning to the embodiment of the method1000involving blocks1002a-1006a, the method1000may proceed from block1004ato block1006awhere the management subsystem transmits communications with the software RAID subsystem via the storage device memory subsystem in the storage device. In an embodiment, at block1006a, the BMC engine304in the BMC device206/300of the computing device200may transmit trusted communications with the software RAID engine204in the computing device200via the storage device202a/400(e.g., the Out-Of-Band (OOB) management communications transmitted as described above with reference to the method500, the OOB configuration communications transmitted as described by at least some of the inventors of the present disclosure in U.S. patent application Ser. No. 18/228,374, filed Jul. 31, 2023, the disclosure of which is incorporated herein by reference in its entirety, etc.).

Furthermore, one of skill in the art in possession of the present disclosure will appreciate how the method1000involving blocks1002b-1006bmay also proceed from block1004bto block1006bwhere the software RAID subsystem transmits communications with the management subsystem via the storage device memory subsystem in the storage device similarly as the management subsystem described above at block1006a. As such, at block1006bthe software RAID engine204in the computing device200may transmit trusted communications with the BMC engine304in the BMC device206/300of the computing device200via the storage device202a/400(e.g., the OOB management communications transmitted as described above with reference to the method500, the OOB configuration communications transmitted as described by at least some of the inventors of the present disclosure in U.S. patent application Ser. No. 18/228,374, filed Jul. 31, 2023, the disclosure of which is incorporated herein by reference in its entirety, etc.).

Thus, systems and methods have been described that provide for trusted storage-device-based communications between a management subsystem and a software RAID subsystem. For example, the software RAID/management communication trusted storage-device-based communication system of the present disclosure may include a chassis housing a software RAID subsystem, a storage device that is coupled to the software RAID subsystem and that includes a storage device memory subsystem, and a management subsystem that is coupled to the storage device. The management subsystem authenticates the storage device to establish management subsystem/storage device trust between the management subsystem and the storage device and, in response, uses the storage device to establish management subsystem/software RAID subsystem trust between the management subsystem and the software RAID subsystem. In response to establishing the management subsystem/storage device trust and the management subsystem/software RAID subsystem trust, the management subsystem transmits communications with the software RAID subsystem via the storage device memory subsystem in the storage device. As such, the authenticity of communications transmitted via a storage device and between a management subsystem and a software RAID subsystem may be ensured.

Although illustrative embodiments have been shown and described, a wide range of modification, change and substitution is contemplated in the foregoing disclosure and in some instances, some features of the embodiments may be employed without a corresponding use of other features. Accordingly, it is appropriate that the appended claims be construed broadly and in a manner consistent with the scope of the embodiments disclosed herein.