[PATCH 0/2] MTD: Move reboot notifier from UBI to cfi_cmdset_0002

Kevin Cernekee cernekee at gmail.com
Tue Apr 13 16:30:08 EDT 2010


During the last filesystem sync prior to rebooting, UBI/UBIFS typically
schedules a flash erase operation.  It is important to ensure that this
operation completes before restarting the system, for the following
reasons:

1) Some systems do not toggle the flash reset pin upon rebooting, so if
the flash is stuck in erase/program mode the bootloader will not come
back up.  This is especially likely on NOR flash devices since the erase
time can be 1-2 seconds.

2) While UBI is able to recover gracefully from partial erasures, that
doesn't mean it is a good idea to intentionally allow them to happen on
a regular basis.  At the minimum it will cause another unnecessary
erasure when the system comes back up.

3) It's not very polite to leave the hardware in an unclean state.

A reboot notifier was previously added to UBI to handle this condition,
but it caused problems with hibernation and does not handle the general
case of "flash operation in progress during reboot."  Some background
information can be found here:

http://lists.infradead.org/pipermail/linux-mtd/2010-March/029477.html

http://lkml.org/lkml/2009/6/9/16

http://lkml.org/lkml/2010/2/12/114

http://lkml.org/lkml/2010/2/12/144

Note that the bootloader cannot even begin execution if the NOR flash is
not in read array mode.  There is only one NOR flash chip on this system
and it contains both the bootloader and the Linux filesystems.  This is
not a bug in the bootloader.  Similar problems have been seen on other
boards:

http://www.mail-archive.com/davinci-linux-open-source@linux.davincidsp.com/msg14071.html

http://www.mail-archive.com/bk-commits-head@vger.kernel.org/msg06294.html

This set of patches adds a new reboot notifier to the AMD flash driver,
then removes the UBI reboot notifier.  I have verified that the new
scheme is equally effective in solving the original problem.




More information about the linux-mtd mailing list