Patent Description:
As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.

Information handling systems such as, for example, server devices and/or other computing systems known in the art, may be configured to provide Software Defined Services (SDSs) using a variety of server device hardware that may include storage devices (e.g., Hard Disk Drives (HDDs), Solid State Drives (SSDs), etc.), processing devices (e.g., Graphics Processing Units (GPUs)), a variety of Input/Output (I/O) devices (e.g., Peripheral Component Interconnect express (PCIe) devices), and/or other server device hardware that one of skill in the art would recognize as being capable of utilization to provide a variety of SDSs known in the art. However, SDSs can become unavailable due to a variety of situations (e.g., due to the unavailability of a central processing system in the server device that results from a failure, reboot, power loss, or other central processing system issue or operation known in the art), and conventional server devices are configured in a manner that prevents access to the server device hardware in the event that the SDSs is unavailable.

Conventional solutions to these issues are to restart the SDS on a different server device that includes an available central processing system and utilize available service device hardware on that server device to provide the SDS. However, restarting an SDS that was being provided by a first server device on a second server device without any loss of SDS functionality requires backing up data associated with that SDS (e.g., content data stored on storage devices in the first server device, state data associated with components in the first server device, etc.) on a storage system outside of the first server device, and in some cases copying that data to the second server device or accepting the loss of SDS functionality from the SDS that is restarted on the second server device. As such, restarting an SDS on a different server device (or even simply maintaining the ability to restart an SDS on a different server device) consumes storage space, is time-consuming, and presents other issues that would be appreciated by one of skill in the art.

Accordingly, it would be desirable to provide an expanded availability computing system that addresses the issues discussed above.

According to one embodiment, an Information Handling System (IHS) includes a networking processing subsystem; and a networking memory subsystem that is coupled to the networking processing subsystem and that includes instructions that, when executed by the networking processing subsystem, cause the networking processing subsystem to provide an expanded availability computing system engine that is configured to: determine that at least one Software Defined Service (SDS), which was being provided by a central processing subsystem that is included in the IHS and coupled to the networking processing subsystem via a device access controller subsystem that is included in the IHS, is unavailable; configure the device access controller subsystem to receive SDS communications from the expanded availability computing system engine; enable remote access for a second computing system via a network and the expanded availability computing system engine and through the device access controller subsystem to a plurality of devices that are included in the IHS and coupled to the networking processing subsystem via the device access controller subsystem; and transmit SDS communications received from the second computing system to the plurality of devices via the device access controller subsystem in order to allow the second computing device to provide the at least one SDS using the plurality of devices via the device access controller subsystem.

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 storage devices (e.g., disk drives such as Hard Disk Drives (HDDs), Solid State Drives (SSDs), and/or other storage devices known in the art), 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, a touchscreen and/or a video display, large SSDs, Graphics Processing Units (GPUs), Tensor Processing Units (TPUs), Field Programmable Gate Arrays (FPGAs), and/or other I/O devices known in the art. The information handling system may also include one or more buses operable to transmit communications between the various hardware components.

In one embodiment, IHS <NUM>, <FIG>, includes a processor <NUM>, which is connected to a bus <NUM>. Bus <NUM> serves as a connection between processor <NUM> and other components of IHS <NUM>. An input device <NUM> is coupled to processor <NUM> to provide input to processor <NUM>. 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 device <NUM>, which is coupled to processor <NUM>. 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. IHS <NUM> further includes a display <NUM>, which is coupled to processor <NUM> by a video controller <NUM>. A system memory <NUM> is coupled to processor <NUM> to provide the processor with fast storage to facilitate execution of computer programs by processor <NUM>. 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 chassis <NUM> houses some or all of the components of IHS <NUM>. It should be understood that other buses and intermediate circuits can be deployed between the components described above and processor <NUM> to facilitate interconnection between the components and the processor <NUM>.

Referring now to <FIG>, an embodiment of a networked system <NUM> is illustrated in which the expanded availability computing system of the present disclosure may be utilized. In the illustrated embodiment, the networked system <NUM> includes a plurality of computing systems 202a, 202b, and up to 202c. In an embodiment, the computing system 202a-202c may be provided by the IHS <NUM> discussed above with reference to <FIG>, and/or may include some or all of the components of the IHS <NUM>, and in specific examples may be provided by server devices. However, while discussed as being provided by server devices, one of skill in the art in possession of the present disclosure will recognize that computing systems provided in the networked system <NUM> may include any computing systems that may be configured to operate similarly as the computing systems 202a-202c discussed below. In the illustrated embodiment, each of the computing systems may be coupled to a network <NUM> that may be provided by a Local Area Network (LAN), the Internet, combinations thereof, and/or any other networks that would be apparent to one of skill in the art in possession of the present disclosure. In some examples, the network <NUM> may include a first network for management data traffic and a second network for other data traffic, while in other examples, the network <NUM> may provide for both the management data traffic and other data traffic.

In the illustrated embodiment, a management system <NUM> is also coupled to the network <NUM>. In an embodiment, the management system <NUM> may be provided by the IHS <NUM> discussed above with reference to <FIG>, and/or may include some or all of the components of the IHS <NUM>, and in specific examples may be provided by one or more management server devices that may be configured to perform management functionality for the computing systems 202a-202c. In the illustrated embodiment, one or more network-attached devices <NUM> are also coupled to the network <NUM>. In an embodiment, the network-attached device(s) <NUM> may be provided by a variety of different network-attached devices that are accessible to the computing systems 202a-202c via the network <NUM>, and in specific examples below are discussed as being provided by one or more Non-Volatile Memory express (NVMe) storage devices that may be configured to provide a network-attached storage system for any or all of the computing systems 202a-202c. However, while a specific networked system <NUM> has been illustrated and described, one of skill in the art in possession of the present disclosure will recognize that the expanded availability computing system of the present disclosure may be utilized with a variety of components and component configurations, and/or may be provided in a variety of computing system/network configurations, while remaining within the scope of the present disclosure as well.

Referring now to <FIG>, an embodiment of a computing system <NUM> is illustrated that may provide any or all of the computing systems 202a-202c discussed above with reference to <FIG>. As such, the computing system <NUM> may be provided by the IHS <NUM> discussed above with reference to <FIG> and/or may include some or all of the components of the IHS <NUM>, 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 system <NUM> discussed below may be provided by other computing systems that are configured to operate similarly as the computing system <NUM> discussed below. In the illustrated embodiment, the computing system <NUM> includes a chassis <NUM> that houses the components of the computing system <NUM>, only some of which are illustrated and discussed below.

For example, the chassis <NUM> may house a networking subsystem that, in the embodiments illustrated and discussed below, is provided by a System Control Processor (SCP) subsystem <NUM> that is provided according to the teachings of the present disclosure to perform the expanded availability functionality that is discussed in further detail below. In some examples, the SCP subsystem <NUM> may be conceptualized as an "enhanced" SmartNIC device that may be configured to perform functionality that is not available in conventional SmartNIC devices such as, for example, the platform root-of-trust functionality described by the inventors of the present disclosure in <CIT>.

