Patent ID: 8521941

Claim:
A method for multi-root sharing of a plurality of single root input/output virtualization (SR-IOV) endpoints, the method comprising: receiving a control and status register (CSR) request packet from a first host, wherein the CSR request packet is a CSR Space packet or a memory mapped I/O request packet, wherein the CSR request packet is addressed to the first of the plurality of SR-IOV endpoints; redirecting the CSR request packet to a centralized management processor so that the centralized management processor may act as a proxy to communicate with the first of the plurality of SR-IOV endpoints; executing the CSR request on a virtual function or physical function register, identified in the CSR request, in the first of the plurality of SR-IOV endpoints; and spooling the CSR request to a buffer allocated to a first root; wherein the spooling comprises: writing an entire transaction layer packet (TLP) of the CSR request to an address defined in a pointer register; creating a posted write header using the address defined in the pointer register; appending the TLP to the posted write header as a payload; and forwarding a complete packet comprising the posted write header and the appended CSR request TLP to a downstream port identified by the address in the request.