Switching apparatus and method for providing shared I/O within a load-store fabric
First Claim
1. A switching apparatus for sharing input/output endpoints, the switching apparatus comprising:
- a first plurality of I/O ports, coupled to a plurality of operating system domains through a PCI Express fabric, each configured to route PCI Express transactions between said plurality of operating system domains and the switching apparatus;
a second I/O port, coupled to a first shared input/output endpoint, wherein said first shared input/output endpoint is configured to request/complete said PCI Express transactions for each of said plurality of operating system domains; and
core logic, coupled to said first plurality of I/O ports and said second I/O port, configured to route said PCI Express transactions between said first plurality of I/O ports and said second I/O port, wherein said core logic is configured to associate each of said PCI Express transactions with a corresponding one of said plurality of operating system domains (OSDs), and wherein said core logic designates said corresponding one of said plurality of OSDs in transmissions to/from said second I/O port according to a variant of PCI Express protocol, and wherein said variant comprises encapsulating an OS domain header within a transaction layer packet that otherwise comports with said PCI Express protocol, and wherein said first shared input/output endpoint designates one of said PCI Express transactions for a particular one of said plurality of operating system domains by encapsulating said OS domain header within said transaction layer packet, and wherein said transaction layer packet is routed to said core logic via said second I/O port, and wherein said core logic is configured to detect and decapsulate said OS domain header from said transaction layer packet, and is configured to route said one of said PCI Express transactions to said particular one of said plurality of operating system domains.
8 Assignments
0 Petitions
Accused Products
Abstract
An apparatus and method are provided that enable I/O devices to be shared among multiple operating system domains. The apparatus has a first plurality of I/O ports, a second I/O port, and core logic. The first plurality of I/O ports is coupled to a plurality of operating system domains through a PCI Express fabric. Each of the first plurality of I/O ports is configured to route PCI Express transactions between said plurality of operating system domains and the switching apparatus. The second I/O port is coupled to a first shared input/output endpoint, where the first shared input/output endpoint is configured to request/complete said PCI Express transactions for each of the plurality of operating system domains. The core logic is coupled to the first plurality of I/O ports and the second I/O port. The core logic routes the PCI Express transactions between the first plurality of I/O ports and the second I/O port.
-
Citations
20 Claims
-
1. A switching apparatus for sharing input/output endpoints, the switching apparatus comprising:
-
a first plurality of I/O ports, coupled to a plurality of operating system domains through a PCI Express fabric, each configured to route PCI Express transactions between said plurality of operating system domains and the switching apparatus; a second I/O port, coupled to a first shared input/output endpoint, wherein said first shared input/output endpoint is configured to request/complete said PCI Express transactions for each of said plurality of operating system domains; and core logic, coupled to said first plurality of I/O ports and said second I/O port, configured to route said PCI Express transactions between said first plurality of I/O ports and said second I/O port, wherein said core logic is configured to associate each of said PCI Express transactions with a corresponding one of said plurality of operating system domains (OSDs), and wherein said core logic designates said corresponding one of said plurality of OSDs in transmissions to/from said second I/O port according to a variant of PCI Express protocol, and wherein said variant comprises encapsulating an OS domain header within a transaction layer packet that otherwise comports with said PCI Express protocol, and wherein said first shared input/output endpoint designates one of said PCI Express transactions for a particular one of said plurality of operating system domains by encapsulating said OS domain header within said transaction layer packet, and wherein said transaction layer packet is routed to said core logic via said second I/O port, and wherein said core logic is configured to detect and decapsulate said OS domain header from said transaction layer packet, and is configured to route said one of said PCI Express transactions to said particular one of said plurality of operating system domains. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A shared input/output (I/O) switching mechanism, comprising:
-
core logic, configured to enable operating system domains to share one or more I/O endpoints over a PCI Express fabric, said core logic comprising; global routing logic, configured to route PCI Express transactions to/from said operating system domains, and for routing PCI Express+transactions to/from said one or more I/O endpoints, wherein each of said PCI Express+transactions designates an associated one of said operating system domains for which an operation specified by each of said PCI Express transactions be performed; wherein said core logic isolates said PCI Express transactions over a plurality of PCI Express bus hierarchies according to each of said operating system domains, and wherein said PCI Express transactions are routed in accordance with addressing mechanisms for a particular one of said plurality of PCI Express bus hierarchies, said particular one of said plurality of PCI Express bus hierarchies corresponding to said associated one of said operating system domains, and wherein said PCI Express+transactions comport with a variant of the PCI Express protocol, and wherein said variant comprises encapsulating an OS domain header within a transaction layer packet of said each of said PCI Express transactions, and wherein said each of said PCI Express transactions otherwise comports with the PCI Express protocol, and wherein one of said one or more I/O endpoints designates one of said PCI Express+transactions for a particular one of said operating system domains by encapsulating an OS domain header within a transaction layer packet, and wherein said transaction layer packet is routed to the shared I/O switching mechanism, and wherein VMAC logic within the shared I/O switching mechanism is configured to detect and decapsulate said OS domain header from said transaction layer packet, and wherein said core logic routes a corresponding one of said PCI Express transactions to said particular one of said plurality of operating system domains according to the PCI Express protocol, said PCI Express protocol providing exclusively for a single operating system domain within said PCI Express fabric. - View Dependent Claims (12, 13, 14)
-
-
15. A method for interconnecting independent operating system domains to a shared I/O endpoint within a PCI Express fabric, comprising:
-
via first ports, first communicating with each of the independent operating system domains according to the PCI Express protocol; via a second port, second communicating with the shared I/O endpoint according to a variant of the PCI Express protocol to enable the shared I/O endpoint to associate a prescribed operation with a corresponding one of the independent operating system domains, said second communicating comprising; employing the variant of the PCI Express protocol to associate a unique root complex that with the corresponding one of the operating system domains, wherein said employing comprises; encapsulating an OS domain header within a transaction layer packet that otherwise comports with the PCI Express protocol, wherein the value of the OS domain header designates the corresponding one of the operating system domains; within the shared I/O endpoint, designating a transaction for a particular one of the operating system domains by embedding an OS domain header within a transaction layer packet; and first transmitting the transaction layer packet to the second port; and within the switching apparatus, detecting and removing the OS domain header from the transaction layer packet; and via core logic within a switching apparatus, mapping the independent operating system domains to the shared I/O endpoint, wherein said mapping comprises; associating each of the independent operating system domains with a corresponding root complex; and isolating transactions over a plurality of PCI Express bus hierarchies according to each of the operating system domains. - View Dependent Claims (16, 17, 18, 19, 20)
-
Specification