• E
    i386: Define static "base" CPU model · 5adbed30
    Eduardo Habkost 提交于
    The query-cpu-model-expand QMP command needs at least one static
    model, to allow the "static" expansion mode to be implemented.
    Instead of defining static versions of every CPU model, define a
    "base" CPU model that has absolutely no feature flag enabled.
    
    Despite having no CPUID data set at all, "-cpu base" is even a
    functional CPU:
    
    * It can boot a Slackware Linux 1.01 image with a Linux 0.99.12
      kernel[1].
    * It is even possible to boot[2] a modern Fedora x86_64 guest by
      manually enabling the following CPU features:
      -cpu base,+lm,+msr,+pae,+fpu,+cx8,+cmov,+sse,+sse2,+fxsr
    
    [1] http://www.qemu-advent-calendar.org/2014/#day-1
    [2] This is what can be seen in the guest:
        [root@localhost ~]# cat /proc/cpuinfo
        processor       : 0
        vendor_id       : unknown
        cpu family      : 0
        model           : 0
        model name      : 00/00
        stepping        : 0
        physical id     : 0
        siblings        : 1
        core id         : 0
        cpu cores       : 1
        apicid          : 0
        initial apicid  : 0
        fpu             : yes
        fpu_exception   : yes
        cpuid level     : 1
        wp              : yes
        flags           : fpu msr pae cx8 cmov fxsr sse sse2 lm nopl
        bugs            :
        bogomips        : 5832.70
        clflush size    : 64
        cache_alignment : 64
        address sizes   : 36 bits physical, 48 bits virtual
        power management:
    
        [root@localhost ~]# x86info -v -a
        x86info v1.30.  Dave Jones 2001-2011
        Feedback to <davej@redhat.com>.
    
        No TSC, MHz calculation cannot be performed.
        Unknown vendor (0)
        MP Table:
    
        Family: 0 Model: 0 Stepping: 0
        CPU Model (x86info's best guess):
    
        eax in: 0x00000000, eax = 00000001 ebx = 00000000 ecx = 00000000 edx = 00000000
        eax in: 0x00000001, eax = 00000000 ebx = 00000800 ecx = 00000000 edx = 07008161
    
        eax in: 0x80000000, eax = 80000001 ebx = 00000000 ecx = 00000000 edx = 00000000
        eax in: 0x80000001, eax = 00000000 ebx = 00000000 ecx = 00000000 edx = 20000000
    
        Feature flags:
         fpu            Onboard FPU
         msr            Model-Specific Registers
         pae            Physical Address Extensions
         cx8            CMPXCHG8 instruction
         cmov           CMOV instruction
         fxsr           FXSAVE and FXRSTOR instructions
         sse            SSE support
         sse2           SSE2 support
    
        Long NOPs supported: yes
    
        Address sizes : 0 bits physical, 0 bits virtual
        0MHz processor (estimate).
    
         running at an estimated 0MHz
        [root@localhost ~]#
    
    Message-Id: <20170222190029.17243-2-ehabkost@redhat.com>
    Reviewed-by: NDavid Hildenbrand <david@redhat.com>
    Tested-by: NJiri Denemark <jdenemar@redhat.com>
    Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
    5adbed30
cpu-qom.h 2.4 KB