From: Jet Chen <jet.chen@intel.com>
To: Michal Marek <mmarek@suse.cz>, "Wu, Fengguang" <fengguang.wu@intel.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>,
"linux-mtd@lists.infradead.org" <linux-mtd@lists.infradead.org>,
LKML <linux-kernel@vger.kernel.org>,
David Woodhouse <dwmw2@infradead.org>,
Brian Norris <computersforpeace@gmail.com>,
linux-kbuild <linux-kbuild@vger.kernel.org>
Subject: Re: [mtd/sbc_gxx] kernel BUG at include/linux/mtd/map.h:148!
Date: Thu, 03 Apr 2014 17:13:14 +0800 [thread overview]
Message-ID: <533D262A.2040602@intel.com> (raw)
In-Reply-To: <20140331143543.GA9764@sepie.suse.cz>
Hi Michal,
Your patch fixes the problem.
Tested-by: Jet Chen <jet.chen@intel.com>
Thanks,
-Jet
On 03/31/2014 10:35 PM, Michal Marek wrote:
> On Mon, Mar 31, 2014 at 07:34:12PM +0800, Fengguang Wu wrote:
>> CC Michal and kbuild list.
>>
>> On Thu, Mar 27, 2014 at 04:51:53PM -0600, Bjorn Helgaas wrote:
>>> [+cc David, Brian]
>>>
>>> On Thu, Mar 27, 2014 at 8:01 AM, Fengguang Wu <fengguang.wu@intel.com> wrote:
>>>> FYI, here is a very old warning, too old to be bisected.
>>>>
>>>> [ 5.282127] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, supports DPO and FUA
>>>> [ 5.286079] SBC-GXx flash: IO:0x258-0x259 MEM:0xdc000-0xdffff
>>>> [ 5.288723] ------------[ cut here ]------------
>>>> [ 5.289649] kernel BUG at include/linux/mtd/map.h:148!
>>>
>>> I think the problem is that your randconfig happens to have none of
>>> CONFIG_MTD_MAP_BANK_WIDTH_* set (you should have played the lottery
>>> today!), and the default implementation of map_bankwidth() in that
>>> case is just "BUG()":
>>>
>>> $ grep MTD_MAP config-3.14.0-rc8-wl-03045-gdf16ea4
>>> # CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
>>> # CONFIG_MTD_MAP_BANK_WIDTH_2 is not set
>>> # CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
>>> # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
>>> # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
>>> # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
>>>
>>> I don't know enough Kconfig or MTD to fix this.
>>
>> Michal, the problem we run into is, how to select one of the above
>> CONFIG_MTD_MAP_BANK_WIDTH_xx in "make randconfig".
>
> You can't enforce this in Kconfig. What you can do is to make the logic
> more fool-proof and fall back to some sensible default if none of the
> CONFIG_MTD_MAP_BANK_WIDTH_* options is enabled. Like this
>
>
> From 76e66ceea7e2ffbb1d39c01af2eaf6f2b66c2be3 Mon Sep 17 00:00:00 2001
> From: Michal Marek <mmarek@suse.cz>
> Date: Mon, 31 Mar 2014 16:25:32 +0200
> Subject: [PATCH] mtd: Fall back to MTD_MAP_BANK_WIDTH_1 if none is specified
>
> This is mainly to fix make randconfig errors.
>
> Signed-off-by: Michal Marek <mmarek@suse.cz>
> ---
> drivers/mtd/chips/Kconfig | 8 ++++++++
> include/linux/mtd/map.h | 4 ++--
> 2 files changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/mtd/chips/Kconfig b/drivers/mtd/chips/Kconfig
> index e4696b3..219de49 100644
> --- a/drivers/mtd/chips/Kconfig
> +++ b/drivers/mtd/chips/Kconfig
> @@ -115,6 +115,14 @@ config MTD_MAP_BANK_WIDTH_32
> If you wish to support CFI devices on a physical bus which is
> 256 bits wide, say 'Y'.
>
> +config HAVE_MTD_MAP_BANK_WIDTH_1
> + bool
> + default MTD_MAP_BANK_WIDTH_1 || (!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)
> +
> +if HAVE_MTD_MAP_BANK_WIDTH_1 && !MTD_MAP_BANK_WIDTH_1
> +comment "no buswidth selected, using 8-bit as a fallback "
> +endif
> +
> config MTD_CFI_I1
> bool "Support 1-chip flash interleave" if MTD_CFI_GEOMETRY
> default y
> diff --git a/include/linux/mtd/map.h b/include/linux/mtd/map.h
> index 5f487d7..d4f4f49 100644
> --- a/include/linux/mtd/map.h
> +++ b/include/linux/mtd/map.h
> @@ -32,7 +32,7 @@
> #include <asm/io.h>
> #include <asm/barrier.h>
>
> -#ifdef CONFIG_MTD_MAP_BANK_WIDTH_1
> +#ifdef CONFIG_HAVE_MTD_MAP_BANK_WIDTH_1
> #define map_bankwidth(map) 1
> #define map_bankwidth_is_1(map) (map_bankwidth(map) == 1)
> #define map_bankwidth_is_large(map) (0)
> @@ -156,7 +156,7 @@ static inline int map_bankwidth(void *map)
> static inline int map_bankwidth_supported(int w)
> {
> switch (w) {
> -#ifdef CONFIG_MTD_MAP_BANK_WIDTH_1
> +#ifdef CONFIG_HAVE_MTD_MAP_BANK_WIDTH_1
> case 1:
> #endif
> #ifdef CONFIG_MTD_MAP_BANK_WIDTH_2
>
WARNING: multiple messages have this Message-ID (diff)
From: Jet Chen <jet.chen@intel.com>
To: Michal Marek <mmarek@suse.cz>, "Wu, Fengguang" <fengguang.wu@intel.com>
Cc: linux-kbuild <linux-kbuild@vger.kernel.org>,
LKML <linux-kernel@vger.kernel.org>,
"linux-mtd@lists.infradead.org" <linux-mtd@lists.infradead.org>,
Bjorn Helgaas <bhelgaas@google.com>,
Brian Norris <computersforpeace@gmail.com>,
David Woodhouse <dwmw2@infradead.org>
Subject: Re: [mtd/sbc_gxx] kernel BUG at include/linux/mtd/map.h:148!
Date: Thu, 03 Apr 2014 17:13:14 +0800 [thread overview]
Message-ID: <533D262A.2040602@intel.com> (raw)
In-Reply-To: <20140331143543.GA9764@sepie.suse.cz>
Hi Michal,
Your patch fixes the problem.
Tested-by: Jet Chen <jet.chen@intel.com>
Thanks,
-Jet
On 03/31/2014 10:35 PM, Michal Marek wrote:
> On Mon, Mar 31, 2014 at 07:34:12PM +0800, Fengguang Wu wrote:
>> CC Michal and kbuild list.
>>
>> On Thu, Mar 27, 2014 at 04:51:53PM -0600, Bjorn Helgaas wrote:
>>> [+cc David, Brian]
>>>
>>> On Thu, Mar 27, 2014 at 8:01 AM, Fengguang Wu <fengguang.wu@intel.com> wrote:
>>>> FYI, here is a very old warning, too old to be bisected.
>>>>
>>>> [ 5.282127] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, supports DPO and FUA
>>>> [ 5.286079] SBC-GXx flash: IO:0x258-0x259 MEM:0xdc000-0xdffff
>>>> [ 5.288723] ------------[ cut here ]------------
>>>> [ 5.289649] kernel BUG at include/linux/mtd/map.h:148!
>>>
>>> I think the problem is that your randconfig happens to have none of
>>> CONFIG_MTD_MAP_BANK_WIDTH_* set (you should have played the lottery
>>> today!), and the default implementation of map_bankwidth() in that
>>> case is just "BUG()":
>>>
>>> $ grep MTD_MAP config-3.14.0-rc8-wl-03045-gdf16ea4
>>> # CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
>>> # CONFIG_MTD_MAP_BANK_WIDTH_2 is not set
>>> # CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
>>> # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
>>> # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
>>> # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
>>>
>>> I don't know enough Kconfig or MTD to fix this.
>>
>> Michal, the problem we run into is, how to select one of the above
>> CONFIG_MTD_MAP_BANK_WIDTH_xx in "make randconfig".
>
> You can't enforce this in Kconfig. What you can do is to make the logic
> more fool-proof and fall back to some sensible default if none of the
> CONFIG_MTD_MAP_BANK_WIDTH_* options is enabled. Like this
>
>
> From 76e66ceea7e2ffbb1d39c01af2eaf6f2b66c2be3 Mon Sep 17 00:00:00 2001
> From: Michal Marek <mmarek@suse.cz>
> Date: Mon, 31 Mar 2014 16:25:32 +0200
> Subject: [PATCH] mtd: Fall back to MTD_MAP_BANK_WIDTH_1 if none is specified
>
> This is mainly to fix make randconfig errors.
>
> Signed-off-by: Michal Marek <mmarek@suse.cz>
> ---
> drivers/mtd/chips/Kconfig | 8 ++++++++
> include/linux/mtd/map.h | 4 ++--
> 2 files changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/mtd/chips/Kconfig b/drivers/mtd/chips/Kconfig
> index e4696b3..219de49 100644
> --- a/drivers/mtd/chips/Kconfig
> +++ b/drivers/mtd/chips/Kconfig
> @@ -115,6 +115,14 @@ config MTD_MAP_BANK_WIDTH_32
> If you wish to support CFI devices on a physical bus which is
> 256 bits wide, say 'Y'.
>
> +config HAVE_MTD_MAP_BANK_WIDTH_1
> + bool
> + default MTD_MAP_BANK_WIDTH_1 || (!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)
> +
> +if HAVE_MTD_MAP_BANK_WIDTH_1 && !MTD_MAP_BANK_WIDTH_1
> +comment "no buswidth selected, using 8-bit as a fallback "
> +endif
> +
> config MTD_CFI_I1
> bool "Support 1-chip flash interleave" if MTD_CFI_GEOMETRY
> default y
> diff --git a/include/linux/mtd/map.h b/include/linux/mtd/map.h
> index 5f487d7..d4f4f49 100644
> --- a/include/linux/mtd/map.h
> +++ b/include/linux/mtd/map.h
> @@ -32,7 +32,7 @@
> #include <asm/io.h>
> #include <asm/barrier.h>
>
> -#ifdef CONFIG_MTD_MAP_BANK_WIDTH_1
> +#ifdef CONFIG_HAVE_MTD_MAP_BANK_WIDTH_1
> #define map_bankwidth(map) 1
> #define map_bankwidth_is_1(map) (map_bankwidth(map) == 1)
> #define map_bankwidth_is_large(map) (0)
> @@ -156,7 +156,7 @@ static inline int map_bankwidth(void *map)
> static inline int map_bankwidth_supported(int w)
> {
> switch (w) {
> -#ifdef CONFIG_MTD_MAP_BANK_WIDTH_1
> +#ifdef CONFIG_HAVE_MTD_MAP_BANK_WIDTH_1
> case 1:
> #endif
> #ifdef CONFIG_MTD_MAP_BANK_WIDTH_2
>
next prev parent reply other threads:[~2014-04-03 9:14 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-27 14:01 [mtd/sbc_gxx] kernel BUG at include/linux/mtd/map.h:148! Fengguang Wu
2014-03-27 22:51 ` Bjorn Helgaas
2014-03-27 22:51 ` Bjorn Helgaas
2014-03-31 11:34 ` Fengguang Wu
2014-03-31 11:34 ` Fengguang Wu
2014-03-31 14:35 ` Michal Marek
2014-03-31 14:35 ` Michal Marek
2014-03-31 14:35 ` Michal Marek
2014-04-03 9:13 ` Jet Chen [this message]
2014-04-03 9:13 ` Jet Chen
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=533D262A.2040602@intel.com \
--to=jet.chen@intel.com \
--cc=bhelgaas@google.com \
--cc=computersforpeace@gmail.com \
--cc=dwmw2@infradead.org \
--cc=fengguang.wu@intel.com \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=mmarek@suse.cz \
/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.