* Kernel oops since v3.5.x on Atmel chips
@ 2012-08-22 10:28 ludovic.desroches
2012-08-22 15:00 ` ludovic.desroches
0 siblings, 1 reply; 14+ messages in thread
From: ludovic.desroches @ 2012-08-22 10:28 UTC (permalink / raw)
To: linux-arm-kernel
Hi,
Doing some tests with the help of Lava (a Linaro tool), I get some
kernel oops with 3.5.x on several chips at91sam9260, at91sam9261 and
at91sam9m10g45.
Most of the time the oops comes from the cascade BUG() call in
kernel/timer.c but sometimes it comes from a bad PC value.
With Lava, I got the crash each time. It happens after mounting a mtd
partition, copying a file from it, removing this file from the flash
memory and then unmounting the mtd partition.
I couldn't reproduce manually this issue so maybe there is something
related to time...
Here I paste the usual oops and the one with the bad PC value:
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
Booting Linux on physical CPU 0
Linux version 3.5.0 (ldesroches at ibiza) (gcc version 4.6.1 (Ubuntu/Linaro
4.6.1-9ubuntu3) ) #10 Wed Aug 22 09:17:23 CEST 2012
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
CPU: VIVT data cache, VIVT instruction cache
Machine: Atmel AT91SAM9260-EK
Memory policy: ECC disabled, Data cache writeback
AT91: Detected soc type: at91sam9260
AT91: Detected soc subtype: Unknown
AT91: sram at 0x2ff000 of 0x2000 mapped at 0xfef76000
Clocks: CPU 198 MHz, master 99 MHz, main 18.432 MHz
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256
Kernel command line: mem=64M console=ttyS0,115200
mtdparts=atmel_nand:4M(bootstrap/uboot/kernel)ro,70M(rootfs),-(data)
root=/dev/mtdblock1 rw rootfstype=jffs2 ip=192.168.1.16:::255.255.255.0:::
PID hash table entries: 256 (order: -2, 1024 bytes)
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 64MB = 64MB total
Memory: 60848k/60848k available, 4688k reserved, 0K highmem
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
vmalloc : 0xc4800000 - 0xff000000 ( 936 MB)
lowmem : 0xc0000000 - 0xc4000000 ( 64 MB)
modules : 0xbf000000 - 0xc0000000 ( 16 MB)
.text : 0xc0008000 - 0xc039fee8 (3680 kB)
.init : 0xc03a0000 - 0xc03bd7c4 ( 118 kB)
.data : 0xc03be000 - 0xc03e8f00 ( 172 kB)
.bss : 0xc03e8f24 - 0xc03fb138 ( 73 kB)
NR_IRQS:192
AT91: 96 gpio irqs in 3 banks
sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every
4294967286ms
Console: colour dummy device 80x30
Calibrating delay loop... 98.71 BogoMIPS (lpj=493568)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
Setting up static identity map for 0x202af150 - 0x202af1a8
devtmpfs: initialized
NET: Registered protocol family 16
AT91: Power Management (with slow clock mode)
AT91: Starting after software reset
bio: create slab <bio-0> at 0
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
Advanced Linux Sound Architecture Driver Version 1.0.25.
Switching to clocksource pit
cfg80211: Calling CRDA to update world regulatory domain
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP: reno registered
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
jffs2: version 2.2. (NAND) (SUMMARY) ? 2001-2006 Red Hat, Inc.
msgmni has been set to 118
io scheduler noop registered (default)
atmel_usart.0: ttyS0 at MMIO 0xfffff200 (irq = 1) is a ATMEL_SERIAL
console [ttyS0] enabled
atmel_usart.1: ttyS1 at MMIO 0xfffb0000 (irq = 6) is a ATMEL_SERIAL
atmel_usart.2: ttyS2 at MMIO 0xfffb4000 (irq = 7) is a ATMEL_SERIAL
brd: module loaded
loop: module loaded
atmel_nand: Use On Flash BBT
atmel_nand atmel_nand: No DMA support for NAND access.
NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB
3,3V 8-bit), page size: 2048, OOB size: 64
Bad block table found at page 131008, version 0x01
Bad block table found at page 130944, version 0x01
nand_read_bbt: bad block at 0x000009840000
nand_read_bbt: bad block at 0x00000fb80000
3 cmdlinepart partitions found on MTD device atmel_nand
Creating 3 MTD partitions on "atmel_nand":
0x000000000000-0x000000400000 : "bootstrap/uboot/kernel"
0x000000400000-0x000004a00000 : "rootfs"
0x000004a00000-0x000010000000 : "data"
MACB_mii_bus: probed
macb macb: eth0: Cadence MACB at 0xfffc4000 irq 21 (3a:1f:34:08:54:54)
macb macb: eth0: attached PHY driver [Davicom DM9161A]
(mii_bus:phy_addr=macb-ffffffff:00, irq=-1)
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
at91_ohci at91_ohci: can't request overcurrent gpio 0
at91_ohci at91_ohci: AT91 OHCI
at91_ohci at91_ohci: new USB bus registered, assigned bus number 1
at91_ohci at91_ohci: irq 20, io mem 0x00500000
usb usb1: New USB device found, idVendor=1d6b, idProduct=0001
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: AT91 OHCI
usb usb1: Manufacturer: Linux 3.5.0 ohci_hcd
usb usb1: SerialNumber: at91
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
usbcore: registered new interface driver cdc_acm
cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
mousedev: PS/2 mouse device common for all mice
TCP: cubic registered
NET: Registered protocol family 17
lib80211: common routines for IEEE802.11 drivers
VFP support v0.3: not present
input: gpio-keys as /devices/platform/gpio-keys/input/input0
/home/ldesroches/workspace/linux/drivers/rtc/hctosys.c: unable to open
rtc device (rtc0)
IP-Config: Complete:
device=eth0, addr=192.168.1.16, mask=255.255.255.0, gw=255.255.255.255
host=192.168.1.16, domain=, nis-domain=(none)
bootserver=255.255.255.255, rootserver=255.255.255.255, rootpath=
ALSA device list:
No soundcards found.
macb macb: eth0: link up (100/Full)
jffs2: Empty flash at 0x01fb1c68 ends at 0x01fb2000
VFS: Mounted root (jffs2 filesystem) on device 31:1.
devtmpfs: mounted
Freeing init memory: 116K
Starting logging: OK
Populating using udev: udevd[468]: starting version 182
done
Starting portmap: done
Initializing random number generator... done.
Starting network...
ip: RTNETLINK answers: File exists
Starting sshd: OK
Welcome to Buildroot
at91 login: root
[root at at91 ~]#
[root at at91 ~]#
[root at at91 ~]# export PS1="$PS1 [rc=$(echo \$?)]: "
[root at at91 ~]# [rc=0]: mount -t jffs2 /dev/mtdblock2 /mnt/
jffs2: Empty flash at 0x01fb1c68 ends at 0x01fb2000
o_at91_lava/tmp [rc=0]: rm -rf /tmp/lava_results.tgz
/tmp//srv/lava/instances/rf
[root at at91 ~]# [rc=0]: mkdir -p /tmp//srv/lava/instances/rfo_at91_lava/tmp
tmp//srv/lava/instances/rfo_at91_lava/tmp/instances/rfo_at91_lava/tmp/*.bundle
/
eroot at at91 ~]# [rc=0]: rm -f
/mnt//srv/lava/instances/rfo_at91_lava/tmp/*.bundl
[root at at91 ~]# [rc=0]: umount /mnt/
[root at at91 ~]# [rc=0]: ------------[ cut here ]------------
kernel BUG at /home/ldesroches/workspace/linux/kernel/timer.c:1091!
Internal error: Oops - BUG: 0 [#1] ARM
Modules linked in:
CPU: 0 Not tainted (3.5.0 #10)
PC is at cascade+0x54/0x78
LR is at cascade+0x60/0x78
pc : [<c0023c80>] lr : [<c0023c8c>] psr: a0000093
sp : c03bfec8 ip : ffffae00 fp : 00000000
r10: c03ee540 r9 : 0000000a r8 : 00000100
r7 : c03bfec8 r6 : c03bfec8 r5 : 0000002e r4 : c03ee6a0
r3 : 00000000 r2 : 00000068 r1 : c3a60738 r0 : c03ee9ec
Flags: NzCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel
Control: 0005317f Table: 23a58000 DAC: 00000017
Process swapper (pid: 0, stack limit = 0xc03be270)
Stack: (0xc03bfec8 to 0xc03c0000)
fec0: c03faf70 c3a60738 0000002e c03ee6a0 c03be000
00000000
fee0: c03ee560 c0023d98 c0145bc4 c3952ba0 00000000 00000000 c03cddf4
00000001
ff00: 00000004 c03be000 c03ee560 00000100 c03ee540 c001f4b0 000027da
c03cddf4
ff20: 00000000 00000001 c03bff9c 00000001 00000000 fefff000 c03bff9c
20004000
ff40: 41069265 203b834c 00000000 c001f890 fefff000 c000dfc8 c000e0cc
c000e0e0
ff60: a0000013 c000d398 00000000 0005317f 0005217f a0000013 c03be000
c03c8f54
ff80: c03e8fe8 c047c300 20004000 41069265 203b834c 00000000 a00000d3
c03bffb0
ffa0: c000e0cc c000e0e0 a0000013 ffffffff c000e0b4 c000e27c c03c60b0
ffffffff
ffc0: c03b9784 c03a070c ffffffff ffffffff c03a0274 00000000 00000000
c03b9784
ffe0: 00000000 00053175 c03c603c c03b9780 c03c8f4c 20008040 00000000
00000000
[<c0023c80>] (cascade+0x54/0x78) from [<c0023d98>]
(run_timer_softirq+0x68/0x1f4)
[<c0023d98>] (run_timer_softirq+0x68/0x1f4) from [<c001f4b0>]
(__do_softirq+0x7c/0x110)
[<c001f4b0>] (__do_softirq+0x7c/0x110) from [<c001f890>]
(irq_exit+0x40/0x4c)
[<c001f890>] (irq_exit+0x40/0x4c) from [<c000dfc8>] (handle_IRQ+0x74/0x98)
[<c000dfc8>] (handle_IRQ+0x74/0x98) from [<c000d398>] (__irq_svc+0x38/0x60)
[<c000d398>] (__irq_svc+0x38/0x60) from [<c000e0e0>]
(default_idle+0x2c/0x34)
[<c000e0e0>] (default_idle+0x2c/0x34) from [<c000e27c>] (cpu_idle+0x78/0xd8)
[<c000e27c>] (cpu_idle+0x78/0xd8) from [<c03a070c>]
(start_kernel+0x280/0x2d0)
Code: e591300c e3c33001 e1540003 0a000000 (e7f001f2)
---[ end trace 6105dc3872c7de5d ]---
Kernel panic - not syncing: Fatal exception in interrupt
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
Booting Linux on physical CPU 0
Linux version 3.5.0 (ldesroches at ibiza) (gcc version 4.6.1 (Ubuntu/Linaro
4.6.1-9ubuntu3) ) #10 Wed Aug 22 09:17:23 CEST 2012
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
CPU: VIVT data cache, VIVT instruction cache
Machine: Atmel AT91SAM9260-EK
Memory policy: ECC disabled, Data cache writeback
AT91: Detected soc type: at91sam9260
AT91: Detected soc subtype: Unknown
AT91: sram at 0x2ff000 of 0x2000 mapped at 0xfef76000
Clocks: CPU 198 MHz, master 99 MHz, main 18.432 MHz
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256
Kernel command line: mem=64M console=ttyS0,115200
mtdparts=atmel_nand:4M(bootstrap/uboot/kernel)ro,70M(rootfs),-(data)
root=/dev/mtdblock1 rw rootfstype=jffs2 ip=192.168.1.16:::255.255.255.0:::
PID hash table entries: 256 (order: -2, 1024 bytes)
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 64MB = 64MB total
Memory: 60848k/60848k available, 4688k reserved, 0K highmem
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
vmalloc : 0xc4800000 - 0xff000000 ( 936 MB)
lowmem : 0xc0000000 - 0xc4000000 ( 64 MB)
modules : 0xbf000000 - 0xc0000000 ( 16 MB)
.text : 0xc0008000 - 0xc039fee8 (3680 kB)
.init : 0xc03a0000 - 0xc03bd7c4 ( 118 kB)
.data : 0xc03be000 - 0xc03e8f00 ( 172 kB)
.bss : 0xc03e8f24 - 0xc03fb138 ( 73 kB)
NR_IRQS:192
AT91: 96 gpio irqs in 3 banks
sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every
4294967286ms
Console: colour dummy device 80x30
Calibrating delay loop... 98.71 BogoMIPS (lpj=493568)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
Setting up static identity map for 0x202af150 - 0x202af1a8
devtmpfs: initialized
NET: Registered protocol family 16
AT91: Power Management (with slow clock mode)
AT91: Starting after software reset
bio: create slab <bio-0> at 0
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
Advanced Linux Sound Architecture Driver Version 1.0.25.
Switching to clocksource pit
cfg80211: Calling CRDA to update world regulatory domain
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP: reno registered
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
jffs2: version 2.2. (NAND) (SUMMARY) ? 2001-2006 Red Hat, Inc.
msgmni has been set to 118
io scheduler noop registered (default)
atmel_usart.0: ttyS0 at MMIO 0xfffff200 (irq = 1) is a ATMEL_SERIAL
console [ttyS0] enabled
atmel_usart.1: ttyS1 at MMIO 0xfffb0000 (irq = 6) is a ATMEL_SERIAL
atmel_usart.2: ttyS2 at MMIO 0xfffb4000 (irq = 7) is a ATMEL_SERIAL
brd: module loaded
loop: module loaded
atmel_nand: Use On Flash BBT
atmel_nand atmel_nand: No DMA support for NAND access.
NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB
3,3V 8-bit), page size: 2048, OOB size: 64
Bad block table found at page 131008, version 0x01
Bad block table found at page 130944, version 0x01
nand_read_bbt: bad block at 0x000009840000
nand_read_bbt: bad block at 0x00000fb80000
3 cmdlinepart partitions found on MTD device atmel_nand
Creating 3 MTD partitions on "atmel_nand":
0x000000000000-0x000000400000 : "bootstrap/uboot/kernel"
0x000000400000-0x000004a00000 : "rootfs"
0x000004a00000-0x000010000000 : "data"
MACB_mii_bus: probed
macb macb: eth0: Cadence MACB at 0xfffc4000 irq 21 (3a:1f:34:08:54:54)
macb macb: eth0: attached PHY driver [Davicom DM9161A]
(mii_bus:phy_addr=macb-ffffffff:00, irq=-1)
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
at91_ohci at91_ohci: can't request overcurrent gpio 0
at91_ohci at91_ohci: AT91 OHCI
at91_ohci at91_ohci: new USB bus registered, assigned bus number 1
at91_ohci at91_ohci: irq 20, io mem 0x00500000
usb usb1: New USB device found, idVendor=1d6b, idProduct=0001
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: AT91 OHCI
usb usb1: Manufacturer: Linux 3.5.0 ohci_hcd
usb usb1: SerialNumber: at91
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
usbcore: registered new interface driver cdc_acm
cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
mousedev: PS/2 mouse device common for all mice
TCP: cubic registered
NET: Registered protocol family 17
lib80211: common routines for IEEE802.11 drivers
VFP support v0.3: not present
input: gpio-keys as /devices/platform/gpio-keys/input/input0
/home/ldesroches/workspace/linux/drivers/rtc/hctosys.c: unable to open
rtc device (rtc0)
IP-Config: Complete:
device=eth0, addr=192.168.1.16, mask=255.255.255.0, gw=255.255.255.255
host=192.168.1.16, domain=, nis-domain=(none)
bootserver=255.255.255.255, rootserver=255.255.255.255, rootpath=
ALSA device list:
No soundcards found.
macb macb: eth0: link up (100/Full)
jffs2: Empty flash at 0x01fb1c68 ends at 0x01fb2000
VFS: Mounted root (jffs2 filesystem) on device 31:1.
devtmpfs: mounted
Freeing init memory: 116K
Starting logging: OK
Populating using udev: done
udevd[468]: starting version 182
Starting portmap: done
Initializing random number generator... done.
Starting network...
ip: RTNETLINK answers: File exists
Starting sshd: OK
Welcome to Buildroot
at91 login: root
[root at at91 ~]#
[root at at91 ~]#
[root at at91 ~]# export PS1="$PS1 [rc=$(echo \$?)]: "
[root at at91 ~]# [rc=0]: mount -t jffs2 /dev/mtdblock2 /mnt/
jffs2: Empty flash at 0x01fb1c68 ends at 0x01fb2000
o_at91_lava/tmp [rc=0]: rm -rf /tmp/lava_results.tgz
/tmp//srv/lava/instances/rf
[root at at91 ~]# [rc=0]: mkdir -p /tmp//srv/lava/instances/rfo_at91_lava/tmp
tmp//srv/lava/instances/rfo_at91_lava/tmp/instances/rfo_at91_lava/tmp/*.bundle
/
eroot at at91 ~]# [rc=0]: rm -f
/mnt//srv/lava/instances/rfo_at91_lava/tmp/*.bundl
[root at at91 ~]# [rc=0]: umount /mnt/
[root at at91 ~]# [rc=0]: Unable to handle kernel paging request at
virtual address 0d0c951c
pgd = c0004000
[0d0c951c] *pgd=00000000
Internal error: Oops: 80000005 [#1] ARM
Modules linked in:
CPU: 0 Not tainted (3.5.0 #10)
PC is at 0xd0c951c
LR is at run_timer_softirq+0x144/0x1f4
pc : [<0d0c951c>] lr : [<c0023e74>] psr: 20000013
sp : c03bfee8 ip : 00200200 fp : 00000000
r10: 0d0c951c r9 : 0000000a r8 : c03bfef0
r7 : c03ee560 r6 : 00000100 r5 : c03be000 r4 : c03ee6a0
r3 : 20000013 r2 : 00000000 r1 : c03bfef0 r0 : b5a01535
Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel
Control: 0005317f Table: 23a58000 DAC: 00000017
Process swapper (pid: 0, stack limit = 0xc03be270)
Stack: (0xc03bfee8 to 0xc03c0000)
fee0: c0145bc4 c396dba0 c03bfef0 c03bfef0 c03cddf4
00000001
ff00: 00000004 c03be000 c03ee560 00000100 c03ee540 c001f4b0 00002870
c03cddf4
ff20: 00000000 00000001 c03bff9c 00000001 00000000 fefff000 c03bff9c
20004000
ff40: 41069265 203b834c 00000000 c001f890 fefff000 c000dfc8 c000e0cc
c000e0e0
ff60: a0000013 c000d398 00000000 0005317f 0005217f a0000013 c03be000
c03c8f54
ff80: c03e8fe8 c047c300 20004000 41069265 203b834c 00000000 a00000d3
c03bffb0
ffa0: c000e0cc c000e0e0 a0000013 ffffffff c000e0b4 c000e27c c03c60b0
ffffffff
ffc0: c03b9784 c03a070c ffffffff ffffffff c03a0274 00000000 00000000
c03b9784
ffe0: 00000000 00053175 c03c603c c03b9780 c03c8f4c 20008040 00000000
00000000
[<c0023e74>] (run_timer_softirq+0x144/0x1f4) from [<c001f4b0>]
(__do_softirq+0x7c/0x110)
[<c001f4b0>] (__do_softirq+0x7c/0x110) from [<c001f890>]
(irq_exit+0x40/0x4c)
[<c001f890>] (irq_exit+0x40/0x4c) from [<c000dfc8>] (handle_IRQ+0x74/0x98)
[<c000dfc8>] (handle_IRQ+0x74/0x98) from [<c000d398>] (__irq_svc+0x38/0x60)
[<c000d398>] (__irq_svc+0x38/0x60) from [<c000e0e0>]
(default_idle+0x2c/0x34)
[<c000e0e0>] (default_idle+0x2c/0x34) from [<c000e27c>] (cpu_idle+0x78/0xd8)
[<c000e27c>] (cpu_idle+0x78/0xd8) from [<c03a070c>]
(start_kernel+0x280/0x2d0)
Code: bad PC value
---[ end trace f65db9c681fbd6e3 ]---
Kernel panic - not syncing: Fatal exception in interrupt
Regards
Ludovic
^ permalink raw reply [flat|nested] 14+ messages in thread* JFFS2 issue with v3.5.x and later on Atmel chips at least (was: Kernel oops since v3.5.x on Atmel chips) 2012-08-22 10:28 Kernel oops since v3.5.x on Atmel chips ludovic.desroches @ 2012-08-22 15:00 ` ludovic.desroches 0 siblings, 0 replies; 14+ messages in thread From: ludovic.desroches @ 2012-08-22 15:00 UTC (permalink / raw) To: Linux Kernel list, linux-arm-kernel@lists.infradead.org, linux-mtd, artem.bityutskiy Cc: Jean-Christophe PLAGNIOL-VILLARD, ludovic.desroches, Nicolas Ferre Le 08/22/2012 12:28 PM, ludovic.desroches a écrit : > Hi, > > Doing some tests with the help of Lava (a Linaro tool), I get some > kernel oops with 3.5.x on several chips at91sam9260, at91sam9261 and > at91sam9m10g45. > > Most of the time the oops comes from the cascade BUG() call in > kernel/timer.c but sometimes it comes from a bad PC value. > > With Lava, I got the crash each time. It happens after mounting a mtd > partition, copying a file from it, removing this file from the flash > memory and then unmounting the mtd partition. > > I couldn't reproduce manually this issue so maybe there is something > related to time... > > Here I paste the usual oops and the one with the bad PC value: > > Starting kernel ... > > Uncompressing Linux... done, booting the kernel. > Booting Linux on physical CPU 0 > Linux version 3.5.0 (ldesroches@ibiza) (gcc version 4.6.1 (Ubuntu/Linaro > 4.6.1-9ubuntu3) ) #10 Wed Aug 22 09:17:23 CEST 2012 > CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177 > CPU: VIVT data cache, VIVT instruction cache > Machine: Atmel AT91SAM9260-EK > Memory policy: ECC disabled, Data cache writeback > AT91: Detected soc type: at91sam9260 > AT91: Detected soc subtype: Unknown > AT91: sram at 0x2ff000 of 0x2000 mapped at 0xfef76000 > Clocks: CPU 198 MHz, master 99 MHz, main 18.432 MHz > Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256 > Kernel command line: mem=64M console=ttyS0,115200 > mtdparts=atmel_nand:4M(bootstrap/uboot/kernel)ro,70M(rootfs),-(data) > root=/dev/mtdblock1 rw rootfstype=jffs2 ip=192.168.1.16:::255.255.255.0::: > PID hash table entries: 256 (order: -2, 1024 bytes) > Dentry cache hash table entries: 8192 (order: 3, 32768 bytes) > Inode-cache hash table entries: 4096 (order: 2, 16384 bytes) > Memory: 64MB = 64MB total > Memory: 60848k/60848k available, 4688k reserved, 0K highmem > Virtual kernel memory layout: > vector : 0xffff0000 - 0xffff1000 ( 4 kB) > fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) > vmalloc : 0xc4800000 - 0xff000000 ( 936 MB) > lowmem : 0xc0000000 - 0xc4000000 ( 64 MB) > modules : 0xbf000000 - 0xc0000000 ( 16 MB) > .text : 0xc0008000 - 0xc039fee8 (3680 kB) > .init : 0xc03a0000 - 0xc03bd7c4 ( 118 kB) > .data : 0xc03be000 - 0xc03e8f00 ( 172 kB) > .bss : 0xc03e8f24 - 0xc03fb138 ( 73 kB) > NR_IRQS:192 > AT91: 96 gpio irqs in 3 banks > sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every > 4294967286ms > Console: colour dummy device 80x30 > Calibrating delay loop... 98.71 BogoMIPS (lpj=493568) > pid_max: default: 32768 minimum: 301 > Mount-cache hash table entries: 512 > CPU: Testing write buffer coherency: ok > Setting up static identity map for 0x202af150 - 0x202af1a8 > devtmpfs: initialized > NET: Registered protocol family 16 > AT91: Power Management (with slow clock mode) > AT91: Starting after software reset > bio: create slab <bio-0> at 0 > SCSI subsystem initialized > usbcore: registered new interface driver usbfs > usbcore: registered new interface driver hub > usbcore: registered new device driver usb > Advanced Linux Sound Architecture Driver Version 1.0.25. > Switching to clocksource pit > cfg80211: Calling CRDA to update world regulatory domain > NET: Registered protocol family 2 > IP route cache hash table entries: 1024 (order: 0, 4096 bytes) > TCP established hash table entries: 2048 (order: 2, 16384 bytes) > TCP bind hash table entries: 2048 (order: 1, 8192 bytes) > TCP: Hash tables configured (established 2048 bind 2048) > TCP: reno registered > UDP hash table entries: 256 (order: 0, 4096 bytes) > UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) > NET: Registered protocol family 1 > RPC: Registered named UNIX socket transport module. > RPC: Registered udp transport module. > RPC: Registered tcp transport module. > RPC: Registered tcp NFSv4.1 backchannel transport module. > jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc. > msgmni has been set to 118 > io scheduler noop registered (default) > atmel_usart.0: ttyS0 at MMIO 0xfffff200 (irq = 1) is a ATMEL_SERIAL > console [ttyS0] enabled > atmel_usart.1: ttyS1 at MMIO 0xfffb0000 (irq = 6) is a ATMEL_SERIAL > atmel_usart.2: ttyS2 at MMIO 0xfffb4000 (irq = 7) is a ATMEL_SERIAL > brd: module loaded > loop: module loaded > atmel_nand: Use On Flash BBT > atmel_nand atmel_nand: No DMA support for NAND access. > NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB > 3,3V 8-bit), page size: 2048, OOB size: 64 > Bad block table found at page 131008, version 0x01 > Bad block table found at page 130944, version 0x01 > nand_read_bbt: bad block at 0x000009840000 > nand_read_bbt: bad block at 0x00000fb80000 > 3 cmdlinepart partitions found on MTD device atmel_nand > Creating 3 MTD partitions on "atmel_nand": > 0x000000000000-0x000000400000 : "bootstrap/uboot/kernel" > 0x000000400000-0x000004a00000 : "rootfs" > 0x000004a00000-0x000010000000 : "data" > MACB_mii_bus: probed > macb macb: eth0: Cadence MACB at 0xfffc4000 irq 21 (3a:1f:34:08:54:54) > macb macb: eth0: attached PHY driver [Davicom DM9161A] > (mii_bus:phy_addr=macb-ffffffff:00, irq=-1) > ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver > at91_ohci at91_ohci: can't request overcurrent gpio 0 > at91_ohci at91_ohci: AT91 OHCI > at91_ohci at91_ohci: new USB bus registered, assigned bus number 1 > at91_ohci at91_ohci: irq 20, io mem 0x00500000 > usb usb1: New USB device found, idVendor=1d6b, idProduct=0001 > usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 > usb usb1: Product: AT91 OHCI > usb usb1: Manufacturer: Linux 3.5.0 ohci_hcd > usb usb1: SerialNumber: at91 > hub 1-0:1.0: USB hub found > hub 1-0:1.0: 2 ports detected > usbcore: registered new interface driver cdc_acm > cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters > Initializing USB Mass Storage driver... > usbcore: registered new interface driver usb-storage > USB Mass Storage support registered. > mousedev: PS/2 mouse device common for all mice > TCP: cubic registered > NET: Registered protocol family 17 > lib80211: common routines for IEEE802.11 drivers > VFP support v0.3: not present > input: gpio-keys as /devices/platform/gpio-keys/input/input0 > /home/ldesroches/workspace/linux/drivers/rtc/hctosys.c: unable to open > rtc device (rtc0) > IP-Config: Complete: > device=eth0, addr=192.168.1.16, mask=255.255.255.0, > gw=255.255.255.255 > host=192.168.1.16, domain=, nis-domain=(none) > bootserver=255.255.255.255, rootserver=255.255.255.255, rootpath= > ALSA device list: > No soundcards found. > macb macb: eth0: link up (100/Full) > jffs2: Empty flash at 0x01fb1c68 ends at 0x01fb2000 > VFS: Mounted root (jffs2 filesystem) on device 31:1. > devtmpfs: mounted > Freeing init memory: 116K > Starting logging: OK > Populating using udev: udevd[468]: starting version 182 > done > Starting portmap: done > Initializing random number generator... done. > Starting network... > ip: RTNETLINK answers: File exists > Starting sshd: OK > > Welcome to Buildroot > at91 login: root > [root@at91 ~]# > [root@at91 ~]# > [root@at91 ~]# export PS1="$PS1 [rc=$(echo \$?)]: " > [root@at91 ~]# [rc=0]: mount -t jffs2 /dev/mtdblock2 /mnt/ > jffs2: Empty flash at 0x01fb1c68 ends at 0x01fb2000 > o_at91_lava/tmp [rc=0]: rm -rf /tmp/lava_results.tgz > /tmp//srv/lava/instances/rf > [root@at91 ~]# [rc=0]: mkdir -p /tmp//srv/lava/instances/rfo_at91_lava/tmp > tmp//srv/lava/instances/rfo_at91_lava/tmp/instances/rfo_at91_lava/tmp/*.bundle > / > eroot@at91 ~]# [rc=0]: rm -f > /mnt//srv/lava/instances/rfo_at91_lava/tmp/*.bundl > [root@at91 ~]# [rc=0]: umount /mnt/ > [root@at91 ~]# [rc=0]: ------------[ cut here ]------------ > kernel BUG at /home/ldesroches/workspace/linux/kernel/timer.c:1091! > Internal error: Oops - BUG: 0 [#1] ARM > Modules linked in: > CPU: 0 Not tainted (3.5.0 #10) > PC is at cascade+0x54/0x78 > LR is at cascade+0x60/0x78 > pc : [<c0023c80>] lr : [<c0023c8c>] psr: a0000093 > sp : c03bfec8 ip : ffffae00 fp : 00000000 > r10: c03ee540 r9 : 0000000a r8 : 00000100 > r7 : c03bfec8 r6 : c03bfec8 r5 : 0000002e r4 : c03ee6a0 > r3 : 00000000 r2 : 00000068 r1 : c3a60738 r0 : c03ee9ec > Flags: NzCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel > Control: 0005317f Table: 23a58000 DAC: 00000017 > Process swapper (pid: 0, stack limit = 0xc03be270) > Stack: (0xc03bfec8 to 0xc03c0000) > fec0: c03faf70 c3a60738 0000002e c03ee6a0 c03be000 > 00000000 > fee0: c03ee560 c0023d98 c0145bc4 c3952ba0 00000000 00000000 c03cddf4 > 00000001 > ff00: 00000004 c03be000 c03ee560 00000100 c03ee540 c001f4b0 000027da > c03cddf4 > ff20: 00000000 00000001 c03bff9c 00000001 00000000 fefff000 c03bff9c > 20004000 > ff40: 41069265 203b834c 00000000 c001f890 fefff000 c000dfc8 c000e0cc > c000e0e0 > ff60: a0000013 c000d398 00000000 0005317f 0005217f a0000013 c03be000 > c03c8f54 > ff80: c03e8fe8 c047c300 20004000 41069265 203b834c 00000000 a00000d3 > c03bffb0 > ffa0: c000e0cc c000e0e0 a0000013 ffffffff c000e0b4 c000e27c c03c60b0 > ffffffff > ffc0: c03b9784 c03a070c ffffffff ffffffff c03a0274 00000000 00000000 > c03b9784 > ffe0: 00000000 00053175 c03c603c c03b9780 c03c8f4c 20008040 00000000 > 00000000 > [<c0023c80>] (cascade+0x54/0x78) from [<c0023d98>] > (run_timer_softirq+0x68/0x1f4) > [<c0023d98>] (run_timer_softirq+0x68/0x1f4) from [<c001f4b0>] > (__do_softirq+0x7c/0x110) > [<c001f4b0>] (__do_softirq+0x7c/0x110) from [<c001f890>] > (irq_exit+0x40/0x4c) > [<c001f890>] (irq_exit+0x40/0x4c) from [<c000dfc8>] (handle_IRQ+0x74/0x98) > [<c000dfc8>] (handle_IRQ+0x74/0x98) from [<c000d398>] (__irq_svc+0x38/0x60) > [<c000d398>] (__irq_svc+0x38/0x60) from [<c000e0e0>] > (default_idle+0x2c/0x34) > [<c000e0e0>] (default_idle+0x2c/0x34) from [<c000e27c>] > (cpu_idle+0x78/0xd8) > [<c000e27c>] (cpu_idle+0x78/0xd8) from [<c03a070c>] > (start_kernel+0x280/0x2d0) > Code: e591300c e3c33001 e1540003 0a000000 (e7f001f2) > ---[ end trace 6105dc3872c7de5d ]--- > Kernel panic - not syncing: Fatal exception in interrupt > > > > > > Starting kernel ... > > Uncompressing Linux... done, booting the kernel. > Booting Linux on physical CPU 0 > Linux version 3.5.0 (ldesroches@ibiza) (gcc version 4.6.1 (Ubuntu/Linaro > 4.6.1-9ubuntu3) ) #10 Wed Aug 22 09:17:23 CEST 2012 > CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177 > CPU: VIVT data cache, VIVT instruction cache > Machine: Atmel AT91SAM9260-EK > Memory policy: ECC disabled, Data cache writeback > AT91: Detected soc type: at91sam9260 > AT91: Detected soc subtype: Unknown > AT91: sram at 0x2ff000 of 0x2000 mapped at 0xfef76000 > Clocks: CPU 198 MHz, master 99 MHz, main 18.432 MHz > Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256 > Kernel command line: mem=64M console=ttyS0,115200 > mtdparts=atmel_nand:4M(bootstrap/uboot/kernel)ro,70M(rootfs),-(data) > root=/dev/mtdblock1 rw rootfstype=jffs2 ip=192.168.1.16:::255.255.255.0::: > PID hash table entries: 256 (order: -2, 1024 bytes) > Dentry cache hash table entries: 8192 (order: 3, 32768 bytes) > Inode-cache hash table entries: 4096 (order: 2, 16384 bytes) > Memory: 64MB = 64MB total > Memory: 60848k/60848k available, 4688k reserved, 0K highmem > Virtual kernel memory layout: > vector : 0xffff0000 - 0xffff1000 ( 4 kB) > fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) > vmalloc : 0xc4800000 - 0xff000000 ( 936 MB) > lowmem : 0xc0000000 - 0xc4000000 ( 64 MB) > modules : 0xbf000000 - 0xc0000000 ( 16 MB) > .text : 0xc0008000 - 0xc039fee8 (3680 kB) > .init : 0xc03a0000 - 0xc03bd7c4 ( 118 kB) > .data : 0xc03be000 - 0xc03e8f00 ( 172 kB) > .bss : 0xc03e8f24 - 0xc03fb138 ( 73 kB) > NR_IRQS:192 > AT91: 96 gpio irqs in 3 banks > sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every > 4294967286ms > Console: colour dummy device 80x30 > Calibrating delay loop... 98.71 BogoMIPS (lpj=493568) > pid_max: default: 32768 minimum: 301 > Mount-cache hash table entries: 512 > CPU: Testing write buffer coherency: ok > Setting up static identity map for 0x202af150 - 0x202af1a8 > devtmpfs: initialized > NET: Registered protocol family 16 > AT91: Power Management (with slow clock mode) > AT91: Starting after software reset > bio: create slab <bio-0> at 0 > SCSI subsystem initialized > usbcore: registered new interface driver usbfs > usbcore: registered new interface driver hub > usbcore: registered new device driver usb > Advanced Linux Sound Architecture Driver Version 1.0.25. > Switching to clocksource pit > cfg80211: Calling CRDA to update world regulatory domain > NET: Registered protocol family 2 > IP route cache hash table entries: 1024 (order: 0, 4096 bytes) > TCP established hash table entries: 2048 (order: 2, 16384 bytes) > TCP bind hash table entries: 2048 (order: 1, 8192 bytes) > TCP: Hash tables configured (established 2048 bind 2048) > TCP: reno registered > UDP hash table entries: 256 (order: 0, 4096 bytes) > UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) > NET: Registered protocol family 1 > RPC: Registered named UNIX socket transport module. > RPC: Registered udp transport module. > RPC: Registered tcp transport module. > RPC: Registered tcp NFSv4.1 backchannel transport module. > jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc. > msgmni has been set to 118 > io scheduler noop registered (default) > atmel_usart.0: ttyS0 at MMIO 0xfffff200 (irq = 1) is a ATMEL_SERIAL > console [ttyS0] enabled > atmel_usart.1: ttyS1 at MMIO 0xfffb0000 (irq = 6) is a ATMEL_SERIAL > atmel_usart.2: ttyS2 at MMIO 0xfffb4000 (irq = 7) is a ATMEL_SERIAL > brd: module loaded > loop: module loaded > atmel_nand: Use On Flash BBT > atmel_nand atmel_nand: No DMA support for NAND access. > NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB > 3,3V 8-bit), page size: 2048, OOB size: 64 > Bad block table found at page 131008, version 0x01 > Bad block table found at page 130944, version 0x01 > nand_read_bbt: bad block at 0x000009840000 > nand_read_bbt: bad block at 0x00000fb80000 > 3 cmdlinepart partitions found on MTD device atmel_nand > Creating 3 MTD partitions on "atmel_nand": > 0x000000000000-0x000000400000 : "bootstrap/uboot/kernel" > 0x000000400000-0x000004a00000 : "rootfs" > 0x000004a00000-0x000010000000 : "data" > MACB_mii_bus: probed > macb macb: eth0: Cadence MACB at 0xfffc4000 irq 21 (3a:1f:34:08:54:54) > macb macb: eth0: attached PHY driver [Davicom DM9161A] > (mii_bus:phy_addr=macb-ffffffff:00, irq=-1) > ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver > at91_ohci at91_ohci: can't request overcurrent gpio 0 > at91_ohci at91_ohci: AT91 OHCI > at91_ohci at91_ohci: new USB bus registered, assigned bus number 1 > at91_ohci at91_ohci: irq 20, io mem 0x00500000 > usb usb1: New USB device found, idVendor=1d6b, idProduct=0001 > usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 > usb usb1: Product: AT91 OHCI > usb usb1: Manufacturer: Linux 3.5.0 ohci_hcd > usb usb1: SerialNumber: at91 > hub 1-0:1.0: USB hub found > hub 1-0:1.0: 2 ports detected > usbcore: registered new interface driver cdc_acm > cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters > Initializing USB Mass Storage driver... > usbcore: registered new interface driver usb-storage > USB Mass Storage support registered. > mousedev: PS/2 mouse device common for all mice > TCP: cubic registered > NET: Registered protocol family 17 > lib80211: common routines for IEEE802.11 drivers > VFP support v0.3: not present > input: gpio-keys as /devices/platform/gpio-keys/input/input0 > /home/ldesroches/workspace/linux/drivers/rtc/hctosys.c: unable to open > rtc device (rtc0) > IP-Config: Complete: > device=eth0, addr=192.168.1.16, mask=255.255.255.0, > gw=255.255.255.255 > host=192.168.1.16, domain=, nis-domain=(none) > bootserver=255.255.255.255, rootserver=255.255.255.255, rootpath= > ALSA device list: > No soundcards found. > macb macb: eth0: link up (100/Full) > jffs2: Empty flash at 0x01fb1c68 ends at 0x01fb2000 > VFS: Mounted root (jffs2 filesystem) on device 31:1. > devtmpfs: mounted > Freeing init memory: 116K > Starting logging: OK > Populating using udev: done > udevd[468]: starting version 182 > Starting portmap: done > Initializing random number generator... done. > Starting network... > ip: RTNETLINK answers: File exists > Starting sshd: OK > > Welcome to Buildroot > at91 login: root > [root@at91 ~]# > [root@at91 ~]# > [root@at91 ~]# export PS1="$PS1 [rc=$(echo \$?)]: " > [root@at91 ~]# [rc=0]: mount -t jffs2 /dev/mtdblock2 /mnt/ > jffs2: Empty flash at 0x01fb1c68 ends at 0x01fb2000 > o_at91_lava/tmp [rc=0]: rm -rf /tmp/lava_results.tgz > /tmp//srv/lava/instances/rf > [root@at91 ~]# [rc=0]: mkdir -p /tmp//srv/lava/instances/rfo_at91_lava/tmp > tmp//srv/lava/instances/rfo_at91_lava/tmp/instances/rfo_at91_lava/tmp/*.bundle > / > eroot@at91 ~]# [rc=0]: rm -f > /mnt//srv/lava/instances/rfo_at91_lava/tmp/*.bundl > [root@at91 ~]# [rc=0]: umount /mnt/ > [root@at91 ~]# [rc=0]: Unable to handle kernel paging request at > virtual address 0d0c951c > pgd = c0004000 > [0d0c951c] *pgd=00000000 > Internal error: Oops: 80000005 [#1] ARM > Modules linked in: > CPU: 0 Not tainted (3.5.0 #10) > PC is at 0xd0c951c > LR is at run_timer_softirq+0x144/0x1f4 > pc : [<0d0c951c>] lr : [<c0023e74>] psr: 20000013 > sp : c03bfee8 ip : 00200200 fp : 00000000 > r10: 0d0c951c r9 : 0000000a r8 : c03bfef0 > r7 : c03ee560 r6 : 00000100 r5 : c03be000 r4 : c03ee6a0 > r3 : 20000013 r2 : 00000000 r1 : c03bfef0 r0 : b5a01535 > Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel > Control: 0005317f Table: 23a58000 DAC: 00000017 > Process swapper (pid: 0, stack limit = 0xc03be270) > Stack: (0xc03bfee8 to 0xc03c0000) > fee0: c0145bc4 c396dba0 c03bfef0 c03bfef0 c03cddf4 > 00000001 > ff00: 00000004 c03be000 c03ee560 00000100 c03ee540 c001f4b0 00002870 > c03cddf4 > ff20: 00000000 00000001 c03bff9c 00000001 00000000 fefff000 c03bff9c > 20004000 > ff40: 41069265 203b834c 00000000 c001f890 fefff000 c000dfc8 c000e0cc > c000e0e0 > ff60: a0000013 c000d398 00000000 0005317f 0005217f a0000013 c03be000 > c03c8f54 > ff80: c03e8fe8 c047c300 20004000 41069265 203b834c 00000000 a00000d3 > c03bffb0 > ffa0: c000e0cc c000e0e0 a0000013 ffffffff c000e0b4 c000e27c c03c60b0 > ffffffff > ffc0: c03b9784 c03a070c ffffffff ffffffff c03a0274 00000000 00000000 > c03b9784 > ffe0: 00000000 00053175 c03c603c c03b9780 c03c8f4c 20008040 00000000 > 00000000 > [<c0023e74>] (run_timer_softirq+0x144/0x1f4) from [<c001f4b0>] > (__do_softirq+0x7c/0x110) > [<c001f4b0>] (__do_softirq+0x7c/0x110) from [<c001f890>] > (irq_exit+0x40/0x4c) > [<c001f890>] (irq_exit+0x40/0x4c) from [<c000dfc8>] (handle_IRQ+0x74/0x98) > [<c000dfc8>] (handle_IRQ+0x74/0x98) from [<c000d398>] (__irq_svc+0x38/0x60) > [<c000d398>] (__irq_svc+0x38/0x60) from [<c000e0e0>] > (default_idle+0x2c/0x34) > [<c000e0e0>] (default_idle+0x2c/0x34) from [<c000e27c>] > (cpu_idle+0x78/0xd8) > [<c000e27c>] (cpu_idle+0x78/0xd8) from [<c03a070c>] > (start_kernel+0x280/0x2d0) > Code: bad PC value > ---[ end trace f65db9c681fbd6e3 ]--- > Kernel panic - not syncing: Fatal exception in interrupt > > > > Regards > > Ludovic > > After bisection the commit causing this issue is: commit 8bdc81c5069e43755d6e59e5e990e21ca200e8e2 Author: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Date: Mon May 7 19:56:53 2012 +0300 jffs2: get rid of jffs2_sync_super Currently JFFS2 file-system maps the VFS "superblock" abstraction to the write-buffer. Namely, it uses VFS services to synchronize the write-buffer periodically. The whole "superblock write-out" VFS infrastructure is served by the 'sync_supers()' kernel thread, which wakes up every 5 (by default) seconds and writes out all dirty superblock using the '->write_super()' call-back. But the problem with this thread is that it wastes power by waking up the system every 5 seconds no matter what. So we want to kill it completely and thus, we need to make file-systems to stop using the '->write_super' VFS service, and then remove it together with the kernel thread. This patch switches the JFFS2 write-buffer management from '->write_super()'/'->s_dirt' to a delayed work. Instead of setting the 's_dirt' flag we just schedule a delayed work for synchronizing the write-buffer. Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Once reverted my issue disappeared. Tests have been done on at91sam9m10g45. Regards Ludovic ^ permalink raw reply [flat|nested] 14+ messages in thread
* JFFS2 issue with v3.5.x and later on Atmel chips at least (was: Kernel oops since v3.5.x on Atmel chips) @ 2012-08-22 15:00 ` ludovic.desroches 0 siblings, 0 replies; 14+ messages in thread From: ludovic.desroches @ 2012-08-22 15:00 UTC (permalink / raw) To: linux-arm-kernel Le 08/22/2012 12:28 PM, ludovic.desroches a ?crit : > Hi, > > Doing some tests with the help of Lava (a Linaro tool), I get some > kernel oops with 3.5.x on several chips at91sam9260, at91sam9261 and > at91sam9m10g45. > > Most of the time the oops comes from the cascade BUG() call in > kernel/timer.c but sometimes it comes from a bad PC value. > > With Lava, I got the crash each time. It happens after mounting a mtd > partition, copying a file from it, removing this file from the flash > memory and then unmounting the mtd partition. > > I couldn't reproduce manually this issue so maybe there is something > related to time... > > Here I paste the usual oops and the one with the bad PC value: > > Starting kernel ... > > Uncompressing Linux... done, booting the kernel. > Booting Linux on physical CPU 0 > Linux version 3.5.0 (ldesroches at ibiza) (gcc version 4.6.1 (Ubuntu/Linaro > 4.6.1-9ubuntu3) ) #10 Wed Aug 22 09:17:23 CEST 2012 > CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177 > CPU: VIVT data cache, VIVT instruction cache > Machine: Atmel AT91SAM9260-EK > Memory policy: ECC disabled, Data cache writeback > AT91: Detected soc type: at91sam9260 > AT91: Detected soc subtype: Unknown > AT91: sram at 0x2ff000 of 0x2000 mapped at 0xfef76000 > Clocks: CPU 198 MHz, master 99 MHz, main 18.432 MHz > Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256 > Kernel command line: mem=64M console=ttyS0,115200 > mtdparts=atmel_nand:4M(bootstrap/uboot/kernel)ro,70M(rootfs),-(data) > root=/dev/mtdblock1 rw rootfstype=jffs2 ip=192.168.1.16:::255.255.255.0::: > PID hash table entries: 256 (order: -2, 1024 bytes) > Dentry cache hash table entries: 8192 (order: 3, 32768 bytes) > Inode-cache hash table entries: 4096 (order: 2, 16384 bytes) > Memory: 64MB = 64MB total > Memory: 60848k/60848k available, 4688k reserved, 0K highmem > Virtual kernel memory layout: > vector : 0xffff0000 - 0xffff1000 ( 4 kB) > fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) > vmalloc : 0xc4800000 - 0xff000000 ( 936 MB) > lowmem : 0xc0000000 - 0xc4000000 ( 64 MB) > modules : 0xbf000000 - 0xc0000000 ( 16 MB) > .text : 0xc0008000 - 0xc039fee8 (3680 kB) > .init : 0xc03a0000 - 0xc03bd7c4 ( 118 kB) > .data : 0xc03be000 - 0xc03e8f00 ( 172 kB) > .bss : 0xc03e8f24 - 0xc03fb138 ( 73 kB) > NR_IRQS:192 > AT91: 96 gpio irqs in 3 banks > sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every > 4294967286ms > Console: colour dummy device 80x30 > Calibrating delay loop... 98.71 BogoMIPS (lpj=493568) > pid_max: default: 32768 minimum: 301 > Mount-cache hash table entries: 512 > CPU: Testing write buffer coherency: ok > Setting up static identity map for 0x202af150 - 0x202af1a8 > devtmpfs: initialized > NET: Registered protocol family 16 > AT91: Power Management (with slow clock mode) > AT91: Starting after software reset > bio: create slab <bio-0> at 0 > SCSI subsystem initialized > usbcore: registered new interface driver usbfs > usbcore: registered new interface driver hub > usbcore: registered new device driver usb > Advanced Linux Sound Architecture Driver Version 1.0.25. > Switching to clocksource pit > cfg80211: Calling CRDA to update world regulatory domain > NET: Registered protocol family 2 > IP route cache hash table entries: 1024 (order: 0, 4096 bytes) > TCP established hash table entries: 2048 (order: 2, 16384 bytes) > TCP bind hash table entries: 2048 (order: 1, 8192 bytes) > TCP: Hash tables configured (established 2048 bind 2048) > TCP: reno registered > UDP hash table entries: 256 (order: 0, 4096 bytes) > UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) > NET: Registered protocol family 1 > RPC: Registered named UNIX socket transport module. > RPC: Registered udp transport module. > RPC: Registered tcp transport module. > RPC: Registered tcp NFSv4.1 backchannel transport module. > jffs2: version 2.2. (NAND) (SUMMARY) ? 2001-2006 Red Hat, Inc. > msgmni has been set to 118 > io scheduler noop registered (default) > atmel_usart.0: ttyS0 at MMIO 0xfffff200 (irq = 1) is a ATMEL_SERIAL > console [ttyS0] enabled > atmel_usart.1: ttyS1 at MMIO 0xfffb0000 (irq = 6) is a ATMEL_SERIAL > atmel_usart.2: ttyS2 at MMIO 0xfffb4000 (irq = 7) is a ATMEL_SERIAL > brd: module loaded > loop: module loaded > atmel_nand: Use On Flash BBT > atmel_nand atmel_nand: No DMA support for NAND access. > NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB > 3,3V 8-bit), page size: 2048, OOB size: 64 > Bad block table found at page 131008, version 0x01 > Bad block table found at page 130944, version 0x01 > nand_read_bbt: bad block at 0x000009840000 > nand_read_bbt: bad block at 0x00000fb80000 > 3 cmdlinepart partitions found on MTD device atmel_nand > Creating 3 MTD partitions on "atmel_nand": > 0x000000000000-0x000000400000 : "bootstrap/uboot/kernel" > 0x000000400000-0x000004a00000 : "rootfs" > 0x000004a00000-0x000010000000 : "data" > MACB_mii_bus: probed > macb macb: eth0: Cadence MACB at 0xfffc4000 irq 21 (3a:1f:34:08:54:54) > macb macb: eth0: attached PHY driver [Davicom DM9161A] > (mii_bus:phy_addr=macb-ffffffff:00, irq=-1) > ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver > at91_ohci at91_ohci: can't request overcurrent gpio 0 > at91_ohci at91_ohci: AT91 OHCI > at91_ohci at91_ohci: new USB bus registered, assigned bus number 1 > at91_ohci at91_ohci: irq 20, io mem 0x00500000 > usb usb1: New USB device found, idVendor=1d6b, idProduct=0001 > usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 > usb usb1: Product: AT91 OHCI > usb usb1: Manufacturer: Linux 3.5.0 ohci_hcd > usb usb1: SerialNumber: at91 > hub 1-0:1.0: USB hub found > hub 1-0:1.0: 2 ports detected > usbcore: registered new interface driver cdc_acm > cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters > Initializing USB Mass Storage driver... > usbcore: registered new interface driver usb-storage > USB Mass Storage support registered. > mousedev: PS/2 mouse device common for all mice > TCP: cubic registered > NET: Registered protocol family 17 > lib80211: common routines for IEEE802.11 drivers > VFP support v0.3: not present > input: gpio-keys as /devices/platform/gpio-keys/input/input0 > /home/ldesroches/workspace/linux/drivers/rtc/hctosys.c: unable to open > rtc device (rtc0) > IP-Config: Complete: > device=eth0, addr=192.168.1.16, mask=255.255.255.0, > gw=255.255.255.255 > host=192.168.1.16, domain=, nis-domain=(none) > bootserver=255.255.255.255, rootserver=255.255.255.255, rootpath= > ALSA device list: > No soundcards found. > macb macb: eth0: link up (100/Full) > jffs2: Empty flash at 0x01fb1c68 ends at 0x01fb2000 > VFS: Mounted root (jffs2 filesystem) on device 31:1. > devtmpfs: mounted > Freeing init memory: 116K > Starting logging: OK > Populating using udev: udevd[468]: starting version 182 > done > Starting portmap: done > Initializing random number generator... done. > Starting network... > ip: RTNETLINK answers: File exists > Starting sshd: OK > > Welcome to Buildroot > at91 login: root > [root at at91 ~]# > [root at at91 ~]# > [root at at91 ~]# export PS1="$PS1 [rc=$(echo \$?)]: " > [root at at91 ~]# [rc=0]: mount -t jffs2 /dev/mtdblock2 /mnt/ > jffs2: Empty flash at 0x01fb1c68 ends at 0x01fb2000 > o_at91_lava/tmp [rc=0]: rm -rf /tmp/lava_results.tgz > /tmp//srv/lava/instances/rf > [root at at91 ~]# [rc=0]: mkdir -p /tmp//srv/lava/instances/rfo_at91_lava/tmp > tmp//srv/lava/instances/rfo_at91_lava/tmp/instances/rfo_at91_lava/tmp/*.bundle > / > eroot at at91 ~]# [rc=0]: rm -f > /mnt//srv/lava/instances/rfo_at91_lava/tmp/*.bundl > [root at at91 ~]# [rc=0]: umount /mnt/ > [root at at91 ~]# [rc=0]: ------------[ cut here ]------------ > kernel BUG at /home/ldesroches/workspace/linux/kernel/timer.c:1091! > Internal error: Oops - BUG: 0 [#1] ARM > Modules linked in: > CPU: 0 Not tainted (3.5.0 #10) > PC is at cascade+0x54/0x78 > LR is at cascade+0x60/0x78 > pc : [<c0023c80>] lr : [<c0023c8c>] psr: a0000093 > sp : c03bfec8 ip : ffffae00 fp : 00000000 > r10: c03ee540 r9 : 0000000a r8 : 00000100 > r7 : c03bfec8 r6 : c03bfec8 r5 : 0000002e r4 : c03ee6a0 > r3 : 00000000 r2 : 00000068 r1 : c3a60738 r0 : c03ee9ec > Flags: NzCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel > Control: 0005317f Table: 23a58000 DAC: 00000017 > Process swapper (pid: 0, stack limit = 0xc03be270) > Stack: (0xc03bfec8 to 0xc03c0000) > fec0: c03faf70 c3a60738 0000002e c03ee6a0 c03be000 > 00000000 > fee0: c03ee560 c0023d98 c0145bc4 c3952ba0 00000000 00000000 c03cddf4 > 00000001 > ff00: 00000004 c03be000 c03ee560 00000100 c03ee540 c001f4b0 000027da > c03cddf4 > ff20: 00000000 00000001 c03bff9c 00000001 00000000 fefff000 c03bff9c > 20004000 > ff40: 41069265 203b834c 00000000 c001f890 fefff000 c000dfc8 c000e0cc > c000e0e0 > ff60: a0000013 c000d398 00000000 0005317f 0005217f a0000013 c03be000 > c03c8f54 > ff80: c03e8fe8 c047c300 20004000 41069265 203b834c 00000000 a00000d3 > c03bffb0 > ffa0: c000e0cc c000e0e0 a0000013 ffffffff c000e0b4 c000e27c c03c60b0 > ffffffff > ffc0: c03b9784 c03a070c ffffffff ffffffff c03a0274 00000000 00000000 > c03b9784 > ffe0: 00000000 00053175 c03c603c c03b9780 c03c8f4c 20008040 00000000 > 00000000 > [<c0023c80>] (cascade+0x54/0x78) from [<c0023d98>] > (run_timer_softirq+0x68/0x1f4) > [<c0023d98>] (run_timer_softirq+0x68/0x1f4) from [<c001f4b0>] > (__do_softirq+0x7c/0x110) > [<c001f4b0>] (__do_softirq+0x7c/0x110) from [<c001f890>] > (irq_exit+0x40/0x4c) > [<c001f890>] (irq_exit+0x40/0x4c) from [<c000dfc8>] (handle_IRQ+0x74/0x98) > [<c000dfc8>] (handle_IRQ+0x74/0x98) from [<c000d398>] (__irq_svc+0x38/0x60) > [<c000d398>] (__irq_svc+0x38/0x60) from [<c000e0e0>] > (default_idle+0x2c/0x34) > [<c000e0e0>] (default_idle+0x2c/0x34) from [<c000e27c>] > (cpu_idle+0x78/0xd8) > [<c000e27c>] (cpu_idle+0x78/0xd8) from [<c03a070c>] > (start_kernel+0x280/0x2d0) > Code: e591300c e3c33001 e1540003 0a000000 (e7f001f2) > ---[ end trace 6105dc3872c7de5d ]--- > Kernel panic - not syncing: Fatal exception in interrupt > > > > > > Starting kernel ... > > Uncompressing Linux... done, booting the kernel. > Booting Linux on physical CPU 0 > Linux version 3.5.0 (ldesroches at ibiza) (gcc version 4.6.1 (Ubuntu/Linaro > 4.6.1-9ubuntu3) ) #10 Wed Aug 22 09:17:23 CEST 2012 > CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177 > CPU: VIVT data cache, VIVT instruction cache > Machine: Atmel AT91SAM9260-EK > Memory policy: ECC disabled, Data cache writeback > AT91: Detected soc type: at91sam9260 > AT91: Detected soc subtype: Unknown > AT91: sram at 0x2ff000 of 0x2000 mapped at 0xfef76000 > Clocks: CPU 198 MHz, master 99 MHz, main 18.432 MHz > Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256 > Kernel command line: mem=64M console=ttyS0,115200 > mtdparts=atmel_nand:4M(bootstrap/uboot/kernel)ro,70M(rootfs),-(data) > root=/dev/mtdblock1 rw rootfstype=jffs2 ip=192.168.1.16:::255.255.255.0::: > PID hash table entries: 256 (order: -2, 1024 bytes) > Dentry cache hash table entries: 8192 (order: 3, 32768 bytes) > Inode-cache hash table entries: 4096 (order: 2, 16384 bytes) > Memory: 64MB = 64MB total > Memory: 60848k/60848k available, 4688k reserved, 0K highmem > Virtual kernel memory layout: > vector : 0xffff0000 - 0xffff1000 ( 4 kB) > fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) > vmalloc : 0xc4800000 - 0xff000000 ( 936 MB) > lowmem : 0xc0000000 - 0xc4000000 ( 64 MB) > modules : 0xbf000000 - 0xc0000000 ( 16 MB) > .text : 0xc0008000 - 0xc039fee8 (3680 kB) > .init : 0xc03a0000 - 0xc03bd7c4 ( 118 kB) > .data : 0xc03be000 - 0xc03e8f00 ( 172 kB) > .bss : 0xc03e8f24 - 0xc03fb138 ( 73 kB) > NR_IRQS:192 > AT91: 96 gpio irqs in 3 banks > sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every > 4294967286ms > Console: colour dummy device 80x30 > Calibrating delay loop... 98.71 BogoMIPS (lpj=493568) > pid_max: default: 32768 minimum: 301 > Mount-cache hash table entries: 512 > CPU: Testing write buffer coherency: ok > Setting up static identity map for 0x202af150 - 0x202af1a8 > devtmpfs: initialized > NET: Registered protocol family 16 > AT91: Power Management (with slow clock mode) > AT91: Starting after software reset > bio: create slab <bio-0> at 0 > SCSI subsystem initialized > usbcore: registered new interface driver usbfs > usbcore: registered new interface driver hub > usbcore: registered new device driver usb > Advanced Linux Sound Architecture Driver Version 1.0.25. > Switching to clocksource pit > cfg80211: Calling CRDA to update world regulatory domain > NET: Registered protocol family 2 > IP route cache hash table entries: 1024 (order: 0, 4096 bytes) > TCP established hash table entries: 2048 (order: 2, 16384 bytes) > TCP bind hash table entries: 2048 (order: 1, 8192 bytes) > TCP: Hash tables configured (established 2048 bind 2048) > TCP: reno registered > UDP hash table entries: 256 (order: 0, 4096 bytes) > UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) > NET: Registered protocol family 1 > RPC: Registered named UNIX socket transport module. > RPC: Registered udp transport module. > RPC: Registered tcp transport module. > RPC: Registered tcp NFSv4.1 backchannel transport module. > jffs2: version 2.2. (NAND) (SUMMARY) ? 2001-2006 Red Hat, Inc. > msgmni has been set to 118 > io scheduler noop registered (default) > atmel_usart.0: ttyS0 at MMIO 0xfffff200 (irq = 1) is a ATMEL_SERIAL > console [ttyS0] enabled > atmel_usart.1: ttyS1 at MMIO 0xfffb0000 (irq = 6) is a ATMEL_SERIAL > atmel_usart.2: ttyS2 at MMIO 0xfffb4000 (irq = 7) is a ATMEL_SERIAL > brd: module loaded > loop: module loaded > atmel_nand: Use On Flash BBT > atmel_nand atmel_nand: No DMA support for NAND access. > NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB > 3,3V 8-bit), page size: 2048, OOB size: 64 > Bad block table found at page 131008, version 0x01 > Bad block table found at page 130944, version 0x01 > nand_read_bbt: bad block at 0x000009840000 > nand_read_bbt: bad block at 0x00000fb80000 > 3 cmdlinepart partitions found on MTD device atmel_nand > Creating 3 MTD partitions on "atmel_nand": > 0x000000000000-0x000000400000 : "bootstrap/uboot/kernel" > 0x000000400000-0x000004a00000 : "rootfs" > 0x000004a00000-0x000010000000 : "data" > MACB_mii_bus: probed > macb macb: eth0: Cadence MACB at 0xfffc4000 irq 21 (3a:1f:34:08:54:54) > macb macb: eth0: attached PHY driver [Davicom DM9161A] > (mii_bus:phy_addr=macb-ffffffff:00, irq=-1) > ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver > at91_ohci at91_ohci: can't request overcurrent gpio 0 > at91_ohci at91_ohci: AT91 OHCI > at91_ohci at91_ohci: new USB bus registered, assigned bus number 1 > at91_ohci at91_ohci: irq 20, io mem 0x00500000 > usb usb1: New USB device found, idVendor=1d6b, idProduct=0001 > usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 > usb usb1: Product: AT91 OHCI > usb usb1: Manufacturer: Linux 3.5.0 ohci_hcd > usb usb1: SerialNumber: at91 > hub 1-0:1.0: USB hub found > hub 1-0:1.0: 2 ports detected > usbcore: registered new interface driver cdc_acm > cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters > Initializing USB Mass Storage driver... > usbcore: registered new interface driver usb-storage > USB Mass Storage support registered. > mousedev: PS/2 mouse device common for all mice > TCP: cubic registered > NET: Registered protocol family 17 > lib80211: common routines for IEEE802.11 drivers > VFP support v0.3: not present > input: gpio-keys as /devices/platform/gpio-keys/input/input0 > /home/ldesroches/workspace/linux/drivers/rtc/hctosys.c: unable to open > rtc device (rtc0) > IP-Config: Complete: > device=eth0, addr=192.168.1.16, mask=255.255.255.0, > gw=255.255.255.255 > host=192.168.1.16, domain=, nis-domain=(none) > bootserver=255.255.255.255, rootserver=255.255.255.255, rootpath= > ALSA device list: > No soundcards found. > macb macb: eth0: link up (100/Full) > jffs2: Empty flash at 0x01fb1c68 ends at 0x01fb2000 > VFS: Mounted root (jffs2 filesystem) on device 31:1. > devtmpfs: mounted > Freeing init memory: 116K > Starting logging: OK > Populating using udev: done > udevd[468]: starting version 182 > Starting portmap: done > Initializing random number generator... done. > Starting network... > ip: RTNETLINK answers: File exists > Starting sshd: OK > > Welcome to Buildroot > at91 login: root > [root at at91 ~]# > [root at at91 ~]# > [root at at91 ~]# export PS1="$PS1 [rc=$(echo \$?)]: " > [root at at91 ~]# [rc=0]: mount -t jffs2 /dev/mtdblock2 /mnt/ > jffs2: Empty flash at 0x01fb1c68 ends at 0x01fb2000 > o_at91_lava/tmp [rc=0]: rm -rf /tmp/lava_results.tgz > /tmp//srv/lava/instances/rf > [root at at91 ~]# [rc=0]: mkdir -p /tmp//srv/lava/instances/rfo_at91_lava/tmp > tmp//srv/lava/instances/rfo_at91_lava/tmp/instances/rfo_at91_lava/tmp/*.bundle > / > eroot at at91 ~]# [rc=0]: rm -f > /mnt//srv/lava/instances/rfo_at91_lava/tmp/*.bundl > [root at at91 ~]# [rc=0]: umount /mnt/ > [root at at91 ~]# [rc=0]: Unable to handle kernel paging request at > virtual address 0d0c951c > pgd = c0004000 > [0d0c951c] *pgd=00000000 > Internal error: Oops: 80000005 [#1] ARM > Modules linked in: > CPU: 0 Not tainted (3.5.0 #10) > PC is at 0xd0c951c > LR is at run_timer_softirq+0x144/0x1f4 > pc : [<0d0c951c>] lr : [<c0023e74>] psr: 20000013 > sp : c03bfee8 ip : 00200200 fp : 00000000 > r10: 0d0c951c r9 : 0000000a r8 : c03bfef0 > r7 : c03ee560 r6 : 00000100 r5 : c03be000 r4 : c03ee6a0 > r3 : 20000013 r2 : 00000000 r1 : c03bfef0 r0 : b5a01535 > Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel > Control: 0005317f Table: 23a58000 DAC: 00000017 > Process swapper (pid: 0, stack limit = 0xc03be270) > Stack: (0xc03bfee8 to 0xc03c0000) > fee0: c0145bc4 c396dba0 c03bfef0 c03bfef0 c03cddf4 > 00000001 > ff00: 00000004 c03be000 c03ee560 00000100 c03ee540 c001f4b0 00002870 > c03cddf4 > ff20: 00000000 00000001 c03bff9c 00000001 00000000 fefff000 c03bff9c > 20004000 > ff40: 41069265 203b834c 00000000 c001f890 fefff000 c000dfc8 c000e0cc > c000e0e0 > ff60: a0000013 c000d398 00000000 0005317f 0005217f a0000013 c03be000 > c03c8f54 > ff80: c03e8fe8 c047c300 20004000 41069265 203b834c 00000000 a00000d3 > c03bffb0 > ffa0: c000e0cc c000e0e0 a0000013 ffffffff c000e0b4 c000e27c c03c60b0 > ffffffff > ffc0: c03b9784 c03a070c ffffffff ffffffff c03a0274 00000000 00000000 > c03b9784 > ffe0: 00000000 00053175 c03c603c c03b9780 c03c8f4c 20008040 00000000 > 00000000 > [<c0023e74>] (run_timer_softirq+0x144/0x1f4) from [<c001f4b0>] > (__do_softirq+0x7c/0x110) > [<c001f4b0>] (__do_softirq+0x7c/0x110) from [<c001f890>] > (irq_exit+0x40/0x4c) > [<c001f890>] (irq_exit+0x40/0x4c) from [<c000dfc8>] (handle_IRQ+0x74/0x98) > [<c000dfc8>] (handle_IRQ+0x74/0x98) from [<c000d398>] (__irq_svc+0x38/0x60) > [<c000d398>] (__irq_svc+0x38/0x60) from [<c000e0e0>] > (default_idle+0x2c/0x34) > [<c000e0e0>] (default_idle+0x2c/0x34) from [<c000e27c>] > (cpu_idle+0x78/0xd8) > [<c000e27c>] (cpu_idle+0x78/0xd8) from [<c03a070c>] > (start_kernel+0x280/0x2d0) > Code: bad PC value > ---[ end trace f65db9c681fbd6e3 ]--- > Kernel panic - not syncing: Fatal exception in interrupt > > > > Regards > > Ludovic > > After bisection the commit causing this issue is: commit 8bdc81c5069e43755d6e59e5e990e21ca200e8e2 Author: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Date: Mon May 7 19:56:53 2012 +0300 jffs2: get rid of jffs2_sync_super Currently JFFS2 file-system maps the VFS "superblock" abstraction to the write-buffer. Namely, it uses VFS services to synchronize the write-buffer periodically. The whole "superblock write-out" VFS infrastructure is served by the 'sync_supers()' kernel thread, which wakes up every 5 (by default) seconds and writes out all dirty superblock using the '->write_super()' call-back. But the problem with this thread is that it wastes power by waking up the system every 5 seconds no matter what. So we want to kill it completely and thus, we need to make file-systems to stop using the '->write_super' VFS service, and then remove it together with the kernel thread. This patch switches the JFFS2 write-buffer management from '->write_super()'/'->s_dirt' to a delayed work. Instead of setting the 's_dirt' flag we just schedule a delayed work for synchronizing the write-buffer. Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Once reverted my issue disappeared. Tests have been done on at91sam9m10g45. Regards Ludovic ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: JFFS2 issue with v3.5.x and later on Atmel chips at least (was: Kernel oops since v3.5.x on Atmel chips) 2012-08-22 15:00 ` ludovic.desroches (?) @ 2012-08-23 6:35 ` Artem Bityutskiy -1 siblings, 0 replies; 14+ messages in thread From: Artem Bityutskiy @ 2012-08-23 6:35 UTC (permalink / raw) To: ludovic.desroches Cc: Jean-Christophe PLAGNIOL-VILLARD, linux-mtd, Linux Kernel list, linux-arm-kernel@lists.infradead.org, Nicolas Ferre [-- Attachment #1: Type: text/plain, Size: 429 bytes --] On Wed, 2012-08-22 at 17:00 +0200, ludovic.desroches wrote: > After bisection the commit causing this issue is: > > commit 8bdc81c5069e43755d6e59e5e990e21ca200e8e2 > Author: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> > Date: Mon May 7 19:56:53 2012 +0300 > > jffs2: get rid of jffs2_sync_super Thanks Ludovic for bisecting the issue, I'll take a look at this. -- Best Regards, Artem Bityutskiy [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: JFFS2 issue with v3.5.x and later on Atmel chips at least (was: Kernel oops since v3.5.x on Atmel chips) @ 2012-08-23 6:35 ` Artem Bityutskiy 0 siblings, 0 replies; 14+ messages in thread From: Artem Bityutskiy @ 2012-08-23 6:35 UTC (permalink / raw) To: ludovic.desroches Cc: Linux Kernel list, linux-arm-kernel@lists.infradead.org, linux-mtd, Jean-Christophe PLAGNIOL-VILLARD, Nicolas Ferre [-- Attachment #1: Type: text/plain, Size: 429 bytes --] On Wed, 2012-08-22 at 17:00 +0200, ludovic.desroches wrote: > After bisection the commit causing this issue is: > > commit 8bdc81c5069e43755d6e59e5e990e21ca200e8e2 > Author: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> > Date: Mon May 7 19:56:53 2012 +0300 > > jffs2: get rid of jffs2_sync_super Thanks Ludovic for bisecting the issue, I'll take a look at this. -- Best Regards, Artem Bityutskiy [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 14+ messages in thread
* JFFS2 issue with v3.5.x and later on Atmel chips at least (was: Kernel oops since v3.5.x on Atmel chips) @ 2012-08-23 6:35 ` Artem Bityutskiy 0 siblings, 0 replies; 14+ messages in thread From: Artem Bityutskiy @ 2012-08-23 6:35 UTC (permalink / raw) To: linux-arm-kernel On Wed, 2012-08-22 at 17:00 +0200, ludovic.desroches wrote: > After bisection the commit causing this issue is: > > commit 8bdc81c5069e43755d6e59e5e990e21ca200e8e2 > Author: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> > Date: Mon May 7 19:56:53 2012 +0300 > > jffs2: get rid of jffs2_sync_super Thanks Ludovic for bisecting the issue, I'll take a look at this. -- Best Regards, Artem Bityutskiy -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 836 bytes Desc: This is a digitally signed message part URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20120823/f501db9f/attachment.sig> ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: JFFS2 issue with v3.5.x and later on Atmel chips at least (was: Kernel oops since v3.5.x on Atmel chips) 2012-08-22 15:00 ` ludovic.desroches (?) @ 2012-08-23 7:41 ` Artem Bityutskiy -1 siblings, 0 replies; 14+ messages in thread From: Artem Bityutskiy @ 2012-08-23 7:41 UTC (permalink / raw) To: ludovic.desroches Cc: Jean-Christophe PLAGNIOL-VILLARD, linux-mtd, Linux Kernel list, linux-arm-kernel@lists.infradead.org, Nicolas Ferre [-- Attachment #1.1: Type: text/plain, Size: 1534 bytes --] From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Date: Thu, 23 Aug 2012 10:10:07 +0300 Subject: [PATCH] JFFS2: fix unmount regression This patch fixes regression introduced by "8bdc81c jffs2: get rid of jffs2_sync_super". We submit a delayed work in order to make sure the write-buffer is synchronized at some point. But we do not flush it when we unmount, which causes an oops when we unmount the file-system and then the delayed work is executed. This patch fixes the issue by adding a "cancel_delayed_work_sync()" infocation in the '->sync_fs()' handler. This will make sure the delayed work is canceled on sync, unmount and re-mount. And because VFS always callse 'sync_fs()' before unmounting or remounting, this fixes the issue. Reported-by: Ludovic Desroches <ludovic.desroches@atmel.com> Cc: stable@vger.kernel.org [3.5+] Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> --- Ludovic, would you please give this patch a test? Also attached. fs/jffs2/super.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fs/jffs2/super.c b/fs/jffs2/super.c index 61ea413..e385fa3 100644 --- a/fs/jffs2/super.c +++ b/fs/jffs2/super.c @@ -100,6 +100,9 @@ static int jffs2_sync_fs(struct super_block *sb, int wait) { struct jffs2_sb_info *c = JFFS2_SB_INFO(sb); + if (IS_ENABLED(CONFIG_JFFS2_FS_WRITEBUFFER)) + cancel_delayed_work_sync(&c->wbuf_dwork); + mutex_lock(&c->alloc_sem); jffs2_flush_wbuf_pad(c); mutex_unlock(&c->alloc_sem); -- 1.7.10.4 [-- Attachment #1.2: 0001-JFFS2-fix-unmount-regression.patch --] [-- Type: text/x-patch, Size: 1538 bytes --] From 2f1554d01f7db58631f9da7dd19a7254d1096feb Mon Sep 17 00:00:00 2001 From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Date: Thu, 23 Aug 2012 10:10:07 +0300 Subject: [PATCH] JFFS2: fix unmount regression This patch fixes regression introduced by "8bdc81c jffs2: get rid of jffs2_sync_super". We submit a delayed work in order to make sure the write-buffer is synchronized at some point. But we do not flush it when we unmount, which causes an oops when we unmount the file-system and then the delayed work is executed. This patch fixes the issue by adding a "cancel_delayed_work_sync()" infocation in the '->sync_fs()' handler. This will make sure the delayed work is canceled on sync, unmount and re-mount. And because VFS always callse 'sync_fs()' before unmounting or remounting, this fixes the issue. Reported-by: Ludovic Desroches <ludovic.desroches@atmel.com> Cc: stable@vger.kernel.org [3.5+] Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> --- fs/jffs2/super.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fs/jffs2/super.c b/fs/jffs2/super.c index 61ea413..e385fa3 100644 --- a/fs/jffs2/super.c +++ b/fs/jffs2/super.c @@ -100,6 +100,9 @@ static int jffs2_sync_fs(struct super_block *sb, int wait) { struct jffs2_sb_info *c = JFFS2_SB_INFO(sb); + if (IS_ENABLED(CONFIG_JFFS2_FS_WRITEBUFFER)) + cancel_delayed_work_sync(&c->wbuf_dwork); + mutex_lock(&c->alloc_sem); jffs2_flush_wbuf_pad(c); mutex_unlock(&c->alloc_sem); -- 1.7.10.4 [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: JFFS2 issue with v3.5.x and later on Atmel chips at least (was: Kernel oops since v3.5.x on Atmel chips) @ 2012-08-23 7:41 ` Artem Bityutskiy 0 siblings, 0 replies; 14+ messages in thread From: Artem Bityutskiy @ 2012-08-23 7:41 UTC (permalink / raw) To: ludovic.desroches Cc: Linux Kernel list, linux-arm-kernel@lists.infradead.org, linux-mtd, Jean-Christophe PLAGNIOL-VILLARD, Nicolas Ferre [-- Attachment #1.1: Type: text/plain, Size: 1534 bytes --] From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Date: Thu, 23 Aug 2012 10:10:07 +0300 Subject: [PATCH] JFFS2: fix unmount regression This patch fixes regression introduced by "8bdc81c jffs2: get rid of jffs2_sync_super". We submit a delayed work in order to make sure the write-buffer is synchronized at some point. But we do not flush it when we unmount, which causes an oops when we unmount the file-system and then the delayed work is executed. This patch fixes the issue by adding a "cancel_delayed_work_sync()" infocation in the '->sync_fs()' handler. This will make sure the delayed work is canceled on sync, unmount and re-mount. And because VFS always callse 'sync_fs()' before unmounting or remounting, this fixes the issue. Reported-by: Ludovic Desroches <ludovic.desroches@atmel.com> Cc: stable@vger.kernel.org [3.5+] Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> --- Ludovic, would you please give this patch a test? Also attached. fs/jffs2/super.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fs/jffs2/super.c b/fs/jffs2/super.c index 61ea413..e385fa3 100644 --- a/fs/jffs2/super.c +++ b/fs/jffs2/super.c @@ -100,6 +100,9 @@ static int jffs2_sync_fs(struct super_block *sb, int wait) { struct jffs2_sb_info *c = JFFS2_SB_INFO(sb); + if (IS_ENABLED(CONFIG_JFFS2_FS_WRITEBUFFER)) + cancel_delayed_work_sync(&c->wbuf_dwork); + mutex_lock(&c->alloc_sem); jffs2_flush_wbuf_pad(c); mutex_unlock(&c->alloc_sem); -- 1.7.10.4 [-- Attachment #1.2: 0001-JFFS2-fix-unmount-regression.patch --] [-- Type: text/x-patch, Size: 1538 bytes --] From 2f1554d01f7db58631f9da7dd19a7254d1096feb Mon Sep 17 00:00:00 2001 From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Date: Thu, 23 Aug 2012 10:10:07 +0300 Subject: [PATCH] JFFS2: fix unmount regression This patch fixes regression introduced by "8bdc81c jffs2: get rid of jffs2_sync_super". We submit a delayed work in order to make sure the write-buffer is synchronized at some point. But we do not flush it when we unmount, which causes an oops when we unmount the file-system and then the delayed work is executed. This patch fixes the issue by adding a "cancel_delayed_work_sync()" infocation in the '->sync_fs()' handler. This will make sure the delayed work is canceled on sync, unmount and re-mount. And because VFS always callse 'sync_fs()' before unmounting or remounting, this fixes the issue. Reported-by: Ludovic Desroches <ludovic.desroches@atmel.com> Cc: stable@vger.kernel.org [3.5+] Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> --- fs/jffs2/super.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fs/jffs2/super.c b/fs/jffs2/super.c index 61ea413..e385fa3 100644 --- a/fs/jffs2/super.c +++ b/fs/jffs2/super.c @@ -100,6 +100,9 @@ static int jffs2_sync_fs(struct super_block *sb, int wait) { struct jffs2_sb_info *c = JFFS2_SB_INFO(sb); + if (IS_ENABLED(CONFIG_JFFS2_FS_WRITEBUFFER)) + cancel_delayed_work_sync(&c->wbuf_dwork); + mutex_lock(&c->alloc_sem); jffs2_flush_wbuf_pad(c); mutex_unlock(&c->alloc_sem); -- 1.7.10.4 [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply related [flat|nested] 14+ messages in thread
* JFFS2 issue with v3.5.x and later on Atmel chips at least (was: Kernel oops since v3.5.x on Atmel chips) @ 2012-08-23 7:41 ` Artem Bityutskiy 0 siblings, 0 replies; 14+ messages in thread From: Artem Bityutskiy @ 2012-08-23 7:41 UTC (permalink / raw) To: linux-arm-kernel From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Date: Thu, 23 Aug 2012 10:10:07 +0300 Subject: [PATCH] JFFS2: fix unmount regression This patch fixes regression introduced by "8bdc81c jffs2: get rid of jffs2_sync_super". We submit a delayed work in order to make sure the write-buffer is synchronized at some point. But we do not flush it when we unmount, which causes an oops when we unmount the file-system and then the delayed work is executed. This patch fixes the issue by adding a "cancel_delayed_work_sync()" infocation in the '->sync_fs()' handler. This will make sure the delayed work is canceled on sync, unmount and re-mount. And because VFS always callse 'sync_fs()' before unmounting or remounting, this fixes the issue. Reported-by: Ludovic Desroches <ludovic.desroches@atmel.com> Cc: stable at vger.kernel.org [3.5+] Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> --- Ludovic, would you please give this patch a test? Also attached. fs/jffs2/super.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fs/jffs2/super.c b/fs/jffs2/super.c index 61ea413..e385fa3 100644 --- a/fs/jffs2/super.c +++ b/fs/jffs2/super.c @@ -100,6 +100,9 @@ static int jffs2_sync_fs(struct super_block *sb, int wait) { struct jffs2_sb_info *c = JFFS2_SB_INFO(sb); + if (IS_ENABLED(CONFIG_JFFS2_FS_WRITEBUFFER)) + cancel_delayed_work_sync(&c->wbuf_dwork); + mutex_lock(&c->alloc_sem); jffs2_flush_wbuf_pad(c); mutex_unlock(&c->alloc_sem); -- 1.7.10.4 -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-JFFS2-fix-unmount-regression.patch Type: text/x-patch Size: 1538 bytes Desc: not available URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20120823/238e9a92/attachment.bin> -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 836 bytes Desc: This is a digitally signed message part URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20120823/238e9a92/attachment.sig> ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: JFFS2 issue with v3.5.x and later on Atmel chips at least 2012-08-23 7:41 ` Artem Bityutskiy @ 2012-08-23 9:05 ` ludovic.desroches -1 siblings, 0 replies; 14+ messages in thread From: ludovic.desroches @ 2012-08-23 9:05 UTC (permalink / raw) To: artem.bityutskiy Cc: Nicolas Ferre, Linux Kernel list, ludovic.desroches, linux-mtd, Jean-Christophe PLAGNIOL-VILLARD, linux-arm-kernel@lists.infradead.org Hi Artem, Le 08/23/2012 09:41 AM, Artem Bityutskiy a écrit : > From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> > Date: Thu, 23 Aug 2012 10:10:07 +0300 > Subject: [PATCH] JFFS2: fix unmount regression > > This patch fixes regression introduced by > "8bdc81c jffs2: get rid of jffs2_sync_super". We submit a delayed work in order > to make sure the write-buffer is synchronized at some point. But we do not > flush it when we unmount, which causes an oops when we unmount the file-system > and then the delayed work is executed. > > This patch fixes the issue by adding a "cancel_delayed_work_sync()" infocation > in the '->sync_fs()' handler. This will make sure the delayed work is canceled > on sync, unmount and re-mount. And because VFS always callse 'sync_fs()' before > unmounting or remounting, this fixes the issue. > > Reported-by: Ludovic Desroches <ludovic.desroches@atmel.com> > Cc: stable@vger.kernel.org [3.5+] > Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> > --- > > Ludovic, would you please give this patch a test? Also attached. > Thanks for your reactivity. I tested your patch on sam9m10g45 with 3.5 and 3.5.2 and it fixes the issue. Tested-by: Ludovic Desroches <ludovic.desroches@atmel.com> > fs/jffs2/super.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/fs/jffs2/super.c b/fs/jffs2/super.c > index 61ea413..e385fa3 100644 > --- a/fs/jffs2/super.c > +++ b/fs/jffs2/super.c > @@ -100,6 +100,9 @@ static int jffs2_sync_fs(struct super_block *sb, int wait) > { > struct jffs2_sb_info *c = JFFS2_SB_INFO(sb); > > + if (IS_ENABLED(CONFIG_JFFS2_FS_WRITEBUFFER)) > + cancel_delayed_work_sync(&c->wbuf_dwork); > + > mutex_lock(&c->alloc_sem); > jffs2_flush_wbuf_pad(c); > mutex_unlock(&c->alloc_sem); > ^ permalink raw reply [flat|nested] 14+ messages in thread
* JFFS2 issue with v3.5.x and later on Atmel chips at least @ 2012-08-23 9:05 ` ludovic.desroches 0 siblings, 0 replies; 14+ messages in thread From: ludovic.desroches @ 2012-08-23 9:05 UTC (permalink / raw) To: linux-arm-kernel Hi Artem, Le 08/23/2012 09:41 AM, Artem Bityutskiy a ?crit : > From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> > Date: Thu, 23 Aug 2012 10:10:07 +0300 > Subject: [PATCH] JFFS2: fix unmount regression > > This patch fixes regression introduced by > "8bdc81c jffs2: get rid of jffs2_sync_super". We submit a delayed work in order > to make sure the write-buffer is synchronized at some point. But we do not > flush it when we unmount, which causes an oops when we unmount the file-system > and then the delayed work is executed. > > This patch fixes the issue by adding a "cancel_delayed_work_sync()" infocation > in the '->sync_fs()' handler. This will make sure the delayed work is canceled > on sync, unmount and re-mount. And because VFS always callse 'sync_fs()' before > unmounting or remounting, this fixes the issue. > > Reported-by: Ludovic Desroches <ludovic.desroches@atmel.com> > Cc: stable at vger.kernel.org [3.5+] > Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> > --- > > Ludovic, would you please give this patch a test? Also attached. > Thanks for your reactivity. I tested your patch on sam9m10g45 with 3.5 and 3.5.2 and it fixes the issue. Tested-by: Ludovic Desroches <ludovic.desroches@atmel.com> > fs/jffs2/super.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/fs/jffs2/super.c b/fs/jffs2/super.c > index 61ea413..e385fa3 100644 > --- a/fs/jffs2/super.c > +++ b/fs/jffs2/super.c > @@ -100,6 +100,9 @@ static int jffs2_sync_fs(struct super_block *sb, int wait) > { > struct jffs2_sb_info *c = JFFS2_SB_INFO(sb); > > + if (IS_ENABLED(CONFIG_JFFS2_FS_WRITEBUFFER)) > + cancel_delayed_work_sync(&c->wbuf_dwork); > + > mutex_lock(&c->alloc_sem); > jffs2_flush_wbuf_pad(c); > mutex_unlock(&c->alloc_sem); > ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: JFFS2 issue with v3.5.x and later on Atmel chips at least 2012-08-23 9:05 ` ludovic.desroches (?) @ 2012-08-23 12:37 ` Artem Bityutskiy -1 siblings, 0 replies; 14+ messages in thread From: Artem Bityutskiy @ 2012-08-23 12:37 UTC (permalink / raw) To: ludovic.desroches Cc: linux-mtd, Jean-Christophe PLAGNIOL-VILLARD, Nicolas Ferre, Linux Kernel list, linux-arm-kernel@lists.infradead.org [-- Attachment #1: Type: text/plain, Size: 1798 bytes --] On Thu, 2012-08-23 at 11:05 +0200, ludovic.desroches wrote: > > Tested-by: Ludovic Desroches <ludovic.desroches@atmel.com> Thanks, pushed to l2-mtd.git tree a bit modified patch. Will ping dwmw2 about merging it to Linus. From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Date: Thu, 23 Aug 2012 10:10:07 +0300 Subject: [PATCH] JFFS2: fix unmount regression This patch fixes regression introduced by "8bdc81c jffs2: get rid of jffs2_sync_super". We submit a delayed work in order to make sure the write-buffer is synchronized at some point. But we do not flush it when we unmount, which causes an oops when we unmount the file-system and then the delayed work is executed. This patch fixes the issue by adding a "cancel_delayed_work_sync()" infocation in the '->sync_fs()' handler. This will make sure the delayed work is canceled on sync, unmount and re-mount. And because VFS always callse 'sync_fs()' before unmounting or remounting, this fixes the issue. Reported-by: Ludovic Desroches <ludovic.desroches@atmel.com> Cc: stable@vger.kernel.org [3.5+] Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Tested-by: Ludovic Desroches <ludovic.desroches@atmel.com> --- fs/jffs2/super.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/fs/jffs2/super.c b/fs/jffs2/super.c index 61ea413..1224d6b 100644 --- a/fs/jffs2/super.c +++ b/fs/jffs2/super.c @@ -100,6 +100,10 @@ static int jffs2_sync_fs(struct super_block *sb, int wait) { struct jffs2_sb_info *c = JFFS2_SB_INFO(sb); +#ifdef CONFIG_JFFS2_FS_WRITEBUFFER + cancel_delayed_work_sync(&c->wbuf_dwork); +#endif + mutex_lock(&c->alloc_sem); jffs2_flush_wbuf_pad(c); mutex_unlock(&c->alloc_sem); -- 1.7.10.4 -- Best Regards, Artem Bityutskiy [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: JFFS2 issue with v3.5.x and later on Atmel chips at least @ 2012-08-23 12:37 ` Artem Bityutskiy 0 siblings, 0 replies; 14+ messages in thread From: Artem Bityutskiy @ 2012-08-23 12:37 UTC (permalink / raw) To: ludovic.desroches Cc: Nicolas Ferre, Linux Kernel list, linux-mtd, Jean-Christophe PLAGNIOL-VILLARD, linux-arm-kernel@lists.infradead.org [-- Attachment #1: Type: text/plain, Size: 1798 bytes --] On Thu, 2012-08-23 at 11:05 +0200, ludovic.desroches wrote: > > Tested-by: Ludovic Desroches <ludovic.desroches@atmel.com> Thanks, pushed to l2-mtd.git tree a bit modified patch. Will ping dwmw2 about merging it to Linus. From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Date: Thu, 23 Aug 2012 10:10:07 +0300 Subject: [PATCH] JFFS2: fix unmount regression This patch fixes regression introduced by "8bdc81c jffs2: get rid of jffs2_sync_super". We submit a delayed work in order to make sure the write-buffer is synchronized at some point. But we do not flush it when we unmount, which causes an oops when we unmount the file-system and then the delayed work is executed. This patch fixes the issue by adding a "cancel_delayed_work_sync()" infocation in the '->sync_fs()' handler. This will make sure the delayed work is canceled on sync, unmount and re-mount. And because VFS always callse 'sync_fs()' before unmounting or remounting, this fixes the issue. Reported-by: Ludovic Desroches <ludovic.desroches@atmel.com> Cc: stable@vger.kernel.org [3.5+] Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Tested-by: Ludovic Desroches <ludovic.desroches@atmel.com> --- fs/jffs2/super.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/fs/jffs2/super.c b/fs/jffs2/super.c index 61ea413..1224d6b 100644 --- a/fs/jffs2/super.c +++ b/fs/jffs2/super.c @@ -100,6 +100,10 @@ static int jffs2_sync_fs(struct super_block *sb, int wait) { struct jffs2_sb_info *c = JFFS2_SB_INFO(sb); +#ifdef CONFIG_JFFS2_FS_WRITEBUFFER + cancel_delayed_work_sync(&c->wbuf_dwork); +#endif + mutex_lock(&c->alloc_sem); jffs2_flush_wbuf_pad(c); mutex_unlock(&c->alloc_sem); -- 1.7.10.4 -- Best Regards, Artem Bityutskiy [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply related [flat|nested] 14+ messages in thread
* JFFS2 issue with v3.5.x and later on Atmel chips at least @ 2012-08-23 12:37 ` Artem Bityutskiy 0 siblings, 0 replies; 14+ messages in thread From: Artem Bityutskiy @ 2012-08-23 12:37 UTC (permalink / raw) To: linux-arm-kernel On Thu, 2012-08-23 at 11:05 +0200, ludovic.desroches wrote: > > Tested-by: Ludovic Desroches <ludovic.desroches@atmel.com> Thanks, pushed to l2-mtd.git tree a bit modified patch. Will ping dwmw2 about merging it to Linus. From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Date: Thu, 23 Aug 2012 10:10:07 +0300 Subject: [PATCH] JFFS2: fix unmount regression This patch fixes regression introduced by "8bdc81c jffs2: get rid of jffs2_sync_super". We submit a delayed work in order to make sure the write-buffer is synchronized at some point. But we do not flush it when we unmount, which causes an oops when we unmount the file-system and then the delayed work is executed. This patch fixes the issue by adding a "cancel_delayed_work_sync()" infocation in the '->sync_fs()' handler. This will make sure the delayed work is canceled on sync, unmount and re-mount. And because VFS always callse 'sync_fs()' before unmounting or remounting, this fixes the issue. Reported-by: Ludovic Desroches <ludovic.desroches@atmel.com> Cc: stable at vger.kernel.org [3.5+] Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Tested-by: Ludovic Desroches <ludovic.desroches@atmel.com> --- fs/jffs2/super.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/fs/jffs2/super.c b/fs/jffs2/super.c index 61ea413..1224d6b 100644 --- a/fs/jffs2/super.c +++ b/fs/jffs2/super.c @@ -100,6 +100,10 @@ static int jffs2_sync_fs(struct super_block *sb, int wait) { struct jffs2_sb_info *c = JFFS2_SB_INFO(sb); +#ifdef CONFIG_JFFS2_FS_WRITEBUFFER + cancel_delayed_work_sync(&c->wbuf_dwork); +#endif + mutex_lock(&c->alloc_sem); jffs2_flush_wbuf_pad(c); mutex_unlock(&c->alloc_sem); -- 1.7.10.4 -- Best Regards, Artem Bityutskiy -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 836 bytes Desc: This is a digitally signed message part URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20120823/c05bd241/attachment.sig> ^ permalink raw reply related [flat|nested] 14+ messages in thread
end of thread, other threads:[~2012-08-23 12:37 UTC | newest] Thread overview: 14+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-08-22 10:28 Kernel oops since v3.5.x on Atmel chips ludovic.desroches 2012-08-22 15:00 ` JFFS2 issue with v3.5.x and later on Atmel chips at least (was: Kernel oops since v3.5.x on Atmel chips) ludovic.desroches 2012-08-22 15:00 ` ludovic.desroches 2012-08-23 6:35 ` Artem Bityutskiy 2012-08-23 6:35 ` Artem Bityutskiy 2012-08-23 6:35 ` Artem Bityutskiy 2012-08-23 7:41 ` Artem Bityutskiy 2012-08-23 7:41 ` Artem Bityutskiy 2012-08-23 7:41 ` Artem Bityutskiy 2012-08-23 9:05 ` JFFS2 issue with v3.5.x and later on Atmel chips at least ludovic.desroches 2012-08-23 9:05 ` ludovic.desroches 2012-08-23 12:37 ` Artem Bityutskiy 2012-08-23 12:37 ` Artem Bityutskiy 2012-08-23 12:37 ` Artem Bityutskiy
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.