Adds new epyc property in PCMachineState and also in MachineState. This property will be used to initialize the mode specific handlers to generate apic ids.
Signed-off-by: Babu Moger <babu.mo...@amd.com> --- hw/i386/pc.c | 23 +++++++++++++++++++++++ include/hw/boards.h | 2 ++ include/hw/i386/pc.h | 1 + 3 files changed, 26 insertions(+) diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 959bd3821b..14760523a9 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -2810,6 +2810,22 @@ static void pc_machine_set_pit(Object *obj, bool value, Error **errp) pcms->pit_enabled = value; } +static bool pc_machine_get_epyc(Object *obj, Error **errp) +{ + PCMachineState *pcms = PC_MACHINE(obj); + + return pcms->epyc; +} + +static void pc_machine_set_epyc(Object *obj, bool value, Error **errp) +{ + PCMachineState *pcms = PC_MACHINE(obj); + MachineState *ms = MACHINE(pcms); + + pcms->epyc = value; + ms->epyc = value; +} + static void pc_machine_initfn(Object *obj) { PCMachineState *pcms = PC_MACHINE(obj); @@ -3015,6 +3031,13 @@ static void pc_machine_class_init(ObjectClass *oc, void *data) object_class_property_add_bool(oc, PC_MACHINE_PIT, pc_machine_get_pit, pc_machine_set_pit, &error_abort); + + object_class_property_add_bool(oc, "epyc", + pc_machine_get_epyc, pc_machine_set_epyc, &error_abort); + + object_class_property_set_description(oc, "epyc", + "Set on/off to use epyc mode", &error_abort); + } static const TypeInfo pc_machine_info = { diff --git a/include/hw/boards.h b/include/hw/boards.h index 12eb5032a5..0001d42e50 100644 --- a/include/hw/boards.h +++ b/include/hw/boards.h @@ -299,6 +299,8 @@ struct MachineState { AccelState *accelerator; CPUArchIdList *possible_cpus; CpuTopology smp; + bool epyc; + struct NVDIMMState *nvdimms_state; }; diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index d6f1189997..cf9e7b0045 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -68,6 +68,7 @@ struct PCMachineState { uint64_t *node_mem; /* Apic id specific handlers */ + bool epyc; uint32_t (*apicid_from_cpu_idx)(X86CPUTopoInfo *topo_info, unsigned cpu_index); void (*topo_ids_from_apicid)(apic_id_t apicid, X86CPUTopoInfo *topo_info, X86CPUTopoIDs *topo_ids);