Method and apparatus for shared I/O in a load/store fabric
First Claim
1. An apparatus for transferring data in a load/store fabric between a plurality of root complexes and a shared input/output (I/O) endpoint, the apparatus comprising:
- an interface configured to receive a packet from at least one of the plurality root complexes, the packet including a header field for identifying the shared I/O endpoint for which the packet is destined, said interface coupled to the plurality of root complexes, wherein in lieu of including a controller within each of the root complexes for transferring data to the shared I/O endpoint, the plurality of root complexes are coupled to said interface to share the endpoint; and
circuitry configured to;
add an operating system domain (OSD) header field to the packet for identifying which one of the plurality of root complexes is associated with the packet; and
transfer the packet with the added OSD header field to the shared endpoint.
6 Assignments
0 Petitions
Accused Products
Abstract
An apparatus and method is provided for allowing I/O devices to be shared and/or partitioned among a plurality of processing complexes within the load/store fabric of each of the processing complexes without requiring modification to the operating system or driver software of the processing complexes. The apparatus and method includes a switch for selectively coupling each of the processing complexes to one or more shared I/O devices. The apparatus and method further includes placing information within packets transmitted between the switch and the I/O devices to identify which of the processing complexes the packets are associated with. The invention further includes an apparatus and method within the shared I/O devices to allow the shared I/O devices to service each of the processing complexes independently.
167 Citations
39 Claims
-
1. An apparatus for transferring data in a load/store fabric between a plurality of root complexes and a shared input/output (I/O) endpoint, the apparatus comprising:
-
an interface configured to receive a packet from at least one of the plurality root complexes, the packet including a header field for identifying the shared I/O endpoint for which the packet is destined, said interface coupled to the plurality of root complexes, wherein in lieu of including a controller within each of the root complexes for transferring data to the shared I/O endpoint, the plurality of root complexes are coupled to said interface to share the endpoint; and circuitry configured to; add an operating system domain (OSD) header field to the packet for identifying which one of the plurality of root complexes is associated with the packet; and transfer the packet with the added OSD header field to the shared endpoint. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23)
-
-
24. An apparatus for transferring data in a load/store fabric between a plurality of root complexes and a shared input/output (I/O) endpoint, the apparatus comprising:
-
an interface configured to; receive a PCI Express packet; and be coupled to the root complexes, wherein in lieu of including a controller within each of the root complexes that is configured to communicate using a first protocol, each of the root complexes is coupled to share the endpoint via said interface in order to communicate using the first protocol; and circuitry configured to; add a plurality of bits to said packet, wherein said plurality of bits identify an operating system domain from which the PCI Express packet originated; and transfer said packet with the added plurality of bits to the shared I/O endpoint. - View Dependent Claims (25, 26, 27, 28, 29, 30)
-
-
31. A method for identifying a root complex of a plurality of root complexes for a packet within a load/store fabric to allow sharing of an input/output (I/O) endpoint by the plurality of root complexes, the method comprising:
-
providing an architecture for the packet; providing an interface for use in processing packets transferred between the root complexes and said shared I/O endpoint; coupling the interface to the root complexes, wherein in lieu of including a controller within each of the root complexes for communicating to the I/O endpoint, each of the root complexes is coupled to the interface to share the I/O endpoint; providing, by a circuitry, a field for inclusion in the packet to identify the root complex for the packet; and
;wherein the shared input/output (I/O) endpoint utilizes the field provided in said step of providing a field to identify the root complex for the packet. - View Dependent Claims (32, 33, 34, 35, 36, 37, 38)
-
-
39. An apparatus for transferring data in a load/store fabric between a plurality of root complexes and a shared input/output (I/O) endpoint, the apparatus comprising:
-
an interface configured to receive a PCI Express packet; and circuitry configured to; add a plurality of bits to said packet, wherein said plurality of bits identify an operating system domain from which the PCI Express packet originated; and transfer said packet with the added plurality of bits to the shared I/O endpoint; wherein an OS Domain header is attached to a PCI Express Packet to form a PCI Express+Packet, wherein said PCI Express+Packet is sent to an endpoint device, wherein said endpoint device is a shared I/O network interface controller; wherein said shared I/O network interface controller, upon receipt of said PCI Express+Packet; examines the OS Domain header to determine which operating system domain the PCI Express Packet originated from; after determining which operating system domain the PCI Express Packet originated from, applies controller resources that are associated with that operating system domain; wherein said controller resources comprise;
a plurality of controller register sets; and
a plurality of direct memory access (DMA) engines.
-
Specification