Re: [mtd/sbc_gxx] kernel BUG at include/linux/mtd/map.h:148!

From: Michal Marek
Date: Mon Mar 31 2014 - 10:35:58 EST


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@xxxxxxxxx> 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