However, while the networking subsystem that enables the expanded availability functionality according to the teachings of the present disclosure is illustrated and described as an enhanced SmartNIC device provided by an SCP subsystem, one of skill in the art in possession of the present disclosure will appreciated that the expanded availability functionality described herein may be enabled on otherwise conventional SmartNIC devices, via NIC devices (along with other components that enable the expanded availability functionality discussed below), and/or using other subsystems while remaining within the scope of the present disclosure as well.

In some alternative examples, the networking subsystem of the present disclosure may be provided by a BMC subsystem discussed in further detail below (e.g., with the SCP subsystem <NUM> omitted) that operates to provide local device access management to enable the expanded availability functionality discussed below. In another alternative example, the networking subsystem of the present disclosure may be provided by both the SCP subsystem <NUM> and a BMC subsystem discussed in further detail below, with the SCP subsystem <NUM> providing a single device management entry point for its computing system <NUM>, and communicating with the BMC subsystem <NUM> to provide for local device access management, in order to provide the expanded availability functionality discussed below. In yet another alternative example, the networking subsystem of the present disclosure may be provided by both the SCP subsystem <NUM> and a BMC subsystem discussed in further detail below, with the SCP subsystem <NUM> providing for both local and remote device access management to provide the expanded availability functionality discussed below. As such, while several specific examples utilizing the SCP subsystem <NUM> are described below, one of skill in the art in possession of the present disclosure will appreciate that the functionality described below may be provided in other manners (e.g., by a combined SCP/BMC subsystem) while remaining within the scope of the present disclosure as well.

In an embodiment, the SCP subsystem <NUM> may be provided by the IHS <NUM> discussed above with reference to <FIG> and/or may include some or all of the components of the IHS <NUM>. In specific examples, the SCP subsystem <NUM> may be provided as an SCP card that is configured to connect to a slot on a motherboard in the chassis <NUM>. In other examples, the SCP subsystem <NUM> may be integrated into a motherboard in the chassis <NUM>. In yet other examples the SCP subsystem <NUM> may be a separate/co-motherboard circuit board that is connected to a motherboard in the chassis <NUM> (e.g., a two-part motherboard having a first portion that enables conventional motherboard functionality, and a second portion that enables the SCP functionality discussed below). However, while a few specific examples are provided, one of skill in the art in possession of the present disclosure will appreciate that the SCP subsystem <NUM> may be provided in the computing system <NUM> in a variety of manners that will fall within the scope of the preset disclosure.

The chassis <NUM> may also house a device access controller subsystem <NUM> that, in the embodiments illustrated and discussed below, is provided by a fabric switch device. However, in other specific examples, the device access controller subsystem <NUM> may be provided by a Peripheral Component Interconnect express (PCIe) switch device, a Compute Express Link (CxL) switch device, a Gen-Z switch device, and/or other switch devices, and/or may include components such as protocol bridges and/or other combinations of element between a processing system and the devices which support the device access control capabilities of the present disclosure. As such, the device access controller subsystem <NUM> may be provided by the IHS <NUM> discussed above with reference to <FIG> and/or may include some or all of the components of the IHS <NUM> that are configured to perform the switching functionality and/or SDS control communication transmission discussed in further detail below.

The chassis <NUM> may also house a central processing system <NUM> that is coupled to the SCP subsystem <NUM> via the device access controller subsystem <NUM>, and which may include the processor <NUM> discussed above with reference to <FIG>, a Central Processing Unit (CPU) such as a x86 host processor, and/or by a variety of other processing components that would be apparent to one of skill in the art in possession of the present disclosure. In the illustrated embodiment, the chassis <NUM> may also house a Baseboard Management Controller (BMC) subsystem <NUM> that is coupled to the SCP subsystem <NUM>, and which one of skill in the art in possession of the present disclosure will recognize as being configured to manage an interface between system management software in the computing system <NUM> and hardware in the computing system <NUM>, as well as perform other BMC operations that would be apparent to one of skill in the art in possession of the present disclosure. As such, the BMC subsystem <NUM> may be configured to utilize a dedicated management network connection (e.g., illustrated by the dashed line in <FIG>), or may be configured to utilize a network connection included in the SCP subsystem <NUM> (e.g., via a Network Communications Services Interface (NCSI) that allows the use of a NIC port on the SCP subsystem <NUM>).

The chassis <NUM> may also house (or provide a coupling for) one or more Input/Output (I/O) devices <NUM> that are coupled to the SCP subsystem <NUM>, the central processing system 308j, and the BMC subsystem <NUM> via the device access controller subsystem <NUM>. As such, one of skill in the art in possession of the present disclosure will recognize that the I/O device(s) <NUM> may be housed in the chassis <NUM> and connected to an internal connector (e.g., on a motherboard in the chassis <NUM>) that is coupled to the device access controller subsystem <NUM>, or may be provided external to the chassis <NUM> and connected to an external connector (e.g., on an outer surface the chassis <NUM>) that is coupled to the device access controller subsystem <NUM>. As illustrated in <FIG>, the I/O device(s) <NUM> may include one or more Peripheral Component Interconnect express (PCIe) devices 312a (as the I/O device(s) <NUM> or in addition to other I/O device(s)). For example, the PCIe device(s) 312a may include NVMe storage devices that are house in the chassis <NUM> (i.e., and connected to an internal connector on a motherboard in the chassis <NUM>), or that are external to the chassis <NUM> (i.e., and connected to an external connector on an outer surface of the chassis <NUM>). However, while particular I/O devices and/or PCI devices have been described, one of skill in the art in possession of the present disclosure will recognize that a variety of other I/O devices (e.g., a SAS storage controller) will fall within the scope of the present disclosure as well.

The chassis <NUM> may also house one or more components <NUM> that are coupled to the central processing system <NUM> and the BMC subsystem <NUM>, and one of skill in the art in possession of the present disclosure will appreciate that the coupling of the components <NUM> to the SCP subsystem <NUM> via the central processing subsystem <NUM> may render those components <NUM> unavailable in the event the central processing subsystem <NUM> becomes unavailable. As such, in some embodiment, the components <NUM> may be omitted, or may not be necessary for the performance of Software Defined Services (SDSs) by a remote computing system.

The chassis <NUM> may also house one or more other devices <NUM> that are coupled to the SCP subsystem <NUM>, the central processing system 308j, and the BMC subsystem <NUM> via the device access controller subsystem <NUM>, and one of skill in the art in possession of the present disclosure will appreciate that the coupling of the other device(s) <NUM> to the SCP subsystem <NUM> via the device access controller subsystem <NUM> allows those other device(s) <NUM> to be made available in the event the central processing subsystem <NUM> becomes unavailable, as discussed in further detail below. As such, the other device(s) <NUM> may include any devices utilized in the performance of Software Defined Services (SDSs) such as, for example, GPUs, TPUs, FPGAs, storage devices, and/or other devices known in the art. However, while a specific computing system <NUM> has been illustrated, one of skill in the art in possession of the present disclosure will recognize that computing systems (or other devices operating according to the teachings of the present disclosure in a manner similar to that described below for the computing system <NUM>) may include a variety of components and/or component configurations for providing conventional computing system functionality, as well as the functionality discussed below, while remaining within the scope of the present disclosure as well. For example, in some embodiments, the BMC subsystem <NUM> described above with reference to <FIG> may be omitted, and the SCP subsystem <NUM> may be configured to provide a BMC subsystem that performs the functionality of the BMC subsystem <NUM> in <FIG>.

