From: Jonathan Cameron <Jonathan.Cameron@huawei.com>
To: James Morse <james.morse@arm.com>
Cc: <linux-kernel@vger.kernel.org>,
<linux-arm-kernel@lists.infradead.org>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Rafael J . Wysocki" <rafael@kernel.org>, <sudeep.holla@arm.com>,
Rob Herring <robh@kernel.org>, Ben Horgan <ben.horgan@arm.com>
Subject: Re: [PATCH 4/5] cacheinfo: Expose the code to generate a cache-id from a device_node
Date: Tue, 17 Jun 2025 17:21:32 +0100 [thread overview]
Message-ID: <20250617172132.00002844@huawei.com> (raw)
In-Reply-To: <20250613130356.8080-5-james.morse@arm.com>
On Fri, 13 Jun 2025 13:03:55 +0000
James Morse <james.morse@arm.com> wrote:
> The MPAM driver identifies caches by id for use with resctrl. It
> needs to know the cache-id when probe-ing, but the value isn't set
> in cacheinfo until the corresponding CPU comes online.
>
> Expose the code that generates the cache-id. This allows the MPAM
> driver to determine the properties of the caches without waiting
> for all CPUs to come online.
>
> Signed-off-by: James Morse <james.morse@arm.com>
Feels to me like this needs to come with the user.
The earlier patches at least expose it via existing infrastructure
this isn't used at all yet...
> ---
> drivers/base/cacheinfo.c | 15 +++++++++++----
> include/linux/cacheinfo.h | 1 +
> 2 files changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/base/cacheinfo.c b/drivers/base/cacheinfo.c
> index d8e5b4c7156c..6316d80abab8 100644
> --- a/drivers/base/cacheinfo.c
> +++ b/drivers/base/cacheinfo.c
> @@ -188,7 +188,7 @@ static bool cache_node_is_unified(struct cacheinfo *this_leaf,
> #define arch_compact_of_hwid(_x) (_x)
> #endif
>
> -static void cache_of_set_id(struct cacheinfo *this_leaf, struct device_node *np)
> +unsigned long cache_of_get_id(struct device_node *np)
Bit confusing to have cache_of_set_id() call cache_of_get_id() like this because
they are in no way mirrors of each other. Rename?
(and naturally I'm providing no suggestions :)
> {
> struct device_node *cpu;
> u32 min_id = ~0;
> @@ -200,7 +200,7 @@ static void cache_of_set_id(struct cacheinfo *this_leaf, struct device_node *np)
> id = arch_compact_of_hwid(id);
> if (FIELD_GET(GENMASK_ULL(63, 32), id)) {
> of_node_put(cpu);
> - return;
> + return ~0UL;
> }
> while (1) {
> if (!cache_node)
> @@ -214,8 +214,15 @@ static void cache_of_set_id(struct cacheinfo *this_leaf, struct device_node *np)
> }
> }
>
> - if (min_id != ~0) {
> - this_leaf->id = min_id;
> + return min_id;
> +}
> +
> +static void cache_of_set_id(struct cacheinfo *this_leaf, struct device_node *np)
> +{
> + unsigned long id = cache_of_get_id(np);
> +
> + if (id != ~0UL) {
> + this_leaf->id = id;
> this_leaf->attributes |= CACHE_ID;
> }
> }
> diff --git a/include/linux/cacheinfo.h b/include/linux/cacheinfo.h
> index c8f4f0a0b874..9c959caf8af8 100644
> --- a/include/linux/cacheinfo.h
> +++ b/include/linux/cacheinfo.h
> @@ -112,6 +112,7 @@ int acpi_get_cache_info(unsigned int cpu,
> #endif
>
> const struct attribute_group *cache_get_priv_group(struct cacheinfo *this_leaf);
> +unsigned long cache_of_get_id(struct device_node *np);
>
> /*
> * Get the cacheinfo structure for the cache associated with @cpu at
next prev parent reply other threads:[~2025-06-17 17:12 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-13 13:03 [PATCH 0/5] cacheinfo: Set cache 'id' based on DT data James Morse
2025-06-13 13:03 ` [PATCH 1/5] " James Morse
2025-06-17 16:03 ` Jonathan Cameron
2025-06-23 14:18 ` Rob Herring
2025-06-27 16:38 ` James Morse
2025-06-13 13:03 ` [PATCH 2/5] cacheinfo: Add arch hook to compress CPU h/w id into 32 bits for cache-id James Morse
2025-06-17 16:05 ` Jonathan Cameron
2025-06-23 14:48 ` Rob Herring
2025-06-27 16:38 ` James Morse
2025-06-30 19:43 ` Rob Herring
2025-07-04 17:39 ` James Morse
2025-07-07 17:41 ` Rob Herring
2025-06-13 13:03 ` [PATCH 3/5] arm64: cacheinfo: Provide helper to compress MPIDR value into u32 James Morse
2025-06-17 16:14 ` Jonathan Cameron
2025-06-27 16:39 ` James Morse
2025-06-13 13:03 ` [PATCH 4/5] cacheinfo: Expose the code to generate a cache-id from a device_node James Morse
2025-06-17 16:21 ` Jonathan Cameron [this message]
2025-06-27 5:54 ` Shaopeng Tan (Fujitsu)
2025-06-27 16:39 ` James Morse
2025-06-27 16:38 ` James Morse
2025-06-13 13:03 ` [PATCH 5/5] cacheinfo: Add helper to find the cache size from cpu+level James Morse
2025-06-17 16:28 ` Jonathan Cameron
2025-06-27 16:38 ` James Morse
2025-06-23 15:05 ` [PATCH 0/5] cacheinfo: Set cache 'id' based on DT data Rob Herring
2025-06-27 16:38 ` James Morse
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=20250617172132.00002844@huawei.com \
--to=jonathan.cameron@huawei.com \
--cc=ben.horgan@arm.com \
--cc=gregkh@linuxfoundation.org \
--cc=james.morse@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rafael@kernel.org \
--cc=robh@kernel.org \
--cc=sudeep.holla@arm.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.