v1.5 branch refresh based upon upstream master @ c8677ca89e53e3be7988d54280fce166cc894a7e
[librecmc/librecmc.git] / target / linux / generic / pending-4.9 / 460-mtd-cfi_cmdset_0002-no-erase_suspend.patch
1 From: Felix Fietkau <nbd@nbd.name>
2 Subject: kernel: disable cfi cmdset 0002 erase suspend
3
4 on some platforms, erase suspend leads to data corruption and lockups when write
5 ops collide with erase ops. this has been observed on the buffalo wzr-hp-g300nh.
6 rather than play whack-a-mole with a hard to reproduce issue on a variety of devices,
7 simply disable erase suspend, as it will usually not produce any useful gain on
8 the small filesystems used on embedded hardware.
9
10 Signed-off-by: Felix Fietkau <nbd@nbd.name>
11 ---
12  drivers/mtd/chips/cfi_cmdset_0002.c | 2 +-
13  1 file changed, 1 insertion(+), 1 deletion(-)
14
15 --- a/drivers/mtd/chips/cfi_cmdset_0002.c
16 +++ b/drivers/mtd/chips/cfi_cmdset_0002.c
17 @@ -807,7 +807,7 @@ static int get_chip(struct map_info *map
18                 return 0;
19  
20         case FL_ERASING:
21 -               if (!cfip || !(cfip->EraseSuspend & (0x1|0x2)) ||
22 +               if (1 /* no suspend */ || !cfip || !(cfip->EraseSuspend & (0x1|0x2)) ||
23                     !(mode == FL_READY || mode == FL_POINT ||
24                     (mode == FL_WRITING && (cfip->EraseSuspend & 0x2))))
25                         goto sleep;