Check e.g the diff of hw/vga.c against upstream: All the magic dances
there are required as qemu-kvm tracking cpu_register_physical_memory and
kvm_log_start cannot cope with all the patterns normal qemu code comes
up with. Upstream slot management now provides the same features
(including migration) like qemu-kvm, it just does not deal with legacy,
thus it does not have to patch qemu code (rather, we were able to remove
some already merged hooks - vga_dirty_log_stop).
Still not very restrictive, all this could be encapsulated with for
example macro COMPAT_NO_DMRW which could be removed when we don't care
anymore. Next?
Really, it's not worth the maintenance pain: Every new device emulation
code that wants to be KVM-legacy-compatible would need to be written
like that. And unless you are familiar with the slot management
internals, the "correct" pattern will not be obvious.