Setting write reliability on eMMC

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I'm trying to enable write reliability on the (default) user partition of an eMMC 4.41 device in the hopes that it might help to prevent flash corruption during unwanted power cycling.  The device is an ARM system not too dissimilar from a BeagleBone Black.

I have used the mmc-util package, but I receive an error when setting the register.  The intended setting can be read in the extcsd subsequent to a power cycle, but as partitioning is incomplete, I have no confidence that the device is in fact operating  in reliable write mode.  I searched for an appropriate discussion forum for the mmc-util itself, but could find none.  I contacted (days apart) two different contributors who had contributed code relevant to this setting (both write reliability and continue  vs. finalizing the OTP operation), but have yet to receive any acknowledgement (not even an RTFM).

I realize that this here is a discussion forum for development of mmc support for linux, and not a support forum for mmc-utils itself, but surely setting this feature should not be shrouded in the dark arts?  I need to be able to set it and know it is in  effect so that I can run testing on the device.  Since it is an OTP (One Time Programming) operation, every time I attempt to set the feature the device I'm using is then in a partially programmed state (although I have tried both completion and continuation  flags), and I cannot expect to set the write reliability again without receiving an error, so I've got to abuse yet another device for the next iteration.


mmc write_reliability set -y 0 /dev/mmcblk0


Done setting EXT_CSD_WR_REL_SET to 0x01 on /dev/mmcblk0
setting OTP PARTITION_SETTING_COMPLETED!
Setting OTP PARTITION_SETTING_COMPLETED failed on /dev/mmcblk0
Note that I'm not getting an "device is already partitioned" (which would be expected if I tried to update the setting on a device I'd already tried setting it on, but I don't even get that error after a power cycle), or anything about the WR_REL_SET being  read-only.

Once set, I can do nothing to _unset_ it, so it seems reasonable that it's been stored in the OTP, but why the error when setting, and also in the extcsd:


Partitioning Setting [PARTITION_SETTING_COMPLETED]: 0x00
 Device partition setting NOT complete
General Purpose Partition Size
 [GP_SIZE_MULT_4]: 0x000000
 [GP_SIZE_MULT_3]: 0x000000
 [GP_SIZE_MULT_2]: 0x000000
 [GP_SIZE_MULT_1]: 0x000000


I can post more output if needed.  I would greatly appreciate any insight anyone might offer here.

Apologies in advance for the IT-inserted footer below.
 The information contained in this message may be privileged and confidential. It is intended to be read only by the individual or entity to whom it is addressed or by their designee. If the reader of this message is not the intended recipient, you are on notice  that any distribution of this message, in any form, is strictly prohibited. If you have received this message in error, please immediately notify the sender and delete or destroy any copy of this message!
The information contained in this message may be privileged and confidential. It is intended to be read only by the individual or entity to whom it is addressed or by their designee. If the reader of this message is not the intended recipient, you are on notice that any distribution of this message, in any form, is strictly prohibited. If you have received this message in error, please immediately notify the sender and delete or destroy any copy of this message!
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux