diff mbox series

[meta-rockchip,v3,3/5] rockchip.wks: add most Rockchip partitions

Message ID 20240219174825.7084-3-twoerner@gmail.com
State New
Headers show
Series [meta-rockchip,v3,1/5] rockchip.wks: specify offsets in sectors | expand

Commit Message

Trevor Woerner Feb. 19, 2024, 5:48 p.m. UTC
Rockchip defines the expected layout/map of the default storage device.
Fill out the wks description so it matches.

        https://opensource.rock-chips.com/wiki_Partitions

There are 2 partitions at the start that can not be specified in
rockchip.wks due to a limitation in wic which assumes all sizes (e.g.
--size or --fixed-size) are specified in units of 1024 bytes. Due to the
fact these partitions don't fall on 1024-byte boundaries, they can not be
specified at this time.

Note: in the Rockchip layout, not all partitions are expected to show up
in the gpt partition table. This patch uses "--no-table" to only number the
partitions that are numbered in the Rockchip wiki, as well as to give these
partitions the partition numbers indicated in the wiki.

Note: there is a mistake in the Rockchip table (which I've copied verbatim
here in this commit message but corrected in rockchip.wks). Going by the
values of the "Start Sector", the size of the "reserved1" partition is
listed as being 2x its actual size/number of sectors.

Expected:
        Partition       Start Sector       Number of Sectors    Partition Size     PartNum in GPT    Requirements
        MBR             0      00000000    1       00000001     512       0.5KB
        Primary GPT     1      00000001    63      0000003F     32256     31.5KB
        loader1         64     00000040    7104    00001bc0     4096000   2.5MB    1                 preloader (miniloader or U-Boot SPL)
        Vendor Storage  7168   00001c00    512     00000200     262144    256KB                      SN, MAC and etc.
        Reserved Space  7680   00001e00    384     00000180     196608    192KB                      Not used
        reserved1       8064   00001f80    128     00000080     65536     64KB                       legacy DRM key
        U-Boot ENV      8128   00001fc0    64      00000040     32768     32KB
        reserved2       8192   00002000    8192    00002000     4194304   4MB                        legacy parameter
        loader2         16384  00004000    8192    00002000     4194304   4MB      2                 U-Boot or UEFI
        trust           24576  00006000    8192    00002000     4194304   4MB      3                 trusted-os like ATF, OP-TEE
        boot            32768  00008000    229376  00038000     117440512 112MB    4                 kernel, dtb, extlinux.conf, ramdisk
        rootfs          262144 00040000    -       -            -         -MB      5                 Linux system

Prior to this patch:
        # fdisk -l /dev/mmcblk1
        GPT PMBR size mismatch (1504727 != 30375935) will be corrected by write.
        The backup GPT table is not on the end of the device.
        Disk /dev/mmcblk1: 14.48 GiB, 15552479232 bytes, 30375936 sectors
        Units: sectors of 1 * 512 = 512 bytes
        Sector size (logical/physical): 512 bytes / 512 bytes
        I/O size (minimum/optimal): 512 bytes / 512 bytes
        Disklabel type: gpt
        Disk identifier: 00000000-0000-0000-0000-00004D9B9EF0

        Device          Start     End Sectors   Size Type
        /dev/mmcblk1p1     64    8063    8000   3.9M Microsoft basic data
        /dev/mmcblk1p2   8064    8191     128    64K Microsoft basic data
        /dev/mmcblk1p3   8192   16383    8192     4M Microsoft basic data
        /dev/mmcblk1p4  16384   24575    8192     4M Microsoft basic data
        /dev/mmcblk1p5  24576   32767    8192     4M Microsoft basic data
        /dev/mmcblk1p6  32768  330955  298188 145.6M Microsoft basic data
        /dev/mmcblk1p7 330956 1504693 1173738 573.1M Linux filesystem

