static void spapr_core_pre_plug(HotplugHandler *hotplug_dev, DeviceState *dev,

                                Error **errp)

{

    MachineState *machine = MACHINE(OBJECT(hotplug_dev));

    MachineClass *mc = MACHINE_GET_CLASS(hotplug_dev);

    Error *local_err = NULL;

    CPUCore *cc = CPU_CORE(dev);

    sPAPRCPUCore *sc = SPAPR_CPU_CORE(dev);

    char *base_core_type = spapr_get_cpu_core_type(machine->cpu_model);

    const char *type = object_get_typename(OBJECT(dev));

    CPUArchId *core_slot;

    int node_id;

    int index;



    if (dev->hotplugged && !mc->has_hotpluggable_cpus) {

        error_setg(&local_err, "CPU hotplug not supported for this machine");

        goto out;

    }



    if (strcmp(base_core_type, type)) {

        error_setg(&local_err, "CPU core type should be %s", base_core_type);

        goto out;

    }



    if (cc->core_id % smp_threads) {

        error_setg(&local_err, "invalid core id %d", cc->core_id);

        goto out;

    }



    if (cc->nr_threads != smp_threads) {

        error_setg(errp, "invalid nr-threads %d, must be %d",

                   cc->nr_threads, smp_threads);

        return;

    }



    core_slot = spapr_find_cpu_slot(MACHINE(hotplug_dev), cc->core_id, &index);

    if (!core_slot) {

        error_setg(&local_err, "core id %d out of range", cc->core_id);

        goto out;

    }



    if (core_slot->cpu) {

        error_setg(&local_err, "core %d already populated", cc->core_id);

        goto out;

    }



    node_id = numa_get_node_for_cpu(cc->core_id);

    if (node_id == nb_numa_nodes) {

        /* by default CPUState::numa_node was 0 if it's not set via CLI

         * keep it this way for now but in future we probably should

         * refuse to start up with incomplete numa mapping */

        node_id = 0;

    }

    if (sc->node_id == CPU_UNSET_NUMA_NODE_ID) {

        sc->node_id = node_id;

    } else if (sc->node_id != node_id) {

        error_setg(&local_err, "node-id %d must match numa node specified"

            "with -numa option for cpu-index %d", sc->node_id, cc->core_id);

        goto out;

    }



out:

    g_free(base_core_type);

    error_propagate(errp, local_err);

}

static void spapr_core_pre_plug(HotplugHandler *hotplug_dev, DeviceState *dev,

                                Error **errp)

{

    MachineState *machine = MACHINE(OBJECT(hotplug_dev));

    MachineClass *mc = MACHINE_GET_CLASS(hotplug_dev);

    Error *local_err = NULL;

    CPUCore *cc = CPU_CORE(dev);

    sPAPRCPUCore *sc = SPAPR_CPU_CORE(dev);

    char *base_core_type = spapr_get_cpu_core_type(machine->cpu_model);

    const char *type = object_get_typename(OBJECT(dev));

    CPUArchId *core_slot;

    int node_id;

    int index;



    if (dev->hotplugged && !mc->has_hotpluggable_cpus) {

        error_setg(&local_err, "CPU hotplug not supported for this machine");

        goto out;

    }



    if (strcmp(base_core_type, type)) {

        error_setg(&local_err, "CPU core type should be %s", base_core_type);

        goto out;

    }



    if (cc->core_id % smp_threads) {

        error_setg(&local_err, "invalid core id %d", cc->core_id);

        goto out;

    }



    if (cc->nr_threads != smp_threads) {

        error_setg(errp, "invalid nr-threads %d, must be %d",

                   cc->nr_threads, smp_threads);

        return;

    }



    core_slot = spapr_find_cpu_slot(MACHINE(hotplug_dev), cc->core_id, &index);

    if (!core_slot) {

        error_setg(&local_err, "core id %d out of range", cc->core_id);

        goto out;

    }



    if (core_slot->cpu) {

        error_setg(&local_err, "core %d already populated", cc->core_id);

        goto out;

    }



    node_id = numa_get_node_for_cpu(cc->core_id);

    if (node_id == nb_numa_nodes) {

        





        node_id = 0;

    }

    if (sc->node_id == CPU_UNSET_NUMA_NODE_ID) {

        sc->node_id = node_id;

    } else if (sc->node_id != node_id) {

        error_setg(&local_err, "node-id %d must match numa node specified"

            "with -numa option for cpu-index %d", sc->node_id, cc->core_id);

        goto out;

    }



out:

    g_free(base_core_type);

    error_propagate(errp, local_err);

}

