[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PULL 21/36] hw/arm/allwinner-h3: add Boot ROM support
From: |
Peter Maydell |
Subject: |
Re: [PULL 21/36] hw/arm/allwinner-h3: add Boot ROM support |
Date: |
Fri, 20 Mar 2020 12:07:52 +0000 |
On Thu, 12 Mar 2020 at 16:45, Peter Maydell <address@hidden> wrote:
>
> From: Niek Linnenbank <address@hidden>
>
> A real Allwinner H3 SoC contains a Boot ROM which is the
> first code that runs right after the SoC is powered on.
> The Boot ROM is responsible for loading user code (e.g. a bootloader)
> from any of the supported external devices and writing the downloaded
> code to internal SRAM. After loading the SoC begins executing the code
> written to SRAM.
>
> This commits adds emulation of the Boot ROM firmware setup functionality
> by loading user code from SD card in the A1 SRAM. While the A1 SRAM is
> 64KiB, we limit the size to 32KiB because the real H3 Boot ROM also rejects
> sizes larger than 32KiB. For reference, this behaviour is documented
> by the Linux Sunxi project wiki at:
>
> https://linux-sunxi.org/BROM#U-Boot_SPL_limitations
>
> Signed-off-by: Niek Linnenbank <address@hidden>
> Reviewed-by: Alex Bennée <address@hidden>
> Message-id: address@hidden
> Signed-off-by: Peter Maydell <address@hidden>
Hi; Coverity (CID 1421882) points out a possible NULL
pointer dereference in this change:
> diff --git a/hw/arm/orangepi.c b/hw/arm/orangepi.c
> index d65bbf8a2fe..b8ebcb08b76 100644
> --- a/hw/arm/orangepi.c
> +++ b/hw/arm/orangepi.c
> @@ -97,6 +97,11 @@ static void orangepi_init(MachineState *machine)
> memory_region_add_subregion(get_system_memory(), h3->memmap[AW_H3_SDRAM],
> machine->ram);
>
> + /* Load target kernel or start using BootROM */
> + if (!machine->kernel_filename && blk_is_available(blk)) {
> + /* Use Boot ROM to copy data from SD card to SRAM */
> + allwinner_h3_bootrom_setup(h3, blk);
> + }
blk_is_available() assumes its argument is non-NULL, but
earlier in the function we set up blk with:
blk = di ? blk_by_legacy_dinfo(di) : NULL;
so it can be NULL here.
Could you send a patch to fix this, please? Probably
just adding '&& blk' in the middle of the condition
is sufficient.
thanks
-- PMM
- [PULL 11/36] hw/arm/fsl-imx25: Wire up USB controllers, (continued)
- [PULL 11/36] hw/arm/fsl-imx25: Wire up USB controllers, Peter Maydell, 2020/03/12
- [PULL 10/36] hw/arm/fsl-imx25: Wire up eSDHC controllers, Peter Maydell, 2020/03/12
- [PULL 13/36] hw/arm: add Xunlong Orange Pi PC machine, Peter Maydell, 2020/03/12
- [PULL 12/36] hw/arm: add Allwinner H3 System-on-Chip, Peter Maydell, 2020/03/12
- [PULL 15/36] hw/arm/allwinner-h3: add USB host controller, Peter Maydell, 2020/03/12
- [PULL 16/36] hw/arm/allwinner-h3: add System Control module, Peter Maydell, 2020/03/12
- [PULL 14/36] hw/arm/allwinner-h3: add Clock Control Unit, Peter Maydell, 2020/03/12
- [PULL 17/36] hw/arm/allwinner: add CPU Configuration module, Peter Maydell, 2020/03/12
- [PULL 18/36] hw/arm/allwinner: add Security Identifier device, Peter Maydell, 2020/03/12
- [PULL 21/36] hw/arm/allwinner-h3: add Boot ROM support, Peter Maydell, 2020/03/12
- Re: [PULL 21/36] hw/arm/allwinner-h3: add Boot ROM support,
Peter Maydell <=
- [PULL 24/36] tests/boot_linux_console: Add a quick test for the OrangePi PC board, Peter Maydell, 2020/03/12
- [PULL 25/36] tests/boot_linux_console: Add initrd test for the Orange Pi PC board, Peter Maydell, 2020/03/12
- [PULL 26/36] tests/boot_linux_console: Add a SD card test for the OrangePi PC board, Peter Maydell, 2020/03/12
- [PULL 20/36] hw/arm/allwinner-h3: add EMAC ethernet device, Peter Maydell, 2020/03/12
- [PULL 23/36] hw/arm/allwinner: add RTC device support, Peter Maydell, 2020/03/12
- [PULL 28/36] tests/boot_linux_console: Test booting NetBSD via U-Boot on OrangePi PC, Peter Maydell, 2020/03/12
- [PULL 31/36] hw/arm/virt: Introduce VirtGICType enum type, Peter Maydell, 2020/03/12
- [PULL 22/36] hw/arm/allwinner-h3: add SDRAM controller device, Peter Maydell, 2020/03/12