New:
        # fdisk -l /dev/mmcblk1
        GPT PMBR size mismatch (1504727 != 30375935) will be corrected by write.
        The backup GPT table is not on the end of the device.
        Disk /dev/mmcblk1: 14.48 GiB, 15552479232 bytes, 30375936 sectors
        Units: sectors of 1 * 512 = 512 bytes
        Sector size (logical/physical): 512 bytes / 512 bytes
        I/O size (minimum/optimal): 512 bytes / 512 bytes
        Disklabel type: gpt
        Disk identifier: 00000000-0000-0000-0000-00004D9B9EF0

        Device          Start     End Sectors   Size Type
        /dev/mmcblk1p1     64    7167    7104   3.5M Linux filesystem
        /dev/mmcblk1p2  16384   24575    8192     4M Linux filesystem
        /dev/mmcblk1p3  24576   32767    8192     4M Linux filesystem
        /dev/mmcblk1p4  32768  330955  298188 145.6M Microsoft basic data
        /dev/mmcblk1p5 330956 1504693 1173738 573.1M Linux filesystem

Reviewed-by: Quentin Schulz <foss+yocto@0leil.net>
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
---
changes in v3:
- tweaked to accommodate offsets specified in sectors
- clarified that the first 2 partitions can not be added
- change name of vstorage to v_storage
- fixed typo (ATR -> ATF)
- added Quentin's tag

changes in v2:
- expand the commit message to show past, expected, and new behaviour
- spell out that vstorage stands for "vendor storage"
---
 wic/rockchip.wks | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

Comments

Quentin Schulz Feb. 21, 2024, 6:38 p.m. UTC | #1
Hi Trevor,

