linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* ARM: AM335x: Kernel oops when using EDMA and MMC
@ 2013-07-17 15:55 Mark Jackson
  2013-07-17 16:28 ` Mark Jackson
  2013-07-17 16:38 ` Joel Fernandes
  0 siblings, 2 replies; 8+ messages in thread
From: Mark Jackson @ 2013-07-17 15:55 UTC (permalink / raw)
  To: linux-arm-kernel

I'm trying to get the MMC port working on our custom AM3352 CPU board.

I have added MMC entries to out dts file (similar to [1]), and I've
enabled CONFIG_TI_EDMA.

Our board boots fine without an SD card inserted ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 3.11.0-rc1-00025-g95b9b72 (mpfj at mpfj-nanobone) (gcc version 4.6.3 (Buildroot 2013.02-dirty) ) #309 Wed Jul 17 16:37:28 BST 2013
...
[    2.789028] VFS: Mounted root (ubifs filesystem) on device 0:12.
[    2.797268] devtmpfs: mounted
[    2.801032] Freeing unused kernel memory: 200K (c0551000 - c0583000)
...
Welcome to Buildroot
nanobone login:

But when I boot with a card already inserted, I get the following oops ...

...
[    1.827343] Unable to handle kernel NULL pointer dereference at virtual address 0000000c
[    1.835868] pgd = c0004000
[    1.838774] [0000000c] *pgd=00000000
[    1.842556] Internal error: Oops: 5 [#1] ARM
[    1.847063] CPU: 0 PID: 6 Comm: kworker/u2:0 Not tainted 3.11.0-rc1-00025-g95b9b72 #309
[    1.855511] Workqueue: kmmcd mmc_rescan
[    1.859556] task: cf06a080 ti: cf072000 task.ti: cf072000
[    1.865257] PC is at omap_hsmmc_start_command+0x74/0xf4
[    1.870761] LR is at omap_hsmmc_request+0xec/0x4dc
[    1.875806] pc : [<c0305b70>]    lr : [<c0306c64>]    psr: 60000113
[    1.875806] sp : cf073ca0  ip : 00000000  fp : 00000008
[    1.887885] r10: cf073de8  r9 : 00000001  r8 : cf11d918
[    1.893382] r7 : 00000003  r6 : cf33cc80  r5 : 00000001  r4 : 00000033
[    1.900250] r3 : 00020000  r2 : cf073db8  r1 : cf073d84  r0 : cf33cc80
[    1.907122] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
[    1.914813] Control: 10c5387d  Table: 80004019  DAC: 00000015
[    1.920859] Process kworker/u2:0 (pid: 6, stack limit = 0xcf072238)
[    1.927454] Stack: (0xcf073ca0 to 0xcf074000)
[    1.932048] 3ca0: cf33c800 cf073d40 00000003 00000000 c0076a8c cf073d40 48060220 48060220
[    1.940659] 3cc0: 00000004 00000004 00000002 00000002 cf073ec8 c0421a9c c051835c cf073d40
[    1.949271] 3ce0: cf33c800 00000001 00000008 00000008 00000002 cf073db8 cf073ec8 c02f0f28
[    1.957882] 3d00: 00000200 00000064 00000000 cf073db8 cf073ec8 cf073d40 cf073d50 00000000
[    1.966493] 3d20: cf33c800 c02f18a4 cf369800 cf369a80 00000000 cf360880 00000008 c02f9964
[    1.975104] 3d40: 00000000 cf073d84 cf073db8 00000000 00000001 00000001 dead4ead ffffffff
[    1.983717] 3d60: ffffffff c0af722c c06aa3e4 00000000 c04ddadc cf073d74 cf073d74 c02f0dc4
[    1.992327] 3d80: 00000000 00000033 00000000 00000000 00000000 00000000 00000000 000000b5
[    2.000938] 3da0: 00000000 00000000 00000000 00000000 cf073db8 cf073d40 05f5e100 00000000
[    2.009548] 3dc0: 00000008 00000001 00000000 00000200 00000000 00000000 cf073d40 00000001
[    2.018159] 3de0: cf073de8 00000000 c0cf1c02 00000880 00000008 8f360880 00000000 cf369800
[    2.026771] 3e00: cf33c800 00000000 cf369800 cf073e4c cf072000 c02f8740 00000000 00000015
[    2.035382] 3e20: 00000003 cf33c800 00000000 00000000 cf369800 cf073e4c cf072000 c02f8b20
[    2.043994] 3e40: 00000002 c02f25cc 00000002 02544d53 41303447 1026c914 2600bbbd c0ff8000
[    2.052605] 3e60: c0455884 cf33c800 00000000 c0455884 c0455890 00000000 cf072000 c02f92bc
[    2.061217] 3e80: c0455890 00ff8000 00000002 cf33cb14 cf33c800 c02f3a28 cf041ac0 cf33cb14
[    2.069829] 3ea0: cf050c00 cf051c00 00000000 c00507ec 00000002 00000000 c0050778 c0050f10
[    2.078441] 3ec0: 00000000 00000000 c0af7268 c06aa1c4 00000000 c0518cd0 cf06a080 cf041ac0
[    2.087054] 3ee0: cf050c00 cf072000 cf050c30 cf041ad8 00000089 c05d7b5c cf050c00 c0050e4c
[    2.095665] 3f00: 00000000 cf072000 60000113 cf04dda8 00000000 cf041ac0 c0050d08 00000000
[    2.104276] 3f20: 00000000 00000000 00000000 c0056c94 c0429a18 00000000 00000001 cf041ac0
[    2.112888] 3f40: 00000000 00000001 dead4ead ffffffff ffffffff c05ec0a0 00000000 00000000
[    2.121499] 3f60: c04ddadc cf073f64 cf073f64 00000000 00000001 dead4ead ffffffff ffffffff
[    2.130112] 3f80: c05ec0a0 00000000 00000000 c04ddadc cf073f90 cf073f90 cf073fac cf04dda8
[    2.138724] 3fa0: c0056bf0 00000000 00000000 c0013588 00000000 00000000 00000000 00000000
[    2.147334] 3fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[    2.155946] 3fe0: 00000000 00000000 00000000 00000000 00000013 00000000 57e0c5db 5ffb7d3c
[    2.164565] [<c0305b70>] (omap_hsmmc_start_command+0x74/0xf4) from [<00000003>] (0x3)
[    2.172814] Code: 13a03801 0a00001b e590c008 e5914000 (e59cc00c)
[    2.179314] ---[ end trace 6ec9899a56aef6aa ]---

I have also noticed that when the kernel boots okay (without a card inserted), if
I then insert a card, nothing happens (even with CONFIG_MMC_DEBUG=y) ... including
no kernel oops.

Can anyone shed light on what's wrong ?

Cheers
Mark J.

[1] https://lkml.org/lkml/2013/6/25/784

^ permalink raw reply	[flat|nested] 8+ messages in thread

* ARM: AM335x: Kernel oops when using EDMA and MMC
  2013-07-17 15:55 ARM: AM335x: Kernel oops when using EDMA and MMC Mark Jackson
@ 2013-07-17 16:28 ` Mark Jackson
  2013-07-17 16:38 ` Joel Fernandes
  1 sibling, 0 replies; 8+ messages in thread
From: Mark Jackson @ 2013-07-17 16:28 UTC (permalink / raw)
  To: linux-arm-kernel

On 17/07/13 16:55, Mark Jackson wrote:
> I'm trying to get the MMC port working on our custom AM3352 CPU board.
> 
> I have added MMC entries to out dts file (similar to [1]), and I've
> enabled CONFIG_TI_EDMA.
> 
> Our board boots fine without an SD card inserted ...
> 
> [    0.000000] Booting Linux on physical CPU 0x0
> [    0.000000] Linux version 3.11.0-rc1-00025-g95b9b72 (mpfj at mpfj-nanobone) (gcc version 4.6.3 (Buildroot 2013.02-dirty) ) #309 Wed Jul 17 16:37:28 BST 2013
> ...
> [    2.789028] VFS: Mounted root (ubifs filesystem) on device 0:12.
> [    2.797268] devtmpfs: mounted
> [    2.801032] Freeing unused kernel memory: 200K (c0551000 - c0583000)
> ...
> Welcome to Buildroot
> nanobone login:

I have just noticed the following in the boot log:-

...
[    1.225698] omap_hsmmc 48060000.mmc: unable to obtain RX DMA engine channel 3227000204
...

^ permalink raw reply	[flat|nested] 8+ messages in thread

* ARM: AM335x: Kernel oops when using EDMA and MMC
  2013-07-17 15:55 ARM: AM335x: Kernel oops when using EDMA and MMC Mark Jackson
  2013-07-17 16:28 ` Mark Jackson
@ 2013-07-17 16:38 ` Joel Fernandes
  2013-07-18  8:55   ` Mark Jackson
  2013-07-18 16:40   ` Balaji T K
  1 sibling, 2 replies; 8+ messages in thread
From: Joel Fernandes @ 2013-07-17 16:38 UTC (permalink / raw)
  To: linux-arm-kernel

On 07/17/2013 10:55 AM, Mark Jackson wrote:
> I'm trying to get the MMC port working on our custom AM3352 CPU board.
> 
> I have added MMC entries to out dts file (similar to [1]), and I've
> enabled CONFIG_TI_EDMA.
> 
> Our board boots fine without an SD card inserted ...
> 
> [    0.000000] Booting Linux on physical CPU 0x0
> [    0.000000] Linux version 3.11.0-rc1-00025-g95b9b72 (mpfj at mpfj-nanobone) (gcc version 4.6.3 (Buildroot 2013.02-dirty) ) #309 Wed Jul 17 16:37:28 BST 2013
> ...
> [    2.789028] VFS: Mounted root (ubifs filesystem) on device 0:12.
> [    2.797268] devtmpfs: mounted
> [    2.801032] Freeing unused kernel memory: 200K (c0551000 - c0583000)
> ...
> Welcome to Buildroot
> nanobone login:
> 
> But when I boot with a card already inserted, I get the following oops ...
> 
> ...
> [    1.827343] Unable to handle kernel NULL pointer dereference at virtual address 0000000c
> [    1.835868] pgd = c0004000
> [    1.838774] [0000000c] *pgd=00000000
> [    1.842556] Internal error: Oops: 5 [#1] ARM
> [    1.847063] CPU: 0 PID: 6 Comm: kworker/u2:0 Not tainted 3.11.0-rc1-00025-g95b9b72 #309
> [    1.855511] Workqueue: kmmcd mmc_rescan
> [    1.859556] task: cf06a080 ti: cf072000 task.ti: cf072000
> [    1.865257] PC is at omap_hsmmc_start_command+0x74/0xf4
> [    1.870761] LR is at omap_hsmmc_request+0xec/0x4dc
> [    1.875806] pc : [<c0305b70>]    lr : [<c0306c64>]    psr: 60000113
> [    1.875806] sp : cf073ca0  ip : 00000000  fp : 00000008
> [    1.887885] r10: cf073de8  r9 : 00000001  r8 : cf11d918
> [    1.893382] r7 : 00000003  r6 : cf33cc80  r5 : 00000001  r4 : 00000033
> [    1.900250] r3 : 00020000  r2 : cf073db8  r1 : cf073d84  r0 : cf33cc80
> [    1.907122] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
> [    1.914813] Control: 10c5387d  Table: 80004019  DAC: 00000015
> [    1.920859] Process kworker/u2:0 (pid: 6, stack limit = 0xcf072238)
> [    1.927454] Stack: (0xcf073ca0 to 0xcf074000)
> [    1.932048] 3ca0: cf33c800 cf073d40 00000003 00000000 c0076a8c cf073d40 48060220 48060220
> [    1.940659] 3cc0: 00000004 00000004 00000002 00000002 cf073ec8 c0421a9c c051835c cf073d40
> [    1.949271] 3ce0: cf33c800 00000001 00000008 00000008 00000002 cf073db8 cf073ec8 c02f0f28
> [    1.957882] 3d00: 00000200 00000064 00000000 cf073db8 cf073ec8 cf073d40 cf073d50 00000000
> [    1.966493] 3d20: cf33c800 c02f18a4 cf369800 cf369a80 00000000 cf360880 00000008 c02f9964
> [    1.975104] 3d40: 00000000 cf073d84 cf073db8 00000000 00000001 00000001 dead4ead ffffffff
> [    1.983717] 3d60: ffffffff c0af722c c06aa3e4 00000000 c04ddadc cf073d74 cf073d74 c02f0dc4
> [    1.992327] 3d80: 00000000 00000033 00000000 00000000 00000000 00000000 00000000 000000b5
> [    2.000938] 3da0: 00000000 00000000 00000000 00000000 cf073db8 cf073d40 05f5e100 00000000
> [    2.009548] 3dc0: 00000008 00000001 00000000 00000200 00000000 00000000 cf073d40 00000001
> [    2.018159] 3de0: cf073de8 00000000 c0cf1c02 00000880 00000008 8f360880 00000000 cf369800
> [    2.026771] 3e00: cf33c800 00000000 cf369800 cf073e4c cf072000 c02f8740 00000000 00000015
> [    2.035382] 3e20: 00000003 cf33c800 00000000 00000000 cf369800 cf073e4c cf072000 c02f8b20
> [    2.043994] 3e40: 00000002 c02f25cc 00000002 02544d53 41303447 1026c914 2600bbbd c0ff8000
> [    2.052605] 3e60: c0455884 cf33c800 00000000 c0455884 c0455890 00000000 cf072000 c02f92bc
> [    2.061217] 3e80: c0455890 00ff8000 00000002 cf33cb14 cf33c800 c02f3a28 cf041ac0 cf33cb14
> [    2.069829] 3ea0: cf050c00 cf051c00 00000000 c00507ec 00000002 00000000 c0050778 c0050f10
> [    2.078441] 3ec0: 00000000 00000000 c0af7268 c06aa1c4 00000000 c0518cd0 cf06a080 cf041ac0
> [    2.087054] 3ee0: cf050c00 cf072000 cf050c30 cf041ad8 00000089 c05d7b5c cf050c00 c0050e4c
> [    2.095665] 3f00: 00000000 cf072000 60000113 cf04dda8 00000000 cf041ac0 c0050d08 00000000
> [    2.104276] 3f20: 00000000 00000000 00000000 c0056c94 c0429a18 00000000 00000001 cf041ac0
> [    2.112888] 3f40: 00000000 00000001 dead4ead ffffffff ffffffff c05ec0a0 00000000 00000000
> [    2.121499] 3f60: c04ddadc cf073f64 cf073f64 00000000 00000001 dead4ead ffffffff ffffffff
> [    2.130112] 3f80: c05ec0a0 00000000 00000000 c04ddadc cf073f90 cf073f90 cf073fac cf04dda8
> [    2.138724] 3fa0: c0056bf0 00000000 00000000 c0013588 00000000 00000000 00000000 00000000
> [    2.147334] 3fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
> [    2.155946] 3fe0: 00000000 00000000 00000000 00000000 00000013 00000000 57e0c5db 5ffb7d3c
> [    2.164565] [<c0305b70>] (omap_hsmmc_start_command+0x74/0xf4) from [<00000003>] (0x3)
> [    2.172814] Code: 13a03801 0a00001b e590c008 e5914000 (e59cc00c)
> [    2.179314] ---[ end trace 6ec9899a56aef6aa ]---
> 
> I have also noticed that when the kernel boots okay (without a card inserted), if
> I then insert a card, nothing happens (even with CONFIG_MMC_DEBUG=y) ... including
> no kernel oops.
> 
> Can anyone shed light on what's wrong ?

I see this issue too on -rc1. The mmc host pointer is mangled but this could be
due to something totally unrelated.

Can you first please try rebasing on 3.10 instead of 3.11-rc1?

Thanks,

-Joel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* ARM: AM335x: Kernel oops when using EDMA and MMC
  2013-07-17 16:38 ` Joel Fernandes
@ 2013-07-18  8:55   ` Mark Jackson
  2013-07-18 16:40   ` Balaji T K
  1 sibling, 0 replies; 8+ messages in thread
From: Mark Jackson @ 2013-07-18  8:55 UTC (permalink / raw)
  To: linux-arm-kernel

On 17/07/13 17:38, Joel Fernandes wrote:
> On 07/17/2013 10:55 AM, Mark Jackson wrote:
>> I'm trying to get the MMC port working on our custom AM3352 CPU board.
>>
>> I have added MMC entries to out dts file (similar to [1]), and I've
>> enabled CONFIG_TI_EDMA.
>>
>> Our board boots fine without an SD card inserted ...
>>
>> [    0.000000] Booting Linux on physical CPU 0x0
>> [    0.000000] Linux version 3.11.0-rc1-00025-g95b9b72 (mpfj at mpfj-nanobone) (gcc version 4.6.3 (Buildroot 2013.02-dirty) ) #309 Wed Jul 17 16:37:28 BST 2013
>> ...
>> [    2.789028] VFS: Mounted root (ubifs filesystem) on device 0:12.
>> [    2.797268] devtmpfs: mounted
>> [    2.801032] Freeing unused kernel memory: 200K (c0551000 - c0583000)
>> ...
>> Welcome to Buildroot
>> nanobone login:
>>
>> But when I boot with a card already inserted, I get the following oops ...
>>
>> ...
>> [    1.827343] Unable to handle kernel NULL pointer dereference at virtual address 0000000c
>> [    1.835868] pgd = c0004000
>> [    1.838774] [0000000c] *pgd=00000000
>> [    1.842556] Internal error: Oops: 5 [#1] ARM
>> [    1.847063] CPU: 0 PID: 6 Comm: kworker/u2:0 Not tainted 3.11.0-rc1-00025-g95b9b72 #309
>> [    1.855511] Workqueue: kmmcd mmc_rescan
>> [    1.859556] task: cf06a080 ti: cf072000 task.ti: cf072000
>> [    1.865257] PC is at omap_hsmmc_start_command+0x74/0xf4
>> [    1.870761] LR is at omap_hsmmc_request+0xec/0x4dc
>> [    1.875806] pc : [<c0305b70>]    lr : [<c0306c64>]    psr: 60000113
>> [    1.875806] sp : cf073ca0  ip : 00000000  fp : 00000008
>> [    1.887885] r10: cf073de8  r9 : 00000001  r8 : cf11d918
>> [    1.893382] r7 : 00000003  r6 : cf33cc80  r5 : 00000001  r4 : 00000033
>> [    1.900250] r3 : 00020000  r2 : cf073db8  r1 : cf073d84  r0 : cf33cc80
>> [    1.907122] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
>> [    1.914813] Control: 10c5387d  Table: 80004019  DAC: 00000015
>> [    1.920859] Process kworker/u2:0 (pid: 6, stack limit = 0xcf072238)
>> [    1.927454] Stack: (0xcf073ca0 to 0xcf074000)
>> [    1.932048] 3ca0: cf33c800 cf073d40 00000003 00000000 c0076a8c cf073d40 48060220 48060220
>> [    1.940659] 3cc0: 00000004 00000004 00000002 00000002 cf073ec8 c0421a9c c051835c cf073d40
>> [    1.949271] 3ce0: cf33c800 00000001 00000008 00000008 00000002 cf073db8 cf073ec8 c02f0f28
>> [    1.957882] 3d00: 00000200 00000064 00000000 cf073db8 cf073ec8 cf073d40 cf073d50 00000000
>> [    1.966493] 3d20: cf33c800 c02f18a4 cf369800 cf369a80 00000000 cf360880 00000008 c02f9964
>> [    1.975104] 3d40: 00000000 cf073d84 cf073db8 00000000 00000001 00000001 dead4ead ffffffff
>> [    1.983717] 3d60: ffffffff c0af722c c06aa3e4 00000000 c04ddadc cf073d74 cf073d74 c02f0dc4
>> [    1.992327] 3d80: 00000000 00000033 00000000 00000000 00000000 00000000 00000000 000000b5
>> [    2.000938] 3da0: 00000000 00000000 00000000 00000000 cf073db8 cf073d40 05f5e100 00000000
>> [    2.009548] 3dc0: 00000008 00000001 00000000 00000200 00000000 00000000 cf073d40 00000001
>> [    2.018159] 3de0: cf073de8 00000000 c0cf1c02 00000880 00000008 8f360880 00000000 cf369800
>> [    2.026771] 3e00: cf33c800 00000000 cf369800 cf073e4c cf072000 c02f8740 00000000 00000015
>> [    2.035382] 3e20: 00000003 cf33c800 00000000 00000000 cf369800 cf073e4c cf072000 c02f8b20
>> [    2.043994] 3e40: 00000002 c02f25cc 00000002 02544d53 41303447 1026c914 2600bbbd c0ff8000
>> [    2.052605] 3e60: c0455884 cf33c800 00000000 c0455884 c0455890 00000000 cf072000 c02f92bc
>> [    2.061217] 3e80: c0455890 00ff8000 00000002 cf33cb14 cf33c800 c02f3a28 cf041ac0 cf33cb14
>> [    2.069829] 3ea0: cf050c00 cf051c00 00000000 c00507ec 00000002 00000000 c0050778 c0050f10
>> [    2.078441] 3ec0: 00000000 00000000 c0af7268 c06aa1c4 00000000 c0518cd0 cf06a080 cf041ac0
>> [    2.087054] 3ee0: cf050c00 cf072000 cf050c30 cf041ad8 00000089 c05d7b5c cf050c00 c0050e4c
>> [    2.095665] 3f00: 00000000 cf072000 60000113 cf04dda8 00000000 cf041ac0 c0050d08 00000000
>> [    2.104276] 3f20: 00000000 00000000 00000000 c0056c94 c0429a18 00000000 00000001 cf041ac0
>> [    2.112888] 3f40: 00000000 00000001 dead4ead ffffffff ffffffff c05ec0a0 00000000 00000000
>> [    2.121499] 3f60: c04ddadc cf073f64 cf073f64 00000000 00000001 dead4ead ffffffff ffffffff
>> [    2.130112] 3f80: c05ec0a0 00000000 00000000 c04ddadc cf073f90 cf073f90 cf073fac cf04dda8
>> [    2.138724] 3fa0: c0056bf0 00000000 00000000 c0013588 00000000 00000000 00000000 00000000
>> [    2.147334] 3fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
>> [    2.155946] 3fe0: 00000000 00000000 00000000 00000000 00000013 00000000 57e0c5db 5ffb7d3c
>> [    2.164565] [<c0305b70>] (omap_hsmmc_start_command+0x74/0xf4) from [<00000003>] (0x3)
>> [    2.172814] Code: 13a03801 0a00001b e590c008 e5914000 (e59cc00c)
>> [    2.179314] ---[ end trace 6ec9899a56aef6aa ]---
>>
>> I have also noticed that when the kernel boots okay (without a card inserted), if
>> I then insert a card, nothing happens (even with CONFIG_MMC_DEBUG=y) ... including
>> no kernel oops.
>>
>> Can anyone shed light on what's wrong ?
> 
> I see this issue too on -rc1. The mmc host pointer is mangled but this could be
> due to something totally unrelated.
> 
> Can you first please try rebasing on 3.10 instead of 3.11-rc1?

Well, I've rebased the code to v3.10 and I get no oops, but (with some debug info added)
I can see that omap_hsmmc_start_command() is never called.

I'm not sure the EDMA stuff is being compiled in ... was this added post v3.10 ?

Cheers
Mark J.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* ARM: AM335x: Kernel oops when using EDMA and MMC
  2013-07-17 16:38 ` Joel Fernandes
  2013-07-18  8:55   ` Mark Jackson
@ 2013-07-18 16:40   ` Balaji T K
  2013-07-18 16:47     ` Daniel Mack
  2013-07-18 17:00     ` Joel Fernandes
  1 sibling, 2 replies; 8+ messages in thread
From: Balaji T K @ 2013-07-18 16:40 UTC (permalink / raw)
  To: linux-arm-kernel

On Wednesday 17 July 2013 10:08 PM, Joel Fernandes wrote:
> On 07/17/2013 10:55 AM, Mark Jackson wrote:
>> I'm trying to get the MMC port working on our custom AM3352 CPU board.
>>
>> I have added MMC entries to out dts file (similar to [1]), and I've
>> enabled CONFIG_TI_EDMA.
>>
>> Our board boots fine without an SD card inserted ...
>>
>> [    0.000000] Booting Linux on physical CPU 0x0
>> [    0.000000] Linux version 3.11.0-rc1-00025-g95b9b72 (mpfj at mpfj-nanobone) (gcc version 4.6.3 (Buildroot 2013.02-dirty) ) #309 Wed Jul 17 16:37:28 BST 2013
>> ...
>> [    2.789028] VFS: Mounted root (ubifs filesystem) on device 0:12.
>> [    2.797268] devtmpfs: mounted
>> [    2.801032] Freeing unused kernel memory: 200K (c0551000 - c0583000)
>> ...
>> Welcome to Buildroot
>> nanobone login:
>>
>> But when I boot with a card already inserted, I get the following oops ...
>>
>> ...
>> [    1.827343] Unable to handle kernel NULL pointer dereference at virtual address 0000000c
>> [    1.835868] pgd = c0004000
>> [    1.838774] [0000000c] *pgd=00000000
>> [    1.842556] Internal error: Oops: 5 [#1] ARM
>> [    1.847063] CPU: 0 PID: 6 Comm: kworker/u2:0 Not tainted 3.11.0-rc1-00025-g95b9b72 #309
>> [    1.855511] Workqueue: kmmcd mmc_rescan
>> [    1.859556] task: cf06a080 ti: cf072000 task.ti: cf072000
>> [    1.865257] PC is at omap_hsmmc_start_command+0x74/0xf4
>> [    1.870761] LR is at omap_hsmmc_request+0xec/0x4dc
>> [    1.875806] pc : [<c0305b70>]    lr : [<c0306c64>]    psr: 60000113
>> [    1.875806] sp : cf073ca0  ip : 00000000  fp : 00000008
>> [    1.887885] r10: cf073de8  r9 : 00000001  r8 : cf11d918
>> [    1.893382] r7 : 00000003  r6 : cf33cc80  r5 : 00000001  r4 : 00000033
>> [    1.900250] r3 : 00020000  r2 : cf073db8  r1 : cf073d84  r0 : cf33cc80
>> [    1.907122] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
>> [    1.914813] Control: 10c5387d  Table: 80004019  DAC: 00000015
>> [    1.920859] Process kworker/u2:0 (pid: 6, stack limit = 0xcf072238)
>> [    1.927454] Stack: (0xcf073ca0 to 0xcf074000)
>> [    1.932048] 3ca0: cf33c800 cf073d40 00000003 00000000 c0076a8c cf073d40 48060220 48060220
>> [    1.940659] 3cc0: 00000004 00000004 00000002 00000002 cf073ec8 c0421a9c c051835c cf073d40
>> [    1.949271] 3ce0: cf33c800 00000001 00000008 00000008 00000002 cf073db8 cf073ec8 c02f0f28
>> [    1.957882] 3d00: 00000200 00000064 00000000 cf073db8 cf073ec8 cf073d40 cf073d50 00000000
>> [    1.966493] 3d20: cf33c800 c02f18a4 cf369800 cf369a80 00000000 cf360880 00000008 c02f9964
>> [    1.975104] 3d40: 00000000 cf073d84 cf073db8 00000000 00000001 00000001 dead4ead ffffffff
>> [    1.983717] 3d60: ffffffff c0af722c c06aa3e4 00000000 c04ddadc cf073d74 cf073d74 c02f0dc4
>> [    1.992327] 3d80: 00000000 00000033 00000000 00000000 00000000 00000000 00000000 000000b5
>> [    2.000938] 3da0: 00000000 00000000 00000000 00000000 cf073db8 cf073d40 05f5e100 00000000
>> [    2.009548] 3dc0: 00000008 00000001 00000000 00000200 00000000 00000000 cf073d40 00000001
>> [    2.018159] 3de0: cf073de8 00000000 c0cf1c02 00000880 00000008 8f360880 00000000 cf369800
>> [    2.026771] 3e00: cf33c800 00000000 cf369800 cf073e4c cf072000 c02f8740 00000000 00000015
>> [    2.035382] 3e20: 00000003 cf33c800 00000000 00000000 cf369800 cf073e4c cf072000 c02f8b20
>> [    2.043994] 3e40: 00000002 c02f25cc 00000002 02544d53 41303447 1026c914 2600bbbd c0ff8000
>> [    2.052605] 3e60: c0455884 cf33c800 00000000 c0455884 c0455890 00000000 cf072000 c02f92bc
>> [    2.061217] 3e80: c0455890 00ff8000 00000002 cf33cb14 cf33c800 c02f3a28 cf041ac0 cf33cb14
>> [    2.069829] 3ea0: cf050c00 cf051c00 00000000 c00507ec 00000002 00000000 c0050778 c0050f10
>> [    2.078441] 3ec0: 00000000 00000000 c0af7268 c06aa1c4 00000000 c0518cd0 cf06a080 cf041ac0
>> [    2.087054] 3ee0: cf050c00 cf072000 cf050c30 cf041ad8 00000089 c05d7b5c cf050c00 c0050e4c
>> [    2.095665] 3f00: 00000000 cf072000 60000113 cf04dda8 00000000 cf041ac0 c0050d08 00000000
>> [    2.104276] 3f20: 00000000 00000000 00000000 c0056c94 c0429a18 00000000 00000001 cf041ac0
>> [    2.112888] 3f40: 00000000 00000001 dead4ead ffffffff ffffffff c05ec0a0 00000000 00000000
>> [    2.121499] 3f60: c04ddadc cf073f64 cf073f64 00000000 00000001 dead4ead ffffffff ffffffff
>> [    2.130112] 3f80: c05ec0a0 00000000 00000000 c04ddadc cf073f90 cf073f90 cf073fac cf04dda8
>> [    2.138724] 3fa0: c0056bf0 00000000 00000000 c0013588 00000000 00000000 00000000 00000000
>> [    2.147334] 3fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
>> [    2.155946] 3fe0: 00000000 00000000 00000000 00000000 00000013 00000000 57e0c5db 5ffb7d3c
>> [    2.164565] [<c0305b70>] (omap_hsmmc_start_command+0x74/0xf4) from [<00000003>] (0x3)
>> [    2.172814] Code: 13a03801 0a00001b e590c008 e5914000 (e59cc00c)
>> [    2.179314] ---[ end trace 6ec9899a56aef6aa ]---
>>
>> I have also noticed that when the kernel boots okay (without a card inserted), if
>> I then insert a card, nothing happens (even with CONFIG_MMC_DEBUG=y) ... including
>> no kernel oops.
>>
>> Can anyone shed light on what's wrong ?
>
> I see this issue too on -rc1. The mmc host pointer is mangled but this could be
> due to something totally unrelated.
>
Hi Joel,

With DMA channel info retrieved from dt binding on 3.11rc1,
unused_chan_list is broken after hwmod cleanup removing mmc sdma
resource info, hence pdev resource wont have DMA resource populated.

arch/arm/common/edma.c
static int prepare_unused_channel_list(struct device *dev, void *data)
{
	struct platform_device *pdev = to_platform_device(dev);
	int i, ctlr;

	for (i = 0; i < pdev->num_resources; i++) {
		if ((pdev->resource[i].flags & IORESOURCE_DMA) &&
				(int)pdev->resource[i].start >= 0) {
			ctlr = EDMA_CTLR(pdev->resource[i].start);
			clear_bit(EDMA_CHAN_SLOT(pdev->resource[i].start),
					edma_cc[ctlr]->edma_unused);
		}
	}

	return 0;
}

int edma_alloc_channel(int channel,
	if (!unused_chan_list_done) {
		/*
		 * Scan all the platform devices to find out the EDMA channels
		 * used and clear them in the unused list, making the rest
		 * available for ARM usage.
		 */
		ret = bus_for_each_dev(&platform_bus_type, NULL, NULL,
				prepare_unused_channel_list);
		if (ret < 0)
			return ret;

		unused_chan_list_done = true;
	}

===========

with the below hack patch, edma is working fine with mmc on your 3.11rc1+ branch

diff --git a/arch/arm/common/edma.c b/arch/arm/common/edma.c
index a432e6c..5a19164 100644
--- a/arch/arm/common/edma.c
+++ b/arch/arm/common/edma.c
@@ -1262,8 +1262,8 @@ int edma_start(unsigned channel)
  		if (test_bit(channel, edma_cc[ctlr]->edma_unused)) {
  			pr_debug("EDMA: ESR%d %08x\n", j,
  				edma_shadow0_read_array(ctlr, SH_ESR, j));
-			edma_shadow0_write_array(ctlr, SH_ESR, j, mask);
-			return 0;
+//			edma_shadow0_write_array(ctlr, SH_ESR, j, mask);
+//			return 0;
  		}

  		/* EDMA channel with event association */
-- 

> Can you first please try rebasing on 3.10 instead of 3.11-rc1?
>
> Thanks,
>
> -Joel
>

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* ARM: AM335x: Kernel oops when using EDMA and MMC
  2013-07-18 16:40   ` Balaji T K
@ 2013-07-18 16:47     ` Daniel Mack
  2013-07-18 17:02       ` Joel Fernandes
  2013-07-18 17:00     ` Joel Fernandes
  1 sibling, 1 reply; 8+ messages in thread
From: Daniel Mack @ 2013-07-18 16:47 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Balaji,

On 18.07.2013 18:40, Balaji T K wrote:
> With DMA channel info retrieved from dt binding on 3.11rc1,
> unused_chan_list is broken after hwmod cleanup removing mmc sdma
> resource info, hence pdev resource wont have DMA resource populated.
> 
> arch/arm/common/edma.c
> static int prepare_unused_channel_list(struct device *dev, void *data)
> {
> 	struct platform_device *pdev = to_platform_device(dev);
> 	int i, ctlr;
> 
> 	for (i = 0; i < pdev->num_resources; i++) {
> 		if ((pdev->resource[i].flags & IORESOURCE_DMA) &&
> 				(int)pdev->resource[i].start >= 0) {
> 			ctlr = EDMA_CTLR(pdev->resource[i].start);
> 			clear_bit(EDMA_CHAN_SLOT(pdev->resource[i].start),
> 					edma_cc[ctlr]->edma_unused);
> 		}
> 	}
> 
> 	return 0;
> }
> 
> int edma_alloc_channel(int channel,
> 	if (!unused_chan_list_done) {
> 		/*
> 		 * Scan all the platform devices to find out the EDMA channels
> 		 * used and clear them in the unused list, making the rest
> 		 * available for ARM usage.
> 		 */
> 		ret = bus_for_each_dev(&platform_bus_type, NULL, NULL,
> 				prepare_unused_channel_list);
> 		if (ret < 0)
> 			return ret;
> 
> 		unused_chan_list_done = true;
> 	}
> 
> ===========
> 
> with the below hack patch, edma is working fine with mmc on your 3.11rc1+ branch
> 
> diff --git a/arch/arm/common/edma.c b/arch/arm/common/edma.c
> index a432e6c..5a19164 100644
> --- a/arch/arm/common/edma.c
> +++ b/arch/arm/common/edma.c
> @@ -1262,8 +1262,8 @@ int edma_start(unsigned channel)
>   		if (test_bit(channel, edma_cc[ctlr]->edma_unused)) {
>   			pr_debug("EDMA: ESR%d %08x\n", j,
>   				edma_shadow0_read_array(ctlr, SH_ESR, j));
> -			edma_shadow0_write_array(ctlr, SH_ESR, j, mask);
> -			return 0;
> +//			edma_shadow0_write_array(ctlr, SH_ESR, j, mask);
> +//			return 0;
>   		}
> 
>   		/* EDMA channel with event association */
> 

Yes, this in fact works for me as well. Thanks for the quick reply! What
would be the proper fix for this?


Best,
Daniel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* ARM: AM335x: Kernel oops when using EDMA and MMC
  2013-07-18 16:40   ` Balaji T K
  2013-07-18 16:47     ` Daniel Mack
@ 2013-07-18 17:00     ` Joel Fernandes
  1 sibling, 0 replies; 8+ messages in thread
From: Joel Fernandes @ 2013-07-18 17:00 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Balaji,

On 07/18/2013 11:40 AM, Balaji T K wrote:
> On Wednesday 17 July 2013 10:08 PM, Joel Fernandes wrote:
>> On 07/17/2013 10:55 AM, Mark Jackson wrote:
>>> I'm trying to get the MMC port working on our custom AM3352 CPU board.
>>>
>>> I have added MMC entries to out dts file (similar to [1]), and I've
>>> enabled CONFIG_TI_EDMA.
>>>
>>> Our board boots fine without an SD card inserted ...
>>>
>>> [    0.000000] Booting Linux on physical CPU 0x0
>>> [    0.000000] Linux version 3.11.0-rc1-00025-g95b9b72
>>> (mpfj at mpfj-nanobone) (gcc version 4.6.3 (Buildroot 2013.02-dirty) )
>>> #309 Wed Jul 17 16:37:28 BST 2013
>>> ...
>>> [    2.789028] VFS: Mounted root (ubifs filesystem) on device 0:12.
>>> [    2.797268] devtmpfs: mounted
>>> [    2.801032] Freeing unused kernel memory: 200K (c0551000 - c0583000)
>>> ...
>>> Welcome to Buildroot
>>> nanobone login:
>>>
>>> But when I boot with a card already inserted, I get the following
>>> oops ...
>>>
>>> ...
>>> [    1.827343] Unable to handle kernel NULL pointer dereference at
>>> virtual address 0000000c
>>> [    1.835868] pgd = c0004000
>>> [    1.838774] [0000000c] *pgd=00000000
>>> [    1.842556] Internal error: Oops: 5 [#1] ARM
>>> [    1.847063] CPU: 0 PID: 6 Comm: kworker/u2:0 Not tainted
>>> 3.11.0-rc1-00025-g95b9b72 #309
>>> [    1.855511] Workqueue: kmmcd mmc_rescan
>>> [    1.859556] task: cf06a080 ti: cf072000 task.ti: cf072000
>>> [    1.865257] PC is at omap_hsmmc_start_command+0x74/0xf4
>>> [    1.870761] LR is at omap_hsmmc_request+0xec/0x4dc
>>> [    1.875806] pc : [<c0305b70>]    lr : [<c0306c64>]    psr: 60000113
>>> [    1.875806] sp : cf073ca0  ip : 00000000  fp : 00000008
>>> [    1.887885] r10: cf073de8  r9 : 00000001  r8 : cf11d918
>>> [    1.893382] r7 : 00000003  r6 : cf33cc80  r5 : 00000001  r4 :
>>> 00000033
>>> [    1.900250] r3 : 00020000  r2 : cf073db8  r1 : cf073d84  r0 :
>>> cf33cc80
>>> [    1.907122] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM 
>>> Segment kernel
>>> [    1.914813] Control: 10c5387d  Table: 80004019  DAC: 00000015
>>> [    1.920859] Process kworker/u2:0 (pid: 6, stack limit = 0xcf072238)
>>> [    1.927454] Stack: (0xcf073ca0 to 0xcf074000)
>>> [    1.932048] 3ca0: cf33c800 cf073d40 00000003 00000000 c0076a8c
>>> cf073d40 48060220 48060220
>>> [    1.940659] 3cc0: 00000004 00000004 00000002 00000002 cf073ec8
>>> c0421a9c c051835c cf073d40
>>> [    1.949271] 3ce0: cf33c800 00000001 00000008 00000008 00000002
>>> cf073db8 cf073ec8 c02f0f28
>>> [    1.957882] 3d00: 00000200 00000064 00000000 cf073db8 cf073ec8
>>> cf073d40 cf073d50 00000000
>>> [    1.966493] 3d20: cf33c800 c02f18a4 cf369800 cf369a80 00000000
>>> cf360880 00000008 c02f9964
>>> [    1.975104] 3d40: 00000000 cf073d84 cf073db8 00000000 00000001
>>> 00000001 dead4ead ffffffff
>>> [    1.983717] 3d60: ffffffff c0af722c c06aa3e4 00000000 c04ddadc
>>> cf073d74 cf073d74 c02f0dc4
>>> [    1.992327] 3d80: 00000000 00000033 00000000 00000000 00000000
>>> 00000000 00000000 000000b5
>>> [    2.000938] 3da0: 00000000 00000000 00000000 00000000 cf073db8
>>> cf073d40 05f5e100 00000000
>>> [    2.009548] 3dc0: 00000008 00000001 00000000 00000200 00000000
>>> 00000000 cf073d40 00000001
>>> [    2.018159] 3de0: cf073de8 00000000 c0cf1c02 00000880 00000008
>>> 8f360880 00000000 cf369800
>>> [    2.026771] 3e00: cf33c800 00000000 cf369800 cf073e4c cf072000
>>> c02f8740 00000000 00000015
>>> [    2.035382] 3e20: 00000003 cf33c800 00000000 00000000 cf369800
>>> cf073e4c cf072000 c02f8b20
>>> [    2.043994] 3e40: 00000002 c02f25cc 00000002 02544d53 41303447
>>> 1026c914 2600bbbd c0ff8000
>>> [    2.052605] 3e60: c0455884 cf33c800 00000000 c0455884 c0455890
>>> 00000000 cf072000 c02f92bc
>>> [    2.061217] 3e80: c0455890 00ff8000 00000002 cf33cb14 cf33c800
>>> c02f3a28 cf041ac0 cf33cb14
>>> [    2.069829] 3ea0: cf050c00 cf051c00 00000000 c00507ec 00000002
>>> 00000000 c0050778 c0050f10
>>> [    2.078441] 3ec0: 00000000 00000000 c0af7268 c06aa1c4 00000000
>>> c0518cd0 cf06a080 cf041ac0
>>> [    2.087054] 3ee0: cf050c00 cf072000 cf050c30 cf041ad8 00000089
>>> c05d7b5c cf050c00 c0050e4c
>>> [    2.095665] 3f00: 00000000 cf072000 60000113 cf04dda8 00000000
>>> cf041ac0 c0050d08 00000000
>>> [    2.104276] 3f20: 00000000 00000000 00000000 c0056c94 c0429a18
>>> 00000000 00000001 cf041ac0
>>> [    2.112888] 3f40: 00000000 00000001 dead4ead ffffffff ffffffff
>>> c05ec0a0 00000000 00000000
>>> [    2.121499] 3f60: c04ddadc cf073f64 cf073f64 00000000 00000001
>>> dead4ead ffffffff ffffffff
>>> [    2.130112] 3f80: c05ec0a0 00000000 00000000 c04ddadc cf073f90
>>> cf073f90 cf073fac cf04dda8
>>> [    2.138724] 3fa0: c0056bf0 00000000 00000000 c0013588 00000000
>>> 00000000 00000000 00000000
>>> [    2.147334] 3fc0: 00000000 00000000 00000000 00000000 00000000
>>> 00000000 00000000 00000000
>>> [    2.155946] 3fe0: 00000000 00000000 00000000 00000000 00000013
>>> 00000000 57e0c5db 5ffb7d3c
>>> [    2.164565] [<c0305b70>] (omap_hsmmc_start_command+0x74/0xf4) from
>>> [<00000003>] (0x3)
>>> [    2.172814] Code: 13a03801 0a00001b e590c008 e5914000 (e59cc00c)
>>> [    2.179314] ---[ end trace 6ec9899a56aef6aa ]---
>>>
>>> I have also noticed that when the kernel boots okay (without a card
>>> inserted), if
>>> I then insert a card, nothing happens (even with CONFIG_MMC_DEBUG=y)
>>> ... including
>>> no kernel oops.
>>>
>>> Can anyone shed light on what's wrong ?
>>
>> I see this issue too on -rc1. The mmc host pointer is mangled but this
>> could be
>> due to something totally unrelated.
>>
> Hi Joel,
> 
> With DMA channel info retrieved from dt binding on 3.11rc1,
> unused_chan_list is broken after hwmod cleanup removing mmc sdma
> resource info, hence pdev resource wont have DMA resource populated.

Thanks for letting me know. I will try to populate the unused channel
list differently and will post a patch.

Regards,

-Joel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* ARM: AM335x: Kernel oops when using EDMA and MMC
  2013-07-18 16:47     ` Daniel Mack
@ 2013-07-18 17:02       ` Joel Fernandes
  0 siblings, 0 replies; 8+ messages in thread
From: Joel Fernandes @ 2013-07-18 17:02 UTC (permalink / raw)
  To: linux-arm-kernel

On 07/18/2013 11:47 AM, Daniel Mack wrote:
> Hi Balaji,
> 
> On 18.07.2013 18:40, Balaji T K wrote:
>> With DMA channel info retrieved from dt binding on 3.11rc1,
>> unused_chan_list is broken after hwmod cleanup removing mmc sdma
>> resource info, hence pdev resource wont have DMA resource populated.
>>
>> arch/arm/common/edma.c
>> static int prepare_unused_channel_list(struct device *dev, void *data)
>> {
>> 	struct platform_device *pdev = to_platform_device(dev);
>> 	int i, ctlr;
>>
>> 	for (i = 0; i < pdev->num_resources; i++) {
>> 		if ((pdev->resource[i].flags & IORESOURCE_DMA) &&
>> 				(int)pdev->resource[i].start >= 0) {
>> 			ctlr = EDMA_CTLR(pdev->resource[i].start);
>> 			clear_bit(EDMA_CHAN_SLOT(pdev->resource[i].start),
>> 					edma_cc[ctlr]->edma_unused);
>> 		}
>> 	}
>>
>> 	return 0;
>> }
>>
>> int edma_alloc_channel(int channel,
>> 	if (!unused_chan_list_done) {
>> 		/*
>> 		 * Scan all the platform devices to find out the EDMA channels
>> 		 * used and clear them in the unused list, making the rest
>> 		 * available for ARM usage.
>> 		 */
>> 		ret = bus_for_each_dev(&platform_bus_type, NULL, NULL,
>> 				prepare_unused_channel_list);
>> 		if (ret < 0)
>> 			return ret;
>>
>> 		unused_chan_list_done = true;
>> 	}
>>
>> ===========
>>
>> with the below hack patch, edma is working fine with mmc on your 3.11rc1+ branch
>>
>> diff --git a/arch/arm/common/edma.c b/arch/arm/common/edma.c
>> index a432e6c..5a19164 100644
>> --- a/arch/arm/common/edma.c
>> +++ b/arch/arm/common/edma.c
>> @@ -1262,8 +1262,8 @@ int edma_start(unsigned channel)
>>   		if (test_bit(channel, edma_cc[ctlr]->edma_unused)) {
>>   			pr_debug("EDMA: ESR%d %08x\n", j,
>>   				edma_shadow0_read_array(ctlr, SH_ESR, j));
>> -			edma_shadow0_write_array(ctlr, SH_ESR, j, mask);
>> -			return 0;
>> +//			edma_shadow0_write_array(ctlr, SH_ESR, j, mask);
>> +//			return 0;
>>   		}
>>
>>   		/* EDMA channel with event association */
>>
> 
> Yes, this in fact works for me as well. Thanks for the quick reply! What
> would be the proper fix for this?

Correct fix would be in the common EDMA driver to populate the unused
channel list correctly as found by Balaji.

Thanks,

-Joel

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2013-07-18 17:02 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-07-17 15:55 ARM: AM335x: Kernel oops when using EDMA and MMC Mark Jackson
2013-07-17 16:28 ` Mark Jackson
2013-07-17 16:38 ` Joel Fernandes
2013-07-18  8:55   ` Mark Jackson
2013-07-18 16:40   ` Balaji T K
2013-07-18 16:47     ` Daniel Mack
2013-07-18 17:02       ` Joel Fernandes
2013-07-18 17:00     ` Joel Fernandes

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).