Patent ID: 7860930

Claim:
A method, in a data processing system, for communicating between a first host system and a second host system, comprising: initializing a first memory address space in a first shared memory to comprise a first address range assigned to an endpoint associated with the second host system, wherein the first host system comprises a first root complex and a first set of endpoints, wherein the second host system comprises a second root complex and second set of endpoints, and wherein the endpoint associated with the second host system is one of the second set of endpoints; initializing a second memory address space in a second shared memory to comprise a second address range assigned to the endpoint associated with the second host system, wherein initializing the first memory address space associated with the first host system and initializing the second memory address space associated with the second host system comprises: traversing links in a communication fabric of the data processing system to gather information about endpoints and root complexes present in the communication fabric; generating at least one virtual hierarchy identifying at least one endpoint and at least one root complex that are physically or logically associated with each other; and initializing the first memory address space and the second memory address space based on the at least one virtual hierarchy such that each endpoint associated with the first root complex of the first host system has a corresponding address range in the first memory address space and each endpoint associated with the second root complex of the second host system has a corresponding address range in the second memory address space; generating a work queue structure in the first address range, the work queue structure comprising a first doorbell structure; generating a completion queue structure in the second address range, the completion queue structure comprising a second doorbell structure; and performing, by the first host system and the second host system, at least one of push or pull operations, in accordance with an established transaction protocol, to transfer work queue elements between the work queue structure and the second host system in response to the first host system writing to the first doorbell structure, and to transfer completion queue elements between the completion queue structure and the first host system in response to the second host system writing to the second doorbell structure, wherein the second host system retrieves the work queue element from the work queue structure through the second root complex and the first root complex and wherein the first host system retrieves the completion queue element from the completion queue structure through the first root complex and the second root complex.