public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [PATCH v6 0/7] fwu: gpt: implement read_mdata and write_mdata callbacks
@ 2023-03-06 23:17 jassisinghbrar
  2023-03-06 23:18 ` [PATCH v6 1/7] dt/bindings: fwu-mdata-mtd: drop changes outside FWU jassisinghbrar
                   ` (8 more replies)
  0 siblings, 9 replies; 15+ messages in thread
From: jassisinghbrar @ 2023-03-06 23:17 UTC (permalink / raw)
  To: u-boot
  Cc: ilias.apalodimas, sughosh.ganu, etienne.carriere, trini, sjg,
	xypron.glpk, patrick.delaunay, patrice.chotard, Jassi Brar

From: Jassi Brar <jaswinder.singh@linaro.org>

The patchset reduces ~400 lines of code, while keeping the functionality same and making
meta-data operations much faster (by using cached structures).

Issue:
 meta-data copies (primary and secondary) are being handled by the backend/storage layer
instead of the common core in fwu.c (as also noted by Ilias)  that is, gpt_blk.c manages
meta-data and similarly raw_mtd.c will have to do the same when it arrives. The code
could by make smaller, cleaner and optimised.

Basic idea:
 Introduce  .read_mdata() and .write_mdata() in fwu_mdata_ops  that simply read/write
meta-data copy. The core code takes care of integrity and redundancy of the meta-data,
as a result we can get rid of every other callback .get_mdata() .update_mdata()
.get_mdata_part_num()  .read_mdata_partition()  .write_mdata_partition() and the
corresponding wrapper functions thereby making the code 100s of LOC smaller.

Get rid of fwu_check_mdata_validity() and fwu_mdata_check() which expected underlying
layer to manage and verify mdata copies.
Implement  fwu_get_verified_mdata(struct fwu_mdata *mdata) public function that reads,
verifies and, if needed, fixes the meta-data copies.

Verified copy of meta-data is now cached as 'g_mdata' in fwu.c, which avoids multiple
low-level expensive read and parse calls.
gpt meta-data partition numbers are now cached in gpt_blk.c, so that we don't have to do expensive part_get_info() and uid ops.

Changes since v5:
        * Fix SANDBOX tests
        * Removed '@' from dt nodes
        * misc cosmetic changes suggested by Etienne

Changes since v4:
        * Change fwu-mdata-mtd bindings to not require external changes
        * Handle 'part == BOTH_PARTS' in fwu_sync_mdata
        * use parts_ok[] and parts_mdata[] instead of pri/sec_ok and p/s_mdata

Changes since v3:
        * Fix error log wording
        * call fwu_write_mdata() with part & PRIMARY_PART ? true: false

Changes since v2:
        * Drop whitespace changes
        * Fix missing mdata copy before return

Changes since v1:
        * Fix typos and misc cosmetic changes
        * Catch error returns

Jassi Brar (7):
  dt/bindings: fwu-mdata-mtd: drop changes outside FWU
  fwu: gpt: use cached meta-data partition numbers
  fwu: move meta-data management in core
  fwu: gpt: implement read_mdata and write_mdata callbacks
  fwu: meta-data: switch to management by common code
  fwu: rename fwu_get_verified_mdata to fwu_get_mdata
  test: dm: fwu: fix for the updated api

 cmd/fwu_mdata.c                               |  17 +-
 .../firmware/fwu-mdata-mtd.yaml               | 105 ++++++-
 drivers/fwu-mdata/fwu-mdata-uclass.c          | 151 +--------
 drivers/fwu-mdata/gpt_blk.c                   | 175 +++--------
 include/fwu.h                                 | 198 ++----------
 lib/fwu_updates/fwu.c                         | 296 ++++++++----------
 test/dm/fwu_mdata.c                           |  22 +-
 7 files changed, 299 insertions(+), 665 deletions(-)

-- 
2.34.1


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

end of thread, other threads:[~2023-06-10  0:37 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-06 23:17 [PATCH v6 0/7] fwu: gpt: implement read_mdata and write_mdata callbacks jassisinghbrar
2023-03-06 23:18 ` [PATCH v6 1/7] dt/bindings: fwu-mdata-mtd: drop changes outside FWU jassisinghbrar
2023-06-09  7:42   ` Ilias Apalodimas
2023-03-06 23:18 ` [PATCH v6 2/7] fwu: gpt: use cached meta-data partition numbers jassisinghbrar
2023-03-06 23:18 ` [PATCH v6 3/7] fwu: move meta-data management in core jassisinghbrar
2023-03-16  8:25   ` Ilias Apalodimas
2023-03-06 23:18 ` [PATCH v6 4/7] fwu: gpt: implement read_mdata and write_mdata callbacks jassisinghbrar
2023-03-06 23:18 ` [PATCH v6 5/7] fwu: meta-data: switch to management by common code jassisinghbrar
2023-03-16  8:26   ` Ilias Apalodimas
2023-03-16  8:47     ` Sughosh Ganu
2023-03-06 23:18 ` [PATCH v6 6/7] fwu: rename fwu_get_verified_mdata to fwu_get_mdata jassisinghbrar
2023-03-06 23:18 ` [PATCH v6 7/7] test: dm: fwu: fix for the updated api jassisinghbrar
2023-03-15  9:28   ` Ilias Apalodimas
2023-03-24 12:05 ` [PATCH v6 0/7] fwu: gpt: implement read_mdata and write_mdata callbacks Sughosh Ganu
2023-06-10  0:37 ` Tom Rini

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox