Le 31/08/2022 à 22:55, Arnd Bergmann a écrit : > On Wed, Aug 31, 2022, at 7:49 AM, Christophe Leroy wrote: >> Le 30/08/2022 à 22:18, Andy Shevchenko a écrit : >>> On Mon, Aug 29, 2022 at 7:19 PM Christophe Leroy >>> <christophe.leroy@xxxxxxxxxx> wrote: >>>> >>>> Since commit 14e85c0e69d5 ("gpio: remove gpio_descs global array") >>>> there is no limitation on the number of GPIOs that can be allocated >>>> in the system since the allocation is fully dynamic. >>>> >>>> ARCH_NR_GPIOS is today only used in order to provide downwards >>>> gpiobase allocation from that value, while static allocation is >>>> performed upwards from 0. However that has the disadvantage of >>>> limiting the number of GPIOs that can be registered in the system. >>>> >>>> To overcome this limitation without requiring each and every >>>> platform to provide its 'best-guess' maximum number, rework the >>>> allocation to allocate upwards, allowing approx 2 millions of >>>> GPIOs. >>>> >>>> In order to still allow static allocation for legacy drivers, define >>>> GPIO_DYNAMIC_BASE with the value 256 as the start for dynamic >>>> allocation. >>> >>> Not sure about 256, but I understand that this can only be the best guess. >>> >> >> Well, it's already just a precaution. Linus W's expectation is that >> static ones are allocated at first, they should already be allocated >> when we start doing dynamic allocations so he was even thinking that we >> could have started at 0 already. >> >> But I can start higher if you think it is safer, maybe at 512 which is >> the default ARCH_NR_GPIOS today. > > FWIW, I went through the drivers that set the base to a value other than > zero or -1, to see what they use: > > arch/arm/mach-s3c/gpio-samsung.c: .base = S3C2410_GPM(0), // 384 > arch/arm/mach-s3c/mach-h1940.c: .base = H1940_LATCH_GPIO(0), // 384 + 22 > drivers/mfd/asic3.c: asic->gpio.base = pdata->gpio_base; // 300 + 100 > drivers/mfd/htc-i2cpld.c: gpio_chip->base = plat_chip_data->gpio_in_base; // 192 + 16 + 8*8 Ok, so 256 is not enough, have to go to 512. Christophe