On 2016-07-30, Martin Michlmayr wrote:
> DTBs on arm64 are stored as vendor/dtb rather than everything in one
> directory.  flash-kernel doesn't handle this at the moment.  I see two
> options:
>
> 1) Strip the vendor dir away and install the dtb as
> /boot/dtbs/$kvers/dtb
>
> 2) Keep the directory and install as /boot/dtbs/$kvers/vendor/dtb
>
> In both cases, I think we should accept local DTBs in
> /etc/flash-kernel/dtbs either as vendor/dtb or just dtb.
>
> The patch below implements options 1.  Do people think this is the
> right path or would you prefer option 2?
>
> Actually, now that I look at the boot script, I think the real
> question is: does ${fdtfile} from u-boot contain the directory or not?
> I believe the answer is no, so option 1 is the right on.

I haven't seen u-boot platforms that set fdtfile to include the
directory.

The only risk i see is if different vendors implemented a .dtb with the
same name but in a different vendor dir... but I'm hoping the odds of
that, while not impossible, are highly unlikely.


> Any problems with the proposed patch?

> diff --git a/functions b/functions
> index 0f597b8..06a0c39 100644
> --- a/functions
> +++ b/functions
> @@ -560,6 +560,8 @@ find_dtb_file() {
>       *)
>               if [ -e "/etc/flash-kernel/dtbs/$dtb_name" ] ; then
>                       echo "/etc/flash-kernel/dtbs/$dtb_name"
> +             elif [ -e "/etc/flash-kernel/dtbs/$(basename $dtb_name)" ] ; 
> then
> +                     echo "/etc/flash-kernel/dtbs/$(basename $dtb_name)"
>               else
>                       echo "/usr/lib/linux-image-$kvers/$dtb_name"
>               fi
> @@ -573,6 +575,11 @@ handle_dtb() {
>       fi
>  
>       local dtb=$(find_dtb_file)
> +     # DTBs on arm64 are stored in subdirs for each vendor; strip the
> +     # dir away because we want to put the file in /boot/dtbs/$kvers/
> +     # without additional subdirs.
> +     local dtb_name=$(basename $dtb_name)
> +
>       if [ "x$FK_KERNEL_HOOK_SCRIPT" = "xpostrm.d" ] ; then
>               rm -f "/boot/dtbs/$kvers/$dtb_name"


Thanks for the patch! Looks good and simple to me.

I presume the database entries for platforms that need it would then
include the vendor like this:

  DTB-Id: VENDOR/PLATFORM.dtb


live well,
  vagrant

Attachment: signature.asc
Description: PGP signature

Reply via email to