S3C2440: SD-Card access fails
Juergen Beisert
jbe at pengutronix.de
Thu Oct 15 14:14:50 EDT 2009
Hi list,
I'm using an S3C2440 based custom made board with a 2.6.31.3 kernel (with a
few modifications to add the boards specific file). When I do some traffic on
the SD card (1GiB SD type), for example untaring an archive I get a failure
like this one:
Unable to handle kernel paging request at virtual address 4b856104
pgd = c0004000
[4b856104] *pgd=00000000
Internal error: Oops: 5 [#1]
Modules linked in:
CPU: 0 Not tainted (2.6.31.3jbe #6)
PC is at s3c2410_gpio_getpin+0x18/0x2c
LR is at s3cmci_card_present+0x28/0x44
pc : [<c002cf10>] lr : [<c0199290>] psr: a0000013
sp : c1db9df8 ip : c1db9e08 fp : c1db9e04
r10: c1d33ae4 r9 : c1db9e78 r8 : 00000001
r7 : c1d61e00 r6 : c1db9e78 r5 : c1c3b000 r4 : c001d8d8
r3 : 4b856100 r2 : c1db9eb8 r1 : c1db9e78 r0 : a10ac21a
Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel
Control: c000717f Table: 3034c000 DAC: 00000017
Process mmcqd (pid: 375, stack limit = 0xc1db8270)
Stack: (0xc1db9df8 to 0xc1dba000)
9de0: c1db9e1c c1db9e08
9e00: c0199290 c002cf08 c1d33ae4 c1c3b140 c1db9e3c c1db9e20 c0199960 c0199278
9e20: c1d33ae4 c1db9e78 c1c3b000 c1d26708 c1db9e64 c1db9e40 c0190418 c019993c
9e40: c0196718 00000000 c1db9e48 c1db9e48 c1d26708 c1d33ae4 c1db9f94 c1db9e68
9e60: c01962b8 c019031c c02c01c0 c02c0100 c1db9e8c 00000000 c1db9e8c c1db9ee4
9e80: c1db9eb8 c1db9e44 c01904a8 00000012 08074600 00000000 00000000 00000000
9ea0: 00000000 000000b5 00000000 00000000 c1db9ee4 c1db9e78 0000000c 00000000
9ec0: 00000000 00000000 00000000 00000000 0000049d 00000000 00000000 00000000
9ee0: c1db9e78 05f5e100 00000000 00000200 00000008 00000000 00000200 00000000
9f00: c1db9eb8 c1db9e78 00000001 c1ceb800 c1c3d830 c1daac00 c1db9f44 c1db9f28
9f20: c1c6e01c c1daac00 00000017 c1daac00 00000000 c1d34438 00000000 c1d34438
9f40: 00000000 c1db9f5c c1db9f7c c1db9f58 c0115740 c1d26708 c1db9f7c c1db9f68
9f60: c0114ea4 c0119fcc c1db8000 c1d26708 c1d33ae4 c1db8000 c1d33aec c1d34438
9f80: 00000000 c1d34540 c1db9fc4 c1db9f98 c0196b50 c01960f4 c1db9fc4 c1db9fcc
9fa0: c1c3fd3c c1d33ae4 c0196a68 00000000 00000000 00000000 c1db9ff4 c1db9fc8
9fc0: c0048cb4 c0196a78 00000000 00000000 c1db9fd0 c1db9fd0 00000000 00000000
9fe0: 00000000 00000000 00000000 c1db9ff8 c00386e8 c0048c40 00000000 00000000
Backtrace:
[<c002cef8>] (s3c2410_gpio_getpin+0x0/0x2c) from [<c0199290>]
(s3cmci_card_present+0x28/0x44)
[<c0199268>] (s3cmci_card_present+0x0/0x44) from [<c0199960>]
(s3cmci_request+0x34/0x6c)
r4:c1c3b140
[<c019992c>] (s3cmci_request+0x0/0x6c) from [<c0190418>]
(mmc_wait_for_req+0x10c/0x124)
r6:c1d26708 r5:c1c3b000 r4:c1db9e78
[<c019030c>] (mmc_wait_for_req+0x0/0x124) from [<c01962b8>]
(mmc_blk_issue_rq+0x1d4/0x550)
r5:c1d33ae4 r4:c1d26708
[<c01960e4>] (mmc_blk_issue_rq+0x0/0x550) from [<c0196b50>]
(mmc_queue_thread+0xe8/0xec)
[<c0196a68>] (mmc_queue_thread+0x0/0xec) from [<c0048cb4>] (kthread+0x84/0x8c)
[<c0048c30>] (kthread+0x0/0x8c) from [<c00386e8>] (do_exit+0x0/0x21c)
r7:00000000 r6:00000000 r5:00000000 r4:00000000
Code: e24cb004 e3c0301f e1a030a3 e28334fb (e5933004)
---[ end trace 969be95693003e89 ]---
This failure at adress 0xc002cf10 is the last line in function
s3c2410_gpio_getpin in arch/arm/plat-s3c24xx/gpio.c:
return __raw_readl(base + 0x04) & (1<< offs);
But it doesn't fails always at this location. I saw various location when I
try
to find the cause of the failure. Another failure was:
mmc0: card b368 removed
Unable to handle kernel paging request at virtual address 00001000
pgd = c0004000
[00001000] *pgd=00000000
Internal error: Oops: 0 [#1]
Modules linked in:
CPU: 0 Not tainted (2.6.31.3jbe #4)
PC is at 0x1000
LR is at s3cmci_set_ios+0xf0/0x1f0
pc : [<00001000>] lr : [<c01993d8>] psr: 20000013
[...]
Backtrace:
[<c01992e8>] (s3cmci_set_ios+0x0/0x1f0) from [<c018f9e8>]
(mmc_power_off+0x54/0x58)
[<c018f994>] (mmc_power_off+0x0/0x58) from [<c018fc74>]
(mmc_detach_bus+0x6c/0xcc)
[<c018fc08>] (mmc_detach_bus+0x0/0xcc) from [<c0192a80>]
(mmc_sd_detect+0x78/0x8c)
[...]
But: It does not happen immediately when the traffic starts. It always happens
a few seconds after the traffic starts. And it fails more often when I run a
kernel with CONFIG_KALLSYMS=n instead of =y.
And currently the system only fails if I use the SD card. While running from
NFS root and doing some action in the system it seems to run stable.
Any idea what is going on here?
Regards,
Juergen
--
Pengutronix e.K. | Juergen Beisert |
Linux Solutions for Science and Industry | Phone: +49-8766-939 228 |
Vertretung Sued/Muenchen, Germany | Fax: +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de/ |
More information about the linux-arm-kernel
mailing list