All of lore.kernel.org
 help / color / mirror / Atom feed
From: Igor Mammedov <imammedo@redhat.com>
To: Babu Moger <babu.moger@amd.com>
Cc: ehabkost@redhat.com, mst@redhat.com, qemu-devel@nongnu.org,
	pbonzini@redhat.com, rth@twiddle.net
Subject: Re: [PATCH v6 03/10] Revert "hw/i386: Move arch_id decode inside x86_cpus_init"
Date: Tue, 1 Sep 2020 14:13:38 +0200	[thread overview]
Message-ID: <20200901141338.1d975ea1@imammedo-mac> (raw)
In-Reply-To: <159889934379.21294.15323080164340490855.stgit@naples-babu.amd.com>

On Mon, 31 Aug 2020 13:42:23 -0500
Babu Moger <babu.moger@amd.com> wrote:

> This reverts commit 2e26f4ab3bf8390a2677d3afd9b1a04f015d7721.
> 
> Remove the EPYC specific apicid decoding and use the generic
> default decoding.
> 
> Signed-off-by: Babu Moger <babu.moger@amd.com>

Reviewed-by: Igor Mammedov <imammedo@redhat.com>

> ---
>  hw/i386/pc.c  |    6 +++---
>  hw/i386/x86.c |   37 +++++++------------------------------
>  2 files changed, 10 insertions(+), 33 deletions(-)
> 
> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> index 6b708f4341..0677d6a272 100644
> --- a/hw/i386/pc.c
> +++ b/hw/i386/pc.c
> @@ -1556,14 +1556,14 @@ static void pc_cpu_pre_plug(HotplugHandler *hotplug_dev,
>          topo_ids.die_id = cpu->die_id;
>          topo_ids.core_id = cpu->core_id;
>          topo_ids.smt_id = cpu->thread_id;
> -        cpu->apic_id = x86ms->apicid_from_topo_ids(&topo_info, &topo_ids);
> +        cpu->apic_id = x86_apicid_from_topo_ids(&topo_info, &topo_ids);
>      }
>  
>      cpu_slot = pc_find_cpu_slot(MACHINE(pcms), cpu->apic_id, &idx);
>      if (!cpu_slot) {
>          MachineState *ms = MACHINE(pcms);
>  
> -        x86ms->topo_ids_from_apicid(cpu->apic_id, &topo_info, &topo_ids);
> +        x86_topo_ids_from_apicid(cpu->apic_id, &topo_info, &topo_ids);
>          error_setg(errp,
>              "Invalid CPU [socket: %u, die: %u, core: %u, thread: %u] with"
>              " APIC ID %" PRIu32 ", valid index range 0:%d",
> @@ -1584,7 +1584,7 @@ static void pc_cpu_pre_plug(HotplugHandler *hotplug_dev,
>      /* TODO: move socket_id/core_id/thread_id checks into x86_cpu_realizefn()
>       * once -smp refactoring is complete and there will be CPU private
>       * CPUState::nr_cores and CPUState::nr_threads fields instead of globals */
> -    x86ms->topo_ids_from_apicid(cpu->apic_id, &topo_info, &topo_ids);
> +    x86_topo_ids_from_apicid(cpu->apic_id, &topo_info, &topo_ids);
>      if (cpu->socket_id != -1 && cpu->socket_id != topo_ids.pkg_id) {
>          error_setg(errp, "property socket-id: %u doesn't match set apic-id:"
>              " 0x%x (socket-id: %u)", cpu->socket_id, cpu->apic_id,
> diff --git a/hw/i386/x86.c b/hw/i386/x86.c
> index cf384b9743..3cc2318212 100644
> --- a/hw/i386/x86.c
> +++ b/hw/i386/x86.c
> @@ -68,22 +68,6 @@ inline void init_topo_info(X86CPUTopoInfo *topo_info,
>      topo_info->threads_per_core = ms->smp.threads;
>  }
>  
> -/*
> - * Set up with the new EPYC topology handlers
> - *
> - * AMD uses different apic id encoding for EPYC based cpus. Override
> - * the default topo handlers with EPYC encoding handlers.
> - */
> -static void x86_set_epyc_topo_handlers(MachineState *machine)
> -{
> -    X86MachineState *x86ms = X86_MACHINE(machine);
> -
> -    x86ms->apicid_from_cpu_idx = x86_apicid_from_cpu_idx_epyc;
> -    x86ms->topo_ids_from_apicid = x86_topo_ids_from_apicid_epyc;
> -    x86ms->apicid_from_topo_ids = x86_apicid_from_topo_ids_epyc;
> -    x86ms->apicid_pkg_offset = apicid_pkg_offset_epyc;
> -}
> -
>  /*
>   * Calculates initial APIC ID for a specific CPU index
>   *
> @@ -102,7 +86,7 @@ uint32_t x86_cpu_apic_id_from_index(X86MachineState *x86ms,
>  
>      init_topo_info(&topo_info, x86ms);
>  
> -    correct_id = x86ms->apicid_from_cpu_idx(&topo_info, cpu_index);
> +    correct_id = x86_apicid_from_cpu_idx(&topo_info, cpu_index);
>      if (x86mc->compat_apic_id_mode) {
>          if (cpu_index != correct_id && !warned && !qtest_enabled()) {
>              error_report("APIC IDs set in compatibility mode, "
> @@ -136,11 +120,6 @@ void x86_cpus_init(X86MachineState *x86ms, int default_cpu_version)
>      MachineState *ms = MACHINE(x86ms);
>      MachineClass *mc = MACHINE_GET_CLASS(x86ms);
>  
> -    /* Check for apicid encoding */
> -    if (cpu_x86_use_epyc_apic_id_encoding(ms->cpu_type)) {
> -        x86_set_epyc_topo_handlers(ms);
> -    }
> -
>      x86_cpu_set_default_version(default_cpu_version);
>  
>      /*
> @@ -154,12 +133,6 @@ 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->possible_cpus->len; 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);
>      }
> @@ -184,7 +157,8 @@ 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);
> -   x86_topo_ids_from_idx(&topo_info, idx, &topo_ids);
> +   x86_topo_ids_from_apicid(ms->possible_cpus->cpus[idx].arch_id,
> +                            &topo_info, &topo_ids);
>     return topo_ids.pkg_id % ms->numa_state->num_nodes;
>  }
>  
> @@ -215,7 +189,10 @@ 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;
> -        x86_topo_ids_from_idx(&topo_info, i, &topo_ids);
> +        ms->possible_cpus->cpus[i].arch_id =
> +            x86_cpu_apic_id_from_index(x86ms, i);
> +        x86_topo_ids_from_apicid(ms->possible_cpus->cpus[i].arch_id,
> +                                 &topo_info, &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) {
> 



  reply	other threads:[~2020-09-01 12:14 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-31 18:42 [PATCH v6 00/10] Remove EPYC mode apicid decode and use generic decode Babu Moger
2020-08-31 18:42 ` [PATCH v6 01/10] Revert "i386: Fix pkg_id offset for EPYC cpu models" Babu Moger
2020-09-01 12:11   ` Igor Mammedov
2020-08-31 18:42 ` [PATCH v6 02/10] Revert "target/i386: Enable new apic id encoding for EPYC based cpus models" Babu Moger
2020-09-01 12:12   ` Igor Mammedov
2020-08-31 18:42 ` [PATCH v6 03/10] Revert "hw/i386: Move arch_id decode inside x86_cpus_init" Babu Moger
2020-09-01 12:13   ` Igor Mammedov [this message]
2020-08-31 18:42 ` [PATCH v6 04/10] Revert "i386: Introduce use_epyc_apic_id_encoding in X86CPUDefinition" Babu Moger
2020-09-01 12:14   ` Igor Mammedov
2020-08-31 18:42 ` [PATCH v6 05/10] Revert "hw/i386: Introduce apicid functions inside X86MachineState" Babu Moger
2020-09-01 12:15   ` Igor Mammedov
2020-08-31 18:42 ` [PATCH v6 06/10] Revert "target/i386: Cleanup and use the EPYC mode topology functions" Babu Moger
2020-09-01 12:15   ` Igor Mammedov
2020-08-31 18:42 ` [PATCH v6 07/10] Revert "hw/386: Add EPYC mode topology decoding functions" Babu Moger
2020-09-01 12:15   ` Igor Mammedov
2020-08-31 18:42 ` [PATCH v6 08/10] Revert "hw/i386: Update structures to save the number of nodes per package" Babu Moger
2020-09-01 12:21   ` Igor Mammedov
2020-08-31 18:43 ` [PATCH v6 09/10] i386: Simplify CPUID_8000_001E for AMD Babu Moger
2020-09-01 11:52   ` Igor Mammedov
2020-09-01 14:45     ` Babu Moger
2020-08-31 18:43 ` [PATCH v6 10/10] " Babu Moger
2020-09-01 11:58   ` Igor Mammedov
2020-09-18 21:38   ` Eduardo Habkost
2020-09-18 21:41     ` Babu Moger
2020-09-01 13:33 ` [PATCH v6 00/10] Remove EPYC mode apicid decode and use generic decode Eduardo Habkost

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200901141338.1d975ea1@imammedo-mac \
    --to=imammedo@redhat.com \
    --cc=babu.moger@amd.com \
    --cc=ehabkost@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.