Unlike host-model, host-passthrough does not do any check, it just passes "-cpu host" blindly. Therefore, lack of flags can and will result in crashes---SIGSEGV if it happens in userspace, but worse if for example the destination doesn't have an MSR that should be there according to the kernel.

Paolo

Il mar 6 ago 2019, 18:22 Dr. David Alan Gilbert <dgilbert@redhat.com> ha scritto:
* Paolo Bonzini (pbonzini@redhat.com) wrote:
> host-passthrough documentation menions that the source and destination
> hosts are not identical in both hardware and configuration.  Configuration
> actually includes microcode version and QEMU version, but this is not
> clear so make it explicit
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  docs/formatdomain.html.in | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
> index f5c882141a..6d084d7c04 100644
> --- a/docs/formatdomain.html.in
> +++ b/docs/formatdomain.html.in
> @@ -1590,8 +1590,8 @@
>            hand, the ABI provided to the guest is reproducible. During
>            migration, complete CPU model definition is transferred to the
>            destination host so the migrated guest will see exactly the same CPU
> -          model even if the destination host contains more capable CPUs for
> -          the running instance of the guest; but shutting down and restarting
> +          model for the running instance of the guest, even if the destination
> +          host contains more capable CPUs or newer kernel; but shutting down and restarting
>            the guest may present different hardware to the guest according to
>            the capabilities of the new host. Prior to libvirt 3.2.0 and QEMU
>            2.9.0 detection of the host CPU model via QEMU is not supported.
> @@ -1625,10 +1625,10 @@
>            environment cannot be reproduced on different hardware. Thus, if you
>            hit any bugs, you are on your own. Further details of that CPU can
>            be changed using <code>feature</code> elements. Migration of a guest
> -          using host-passthrough is dangerous if the source and destination
> -          hosts are not identical in both hardware and configuration. If such
> -          a migration is attempted then the guest may hang or crash upon
> -          resuming execution on the destination host.</dd>
> +          using host-passthrough is dangerous if the source and destination hosts
> +          are not identical in both hardware, QEMU version, microcode version
> +          and configuration. If such a migration is attempted then the guest may
> +          hang or crash upon resuming execution on the destination host.</dd>

If libvirt is  driving qemu with 'exact' on the cpu option, under what
situation would it hang/crash on the destination?
All of the microcode changes I think have caused a flag to appear, and
thus it would be required on the destination.

Dave

>          </dl>

>          Both <code>host-model</code> and <code>host-passthrough</code> modes
> --
> 2.21.0
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK