• I
    vl.c: convert cpu_model to cpu type and set of global properties before machine_init() · 6063d4c0
    Igor Mammedov 提交于
    All machines that support user specified cpu_model either call
    cpu_generic_init() or cpu_class_by_name()/CPUClass::parse_features
    to parse feature string and to get CPU type to create.
    
    Which leads to code duplication and hard-codding default CPU model
    within machine_foo_init() code. Which makes it impossible to
    get CPU type before machine_init() is run.
    
    So instead of setting default CPUs models and doing parsing in
    target specific machine_foo_init() in various ways, provide
    a generic data driven cpu_model parsing before machine_init()
    is called.
    
    in follow up per target patches, it will allow to:
      * define default CPU type in consistent/generic manner
        per machine type and drop custom code that fallbacks
        to default if cpu_model is NULL
      * drop custom features parsing in targets and do it
        in centralized way.
      * for cases of
          cpu_generic_init(TYPE_BASE/DEFAULT_CPU, "some_cpu")
        replace it with
          cpu_create(machine->cpu_type) || cpu_create(TYPE_FOO)
        depending if CPU type is user settable or not.
        not doing useless parsing and clearly documenting where
        CPU model is user settable or fixed one.
    
    Patch allows machine subclasses to define default CPU type
    per machine class at class_init() time and if that is set
    generic code will parse cpu_model into a MachineState::cpu_type
    which will be used to create CPUs for that machine instance
    and allows gradual per board conversion.
    Signed-off-by: NIgor Mammedov <imammedo@redhat.com>
    Message-Id: <1505318697-77161-4-git-send-email-imammedo@redhat.com>
    Acked-by: NPhilippe Mathieu-Daudé <f4bug@amsat.org>
    Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
    6063d4c0
vl.c 144.0 KB