Referring now to <FIG> and <FIG>, a computing system <NUM> is illustrated that provides a particular embodiment of the computing system <NUM> discussed above with reference to <FIG> and, as such, the computing system <NUM> includes similar elements that are provided with the same reference numbers as the computing system <NUM> discussed above with reference to <FIG>. With reference to <FIG>, in this embodiment, the central processing subsystem <NUM> and the component(s) <NUM> (when present) in the computing system <NUM> may be provided in a power zone <NUM>, while the SCP subsystem <NUM>, the device access controller subsystem <NUM>, the BMC subsystem <NUM>, the I/O devices <NUM>/PCIe devices 312a, and the other device(s) <NUM> are included in a power zone <NUM> that is separate from the power zone <NUM>. As will be appreciated by one of skill in the art in possession of the present disclosure, the separation of the power zones <NUM> and <NUM> allows the central processing subsystem <NUM> and the component(s) <NUM> (when present) to be powered separately from the SCP subsystem <NUM>, the device access controller subsystem <NUM>, the BMC subsystem <NUM>, the I/O devices <NUM>/PCIe devices 312a, and the other device(s) <NUM>.

<FIG> illustrates how, in some embodiments, a power subsystem 402a may be included in the computing system <NUM> and coupled to each of the central processing subsystem <NUM> and the component(s) <NUM> (when present) to provide the power zone <NUM>, while a power subsystem 404a may be included in the computing system <NUM> and coupled to each of the SCP subsystem <NUM>, the device access controller subsystem <NUM>, the BMC subsystem <NUM>, the I/O devices <NUM>/PCIe devices 312a, and the other device(s) <NUM> to provide the power zone <NUM>, which one of skill in the art in possession of the present disclosure will recognize allows the power subsystem 404a to continue to power the SCP subsystem <NUM>, the device access controller subsystem <NUM>, the BMC subsystem <NUM>, the I/O devices <NUM>/PCIe devices 312a, and the other device(s) <NUM> in the event the power subsystem 402a becomes unavailable. For example, the power subsystems 402a and 404a may be provided by separate power subsystems (e.g., separate Power Supply Units (PSUs)), by a single power subsystem (e.g., a PSU) with separate power zone functionality, and/or in any other manner that one of skill in the art in possession of the present disclosure would recognize allows for independent provisioning of power by the power subsystems 402a and 404a to provide the independent the power zones <NUM> and <NUM> described herein. However, while the computing system <NUM> is illustrated and described with multiple independent power zones that provide expanded availability functionality, one of skill in the art in possession of the present disclosure will appreciate that the computing system <NUM> discussed above with reference to <FIG> may utilize a signal power system/power zone for all of its components and still provided some of the expanded availability functionality discussed below while remaining within the scope of the present disclosure as well.

With reference to <FIG>, an embodiment of an SCP subsystem <NUM> is illustrated that may provide the SCP subsystem <NUM> discussed above with reference to <FIG>, <FIG>, and <FIG>. As such, the SCP subsystem <NUM> may be provided by the IHS <NUM> discussed above with reference to <FIG> and/or may include some or all of the components of the IHS <NUM>, and in specific examples may be provided as an SCP card, may be integrated into a motherboard, or may be provided as a separate/co-motherboard circuit board. However, while illustrated and discussed as being provided in different manners in a computing system <NUM>/<NUM>, one of skill in the art in possession of the present disclosure will recognize that the functionality of the SCP subsystem <NUM> discussed below may be provided by other devices that are configured to operate similarly as the SCP subsystem <NUM> discussed below (e.g., other networking subsystems such as the SmartNIC device or the NIC device discussed above, etc.).

In the illustrated embodiment, the SCP subsystem <NUM> includes a chassis <NUM> (e.g., a circuit board) that supports the components of the SCP subsystem <NUM>, only some of which are illustrated below. For example, the chassis <NUM> may support a networking processing subsystem (e.g., an SCP processing subsystem) including one or more networking/SCP processors (not illustrated, but which may include the processor <NUM> discussed above with reference to <FIG>), and a networking memory subsystem (e.g., an SCP memory subsystem) (not illustrated, but which may include the memory <NUM> discussed above with reference to <FIG>) that is coupled to the networking processing system and that includes instructions that, when executed by the networking processing system, cause the networking processing system to provide an expanded availability computing system engine <NUM> that is configured to perform the functionality of the expanded availability computing system engines and/or SCP subsystems discussed below.

The chassis <NUM> may also include a storage system (not illustrated, but which may include the storage <NUM> discussed above with reference to <FIG>, the networking memory system discussed above, etc.) that is coupled to the expanded availability computing system engine <NUM> (e.g., via a coupling between the storage system and the networking/SCP processing subsystem) and that may include one or more expanded availability computing system databases <NUM> that are configured to store any of the information utilized by the expanded availability computing system engine <NUM> discussed below. The chassis <NUM> may also support a communication system <NUM> that is coupled to the expanded availability computing system engine <NUM> (e.g., via a coupling between the communication system <NUM> and the networking/SCP processing subsystem) and that may include the Network Interface Controller (NIC) device 508a illustrated in <FIG> that connects the SCP subsystem <NUM>/<NUM> to the network <NUM>, the component connections <NUM> illustrated in <FIG> that connect the SCP subsystem <NUM>/<NUM> to components in the computing system <NUM>/<NUM>, 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.

As such, the communication system <NUM> may include any of the connections discussed below between the SCP subsystem <NUM> and the network <NUM>, the central processing subsystem <NUM>, the BMC subsystem <NUM>, the I/O device(s) <NUM>, the other devices <NUM>, and/or any other components utilized with the computing system 202a/<NUM>/<NUM>. However, while a specific SCP subsystem <NUM> has been illustrated and described, one of skill in the art in possession of the present disclosure will recognize that SCP subsystems (or other networking subsystems operating according to the teachings of the present disclosure in a manner similar to that described below for the SCP subsystem <NUM>) may include a variety of components and/or component configurations for providing the functionality discussed below while remaining within the scope of the present disclosure as well.

Referring now to <FIG>, an embodiment of a method <NUM> for providing an expanded availability computing system is illustrated. As discussed below, the systems and methods of the present disclosure provide a networking subsystem in a first computing system that is configured to enable a path for a second computing system to devices in the first computing system that are utilized to provide SDSs, which allows the second computing system to provide the SDSs using the devices in the first computing system that were previously used by the first computing system to provide the SDSs, and eliminates the need to backup data associated with those SDSs and/or the rebuilding of that data on the second computing system. For example, the expanded availability computing system of the present disclosure may include a first and second computing systems coupled together via a network. The first computing system includes a device access controller subsystem coupled to devices and a central processing subsystem that is configured to provide SDS(s) using the devices via the device access controller subsystem. A networking subsystem coupled to the device access controller subsystem determines that the at least one SDS is unavailable, configures the device access controller subsystem to receive SDS communications from the networking subsystem, enables remote access for the second computing system via the networking subsystem and through device access controller subsystem to the devices, and transmits SDS communications received from the second computing system to the devices via the device access controller subsystem so that the second computing device may provide the SDS(s) using the devices via the device access controller subsystem.

