пт, 9 серп. 2024 р. о 08:49 Heinrich Schuchardt <xypron.g...@gmx.de> пише: > > > > Am 7. August 2024 14:10:24 MESZ schrieb Svyatoslav Ryhel <clamo...@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 <clamo...@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;