I disabled ADMA and SDMA in sdhci and the system stuck at kernel boot stage. It shows that the sdhci interrupt is timeout when it is performing multi_blocks writing. The logs is as following:
[ 8.343185] sdhci_send_command opcode=0x12 arg=0x1840c38 flags=0xb5 retries=0
[ 8.343341] sdhci_send_command blksz=512 blocks=8 blk_addr=25431096 sg_len=1 sg_count=0
[ 8.344384] sdhci_send_command opcode=0x12 arg=0x1840c40 flags=0xb5 retries=0
[ 8.347086] sdhci_send_command blksz=512 blocks=8 blk_addr=25431104 sg_len=1 sg_count=0
[ 8.356198] sdhci_send_command opcode=0x19 arg=0x28 flags=0xb5 retries=0
[ 8.361447] sdhci_send_command blksz=512 blocks=24 blk_addr=40 sg_len=3 sg_count=0
[ 18.471688] mmc1: Timeout waiting for hardware interrupt.
[ 18.471824] mmc1: sdhci: ============ SDHCI REGISTER DUMP ===========
[ 18.471957] mmc1: sdhci: Sys addr: 0x00000018 | Version: 0x00000505
[ 18.472086] mmc1: sdhci: Blk size: 0x00007200 | Blk cnt: 0x00000015
[ 18.472216] mmc1: sdhci: Argument: 0x00000028 | Trn mode: 0x0000002e
[ 18.472345] mmc1: sdhci: Present: 0x01fb01f6 | Host ctl: 0x00000021
[ 18.472474] mmc1: sdhci: Power: 0x00000001 | Blk gap: 0x00000000
[ 18.472612] mmc1: sdhci: Wake-up: 0x00000000 | Clock: 0x00000007
[ 18.472744] mmc1: sdhci: Timeout: 0x0000000e | Int stat: 0x00000000
[ 18.472876] mmc1: sdhci: Int enab: 0x01ff0033 | Sig enab: 0x01fc0033
[ 18.473002] mmc1: sdhci: ACmd stat: 0x00000000 | Slot int: 0x00000000
[ 18.473127] mmc1: sdhci: Caps: 0x3f6cd08c | Caps_1: 0x18002f73
[ 18.473614] mmc1: sdhci: Cmd: 0x0000193a | Max curr: 0x00000000
[ 18.474109] mmc1: sdhci: Resp[0]: 0x00000900 | Resp[1]: 0x04800e99
[ 18.474601] mmc1: sdhci: Resp[2]: 0x34cb8000 | Resp[3]: 0x00000240
[ 18.476841] mmc1: sdhci: Host ctl2: 0x0000088b
[ 18.480969] mmc1: sdhci: ============================================
[ 18.487698] sdhci_do_reset!!!!!!
How can I fix it? thanks