As such, the first computing system is provided with expanded availability that enables use of its devices to provide the SDS(s) even when the first computing system is unable to provide those SDS(s). Furthermore, the systems and methods of the present disclosure do not require the second computing system to have the same device(s) as the first computing system in order to backup SDS(s) being provided by the first computing system. For example, the second computing system may not include expensive I/O devices like GPUs, and may instead utilize a GPU in the first computing system to backup the SDSs as discussed above, thus enabling network configurations in which a single backup system without expensive I/O devices is provided to back up multiple different primary systems with different sets of relatively expensive I/O devices.

The method <NUM> begins at block <NUM> where a central processing subsystem in a first computing system provides one or more Software Defined Services (SDSs). With reference to <FIG>, in an embodiment of block <NUM>, the central processing subsystem <NUM> in the computing system 202a/<NUM> may operate to perform SDS provisioning operations <NUM> that may include exchanging SDS communications via the device access controller subsystem <NUM> with the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> included in the computing system 202a/<NUM>, as well as performing any other operations that one of skill in the art in possession of the present disclosure would recognize as providing one or more SDSs. However, while the computing system 202a/<NUM> is discussed in the example below as providing the SDS(s) for which the high availability functionality is utilized, one of skill in the art in possession of the present disclosure will recognize that any of the computing systems 202b and up to 202c and/or <NUM> may provide the SDS(s) for which the high availability functionality is utilized 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, the device access controller subsystem <NUM> may be provided by a fabric switch device that is configured to receive SDS communications from the central processing subsystem <NUM>, and route those SDS communications to the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> to which they are directed using a variety of switching techniques known in the art. Similarly, the device access controller subsystem <NUM> provided by the fabric switch device may be configured to receive SDS communications from the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM>, and route those SDS communications to the central processing subsystem <NUM> using a variety of switching techniques known in the art. However, while described as a fabric switch device, one of skill in the art in possession of the present disclosure will appreciate that other embodiments of the device access controller subsystem <NUM> may utilize other techniques (e.g., controller techniques, translator board techniques, etc.) to enable the exchange of SDS communications discussed herein while remaining within the scope of the present disclosure as well.

Thus, at block <NUM>, the central processing subsystem <NUM> may operate to provide one or more SDSs using the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM>, which one of skill in the art in possession of the present disclosure will recognize may include software defined storage services, software defined processing services, and/or any other SDSs known the art. Furthermore, while described as providing SDSs, one of skill in the art in possession of the present disclosure will recognize that the SDSs discussed herein may be replaced by a variety of applications that utilize devices in a computing system to provide, for example, database services, data analytics, Al training, interference services, and/or any of a variety of other functionality known in the art. As will be appreciated by one of skill in the art in possession of the present disclosure, the provisioning of SDSs by the central processing subsystem <NUM> using the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> may include the generation and storage of "content" data (e.g., content data generated and stored on NVMe storage devices, SAS storage devices, and/or other storage device that may be provided by the PCIe devices 312a/I/O devices <NUM>), the generation and storage of "state" data (e.g., state data generated and stored on the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> such as GPUs), and/or the generation and storage of any other data that would be apparent to one of skill in the art in possession of the present disclosure. As such, the provisioning of the one or more SDSs using the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> may operate to configure those devices (e.g., via the data generated and stored on and/or in association with those devices) to allow the one or more SDS(s) to be provided in the manner in which they are provided at any particular point in time.

The method <NUM> then proceeds to decision block <NUM> where it is determined whether the SDS(s) are available via the first computing system. In different embodiments, at decision block <NUM>, different devices may operate at decision block <NUM> to directly determine whether the SDS(s) are available via the computing device 202a/<NUM>, and any of those direct SDS availability determinations may result in the SCP subsystem <NUM> in the computing system 202a/<NUM> determining whether the SDS(s) are available via the computing device 202a/<NUM> at block <NUM> as well. In one embodiment, at decision block <NUM>, the expanded availability computing system engine <NUM> in the SCP subsystem <NUM>/<NUM> in the computing system 202a/<NUM> may operate to directly determine whether the SDS(s) are available via the computing system 202a/<NUM> based on communications with the central processing subsystem <NUM> in the computing system 202a/<NUM> that is providing those SDS(s). For example, the expanded availability computing system engine <NUM> in the SCP subsystem <NUM>/<NUM> in the computing system 202a/<NUM> may exchange communications (e.g., "alive-test" communications) with the central processing subsystem <NUM> in the computing system 202a/<NUM> that is providing those SDS(s) via the device access controller subsystem <NUM>, and at decision block <NUM> may determine whether the central processing subsystem <NUM> has not responded to those communications for some time period, has not transmitted those communications for some time period, and/or has otherwise indicated that the SDS(s) are no longer available via the computing system 202a/<NUM>.

In another embodiment, at decision block <NUM>, the BMC subsystem <NUM> in the computing system 202a/<NUM> may operate to directly determine whether the SDS(s) are available via the computing system 202a/<NUM> based on communications with the central processing subsystem <NUM> in the computing system 202a/<NUM> that is providing those SDS(s). For example, the BMC subsystem <NUM> in the computing system 202a/<NUM> may exchange communications (e.g., "alive-test" communications) with the central processing subsystem <NUM> in the computing system 202a/<NUM> that is providing those SDS(s), and at decision block <NUM> may determine whether the central processing subsystem <NUM> has not responded to "alive-test" communications for some time period, has not transmitted "alive-test" communications for some time period, and/or has otherwise indicated that the SDS(s) are no longer available via the computing system 202a/<NUM>. As will be appreciated by one of skill in the art in possession of the present disclosure, any direct determination of whether the SDS(s) are available via the computing system 202a/<NUM> may be communicated by the BMC subsystem <NUM> to the SCP subsystem <NUM> in the computing system 202a/<NUM> in a variety of manners such that the SCP subsystem <NUM> indirectly determines whether the SDS(s) are available via the computing system 202a/<NUM>.

In another embodiment, at decision block <NUM>, the management system <NUM> may operate to directly determine whether the SDS(s) are available via the computing system 202a/<NUM> based on communications with the central processing subsystem <NUM> in the computing system 202a/<NUM> that is providing those SDS(s). For example, the management system <NUM> may exchange communications (e.g., "alive-test" communications) with the central processing subsystem <NUM> in the computing system 202a/<NUM> that is providing those SDS(s) (e.g., via the SCP subsystem <NUM> and device access controller subsystem <NUM> in the computing system 202a/<NUM>, or via the SCP subsystem <NUM> and the BMC subsystem <NUM> in the computing system 202a/<NUM>), and at decision block <NUM> may determine whether the central processing subsystem <NUM> has not responded to "alive-test" communications for some time period, has not transmitted "alive-test" communications for some time period, and/or has otherwise indicated that the SDS(s) are no longer available via the computing system 202a/<NUM>. As will be appreciated by one of skill in the art in possession of the present disclosure, any direct determination of whether the SDS(s) are available via the computing system 202a/<NUM> may be communicated by the management system <NUM> to the SCP subsystem <NUM> in the computing system 202a/<NUM> in a variety of manners (e.g., via the network <NUM>) such that the SCP subsystem <NUM> indirectly determines whether the SDS(s) are available via the computing system 202a/<NUM>.

