2015-11-23 13:40:28

by Arnd Bergmann

[permalink] [raw]
Subject: [PATCH] mtd: cfi: enforce valid geometry configuration

MTD allows compile-time configuration of the possible CFI geometry
settings that are allowed by the kernel, but that includes a couple of
invalid configurations, where no bank width or no interleave setting
is allowed. These are then caught with a compile-time warning:

include/linux/mtd/cfi.h:76:2: warning: #warning No CONFIG_MTD_CFI_Ix selected. No NOR chip support can work.
include/linux/mtd/map.h:145:2: warning: #warning "No CONFIG_MTD_MAP_BANK_WIDTH_xx selected. No NOR chip support can work"

This is a bit annoying for randconfig tests, and can be avoided if
we change the Kconfig logic to always select the simplest configuration
when no other one is enabled.

Signed-off-by: Arnd Bergmann <[email protected]>

diff --git a/drivers/mtd/chips/Kconfig b/drivers/mtd/chips/Kconfig
index 63b6b536b044..741ec69e0b46 100644
--- a/drivers/mtd/chips/Kconfig
+++ b/drivers/mtd/chips/Kconfig
@@ -69,6 +69,10 @@ endchoice
config MTD_CFI_GEOMETRY
bool "Specific CFI Flash geometry selection"
depends on MTD_CFI_ADV_OPTIONS
+ select MTD_MAP_BANK_WIDTH_1 if !(MTD_MAP_BANK_WIDTH_2 || \
+ MTD_MAP_BANK_WIDTH_4 || MTD_MAP_BANK_WIDTH_8 || \
+ MTD_MAP_BANK_WIDTH_16 || MTD_MAP_BANK_WIDTH_32)
+ select MTD_CFI_I1 if !(MTD_CFI_I2 || MTD_CFI_I4 || MTD_CFI_I8)
help
This option does not affect the code directly, but will enable
some other configuration options which would allow you to reduce


2015-11-23 22:13:34

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [PATCH] mtd: cfi: enforce valid geometry configuration

On Monday 23 November 2015 14:39:33 Arnd Bergmann wrote:
> MTD allows compile-time configuration of the possible CFI geometry
> settings that are allowed by the kernel, but that includes a couple of
> invalid configurations, where no bank width or no interleave setting
> is allowed. These are then caught with a compile-time warning:
>
> include/linux/mtd/cfi.h:76:2: warning: #warning No CONFIG_MTD_CFI_Ix selected. No NOR chip support can work.
> include/linux/mtd/map.h:145:2: warning: #warning "No CONFIG_MTD_MAP_BANK_WIDTH_xx selected. No NOR chip support can work"
>

I'm actually still getting the warnings for any file that includes <linux/mtd/map.h>
while CONFIG_MTD is disabled. I have a fix now that I'm testing overnight
and plan to post tomorrow, then we can decide whether it should be part of
the same patch, or we should have two separate patches.

Arnd

2015-11-24 22:09:59

by Arnd Bergmann

[permalink] [raw]
Subject: [PATCH] mtd: cfi: don't warn about broken geometry for !CONFIG_MTD

The linux/mtd/map.h header file is included by a couple of
platform specific files that are built even when CONFIG_MTD
is disabled, and we always get

warning "No CONFIG_MTD_MAP_BANK_WIDTH_xx selected. No NOR chip support can work"

in that case. This adds an #ifdef around the pointless warning,
as everything is really fine when we don't build the drivers
anyway.

Signed-off-by: Arnd Bergmann <[email protected]>
---
> I'm actually still getting the warnings for any file that includes <linux/mtd/map.h>
> while CONFIG_MTD is disabled. I have a fix now that I'm testing overnight
> and plan to post tomorrow, then we can decide whether it should be part of
> the same patch, or we should have two separate patches.

The patch fixes the remaining warnings I see on ARM randconfigs in this file,
and I think it makes sense to keep it as a separate patch, as these are really
distinct problems even thought the symptom is the same.

Please apply both.

