[BUG] Raspberry Pi 4B EMMC2 fails when `sdtress` is run with more than 1023 bytes
Description / Steps to reproduce the issue
This issue occurs with the raspberrypi-4b:sd configuration. EMMC2 speed does not affect these results.
The sdstress test passes, so long as I configure it with the byte parameter as 1023 or less. The moment I make it 1024 bytes or larger, I get a lot of errors. I would imagine that this is something to do with the block gaps/the maximum supported transfer size being 1KB.
1023 byte stress test output:
nsh> sdstress -b 1023
Start stress test with 64 files, 1023 bytes and 32 iterations.
iteration 0 took 2607.000 ms: OK
iteration 1 took 1830.000 ms: OK
iteration 2 took 1566.000 ms: OK
iteration 3 took 3877.000 ms: OK
iteration 4 took 1608.000 ms: OK
iteration 5 took 1675.000 ms: OK
iteration 6 took 1605.000 ms: OK
iteration 7 took 1604.000 ms: OK
iteration 8 took 1602.000 ms: OK
iteration 9 took 1594.000 ms: OK
iteration 10 took 1704.000 ms: OK
iteration 11 took 1710.000 ms: OK
iteration 12 took 1664.000 ms: OK
iteration 13 took 1634.000 ms: OK
iteration 14 took 1650.000 ms: OK
iteration 15 took 1735.000 ms: OK
iteration 16 took 1658.000 ms: OK
iteration 17 took 1741.000 ms: OK
iteration 18 took 1661.000 ms: OK
iteration 19 took 1771.000 ms: OK
iteration 20 took 1690.000 ms: OK
iteration 21 took 1671.000 ms: OK
iteration 22 took 3241.000 ms: OK
iteration 23 took 2973.000 ms: OK
iteration 24 took 1914.000 ms: OK
iteration 25 took 2064.000 ms: OK
iteration 26 took 2490.000 ms: OK
iteration 27 took 1617.000 ms: OK
iteration 28 took 1616.000 ms: OK
iteration 29 took 1701.000 ms: OK
iteration 30 took 1633.000 ms: OK
iteration 31 took 1625.000 ms: OK
Test OK: Average time: 1897.844 ms
nsh>
Output of stress test when above 1023 bytes:
nsh> sdstress -b 1024
Start stress test with 64 files, 1024 bytes and 32 iterations.
[ 396.530000] mmcsd_readmultiple: ERROR: Card not ready: -110
[ 396.534000] mmcsd_sendcmdpoll: ERROR: Wait for response to cmd: 0000004d failed: -110
read /sd/stress/[ 396.593000] mmcsd_sendcmdpoll: ERROR: Wait for response to cmd: 0000004d failed: -110
tmp000 failed, r[ 396.652000] mmcsd_sendcmdpoll: ERROR: Wait for response to cmd: 0000004d failed: -110
et: -1, errno 11[ 396.711000] mmcsd_sendcmdpoll: ERROR: Wait for response to cmd: 0000004d failed: -110
0 -> Unknown err[ 396.770000] mmcsd_sendcmdpoll: ERROR: Wait for response to cmd: 0000004d failed: -110
or 110
iteratio[ 396.829000] mmcsd_sendcmdpoll: ERROR: Wait for response to cmd: 0000004d failed: -110
n 0 took 1067.00[ 396.888000] mmcsd_sendcmdpoll: ERROR: Wait for response to cmd: 0000004d failed: -110
0 ms: FAIL
Test[ 396.947000] mmcsd_sendcmdpoll: ERROR: Wait for response to cmd: 0000004d failed: -110
FAIL: Average t[ 397.006000] mmcsd_sendcmdpoll: ERROR: Wait for response to cmd: 0000004d failed: -110
ime: 33.344 ms
[ 397.065000] mmcsd_sendcmdpoll: ERROR: Wait for response to cmd: 0000004d failed: -110
nsh> [ 397.124000] mmcsd_sendcmdpoll: ERROR: Wait for response to cmd: 0000004d failed: -110
[ 397.183000] mmcsd_sendcmdpoll: ERROR: Wait for response to cmd: 0000004d failed: -110
[ 397.242000] mmcsd_sendcmdpoll: ERROR: Wait for response to cmd: 0000004d failed: -110
[ 397.301000] mmcsd_sendcmdpoll: ERROR: Wait for response to cmd: 0000004d failed: -110
[ 397.360000] mmcsd_sendcmdpoll: ERROR: Wait for response to cmd: 0000004d failed: -110
[ 397.419000] mmcsd_sendcmdpoll: ERROR: Wait for response to cmd: 0000004d failed: -110
[ 397.478000] mmcsd_sendcmdpoll: ERROR: Wait for response to cmd: 0000004d failed: -110
[ 397.537000] mmcsd_writesingle: ERROR: Card not ready: -110
[ 397.537000] file_put: ERROR: fs putfilep file_close() failed: -110
After this, it hangs. Following a reboot, here are the contents of the created stress/ directory:
nsh> ls -l /sd/stress
/sd/stress:
-rw-rw-rw- 0 tmp000
nsh>
On which OS does this issue occur?
[OS: Linux]
What is the version of your OS?
Arch Linux
NuttX Version
master
Issue Architecture
[Arch: arm64]
Issue Area
[Area: Drivers]
Host information
N/A
Verification
- [x] I have verified before submitting the report.
Testing on multiple SD cards confirms the same thing: https://github.com/apache/nuttx/pull/17245#issuecomment-3483213289