Skip to content
  • Andreas Färber's avatar
    target-i386: Defer MCE init · 7a059953
    Andreas Färber authored
    Commit de024815
    
     (target-i386: QOM'ify
    CPU init) moved mce_init() call from helper.c:cpu_x86_init() into
    X86CPU's cpu.c:x86_cpu_initfn().
    mce_init() checks for a family >= 6 though, so we could end up with a
    sequence such as for -cpu somecpu,family=6:
    
      x86_cpu_initfn => X86CPU::family == 5
        mce_init => no-op
      cpu_x86_register => X86CPU::family = 6
      => MCE unexpectedly not init'ed
    
    or for -cpu someothercpu,family=5:
    
      x86_cpu_initfn => X86CPU::family == 6
        mce_init => init'ed
      cpu_x86_register => X86CPU::family = 5
      => MCE unexpectedly init'ed
    
    Therefore partially revert the above commit. To avoid moving
    mce_init() back into helper.c, foresightedly move it into a
    new x86_cpu_realize() function and, in lack of ObjectClass::realize,
    call it directly from cpu_x86_init().
    
    While at it, move the qemu_init_vcpu() call that used to follow
    mce_init() in cpu_x86_init() into the new realizefn as well.
    
    Reported-by: default avatarIgor Mammedov <imammedo@redhat.com>
    Signed-off-by: default avatarAndreas Färber <afaerber@suse.de>
    Reviewed-by: default avatarIgor Mammedov <imammedo@redhat.com>
    7a059953