In another embodiment, at decision block <NUM>, a remote host that is provided by the computing system 202b in the examples below may operate to directly determine whether the SDS(s) are available via the computing system 202a/<NUM> based on communications with the central processing subsystem <NUM> in the computing system 202a/<NUM> that is providing those SDS(s). For example, the computing system 202b may exchange communications (e.g., "alive-test" communications) with the central processing subsystem <NUM> in the computing system 202a/<NUM> that is providing those SDS(s) (e.g., via the SCP subsystem <NUM> and device access controller subsystem <NUM> in the computing system 202a/<NUM>, or via the SCP subsystem <NUM> and the BMC subsystem <NUM> in the computing system 202a/<NUM>), and at decision block <NUM> may determine whether the central processing subsystem <NUM> has not responded to "alive-test" communications for some time period, has not transmitted "alive-test" communications for some time period, and/or has otherwise indicated that the SDS(s) are no longer available via the computing system 202a/<NUM>. As will be appreciated by one of skill in the art in possession of the present disclosure, any direct determination of whether the SDS(s) are available via the computing system 202a/<NUM> may be communicated by the computing system 202b to the SCP subsystem <NUM> in the computing system 202a/<NUM> in a variety of manners (e.g., via the network <NUM>) such that the SCP subsystem <NUM> indirectly determines whether the SDS(s) are available via the computing system 202a/<NUM>.

If, at decision block <NUM>, it is determined that the SDS(s) are available via the first computing system, the method <NUM> returns to block <NUM>. As such, the method <NUM> may loop such that the central processing subsystem <NUM> in the computing system 202a/<NUM> operates to provide the SDS(s) as along as it is capable of doing so. If, at decision block <NUM>, it is determined that the SDS(s) are not available via the first computing system, the method <NUM> proceeds to block <NUM> where a networking subsystem in the first computing system configures a device access controller subsystem in the first computing system to receive SDS communications from the networking subsystem. As will be appreciated by one of skill in the art in possession of the present disclosure, the SDS(s) being provided by the central processing subsystem <NUM> in the computing system 202a/<NUM> may become unavailable for a wide variety of reasons that will fall within the scope of the present disclosure. For example, the SDS(s) being provided by the central processing subsystem <NUM> in the computing system 202a/<NUM> may become unavailable due to a central processing subsystem failure that makes the central processing subsystem <NUM> unavailable, a computing system reboot that makes the central processing subsystem <NUM> unavailable while reboot operations are performed (reboot operations that may be performed in an attempt to remedy a software issue associated with the SDS(s)), a failure or unavailability of the power zone <NUM> that makes the central processing subsystem <NUM> unavailable, and/or any other SDS unavailability situation that would be apparent to one of skill in the art in possession of the present disclosure.

As such, with reference to <FIG>, in some embodiments of decision block <NUM> the central processing subsystem <NUM> may become unavailable (as indicated by element <NUM> in the <FIG>) such that the SDS(s) are not available via the computing system 202a/<NUM>, and that SDS unavailability will cause the method <NUM> to proceed to block <NUM>. In an embodiment, at block <NUM>, the SCP subsystem <NUM>/<NUM> in the computing system 202a/<NUM> may operate to directly or indirectly configure the device access controller subsystem <NUM> in the computing system 202a/<NUM> to receive SDS communications from the SCP subsystem <NUM>/<NUM> in the computing system 202a/<NUM>. For example, with reference to <FIG>, the expanded available computing system engine <NUM> in the SCP subsystem <NUM>/<NUM> may perform device access controller subsystem configuration operations <NUM> to directly configure the device access controller subsystem <NUM> in the computing system 202a/<NUM> by, for example, generating and transmitting device access controller subsystem reconfiguration instructions via the component connections 508b in the communication system <NUM> and to the device access controller subsystem <NUM>.

In another example, with reference to <FIG>, at block <NUM> the expanded available computing system engine <NUM> in the SCP subsystem <NUM>/<NUM> may perform device access controller subsystem configuration operations <NUM> to indirectly configure the device access controller subsystem <NUM> in the computing system 202a/<NUM> by, for example, generating and transmitting device access controller subsystem reconfiguration instructions via the component connections 508b in the communication system <NUM> and to the BMC subsystem <NUM> in the computing system 202a/<NUM>, which causes the BMC subsystem <NUM> to perform device access controller subsystem configuration operations <NUM> to configure the device access controller subsystem <NUM> accordingly.

In another example, with reference to <FIG> and <FIG>, at block <NUM> the management system <NUM> may perform device access controller subsystem configuration operations <NUM> to configure the device access controller subsystem <NUM> in the computing system 202a/<NUM> by, for example, generating and transmitting device access controller subsystem configuration instructions via the network <NUM> and to the SCP subsystem <NUM>/<NUM> in the computing system 202a/<NUM>, which causes the SCP subsystem <NUM>/<NUM> to perform device access controller subsystem configuration operations <NUM> to indirectly configure the device access controller subsystem <NUM> accordingly (e.g., by forwarding those device access controller subsystem configuration instructions received from the management system <NUM> to the device access controller subsystem <NUM>).

In another example, with reference to <FIG> and <FIG>, at block <NUM> a remote host that is provided by the computing system 202b in the examples below may operate to perform device access controller subsystem configuration operations <NUM> to configure the device access controller subsystem <NUM> in the computing system 202a/<NUM> by, for example, generating and transmitting device access controller subsystem configuration instructions via the network <NUM> and to the SCP subsystem <NUM>/<NUM> in the computing system 202a/<NUM>, which causes the SCP subsystem <NUM>/<NUM> to perform device access controller subsystem configuration operations <NUM> to indirectly configure the device access controller subsystem <NUM> accordingly (e.g., by forwarding those device access controller subsystem configuration instructions received from the computing system 202b to the device access controller subsystem <NUM>).

However, while several examples of the configuration of the device access controller subsystem <NUM> are described, one of skill in the art in possession of the present disclosure will appreciate that the device access controller subsystem of the present disclosure (e.g., a fabric switch device) may be configured in a variety of manners that will fall within the scope of the present disclosure as well. Furthermore, while a few specific techniques are described herein for configuring access to devices via the device access controller subsystem, some of the inventors of the present disclosure describe further techniques for configuring access to devices in a computing system that may be utilized along with the present disclosure in <CIT>.

As will be appreciated by one of skill in the art in possession of the present disclosure, prior to block <NUM> the device access controller subsystem <NUM> may be configured to receive SDS communications from the central processing subsystem <NUM> and transmit those SDS communications to the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> to provide the SDS(s) as discussed above with reference to block <NUM>. For example, a fabric switch device that provides the device access controller subsystem <NUM> in the computing system 202a/<NUM> may be configured to receive SDS communications from the central processing subsystem <NUM> and transmit those SDS communications to the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> via the fabric.

