Patent ID: 7721068

Claim:
A machine-implemented method for facilitating the relocation of data from a source page in memory to a destination page in memory, the method comprising: determining whether the source page potentially is being accessed by an Input/Output (I/O) device; and in response to a determination that the source page potentially is being accessed by an I/O device, temporarily preventing the I/O device from accessing the source page; relocating contents of the source page to the destination page; and after the contents of the source page have been relocated to the destination page, allowing the I/O device to access contents of the destination page; wherein the step of determining whether the source page potentially is being accessed by the I/O device comprises the kernel traversing a list of linked data structures in response to a determination that the contents of the source page are to be relocated; wherein the step of the kernel traversing the list of linked data structures comprises the kernel traversing the list of linked data structures until the kernel locates a particular data structure that the kernel previously inserted into the linked list of data structures in response to the kernel receiving a first call that an Input/Output Memory Management Unit (IOMMU) made to the kernel; wherein the first call specified a physical address of the source page; wherein the IOMMU made the first call to the kernel in response to the IOMMU receiving a second call from the I/O device; wherein the second call specified a particular virtual address that the I/O device would be using to access the source page using Direct Virtual Memory Access (DVMA).