On 2/19/24 18:48, Trevor Woerner via lists.yoctoproject.org wrote:
> Rockchip defines the expected layout/map of the default storage device.
> Fill out the wks description so it matches.
> 
>          https://opensource.rock-chips.com/wiki_Partitions
> 
> There are 2 partitions at the start that can not be specified in
> rockchip.wks due to a limitation in wic which assumes all sizes (e.g.
> --size or --fixed-size) are specified in units of 1024 bytes. Due to the
> fact these partitions don't fall on 1024-byte boundaries, they can not be
> specified at this time.
> 
> Note: in the Rockchip layout, not all partitions are expected to show up
> in the gpt partition table. This patch uses "--no-table" to only number the
> partitions that are numbered in the Rockchip wiki, as well as to give these
> partitions the partition numbers indicated in the wiki.
> 
> Note: there is a mistake in the Rockchip table (which I've copied verbatim
> here in this commit message but corrected in rockchip.wks). Going by the
> values of the "Start Sector", the size of the "reserved1" partition is
> listed as being 2x its actual size/number of sectors.
> 
> Expected:
>          Partition       Start Sector       Number of Sectors    Partition Size     PartNum in GPT    Requirements
>          MBR             0      00000000    1       00000001     512       0.5KB
>          Primary GPT     1      00000001    63      0000003F     32256     31.5KB
>          loader1         64     00000040    7104    00001bc0     4096000   2.5MB    1                 preloader (miniloader or U-Boot SPL)
>          Vendor Storage  7168   00001c00    512     00000200     262144    256KB                      SN, MAC and etc.
>          Reserved Space  7680   00001e00    384     00000180     196608    192KB                      Not used
>          reserved1       8064   00001f80    128     00000080     65536     64KB                       legacy DRM key
>          U-Boot ENV      8128   00001fc0    64      00000040     32768     32KB
>          reserved2       8192   00002000    8192    00002000     4194304   4MB                        legacy parameter
>          loader2         16384  00004000    8192    00002000     4194304   4MB      2                 U-Boot or UEFI
>          trust           24576  00006000    8192    00002000     4194304   4MB      3                 trusted-os like ATF, OP-TEE
>          boot            32768  00008000    229376  00038000     117440512 112MB    4                 kernel, dtb, extlinux.conf, ramdisk
>          rootfs          262144 00040000    -       -            -         -MB      5                 Linux system
> 
> Prior to this patch:
>          # fdisk -l /dev/mmcblk1
>          GPT PMBR size mismatch (1504727 != 30375935) will be corrected by write.
>          The backup GPT table is not on the end of the device.
>          Disk /dev/mmcblk1: 14.48 GiB, 15552479232 bytes, 30375936 sectors
>          Units: sectors of 1 * 512 = 512 bytes
>          Sector size (logical/physical): 512 bytes / 512 bytes
>          I/O size (minimum/optimal): 512 bytes / 512 bytes
>          Disklabel type: gpt
>          Disk identifier: 00000000-0000-0000-0000-00004D9B9EF0
> 
>          Device          Start     End Sectors   Size Type
>          /dev/mmcblk1p1     64    8063    8000   3.9M Microsoft basic data
>          /dev/mmcblk1p2   8064    8191     128    64K Microsoft basic data
>          /dev/mmcblk1p3   8192   16383    8192     4M Microsoft basic data
>          /dev/mmcblk1p4  16384   24575    8192     4M Microsoft basic data
>          /dev/mmcblk1p5  24576   32767    8192     4M Microsoft basic data
>          /dev/mmcblk1p6  32768  330955  298188 145.6M Microsoft basic data
>          /dev/mmcblk1p7 330956 1504693 1173738 573.1M Linux filesystem
> 
> New:
>          # fdisk -l /dev/mmcblk1
>          GPT PMBR size mismatch (1504727 != 30375935) will be corrected by write.
>          The backup GPT table is not on the end of the device.
>          Disk /dev/mmcblk1: 14.48 GiB, 15552479232 bytes, 30375936 sectors
>          Units: sectors of 1 * 512 = 512 bytes
>          Sector size (logical/physical): 512 bytes / 512 bytes
>          I/O size (minimum/optimal): 512 bytes / 512 bytes
>          Disklabel type: gpt
>          Disk identifier: 00000000-0000-0000-0000-00004D9B9EF0
> 
>          Device          Start     End Sectors   Size Type
>          /dev/mmcblk1p1     64    7167    7104   3.5M Linux filesystem
>          /dev/mmcblk1p2  16384   24575    8192     4M Linux filesystem
>          /dev/mmcblk1p3  24576   32767    8192     4M Linux filesystem
>          /dev/mmcblk1p4  32768  330955  298188 145.6M Microsoft basic data
>          /dev/mmcblk1p5 330956 1504693 1173738 573.1M Linux filesystem
> 
> Reviewed-by: Quentin Schulz <foss+yocto@0leil.net>
> Signed-off-by: Trevor Woerner <twoerner@gmail.com>
> ---
> changes in v3:
> - tweaked to accommodate offsets specified in sectors
> - clarified that the first 2 partitions can not be added
> - change name of vstorage to v_storage
> - fixed typo (ATR -> ATF)
> - added Quentin's tag
> 
> changes in v2:
> - expand the commit message to show past, expected, and new behaviour
> - spell out that vstorage stands for "vendor storage"
> ---
>   wic/rockchip.wks | 20 +++++++++++++-------
>   1 file changed, 13 insertions(+), 7 deletions(-)
> 
> diff --git a/wic/rockchip.wks b/wic/rockchip.wks
> index 42b731ac47b2..b557f8137af1 100644
> --- a/wic/rockchip.wks
> +++ b/wic/rockchip.wks
> @@ -8,17 +8,23 @@
>   # See: https://opensource.rock-chips.com/wiki_Partitions
>   #
>   #   Partition   Start Sector    Number of Sectors
> -#   loader1     64              8000        (idbloader / U-Boot SPL)
> -#   reserved1   8064            128
> -#   reserved2   8192            8192
> +#   loader1     64              7104        (idbloader / U-Boot SPL)
> +#   v_storage   7168            512         (vendor storage: e.g. serial number, MAC address, etc)
> +#   reserved    7680            384         (not used)
> +#   reserved1   8064            64          (legacy DRM key)
> +#   uboot_env   8128            64          (U-Boo environment)
> +#   reserved2   8192            8192        (legacy parameters, ATAGS, etc)
>   #   loader2     16384           8192        (U-Boot proper)
> -#   atf         24576           8192
> +#   atf         24576           8192        (trusted OS e.g. ATF, OP-TEE, etc)
>   #   boot        32768           229376
>   #   root        262144          -           (suggested)
>   
> -part loader1    --offset 64s    --fixed-size 4000K   --fstype=none            --source rawcopy                                   --sourceparams="file=${SPL_BINARY}"
> -part reserved1  --offset 8064s  --fixed-size 64K     --fstype=none
> -part reserved2  --offset 8192s  --fixed-size 4096K   --fstype=none
> +part loader1    --offset 64s    --fixed-size 3552K   --fstype=none            --source rawcopy                                   --sourceparams="file=${SPL_BINARY}"
> +part v_storage  --offset 7168s  --fixed-size 256K    --fstype=none --no-table
> +part reserved   --offset 7680s  --fixed-size 192K    --fstype=none --no-table
> +part reserved1  --offset 8064s  --fixed-size 32K     --fstype=none --no-table