Furthermore, one of skill in the art in possession of the present disclosure will recognize how, in some embodiments, the device access controller subsystem <NUM> may be reconfigured to receive SDS communications from the SCP subsystem <NUM>/<NUM> in the computing system 202a/<NUM> and transmit those SDS communications to the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> to provide the SDS(s) as discussed in further detail below with reference to block <NUM>. For example, a fabric switch device that provides the device access controller subsystem <NUM> in the computing system 202a/<NUM> may be reconfigured to receive SDS communications from the SCP subsystem <NUM>/<NUM> in the computing system 202a/<NUM> and transmit those SDS communications to the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> via the fabric. However, while a specific configuration/reconfiguration scenario is described, one of skill in the art in possession of the present disclosure will appreciate how the device access controller subsystem <NUM> may be configured to provide the functionality in a variety of manners that will fall 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 I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> may not be configured and/or capable of presenting themselves as more than one device, which requires the reconfiguration of the device access controller subsystem <NUM> discussed above in order switch access to that device from the central processing subsystem <NUM> to the SCP subsystem <NUM>/<NUM> in order to enable the remote access to that device through the network <NUM> and via the SCP subsystem <NUM>/<NUM> as discussed in further detail below. However, in some embodiments, the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> in the computing system 202a/<NUM> may be configured to present themselves to both the SCP subsystem <NUM>/<NUM> and the central processing subsystem <NUM> simultaneously such that the reconfiguration of the device access controller subsystem <NUM> discussed above is not required.

For example, any of the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> may be configured to natively support multiple device presentation (e.g., using PCIe I/O virtualization techniques) that eliminate the need to reconfigure the device access controller subsystem <NUM> following the determination that the SDS(s) are unavailable via the computing system 202a/<NUM>. In another example, any of the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> may include multiple physical ports to support multiple device presentation that eliminate the need to reconfigure the device access controller subsystem <NUM> following the determination that the SDS(s) are unavailable via the computing system 202a/<NUM>. As such, the configuration of the device access controller subsystem <NUM> in the computing system 202a/<NUM> to receive SDS communications from the SCP subsystem <NUM>/<NUM> at block <NUM> may be performed prior to determining that the SDS(s) are unavailable via the computing system 202a/<NUM> (i.e., the device access controller subsystem <NUM> may be configured to receive SDS communications from the SCP subsystem <NUM>/<NUM> simply because the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> are configured to natively support multiple device presentation as discussed above).

The method <NUM> then proceeds to block <NUM> where the networking subsystem enables remote access for a second computing system via a network and the networking subsystem and through the device access controller subsystem to devices in the first computing system. In an embodiment, at block <NUM>, the expanded availability computing system engine <NUM> in the SCP subsystem <NUM>/<NUM> may operate to enable remote access for the computing system 202b via the network <NUM> and the SCP subsystem <NUM>/<NUM> and through the device access controller subsystem <NUM> to the to the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> in the computing system 202a/<NUM>. For example, at block <NUM>, the expanded availability computing system engine <NUM> in the SCP subsystem <NUM>/<NUM> may configure the NIC device 508a in the communication system <NUM> in a manner that allows the computing system 202b remote access via the network <NUM> and the SCP subsystem <NUM>/<NUM> and through the device access controller subsystem <NUM> to the to the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> in the computing system 202a/<NUM>.

For example, the configurations performed at block <NUM> may include an SCP subsystem <NUM>/<NUM> being configured to perform a remote access protocol (e.g., an NVMe over Fabric protocol) to transmit device traffic over the network <NUM> that would otherwise travel locally within its computing system, configuring an SCP subsystem to present the devices in its computing system to remote SCP subsystems, configuring an SCP subsystem to access remote devices, and/or other configuration operations that would be apparent to one of skill in the art in possession of the present disclosure. However, while particular operations have been described for enabling remote access for the computing system 202b to the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> in the computing system 202a/<NUM>, one of skill in the art in possession of the present disclosure will appreciate that other operations may be performed to enable the remote access discussed below while remaining within the scope of the present disclosure as well.

The method <NUM> then proceeds to block <NUM> where the networking subsystem transmits SDS communications received from the second computing system to the devices via the device access controller subsystem. In an embodiment, at block <NUM>, the computing system 202b may be configured to provide the SDS(s) that were previously being provided by the computing system 202a according to block <NUM>. For example, at block <NUM>, the SCP subsystem <NUM>/<NUM> and/or the management system <NUM> may use a variety of SDS configurations techniques known in the art operate to configure the computing system 202b to perform remote SDS provisioning operations using the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> in the computing system 202a/<NUM>.

With reference to <FIG>, <FIG>, and <FIG>, in response to being configured to perform remote SDS operations, the SDS(s) that were previously performed by the central processing subsystem <NUM> in the computing system 202a/<NUM> may be restarted on the central processing subsystem <NUM> in the computing system 202b/<NUM>, which may operate to perform remote SDS provisioning operations <NUM> that may include exchanging SDS communications via the network <NUM> with the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> included in the computing system 202a/<NUM>, as well as performing any other operations that one of skill in the art in possession of the present disclosure would recognize as providing one or more SDSs. For example, the central processing subsystem <NUM> in the computing system 202b/<NUM> may transmit SDS communications to the device access controller subsystem <NUM> in the computing system 202b/<NUM>, and the device access controller subsystem <NUM> in the computing system 202b/<NUM> may forward those SDS communications to the SCP subsystem <NUM> in the computing system 202b/<NUM> so that the SCP subsystem <NUM> in the computing system 202b/<NUM> transmits those SDS communications via the network <NUM> to the computing system 202a/<NUM>, as illustrated in <FIG> and <FIG>. The SCP subsystem <NUM> in the computing system 202a/<NUM> may then receive those SDS communications and transmit them to the device controller subsystem <NUM> in the computing system 202a/<NUM>, and the device controller subsystem <NUM> in the computing system 202a/<NUM> may then forward those SDS communications to the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> included in the computing system 202a/<NUM>.

Similarly, the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> included in the computing system 202a/<NUM> may transmit SDS communications to the device access controller subsystem <NUM> in the computing system 202a/<NUM>, and the device access controller subsystem <NUM> in the computing system 202a/<NUM> may forward those SDS communications to the SCP subsystem <NUM> in the computing system 202a/<NUM> so that the SCP subsystem <NUM> in the computing system 202a/<NUM> transmits those SDS communications via the network <NUM> to the computing system 202b/<NUM>. The SCP subsystem <NUM> in the computing system 202b/<NUM> may then receive those SDS communications and transmit them to the device controller subsystem <NUM> in the computing system 202b/<NUM>, and the device controller subsystem <NUM> in the computing system 202b/<NUM> may then forward those SDS communications to the central processing subsystem <NUM> in the computing system 202b/<NUM>.

As will be appreciated by one of skill in the art in possession of the present disclosure, the exchange of SDS communications between the central processing subsystem <NUM> in the computing system 202b/<NUM> and the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> included in the computing system 202a/<NUM> may operate to provide the same SDS(s) that were provided by the central processing subsystem <NUM> In the computing system 202a/<NUM> according to block <NUM>. Furthermore, while the computing system 202b/<NUM> is discussed in the example below as remotely providing the SDS(s) to provide the high availability functionality of the present disclosure, one of skill in the art in possession of the present disclosure will recognize that any other computing systems (e.g., up to 202c and/or <NUM>) may remotely provide the SDS(s) to provide the high availability functionality while remaining within the scope of the present disclosure as well.