static void FUNC_0(HotplugHandler *VAR_0, DeviceState *VAR_1,

                                Error **VAR_2)

{

    MachineState *machine = MACHINE(OBJECT(VAR_0));

    MachineClass *mc = MACHINE_GET_CLASS(VAR_0);

    Error *local_err = NULL;

    CPUCore *cc = CPU_CORE(VAR_1);

    sPAPRCPUCore *sc = SPAPR_CPU_CORE(VAR_1);

    char *VAR_3 = spapr_get_cpu_core_type(machine->cpu_model);

    const char *VAR_4 = object_get_typename(OBJECT(VAR_1));

    CPUArchId *core_slot;

    int VAR_5;

    int VAR_6;



    if (VAR_1->hotplugged && !mc->has_hotpluggable_cpus) {

        error_setg(&local_err, "CPU hotplug not supported for this machine");

        goto out;

    }



    if (strcmp(VAR_3, VAR_4)) {

        error_setg(&local_err, "CPU core VAR_4 should be %s", VAR_3);

        goto out;

    }



    if (cc->core_id % smp_threads) {

        error_setg(&local_err, "invalid core id %d", cc->core_id);

        goto out;

    }



    if (cc->nr_threads != smp_threads) {

        error_setg(VAR_2, "invalid nr-threads %d, must be %d",

                   cc->nr_threads, smp_threads);

        return;

    }



    core_slot = spapr_find_cpu_slot(MACHINE(VAR_0), cc->core_id, &VAR_6);

    if (!core_slot) {

        error_setg(&local_err, "core id %d out of range", cc->core_id);

        goto out;

    }



    if (core_slot->cpu) {

        error_setg(&local_err, "core %d already populated", cc->core_id);

        goto out;

    }



    VAR_5 = numa_get_node_for_cpu(cc->core_id);

    if (VAR_5 == nb_numa_nodes) {

        





        VAR_5 = 0;

    }

    if (sc->VAR_5 == CPU_UNSET_NUMA_NODE_ID) {

        sc->VAR_5 = VAR_5;

    } else if (sc->VAR_5 != VAR_5) {

        error_setg(&local_err, "node-id %d must match numa node specified"

            "with -numa option for cpu-VAR_6 %d", sc->VAR_5, cc->core_id);

        goto out;

    }



out:

    g_free(VAR_3);

    error_propagate(VAR_2, local_err);

}

static void FUNC_0(HotplugHandler *VAR_0, DeviceState *VAR_1,
Error **VAR_2)
{ MachineState *machine = MACHINE(OBJECT(VAR_0)); MachineClass *mc = MACHINE_GET_CLASS(VAR_0); Error *local_err = NULL; CPUCore *cc = CPU_CORE(VAR_1); sPAPRCPUCore *sc = SPAPR_CPU_CORE(VAR_1); char *VAR_3 = spapr_get_cpu_core_type(machine->cpu_model); const char *VAR_4 = object_get_typename(OBJECT(VAR_1)); CPUArchId *core_slot; int VAR_5; int VAR_6; if (VAR_1->hotplugged && !mc->has_hotpluggable_cpus) { error_setg(&local_err, "CPU hotplug not supported for this machine"); goto out; } if (strcmp(VAR_3, VAR_4)) { error_setg(&local_err, "CPU core VAR_4 should be %s", VAR_3); goto out; } if (cc->core_id % smp_threads) { error_setg(&local_err, "invalid core id %d", cc->core_id); goto out; } if (cc->nr_threads != smp_threads) { error_setg(VAR_2, "invalid nr-threads %d, must be %d",
cc->nr_threads, smp_threads); return; } core_slot = spapr_find_cpu_slot(MACHINE(VAR_0), cc->core_id, &VAR_6); if (!core_slot) { error_setg(&local_err, "core id %d out of range", cc->core_id); goto out; } if (core_slot->cpu) { error_setg(&local_err, "core %d already populated", cc->core_id); goto out; } VAR_5 = numa_get_node_for_cpu(cc->core_id); if (VAR_5 == nb_numa_nodes) { VAR_5 = 0; } if (sc->VAR_5 == CPU_UNSET_NUMA_NODE_ID) { sc->VAR_5 = VAR_5; } else if (sc->VAR_5 != VAR_5) { error_setg(&local_err, "node-id %d must match numa node specified"
"with -numa option for cpu-VAR_6 %d", sc->VAR_5, cc->core_id); goto out; } out:
g_free(VAR_3); error_propagate(VAR_2, local_err); }