[PATCH v2 1/1] disk: add TegraPT support

Svyatoslav Ryhel clamor95 at gmail.com
Fri Aug 9 07:57:03 CEST 2024


пт, 9 серп. 2024 р. о 08:49 Heinrich Schuchardt <xypron.glpk at gmx.de> пише:
>
>
>
> Am 7. August 2024 14:10:24 MESZ schrieb Svyatoslav Ryhel <clamor95 at gmail.com>:
> >TegraPT is compatible with EFI part but it can't pass Protective MBR check.
> >Skip this check if CONFIG_TEGRA_PARTITION is enabled, storage uclass is MMC
> >and devnum is 0. Note, eMMC on supported devices MUST be aliased to mmc0.
>
> Why wouldn't you use U-Boot's gpt command to fix the non-conformant partition table?
>

I would love to, but I am forced to use TegraPT and DON'T modify it.
Tegra114 bootloader is RSA signed and there is no possible way to
replace it with open source one unless vendor allows this. SO I am
stuck with vendor bootloader to chainload from which enforces TegraPT
as well. Modification of existing partition table can irreversibly
brick the device.

Best regards,
Svyatoslav R.

> Best regards
>
> Heinrich
>
> >
> >Signed-off-by: Svyatoslav Ryhel <clamor95 at gmail.com>
> >---
> > disk/Kconfig    |  8 ++++++++
> > disk/part_efi.c | 13 +++++++++++++
> > 2 files changed, 21 insertions(+)
> >
> >diff --git a/disk/Kconfig b/disk/Kconfig
> >index ffa835eb35..75a849ec8c 100644
> >--- a/disk/Kconfig
> >+++ b/disk/Kconfig
> >@@ -49,6 +49,14 @@ config SPL_MAC_PARTITION
> >       default y if MAC_PARTITION
> >       select SPL_PARTITIONS
> >
> >+config TEGRA_PARTITION
> >+      bool "Enable Nvidia Tegra partition table"
> >+      select PARTITIONS
> >+      select EFI_PARTITION
> >+      help
> >+        Say Y here if you would like to use U-Boot on a device with
> >+        Nvidia Tegra partition table.
> >+
> > config DOS_PARTITION
> >       bool "Enable MS Dos partition table"
> >       default y if BOOT_DEFAULTS
> >diff --git a/disk/part_efi.c b/disk/part_efi.c
> >index b1a03bd165..350a8a6dc5 100644
> >--- a/disk/part_efi.c
> >+++ b/disk/part_efi.c
> >@@ -318,6 +318,19 @@ static int part_test_efi(struct blk_desc *desc)
> >       /* Read legacy MBR from block 0 and validate it */
> >       if ((blk_dread(desc, 0, 1, (ulong *)legacymbr) != 1)
> >               || (is_pmbr_valid(legacymbr) != 1)) {
> >+
> >+              /*
> >+               * TegraPT is compatible with EFI part, but it
> >+               * cannot pass the Protective MBR check. Skip it
> >+               * if CONFIG_TEGRA_PARTITION is enabled and the
> >+               * device in question is eMMC.
> >+               */
> >+              if (IS_ENABLED(CONFIG_TEGRA_PARTITION))
> >+                      if (!is_pmbr_valid(legacymbr) &&
> >+                          desc->uclass_id == UCLASS_MMC &&
> >+                          !desc->devnum)
> >+                              return 0;
> >+
> >               return -1;
> >       }
> >       return 0;


More information about the U-Boot mailing list