IP Library Granted Patent US 8,281,043
Granted Patent B2
US 8,281,043 · App. 12/836,341 · Granted Oct 2, 2012

Out-of-band access to storage devices through port-sharing hardware

Assignee: Intel Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,281,043
App. No.
12/836,341
Granted
Oct 2, 2012
Kind
B2
Abstract

A method, apparatus, system, and computer program product for enabling out-of-band access to storage devices through port-sharing hardware. Providing out-of-band access to storage devices enables system management functions to be performed when an operating system is non-functional as well as when the operating system is active. Storage commands originating with a management service can be interleaved with storage commands issued by the host operating system. The host operating system maintains ownership and control over its storage devices, but management activities can be performed while the host operating system is operational.

Claims (73)

1. A computer-implemented method comprising:

in an processing system comprising a processor, a memory, a storage device, a plurality of ports, a host operating system executed by the processor, a host controller interface accessible by the host operating system, and an out-of-band controller interface inaccessible by the host operating system, wherein the out-of-band controller interface shares a shared port of the plurality of ports with the host controller interface, performing the following:

receiving, with the host controller interface, a first command to access the storage device;

receiving, with the out-of-band controller interface, a second command to access the storage device;

determining, prior to executing the first command, an expected status of the storage device that is expected to result due to execution of the first command;

determining whether executing the second command would interfere with the expected status; and

in response to determining that executing the second command would not interfere with the expected status, executing the first command prior to executing the second command, wherein the second command is executed without involvement of the host operating system.

2. The method of claim 1 , further comprising:

in response to determining that executing the second command would interfere with the expected status, canceling the second command and executing the first command.

3. The method of claim 1 , further comprising:

in response to determining that executing the second command would interfere with the expected status, delaying the second command until a desired status of the storage device is achieved;

executing the first command; and

executing the second command when the desired status of the storage device is achieved.

4. The method of claim 1 , further comprising:

in response to determining that executing the second command would interfere with the expected status, determining a third command to restore the expected status after executing the second command, and executing the first command, the second command, and the third command while delaying signaling completion of the first command until after the third command has executed.

5. The method of claim 1 , wherein

the host operating system is active when the first and second commands are received and while the first and second commands are executed.

6. The method of claim 1 , further comprising:

placing the first command into a first memory associated with the host controller interface;

protecting the first memory from access by the out-of-band controller interface;

placing the second command into a second memory associated with the out-of-band controller interface; and

protecting the second memory from access by the host operating system and the host controller interface.

7. A system comprising:

a processor;

a storage device;

a plurality of ports;

a host operating system executed by the processor;

a host controller interface accessible by the host operating system; and

an out-of-band controller interface inaccessible by the host operating system, wherein the out-of-band controller interface shares a shared port of the plurality of ports with the host controller interface;

a memory coupled to the processor, the memory comprising instructions for performing the following:

receiving a first command to access the storage device via the host controller interface;

receiving a second command to access the storage device via the out-of-band controller interface;

determining, prior to executing the first command, an expected status of the storage device that is expected to result due to execution of the first command;

determining whether executing the second command would interfere with the expected status; and

in response to determining that executing the second command would not interfere with the expected status, executing the first command prior to executing the second command, wherein the second command is executed without involvement of the host operating system.

8. The system of claim 7 , wherein the instructions further comprise instructions for performing the following:

in response to determining that executing the second command would interfere with the expected status, canceling the second command and executing the first command.

9. The system of claim 7 , wherein the instructions further comprise instructions for performing the following:

in response to determining that executing the second command would interfere with the expected status, delaying the second command until a desired status of the storage device is achieved;

executing the first command; and

executing the second command when the desired status of the storage device is achieved.

10. The system of claim 7 , wherein the instructions further comprise instructions for performing the following:

in response to determining that executing the second command would interfere with the expected status, determining a third command to restore the expected status after executing the second command, and executing the first command, the second command, and the third command while delaying signaling completion of the first command until after the third command has executed.

11. The system of claim 7 , wherein the instructions further comprise instructions for performing the following:

the host operating system is active when the first and second commands are received and while the first and second commands are executed.

12. The system of claim 7 , wherein the instructions further comprise instructions for performing the following:

placing the first command into a first memory associated with the host controller interface;

protecting the first memory from access by the out-of-band controller interface;

placing the second command into a second memory associated with the out-of-band controller interface; and

protecting the second memory from access by the host operating system and the host controller interface.

13. A computer program product comprising:

a non-transitory, machine-accessible storage medium; and

instructions stored on the non-transitory, machine-accessible storage medium, wherein the instructions, when executed in a processing system, cause the processing system to perform operations, wherein the processing system comprises a processor, a memory, a storage device, a plurality of ports, a host operating system executed by the processor, a host controller interface accessible by the host operating system, and an out-of-band controller interface inaccessible by the host operating system, wherein the out-of-band controller interface shares a shared port of the plurality of ports with the host controller interface, and wherein the operations comprise:

receiving a first command to access the storage device via the host controller interface;

receiving a second command to access the storage device via the out-of-band controller interface;

determining, prior to executing the first command, an expected status of the storage device that is expected to result due to execution of the first command;

determining whether executing the second command would interfere with the expected status; and

in response to determining that executing the second command would not interfere with the expected status, executing the first command prior to executing the second command, wherein the second command is executed without involvement of the host operating system.

14. The computer program product of claim 13 , wherein the instructions further cause the processing system to perform the following operations:

in response to determining that executing the second command would interfere with the expected status, canceling the second command and executing the first command.

15. The computer program product of claim 13 , wherein the instructions further cause the processing system to perform the following operations:

in response to determining that executing the second command would interfere with the expected status, delaying the second command until a desired status of the storage device is achieved;

executing the first command; and

executing the second command when the desired status of the storage device is achieved.

16. The computer program product of claim 13 , wherein the instructions further cause the processing system to perform the following operations:

in response to determining that executing the second command would interfere with the expected status, determining a third command to restore the expected status after executing the second command, and executing the first command, the second command, and the third command while delaying signaling completion of the first command until after the third command has executed.

17. The computer program product of claim 13 , wherein the instructions further cause the processing system to perform the following operations:

the host operating system is active when the first and second commands are received and while the first and second commands are executed.

18. The computer program product of claim 13 , wherein the instructions further cause the processing system to perform the following operations:

placing the first command into a first memory associated with the host controller interface;

protecting the first memory from access by the out-of-band controller interface;

placing the second command into a second memory associated with the out-of-band controller interface; and

protecting the second memory from access by the host operating system and the host controller interface.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 18, 2025
From: INTEL CORPORATION
To: SK HYNIX NAND PRODUCT SOLUTIONS CORP. (DBA SOLIDIGM)
Reel/Frame 072890/0186 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 15, 2010
From: EDWARDS, DAVID A.; OOI, ENG HUN; GOKULRANGAN, VENKAT R.; KHOSRAVI, HORMUZD M.; GAN, CHAI HUAT
To: INTEL CORPORATION
Reel/Frame 024687/0655 →
Continuity (1)
Related Publication 20120017011A1 · Jan 19, 2012