[PATCH] cfi: Fixup of write errors on XIP
Korolev, Alexey
alexey.korolev at intel.com
Wed Feb 22 13:17:09 EST 2006
Hi all,
Here is fixup of issue I have seen on XIP configuration.
Sometimes I received write errors with message "buffer write error
(status timeout)" on test which did read write and erase on several
volumes at the same time.
I investigated the issue.
The scenario of the issue is following:
1. do_write_buffer
2. Waiting for write complete in xip_udelay
3. System Interrupt
4. Write suspend
5. Rescheduling
6. Block erasing by other process. ( This operation typically took
rather long time )
7. Complete, rescheduling
8. Return to write (write is not complete due to suspend ).
9. Check timeout. Time is up.
10. Error.
I made small fixup for these issue. Please see patch below.
Thanks,
Alexey
===================================================================
--- c/drivers/mtd/chips/cfi_cmdset_0001.c 2006-02-22
20:58:05.869203280 +0300
+++ b/drivers/mtd/chips/cfi_cmdset_0001.c 2006-02-22
20:55:42.272033368 +0300
@@ -1571,6 +1571,7 @@
/* GO GO GO */
map_write(map, CMD(0xd0), cmd_adr);
chip->state = FL_WRITING;
+ chip->write_suspended = 0;
INVALIDATE_CACHE_UDELAY(map, chip, cmd_adr,
adr, len,
@@ -1592,6 +1593,12 @@
continue;
}
+ /* Somebody suspended write. We should reset timeo. */
+ if (chip->write_suspended) {
+ chip->write_suspended = 0;
+ timeo = jiffies + (HZ/2);
+ }
+
status = map_read(map, cmd_adr);
if (map_word_andequal(map, status, status_OK,
status_OK))
break;
====================================================================
More information about the linux-mtd
mailing list