linux-mips
[Top] [All Lists]

Re: [PATCH] flash_setup should only be built when CONFIG_MTD is enabled

To: Florian Fainelli <florian@openwrt.org>
Subject: Re: [PATCH] flash_setup should only be built when CONFIG_MTD is enabled
From: Ralf Baechle <ralf@linux-mips.org>
Date: Fri, 1 May 2009 15:47:21 +0200
Cc: linux-mips@linux-mips.org, David Daney <ddaney@caviumnetworks.com>
In-reply-to: <200904301748.52718.florian@openwrt.org>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <200904301748.52718.florian@openwrt.org>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mutt/1.5.18 (2008-05-17)
On Thu, Apr 30, 2009 at 05:48:51PM +0200, Florian Fainelli wrote:

> Building flash_setup while CONFIG_MTD is not enabled does work, but
> results in the following oops while booting:
> 
> Bootbus flash: Setting flash for 32MB flash at 0x1dc00000
> Kernel bug detected[#1]:
> Cpu 0
> $ 0   : 0000000000000000 0000000000000010 000000000000003d 0000000000000002
> $ 4   : 0000000000000001 0000000000000000 ffffffffffffffff 0000000000000d52
> $ 8   : 0000000000000d52 000000000000003e 000000000000000a 0000000000000d17
> $12   : 0000000000000031 ffffffff81105e2c 00000000f34c39b5 0000000017da5c01
> $16   : ffffffff813ab588 ffffffff8138b514 0000000000000001 ffffffff814d2390
> $20   : 0000000000000010 0000000000000010 0000000000000000 0000000000000000
> $24   : 000000000931a549 ffffffff8110e68c
> $28   : a800000007828000 a80000000782bf00 0000000000000000 ffffffff8138b594
> Hi    : 0000000000000191
> Lo    : 36978d4fdf254137
> epc   : ffffffff8138b594 0xffffffff8138b594
>     Not tainted
> ra    : ffffffff8138b594 0xffffffff8138b594
> Status: 10008ce3    KX SX UX KERNEL EXL IE
> Cause : 00800024
> PrId  : 000d0601 (Cavium Octeon)
> Modules linked in:
> Process swapper (pid: 1, threadinfo=a800000007828000, task=a800000007825540, 
> tls=0000000000000000)
> Stack : ffffffff813ab580 ffffffff8110d918 0000000007885780 ffffffff81385080
>         ffffffff81385080 ffffffff8116ca10 3135310000000000 0000000000000000
>         0000000000000098 ffffffff81360000 ffffffff81350000 ffffffff813ab588
>         ffffffff813ab5d0 ffffffff81350000 ffffffff814d2390 ffffffff813862e8
>         000000000000ffff 0000000000000000 0000000000000000 0000000000000000
>         0000000000000000 0000000000000000 0000000000000000 0000000000000000
>         0000000000000000 ffffffff81114f38 0000000000000000 0000000000000000
>         0000000000000000 0000000000000000 0000000000000000 0000000000000000
> Call Trace:[<ffffffff8110d918>] 0xffffffff8110d918
> [<ffffffff8116ca10>] 0xffffffff8116ca10
> [<ffffffff813862e8>] 0xffffffff813862e8
> [<ffffffff81114f38>] 0xffffffff81114f38
> 
> This patch makes flash_setup be compiled only when CONFIG_MTD
> which solves issue, the MTD driver then fails to register but this is
> less critical.

I think your code blows up if !CONFIG_MTD_COMPLEX_MAPPINGS and
!CONFIG_MTD_MAP_BANK_WIDTH_1 in which case simple_map_init is defined as:

#define simple_map_init(map) BUG_ON(!map_bankwidth_supported((map)->bankwidth))

bankwidth is 1, so:

static inline int map_bankwidth_supported(int w)
{
        switch (w) {
#ifdef CONFIG_MTD_MAP_BANK_WIDTH_1
        case 1:
#endif
                return 1;
[...]
        default:
                return 0;
        }
}

  Ralf

<Prev in Thread] Current Thread [Next in Thread>
  • Re: [PATCH] flash_setup should only be built when CONFIG_MTD is enabled, Ralf Baechle <=