aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2011-08-15 00:15:36 +0000
committerFelix Fietkau <nbd@openwrt.org>2011-08-15 00:15:36 +0000
commit498d62ba6b32f6b7bd96501536919c98ede455bb (patch)
treeffda584b59c9bcc179574f33ad53dc2966a1fbfe /target/linux/generic
parent70838d52bd2d3acd0194aad7acaf950cbe178210 (diff)
downloadupstream-498d62ba6b32f6b7bd96501536919c98ede455bb.tar.gz
upstream-498d62ba6b32f6b7bd96501536919c98ede455bb.tar.bz2
upstream-498d62ba6b32f6b7bd96501536919c98ede455bb.zip
kernel: disable cfi cmdset 0002 erase suspend
on some platforms, erase suspend leads to data corruption and lockups when write ops collide with erase ops. this has been observed on the buffalo wzr-hp-g300nh. rather than play whack-a-mole with a hard to reproduce issue on a variety of devices, simply disable erase suspend, as it will usually not produce any useful gain on the small filesystems used on embedded hardware. git-svn-id: svn://svn.openwrt.org/openwrt/trunk@27984 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/generic')
-rw-r--r--target/linux/generic/patches-2.6.39/461-cfi_cmdset_0002_no_erase_suspend.patch11
-rw-r--r--target/linux/generic/patches-3.0/460-cfi_cmdset_0002_no_erase_suspend.patch11
-rw-r--r--target/linux/generic/patches-3.1/460-cfi_cmdset_0002_no_erase_suspend.patch11
3 files changed, 33 insertions, 0 deletions
diff --git a/target/linux/generic/patches-2.6.39/461-cfi_cmdset_0002_no_erase_suspend.patch b/target/linux/generic/patches-2.6.39/461-cfi_cmdset_0002_no_erase_suspend.patch
new file mode 100644
index 0000000000..d7b44ef719
--- /dev/null
+++ b/target/linux/generic/patches-2.6.39/461-cfi_cmdset_0002_no_erase_suspend.patch
@@ -0,0 +1,11 @@
+--- a/drivers/mtd/chips/cfi_cmdset_0002.c
++++ b/drivers/mtd/chips/cfi_cmdset_0002.c
+@@ -684,7 +684,7 @@ static int get_chip(struct map_info *map
+ return 0;
+
+ case FL_ERASING:
+- if (!cfip || !(cfip->EraseSuspend & (0x1|0x2)) ||
++ if (1 /* no suspend */ || !cfip || !(cfip->EraseSuspend & (0x1|0x2)) ||
+ !(mode == FL_READY || mode == FL_POINT ||
+ (mode == FL_WRITING && (cfip->EraseSuspend & 0x2))))
+ goto sleep;
diff --git a/target/linux/generic/patches-3.0/460-cfi_cmdset_0002_no_erase_suspend.patch b/target/linux/generic/patches-3.0/460-cfi_cmdset_0002_no_erase_suspend.patch
new file mode 100644
index 0000000000..04ef193a86
--- /dev/null
+++ b/target/linux/generic/patches-3.0/460-cfi_cmdset_0002_no_erase_suspend.patch
@@ -0,0 +1,11 @@
+--- a/drivers/mtd/chips/cfi_cmdset_0002.c
++++ b/drivers/mtd/chips/cfi_cmdset_0002.c
+@@ -685,7 +685,7 @@ static int get_chip(struct map_info *map
+ return 0;
+
+ case FL_ERASING:
+- if (!cfip || !(cfip->EraseSuspend & (0x1|0x2)) ||
++ if (1 /* no suspend */ || !cfip || !(cfip->EraseSuspend & (0x1|0x2)) ||
+ !(mode == FL_READY || mode == FL_POINT ||
+ (mode == FL_WRITING && (cfip->EraseSuspend & 0x2))))
+ goto sleep;
diff --git a/target/linux/generic/patches-3.1/460-cfi_cmdset_0002_no_erase_suspend.patch b/target/linux/generic/patches-3.1/460-cfi_cmdset_0002_no_erase_suspend.patch
new file mode 100644
index 0000000000..04ef193a86
--- /dev/null
+++ b/target/linux/generic/patches-3.1/460-cfi_cmdset_0002_no_erase_suspend.patch
@@ -0,0 +1,11 @@
+--- a/drivers/mtd/chips/cfi_cmdset_0002.c
++++ b/drivers/mtd/chips/cfi_cmdset_0002.c
+@@ -685,7 +685,7 @@ static int get_chip(struct map_info *map
+ return 0;
+
+ case FL_ERASING:
+- if (!cfip || !(cfip->EraseSuspend & (0x1|0x2)) ||
++ if (1 /* no suspend */ || !cfip || !(cfip->EraseSuspend & (0x1|0x2)) ||
+ !(mode == FL_READY || mode == FL_POINT ||
+ (mode == FL_WRITING && (cfip->EraseSuspend & 0x2))))
+ goto sleep;