I would have kept this one and...

> +part uboot_env  --offset 8128s  --fixed-size 32K     --fstype=none --no-table
> +part reserved2  --offset 8192s  --fixed-size 4096K   --fstype=none --no-table

this one in the table to keep the offsets identical before and after 
this patch is applied.

If you don't care about this, then I strongly suggest to have uboot_env 
actually a partition (and maybe v_storage as well), those partitions are 
the only ones among the one removed now that would make some sense to me 
to expose to the user.

Cheers,
Quentin
Trevor Woerner Feb. 21, 2024, 7:02 p.m. UTC | #2
On Wed 2024-02-21 @ 07:38:41 PM, Quentin Schulz wrote:
> Hi Trevor,
> 
> On 2/19/24 18:48, Trevor Woerner via lists.yoctoproject.org wrote:
> > Rockchip defines the expected layout/map of the default storage device.
> > Fill out the wks description so it matches.
> > 
> >          https://opensource.rock-chips.com/wiki_Partitions
> > 
> > There are 2 partitions at the start that can not be specified in
> > rockchip.wks due to a limitation in wic which assumes all sizes (e.g.
> > --size or --fixed-size) are specified in units of 1024 bytes. Due to the
> > fact these partitions don't fall on 1024-byte boundaries, they can not be
> > specified at this time.
> > 
> > Note: in the Rockchip layout, not all partitions are expected to show up
> > in the gpt partition table. This patch uses "--no-table" to only number the
> > partitions that are numbered in the Rockchip wiki, as well as to give these
> > partitions the partition numbers indicated in the wiki.
> > 
> > Note: there is a mistake in the Rockchip table (which I've copied verbatim
> > here in this commit message but corrected in rockchip.wks). Going by the
> > values of the "Start Sector", the size of the "reserved1" partition is
> > listed as being 2x its actual size/number of sectors.
> > 
> > Expected:
> >          Partition       Start Sector       Number of Sectors    Partition Size     PartNum in GPT    Requirements
> >          MBR             0      00000000    1       00000001     512       0.5KB
> >          Primary GPT     1      00000001    63      0000003F     32256     31.5KB
> >          loader1         64     00000040    7104    00001bc0     4096000   2.5MB    1                 preloader (miniloader or U-Boot SPL)
> >          Vendor Storage  7168   00001c00    512     00000200     262144    256KB                      SN, MAC and etc.
> >          Reserved Space  7680   00001e00    384     00000180     196608    192KB                      Not used
> >          reserved1       8064   00001f80    128     00000080     65536     64KB                       legacy DRM key
> >          U-Boot ENV      8128   00001fc0    64      00000040     32768     32KB
> >          reserved2       8192   00002000    8192    00002000     4194304   4MB                        legacy parameter
> >          loader2         16384  00004000    8192    00002000     4194304   4MB      2                 U-Boot or UEFI
> >          trust           24576  00006000    8192    00002000     4194304   4MB      3                 trusted-os like ATF, OP-TEE
> >          boot            32768  00008000    229376  00038000     117440512 112MB    4                 kernel, dtb, extlinux.conf, ramdisk
> >          rootfs          262144 00040000    -       -            -         -MB      5                 Linux system
> > 
> > Prior to this patch:
> >          # fdisk -l /dev/mmcblk1
> >          GPT PMBR size mismatch (1504727 != 30375935) will be corrected by write.
> >          The backup GPT table is not on the end of the device.
> >          Disk /dev/mmcblk1: 14.48 GiB, 15552479232 bytes, 30375936 sectors
> >          Units: sectors of 1 * 512 = 512 bytes
> >          Sector size (logical/physical): 512 bytes / 512 bytes
> >          I/O size (minimum/optimal): 512 bytes / 512 bytes
> >          Disklabel type: gpt
> >          Disk identifier: 00000000-0000-0000-0000-00004D9B9EF0
> > 
> >          Device          Start     End Sectors   Size Type
> >          /dev/mmcblk1p1     64    8063    8000   3.9M Microsoft basic data
> >          /dev/mmcblk1p2   8064    8191     128    64K Microsoft basic data
> >          /dev/mmcblk1p3   8192   16383    8192     4M Microsoft basic data
> >          /dev/mmcblk1p4  16384   24575    8192     4M Microsoft basic data
> >          /dev/mmcblk1p5  24576   32767    8192     4M Microsoft basic data
> >          /dev/mmcblk1p6  32768  330955  298188 145.6M Microsoft basic data
> >          /dev/mmcblk1p7 330956 1504693 1173738 573.1M Linux filesystem
> > 
> > New:
> >          # fdisk -l /dev/mmcblk1
> >          GPT PMBR size mismatch (1504727 != 30375935) will be corrected by write.
> >          The backup GPT table is not on the end of the device.
> >          Disk /dev/mmcblk1: 14.48 GiB, 15552479232 bytes, 30375936 sectors
> >          Units: sectors of 1 * 512 = 512 bytes
> >          Sector size (logical/physical): 512 bytes / 512 bytes
> >          I/O size (minimum/optimal): 512 bytes / 512 bytes
> >          Disklabel type: gpt
> >          Disk identifier: 00000000-0000-0000-0000-00004D9B9EF0
> > 
> >          Device          Start     End Sectors   Size Type
> >          /dev/mmcblk1p1     64    7167    7104   3.5M Linux filesystem
> >          /dev/mmcblk1p2  16384   24575    8192     4M Linux filesystem
> >          /dev/mmcblk1p3  24576   32767    8192     4M Linux filesystem
> >          /dev/mmcblk1p4  32768  330955  298188 145.6M Microsoft basic data
> >          /dev/mmcblk1p5 330956 1504693 1173738 573.1M Linux filesystem
> > 
> > Reviewed-by: Quentin Schulz <foss+yocto@0leil.net>
> > Signed-off-by: Trevor Woerner <twoerner@gmail.com>
> > ---
> > changes in v3:
> > - tweaked to accommodate offsets specified in sectors
> > - clarified that the first 2 partitions can not be added
> > - change name of vstorage to v_storage
> > - fixed typo (ATR -> ATF)
> > - added Quentin's tag
> > 
> > changes in v2:
> > - expand the commit message to show past, expected, and new behaviour
> > - spell out that vstorage stands for "vendor storage"
> > ---
> >   wic/rockchip.wks | 20 +++++++++++++-------
> >   1 file changed, 13 insertions(+), 7 deletions(-)
> > 
> > diff --git a/wic/rockchip.wks b/wic/rockchip.wks
> > index 42b731ac47b2..b557f8137af1 100644
> > --- a/wic/rockchip.wks
> > +++ b/wic/rockchip.wks
> > @@ -8,17 +8,23 @@
> >   # See: https://opensource.rock-chips.com/wiki_Partitions
> >   #
> >   #   Partition   Start Sector    Number of Sectors
> > -#   loader1     64              8000        (idbloader / U-Boot SPL)
> > -#   reserved1   8064            128
> > -#   reserved2   8192            8192
> > +#   loader1     64              7104        (idbloader / U-Boot SPL)
> > +#   v_storage   7168            512         (vendor storage: e.g. serial number, MAC address, etc)
> > +#   reserved    7680            384         (not used)
> > +#   reserved1   8064            64          (legacy DRM key)
> > +#   uboot_env   8128            64          (U-Boo environment)
> > +#   reserved2   8192            8192        (legacy parameters, ATAGS, etc)
> >   #   loader2     16384           8192        (U-Boot proper)
> > -#   atf         24576           8192
> > +#   atf         24576           8192        (trusted OS e.g. ATF, OP-TEE, etc)
> >   #   boot        32768           229376
> >   #   root        262144          -           (suggested)
> > -part loader1    --offset 64s    --fixed-size 4000K   --fstype=none            --source rawcopy                                   --sourceparams="file=${SPL_BINARY}"
> > -part reserved1  --offset 8064s  --fixed-size 64K     --fstype=none
> > -part reserved2  --offset 8192s  --fixed-size 4096K   --fstype=none
> > +part loader1    --offset 64s    --fixed-size 3552K   --fstype=none            --source rawcopy                                   --sourceparams="file=${SPL_BINARY}"
> > +part v_storage  --offset 7168s  --fixed-size 256K    --fstype=none --no-table
> > +part reserved   --offset 7680s  --fixed-size 192K    --fstype=none --no-table
> > +part reserved1  --offset 8064s  --fixed-size 32K     --fstype=none --no-table
> 
> I would have kept this one and...
> 
> > +part uboot_env  --offset 8128s  --fixed-size 32K     --fstype=none --no-table
> > +part reserved2  --offset 8192s  --fixed-size 4096K   --fstype=none --no-table
> 
> this one in the table to keep the offsets identical before and after this
> patch is applied.
> 
> If you don't care about this, then I strongly suggest to have uboot_env
> actually a partition (and maybe v_storage as well), those partitions are the
> only ones among the one removed now that would make some sense to me to
> expose to the user.

