Testing various values of cycle_delay and I'm getting catastrophic corruption in Raspbian with the Transcend Class 10 (arm=750/core=255/over_volt=+3). I tested cycle_delays of 10, 100, 1000 and 10000 and every time the same result.
I've been testing with the following firmware:
Code: Select all
pi@raspberrypi ~ $ uname -a
Linux raspberrypi 3.2.27+ #238 PREEMPT Fri Oct 5 23:19:10 BST 2012 armv6l GNU/Linux
pi@raspberrypi ~ $ vcgencmd version
Oct 6 2012 15:41:08
Copyright (c) 2012 Broadcom
version 342154 (release)
My test procedure is to boot in to Raspbian and perform "dd if=/dev/zero of=./test.dat bs=1M count=500" as user pi - this results in a mass of errors appearing in syslog (
pastebin). No quake or anything fancy, just run dd.
I treated myself to a SanDisk Extreme 32GB Class 10/UHS-1 (image below) and this shows different results for the same 750/255/+3 overclock settings - not corruption as such, but the dd test simply never completes (cycle_delay=10/100/1,000/default, but maybe I ran out of patience) or completes veeeery slowly (cycle_delay = 10,000).
This is a picture of the card so you know which one I'm referring to:
The only messages to appear in syslog when performing the dd test with the SanDisk card are the following
(with no cycle_delay in cmdline.txt):
Code: Select all
Oct 6 20:16:50 raspberrypi kernel: [ 69.888745] mmc0: final write to SD card still running
(and with cycle_delay=10):
Code: Select all
Oct 6 20:29:02 raspberrypi kernel: [ 224.672402] mmc0: Timeout waiting for hardware interrupt - cmd25.
Oct 6 20:29:02 raspberrypi kernel: [ 224.672441] mmc0: resetting ongoing cmd 25DMA before 524288/524288 [1]/[1] complete
(and with cycle_delay=10,000, when dd did complete after almost 4 minutes instead of the usual 30 seconds):
Code: Select all
Oct 6 20:55:12 raspberrypi kernel: [ 96.028837] mmc0: final write to SD card still running
Oct 6 20:55:22 raspberrypi kernel: [ 106.032651] mmc0: Timeout waiting for hardware interrupt - cmd12.
Oct 6 20:55:22 raspberrypi kernel: [ 106.033851] mmcblk0: error -110 sending stop command, original cmd response 0x900, card status 0x900
Oct 6 20:55:40 raspberrypi kernel: [ 123.296837] mmc0: final write to SD card still running
Oct 6 20:55:50 raspberrypi kernel: [ 133.312650] mmc0: Timeout waiting for hardware interrupt - cmd12.
Oct 6 20:55:50 raspberrypi kernel: [ 133.313874] mmcblk0: error -110 sending stop command, original cmd response 0x900, card status 0x900
Oct 6 20:56:07 raspberrypi kernel: [ 150.324287] mmc0: final write to SD card still running
Oct 6 20:56:17 raspberrypi kernel: [ 160.352653] mmc0: Timeout waiting for hardware interrupt - cmd12.
Oct 6 20:56:17 raspberrypi kernel: [ 160.353870] mmcblk0: error -110 sending stop command, original cmd response 0x900, card status 0x900
Oct 6 20:56:34 raspberrypi kernel: [ 177.405500] mmc0: final write to SD card still running
Oct 6 20:56:44 raspberrypi kernel: [ 187.432655] mmc0: Timeout waiting for hardware interrupt - cmd12.
Oct 6 20:56:44 raspberrypi kernel: [ 187.433887] mmcblk0: error -110 sending stop command, original cmd response 0x900, card status 0x900
Oct 6 20:57:52 raspberrypi kernel: [ 255.473948] mmc0: final write to SD card still running
Oct 6 20:58:02 raspberrypi kernel: [ 265.492647] mmc0: Timeout waiting for hardware interrupt - cmd12.
Oct 6 20:58:02 raspberrypi kernel: [ 265.493852] mmcblk0: error -110 sending stop command, original cmd response 0x900, card status 0x900
Oct 6 20:58:44 raspberrypi kernel: [ 307.737709] mmc0: final write to SD card still running
Oct 6 20:58:54 raspberrypi kernel: [ 317.752645] mmc0: Timeout waiting for hardware interrupt - cmd12.
Oct 6 20:58:54 raspberrypi kernel: [ 317.753863] mmcblk0: error -110 sending stop command, original cmd response 0x900, card status 0x900
Oct 6 20:59:11 raspberrypi kernel: [ 334.793598] mmc0: final write to SD card still running
Oct 6 20:59:21 raspberrypi kernel: [ 344.812649] mmc0: Timeout waiting for hardware interrupt - cmd12.
Oct 6 20:59:21 raspberrypi kernel: [ 344.813843] mmcblk0: error -110 sending stop command, original cmd response 0x900, card status 0x900
With other values of cycle_delay (100 and 1000) there were no messages at all written to syslog.
During the dd test with the SanDisk card, the system becomes unresponsive when executing most new commands (eg. sudo reboot, or starting a new ssh session) - it's as though the Pi is blocked when trying to read or execute the new commands (perhaps blocked when accessing the SD card?)
If I power cycle the Pi during one of these "stuck" dd tests the ext4 filesystem comes up clean on the next boot, however the test.dat file is not present, presumably removed by the fsck during the boot process. The test.dat file is definitely being created - I managed to view it on several occasions prior to power cycling, but it seemed to have become stuck at different points of the file creation process:
Code: Select all
pi@raspberrypi ~ $ ls -la test.dat
-rw-r--r-- 1 pi pi 64065536 Oct 6 20:36 test.dat
and
Code: Select all
pi@raspberrypi ~ $ ls -la test.dat
-rw-r--r-- 1 pi pi 58298368 Oct 6 20:43 test.dat
The only time the dd command completed was with cycle_delay=10,000 - however it completed very slowly:
Code: Select all
dd if=/dev/zero of=./test.dat bs=1M count=500
500+0 records in
500+0 records out
524288000 bytes (524MB) copied, 239.417 s, 2.2MB/s
The same dd test with settings of 750/250/+3 and cycle_delay=10,000 produces the following results:
Code: Select all
dd if=/dev/zero of=./test2.dat bs=1M count=500
500+0 records in
500+0 records out
524288000 bytes (524MB) copied, 25.7545 s, 20.4MB/s
and there is no process/command blocking.
Settings of 750/255/+0 are also fine, so it would seem to be over_voltage=+3 in combination with a very slightly overclocked core_freq that is my problem. I have no corruption or blocking problems with either card at 1000/250/500/ov +6/sdram_ov +4. So it's not simply a problem due to over_voltage. Hmmm...
I've got another Pi order on back order... maybe this ones a bit of a lemon. 3 weeks out though (from CPC).
