2022-05-02 23:35:06

by Hector Martin

[permalink] [raw]
Subject: [PATCH] arm64: Set ARCH_NR_GPIO to 2048 for ARCH_APPLE

We're already running into the 512 GPIO limit on t600[01] depending on
how many SMC GPIOs we allocate, and a 2-die version could double that.
Let's make it 2K to be safe for now.

Signed-off-by: Hector Martin <[email protected]>
---
arch/arm64/Kconfig | 12 ++++++++++++
1 file changed, 12 insertions(+)

diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index 20ea89d9ac2f..b0da0a28aa2d 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -2050,6 +2050,18 @@ config STACKPROTECTOR_PER_TASK
def_bool y
depends on STACKPROTECTOR && CC_HAVE_STACKPROTECTOR_SYSREG

+# The GPIO number here must be sorted by descending number. In case of
+# a multiplatform kernel, we just want the highest value required by the
+# selected platforms.
+config ARCH_NR_GPIO
+ int
+ default 2048 if ARCH_APPLE
+ default 0
+ help
+ Maximum number of GPIOs in the system.
+
+ If unsure, leave the default value.
+
endmenu

menu "Boot options"
--
2.35.1


2022-05-03 00:24:51

by Marc Zyngier

[permalink] [raw]
Subject: Re: [PATCH] arm64: Set ARCH_NR_GPIO to 2048 for ARCH_APPLE

On Mon, 02 May 2022 10:14:27 +0100,
Hector Martin <[email protected]> wrote:
>
> We're already running into the 512 GPIO limit on t600[01] depending on
> how many SMC GPIOs we allocate, and a 2-die version could double that.
> Let's make it 2K to be safe for now.
>
> Signed-off-by: Hector Martin <[email protected]>
> ---
> arch/arm64/Kconfig | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index 20ea89d9ac2f..b0da0a28aa2d 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -2050,6 +2050,18 @@ config STACKPROTECTOR_PER_TASK
> def_bool y
> depends on STACKPROTECTOR && CC_HAVE_STACKPROTECTOR_SYSREG
>
> +# The GPIO number here must be sorted by descending number. In case of
> +# a multiplatform kernel, we just want the highest value required by the
> +# selected platforms.
> +config ARCH_NR_GPIO
> + int
> + default 2048 if ARCH_APPLE
> + default 0
> + help
> + Maximum number of GPIOs in the system.
> +
> + If unsure, leave the default value.
> +
> endmenu
>
> menu "Boot options"

It may be worth pointing out that this doesn't seem to result in any
extra memory allocation, as this only controls the GPIO numbering.

My only worry is that since the allocation is done top-down, the new
limit is going to have a userspace visible impacts (i.e. anything in
/sys/class/gpiochip* will get renumbered). I don't think anyone should
rely on this anyway (they should use the canonical bus path), but this
is worth pointing out as a potential side effect.

Otherwise,

Acked-by: Marc Zyngier <[email protected]>

M.

--
Without deviation from the norm, progress is not possible.

2022-05-05 16:04:46

by Catalin Marinas

[permalink] [raw]
Subject: Re: [PATCH] arm64: Set ARCH_NR_GPIO to 2048 for ARCH_APPLE

On Mon, 2 May 2022 18:14:27 +0900, Hector Martin wrote:
> We're already running into the 512 GPIO limit on t600[01] depending on
> how many SMC GPIOs we allocate, and a 2-die version could double that.
> Let's make it 2K to be safe for now.
>
>

Applied to arm64 (for-next/misc), thanks!

[1/1] arm64: Set ARCH_NR_GPIO to 2048 for ARCH_APPLE
https://git.kernel.org/arm64/c/5028fbad2d57

--
Catalin