On 30/09/2016 12:28, Denis V. Lunev wrote:
> From: Evgeny Yakovlev
>
> Current CPU definition for AMD Opteron third generation includes
> features like SSE4a and LAHF_LM support in emulated CPUID. These
> features are present in K8 rev.E or K10 CPUs and later. However,
> current G3 family and model describe 2nd generation K8 cores instead.
>
> This is incorrect but was considered harmless until out tests found a
> problem with linux kernels >= 3.10 (and maybe earlier) which specifically
> check for Opteron K8 model when parsing CPUID leaf 0x8001:
> http://lxr.free-electrons.com/source/arch/x86/kernel/cpu/amd.c?v=3.16#L552
> This code will disable LAHF_LM feature in /proc/cpuinfo if model number
> is inconsistent.
>
> This change sets Opteron_G3 family/model/stepping to 16/2/3 which is
> a proper Opteron 3rd generation 2350 CPU.
>
> Signed-off-by: Evgeny Yakovlev
> Signed-off-by: Denis V. Lunev
> CC: Paolo Bonzini
> CC: Richard Henderson
> CC: Eduardo Habkost
> ---
> target-i386/cpu.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/target-i386/cpu.c b/target-i386/cpu.c
> index 09b..d1c3ad1 100644
> --- a/target-i386/cpu.c
> +++ b/target-i386/cpu.c
> @@ -1425,9 +1425,9 @@ static X86CPUDefinition builtin_x86_defs[] = {
> .name = "Opteron_G3",
> .level = 5,
> .vendor = CPUID_VENDOR_AMD,
> -.family = 15,
> -.model = 6,
> -.stepping = 1,
> +.family = 16,
> +.model = 2,
> +.stepping = 3,
> .features[FEAT_1_EDX] =
> CPUID_VME | CPUID_SSE2 | CPUID_SSE | CPUID_FXSR | CPUID_MMX |
> CPUID_CLFLUSH | CPUID_PSE36 | CPUID_PAT | CPUID_CMOV | CPUID_MCA
> |
>
This needs the usual compatibility gunk for versions <= 2.7.
Thanks,
Paolo