[U-Boot] [PATCH] arm64: zynqmp: accept an absolute path for PMUFW_INIT_FILE

Luca Ceresoli luca at lucaceresoli.net
Thu May 31 15:28:14 UTC 2018


Hi Michal, Emmanuel,

On 31/05/2018 17:14, Emmanuel Vadot wrote:
> On Thu, 31 May 2018 16:28:46 +0200
> Michal Simek <michal.simek at xilinx.com> wrote:
> 
>> On 31.5.2018 14:58, Luca Ceresoli wrote:
>>> The value of PMUFW_INIT_FILE is prefixed with "$(srctree)/", thus
>>> forcing it to be a relative path inside the U-Boot source tree. Since
>>> the PMUFW is a binary file generated outside of U-Boot, the PMUFW
>>> binary must be copied inside the U-Boot source tree before the
>>> build.
>>>
>>> This generates a few problems:
>>>
>>>  * if the source tree is shared among different out-of-tree builds,
>>>    they will pollute (and potentially corrupt) each other
>>>  * the source tree cannot be read-only
>>>  * any buildsystem must add a command to copy the PMUFW binary
>>>  * putting an externally-generated binary in the source tree is ugly
>>>    as hell
>>>
>>> Avoid these problems by accepting an absolute path for
>>> PMUFW_INIT_FILE. This would be as simple as removing the "$(srctree)/"
>>> prefix, but in order to keep backward compatibility we rather use the
>>> shell and readlink to get the absolute path even when starting from a
>>> relative path.
>>>
>>> Tested in the 9 possible combinations of:
>>>  - PMUFW_INIT_FILE empty, relative or absolute
>>>  - building in-tree, in subdir, in other directory
>>>
>>> Signed-off-by: Luca Ceresoli <luca at lucaceresoli.net>
>>> Cc: Michal Simek <michal.simek at xilinx.com>
>>> Cc: Simon Glass <sjg at chromium.org>
>>> ---
>>>  scripts/Makefile.spl | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
>>> index 057389997de6..ef1681ef4bf5 100644
>>> --- a/scripts/Makefile.spl
>>> +++ b/scripts/Makefile.spl
>>> @@ -168,7 +168,7 @@ MKIMAGEFLAGS_boot.bin = -T zynqimage -R $(srctree)/$(CONFIG_BOOT_INIT_FILE)
>>>  endif
>>>  ifdef CONFIG_ARCH_ZYNQMP
>>>  MKIMAGEFLAGS_boot.bin = -T zynqmpimage -R $(srctree)/$(CONFIG_BOOT_INIT_FILE) \
>>> -	-n $(srctree)/$(CONFIG_PMUFW_INIT_FILE)
>>> +	-n "$(shell cd $(srctree); readlink -m $(CONFIG_PMUFW_INIT_FILE))"
>>>  endif
>>>  
>>>  spl/boot.bin: $(obj)/u-boot-spl.bin FORCE
>>>
>>
>> looks good.
>>
>> Tom: Do we still have people who build u-boot on BSD system?
>> I would like to know if this readlink -m works there.
>>
>> Thanks,
>> Michal
>> _______________________________________________
>> U-Boot mailing list
>> U-Boot at lists.denx.de
>> https://lists.denx.de/listinfo/u-boot
> 
>  We don't have -m on FreeBSD and after checking they don't either on
> OpenBSD and NetBSD.

Ok, then we need a portable version. Thanks for the heads up.

The problem with 'readlink -f' is that for a mistyped filename it will call

  ./tools/mkimage <...> -n "" <...>

and exit successfully producing a boot.bin without a pmufw. :(

I'll have to find out where to check for file existence, which cannot be
done where the readlink is in the present patch.

-- 
Luca


More information about the U-Boot mailing list