All of lore.kernel.org
 help / color / mirror / Atom feed
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>,
	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>,
	Sia Jee  Heng <jeeheng.sia@starfivetech.com>,
	Alireza Sanaee  <alireza.sanaee@huawei.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 2/7] qapi/qom: Define cache enumeration and properties
Date: Tue, 17 Sep 2024 09:51:26 +0100	[thread overview]
Message-ID: <20240917095126.000036f1@Huawei.com> (raw)
In-Reply-To: <20240908125920.1160236-3-zhao1.liu@intel.com>

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

> The x86 and ARM 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.
> 
> Define smp-cache related enumeration and properties in QAPI, so that
> user could configure cache properties for SMP system through -machine in
> the subsequent patch.
> 
> Cache enumeration (CacheLevelAndType) is implemented as the combination
> of cache level (level 1/2/3) and cache type (data/instruction/unified).
> 
> 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. Other
> kinds of caches (e.g., L1 unified or L2/L3 separated caches) can be
> added directly into CacheLevelAndType if necessary.
> 
> Cache properties (SmpCacheProperties) currently only contains cache
> topology information, and other cache properties can be added in it
> if necessary.
> 
> Note, 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

Really trivial but CPU Containers are a different ACPI concept.
For PPTT they are referred to as Processor Groups. Wonderfully they
'might match a Processor Container in the namespace' which rather implies
they might not.  In QEMU they always will because the next bit of the
spec matters. "In that case this entry will match the value of the _UID
method of the associated processor container. Where there is a match it must
be represented."

So having said all that, CPU container is probably fine as a description.

>     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.
> 
> Suggested-by: Daniel P. Berrange <berrange@redhat.com>
> Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
> Tested-by: Yongwei Ma <yongwei.ma@intel.com>
Seems fine but my gut would be to combine this and next patch so we can
see how it is used (assuming no one asked for it to be separate!)

Version numbers need an update I guess.

Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

> +##
> +# @SmpCachePropertiesWrapper:
> +#
> +# List wrapper of SmpCacheProperties.
> +#
> +# @caches: the list of SmpCacheProperties.
> +#
> +# Since 9.1

Needs updating to 9.2 I guess.

> +##
> +{ 'struct': 'SmpCachePropertiesWrapper',
> +  'data': { 'caches': ['SmpCacheProperties'] } }

  reply	other threads:[~2024-09-17  8:51 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 [this message]
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
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=20240917095126.000036f1@Huawei.com \
    --to=jonathan.cameron@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>, Sia Jee  Heng <jeeheng.sia@starfivetech.com>, Alireza Sanaee  <alireza.sanaee@huawei.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.