My preference would be to make them all show up in the partition table. If
you're okay with that then I'm happy to spin a v4 to remove --no-table from
all entries that have it in v3.

The conundrum is whether or not to follow what Rockchip dictates in:
https://opensource.rock-chips.com/wiki_Partitions

By removing /boot I guess we're not going to be following what Rockchip says
anyway, so we might as well expose them all for maximum flexibility.
Quentin Schulz Feb. 22, 2024, 9:30 a.m. UTC | #3
Hi Trevor,

On 2/21/24 20:02, Trevor Woerner wrote:
> On Wed 2024-02-21 @ 07:38:41 PM, Quentin Schulz wrote:
>> Hi Trevor,
>>
>> On 2/19/24 18:48, Trevor Woerner via lists.yoctoproject.org wrote:
>>> Rockchip defines the expected layout/map of the default storage device.
>>> Fill out the wks description so it matches.
>>>
>>>           https://opensource.rock-chips.com/wiki_Partitions
>>>
>>> There are 2 partitions at the start that can not be specified in
>>> rockchip.wks due to a limitation in wic which assumes all sizes (e.g.
>>> --size or --fixed-size) are specified in units of 1024 bytes. Due to the
>>> fact these partitions don't fall on 1024-byte boundaries, they can not be
>>> specified at this time.
>>>
>>> Note: in the Rockchip layout, not all partitions are expected to show up
>>> in the gpt partition table. This patch uses "--no-table" to only number the
>>> partitions that are numbered in the Rockchip wiki, as well as to give these
>>> partitions the partition numbers indicated in the wiki.
>>>
>>> Note: there is a mistake in the Rockchip table (which I've copied verbatim
>>> here in this commit message but corrected in rockchip.wks). Going by the
>>> values of the "Start Sector", the size of the "reserved1" partition is
>>> listed as being 2x its actual size/number of sectors.
>>>
>>> Expected:
>>>           Partition       Start Sector       Number of Sectors    Partition Size     PartNum in GPT    Requirements
>>>           MBR             0      00000000    1       00000001     512       0.5KB
>>>           Primary GPT     1      00000001    63      0000003F     32256     31.5KB
>>>           loader1         64     00000040    7104    00001bc0     4096000   2.5MB    1                 preloader (miniloader or U-Boot SPL)
>>>           Vendor Storage  7168   00001c00    512     00000200     262144    256KB                      SN, MAC and etc.
>>>           Reserved Space  7680   00001e00    384     00000180     196608    192KB                      Not used
>>>           reserved1       8064   00001f80    128     00000080     65536     64KB                       legacy DRM key
>>>           U-Boot ENV      8128   00001fc0    64      00000040     32768     32KB
>>>           reserved2       8192   00002000    8192    00002000     4194304   4MB                        legacy parameter
>>>           loader2         16384  00004000    8192    00002000     4194304   4MB      2                 U-Boot or UEFI
>>>           trust           24576  00006000    8192    00002000     4194304   4MB      3                 trusted-os like ATF, OP-TEE
>>>           boot            32768  00008000    229376  00038000     117440512 112MB    4                 kernel, dtb, extlinux.conf, ramdisk
>>>           rootfs          262144 00040000    -       -            -         -MB      5                 Linux system
>>>
>>> Prior to this patch:
>>>           # fdisk -l /dev/mmcblk1
>>>           GPT PMBR size mismatch (1504727 != 30375935) will be corrected by write.
>>>           The backup GPT table is not on the end of the device.
>>>           Disk /dev/mmcblk1: 14.48 GiB, 15552479232 bytes, 30375936 sectors
>>>           Units: sectors of 1 * 512 = 512 bytes
>>>           Sector size (logical/physical): 512 bytes / 512 bytes
>>>           I/O size (minimum/optimal): 512 bytes / 512 bytes
>>>           Disklabel type: gpt
>>>           Disk identifier: 00000000-0000-0000-0000-00004D9B9EF0
>>>
>>>           Device          Start     End Sectors   Size Type
>>>           /dev/mmcblk1p1     64    8063    8000   3.9M Microsoft basic data
>>>           /dev/mmcblk1p2   8064    8191     128    64K Microsoft basic data
>>>           /dev/mmcblk1p3   8192   16383    8192     4M Microsoft basic data
>>>           /dev/mmcblk1p4  16384   24575    8192     4M Microsoft basic data
>>>           /dev/mmcblk1p5  24576   32767    8192     4M Microsoft basic data
>>>           /dev/mmcblk1p6  32768  330955  298188 145.6M Microsoft basic data
>>>           /dev/mmcblk1p7 330956 1504693 1173738 573.1M Linux filesystem
>>>
>>> New:
>>>           # fdisk -l /dev/mmcblk1
>>>           GPT PMBR size mismatch (1504727 != 30375935) will be corrected by write.
>>>           The backup GPT table is not on the end of the device.
>>>           Disk /dev/mmcblk1: 14.48 GiB, 15552479232 bytes, 30375936 sectors
>>>           Units: sectors of 1 * 512 = 512 bytes
>>>           Sector size (logical/physical): 512 bytes / 512 bytes
>>>           I/O size (minimum/optimal): 512 bytes / 512 bytes
>>>           Disklabel type: gpt
>>>           Disk identifier: 00000000-0000-0000-0000-00004D9B9EF0
>>>
>>>           Device          Start     End Sectors   Size Type
>>>           /dev/mmcblk1p1     64    7167    7104   3.5M Linux filesystem
>>>           /dev/mmcblk1p2  16384   24575    8192     4M Linux filesystem
>>>           /dev/mmcblk1p3  24576   32767    8192     4M Linux filesystem
>>>           /dev/mmcblk1p4  32768  330955  298188 145.6M Microsoft basic data
>>>           /dev/mmcblk1p5 330956 1504693 1173738 573.1M Linux filesystem
>>>
>>> Reviewed-by: Quentin Schulz <foss+yocto@0leil.net>
>>> Signed-off-by: Trevor Woerner <twoerner@gmail.com>
>>> ---
>>> changes in v3:
>>> - tweaked to accommodate offsets specified in sectors
>>> - clarified that the first 2 partitions can not be added
>>> - change name of vstorage to v_storage
>>> - fixed typo (ATR -> ATF)
>>> - added Quentin's tag
>>>
>>> changes in v2:
>>> - expand the commit message to show past, expected, and new behaviour
>>> - spell out that vstorage stands for "vendor storage"
>>> ---
>>>    wic/rockchip.wks | 20 +++++++++++++-------
>>>    1 file changed, 13 insertions(+), 7 deletions(-)
>>>
>>> diff --git a/wic/rockchip.wks b/wic/rockchip.wks
>>> index 42b731ac47b2..b557f8137af1 100644
>>> --- a/wic/rockchip.wks
>>> +++ b/wic/rockchip.wks
>>> @@ -8,17 +8,23 @@
>>>    # See: https://opensource.rock-chips.com/wiki_Partitions
>>>    #
>>>    #   Partition   Start Sector    Number of Sectors
>>> -#   loader1     64              8000        (idbloader / U-Boot SPL)
>>> -#   reserved1   8064            128
>>> -#   reserved2   8192            8192
>>> +#   loader1     64              7104        (idbloader / U-Boot SPL)
>>> +#   v_storage   7168            512         (vendor storage: e.g. serial number, MAC address, etc)
>>> +#   reserved    7680            384         (not used)
>>> +#   reserved1   8064            64          (legacy DRM key)
>>> +#   uboot_env   8128            64          (U-Boo environment)
>>> +#   reserved2   8192            8192        (legacy parameters, ATAGS, etc)
>>>    #   loader2     16384           8192        (U-Boot proper)
>>> -#   atf         24576           8192
>>> +#   atf         24576           8192        (trusted OS e.g. ATF, OP-TEE, etc)
>>>    #   boot        32768           229376
>>>    #   root        262144          -           (suggested)
>>> -part loader1    --offset 64s    --fixed-size 4000K   --fstype=none            --source rawcopy                                   --sourceparams="file=${SPL_BINARY}"
>>> -part reserved1  --offset 8064s  --fixed-size 64K     --fstype=none
>>> -part reserved2  --offset 8192s  --fixed-size 4096K   --fstype=none
>>> +part loader1    --offset 64s    --fixed-size 3552K   --fstype=none            --source rawcopy                                   --sourceparams="file=${SPL_BINARY}"
>>> +part v_storage  --offset 7168s  --fixed-size 256K    --fstype=none --no-table
>>> +part reserved   --offset 7680s  --fixed-size 192K    --fstype=none --no-table
>>> +part reserved1  --offset 8064s  --fixed-size 32K     --fstype=none --no-table
>>
>> I would have kept this one and...
>>
>>> +part uboot_env  --offset 8128s  --fixed-size 32K     --fstype=none --no-table
>>> +part reserved2  --offset 8192s  --fixed-size 4096K   --fstype=none --no-table
>>
>> this one in the table to keep the offsets identical before and after this
>> patch is applied.
>>
>> If you don't care about this, then I strongly suggest to have uboot_env
>> actually a partition (and maybe v_storage as well), those partitions are the
>> only ones among the one removed now that would make some sense to me to
>> expose to the user.
> 
> My preference would be to make them all show up in the partition table. If
> you're okay with that then I'm happy to spin a v4 to remove --no-table from
> all entries that have it in v3.
> 
> The conundrum is whether or not to follow what Rockchip dictates in:
> https://opensource.rock-chips.com/wiki_Partitions
> 
> By removing /boot I guess we're not going to be following what Rockchip says
> anyway, so we might as well expose them all for maximum flexibility.

