[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v6 12/13] hw/i386: Move arch_id decode inside x86_cpus_init
From: |
Igor Mammedov |
Subject: |
Re: [PATCH v6 12/13] hw/i386: Move arch_id decode inside x86_cpus_init |
Date: |
Wed, 11 Mar 2020 13:29:30 +0100 |
On Tue, 10 Mar 2020 21:34:39 -0500
Babu Moger <address@hidden> wrote:
> Apicid calculation depends on knowing the total number of numa nodes
> for EPYC cpu models. Right now, we are calculating the arch_id while
> parsing the numa(parse_numa). At this time, it is not known how many
> total numa nodes are configured in the system.
>
> Move the arch_id inside x86_cpus_init. At this time smp parse is already
> completed and numa node information is available.
now it's correcting bug introduced by 10/13,
which is fine but it leaves bisection broken
perhaps squash this patch in 10/13?
>
> Signed-off-by: Babu Moger <address@hidden>
> Acked-by: Michael S. Tsirkin <address@hidden>
> ---
> hw/i386/x86.c | 17 +++++++++++------
> 1 file changed, 11 insertions(+), 6 deletions(-)
>
> diff --git a/hw/i386/x86.c b/hw/i386/x86.c
> index ad85347142..be93c1fd1b 100644
> --- a/hw/i386/x86.c
> +++ b/hw/i386/x86.c
> @@ -140,6 +140,9 @@ void x86_cpus_init(X86MachineState *x86ms, int
> default_cpu_version)
> MachineState *ms = MACHINE(x86ms);
> MachineClass *mc = MACHINE_GET_CLASS(x86ms);
>
> + /* Check for apicid encoding */
> + x86_check_apic_id_encoding(ms);
> +
> x86_cpu_set_default_version(default_cpu_version);
>
> /*
> @@ -153,6 +156,12 @@ void x86_cpus_init(X86MachineState *x86ms, int
> default_cpu_version)
> x86ms->apic_id_limit = x86_cpu_apic_id_from_index(x86ms,
> ms->smp.max_cpus - 1)
> + 1;
> possible_cpus = mc->possible_cpu_arch_ids(ms);
> +
> + for (i = 0; i < ms->smp.cpus; i++) {
> + ms->possible_cpus->cpus[i].arch_id =
> + x86_cpu_apic_id_from_index(x86ms, i);
> + }
> +
> for (i = 0; i < ms->smp.cpus; i++) {
> x86_cpu_new(x86ms, possible_cpus->cpus[i].arch_id, &error_fatal);
> }
> @@ -177,8 +186,7 @@ int64_t x86_get_default_cpu_node_id(const MachineState
> *ms, int idx)
> init_topo_info(&topo_info, x86ms);
>
> assert(idx < ms->possible_cpus->len);
> - x86ms->topo_ids_from_apicid(ms->possible_cpus->cpus[idx].arch_id,
> - &topo_info, &topo_ids);
> + x86ms->topo_ids_from_idx(&topo_info, idx, &topo_ids);
> return topo_ids.pkg_id % ms->numa_state->num_nodes;
> }
>
> @@ -212,10 +220,7 @@ const CPUArchIdList
> *x86_possible_cpu_arch_ids(MachineState *ms)
>
> ms->possible_cpus->cpus[i].type = ms->cpu_type;
> ms->possible_cpus->cpus[i].vcpus_count = 1;
> - ms->possible_cpus->cpus[i].arch_id =
> - x86_cpu_apic_id_from_index(x86ms, i);
> - x86ms->topo_ids_from_apicid(ms->possible_cpus->cpus[i].arch_id,
> - &topo_info, &topo_ids);
> + x86ms->topo_ids_from_idx(&topo_info, i, &topo_ids);
> ms->possible_cpus->cpus[i].props.has_socket_id = true;
> ms->possible_cpus->cpus[i].props.socket_id = topo_ids.pkg_id;
> if (x86ms->smp_dies > 1) {
>
- Re: [PATCH v6 08/13] target/i386: Cleanup and use the EPYC mode topology functions, (continued)
[PATCH v6 11/13] target/i386: Enable new apic id encoding for EPYC based cpus models, Babu Moger, 2020/03/10
[PATCH v6 12/13] hw/i386: Move arch_id decode inside x86_cpus_init, Babu Moger, 2020/03/10
- Re: [PATCH v6 12/13] hw/i386: Move arch_id decode inside x86_cpus_init,
Igor Mammedov <=
[PATCH v6 13/13] i386: Fix pkg_id offset for EPYC cpu models, Babu Moger, 2020/03/10