From: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
To: Zhao Liu <zhao1.liu@intel.com>
Cc: "Daniel P .\" =?ISO-8859-1?Q?Berrang=E9?= <berrange@redhat.com>,
Eduardo Habkost <eduardo@habkost.net>,
Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
Philippe =?ISO-8859-1?Q?Mathieu-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>,
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 2/8] qapi/qom: Introduce smp-cache object
Date: Mon, 22 Jul 2024 13:38:19 +0100 [thread overview]
Message-ID: <20240722133819.0000338a@Huawei.com> (raw)
In-Reply-To: <20240704031603.1744546-3-zhao1.liu@intel.com>
On Thu, 4 Jul 2024 11:15:57 +0800
Zhao Liu <zhao1.liu@intel.com> wrote:
> Introduce smp-cache object so that user could define cache properties.
>
> In smp-cache object, define cache topology based on CPU topology level
> with two reasons:
>
> 1. In practice, a cache will always be bound to the CPU container
> (either private in the CPU container or shared among multiple
> containers), and CPU container is often expressed in terms of CPU
> topology level.
> 2. The x86's cache-related CPUIDs encode cache topology based on APIC
> ID's CPU topology layout. And the ACPI PPTT table that ARM/RISCV
> relies on also requires CPU containers to help indicate the private
> shared hierarchy of the cache. Therefore, for SMP systems, it is
> natural to use the CPU topology hierarchy directly in QEMU to define
> the cache topology.
>
> Currently, separated L1 cache (L1 data cache and L1 instruction cache)
> with unified higher-level cache (e.g., unified L2 and L3 caches), is the
> most common cache architectures.
>
> Therefore, enumerate the L1 D-cache, L1 I-cache, L2 cache and L3 cache
> with smp-cache object to add the basic cache topology support.
>
> Suggested-by: Daniel P. Berrange <berrange@redhat.com>
> Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
> ---
> Suggested by credit:
> * Referred to Daniel's suggestion to introduce cache JSON list, though
> as a standalone object since -smp/-machine can't support JSON.
A comment and a query on the code movement. Whilst not particularly
elegant (as would be nice if -smp or machine supported json) using
an object isn't too bad.
Given both comments are trivial.
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> diff --git a/qapi/machine-common.json b/qapi/machine-common.json
> index 82413c668bdb..8b8c0e9eeb86 100644
> --- a/qapi/machine-common.json
> +++ b/qapi/machine-common.json
> +
> +##
> +# @SMPCacheName:
> +#
> +# An enumeration of cache for SMP systems. The cache name here is
> +# a combination of cache level and cache type.
> +#
> +# @l1d: L1 data cache.
> +#
> +# @l1i: L1 instruction cache.
> +#
> +# @l2: L2 (unified) cache.
> +#
> +# @l3: L3 (unified) cache
> +#
> +# Since: 9.1
> +##
> +{ 'enum': 'SMPCacheName',
> + 'prefix': 'SMP_CACHE',
> + 'data': [ 'l1d', 'l1i', 'l2', 'l3' ] }
I guess we can extend this as necessary for other designs
with more caches or split to higher levels. This is a reasonable
place to start. Splitting and L2 is going to require more
complex code elsewhere but we can deal with that if anyone
needs to do so.
> diff --git a/qapi/qapi-schema.json b/qapi/qapi-schema.json
> index b1581988e4eb..25394f2cda50 100644
> --- a/qapi/qapi-schema.json
> +++ b/qapi/qapi-schema.json
> @@ -64,11 +64,11 @@
> { 'include': 'compat.json' }
> { 'include': 'control.json' }
> { 'include': 'introspect.json' }
> -{ 'include': 'qom.json' }
> -{ 'include': 'qdev.json' }
> { 'include': 'machine-common.json' }
> { 'include': 'machine.json' }
> { 'include': 'machine-target.json' }
> +{ 'include': 'qom.json' }
> +{ 'include': 'qdev.json' }
If this is a necessary bit of movement, then a comment on that
in the patch introduction would be good to have.
> { 'include': 'replay.json' }
> { 'include': 'yank.json' }
> { 'include': 'misc.json' }
next prev parent reply other threads:[~2024-07-22 12:38 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-04 3:15 [PATCH 0/8] Introduce SMP Cache Topology Zhao Liu
2024-07-04 3:15 ` [PATCH 1/8] hw/core: Make CPU topology enumeration arch-agnostic Zhao Liu
2024-07-22 11:56 ` Markus Armbruster
2024-07-22 12:25 ` Jonathan Cameron
2024-07-22 13:24 ` Markus Armbruster
2024-07-22 14:01 ` Zhao Liu
2024-07-23 10:14 ` Markus Armbruster
2024-07-23 14:40 ` Zhao Liu
2024-07-04 3:15 ` [PATCH 2/8] qapi/qom: Introduce smp-cache object Zhao Liu
2024-07-09 10:13 ` Zhao Liu
2024-07-22 12:38 ` Jonathan Cameron [this message]
2024-07-22 13:33 ` Markus Armbruster
2024-07-22 14:30 ` Zhao Liu
2024-07-24 11:35 ` Markus Armbruster
2024-07-24 12:47 ` Daniel P. Berrangé
2024-07-24 14:03 ` Zhao Liu
2024-07-24 15:10 ` Zhao Liu
2024-07-24 14:55 ` Zhao Liu
2024-07-25 8:51 ` Markus Armbruster
2024-07-25 10:50 ` Jonathan Cameron
2024-07-25 10:59 ` Jonathan Cameron via
2024-07-25 10:59 ` Jonathan Cameron via
2024-07-25 10:59 ` Jonathan Cameron
2024-07-25 11:58 ` Zhao Liu
2024-07-25 11:56 ` Zhao Liu
2024-07-04 3:15 ` [PATCH 3/8] hw/core: Add smp cache topology for machine Zhao Liu
2024-07-22 12:39 ` Jonathan Cameron
2024-07-04 3:15 ` [PATCH 4/8] hw/core: Check smp cache topology support " Zhao Liu
2024-07-22 12:47 ` Jonathan Cameron
2024-07-04 3:16 ` [PATCH 5/8] i386/cpu: Support thread and module level cache topology Zhao Liu
2024-07-04 3:16 ` [PATCH 6/8] i386/cpu: Update cache topology with machine's configuration Zhao Liu
2024-07-04 3:16 ` [PATCH 7/8] i386/pc: Support cache topology in -machine for PC machine Zhao Liu
2024-07-04 3:16 ` [PATCH 8/8] qemu-options: Add the description of smp-cache object Zhao Liu
2024-07-22 13:37 ` Markus Armbruster
2024-07-22 14:42 ` Zhao Liu
2024-07-24 12:39 ` Markus Armbruster
2024-07-24 14:21 ` Zhao Liu
2024-07-25 9:07 ` Markus Armbruster
2024-08-01 9:37 ` Zhao Liu
2024-08-01 11:28 ` Markus Armbruster
2024-08-02 7:58 ` Zhao Liu
2024-08-07 10:00 ` Zhao Liu
2024-08-09 12:24 ` Markus Armbruster
2024-08-12 9:24 ` Zhao Liu
2024-08-14 12:12 ` Jonathan Cameron
2024-07-22 7:33 ` [PATCH 0/8] Introduce SMP Cache Topology Zhao Liu
2024-07-22 7:49 ` Michael S. Tsirkin
2024-07-22 12:54 ` Jonathan Cameron
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=20240722133819.0000338a@Huawei.com \
--to=jonathan.cameron@huawei.com \
--cc="Daniel P .\" =?ISO-8859-1?Q?Berrang=E9?= <berrange@redhat.com>, Eduardo Habkost <eduardo@habkost.net>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Philippe =?ISO-8859-1?Q?Mathieu-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>, 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.