From: "Michael S. Tsirkin" <mst@redhat.com>
To: Zhao Liu <zhao1.liu@intel.com>
Cc: "Paolo Bonzini" <pbonzini@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Daniel P . Berrangé" <berrange@redhat.com>,
"Markus Armbruster" <armbru@redhat.com>,
"Igor Mammedov" <imammedo@redhat.com>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Eduardo Habkost" <eduardo@habkost.net>,
"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
"Yanan Wang" <wangyanan55@huawei.com>,
"Jonathan Cameron" <Jonathan.Cameron@huawei.com>,
"Alireza Sanaee" <alireza.sanaee@huawei.com>,
"Sia Jee Heng" <jeeheng.sia@starfivetech.com>,
qemu-devel@nongnu.org, kvm@vger.kernel.org
Subject: Re: [PATCH v7 RESEND 0/5] i386: Support SMP Cache Topology
Date: Wed, 15 Jan 2025 03:46:37 -0500 [thread overview]
Message-ID: <20250115034612-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20250110145115.1574345-1-zhao1.liu@intel.com>
On Fri, Jan 10, 2025 at 10:51:10PM +0800, Zhao Liu wrote:
> Hi folks,
>
> This is my v7 resend version (updated the commit message of origin
> v7's Patch 1).
>
> Compared with v6 [1], v7 dropped the "thread" level cache topology
> (cache per thread):
>
> - Patch 1 is the new patch to reject "thread" parameter for smp-cache.
> - Ptach 2 dropped cache per thread support.
> (Others remain unchanged.)
>
> There're several reasons:
>
> * Currently, neither i386 nor ARM have real hardware support for per-
> thread cache.
> * ARM can't support thread level cache in device tree. [2].
>
> So it is unnecessary to support it at this moment, even though per-
> thread cache might have potential scheduling benefits for VMs without
> CPU affinity.
>
> In the future, if there is a clear demand for this feature, the correct
> approach would be to add a new control field in MachineClass.smp_props
> and enable it only for the machines that require it.
>
>
> This series is based on the master branch at commit aa3a285b5bc5 ("Merge
> tag 'mem-2024-12-21' of https://github.com/davidhildenbrand/qemu into
> staging").
pc things:
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
> Smp-cache support of ARM side can be found at [3].
>
>
> Background
> ==========
>
> The x86 and ARM (RISCV) need to allow user to configure cache properties
> (current only topology):
> * For x86, the default cache topology model (of max/host CPU) does not
> always match the Host's real physical cache topology. Performance can
> increase when the configured virtual topology is closer to the
> physical topology than a default topology would be.
> * For ARM, QEMU can't get the cache topology information from the CPU
> registers, then user configuration is necessary. Additionally, the
> cache information is also needed for MPAM emulation (for TCG) to
> build the right PPTT. (Originally from Jonathan)
>
>
> About smp-cache
> ===============
>
> The API design has been discussed heavily in [4].
>
> Now, smp-cache is implemented as a array integrated in -machine. Though
> -machine currently can't support JSON format, this is the one of the
> directions of future.
>
> An example is as follows:
>
> smp_cache=smp-cache.0.cache=l1i,smp-cache.0.topology=core,smp-cache.1.cache=l1d,smp-cache.1.topology=core,smp-cache.2.cache=l2,smp-cache.2.topology=module,smp-cache.3.cache=l3,smp-cache.3.topology=die
>
> "cache" specifies the cache that the properties will be applied on. This
> field is the combination of cache level and cache type. Now it supports
> "l1d" (L1 data cache), "l1i" (L1 instruction cache), "l2" (L2 unified
> cache) and "l3" (L3 unified cache).
>
> "topology" field accepts CPU topology levels including "core", "module",
> "cluster", "die", "socket", "book", "drawer" and a special value
> "default". (Note, now, in v7, smp-cache doesn't support "thread".)
>
> The "default" is introduced to make it easier for libvirt to set a
> default parameter value without having to care about the specific
> machine (because currently there is no proper way for machine to
> expose supported topology levels and caches).
>
> If "default" is set, then the cache topology will follow the
> architecture's default cache topology model. If other CPU topology level
> is set, the cache will be shared at corresponding CPU topology level.
>
> [1]: Patch v6: https://lore.kernel.org/qemu-devel/20241219083237.265419-1-zhao1.liu@intel.com/
> [2]: Gap of cache per thread for ARM: https://lore.kernel.org/qemu-devel/20250110114100.00002296@huawei.com/T/#m50c37fa5d372feac8e607c279cd446da3e22a12c
> [3]: ARM smp-cache: https://lore.kernel.org/qemu-devel/20250102152012.1049-1-alireza.sanaee@huawei.com/
> [4]: API disscussion: https://lore.kernel.org/qemu-devel/8734ndj33j.fsf@pond.sub.org/
>
> Thanks and Best Regards,
> Zhao
> ---
> Alireza Sanaee (1):
> i386/cpu: add has_caches flag to check smp_cache configuration
>
> Zhao Liu (4):
> hw/core/machine: Reject thread level cache
> i386/cpu: Support module level cache topology
> i386/cpu: Update cache topology with machine's configuration
> i386/pc: Support cache topology in -machine for PC machine
>
> hw/core/machine-smp.c | 9 ++++++
> hw/i386/pc.c | 4 +++
> include/hw/boards.h | 3 ++
> qemu-options.hx | 30 +++++++++++++++++-
> target/i386/cpu.c | 71 ++++++++++++++++++++++++++++++++++++++++++-
> 5 files changed, 115 insertions(+), 2 deletions(-)
>
> --
> 2.34.1
next prev parent reply other threads:[~2025-01-15 8:47 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-10 14:51 [PATCH v7 RESEND 0/5] i386: Support SMP Cache Topology Zhao Liu
2025-01-10 14:51 ` [PATCH v7 RESEND 1/5] hw/core/machine: Reject thread level cache Zhao Liu
2025-02-06 9:42 ` Philippe Mathieu-Daudé
2025-01-10 14:51 ` [PATCH v7 RESEND 2/5] i386/cpu: Support module level cache topology Zhao Liu
2025-01-10 14:51 ` [PATCH v7 RESEND 3/5] i386/cpu: Update cache topology with machine's configuration Zhao Liu
2025-01-10 14:51 ` [PATCH v7 RESEND 4/5] i386/pc: Support cache topology in -machine for PC machine Zhao Liu
2025-01-10 14:51 ` [PATCH v7 RESEND 5/5] i386/cpu: add has_caches flag to check smp_cache configuration Zhao Liu
2025-01-15 8:46 ` Michael S. Tsirkin [this message]
2025-02-05 12:32 ` [PATCH v7 RESEND 0/5] i386: Support SMP Cache Topology Markus Armbruster
2025-02-06 9:17 ` Zhao Liu
2025-02-06 9:21 ` Zhao Liu
2025-02-19 8:59 ` Zhao Liu
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=20250115034612-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=alireza.sanaee@huawei.com \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=eduardo@habkost.net \
--cc=imammedo@redhat.com \
--cc=jeeheng.sia@starfivetech.com \
--cc=kvm@vger.kernel.org \
--cc=marcel.apfelbaum@gmail.com \
--cc=pbonzini@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=wangyanan55@huawei.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).