My preference is keep the current numbering and meaning of those 
numbers.... However since you'll remove the /boot partition in a later 
patch, I guess this isn't that much of a valid concern anymore for this 
patch.

Quentin
diff mbox series

Patch

diff --git a/wic/rockchip.wks b/wic/rockchip.wks
index 42b731ac47b2..b557f8137af1 100644
--- a/wic/rockchip.wks
+++ b/wic/rockchip.wks
@@ -8,17 +8,23 @@ 
 # See: https://opensource.rock-chips.com/wiki_Partitions
 #
 #   Partition   Start Sector    Number of Sectors
-#   loader1     64              8000        (idbloader / U-Boot SPL)
-#   reserved1   8064            128
-#   reserved2   8192            8192
+#   loader1     64              7104        (idbloader / U-Boot SPL)
+#   v_storage   7168            512         (vendor storage: e.g. serial number, MAC address, etc)
+#   reserved    7680            384         (not used)
+#   reserved1   8064            64          (legacy DRM key)
+#   uboot_env   8128            64          (U-Boo environment)
+#   reserved2   8192            8192        (legacy parameters, ATAGS, etc)
 #   loader2     16384           8192        (U-Boot proper)
-#   atf         24576           8192
+#   atf         24576           8192        (trusted OS e.g. ATF, OP-TEE, etc)
 #   boot        32768           229376
 #   root        262144          -           (suggested)
 
