On Thursday, February 06, 2014 6:00:01 am Simon Matter wrote:
> The following reply was made to PR amd64/186061; it has been noted by GNATS.
> 
> From: "Simon Matter" <simon.mat...@invoca.ch>
> To: bug-follo...@freebsd.org
> Cc: simon.mat...@invoca.ch
> Subject: Re: amd64/186061: FreeBSD 10 crashes as KVM guest on GNU/Linux on
>  AMD family 10h CPUs
> Date: Thu, 6 Feb 2014 11:46:41 +0100
> 
>  ------=_20140206114641_95473
>  Content-Type: text/plain; charset="iso-8859-1"
>  Content-Transfer-Encoding: 8bit
>  
>  Hi,
>  
>  After thinking about it again it seems the proposed solution may not be
>  enough. At least KVM allows to migrate guests from an Intel to an AMD
>  processor. That means in case of running as a vm guest, it's required to
>  always enable "AMD Erratum 383" workaround. Otherwise, after migration to
>  an affected AMD Family 10h processor, the guest could triggered AMD
>  Erratum 383.
>  
>  I've tried to implement this and attached patch fixes the problem for me.
>  Would me nice if someone with more experience than me could have a look at
>  it.

I suspect you do not need the mca.c change as I doubt any hypervisors are 
going to pass machine check handling on to guests.  Presumably they will 
handle that in the host OS instead.

>  Thanks,
>  Simon
>  ------=_20140206114641_95473
>  Content-Type: text/x-diff; name="vm-erratum383.patch"
>  Content-Transfer-Encoding: 8bit
>  Content-Disposition: attachment; filename="vm-erratum383.patch"
>  
>  --- /usr/src/sys/x86/x86/mca.c.orig  2014-01-16 21:35:03.000000000 +0100
>  +++ /usr/src/sys/x86/x86/mca.c       2014-02-05 22:15:53.109619475 +0100
>  @@ -720,8 +720,8 @@
>        * parity (L1TP) errors is disabled, enable the recommended workaround
>        * for Erratum 383.
>        */
>  -    if (cpu_vendor_id == CPU_VENDOR_AMD &&
>  -        CPUID_TO_FAMILY(cpu_id) == 0x10 && amd10h_L1TP)
>  +    if (vm_guest != VM_GUEST_NO || (cpu_vendor_id == CPU_VENDOR_AMD &&
>  +        CPUID_TO_FAMILY(cpu_id) == 0x10 && amd10h_L1TP))
>               workaround_erratum383 = 1;
>   
>       mca_banks = mcg_cap & MCG_CAP_COUNT;
>  --- /usr/src/sys/i386/i386/pmap.c.orig       2014-01-16 21:33:36.000000000 
+0100
>  +++ /usr/src/sys/i386/i386/pmap.c    2014-02-05 22:25:28.395821316 +0100
>  @@ -752,12 +752,12 @@
>       pv_entry_high_water = 9 * (pv_entry_max / 10);
>   
>       /*
>  -     * If the kernel is running in a virtual machine on an AMD Family 10h
>  -     * processor, then it must assume that MCA is enabled by the virtual
>  -     * machine monitor.
>  +     * If the kernel is running in a virtual machine on any processor
>  +     * family, then it must assume that MCA is enabled by the virtual
>  +     * machine monitor and the vm may migrate to an AMD Family 10h
>  +     * processor.
>        */
>  -    if (vm_guest == VM_GUEST_VM && cpu_vendor_id == CPU_VENDOR_AMD &&
>  -        CPUID_TO_FAMILY(cpu_id) == 0x10)
>  +    if (vm_guest != VM_GUEST_NO)
>               workaround_erratum383 = 1;
>   
>       /*
>  --- /usr/src/sys/amd64/amd64/pmap.c.orig     2014-01-16 21:33:04.000000000 
+0100
>  +++ /usr/src/sys/amd64/amd64/pmap.c  2014-02-05 22:28:25.814349113 +0100
>  @@ -1005,12 +1005,12 @@
>       }
>   
>       /*
>  -     * If the kernel is running in a virtual machine on an AMD Family 10h
>  -     * processor, then it must assume that MCA is enabled by the virtual
>  -     * machine monitor.
>  +     * If the kernel is running in a virtual machine on any processor
>  +     * family, then it must assume that MCA is enabled by the virtual
>  +     * machine monitor and the vm may migrate to an AMD Family 10h
>  +     * processor.
>        */
>  -    if (vm_guest == VM_GUEST_VM && cpu_vendor_id == CPU_VENDOR_AMD &&
>  -        CPUID_TO_FAMILY(cpu_id) == 0x10)
>  +    if (vm_guest != VM_GUEST_NO)
>               workaround_erratum383 = 1;
>   
>       /*
>  ------=_20140206114641_95473--
>  
>  
> _______________________________________________
> freebsd-amd64@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-amd64
> To unsubscribe, send any mail to "freebsd-amd64-unsubscr...@freebsd.org"
> 

-- 
John Baldwin
_______________________________________________
freebsd-amd64@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-amd64
To unsubscribe, send any mail to "freebsd-amd64-unsubscr...@freebsd.org"

Reply via email to