An i/O device having function level reset functionality includes a host interface that may include a master reset unit, a plurality of client interfaces, each corresponding to one or more functions, and a plurality of hardware resources. Each hardware resource may be associated with a respective function. In response to receiving a reset request to reset a specific function, the master reset unit may provide to each client interface, a request signal corresponding to the reset request, and a signal identifying the specific function. Each client interface having an association with the specific function may initiate a reset operation of the associated hardware resources, and also provide a client reset done signal for the specific function to the master reset unit in response to completion of the reset operations of the hardware resources. The master reset unit provides a reset done signal for the specific function to the host interface.
|
5. A method for resetting individual functions within an input/output (i/O) device, the method comprising:
receiving from a requester, a reset request for a specific function of a plurality of functions, wherein each function is associated with one or more respective hardware resources;
providing a request signal corresponding to the reset request, and providing a signal corresponding to the specific function, to each of a plurality of client interfaces, wherein each client interface corresponds to one or more of the plurality functions;
each client interface having an association with the specific function is configured to initiating a reset operation of each of the associated hardware resources, and providing a client reset done signal for the specific function in response to each of the associated hardware resources completing the reset operation;
providing a reset done signal for the specific function; and
providing a master done acknowledge signal and a signal identifying the specific function to each client that provided a client reset done signal.
6. A method for resetting individual functions within an input/output (i/O) device, the method comprising:
receiving from a requester, a reset request for a specific function of a plurality of functions, wherein each function is associated with one or more respective hardware resources;
providing a request signal corresponding to the reset request, and providing a signal corresponding to the specific function, to each of a plurality of client interfaces, wherein each client interface corresponds to one or more of the plurality functions;
each client interface having an association with the specific function is configured to initiating a reset operation of each of the associated hardware resources, and providing a client reset done signal for the specific function in response to each of the associated hardware resources completing the reset operation;
providing a reset done signal for the specific function; and
each client interface waiting to send the client reset done signal until each associated subclient completes reset operations initiated to each of the associated hardware resources.
2. An input/output (i/O) device comprising:
a host interface configured to provide an i/O connection to a host device, wherein the host interface includes:
a master reset unit;
a plurality of client interfaces, each corresponding to one or more functions;
a plurality of hardware resources coupled to the host interface, wherein each hardware resource is associated with a respective function of the one or more functions;
wherein in response to receiving from the host device one or more reset requests to reset a specific function, the master reset unit is configured to provide a request signal corresponding to the one or more reset requests, and a signal identifying the specific function, to each of the plurality of client interfaces;
wherein each client interface having an association with the specific function is configured to initiate a reset operation of each of the associated hardware resources and to provide a client reset done signal for the specific function to the master reset unit in response to completion of the reset operation of each of the associated hardware resources;
wherein the master reset unit is configured to provide a reset done signal for the specific function to the host interface; and
wherein the master reset unit is further configured to provide a master done acknowledge signal and a signal identifying the specific function to each client that provided a client reset done signal to the master reset unit.
1. An input/output (i/O) device comprising:
a host interface configured to provide an i/O connection to a host device, wherein the host interface includes:
a master reset unit;
a plurality of client interfaces, each corresponding to one or more functions;
a plurality of hardware resources coupled to the host interface, wherein each hardware resource is associated with a respective function of the one or more functions;
wherein in response to receiving from the host device one or more reset requests to reset a specific function, the master reset unit is configured to provide a request signal corresponding to the one or more reset requests, and a signal identifying the specific function, to each of the plurality of client interfaces;
wherein each client interface having an association with the specific function is configured to initiate a reset operation of each of the associated hardware resources and to provide a client reset done signal for the specific function to the master reset unit in response to completion of the reset operation of each of the associated hardware resources;
wherein the master reset unit is configured to provide a reset done signal for the specific function to the host interface; and
wherein each client interface having an association with the specific function is further configured to provide a client acknowledge signal and a signal identifying the specific function to the master reset unit in response to receiving each of one or more reset requests.
4. A system comprising:
a host device;
an input/output (i/O) device coupled to the host device via an i/O interconnect, wherein the i/O device includes:
a host interface configured to provide an i/O connection for the i/O interconnect, wherein the host interface includes:
a master reset unit;
a plurality of client interfaces, each corresponding to one or more functions;
a plurality of hardware resources coupled to the host interface, wherein each hardware resource is associated with a respective function of the one or more functions;
wherein in response to receiving from the host device one or more reset requests to reset a specific function, the master reset unit is configured to provide a request signal corresponding to the one or more reset requests, and a signal identifying the specific function, to each of the plurality of client interfaces;
wherein each client interface having an association with the specific function is configured to initiate a reset operation of each of the associated hardware resources and to provide a client reset done signal for the specific function to the master reset unit in response to completion of the reset operation of each of the associated hardware resources;
wherein the master reset unit is configured to provide a reset done signal for the specific function to the host interface; and
wherein the master reset unit is configured to send a master reset acknowledge signal and the signal identifying the specific function to the host interface in response to receiving the reset request.
3. A system comprising:
a host device;
an input/output (i/O) device coupled to the host device via an i/O interconnect, wherein the i/O device includes:
a host interface configured to provide an i/O connection for the i/O interconnect, wherein the host interface includes:
a master reset unit;
a plurality of client interfaces, each corresponding to one or more functions;
a plurality of hardware resources coupled to the host interface, wherein each hardware resource is associated with a respective function of the one or more functions;
wherein in response to receiving from the host device one or more reset requests to reset a specific function, the master reset unit is configured to provide a request signal corresponding to the one or more reset requests, and a signal identifying the specific function, to each of the plurality of client interfaces;
wherein each client interface having an association with the specific function is configured to initiate a reset operation of each of the associated hardware resources and to provide a client reset done signal for the specific function to the master reset unit in response to completion of the reset operation of each of the associated hardware resources;
wherein the master reset unit is configured to provide a reset done signal for the specific function to the host interface; and
wherein each client interface is further configured to wait to send the client reset done signal to the master reset unit until each associated subclient interface completes reset operations initiated to each of the associated hardware resources.
|
1. Field of the Invention
This invention relates to computer systems and, more particularly, to input/output (I/O) devices with shared I/O resources.
2. Description of the Related Art
There have been significant increases in the effective throughput of a variety of I/O devices used in computing systems. In the recent past, a number of new communication standards have been introduced. For example, 10 Gigabit Ethernet may allow up to ten gigabits of information to be conveyed and Peripheral Component Interconnect Express (PCIe™) Generation 1 may allow up to 2.5 Gbits per lane. In many computer systems, a single processor, processing module, or device typically does not use that much I/O bandwidth. Accordingly, in an effort to increase hardware resource utilization, sharing of the I/O hardware resources across multiple processing modules may be desirable.
One mechanism for sharing resources that use PCIe interfaces is to virtualize the resources across multiple processing elements. Thus, I/O virtualization standards have been introduced, such as for example, the single root and multi-root PCIe specifications. However, there are issues with virtualizing and sharing of some hardware resources. For example, an I/O device that implements a PCIe interface uses the notion of a function. Functions may be used to access respective hardware resources. However, for a variety of reasons, a function and its resources may need to be reset or reclaimed by the supervisory system software without perturbing the operation of any other function or process.
Various embodiments of a I/O device having function level reset functionality are disclosed. In one embodiment, an input/output (I/O) device includes a host interface that may provide an I/O connection to a host device. The host interface may include a master reset unit, a plurality of client interfaces, each corresponding to one or more functions, and plurality of hardware resources. Each hardware resource may be associated with a respective function of the plurality of functions. In response to receiving from a given host device one or more reset requests such as function level reset (FLR) requests, to reset a specific function, the master reset unit may provide to each of the client interfaces, a request signal corresponding to the one or more reset requests, and a signal identifying the specific function. In addition, each client interface having an association with the specific function may initiate a reset operation of each of the associated hardware resources, and may provide a client reset done signal for the specific function to the master reset unit in response to completion of the reset operation of each of the associated hardware resources. Lastly, the master reset unit may provide a reset done signal for the specific function to the host interface.
While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that the drawings and detailed description thereto are not intended to limit the invention to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the present invention as defined by the appended claims. It is noted that the word “may” is used throughout this application in a permissive sense (i.e., having the potential to, being able to), not a mandatory sense (i.e., must).
As mentioned above, there are issues with virtualizing and sharing of some hardware resources such as resetting a function and its resources without perturbing the operation of any other function or process, for example. As described further below, a relatively high cost hardware I/O device may be shared across a number of distinct processing entities. These processing entities could be running in a uni- or multi-operation system environment, with a varied number of user and system processes. In addition, using the I/O device described below, each function may not only be reset independently from each other function, but each hardware resource defined by the function may be hierarchically reset, such that a requesting process or device will be notified that the reset is done only after the entire function has been reset. In addition, multiple functions may be reset concurrently and in a non-blocking fashion.
Turning now to
In one embodiment, processor 30 may be representative of any type of processing unit including a single processor, a chip multiprocessor that includes multiple central processing units (CPUs) on a single substrate, or a processing node such as a blade processing unit or blade server, for example, which may include one or more CPUs in a single housing. It is noted that although processor 30 is shown coupled to the I/O device directly via link 50, it is contemplated that in other embodiments any number of processors such as processor 30 may be coupled through a separate root complex (not shown) which may be coupled via link 50 to I/O device 20.
System memory 35 may be representative of any type of memory medium. For example, in various embodiments, system memory 35 may be implemented using memory devices in the dynamic random access memory (DRAM) family of devices. However, system memory 35 may also be implemented using static RAM (SRAM) or other types of storage devices as desired. System memory 35 may be used to store program instructions, which may be fetched and executed by the processor 30.
More particularly, as shown in
In the illustrated embodiment, the I/O device 20 includes a network port 25 that is coupled to the network 12 via a network link.13. The I/O device 20 also includes a host interface 22. The host interface includes a number of hardware resources that are represented as functions F0, F1 through Fn−1, where n may be any number. In addition, the I/O device 20 includes a transmit data path designated TxDP 26 and a receive datapath designated RxDP 27. In various embodiments, the RxDP 27 may include filtering and classification, and scheduling functionality, among others. The TxDP 26 circuits may include arbitration and scheduling functionality. It is noted that I/O device 20 may also include a variety of other circuits that have been omitted here for simplicity. For example, in various embodiments, I/O device 20 may include, a bus interface (not shown) for connection to a service processor (also not shown).
The network port 25 may provide a connection to the network 12 using any of a variety of network protocols. In one embodiment, the network 12 may be any of a variety of frame-based Ethernet protocols. As such, the network connection may be a 10-Gigabit Ethernet (10GE) connection. Accordingly, network port 25 may be configured to provide a cable or optical interface, as well as other network functions such as medium access control (MAC) functions, physical (PHY) layer functions, and physical coding sublayer (PCS) functionality (all not shown). It is noted that in other embodiments, other network protocols may be supported.
In one embodiment, the functions of host interface 22 may include an I/O interface (not shown) that may be representative of a PCIe compliant physical interface, which may represent a PCIe endpoint for connection to the I/O link 50. As such, the link 50 may be a PCIe link that includes a number of lanes. In addition, the I/O interface may be independently configurable by the service processor or by one or more system images executing on processor 30. Further, each function of the host interface 22 may provide (i.e., be associated with) one or more of the hardware resources (e.g., MAC, statistics and control, DMA channels, PIO configuration space) that allow each processor 30 to substantially transparently share the network port 25. The I/O interface may be independently programmed and controlled by the processing unit 30 to which it is connected.
In one embodiment, an I/O device such as the I/O device 20, for example, needs to be identified by the O/S, enumerated within the overall I/O device tree constructed by the O/S, allocated memory space, granted a unique access identification, provided interrupt mechanisms, and allocated various other resources in order to efficiently bind the service provided by the device into the overall system. Accordingly, a function is a hardware construct consisting of a set of purpose-specific registers (not shown) built into an I/O device which standardizes the way a device presents its capabilities and resource requests to system software. Some of the registers may identify device capabilities and resource requests, while other registers may be used by S/W to allocate resources such as DMA resources, for example, to the device. Additional registers may provide status and error management tools. A function provides this information and control capability in a standardized way independent of the service provided by the I/O device. Some I/O devices may have as few as one function, while other devices may contain many functions, and may have a function allocated to each active system image sharing the device.
In one embodiment, the host interface 22 may support a number of functions (e.g., functions F0 through Fn−1), and each function may include a number of resources. The hardware resources may be divided up among the functions in an arbitrary manner. However, in one embodiment, each interface or I/O port may correspond to a respective function. As shown, in
Referring to
As shown, the FLR Master 23 is coupled to the host processor 30 via the PCIe link 50 and other interface logic (not shown) within the host interface 22, and may receive an FLR request (that includes the function number) from the host processor 30. In addition, the FLR master 23 may send FLR acknowledge (Ack) and FLR done signals back to the logic within the host interface 22 so that the host interface 22 may respond normally to requests made to functions that have completed the function level reset process.
The FLR master 23 may communicate various signals to each client interface. For example, as shown in
As described further below, each client, upon receiving an FLR request that corresponds to the function number with which that client is associated, is configured to initiate a function level reset for all the hardware associated with that function. As such, the client may initiate the FLR request to each subclient in its hierarchy, and only report FLR done when all subclients have also completed the FLR.
Referring collectively to
In addition, in one embodiment, the FLR master 23 may send a non-posted completion write packet, which includes the function number that was targeted, to the requester via the corresponding PCIe link within a specified time from the request (block 420). In one embodiment, the FLR master may send the completion packet prior to receiving all client ack signals, if the FLR master 23 is capable of knowing that all ack signals will be sent.
Each client may de-assert its respective ack signals in response to sampling the de-asserted FLR request signal (block 425). For example, as shown shortly after time t3 in
The FLR master 23 now waits for the client(s) that is associated with the requested function to complete the reset operation. During the wait, the client initiates reset operations in any hardware that is associated with the requested function. For example, each client may initiate the function level reset in all subclients in its hierarchy that are associated with the requested function (block 430). The client may then wait for each hardware component to finish resetting. In one embodiment, multiple reset requests to different functions may be received and serviced concurrently. For example, the FLR master 23 may receive reset requests to multiple functions. In response, the FLR master 23 may issue the requests and the associated function numbers in a sequential (i.e., back-to-back) format. In response, each client may initiate reset operations in any hardware that is associated with the requested functions. In addition, each client is configured to control the reset operations so that they may occur concurrently and in a non-blocking fashion. Further, the reset operations may complete in a different order than the requests were received.
As each subclient finishes, it may report the completion to the client (block 435). Once the client receives an indication that all subclients, and thus all hardware associated with the function, have completed the reset, the client asserts an FLR done signal (block 440) to the FLR master 23, as shown in
The FLR master 23 waits for all clients to report that the reset is done for a given function. More particularly, when all clients report an FLR done for a given function to the FLR master 23, the FLR master 23 may assert an FLR done ack signal (block 445). The client may de-assert its done signal once the client has sampled the done ack signal (block 450). For example, in
It is noted that FLR requests may come back to back for a given function. In one embodiment, the FLR master 23 may drop the second or subsequent requests for the same function number. However, back to back requests for different functions may be sequenced by the FLR master 23 such that the requests are spaced apart a sufficient number of clock cycles that allow the clients to handle the requests. It is also noted that a client may assert the FLR done signal for a given function in a different order than the requests were received. This may prevent a function that is slower resetting from blocking another function from completing, and thus multiple functions may be reset substantially simultaneously. The clients that share multiple functions may sequence the reset requests to the different functions. It is also noted that in one embodiment, the function level reset operation is a timed event, and as such should take some predetermined amount of time to fully execute. As such, the host interface 22 may, for that predetermined amount of time, ignore any requests made to a function that is currently being reset. After the predetermined amount of time, if the function level reset has not yet completed subsequent requests to that function may be met with a retry response. However, after some additional time limit a host processor or other requester may conclude that the particular function is non-responsive if the requester does not receive a normal response.
Although the embodiments above have been described in considerable detail, numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications.
Watkins, John E., Srinivasan, Arvind, Puri, Rahoul, Dignum, Marcelino M., Yeung, Louise Y.
Patent | Priority | Assignee | Title |
10296356, | Nov 18 2015 | Oracle International Corporations | Implementation of reset functions in an SoC virtualized device |
10908998, | Aug 08 2017 | Kioxia Corporation | Managing function level reset in an IO virtualization-enabled storage device |
Patent | Priority | Assignee | Title |
6601165, | Mar 26 1999 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Apparatus and method for implementing fault resilient booting in a multi-processor system by using a flush command to control resetting of the processors and isolating failed processors |
7134011, | Sep 27 2000 | Huron IP LLC | Apparatus, architecture, and method for integrated modular server system providing dynamically power-managed and work-load managed network devices |
20040098475, | |||
20040167996, | |||
20040268114, | |||
20080276110, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Oct 21 2008 | PURI, RAHOUL | Sun Microsystems, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 021724 | /0706 | |
Oct 21 2008 | SRINIVASAN, ARVIND | Sun Microsystems, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 021724 | /0706 | |
Oct 21 2008 | YEUNG, LOUISE Y | Sun Microsystems, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 021724 | /0706 | |
Oct 21 2008 | WATKINS, JOHN E | Sun Microsystems, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 021724 | /0706 | |
Oct 22 2008 | Oracle America, Inc. | (assignment on the face of the patent) | / | |||
Oct 22 2008 | DIGNUM, MARCELINO M | Sun Microsystems, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 021724 | /0706 | |
Feb 12 2010 | ORACLE USA, INC | Oracle America, Inc | MERGER AND CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 037311 | /0171 | |
Feb 12 2010 | Sun Microsystems, Inc | Oracle America, Inc | MERGER AND CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 037311 | /0171 | |
Feb 12 2010 | Oracle America, Inc | Oracle America, Inc | MERGER AND CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 037311 | /0171 |
Date | Maintenance Fee Events |
Oct 21 2015 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Oct 24 2019 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Oct 25 2023 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
May 08 2015 | 4 years fee payment window open |
Nov 08 2015 | 6 months grace period start (w surcharge) |
May 08 2016 | patent expiry (for year 4) |
May 08 2018 | 2 years to revive unintentionally abandoned end. (for year 4) |
May 08 2019 | 8 years fee payment window open |
Nov 08 2019 | 6 months grace period start (w surcharge) |
May 08 2020 | patent expiry (for year 8) |
May 08 2022 | 2 years to revive unintentionally abandoned end. (for year 8) |
May 08 2023 | 12 years fee payment window open |
Nov 08 2023 | 6 months grace period start (w surcharge) |
May 08 2024 | patent expiry (for year 12) |
May 08 2026 | 2 years to revive unintentionally abandoned end. (for year 12) |