[PATCH] xilinx: Disable ARCH_FIXUP_FDT_MEMORY

Michal Simek monstr at monstr.eu
Mon Aug 23 08:49:56 CEST 2021


pá 6. 8. 2021 v 14:22 odesílatel Michal Simek <michal.simek at xilinx.com> napsal:
>
> Based on DT spec you can have one memory node which multiple ranges or
> multiple nodes.
> fdt_fixup_memory_banks() is not implemented in a correct way when multiple
> memory nodes are present because all ranges are put it to the first memory
> node found. And next memory nodes are kept in DT which ends up in the same
> range specification in the same DT.
>
> Here is what it is happening.
> Origin DT.
> memory at 0 {
>         device_type = "memory";
>         reg = <0x0 0x0 0x0 0x80000000>;
> };
>
> memory at 800000000 {
>         device_type = "memory";
>         reg = <0x8 0x00000000 0x0 0x80000000>;
> };
>
> After fdt_fixup_memory_banks()
>
> memory at 0 {
>         device_type = "memory";
>         reg = <0x0 0x0 0x0 0x80000000>, <0x8 0x00000000 0x0 0x80000000>;
> };
>
> memory at 800000000 {
>         device_type = "memory";
>         reg = <0x8 0x00000000 0x0 0x80000000>;
> };
>
> As is visible memory at 0 node got second range but there is still
> memory at 800000000 node present and 2G range is listed twice.
>
> The solution can't be that second node is removed because it can be
> referenced already that's why it is better for us to disable this option
> for now.
>
> Signed-off-by: Michal Simek <michal.simek at xilinx.com>
> ---
>
>  configs/xilinx_versal_virt_defconfig | 1 +
>  configs/xilinx_zynq_virt_defconfig   | 1 +
>  configs/xilinx_zynqmp_virt_defconfig | 1 +
>  3 files changed, 3 insertions(+)
>
> diff --git a/configs/xilinx_versal_virt_defconfig b/configs/xilinx_versal_virt_defconfig
> index e67905178dee..c894d32a9259 100644
> --- a/configs/xilinx_versal_virt_defconfig
> +++ b/configs/xilinx_versal_virt_defconfig
> @@ -13,6 +13,7 @@ CONFIG_COUNTER_FREQUENCY=100000000
>  CONFIG_DISTRO_DEFAULTS=y
>  CONFIG_FIT=y
>  CONFIG_FIT_VERBOSE=y
> +# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
>  CONFIG_BOOTDELAY=5
>  CONFIG_USE_PREBOOT=y
>  # CONFIG_DISPLAY_CPUINFO is not set
> diff --git a/configs/xilinx_zynq_virt_defconfig b/configs/xilinx_zynq_virt_defconfig
> index b4c7f11505c1..573a10fe221b 100644
> --- a/configs/xilinx_zynq_virt_defconfig
> +++ b/configs/xilinx_zynq_virt_defconfig
> @@ -23,6 +23,7 @@ CONFIG_SPL_LOAD_FIT=y
>  CONFIG_SPL_LOAD_FIT_ADDRESS=0x10000000
>  # CONFIG_USE_SPL_FIT_GENERATOR is not set
>  CONFIG_LEGACY_IMAGE_FORMAT=y
> +# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
>  CONFIG_USE_PREBOOT=y
>  CONFIG_SPL_STACK_R=y
>  CONFIG_SPL_FPGA=y
> diff --git a/configs/xilinx_zynqmp_virt_defconfig b/configs/xilinx_zynqmp_virt_defconfig
> index 623228053e47..2c888130fa59 100644
> --- a/configs/xilinx_zynqmp_virt_defconfig
> +++ b/configs/xilinx_zynqmp_virt_defconfig
> @@ -21,6 +21,7 @@ CONFIG_FIT=y
>  CONFIG_FIT_VERBOSE=y
>  CONFIG_SPL_LOAD_FIT=y
>  CONFIG_SPL_LOAD_FIT_ADDRESS=0x10000000
> +# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
>  CONFIG_USE_PREBOOT=y
>  CONFIG_PREBOOT="scsi reset;usb reset"
>  # CONFIG_DISPLAY_CPUINFO is not set
> --
> 2.32.0
>

Applied.
M

-- 
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Xilinx Microblaze
Maintainer of Linux kernel - Xilinx Zynq ARM and ZynqMP ARM64 SoCs
U-Boot custodian - Xilinx Microblaze/Zynq/ZynqMP/Versal SoCs


More information about the U-Boot mailing list