Cause: Previously libvirt transformed a host-model CPU into a real model everytime it needed to know the actual CPU model. Current libvirt does this transformation only once when a new domain with a host-model CPU is started to make sure the same CPU model is used for the whole life time of the domain.
Consequence: When libvirtd is restarted after an upgrade from an earlier version, it reconnects to running domains some of which might have been started with a host-model CPU that was not transformed into an actual model. Current libvirt does not expect a host-model CPU in a definition of a running domain which caused several issues when trying to migrate such domain.
Fix: Libvirt transforms host-model CPUs into actual CPU models of all running domains when reconnecting to them.
Result: Domains started on RHEL-7.3 can be successfully migrated even after libvirt is upgraded to a newer version.