[PATCH v6 0/7] fwu: gpt: implement read_mdata and write_mdata callbacks
jassisinghbrar at gmail.com
jassisinghbrar at gmail.com
Tue Mar 7 00:17:47 CET 2023
From: Jassi Brar <jaswinder.singh at 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
More information about the U-Boot
mailing list