Skip to contentSkip to conversation

flash_setup should only be built when CONFIG_MTD is enabled

PATCH In review Florian Fainelli 3 participants 3 messages Apr 30, 2009 – May 1, 2009 MIPS

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 flash_setup should only be built when CONFIG_MTD is enabled

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.

---

arch/mips/cavium-octeon/Makefile +2 -1
index d6903c3..32bdc81 100644
@@ -10,9 +10,10 @@
 #
 
 obj-y := setup.o serial.o octeon-irq.o csrc-octeon.o
-obj-y += dma-octeon.o flash_setup.o
+obj-y += dma-octeon.o
 obj-y += octeon-memcpy.o
 
 obj-$(CONFIG_SMP)                     += smp.o
+obj-$(CONFIG_MTD)		+= flash_setup.o
 
 EXTRA_CFLAGS += -Werror
Acked-by on v1 1/1
#1 lore raw
Quoted 6 lines · Florian Fainelli

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.

Quoted 18 lines

---

arch/mips/cavium-octeon/Makefile +2 -1
index d6903c3..32bdc81 100644
@@ -10,9 +10,10 @@
 #
 
 obj-y := setup.o serial.o octeon-irq.o csrc-octeon.o
-obj-y += dma-octeon.o flash_setup.o
+obj-y += dma-octeon.o
 obj-y += octeon-memcpy.o
 
 obj-$(CONFIG_SMP)                     += smp.o
+obj-$(CONFIG_MTD)		+= flash_setup.o
 
 EXTRA_CFLAGS += -Werror
#2 lore raw
In reply to Florian Fainelli
Quoted 37 lines · Florian Fainelli

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
Quoted 3 lines

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