flash_setup should only be built when CONFIG_MTD is enabled
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>] 0xffffffff81114f38This 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
@@ -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
Quoted 6 lines · Florian Fainelli
This patch makes
flash_setupbe compiled only whenCONFIG_MTDwhich solves issue, the MTD driver then fails to register but this is less critical.CC David Daney <[email protected]>Signed-off-by Florian Fainelli <[email protected]>
Quoted 18 lines
---
arch/mips/cavium-octeon/Makefile +2
-1@@ -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
Quoted 37 lines · Florian Fainelli
Building
flash_setupwhileCONFIG_MTDis not enabled does work, but results in the following oops while booting:Bootbus flash: Setting flash for 32MB flash at
0x1dc00000Kernel 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_setupbe compiled only whenCONFIG_MTDwhich 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