All of lore.kernel.org
 help / color / mirror / Atom feed
From: Conor Dooley <conor@kernel.org>
To: Pierre Gondois <pierre.gondois@arm.com>
Cc: linux-kernel@vger.kernel.org,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Conor Dooley <conor.dooley@microchip.com>,
	Dan Carpenter <error27@gmail.com>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Will Deacon <will@kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Sudeep Holla <sudeep.holla@arm.com>,
	Akihiko Odaki <akihiko.odaki@daynix.com>,
	Palmer Dabbelt <palmer@rivosinc.com>,
	Gavin Shan <gshan@redhat.com>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH -next v2 2/3] cacheinfo: Make default acpi_get_cache_info() return an error
Date: Tue, 24 Jan 2023 17:15:18 +0000	[thread overview]
Message-ID: <Y9ASJiKjIhpMk/8n@spud> (raw)
In-Reply-To: <20230124154053.355376-3-pierre.gondois@arm.com>


[-- Attachment #1.1: Type: text/plain, Size: 2383 bytes --]

On Tue, Jan 24, 2023 at 04:40:47PM +0100, Pierre Gondois wrote:
> commit bd500361a937 ("ACPI: PPTT: Update acpi_find_last_cache_level()
> to acpi_get_cache_info()")
> updates the prototype of acpi_get_cache_info(). The cache 'levels'
> is update through a pointer and not the return value of the function.
> 
> If CONFIG_ACPI_PPTT is not defined, acpi_get_cache_info() doesn't
> update its *levels and *split_levels parameters and returns 0.
> This can lead to a faulty behaviour.
> 
> Make acpi_get_cache_info() return an error code if CONFIG_ACPI_PPTT
> is not defined.
> Also,
> 
> In init_cache_level(), if no PPTT is present or CONFIG_ACPI_PPTT is
> not defined, instead of aborting if acpi_get_cache_info() returns an
> error code, just continue. This allows to try fetching the cache
> information from clidr_el1.

Again, dunno jack about clidr_el1. But the change here seems sane once
more? I was going to suggest throwing away ret entirely and just
initialising fw_level to zero, since the function inside
acpi_get_cache_level() that actually modifies it comes after the last
error return anyway - but that probably would just leave you exposed to
a change in the core code that doesn't also update the callsites.
Plus this looks more deliberate IMO. On that basis, LGTM.

> Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
> ---
>  arch/arm64/kernel/cacheinfo.c | 2 +-
>  include/linux/cacheinfo.h     | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm64/kernel/cacheinfo.c b/arch/arm64/kernel/cacheinfo.c
> index d3fe9542c370..bf348b8d321f 100644
> --- a/arch/arm64/kernel/cacheinfo.c
> +++ b/arch/arm64/kernel/cacheinfo.c
> @@ -59,7 +59,7 @@ int init_cache_level(unsigned int cpu)
>  	} else {
>  		ret = acpi_get_cache_info(cpu, &fw_level, NULL);
>  		if (ret < 0)
> -			return ret;
> +			fw_level = 0;
>  	}
>  
>  	if (fw_level < 0)
> diff --git a/include/linux/cacheinfo.h b/include/linux/cacheinfo.h
> index dfef57077cd0..908e19d17f49 100644
> --- a/include/linux/cacheinfo.h
> +++ b/include/linux/cacheinfo.h
> @@ -100,7 +100,7 @@ static inline
>  int acpi_get_cache_info(unsigned int cpu,
>  			unsigned int *levels, unsigned int *split_levels)
>  {
> -	return 0;
> +	return -ENOENT;
>  }
>  #else
>  int acpi_get_cache_info(unsigned int cpu,
> -- 
> 2.25.1
> 

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: Conor Dooley <conor@kernel.org>
To: Pierre Gondois <pierre.gondois@arm.com>
Cc: linux-kernel@vger.kernel.org,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Conor Dooley <conor.dooley@microchip.com>,
	Dan Carpenter <error27@gmail.com>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Will Deacon <will@kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Sudeep Holla <sudeep.holla@arm.com>,
	Akihiko Odaki <akihiko.odaki@daynix.com>,
	Palmer Dabbelt <palmer@rivosinc.com>,
	Gavin Shan <gshan@redhat.com>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH -next v2 2/3] cacheinfo: Make default acpi_get_cache_info() return an error
Date: Tue, 24 Jan 2023 17:15:18 +0000	[thread overview]
Message-ID: <Y9ASJiKjIhpMk/8n@spud> (raw)
In-Reply-To: <20230124154053.355376-3-pierre.gondois@arm.com>

[-- Attachment #1: Type: text/plain, Size: 2383 bytes --]

On Tue, Jan 24, 2023 at 04:40:47PM +0100, Pierre Gondois wrote:
> commit bd500361a937 ("ACPI: PPTT: Update acpi_find_last_cache_level()
> to acpi_get_cache_info()")
> updates the prototype of acpi_get_cache_info(). The cache 'levels'
> is update through a pointer and not the return value of the function.
> 
> If CONFIG_ACPI_PPTT is not defined, acpi_get_cache_info() doesn't
> update its *levels and *split_levels parameters and returns 0.
> This can lead to a faulty behaviour.
> 
> Make acpi_get_cache_info() return an error code if CONFIG_ACPI_PPTT
> is not defined.
> Also,
> 
> In init_cache_level(), if no PPTT is present or CONFIG_ACPI_PPTT is
> not defined, instead of aborting if acpi_get_cache_info() returns an
> error code, just continue. This allows to try fetching the cache
> information from clidr_el1.

Again, dunno jack about clidr_el1. But the change here seems sane once
more? I was going to suggest throwing away ret entirely and just
initialising fw_level to zero, since the function inside
acpi_get_cache_level() that actually modifies it comes after the last
error return anyway - but that probably would just leave you exposed to
a change in the core code that doesn't also update the callsites.
Plus this looks more deliberate IMO. On that basis, LGTM.

> Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
> ---
>  arch/arm64/kernel/cacheinfo.c | 2 +-
>  include/linux/cacheinfo.h     | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm64/kernel/cacheinfo.c b/arch/arm64/kernel/cacheinfo.c
> index d3fe9542c370..bf348b8d321f 100644
> --- a/arch/arm64/kernel/cacheinfo.c
> +++ b/arch/arm64/kernel/cacheinfo.c
> @@ -59,7 +59,7 @@ int init_cache_level(unsigned int cpu)
>  	} else {
>  		ret = acpi_get_cache_info(cpu, &fw_level, NULL);
>  		if (ret < 0)
> -			return ret;
> +			fw_level = 0;
>  	}
>  
>  	if (fw_level < 0)
> diff --git a/include/linux/cacheinfo.h b/include/linux/cacheinfo.h
> index dfef57077cd0..908e19d17f49 100644
> --- a/include/linux/cacheinfo.h
> +++ b/include/linux/cacheinfo.h
> @@ -100,7 +100,7 @@ static inline
>  int acpi_get_cache_info(unsigned int cpu,
>  			unsigned int *levels, unsigned int *split_levels)
>  {
> -	return 0;
> +	return -ENOENT;
>  }
>  #else
>  int acpi_get_cache_info(unsigned int cpu,
> -- 
> 2.25.1
> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

  reply	other threads:[~2023-01-24 17:16 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-24 15:40 [PATCH -next v2 0/3] cacheinfo: Fix misbehaviours around init_cache_level() Pierre Gondois
2023-01-24 15:40 ` Pierre Gondois
2023-01-24 15:40 ` [PATCH -next v2 1/3] cacheinfo: Initialize variables in fetch_cache_info() Pierre Gondois
2023-01-24 15:40   ` Pierre Gondois
2023-01-24 17:19   ` Conor Dooley
2023-01-24 17:19     ` Conor Dooley
2023-01-24 15:40 ` [PATCH -next v2 2/3] cacheinfo: Make default acpi_get_cache_info() return an error Pierre Gondois
2023-01-24 15:40   ` Pierre Gondois
2023-01-24 17:15   ` Conor Dooley [this message]
2023-01-24 17:15     ` Conor Dooley
2023-01-24 15:40 ` [PATCH -next v2 3/3] cacheinfo: Remove unused check in init_cache_level() Pierre Gondois
2023-01-24 15:40   ` Pierre Gondois
2023-01-24 17:01   ` Conor Dooley
2023-01-24 17:01     ` Conor Dooley

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=Y9ASJiKjIhpMk/8n@spud \
    --to=conor@kernel.org \
    --cc=akihiko.odaki@daynix.com \
    --cc=catalin.marinas@arm.com \
    --cc=conor.dooley@microchip.com \
    --cc=error27@gmail.com \
    --cc=geert@linux-m68k.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=gshan@redhat.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=palmer@rivosinc.com \
    --cc=pierre.gondois@arm.com \
    --cc=rafael@kernel.org \
    --cc=sudeep.holla@arm.com \
    --cc=will@kernel.org \
    /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.