A computer system comprising: one or more processors; memory, accessible by the one or more processors; and a virtualization-aware module (114, 120) of a non virtualization-aware guest operating system, the virtualization-aware module being stored in the memory and executable on the one or more processors to: receive a range of guest physical memory addresses of the guest operating system, the range of guest physical memory addresses comprising a source or destination of a direct memory access, DMA, transfer; determine whether at least one of the guest physical memory addresses of the range of guest physical memory addresses points to a non-resident portion of guest physical memory; responsive to determining that at least one of the guest physical memory addresses points to a non-resident portion of guest physical memory, wherein the non-resident portion of guest physical memory is not backed by system physical memory: transmit a request to a hypervisor to make the non-resident portion of guest physical memory resident, and receive a message from the hypervisor indicating that the non-resident portion of guest physical memory has been backed by system physical memory; and transmit the range of guest physical memory addresses to a component that translates guest physical memory addresses into device logical addresses or system physical addresses. one or more processors; memory, accessible by the one or more processors; and a virtualization-aware module (114, 120) of a non virtualization-aware guest operating system, the virtualization-aware module being stored in the memory and executable on the one or more processors to: receive a range of guest physical memory addresses of the guest operating system, the range of guest physical memory addresses comprising a source or destination of a direct memory access, DMA, transfer; determine whether at least one of the guest physical memory addresses of the range of guest physical memory addresses points to a non-resident portion of guest physical memory; responsive to determining that at least one of the guest physical memory addresses points to a non-resident portion of guest physical memory, wherein the non-resident portion of guest physical memory is not backed by system physical memory: transmit a request to a hypervisor to make the non-resident portion of guest physical memory resident, and receive a message from the hypervisor indicating that the non-resident portion of guest physical memory has been backed by system physical memory; and transmit the range of guest physical memory addresses to a component that translates guest physical memory addresses into device logical addresses or system physical addresses. receive a range of guest physical memory addresses of the guest operating system, the range of guest physical memory addresses comprising a source or destination of a direct memory access, DMA, transfer; determine whether at least one of the guest physical memory addresses of the range of guest physical memory addresses points to a non-resident portion of guest physical memory; responsive to determining that at least one of the guest physical memory addresses points to a non-resident portion of guest physical memory, wherein the non-resident portion of guest physical memory is not backed by system physical memory: transmit a request to a hypervisor to make the non-resident portion of guest physical memory resident, and receive a message from the hypervisor indicating that the non-resident portion of guest physical memory has been backed by system physical memory; and transmit a request to a hypervisor to make the non-resident portion of guest physical memory resident, and receive a message from the hypervisor indicating that the non-resident portion of guest physical memory has been backed by system physical memory; and transmit the range of guest physical memory addresses to a component that translates guest physical memory addresses into device logical addresses or system physical addresses.