The following patch-set proposes an efficient mechanism for handing freed memory between the guest and the host. It enables the guests with DAX (no page cache) to rapidly free and reclaim memory to and from the host respectively. Changelog in V4: -Undefined reference for arch_free_page and arch_alloc_page when KVM is build as a module is fixed -Batched guest free pages could be transmitted to the host/QEMU with one single kick -Enabling or disabling guest page hinting support could be done through sysctl variable on the run-time -Basic functional testing for this support is done Virtio interface changes are picked up from Wei's patch-set for Virtio-balloon enhancement[3]. "Wei, How would you like me to credit you in the final patch?") Performance: Test criteria: Kernel Build Command: make clean;make defconfig;time make With Hinting: real: 21m24.680s user: 16m3.362s sys : 2m19.027s Without Hinting: real: 21m18.062s user: 16m13.969s sys : 1m17.884s Test criteria: Stress Test Command: time stress --io 2 --cpu 2 --vm 2 --vm-bytes 1024M --timeout 100s -v With Hinting: real: 1m40.726s user: 1m23.449s sys : 0m5.576s Without Hinting: real: 1m40.378s user: 1m21.292s sys : 0m4.972s [1] http://www.spinics.net/lists/kvm/msg153666.html [2] https://www.spinics.net/lists/kvm/msg155471.html [3] http://www.spinics.net/lists/kvm/msg152734.html [4] https://www.spinics.net/lists/kvm/msg156658.html