-part loader1    --offset 64s    --fixed-size 4000K   --fstype=none            --source rawcopy                                   --sourceparams="file=${SPL_BINARY}"
-part reserved1  --offset 8064s  --fixed-size 64K     --fstype=none
-part reserved2  --offset 8192s  --fixed-size 4096K   --fstype=none
+part loader1    --offset 64s    --fixed-size 3552K   --fstype=none            --source rawcopy                                   --sourceparams="file=${SPL_BINARY}"
+part v_storage  --offset 7168s  --fixed-size 256K    --fstype=none --no-table
+part reserved   --offset 7680s  --fixed-size 192K    --fstype=none --no-table
+part reserved1  --offset 8064s  --fixed-size 32K     --fstype=none --no-table
+part uboot_env  --offset 8128s  --fixed-size 32K     --fstype=none --no-table
+part reserved2  --offset 8192s  --fixed-size 4096K   --fstype=none --no-table
 part loader2    --offset 16384s --fixed-size 4096K   --fstype=none            --source rawcopy                                   --sourceparams="file=u-boot.${UBOOT_SUFFIX}"
 part atf        --offset 24576s --fixed-size 4096K   --fstype=none
 part /boot      --offset 32768s --size       114688K --fstype=vfat --active   --source bootimg-partition --label boot --use-uuid --sourceparams="loader=u-boot"