diff --git a/include/linux/mtd/map.h b/include/linux/mtd/map.h
index 366cf77953b5..58f3ba709ade 100644
--- a/include/linux/mtd/map.h
+++ b/include/linux/mtd/map.h
@@ -142,7 +142,9 @@
#endif

#ifndef map_bankwidth
+#ifdef CONFIG_MTD
#warning "No CONFIG_MTD_MAP_BANK_WIDTH_xx selected. No NOR chip support can work"
+#endif
static inline int map_bankwidth(void *map)
{
BUG();

2015-11-30 20:44:32

by Brian Norris

[permalink] [raw]
Subject: Re: [PATCH] mtd: cfi: enforce valid geometry configuration

On Mon, Nov 23, 2015 at 02:39:33PM +0100, Arnd Bergmann wrote:
> MTD allows compile-time configuration of the possible CFI geometry
> settings that are allowed by the kernel, but that includes a couple of
> invalid configurations, where no bank width or no interleave setting
> is allowed. These are then caught with a compile-time warning:
>
> include/linux/mtd/cfi.h:76:2: warning: #warning No CONFIG_MTD_CFI_Ix selected. No NOR chip support can work.
> include/linux/mtd/map.h:145:2: warning: #warning "No CONFIG_MTD_MAP_BANK_WIDTH_xx selected. No NOR chip support can work"
>
> This is a bit annoying for randconfig tests, and can be avoided if
> we change the Kconfig logic to always select the simplest configuration
> when no other one is enabled.
>
> Signed-off-by: Arnd Bergmann <[email protected]>

Pushed to l2-mtd.git. Thanks for fixing this one! I guess an ugly fix is
better than nothing here.

2015-11-30 20:55:25

by Brian Norris

[permalink] [raw]
Subject: Re: [PATCH] mtd: cfi: don't warn about broken geometry for !CONFIG_MTD

On Tue, Nov 24, 2015 at 11:09:02PM +0100, Arnd Bergmann wrote:
> The linux/mtd/map.h header file is included by a couple of
> platform specific files that are built even when CONFIG_MTD
> is disabled, and we always get
>
> warning "No CONFIG_MTD_MAP_BANK_WIDTH_xx selected. No NOR chip support can work"
>
> in that case. This adds an #ifdef around the pointless warning,
> as everything is really fine when we don't build the drivers
> anyway.
>
> Signed-off-by: Arnd Bergmann <[email protected]>
> ---
> > I'm actually still getting the warnings for any file that includes <linux/mtd/map.h>
> > while CONFIG_MTD is disabled. I have a fix now that I'm testing overnight
> > and plan to post tomorrow, then we can decide whether it should be part of
> > the same patch, or we should have two separate patches.
>
> The patch fixes the remaining warnings I see on ARM randconfigs in this file,
> and I think it makes sense to keep it as a separate patch, as these are really
> distinct problems even thought the symptom is the same.
>
> Please apply both.
>
> diff --git a/include/linux/mtd/map.h b/include/linux/mtd/map.h
> index 366cf77953b5..58f3ba709ade 100644
> --- a/include/linux/mtd/map.h
> +++ b/include/linux/mtd/map.h
> @@ -142,7 +142,9 @@
> #endif
>
> #ifndef map_bankwidth
> +#ifdef CONFIG_MTD
> #warning "No CONFIG_MTD_MAP_BANK_WIDTH_xx selected. No NOR chip support can work"
> +#endif
> static inline int map_bankwidth(void *map)
> {
> BUG();
>

I guess no one includes mtd/cfi.h with CONFIG_MTD=n? Otherwise, we might
have the same problems there.

Pushed to l2-mtd.git, thanks!

Brian

2015-11-30 21:42:41

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [PATCH] mtd: cfi: don't warn about broken geometry for !CONFIG_MTD

On Monday 30 November 2015 12:55:05 Brian Norris wrote:
>
> I guess no one includes mtd/cfi.h with CONFIG_MTD=n? Otherwise, we might
> have the same problems there.

Right, I checked that all users of that file depend on CONFIG_MTD.

> Pushed to l2-mtd.git, thanks!

Thanks,

ARnd