Thus, at block <NUM>, the central processing subsystem <NUM> in the computing system 202b/<NUM> may operate to remote provide one or more SDSs using the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> in the computing system 202a/<NUM>, which one of skill in the art in possession of the present disclosure will recognize may include software defined storage services, software defined processing services, and/or any other SDSs known the art. Furthermore, while described as providing SDSs, one of skill in the art in possession of the present disclosure will recognize that the SDSs discussed herein may be replaced by a variety of applications that utilize devices in a computing system to provide, for example, database services, data analytics, Al training, interference services, and/or any of a variety of other functionality known in the art. As will be appreciated by one of skill in the art in possession of the present disclosure, the provisioning of SDSs by the central processing subsystem <NUM> in the computing system 202b/<NUM> using the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> in the computing system 202a allows for the utilization of "content" data (e.g., stored on NVMe storage devices, SAS storage devices, and/or other storage device that may be provided by the PCIe devices 312a/I/O devices <NUM> in the computing system 202a/<NUM>), the utilization of "state" data (e.g., stored on the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> such as GPUs in the computing system 202a/<NUM>), and/or the utilization of any other data in the computing system 202a/<NUM> that would be apparent to one of skill in the art in possession of the present disclosure. As such, the remote provisioning of the one or more SDSs by the computing system 202b using the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> in the computing system 202a allows the one or more SDS(s) to be provided in the same manner in which they were provided by the computing system 202a.

As will be appreciated by one of skill in the art in possession of the present disclosure, the remote provisioning of the SDS(s) by a second computing system using devices in a first computing system that was previously providing those SDS(s) locally may be performed in a variety of situations. For example, if a central processing subsystem in the first computing system fails or otherwise becomes unavailable such that the SDS(s) being provided by that central processing subsystem become unavailable, the second computing system may be utilized to remotely provision those SDS(s) while the first computing system is power cycled in an attempt to fix its central processing subsystem unavailability. In another example, if a power zone that includes a central processing subsystem in the first computing system fails or otherwise becomes unavailable such that the SDS(s) being provided by that central processing subsystem become unavailable, the second computing system may be utilized to remotely provision those SDS(s) until that power zone is restored.

In another example, if an update is being performed on an operating system (or other software) in the first computing system such that the SDS(s) being provided using that operating system become unavailable, the second computing system may be utilized to remotely provision those SDS(s) until that operating system (or other software) update is completed. In another example, if a reboot of the first computing system is being performed such that the SDS(s) being provided using that first computing system become unavailable, the second computing system may be utilized to remotely provision those SDS(s) until that reboot operation has been completed, which one of skill in the art in possession of the present disclosure will recognize can be a relatively substantial amount of time due to the tendency to perform time-consuming firmware updates when reboot operations are performed (particular when those reboot operations are performed on computing systems that are seldom rebooted). However, while a variety of situations in which remote provisioning of SDSs by a second computing system using devices in a first computing system (which was previously locally providing those SDS(s)) has been described, one of skill in the art in possession of the present disclosure will appreciate that the remote provisioning/expanded availability functionality of the present disclosure will provide benefits in a variety of other situations that will fall within the scope of the present disclosure as well.

The method <NUM> then proceeds to decision block <NUM> where it is determined whether the first computing system is available to provide the SDS(s) that became unavailable at decision block <NUM>. Similarly as discussed above for decision block <NUM>, at decision block <NUM> different devices may operate to directly determine whether the SDS(s) are available via the computing device 202a/<NUM>, and any of those direct determinations may result in the SCP subsystem <NUM> in the computing system 202a/<NUM> determining whether the SDS(s) are available via the computing device 202a/<NUM> at block <NUM> as well. As such, at decision block <NUM> the SCP subsystem <NUM>/<NUM> in the computing system 202a/<NUM> may operate to directly determine whether the SDS(s) are available via the computing system 202a/<NUM>, the BMC subsystem <NUM> in the computing system 202a/<NUM> may operate to directly determine whether the SDS(s) are available via the computing system 202a/<NUM> and communicate that to the SCP subsystem <NUM> in the computing system 202a/<NUM>, the management system <NUM> may operate to directly determine whether the SDS(s) are available via the computing system 202a/<NUM> and communicate that to the SCP subsystem <NUM> in the computing system 202a/<NUM>, or a remote host that is provided by the computing system 202b may operate to directly determine whether the SDS(s) are available via the computing system 202a/<NUM> and communicate that to the SCP subsystem <NUM> in the computing system 202a/<NUM>.

In a specific example, the determination of whether SDS(s) are available via a computing system may include a determination of whether that computing system is ready, capable of, and/or otherwise currently configured to provide those SDS(s). For example, the inability to provide the SDS(s) may have resulted from a hardware failure in the computing system, and the determination of whether the SDS(s) are available at decision block <NUM> may include determining whether that hardware failure has been repaired and that computing system has been rebooted. However, one of skill in the art in possession of the present disclosure will appreciate that SDS availability on a computing system may be determined in a variety of manners that will fall within the scope of the present disclosure as well.

If, at decision block <NUM>, it is determined that the first computing system is not available to provide the SDS(s) that became unavailable at decision block <NUM>, the method <NUM> returns to block <NUM>. As such, the method <NUM> may loop such that the central processing subsystem <NUM> in the computing system 202b/<NUM> operates to provide the SDS(s) using the devices in the computing system 202a/<NUM> as long as the SDS(s) are not available via the computing system 202a/<NUM>. If, at decision block <NUM>, it is determined that the first computing system is available to provide the SDS(s) that became unavailable at decision block <NUM>, the method <NUM> proceeds to block <NUM> where a networking subsystem in the first computing system configures the device access controller subsystem to receive SDS communications from the central processing subsystem. As will be appreciated by one of skill in the art in possession of the present disclosure, the performance of SDS(s) using the central processing subsystem <NUM> in the computing system 202a/<NUM> may once again become available for a wide variety of reasons that will fall within the scope of the present disclosure. For example, the SDS(s) may once again become available via the central processing subsystem <NUM> in the computing system 202a/<NUM> due to a central processing subsystem recovery that makes the central processing subsystem <NUM> available, the completion of a computing system reboot that makes the central processing subsystem <NUM> available, a recovery or other availability of the power zone <NUM> that makes the central processing subsystem <NUM> available, and/or any other SDS availability situation that would be apparent to one of skill in the art in possession of the present disclosure.

As such, in some embodiments of decision block <NUM>, the central processing subsystem <NUM> may become available such that the SDS(s) are available via the computing system 202a/<NUM>, and that SDS availability will cause the method <NUM> to proceed to block <NUM> where the central processing subsystem <NUM> in the computing system 202b/<NUM> is stopped from providing the SDS(s) using the devices in the computing system 202a/<NUM>, local access to those devices is restored for the central processing subsystem <NUM> in the computing system 202a/<NUM>, and the central processing subsystem <NUM> in the computing system 202a/<NUM> then begins to again provide those SDS(s). In an embodiment, at block <NUM>, the SCP subsystem <NUM>/<NUM> in the computing system 202a/<NUM> may operate to directly or indirectly configure the device access controller subsystem <NUM> in the computing system 202a/<NUM> to receive SDS communications from the central processing subsystem <NUM> in the computing system 202a/<NUM>. For example, similarly as discussed above with reference to <FIG>, the expanded available computing system engine <NUM> in the SCP subsystem <NUM>/<NUM> may perform device access controller subsystem configuration operations (similar to the device access controller subsystem configuration operations <NUM>) to directly configure the device access controller subsystem <NUM> in the computing system 202a/<NUM> by, for example, generating and transmitting device access controller subsystem reconfiguration instructions via the component connections 508b in the communication system <NUM> and to the device access controller subsystem <NUM>.

