drivers/iio/adc/88pm886-gpadc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Don't populate the read-only const array config on the stack at run
time, instead make it static.
Signed-off-by: Colin Ian King <colin.i.king@gmail.com>
---
drivers/iio/adc/88pm886-gpadc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/iio/adc/88pm886-gpadc.c b/drivers/iio/adc/88pm886-gpadc.c
index ff9bc5f06c18..938ba43c2c35 100644
--- a/drivers/iio/adc/88pm886-gpadc.c
+++ b/drivers/iio/adc/88pm886-gpadc.c
@@ -279,7 +279,7 @@ static int pm886_gpadc_read_raw(struct iio_dev *iio, struct iio_chan_spec const
static int pm886_gpadc_hw_enable(struct regmap *map)
{
- const u8 config[] = {
+ static const u8 config[] = {
PM886_GPADC_CONFIG1_EN_ALL,
PM886_GPADC_CONFIG2_EN_ALL,
PM886_GPADC_GND_DET2_EN,
--
2.53.0
On 7/14/26 11:50 AM, Colin Ian King wrote: > Don't populate the read-only const array config on the stack at run > time, instead make it static. > Subject line should have `88pm886-gpadc` in it. Can leave out `config` to keep it shorter. iio: adc: 88pm886-gpadc: make read-only const array static
On Tue, Jul 14, 2026 at 05:50:12PM +0100, Colin Ian King wrote: > Don't populate the read-only const array config on the stack at run > time, instead make it static. Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com> ... In all patches like this it's always a bikeshedding possible of moving static data outside of a function. I have no strong opinion in these cases (when the data solely used by a single function), but in general it might give different readability experience (it's harder to notice static data in the local function definition block). So I leave this exercise to the maintainers of the respective pieces of the code. -- With Best Regards, Andy Shevchenko
On Tue, Jul 14, 2026 at 08:08:10PM +0300, Andy Shevchenko wrote: > On Tue, Jul 14, 2026 at 05:50:12PM +0100, Colin Ian King wrote: > > Don't populate the read-only const array config on the stack at run > > time, instead make it static. > > Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com> > > ... > > In all patches like this it's always a bikeshedding possible of moving static > data outside of a function. I have no strong opinion in these cases (when the > data solely used by a single function), but in general it might give different > readability experience (it's harder to notice static data in the local function > definition block). So I leave this exercise to the maintainers of the respective > pieces of the code. > It's an interesting point... At one point Smatch didn't track static variables and it used to generate occasional false positives. And it's like you say, those little "static" qualifiers are hard to spot in a wall of declaration text. I've never considered moving the declarations out of the function scope but it might be a good idea? But in this case since this data is const, the static vs not-static doesn't affect flow analysis or readability. regards, dan carpenter
On Wed, Jul 15, 2026 at 01:22:32PM +0300, Dan Carpenter wrote: > On Tue, Jul 14, 2026 at 08:08:10PM +0300, Andy Shevchenko wrote: > > On Tue, Jul 14, 2026 at 05:50:12PM +0100, Colin Ian King wrote: ... > > In all patches like this it's always a bikeshedding possible of moving static > > data outside of a function. I have no strong opinion in these cases (when the > > data solely used by a single function), but in general it might give different > > readability experience (it's harder to notice static data in the local function > > definition block). So I leave this exercise to the maintainers of the respective > > pieces of the code. > > > > It's an interesting point... > > At one point Smatch didn't track static variables and it used to > generate occasional false positives. And it's like you say, those > little "static" qualifiers are hard to spot in a wall of declaration > text. I've never considered moving the declarations out of the > function scope but it might be a good idea? Maybe, as I said, I have no strong opinion here. I am all ears to hear what others think. > But in this case since this data is const, the static vs not-static > doesn't affect flow analysis or readability. It doesn't affect flow analysis, but we also have David's point about amount of data to be static may affect the code generation. ... The main point I have is that stumbling over the 'static' in the definition block might rise some additional questions and slow down the understanding of the code (by reading). -- With Best Regards, Andy Shevchenko
On 15/07/2026 14:32, Andy Shevchenko wrote: > On Wed, Jul 15, 2026 at 01:22:32PM +0300, Dan Carpenter wrote: >> On Tue, Jul 14, 2026 at 08:08:10PM +0300, Andy Shevchenko wrote: >>> On Tue, Jul 14, 2026 at 05:50:12PM +0100, Colin Ian King wrote: > > ... > >>> In all patches like this it's always a bikeshedding possible of moving static >>> data outside of a function. I have no strong opinion in these cases (when the >>> data solely used by a single function), but in general it might give different >>> readability experience (it's harder to notice static data in the local function >>> definition block). So I leave this exercise to the maintainers of the respective >>> pieces of the code. >>> >> >> It's an interesting point... >> >> At one point Smatch didn't track static variables and it used to >> generate occasional false positives. And it's like you say, those >> little "static" qualifiers are hard to spot in a wall of declaration >> text. I've never considered moving the declarations out of the >> function scope but it might be a good idea? > > Maybe, as I said, I have no strong opinion here. I am all ears to hear > what others think. For small arrays it's a moot point if this type of change is useful, so I'm OK if it's not accepted. I appreciate the feedback. Colin > >> But in this case since this data is const, the static vs not-static >> doesn't affect flow analysis or readability. > > It doesn't affect flow analysis, but we also have David's point about > amount of data to be static may affect the code generation. > > ... > > The main point I have is that stumbling over the 'static' in the definition > block might rise some additional questions and slow down the understanding of > the code (by reading). >
On Wed, Jul 15, 2026 at 02:34:50PM +0100, Colin King (gmail) wrote: > On 15/07/2026 14:32, Andy Shevchenko wrote: > > On Wed, Jul 15, 2026 at 01:22:32PM +0300, Dan Carpenter wrote: > > > On Tue, Jul 14, 2026 at 08:08:10PM +0300, Andy Shevchenko wrote: > > > > On Tue, Jul 14, 2026 at 05:50:12PM +0100, Colin Ian King wrote: ... > > > > In all patches like this it's always a bikeshedding possible of moving static > > > > data outside of a function. I have no strong opinion in these cases (when the > > > > data solely used by a single function), but in general it might give different > > > > readability experience (it's harder to notice static data in the local function > > > > definition block). So I leave this exercise to the maintainers of the respective > > > > pieces of the code. > > > > > > It's an interesting point... > > > > > > At one point Smatch didn't track static variables and it used to > > > generate occasional false positives. And it's like you say, those > > > little "static" qualifiers are hard to spot in a wall of declaration > > > text. I've never considered moving the declarations out of the > > > function scope but it might be a good idea? > > > > Maybe, as I said, I have no strong opinion here. I am all ears to hear > > what others think. > > For small arrays it's a moot point if this type of change is useful, so Yep, it actually becomes a trade-off between generated code and existing data. With a small difference that static const may be located in ROM (important for the embedded devices with minimum available memory). > I'm OK if it's not accepted. I appreciate the feedback. Me too. > > > But in this case since this data is const, the static vs not-static > > > doesn't affect flow analysis or readability. > > > > It doesn't affect flow analysis, but we also have David's point about > > amount of data to be static may affect the code generation. ... > > The main point I have is that stumbling over the 'static' in the definition > > block might rise some additional questions and slow down the understanding of > > the code (by reading). -- With Best Regards, Andy Shevchenko
On Wed, 15 Jul 2026 16:54:13 +0300 Andy Shevchenko <andriy.shevchenko@intel.com> wrote: > On Wed, Jul 15, 2026 at 02:34:50PM +0100, Colin King (gmail) wrote: > > On 15/07/2026 14:32, Andy Shevchenko wrote: > > > On Wed, Jul 15, 2026 at 01:22:32PM +0300, Dan Carpenter wrote: > > > > On Tue, Jul 14, 2026 at 08:08:10PM +0300, Andy Shevchenko wrote: > > > > > On Tue, Jul 14, 2026 at 05:50:12PM +0100, Colin Ian King wrote: > > ... > > > > > > In all patches like this it's always a bikeshedding possible of moving static > > > > > data outside of a function. I have no strong opinion in these cases (when the > > > > > data solely used by a single function), but in general it might give different > > > > > readability experience (it's harder to notice static data in the local function > > > > > definition block). So I leave this exercise to the maintainers of the respective > > > > > pieces of the code. > > > > > > > > It's an interesting point... > > > > > > > > At one point Smatch didn't track static variables and it used to > > > > generate occasional false positives. And it's like you say, those > > > > little "static" qualifiers are hard to spot in a wall of declaration > > > > text. I've never considered moving the declarations out of the > > > > function scope but it might be a good idea? > > > > > > Maybe, as I said, I have no strong opinion here. I am all ears to hear > > > what others think. > > > > For small arrays it's a moot point if this type of change is useful, so > > Yep, it actually becomes a trade-off between generated code and existing data. > With a small difference that static const may be located in ROM (important for > the embedded devices with minimum available memory). > > > I'm OK if it's not accepted. I appreciate the feedback. > > Me too. I prefer not to think too much about the trade offs and just assume it is 'mostly' worth doing so add static everywhere like this unless it's a hot path. Anyhow, I've picked this one up. Jonathan > > > > > But in this case since this data is const, the static vs not-static > > > > doesn't affect flow analysis or readability. > > > > > > It doesn't affect flow analysis, but we also have David's point about > > > amount of data to be static may affect the code generation. > > ... > > > > The main point I have is that stumbling over the 'static' in the definition > > > block might rise some additional questions and slow down the understanding of > > > the code (by reading). > >
On Tue, 14 Jul 2026 20:08:10 +0300 Andy Shevchenko <andriy.shevchenko@intel.com> wrote: > On Tue, Jul 14, 2026 at 05:50:12PM +0100, Colin Ian King wrote: > > Don't populate the read-only const array config on the stack at run > > time, instead make it static. > > Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com> > > ... > > In all patches like this it's always a bikeshedding possible of moving static > data outside of a function. I have no strong opinion in these cases (when the > data solely used by a single function), but in general it might give different > readability experience (it's harder to notice static data in the local function > definition block). So I leave this exercise to the maintainers of the respective > pieces of the code. > If global you start wondering where it is used.... There is also the fact that run-time initialisation of a 3 byte array on stack is very likely to generate faster code than using static data. Mostly because the access to the static data is likely to be a cache miss. Then there are the architectures where just generating the address of the static data takes multiple instructions. In that case the on-stack version may even be smaller. David
© 2016 - 2026 Red Hat, Inc.