All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v6 00/18] GPT over MTD
@ 2017-05-11  7:51 Patrick Delaunay
  2017-05-11  7:51 ` [U-Boot] [PATCH v6 01/18] uuid: add a function for GUID string parsing Patrick Delaunay
                   ` (18 more replies)
  0 siblings, 19 replies; 29+ messages in thread
From: Patrick Delaunay @ 2017-05-11  7:51 UTC (permalink / raw)
  To: u-boot


I have a request to support GPT over MTD to have the MTD informations
without U-Boot environment(CONFIG_ENV_IS_NOWHERE is a other requirement
of my project to manage several board configuration with
the same defconfig; boot from NAND or NOR or SDCARD).

The current idea is to use the GPT header format to save the partitioning
information directly in flash device (NOR or NAND), then the U-Boot MTD
variables are rebuild from these GPT partitions and can be used by DISTRO
command to search bootable binary.

This information are directly used by BootRom to locate and load
the first bootstage.

The added code is under a new CONFIG : CONFIG_EFI_PARTITION_MTD
and in the new file "disk/part_efi_mtd.c"

For implementation details, see doc/README.gpt.mtd

TODO: full support for modified command (if needed)
      today I limit the support for the command expected
      used by DISTRO macro:
      + gpt write
      + part list

the current level is tested on sandbox with

- test/fs/gpt_mtd-test.sh

or manually with :

> make O=sandbox sandbox_defconfig
> make O=sandbox
> dd if=/dev/zero of=spi.bin bs=1M count=4
> sandbox/u-boot -d sandbox/arch/sandbox/dts/test.dtb

=> sf probe
SF: Detected M25P16 with page size 256 Bytes, erase size 64 KiB, total 2 MiB

=> setenv nor_part "name=part1,size=64KiB;name=part2,size=128KiB;\
   name=boot,type=linux,bootable,size=512KiB"
=> gpt write nor 0 $nor_part
Writing GPT: success!

=> part list nor 0
Part	Start LBA	End LBA		Name
	Attributes
	Type GUID
	Partition GUID
  1	0x00000080	0x000000ff	"part1"
	attrs:	0x0000000000000000
	type:	ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
	type:	data
	guid:	d117f98e-6f2c-0040-00b2-331a19f91cb2
  2	0x00000100	0x000001ff	"part2"
	attrs:	0x0000000000000000
	type:	ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
	type:	data
	guid:	25718777-d0ad-0000-8060-02cb591c9737
  3	0x00000200	0x000005ff	"boot"
	attrs:	0x0000000000000004
	type:	0fc63daf-8483-4772-8e79-3d69d8477de4
	type:	linux
	guid:	8a4bb8b4-e304-0040-0036-aff5c9c495b1

=> setenv mtdids "nor0=nor0"
=> setenv mtdparts "mtdparts="
=> mtdparts gpt nor0
=> mtdparts
device nor0 <nor0>, # parts = 3
 #: name		size		offset		mask_flags
 0: part1               0x00010000	0x00010000	0
 1: part2               0x00020000	0x00020000	0
 2: boot                0x00080000	0x00040000	0

active partition: nor0,0 - (part1) 0x00010000 @ 0x00010000

defaults:
mtdids  : none
mtdparts: none

=> part list nor 0 -bootable nor_boot_part
=> printenv nor_boot_part
nor_boot_part=3

test filtering feature (can be used to mask some partitions to linux
according the GUID)
1/ only add MTD for some guid = linux
2/ then add MTD for some guid = data

=> mtdparts delall
=> setenv mtdparts "mtdparts="
=> setenv mtdids "nor0=nor0"
=> mtdparts gpt nor0 linux
=> mtdparts

device nor0 <nor0>, # parts = 1
 #: name		size		offset		mask_flags
 0: boot                0x00080000	0x00040000	0

active partition: nor0,0 - (boot) 0x00080000 @ 0x00040000

defaults:
mtdids  : none
mtdparts: none

=> mtdparts gpt nor0 data
=> mtdparts

device nor0 <nor0>, # parts = 3
 #: name		size		offset		mask_flags
 0: part1               0x00010000	0x00010000	0
 1: part2               0x00020000	0x00020000	0
 2: boot                0x00080000	0x00040000	0

active partition: nor0,2 - (boot) 0x00080000 @ 0x00040000

defaults:
mtdids  : none
mtdparts: none


Changes in v6:
- rebase of the top of the latest v2017.05
- add comment for function part_print_gpt and part_print_efi
- add comment for function part_get_disk_info
- add comment for function prepare_backup_gpt_header
- add export function comment in part_efi_int.h
- invalid offset my_lba in is_secondary_gpt_valid_mtd()
  the secondary GPT header wasn't detected
- add comment for functions
- add distro support for UBI volume in GPT partition in MTD device
- add sandbox test (test/fs/gpt_mtd-test.sh) for modified commands

