Subject: bug#49550: Enable to boot from emmc on rockpro64

From: Pierre Langlois <[email-masked]>
Date: Tue, 27 Jul 2021 20:28:54 +0100

Hi Vagrant,

I just had a break-through with this! See inline.

Vagrant Cascadian writes:

> On 2021-07-13, Pierre Langlois wrote:
>> I'm afraid since commit 3a851d45576e046d696fcf35b34d57b2cd28ea49 [0]
>> I've not been able to boot from eMMC on the rockpro64 board, it freezes
>> before loading the kernel. Re-introducing the work-around fixed the
>> issue for me (see patch attached).
>>
>> Did we mean to remove the work-around? I'm wondering if there's
>> something I'm missing, or if I should instead boot from a USB device.
>
> I definitely tested this on pinebook-pro and probably just assumed it
> would also fix the issue on rockpro64...
>
>
>> I've also updated u-boot to 2021.07 but I'm seeing the same boot issue
>> so it doesn't appear to be fixed upstream :-/
>>
>> Anybody know of any other work around? If not, are you happy with the
>> patch attached?
>
> I'll try to test on rockpro64 and see if I can confirm the issue and
> your fix...
>
>
> live well,
>   vagrant
>
>> From f3c647bb447706f465a3fb4b8d6e09cd089dbed9 Mon Sep 17 00:00:00 2001
>> From: Pierre Langlois <[email-masked]>
>> Date: Sat, 8 May 2021 16:19:23 +0100
>> Subject: [PATCH 1/3] gnu: u-boot-rockpro64-rk3399: Disable USB boot.
>>
>> * gnu/packages/bootloaders.scm (u-boot-rockpro64-rk3399)[arguments]: Add
>> 'patch-rockpro64-config phase.
>> ---
>>  gnu/packages/bootloaders.scm | 11 ++++++++---
>>  1 file changed, 8 insertions(+), 3 deletions(-)
>>
>> diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
>> index 742992a119..75705a27c1 100644
>> --- a/gnu/packages/bootloaders.scm
>> +++ b/gnu/packages/bootloaders.scm
>> @@ -12,7 +12,7 @@
>>  ;;; Copyright © 2019 Mathieu Othacehe <[email-masked]>
>>  ;;; Copyright © 2020 Björn Höfling <[email-masked]>
>>  ;;; Copyright © 2018, 2019, 2020 Vagrant Cascadian <[email-masked]>
>> -;;; Copyright © 2020 Pierre Langlois <[email-masked]>
>> +;;; Copyright © 2020, 2021 Pierre Langlois <[email-masked]>
>>  ;;; Copyright © 2021 Vincent Legoll <[email-masked]>
>>  ;;; Copyright © 2021 Brice Waegeneire <[email-masked]>
>>  ;;;
>> @@ -931,11 +931,16 @@ to Novena upstream, does not load u-boot.img from the first partition.")
>>          (substitute-keyword-arguments (package-arguments base)
>>            ((#:phases phases)
>>             `(modify-phases ,phases
>> +              (add-after 'unpack 'patch-rockpro64-config
>> +                ;; Fix regression in 2020.10 causing freezes on boot with USB boot enabled.
>> +                ;; See https://gitlab.manjaro.org/manjaro-arm/packages/core/uboot-rockpro64/-/issues/4
>> +                (lambda _
>> +                  (substitute* "configs/rockpro64-rk3399_defconfig"
>> +                    (("CONFIG_USE_PREBOOT=y") "CONFIG_USE_PREBOOT=n"))))
>>                (add-after 'patch-rockpro64-config 'set-environment

Wait a minute, there was a bug here on master! The 'set-environment
phase runs after 'patch-rockpro64-config phase, it should be 'unpack.
This was the reason it was hanging on boot for me, it wasn't to do with
PREBOOT, ah-ha! :-D

That's nice, I was really confused about this issue, thinking I maybe
had a faulty board.

From 055d1d358c55811cafd4c56b919865b75e59d936 Mon Sep 17 00:00:00 2001
From: Pierre Langlois <[email-masked]>
Date: Tue, 27 Jul 2021 20:15:55 +0100
Subject: [PATCH] gnu: u-boot-rockpro64-rk3399: Enable 'set-environment phase.

* gnu/packages/bootloaders.scm (u-boot-rockpro64-rk3399)[arguments]: Run
'set-environment phase after 'unpack instead of non-existent
'patch-rockpro64-config phase.
---
 gnu/packages/bootloaders.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 742992a119..4f7a8853e8 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -931,7 +931,7 @@ to Novena upstream, does not load u-boot.img from the first partition.")
         (substitute-keyword-arguments (package-arguments base)
           ((#:phases phases)
            `(modify-phases ,phases
-              (add-after 'patch-rockpro64-config 'set-environment
+              (add-after 'unpack 'set-environment
                 (lambda* (#:key inputs #:allow-other-keys)
                   (setenv "BL31" (string-append (assoc-ref inputs "firmware")
                                                 "/bl31.elf"))
--
2.32.0

>>                  (lambda* (#:key inputs #:allow-other-keys)
>>                    (setenv "BL31" (string-append (assoc-ref inputs "firmware")
>> -                                                "/bl31.elf"))
>> -                  #t))
>> +                                                "/bl31.elf"))))
>>                ;; Phases do not succeed on the bl31 ELF.
>>                (delete 'strip)
>>                (delete 'validate-runpath)))))
>> --
>> 2.32.0
>>
>>
>>
>> [0]: https://lists.gnu.org/archive/html/guix-commits/2021-05/msg00085.html

Thanks,
Pierre