In another example, similarly as discussed above with reference to <FIG>, at block <NUM> the expanded available computing system engine <NUM> in the SCP subsystem <NUM>/<NUM> may perform device access controller subsystem configuration operations (similar to the device access controller subsystem configuration operations <NUM>) to indirectly configure the device access controller subsystem <NUM> in the computing system 202a/<NUM> by, for example, generating and transmitting device access controller subsystem configuration instructions via the component connections 508b in the communication system <NUM> and to the BMC subsystem <NUM> in the computing system 202a/<NUM>, which causes the BMC subsystem <NUM> to perform device access controller subsystem configuration operations <NUM> to configure the device access controller subsystem <NUM> accordingly.

In another example, similarly as discussed above with reference to <FIG> and <FIG>, at block <NUM> the management system <NUM> may perform device access controller subsystem configuration operations (similar to the device access controller subsystem configuration operations <NUM>) to configure the device access controller subsystem <NUM> in the computing system 202a/<NUM> by, for example, generating and transmitting device access controller subsystem configuration instructions via the network <NUM> and to the SCP subsystem <NUM>/<NUM> in the computing system 202a/<NUM>, which causes the SCP subsystem <NUM>/<NUM> to perform device access controller subsystem configuration operations <NUM> to indirectly configure the device access controller subsystem <NUM> accordingly (e.g., by forwarding those device access controller subsystem configuration instructions received from the management system <NUM> to the device access controller subsystem <NUM>).

In another example, similarly as discussed above with reference to <FIG> and <FIG>, at block <NUM> a remote host that is provided by the computing system 202b may operate to perform device access controller subsystem configuration operations (similar to the device access controller subsystem configuration operations <NUM>) to configure the device access controller subsystem <NUM> in the computing system 202a/<NUM> by, for example, generating and transmitting device access controller subsystem configuration instructions via the network <NUM> and to the SCP subsystem <NUM>/<NUM> in the computing system 202a/<NUM>, which causes the SCP subsystem <NUM>/<NUM> to perform device access controller subsystem configuration operations <NUM> to indirectly configure the device access controller subsystem <NUM> accordingly (e.g., by forwarding those device access controller subsystem configuration instructions received from the computing system 202b to the device access controller subsystem <NUM>).

As will be appreciated by one of skill in the art in possession of the present disclosure, at block <NUM> the device access controller subsystem <NUM> may be reconfigured to receive SDS communications from the central processing subsystem <NUM> and transmit those SDS communications to the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> to provide the SDS(s) as discussed above with reference to block <NUM>. For example, a fabric switch device that provides the device access controller subsystem <NUM> in the computing system 202a/<NUM> may be configured to receive SDS communications from the central processing subsystem <NUM> and transmit those SDS communications to the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> via the fabric. However, while a specific configuration/reconfiguration scenario is described, one of skill in the art in possession of the present disclosure will appreciate how the device access controller subsystem <NUM> may be configured to provide the functionality in a variety of manners that will fall within the scope of the present disclosure as well.

As discussed above, the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> may not be configured and/or capable of presenting themselves as more than one device, which requires the reconfiguration of the device access controller subsystem <NUM> discussed above in order switch access to that device from the SCP subsystem <NUM>/<NUM> to the central processing subsystem <NUM> in order to enable local access to that device by the central processing subsystem <NUM>. However, as also discussed above, in some embodiments the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> in the computing system 202a/<NUM> may be configured to present themselves to both the SCP subsystem <NUM>/<NUM> and the central processing subsystem <NUM> simultaneously such that the reconfiguration of the device access controller subsystem <NUM> discussed above is not required. For example, any of the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> may be configured to natively support multiple device presentation (e.g., using device that are natively multi-port or that may be provided multiple ports using PCIe I/O virtualization techniques) that eliminate the need to reconfigure the device access controller subsystem <NUM> following the determination that the SDS(s) are available via the computing system 202a/<NUM>. As such, the configuration of the device access controller subsystem <NUM> in the computing system 202a/<NUM> to receive SDS communications from the central processing subsystem <NUM> may be performed prior to determining that the SDS(s) are available via the computing system 202a/<NUM> (i.e., the device access controller subsystem <NUM> may be configured to receive SDS communications from the central processing subsystem <NUM> based on the I/O device(s) <NUM>, PCIe device(s) 312a, and/or other device(s) <NUM> being configured to natively support multiple device presentation as discussed above). The method <NUM> then returns to block <NUM> where the central processing subsystem <NUM> in the computing system 202a/<NUM> operates to provide the SDS(s) similarly as discussed above.

Thus, systems and methods have been described that provide an SCP subsystem in a first server that is configured to enable a path for a second server to devices in the first server that are utilized to provide SDSs, which allows the second server to provide the SDSs using the devices in the first server that were previously used by the first server to provide the SDSs, and eliminates the need to backup data associated with those SDSs and/or rebuild that data on the second server. For example, the expanded availability computing system of the present disclosure may include a first and second server coupled together via a network. The first server includes a fabric switch coupled to devices and a host CPU complex that is configured to provide SDS(s) using the devices via the fabric switch. An SCP subsystem coupled to the fabric switch determines that the at least one SDS is unavailable, configures the fabric switch to receive SDS communications from the SCP subsystem, enables remote access for the second server via the SCP subsystem and through fabric switch to the devices, and transmits SDS communications received from the second server to the devices via the fabric switch so that the second server provides the SDS(s) using the devices via the fabric switch. As such, the first server is provided with expanded availability that enables use of its devices to provide the SDS(s) even when the first server is unable to provide those SDS(s).

Claim 1:
An expanded availability computing system (<NUM>), comprising:
a second computing system; and
a first computing system that is coupled to the second computing system via a network, wherein the first computing system includes:
a device access controller subsystem (<NUM>);
a plurality of devices that are coupled to the device access controller subsystem;
a central processing subsystem (<NUM>) that is coupled to the device access controller subsystem, wherein the central processing subsystem (<NUM>) is configured to provide at least one Software Defined Service, SDS, using the plurality of devices via the device access controller subsystem; and
a networking subsystem that is coupled to the device access controller subsystem (<NUM>), wherein the networking subsystem is configured to:
determine that the at least one SDS that was being provided by the central processing subsystem (<NUM>) is unavailable;
configure the device access controller subsystem (<NUM>) to receive SDS communications from the networking subsystem;
enable remote access for the second computing system via the networking subsystem and through device access controller subsystem (<NUM>) to the plurality of devices; and
transmit SDS communications received from the second computing system to the plurality of devices via the device access controller subsystem (<NUM>) in order to allow the second computing device to provide the at least one SDS using the plurality of devices via the device access controller subsystem (<NUM>).