Re: [PATCH v1 3/3] partitions: Introduce NVIDIA Tegra Partition Table
From: Stephen Warren <hidden>
Date: 2020-03-06 16:53:02
Also in:
linux-mmc, linux-tegra, lkml
On 3/6/20 6:37 AM, Ulf Hansson wrote:
On Wed, 4 Mar 2020 at 18:09, Dmitry Osipenko [off-list ref] wrote:quoted
04.03.2020 19:36, Ulf Hansson пишет:quoted
On Tue, 25 Feb 2020 at 01:20, Stephen Warren [off-list ref] wrote:quoted
On 2/24/20 4:18 PM, Dmitry Osipenko wrote:quoted
All NVIDIA Tegra devices use a special partition table format for the internal storage partitioning. Most of Tegra devices have GPT partition in addition to TegraPT, but some older Android consumer-grade devices do not or GPT is placed in a wrong sector, and thus, the TegraPT is needed in order to support these devices properly in the upstream kernel. This patch adds support for NVIDIA Tegra Partition Table format that is used at least by all NVIDIA Tegra20 and Tegra30 devices.quoted
diff --git a/arch/arm/mach-tegra/tegra.c b/arch/arm/mach-tegra/tegra.cquoted
+static void __init tegra_boot_config_table_init(void) +{ + void __iomem *bct_base; + u16 pt_addr, pt_size; + + bct_base = IO_ADDRESS(TEGRA_IRAM_BASE) + TEGRA_IRAM_BCT_OFFSET;This shouldn't be hard-coded. IIRC, the boot ROM writes a BIT (Boot Information Table) to a fixed location in IRAM, and there's some value in the BIT that points to where the BCT is in IRAM. In practice, it might work out that the BCT is always at the same place in IRAM, but this certainly isn't guaranteed. I think there's code in U-Boot which extracts the BCT location from the BIT? Yes, see arch/arm/mach-tegra/ap.c:get_odmdata().So, have you considered using the command line partition option, rather than adding yet another partition scheme to the kernel? In principle, you would let the boot loader scan for the partitions, likely from machine specific code in U-boot. Then you append these to the kernel command line and let block/partitions/cmdline.c scan for it.The bootloader is usually locked-down on a consumer Tegra machines (it's signed / encrypted).Right, you are you talking about this from a developer point of view, not from an end product user? I mean, for sure you can upgrade the bootloader on Nvidia products? No, really?
For developer-oriented products like Jetson developer kits, you can upgrade the bootloader, and luckily they haven't used this partition table format for many versions. However, commercial Android products typically have secure boot enabled, so you can't replace the bootloader unless you know the secure boot keys, which only the manufacturer knows. Dmitry is working on re-purposing such products.