Patent ID: 7636800

Claim:
A method for centralized memory address translation and pinning by a host gateway in a computing system, the method comprising: attaching a memory address space identifier for a memory address space of a consumer to a direct memory access (DMA) request sent by the consumer; translating a virtual address included in the DMA request to a physical page frame in memory, using a mapping that maps the virtual address in the memory address space of the consumer to the physical page frame; raising an input/output (I/O) miss interrupt call to a hypervisor or operating system running the consumer to establish the mapping, in response to determining that the mapping does not exist; and pinning the physical page frame as long as the DMA request is in progress to prevent the hypervisor or operating system running the consumer from unmapping the virtual address from physical page frame, wherein the DMA request further comprises a consumer identifier that is used to determine the memory address space identifier, wherein the hypervisor or operating system running the consumer aborts the unmapping or retries the unmapping after a waiting period, in response to determining that the physical page frame is pinned, wherein the attaching, translating, and pinning are performed independently of the hypervisor or operating system running the consumer, wherein the pinning comprises marking the physical page frame to notify the hypervisor or operating system running the consumer that the physical page frame is currently involved in the DMA request, and wherein a first type of mark indicates that the physical page frame is currently involved in a read or write I/O operation, and wherein a second type of mark indicates that the physical page frame has previously been involved in at least one read I/O operation without knowledge of the hypervisor or operating system running the consumer.