Skip to content
Snippets Groups Projects
  • Stephen Warren's avatar
    fe7b7cd2
    ARM: tegra: set initrd_high so boot scripts work · fe7b7cd2
    Stephen Warren authored
    
    During bootm/z, U-Boot relocates the DTB and initrd to high memory so
    they are out of the way of the kernel. On ARM at least, some parts of
    high memory are "highmem" and can't be accessed at early boot. To solve
    this, we need to restrict this relocation process to use lower parts of
    RAM that area accessible.
    
    For the DTB, an earlier patch of mine set CONFIG_SYS_BOOTMAPSZ. However,
    since some platforms have different restrictions on DTB and initrd
    location, that config option doesn't affect the initrd. We need to set
    the initrd_high environment variable to control the initrd relocation.
    
    Since we have carefully chosen the load addresses for the DTB and
    initrd (see comments in include/configs/tegraNNN-common.h re: values in
    MEM_LAYOUT_ENV_SETTINGS), we don't actually need any DTB or initrd
    relocation at all. Skipping relocation removes some redundant work.
    Hence, set both fdt_high and initrd_high to ffffffff which completely
    disables relocation.
    
    If the user does something unusual, such as using custom locations for
    the DTB/initrd load address or wanting to use DTB/initrd relocation for
    some reason, they can simply set these variables to custom values to
    override these environment defaults.
    
    With this change, cmd_sysboot works correctly for a filesystem created
    by the Fedora installer.
    
    Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
    Signed-off-by: default avatarTom Warren <twarren@nvidia.com>
    fe7b7cd2
    History
    ARM: tegra: set initrd_high so boot scripts work
    Stephen Warren authored
    
    During bootm/z, U-Boot relocates the DTB and initrd to high memory so
    they are out of the way of the kernel. On ARM at least, some parts of
    high memory are "highmem" and can't be accessed at early boot. To solve
    this, we need to restrict this relocation process to use lower parts of
    RAM that area accessible.
    
    For the DTB, an earlier patch of mine set CONFIG_SYS_BOOTMAPSZ. However,
    since some platforms have different restrictions on DTB and initrd
    location, that config option doesn't affect the initrd. We need to set
    the initrd_high environment variable to control the initrd relocation.
    
    Since we have carefully chosen the load addresses for the DTB and
    initrd (see comments in include/configs/tegraNNN-common.h re: values in
    MEM_LAYOUT_ENV_SETTINGS), we don't actually need any DTB or initrd
    relocation at all. Skipping relocation removes some redundant work.
    Hence, set both fdt_high and initrd_high to ffffffff which completely
    disables relocation.
    
    If the user does something unusual, such as using custom locations for
    the DTB/initrd load address or wanting to use DTB/initrd relocation for
    some reason, they can simply set these variables to custom values to
    override these environment defaults.
    
    With this change, cmd_sysboot works correctly for a filesystem created
    by the Fedora installer.
    
    Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
    Signed-off-by: default avatarTom Warren <twarren@nvidia.com>