According to one embodiment of the invention, a technique is provided for
facilitating the relocation of data from a source page to a destination
page in a computing system in which I/O devices may conduct DVMA
transactions via an IOMMU. Before the relocation, it is determined
whether any devices potentially are accessing the source page. If it is
determined that a device potentially is accessing the source page, then
the IOMMU's device driver ("bus nexus") "suspends" the bus. The bus nexus
allows any pending memory transactions to finish. While the bus is
suspended, the kernel moves the contents of the source page to the
destination page. After the kernel has moved the contents, the IOMMU's
TLB is updated so that the virtual address that was mapped to the source
page's physical address is mapped to the destination page's physical
address. The bus nexus "unsuspends" the bus.