Re: [RFC PATCH] mtd: spi-nor: add support to non-uniform SPI NOR flash memories

From: Tudor Ambarus
Date: Thu May 24 2018 - 04:39:58 EST


Hi, Marek,

On 05/23/2018 03:54 PM, Marek Vasut wrote:
On 05/23/2018 02:52 PM, Tudor Ambarus wrote:
Hi, Marek,

Hi,

On 05/23/2018 12:56 PM, Marek Vasut wrote:
[...]
[...]

+ while (len) {
+ cmd = spi_nor_find_best_erase_cmd(map, region, addr, len);
+ if (!cmd)
+ return -EINVAL;
What would happen if you realize mid-way that you cannot erase some
sector , do you end up with partial erase ?
Is this possible? In non-overlaid regions, the address is aligned with
at least one of the erase commands, else -EINVAL. For overlaid regions
alignment doesn't matter. But yes, if this is possible, in this case,
this proposal will do a partial erase.
Shouldn't we fail up front instead ?
It will be great if we can do this without having performance penalties.
Can we loose the conditions for the last erase command? If one wants to
erase 80k chunk starting from offset 0 and only 32k and 64k erase type
are supported, can we erase 96k?
No. But can you maybe build a list of erase commands to be executed once
you validate that the erase can be performed for example ?

My second choice was an array witch saves u8 opcode and u32 erasesize.
There are flashes of 256MB, in the worst case scenario with 4k erase
type, we will end up with 64K entries.

Some RLE encoding might help here ?

Nice.


How about enforcing the length to be multiple of mtd->erasesize, like we
do in uniform_erase? With this, the problem disappears.

What is the erase size for the 4k-sector 256MiB flash ?

S70FS01GS[1] is a 128 MByte flash with non-uniform erase support. It
supports 4k and 256k erase types. I would have to enforce the address
and the length to be multiple of 256k in order to vanish the issue. But
the whole point of non-uniform erase will vanish too, I guess.

I don't have any other good :) idea, so I'll implement your suggestion
with the list of erase commands and RLE encoding.

Thanks,
ta

[1] http://www.cypress.com/file/215911/download