All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alireza Sanaee <alireza.sanaee@huawei.com>
To: Zhao Liu <zhao1.liu@intel.com>
Cc: "Daniel P .\" =?ISO-8859-1?Q?Berrang=E9?= <berrange@redhat.com>,
	Igor  Mammedov <imammedo@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	Marcel  Apfelbaum <marcel.apfelbaum@gmail.com>,
	Philippe =?ISO-8859-1?Q?Ma?=  =?ISO-8859-1?Q?thieu-Daud=E9?=
	<philmd@linaro.org>, Yanan Wang  <wangyanan55@huawei.com>,
	 Michael S.Tsirkin  <mst@redhat.com>,
	Paolo Bonzini  <pbonzini@redhat.com>,
	Richard Henderson <richard.henderson@linaro.org>,
	Eric  Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	Marcelo  Tosatti <mtosatti@redhat.com>,
	Alex =?ISO-8859-1?Q?Benn=E9e?=  <alex.bennee@linaro.org>,
	Peter Maydell <peter.maydell@linaro.org>,
	Jonathan  Cameron <Jonathan.Cameron@huawei.com>,
	Sia Jee Heng  <jeeheng.sia@starfivetech.com>,
	qemu-devel@nongnu.org, kvm@vger.kernel.org,
	 qemu-riscv@nongnu.org, qemu-arm@nongnu.org,
	Zhenyu Wang  <zhenyu.z.wang@intel.com>,
	Dapeng Mi <dapeng1.mi@linux.intel.com>,
	Yongwei Ma  <yongwei.ma@intel.com>"@domain.invalid
Subject: Re: [PATCH v2 6/7] i386/cpu: Update cache topology with machine's configuration
Date: Wed, 11 Sep 2024 11:00:28 +0100	[thread overview]
Message-ID: <20240911110028.00001d3d@huawei.com> (raw)
In-Reply-To: <20240908125920.1160236-7-zhao1.liu@intel.com>

On Sun,  8 Sep 2024 20:59:19 +0800
Zhao Liu <zhao1.liu@intel.com> wrote:

> User will configure smp cache topology via -machine smp-cache.
> 
> For this case, update the x86 CPUs' cache topology with user's
> configuration in MachineState.
> 
> Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
> Tested-by: Yongwei Ma <yongwei.ma@intel.com>
> ---
> Changes since RFC v2:
>  * Used smp_cache array to override cache topology.
>  * Wrapped the updating into a function.
> ---
>  target/i386/cpu.c | 39 +++++++++++++++++++++++++++++++++++++++
>  1 file changed, 39 insertions(+)
> 
> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> index e9f755000356..6d9f7dc0872a 100644
> --- a/target/i386/cpu.c
> +++ b/target/i386/cpu.c
> @@ -7597,6 +7597,38 @@ static void x86_cpu_hyperv_realize(X86CPU *cpu)
>      cpu->hyperv_limits[2] = 0;
>  }
>  
> +#ifndef CONFIG_USER_ONLY
> +static void x86_cpu_update_smp_cache_topo(MachineState *ms, X86CPU
> *cpu) +{
> +    CPUX86State *env = &cpu->env;
> +    CpuTopologyLevel level;
> +
> +    level = machine_get_cache_topo_level(ms,
> CACHE_LEVEL_AND_TYPE_L1D);
> +    if (level != CPU_TOPOLOGY_LEVEL_DEFAULT) {
> +        env->cache_info_cpuid4.l1d_cache->share_level = level;
> +        env->cache_info_amd.l1d_cache->share_level = level;
> +    }
> +
> +    level = machine_get_cache_topo_level(ms,
> CACHE_LEVEL_AND_TYPE_L1I);
> +    if (level != CPU_TOPOLOGY_LEVEL_DEFAULT) {
> +        env->cache_info_cpuid4.l1i_cache->share_level = level;
> +        env->cache_info_amd.l1i_cache->share_level = level;
> +    }
> +
> +    level = machine_get_cache_topo_level(ms,
> CACHE_LEVEL_AND_TYPE_L2);
> +    if (level != CPU_TOPOLOGY_LEVEL_DEFAULT) {
> +        env->cache_info_cpuid4.l2_cache->share_level = level;
> +        env->cache_info_amd.l2_cache->share_level = level;
> +    }
> +
> +    level = machine_get_cache_topo_level(ms,
> CACHE_LEVEL_AND_TYPE_L3);
> +    if (level != CPU_TOPOLOGY_LEVEL_DEFAULT) {
> +        env->cache_info_cpuid4.l3_cache->share_level = level;
> +        env->cache_info_amd.l3_cache->share_level = level;
> +    }
> +}
> +#endif
> +
>  static void x86_cpu_realizefn(DeviceState *dev, Error **errp)
>  {
>      CPUState *cs = CPU(dev);
> @@ -7821,6 +7853,13 @@ static void x86_cpu_realizefn(DeviceState
> *dev, Error **errp) 
>  #ifndef CONFIG_USER_ONLY
>      MachineState *ms = MACHINE(qdev_get_machine());
> +
> +    /*
> +     * TODO: Add a SMPCompatProps.has_caches flag to avoid useless
> Updates
> +     * if user didn't set smp_cache.
> +     */
Hi Zhao,

Thanks for sending this patchset so quickly. I really appreciate the
TODO already :) It also helps me avoid going through every single
layer, especially when I want to avoid matching system registers in
ARM, particularly when there's no description in the command line.
> +    x86_cpu_update_smp_cache_topo(ms, cpu);
> +
>      qemu_register_reset(x86_cpu_machine_reset_cb, cpu);
>  
>      if (cpu->env.features[FEAT_1_EDX] & CPUID_APIC || ms->smp.cpus >
> 1) {

  reply	other threads:[~2024-09-11 10:00 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-08 12:59 [PATCH v2 0/7] Introduce SMP Cache Topology Zhao Liu
2024-09-08 12:59 ` [PATCH v2 1/7] hw/core: Make CPU topology enumeration arch-agnostic Zhao Liu
2024-09-17  8:38   ` Jonathan Cameron
2024-09-08 12:59 ` [PATCH v2 2/7] qapi/qom: Define cache enumeration and properties Zhao Liu
2024-09-17  8:51   ` Jonathan Cameron
2024-10-07 10:48     ` Zhao Liu
2024-09-08 12:59 ` [PATCH v2 3/7] hw/core: Add smp cache topology for machine Zhao Liu
2024-09-17  9:00   ` Jonathan Cameron
2024-10-07 11:02     ` Zhao Liu
2024-09-08 12:59 ` [PATCH v2 4/7] hw/core: Check smp cache topology support " Zhao Liu
2024-09-17  8:56   ` Jonathan Cameron
2024-10-07 11:12     ` Zhao Liu
2024-10-08  8:57       ` Jonathan Cameron
2024-09-08 12:59 ` [PATCH v2 5/7] i386/cpu: Support thread and module level cache topology Zhao Liu
2024-09-17  9:05   ` Jonathan Cameron
2024-10-07 11:24     ` Zhao Liu
2024-09-08 12:59 ` [PATCH v2 6/7] i386/cpu: Update cache topology with machine's configuration Zhao Liu
2024-09-11 10:00   ` Alireza Sanaee [this message]
2024-10-07 10:21     ` Zhao Liu
2024-09-17  9:06   ` Jonathan Cameron
2024-10-07 11:25     ` Zhao Liu
2024-09-08 12:59 ` [PATCH v2 7/7] i386/pc: Support cache topology in -machine for PC machine Zhao Liu
2024-09-17  9:16   ` Jonathan Cameron
2024-10-07 11:53     ` Zhao Liu
2024-09-10 18:23 ` [PATCH v2 0/7] Introduce SMP Cache Topology Michael S. Tsirkin
2024-12-17 14:23 ` Alireza Sanaee
2024-12-17 14:23   ` Alireza Sanaee via
2024-12-17 14:23   ` Alireza Sanaee via
2024-12-17 16:20   ` Zhao Liu
2024-12-17 17:21     ` Alireza Sanaee

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=20240911110028.00001d3d@huawei.com \
    --to=alireza.sanaee@huawei.com \
    --cc="Daniel P .\" =?ISO-8859-1?Q?Berrang=E9?= <berrange@redhat.com>, Igor  Mammedov <imammedo@redhat.com>, Eduardo Habkost <eduardo@habkost.net>, Marcel  Apfelbaum <marcel.apfelbaum@gmail.com>, Philippe =?ISO-8859-1?Q?Ma?=  =?ISO-8859-1?Q?thieu-Daud=E9?= <philmd@linaro.org>, Yanan Wang  <wangyanan55@huawei.com>,  Michael S.Tsirkin  <mst@redhat.com>, Paolo Bonzini  <pbonzini@redhat.com>, Richard Henderson <richard.henderson@linaro.org>, Eric  Blake <eblake@redhat.com>, Markus Armbruster <armbru@redhat.com>, Marcelo  Tosatti <mtosatti@redhat.com>, Alex =?ISO-8859-1?Q?Benn=E9e?=  <alex.bennee@linaro.org>, Peter Maydell <peter.maydell@linaro.org>, Jonathan  Cameron <Jonathan.Cameron@huawei.com>, Sia Jee Heng  <jeeheng.sia@starfivetech.com>, qemu-devel@nongnu.org, kvm@vger.kernel.org,  qemu-riscv@nongnu.org, qemu-arm@nongnu.org, Zhenyu Wang  <zhenyu.z.wang@intel.com>, Dapeng Mi <dapeng1.mi@linux.intel.com>, Yongwei Ma  <yongwei.ma@intel.com>"@domain.invalid \
    --cc=zhao1.liu@intel.com \
    /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.