# US 7,613,864 B2 · Device sharing

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 7,613,864 B2
- Document ID: US7613864B2
- Status: Granted
- Kind: B2
- Application number: 11/291,314
- Filed: 2005-12-01
- Published: 2006-10-26
- Granted: 2009-11-03
- Earliest claimed: 2005-04-22
- Assignees: Sun Microsystems, Inc.
- Inventors: Ola Tørudbakken; Bjørn Dag Johnsen
- Web page: https://patentgrep.com/patent/US7613864B2

## CPC

- G06F 13/4022: {using switching circuits, e.g. switching matrix, connection or expansion network (G06F13/4009 takes precedence)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

An interconnect apparatus, for example a switch, supports PCI-Express. The apparatus has a first plurality of ports configurable as upstream ports, each connectable to a respective host, and at least one port configurable as a downstream port connectable to a device. The apparatus is operable to support sharing of the device resources between hosts.

## Claims

### Claim 1

An apparatus for supporting PCI-Express, the apparatus comprising
a first plurality of ports configurable as upstream ports, each connectable to a respective host, and
at least one port configurable as a downstream port connectable to a device, wherein the device is a device that can be the requester or completer of a PCI-Express transaction either on its own behalf or on behalf of one or more distinct non-PCI Express devices;
the apparatus being operable to configure a downstream port for device virtualization to support sharing of the device between the hosts, wherein at least one of said hosts comprises a configuration entity operable to provision resources of said device to said hosts, the host of which the configuration entity forms part forming a master host that has access to all devices in a device tree, including the non-PCI-Express devices, wherein any host that is not a master host forms a client host, and at least one host is a client host;
wherein a client host can freely configure and make use of the provisioned resources that are provisioned to the client host, but is not allowed to configure other resources that are not provisioned to the client host, or to configure or make use of the provisioned resources in a way that causes the provisioned resources to perform an operation reserved for the other resources; and
wherein the device further includes one or more control registers that are only accessible by the master host, wherein the master host configures the control registers to control how the device presents itself on an external network and how the device handles communication with the client hosts to which resources have been provisioned.

### Claim 2 (depends on 1)

The apparatus of claim 1, wherein the downstream port is configured as a shared port connectable to each of a plurality of virtual switches, each virtual switch comprising an upstream port connectable to a respective host.

### Claim 3 (depends on 2)

The apparatus of claim 2, operable to associate a routing table with the shared downstream port to virtualize the routing of information packets received by the shared port.

### Claim 4 (depends on 1)

The apparatus of claim 1, comprising a downstream port for linking the device with a first upstream port for connection to a host and operable to provide at least one virtual downstream port for linking at least device resource to at least one further upstream port for connection to a host, the virtual downstream port being linked to at least one upstream port via a virtual bus fabric.

### Claim 5 (depends on 4)

The apparatus of claim 4, wherein each virtual downstream port is operable to present a device resource provided by the device to a host as if the host had sole ownership of the device.

### Claim 6 (depends on 1)

The apparatus of claim 1, wherein a separate address range is associated with each resource of said device.

### Claim 7 (depends on 1)

The apparatus of claim 1, wherein the apparatus is an interconnect apparatus.

### Claim 8 (depends on 1)

The apparatus of claim 1, wherein the apparatus is a switch.

### Claim 9

A computer system comprising:
a plurality of hosts;
a device shared between the hosts; and
an interconnect apparatus for supporting PCI-Express, the interconnect apparatus comprising a first plurality of ports configured as upstream ports, each connected to a respective host, and at least one port configured as a downstream port connected to a device, wherein the device is a device that can be the requester or completer of a PCI-Express transaction either on its own behalf or on behalf of one or more distinct non-PCI Express devices, the interconnect apparatus being operable to configure a downstream port for device virtualization to support sharing of the device between the hosts,
wherein at least one of said hosts comprises a configuration entity operable to provision resources of said device to said hosts, the host of which the configuration entity forms part forming a master host that has access to all devices in a device tree, including the non-PCI-Express devices, wherein any host that is not a master host forms a client host, and at least one host is a client host;
wherein a client host can freely configure and make use of the provisioned resources that are provisioned to the client host, but is not allowed to configure other resources that are not provisioned to the client host, or to configure or make use of the provisioned resources in a way that causes the provisioned resources to perform an operation reserved for the other resources; and
wherein the device includes one or more general control registers that are only accessible by the master host, wherein the master host configures the general control registers to control how the device presents itself on an external network and how the device handles communication with client hosts.

### Claim 10 (depends on 9)

The system of claim 9, wherein each host is operable to discover device resources provisioned to it using configuration requests.

### Claim 11 (depends on 9)

The system of claim 9, wherein a host is operable to observe information for a resource register for a device resource provisioned to that host and to assign an address range to that resource register.

### Claim 12 (depends on 9)

The system of claim 9 comprising a plurality of device resources, wherein a host to which a plurality of device resources are provisioned is operable to assign respective resources to respective domains of the client host.

### Claim 13 (depends on 9)

The system of claim 9, wherein the device is operable to permit access only to a host to which the device resource initiating the transaction is provisioned.

### Claim 14 (depends on 9)

The system of claim 9, wherein the device is an I/O device.

### Claim 15 (depends on 9)

The system of claim 9, wherein a device resource is a DMA engine.

### Claim 16

A system supporting a PCI-Express protocol with device sharing between a plurality of hosts, wherein at least one of the hosts is operable to act as a master host that has access to all devices in a device tree, including one or more distinct non-PCI-Express devices coupled to a device that can be the requester or completer of a PCI-Express transaction either on its own behalf or on behalf of the one or more non-PCI Express devices, that includes the device and at least another host is operable to act as a client host with respect to the device, the master host being operable to control a shared device and to provision at least one resource of the device to the client host,
wherein a client host can freely configure and make use of the provisioned resource that is provisioned to the client host, but is not allowed to configure other resources that are not provisioned to the client host, or to configure or make use of the provisioned resource in a way that causes the provisioned resources to perform an operation reserved for the other resources; and
wherein the device includes one or more general control registers that are only accessible by the master host, wherein the master host configures the general control registers to control how the device presents itself on an external network and how the device handles communication with client hosts.

### Claim 17

A method of providing device sharing in a computer system comprising a plurality of hosts including at least one client host and at least one master host that has access to all devices in a device tree, including one or more distinct non-PCI-Express devices coupled to a device that can be the requester or completer of a PCI-Express transaction either on its own behalf or on behalf of the one or more non-PCI Express devices, using an interconnect apparatus for supporting PCI-Express, the method comprising:
a. configuring as an upstream port each of a first plurality of ports that are each connected to a respective host;
b. configuring as a downstream port at least one port connected to a device;
c. configuring the downstream port for device virtualization to support sharing of the device between the hosts; and
d. configuring one or more general control registers in the device to control how the device presents itself on an external network and how the device handles communication with client hosts, wherein the general control registers are only accessible by the master host
e. wherein a client host can freely configure and make use of the provisioned resources that are provisioned to the client host, but is not allowed to configure other resources that are not provisioned to the client host, or to configure or make use of the provisioned resources in a way that causes the provisioned resources to perform an operation reserved for the other resources.

### Claim 18

A method of implementing a PCI-Express protocol with device sharing between a plurality of hosts, the method comprising:
a. at least one host acting as a master host that has access to all devices in a device tree, including one or more distinct non-PCI-Express devices coupled to a device that can be the requester or completer of a PCI-Express transaction either on its own behalf or on behalf of the one or more non-PCI Express devices, with respect to the device to control a shared device and at least another host acting as a client host with respect to the device;
b. the master host provisioning at least one resource of the device to the client host; and
c. at least one client host that can freely configure and make use of the provisioned resource that is provisioned to the client host, but is not allowed to configure other resources that are not provisioned to the client host, or to configure or make use of the provisioned resource in a way that causes the provisioned resources to perform an operation reserved for the other resources;
d. wherein the device includes one or more general control registers that are only accessible by the master host, wherein the master host configures the general control registers to control how the device presents itself on an external network and how the device handles communication with client hosts.
