All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH RESEND u-boot-spi 0/8] Fix `mtd erase` when used with mtdpart
@ 2021-07-14 23:51 Marek Behún
  2021-07-14 23:51 ` [PATCH RESEND u-boot-spi 1/8] mtd: spi-nor-core: Try cleaning up in case writing BAR failed Marek Behún
                   ` (9 more replies)
  0 siblings, 10 replies; 24+ messages in thread
From: Marek Behún @ 2021-07-14 23:51 UTC (permalink / raw)
  To: Masami Hiramatsu, Simon Glass, Miquel Raynal, Jagan Teki,
	Tom Rini, u-boot
  Cc: Patrice Chotard, Patrick Delaunay, Heiko Schocher,
	Pali Rohár, Marek Behún

Hello,

I accidentally forgot to send this series to U-Boot's mailing list last
time, meaning it did not end up in patchwork, so now I am resending it.
Sorry for this mess.

The original cover letter said:

this patch series fixes the `mtd erase` command when used with mtdpart
with a partition of non-zero offset.

Currently when the `mtd erase` command is used for such a partition,
it does not erase all blocks. Instead after a block is erased, the next
block address not current block address + block size, but current block
address + block size + partition offset, due to spi_nor_erase() not
calling mtd_erase_callback():
  => mtd erase "Rescue system"
  Erasing 0x00000000 ... 0x006fffff (1792 eraseblock(s))
  jedec_spi_nor spi-nor@0: at 0x100000, len 4096
  jedec_spi_nor spi-nor@0: at 0x201000, len 4096
  jedec_spi_nor spi-nor@0: at 0x302000, len 4096
  jedec_spi_nor spi-nor@0: at 0x403000, len 4096
  jedec_spi_nor spi-nor@0: at 0x504000, len 4096
  jedec_spi_nor spi-nor@0: at 0x605000, len 4096
  jedec_spi_nor spi-nor@0: at 0x706000, len 4096

This series adds some fixes to spi_nor_erase() function, then adds
calling of mtd_erase_callback() to fix this bug.

The series also contains an improvement - adding the posibility to
interrupt spi_nor_erase() with Ctrl+C; and another one - making mtdpart's
_erase() method more sane so that the above mentioned bug will not occur
even if underlying driver does not call mtd_erase_callback().

Moreover I would also like to start a discussion regarding the MTD
subsystem:
- U-Boot's MTD subsystem is based on Linux's, with many #ifdef __U_BOOT__
  macros
- this was done to make it easier to port Linux's patches to U-Boot
- the problem is that it seems nobody did port Linux's MTD patches to
  U-Boot for a long time, the code is many times different from Linux',
  and it would be very hard to align it
- therefore I propose to get rid of all the #ifdefs, remove the Linux
  specific code, and continue developing the code independently from
  Linux. This would make it impossible to apply Linux patches in some
  kind of automatic way, but this is currently already impossible
  anyway
What do you guys think?

Marek

Marek Behún (8):
  mtd: spi-nor-core: Try cleaning up in case writing BAR failed
  mtd: spi-nor-core: Check return value of write_enable() in
    spi_nor_erase()
  mtd: spi-nor-core: Don't overwrite return value if it is non-zero
  mtd: spi-nor-core: Check return value of write_disable() in
    spi_nor_erase()
  mtd: spi-nor-core: Don't check for zero length in spi_nor_erase()
  mtd: spi-nor-core: Call mtd_erase_callback() from spi_nor_erase()
  mtd: spi-nor-core: Check for ctrlc() in spi_nor_erase()
  mtd: mtdpart: Make mtdpart's _erase method sane

 drivers/mtd/mtdpart.c          | 26 +++++++++++++-------
 drivers/mtd/spi/spi-nor-core.c | 44 ++++++++++++++++++++++++++--------
 2 files changed, 52 insertions(+), 18 deletions(-)

-- 
2.31.1


^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2021-07-23  1:18 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-14 23:51 [PATCH RESEND u-boot-spi 0/8] Fix `mtd erase` when used with mtdpart Marek Behún
2021-07-14 23:51 ` [PATCH RESEND u-boot-spi 1/8] mtd: spi-nor-core: Try cleaning up in case writing BAR failed Marek Behún
2021-07-20 18:32   ` Simon Glass
2021-07-21 15:49   ` Jagan Teki
2021-07-14 23:51 ` [PATCH RESEND u-boot-spi 2/8] mtd: spi-nor-core: Check return value of write_enable() in spi_nor_erase() Marek Behún
2021-07-20 18:32   ` Simon Glass
2021-07-21 15:50   ` Jagan Teki
2021-07-14 23:51 ` [PATCH RESEND u-boot-spi 3/8] mtd: spi-nor-core: Don't overwrite return value if it is non-zero Marek Behún
2021-07-20 18:32   ` Simon Glass
2021-07-14 23:51 ` [PATCH RESEND u-boot-spi 4/8] mtd: spi-nor-core: Check return value of write_disable() in spi_nor_erase() Marek Behún
2021-07-20 18:32   ` Simon Glass
2021-07-14 23:51 ` [PATCH RESEND u-boot-spi 5/8] mtd: spi-nor-core: Don't check for zero length " Marek Behún
2021-07-20 18:32   ` Simon Glass
2021-07-14 23:51 ` [PATCH RESEND u-boot-spi 6/8] mtd: spi-nor-core: Call mtd_erase_callback() from spi_nor_erase() Marek Behún
2021-07-20 18:32   ` Simon Glass
2021-07-14 23:51 ` [PATCH RESEND u-boot-spi 7/8] mtd: spi-nor-core: Check for ctrlc() in spi_nor_erase() Marek Behún
2021-07-20 18:33   ` Simon Glass
2021-07-14 23:51 ` [PATCH RESEND u-boot-spi 8/8] mtd: mtdpart: Make mtdpart's _erase method sane Marek Behún
2021-07-20 18:33   ` Simon Glass
2021-07-20 18:33 ` [PATCH RESEND u-boot-spi 0/8] Fix `mtd erase` when used with mtdpart Simon Glass
2021-07-21 16:16 ` Jagan Teki
2021-07-22 20:44   ` Marek Behun
2021-07-22 22:14     ` Tom Rini
2021-07-23  1:18   ` Marek Behun

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.