Eduardo et al, I'm looking at 11ae6ed8affdd131e and I wanted to implement libvirt support for that. But more I look at it less I understand it. My understanding it is an optimization (although not very effective one since madvise() is/should be immediately followed by munmap()). So any application that is trying to keep track of guest memory can stop doing so as soon as it sees munmap(). Or does the optimization lies in fact that madvise() is called sooner and thus the app can stop caring slightly sooner?
Also, I don't quite understand why is this configurable. What's the harm in turning it on by default? Yesterday I've posted some patches to libvirt list  (although I have to admit I am still not fully convinced about the design) and they implement just this - whenever qemu supports the feature libvirt turns it on. Michal 1: https://www.redhat.com/archives/libvir-list/2018-April/msg01066.html