Changes in v5:
- rebase of the top of latest u-boot master
- solve warning and error
  (dont' include linux/mtd/mtd.h in part.h)

Changes in v4:
- change RFC to PATCH
- update cover letter
- rebase on v2017.03

Changes in v3:
- solve issue in compute partition_entry_lba update :
  missing / lba_size
- rework and split patches for unrelated change after review
  from Cristophe Kerello and Simon Glass
- rebase on v2017.03-rc1

Changes in v2:
- split serie to reduce patches size
  (separate disk part and cmd impact and add precursor patch)
- split large function

Patrick Delaunay (18):
  uuid: add a function for GUID string parsing
  disk: part: refactor part_print_efi to prepare GPT over MTD
  disk: part: refactor part_get_info_efi to prepare GPT over MTD
  disk: part: prepare_backup_gpt_header rework
  disk: part: compute partition_entry_lba
  disk: part: efi: export internal function
  disk: part: add support of GPT partitioning over MTD
  cmd: gpt: remove blk_desc parameter in static function
  cmd: gpt: use error number in set_gpt_info
  cmd: gpt: add print_gpt_info_err
  cmd: gpt: update write command to support GPT over MTD
  cmd: part: update command to support GPT over MTD
  cmd: mtdparts: move PART_ADD_DESC_MAXLEN
  cmd: mtdparts: update command to support GPT over MTD
  uuid: remove dependency with io.h
  sandbox: GPT over MTD test
  distro: add boot for UBI in GPT over MTD
  tests: Add GPT over MTD test

 cmd/gpt.c                       | 152 +++++++++++---
 cmd/mtdparts.c                  | 144 ++++++++++++-
 cmd/part.c                      |  49 ++++-
 configs/sandbox_defconfig       |   3 +
 disk/Kconfig                    |  17 ++
 disk/Makefile                   |   1 +
 disk/part_efi.c                 | 152 +++++++-------
 disk/part_efi_int.h             |  70 ++++++
 disk/part_efi_mtd.c             | 456 ++++++++++++++++++++++++++++++++++++++++
 doc/README.gpt.mtd              | 187 ++++++++++++++++
 include/config_distro_bootcmd.h |  40 ++++
 include/configs/sandbox.h       |   6 +
 include/part.h                  |  42 +++-
 include/uuid.h                  |   1 +
 lib/uuid.c                      |  48 ++++-
 test/fs/gpt_mtd-test.sh         | 209 ++++++++++++++++++
 16 files changed, 1447 insertions(+), 130 deletions(-)
 create mode 100644 disk/part_efi_int.h
 create mode 100644 disk/part_efi_mtd.c
 create mode 100644 doc/README.gpt.mtd
 create mode 100755 test/fs/gpt_mtd-test.sh

-- 
1.9.1

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

end of thread, other threads:[~2017-06-06 11:12 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-05-11  7:51 [U-Boot] [PATCH v6 00/18] GPT over MTD Patrick Delaunay
2017-05-11  7:51 ` [U-Boot] [PATCH v6 01/18] uuid: add a function for GUID string parsing Patrick Delaunay
2017-05-11  7:51 ` [U-Boot] [PATCH v6 02/18] disk: part: refactor part_print_efi to prepare GPT over MTD Patrick Delaunay
2017-05-11  7:51 ` [U-Boot] [PATCH v6 03/18] disk: part: refactor part_get_info_efi " Patrick Delaunay
2017-05-11  7:51 ` [U-Boot] [PATCH v6 04/18] disk: part: prepare_backup_gpt_header rework Patrick Delaunay
2017-05-11  7:51 ` [U-Boot] [PATCH v6 05/18] disk: part: compute partition_entry_lba Patrick Delaunay
2017-05-11  7:51 ` [U-Boot] [PATCH v6 06/18] disk: part: efi: export internal function Patrick Delaunay
2017-05-11  7:51 ` [U-Boot] [PATCH v6 07/18] disk: part: add support of GPT partitioning over MTD Patrick Delaunay
2017-05-14  9:13   ` Simon Glass
2017-05-11  7:51 ` [U-Boot] [PATCH v6 08/18] cmd: gpt: remove blk_desc parameter in static function Patrick Delaunay
2017-05-11  7:51 ` [U-Boot] [PATCH v6 09/18] cmd: gpt: use error number in set_gpt_info Patrick Delaunay
2017-05-11  7:52 ` [U-Boot] [PATCH v6 10/18] cmd: gpt: add print_gpt_info_err Patrick Delaunay
2017-05-11  7:52 ` [U-Boot] [PATCH v6 11/18] cmd: gpt: update write command to support GPT over MTD Patrick Delaunay
2017-05-11  7:52 ` [U-Boot] [PATCH v6 12/18] cmd: part: update " Patrick Delaunay
2017-05-11  7:52 ` [U-Boot] [PATCH v6 13/18] cmd: mtdparts: move PART_ADD_DESC_MAXLEN Patrick Delaunay
2017-05-11  7:52 ` [U-Boot] [PATCH v6 14/18] cmd: mtdparts: update command to support GPT over MTD Patrick Delaunay
2017-05-11  7:52 ` [U-Boot] [PATCH v6 15/18] uuid: remove dependency with io.h Patrick Delaunay
2017-05-11  7:52 ` [U-Boot] [PATCH v6 16/18] sandbox: GPT over MTD test Patrick Delaunay
2017-05-11  7:52 ` [U-Boot] [PATCH v6 17/18] distro: add boot for UBI in GPT over MTD Patrick Delaunay
2017-05-14  9:13   ` Simon Glass
2017-05-11  7:52 ` [U-Boot] [PATCH v6 18/18] tests: Add GPT over MTD test Patrick Delaunay
2017-05-11  8:19 ` [U-Boot] [PATCH v6 00/18] GPT over MTD Maxime Ripard
2017-05-11  9:19   ` Patrick DELAUNAY
2017-05-11 14:46     ` Maxime Ripard
2017-05-12 16:09       ` Patrick DELAUNAY
2017-05-16  9:28         ` Maxime Ripard
2017-05-19 16:58           ` Patrick DELAUNAY
2017-06-06  9:48           ` Patrick DELAUNAY
2017-06-06 11:12             ` Tom Rini

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.