IP Library Granted Patent US 7,694,047
Granted Patent B1
US 7,694,047 · App. 11/355,622 · Granted Apr 6, 2010

Method and system for sharing input/output devices

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 7,694,047
App. No.
11/355,622
Granted
Apr 6, 2010
Kind
B1
Abstract

A PCI-Express module that is coupled to plural host systems and to at least an input/output (I/O) device is provided. The PCI-Express module includes an upstream port module and a downstream port module that use a mapping table to facilitate the plural host systems sharing the I/O device by modifying a transaction layer packet (TLP) field. For upstream ID based traffic, a source identifier is replaced based on the mapping table and a destination identifier is replaced with a value that is captured during upstream port module initialization. For upstream address based traffic, the mapping table routes TLPs by using a downstream port number and a function number in a source identification field. For downstream ID based traffic, a destination identifier is replaced by using the mapping table for routing TLPs. For downstream address based traffic, the PCI-Express module uses an address map to route TLPs.

Claims (32)

1. A network system, comprising:

a plurality of host systems; and

a shared PCI-Express module directly coupled to the plurality of host systems and to at least one shared input/output (I/O) device without using a PCI-Express switch and a PCI to PCI bridge such that each of the plurality of host system is unaware of the I/O device being shared among other host systems;

wherein the shared PCI-Express module includes an upstream port module communicating with the plurality of host systems, and a downstream port module communicating with the I/O device;

wherein the shared PCI-Express module receives a transaction layer packet (“TLP”), examines the TLP and based on a type of the TLP, routes the TLP by using either an identifier (“ID”) based routing that uses a bus, device and function number to specify a destination for the TLP or an address based routing that uses an address map for routing the TLP;

wherein when ID based routing is used to route the TLP to the shared I/O device, then a destination identifier field is modified by the shared PCI-Express module to match a function number;

wherein when ID based routing is used to route the TLP to one of the plurality of host systems, then a source identifier is modified by the shared PCI-Express module to include an upstream function number and a destination identifier is replaced with a value captured during an upstream port module initialization;

wherein ID based routing is used for a configuration type TLP that is used for configuring a device and a completion type TLP that indicates completion of a request; and address based routing is used for a memory request and an I/O request.

2. The system of claim 1 , wherein upstream address based traffic is routed by a address mapping table by using a downstream port number and a function number in a source identification field.

3. The system of claim 1 , wherein a vendor defined message is generated by the I/O device and sent to the PCI-Express module each time a PCI configuration Base Address Register is written, and the vendor defined message includes a function number and a base address that are used by a port for routing address based downstream traffic.

4. The system of claim 1 , wherein the PCI-Express module and the I/O device are part of a storage area network.

5. The system of claim 1 , wherein the I/O device is a host bus adapter.

6. A PCI-Express module operationally coupled to a plurality of host systems and to at least a shared input/output (I/O) device in a network, comprising:

an upstream port module communicating with the plurality of host systems for sharing the I/O device, such that each host system is unaware that the I/O device is being shared among the plurality of host systems, and

a downstream port module communicating with the I/O device;

wherein the PCI-Express module receives a transaction layer packet (“TLP”), examines the TLP and based on a type of the TLP, routes the TLP by using either an identifier (“ID”) based routing that uses a bus, device and function number to specify a destination for the TLP or an address based routing that uses an address map for routing the TLP;

wherein when ID based routing is used to route the TLP to the shared I/O device, then a destination identifier field is modified by the shared PCI-Express module to match a function number;

wherein when ID based routing is used to route the TLP to one of the plurality of host systems, then a source identifier is modified by the shared PCI-Express module to include an upstream function number and a destination identifier is replaced with a value captured during upstream port module initialization;

wherein ID based routing is used for a configuration type TLP that is used for configuring a device and a completion type TLP that indicates completion of a request; and address based routing is used for a memory request and an I/O request.

7. The PCI-Express Module of claim 6 , wherein upstream address based traffic is routed by a address mapping table by using a downstream port number and a function number in a source identification field.

8. The PCI-Express Module of claim 6 , wherein a vendor defined message is generated by the I/O device and sent to the PCI-Express module each time a PCI configuration Base Address Register is written, and the vendor defined message includes a function number and a base address that are used by a port for routing address based downstream traffic.

9. The PCI-Express module of claim 6 , wherein the I/O device is a host bus adapter.

10. A method for sharing an input/output (I/O) device between a plurality of host systems, comprising:

receiving a transaction layer packet (TLP);

wherein if the TLP is for downstream traffic, it is received by an upstream port module of a PCI-Express module from one of the host systems; and if the TLP is for upstream traffic, it is received by a downstream port module of the PCI-Express Module from the I/O device; and

wherein the PCI-Express module is directly coupled to the plurality of host systems and to the I/O device without using a PCI-Express switch and a PCI to PCI bridge such that each of the plurality of host system is unaware of the I/O device being shared among the plurality of host systems; and

based on a type of the TLP, determining if an address based routing that uses an address map for routing the TLP or an identifier (ID) based routing technique that uses a bus, device and function number to specify a destination for the TLP is to be used for routing the TLP; wherein ID based routing is used for a configuration type TLP that is used for configuring a device and a completion type TLP that indicates completion of a request; and address based routing is used for a memory request and an I/O request;

wherein when ID based routing is used to route the TLP to the I/O device, then a destination identifier field is modified by the PCI-Express module to match a function number;

wherein when ID based routing is used to route the TLP to one of the plurality of host systems, then a source identifier is modified by the PCI-Express module to include an upstream function number and a destination identifier is replaced with a value captured during upstream port module initialization; and wherein an address mapping table is used for address based routing.

11. The method of claim 10 , wherein upstream address based traffic is routed by the address mapping table by using a downstream port number and a function number in a source identification field.

12. The method of claim 10 , wherein a vendor defined message is generated by the I/O device and sent to the PCI-Express module each time a PCI configuration Base Address Register is written, and the vendor defined message includes a function number and a base address that are used by a port for routing address based downstream traffic.

13. The method of claim 10 , wherein the I/O device is a host bus adapter.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053179/0320 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2020
From: CAVIUM, LLC
To: CAVIUM INTERNATIONAL
Reel/Frame 051948/0807 →
CHANGE OF NAME Recorded Oct 8, 2018
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 047205/0953 →
RELEASE OF SECURITY INTEREST Recorded Jul 6, 2018
From: JP MORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: CAVIUM, INC; CAVIUM NETWORKS LLC; QLOGIC CORPORATION
Reel/Frame 046496/0001 →
MERGER Recorded Oct 18, 2017
From: QLOGIC CORPORATION
To: CAVIUM, INC.
Reel/Frame 044812/0504 →
SECURITY AGREEMENT Recorded Mar 1, 2017
From: QLOGIC CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 041854/0119 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 16, 2006
From: ALSTON, JERALD K.
To: QLOGIC CORPORATION
Reel/Frame 017574/0652 →