All of lore.kernel.org
 help / color / mirror / Atom feed
* RK3399 TF-A hash verification failure for atf-3
@ 2026-07-18 16:03 Vic B
  2026-07-22 16:23 ` Peter Robinson via U-Boot
  2026-07-22 17:12 ` Quentin Schulz via U-Boot
  0 siblings, 2 replies; 12+ messages in thread
From: Vic B @ 2026-07-18 16:03 UTC (permalink / raw)
  To: u-boot

Hi,

while trying to compile u-boot v2026.07 (or v2026.04) for RK3399-based
NanoPi R4S, I run into issues with current mainline TF-A (using 2.14, more
precisely the lts-v2.14.4 tag). I'm cross-compiling both TF-A and u-boot
using GCC version 14.2.0 (Debian 14.2.0-19) from Debian Trixie.

First, I encountered TF-A build failure with the

 region `PMUSRAM' overflowed by 3928 bytes

error message, which seems to be a long-term issue know since 2018:

 https://github.com/ARM-software/tf-issues/issues/650

and recently also mentioned in this mailing list:

 https://lists.denx.de/pipermail/u-boot/2026-April/613754.html

Although some discussions suggest that this issue may be compiler or
toolchain dependent, I've eventually found a solution in Armbian
sources, which fix this issue by changing PMUSRAM_RSIZE from 8K to 16K:

 https://github.com/armbian/build/blob/main/patch/atf/atf-rockchip64/v2.14/1002-2.14-rk3399-PMUSRAM_RSIZE-8k-16k.patch

I'm also using two other Armbian RK3399-related patches to TF-A as these
looked useful to me:

 https://github.com/armbian/build/blob/main/patch/atf/atf-rockchip64/v2.14/1001-2.14-rk3399-m0-LDFLAGS-no-pie.patch
 https://github.com/armbian/build/blob/main/patch/atf/atf-rockchip64/v2.14/1003-rk3399-fix-pl330-dmac-sgrf-init.patch

With all these patches applied to TF-A lts-v2.14.4, I can successfully
build TF-A and get bl31.elf with .pmusram segment of 0x2f58 (12120)
bytes (i.e. 8192 bytes of the original limit plus 3928 bytes which used
to overflow without the patch):

 $ readelf -l ../trusted-firmware-a/build/rk3399/release/bl31/bl31.elf

 Elf file type is EXEC (Executable file)
 Entry point 0x40000
 There are 6 program headers, starting at offset 64

 Program Headers:
   Type           Offset             VirtAddr           PhysAddr
                  FileSiz            MemSiz              Flags  Align
   LOAD           0x0000000000010000 0x0000000000040000 0x0000000000040000
                  0x0000000000023000 0x0000000000023000  R E    0x10000
   LOAD           0x0000000000033000 0x0000000000063000 0x0000000000063000
                  0x0000000000000051 0x0000000000081000  RW     0x1000
   LOAD           0x0000000000034000 0x00000000ff3b0000 0x00000000ff3b0000
                  0x0000000000002f58 0x0000000000002f58  RWE    0x1000
   LOAD           0x0000000000037000 0x00000000ff8c0000 0x00000000ff8c0000
                  0x0000000000002000 0x0000000000002000  R E    0x1000
   LOAD           0x0000000000000000 0x00000000ff8c2000 0x00000000ff8c2000
                  0x0000000000000000 0x0000000000001000  RW     0x1000
   GNU_STACK      0x0000000000000000 0x0000000000000000 0x0000000000000000
                  0x0000000000000000 0x0000000000000000  RW     0x10

  Section to Segment mapping:
   Segment Sections...
    00     .ro
    01     .data .stacks .bss .per_cpu .xlat_table .coherent_ram
    02     .pmusram
    03     .incbin_sram .text_sram
    04     .stack_sram
    05

I can also successfully build u-boot with nanopi-r4s-rk3399_defconfig
and this bl31.elf, where a 12120 bytes blob goes to atf-3 according to
mkimage:

 Image 3 (atf-3)
  Description:  ARM Trusted Firmware
  Created:      Sat Jul 18 17:02:03 2026
  Type:         Firmware
  Compression:  uncompressed
  Data Size:    12120 Bytes = 11.84 KiB = 0.01 MiB
  Architecture: AArch64
  OS:           ARM Trusted Firmware
  Load Address: 0xff3b0000
  Hash algo:    sha256
  Hash value:   bb3956f441de43bdc2b0946e2429f1166b4e54fe67cbca6c9fbfa9371b5ecfc9

Sadly, when I try to boot it from SD card, it fails because of hash
verification failure for atf-3:

 U-Boot SPL 2026.07 (Jul 17 2026 - 15:40:20 +0200)
 Trying to boot from MMC2
 ## Checking hash(es) for config config-1 ... OK
 ## Checking hash(es) for Image atf-1 ... sha256+ OK
 ## Checking hash(es) for Image u-boot ... sha256+ OK
 ## Checking hash(es) for Image fdt-1 ... sha256+ OK
 ## Checking hash(es) for Image atf-2 ... sha256+ OK
 ## Checking hash(es) for Image atf-3 ... sha256 error!
 Bad hash value for 'hash' hash node in 'atf-3' image node
 spl_load_simple_fit: can't load image loadables index 2 (ret = -1)
 mmc_load_image_raw_sector: mmc block read error

An easy workaround is to disable FIT verification (SPL_FIT_SIGNATURE
and CONFIG_SPL_FIT_FULL_CHECK) in the SPL, without these I get a working
u-boot and smooth running linux-6.18.38 without any signs of trouble:

 U-Boot TPL 2026.07 (Jul 15 2026 - 17:34:15)
 Trying to boot from BOOTROM
 Returning to boot ROM...

 U-Boot SPL 2026.07 (Jul 15 2026 - 17:34:15 +0200)
 Trying to boot from MMC2
 load_simple_fit: Skip load 'atf-5': image size is 0!
 NOTICE:  BL31: v2.14.4(release):lts-v2.14.4-3-g4660bf8b7
 NOTICE:  BL31: Built : 22:54:17, Jul 14 2026


 U-Boot 2026.07 (Jul 15 2026 - 17:34:15 +0200)

 SoC: Rockchip rk3399
 Reset cause: POR
 Model: FriendlyElec NanoPi R4S
 DRAM:  4 GiB (total 3.9 GiB)
 PMIC:  RK808 
 Core:  281 devices, 25 uclasses, devicetree: separate
 MMC:   mmc@fe320000: 1
 Loading Environment from <NULL>... OK
 In:    serial
 Out:   serial
 Err:   serial
 Model: FriendlyElec NanoPi R4S
 Hit any key to stop autoboot: 0
 ** Booting bootflow 'mmc@fe320000.bootdev.part_1' with script
 7211491 bytes read in 310 ms (22.2 MiB/s)
 62459 bytes read in 5 ms (11.9 MiB/s)
    Uncompressing Kernel Image to 0
 ## Flattened Device Tree blob at 12000000
    Booting using the fdt blob at 0x12000000
 Working FDT set to 12000000
    Loading Device Tree to 00000000f4f63000, end 00000000f4f753fa ... OK
 Working FDT set to f4f63000

 Starting kernel ...

However, the need to disable SPL FIT verifications because of the
mysterious hash verification failure for atf-3 (which seems to contain
the PMUSRAM blob whose size I had to change from 8K to 16K to fix the
TF-A build failure) makes the resulting system considerably less
trustworthy to me.

I suspect that the PMUSRAM_RSIZE setting in TF-A may have a
corresponding counterpart in u-boot, which may need to be changed too
when the TF-A value is raised from 8K to 16K. But I didn't manage to
find any such setting in u-boot.

Also, I'm also quite confused that despite mainline TF-A failing to
build for RK3399, there seem to be several people submitting recent
patches for RK3399 boards to u-boot. As TF-A is required by u-boot for
RK3399, this makes me wonder what version of TF-A those people use
and/or how they fix the PMUSRAM region overflow issue.

Any hints or thoughts on what is wrong here will be appreciated.

Vic

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: RK3399 TF-A hash verification failure for atf-3
  2026-07-18 16:03 RK3399 TF-A hash verification failure for atf-3 Vic B
@ 2026-07-22 16:23 ` Peter Robinson via U-Boot
  2026-07-24 10:57   ` Vic B via U-Boot
  2026-07-22 17:12 ` Quentin Schulz via U-Boot
  1 sibling, 1 reply; 12+ messages in thread
From: Peter Robinson via U-Boot @ 2026-07-22 16:23 UTC (permalink / raw)
  To: Vic B; +Cc: u-boot

Hi Vic,

> while trying to compile u-boot v2026.07 (or v2026.04) for RK3399-based
> NanoPi R4S, I run into issues with current mainline TF-A (using 2.14, more
> precisely the lts-v2.14.4 tag). I'm cross-compiling both TF-A and u-boot
> using GCC version 14.2.0 (Debian 14.2.0-19) from Debian Trixie.
>
> First, I encountered TF-A build failure with the
>
>  region `PMUSRAM' overflowed by 3928 bytes
>
> error message, which seems to be a long-term issue know since 2018:
>
>  https://github.com/ARM-software/tf-issues/issues/650
>
> and recently also mentioned in this mailing list:
>
>  https://lists.denx.de/pipermail/u-boot/2026-April/613754.html
>
> Although some discussions suggest that this issue may be compiler or
> toolchain dependent, I've eventually found a solution in Armbian
> sources, which fix this issue by changing PMUSRAM_RSIZE from 8K to 16K:

While changing that setting may allow it to build the PMU's SRAM size
in hardware is fixed, so it will cause real world problems.

The thing to note with the PMU FW is it's built for a Cortex-M0 core
which means you need to build it with a 32 bit compiler. You likely
need to add a M0_CROSS_COMPILE=arm-linux-gnu- variable (substitute
with the string for your armv7 compiler string) to the beginning of
your make command. EG:

M0_CROSS_COMPILE=arm-linux-gnu- make HOSTCC="gcc" CROSS_COMPILE=""
PLAT=rk3399 bl31

It works across numerous rk3399 devices for me with the 2.14.1 build
in Fedora and that firmware is about 5.7K in size.

>  https://github.com/armbian/build/blob/main/patch/atf/atf-rockchip64/v2.14/1002-2.14-rk3399-PMUSRAM_RSIZE-8k-16k.patch
>
> I'm also using two other Armbian RK3399-related patches to TF-A as these
> looked useful to me:
>
>  https://github.com/armbian/build/blob/main/patch/atf/atf-rockchip64/v2.14/1001-2.14-rk3399-m0-LDFLAGS-no-pie.patch
>  https://github.com/armbian/build/blob/main/patch/atf/atf-rockchip64/v2.14/1003-rk3399-fix-pl330-dmac-sgrf-init.patch
>
> With all these patches applied to TF-A lts-v2.14.4, I can successfully
> build TF-A and get bl31.elf with .pmusram segment of 0x2f58 (12120)
> bytes (i.e. 8192 bytes of the original limit plus 3928 bytes which used
> to overflow without the patch):
>
>  $ readelf -l ../trusted-firmware-a/build/rk3399/release/bl31/bl31.elf
>
>  Elf file type is EXEC (Executable file)
>  Entry point 0x40000
>  There are 6 program headers, starting at offset 64
>
>  Program Headers:
>    Type           Offset             VirtAddr           PhysAddr
>                   FileSiz            MemSiz              Flags  Align
>    LOAD           0x0000000000010000 0x0000000000040000 0x0000000000040000
>                   0x0000000000023000 0x0000000000023000  R E    0x10000
>    LOAD           0x0000000000033000 0x0000000000063000 0x0000000000063000
>                   0x0000000000000051 0x0000000000081000  RW     0x1000
>    LOAD           0x0000000000034000 0x00000000ff3b0000 0x00000000ff3b0000
>                   0x0000000000002f58 0x0000000000002f58  RWE    0x1000
>    LOAD           0x0000000000037000 0x00000000ff8c0000 0x00000000ff8c0000
>                   0x0000000000002000 0x0000000000002000  R E    0x1000
>    LOAD           0x0000000000000000 0x00000000ff8c2000 0x00000000ff8c2000
>                   0x0000000000000000 0x0000000000001000  RW     0x1000
>    GNU_STACK      0x0000000000000000 0x0000000000000000 0x0000000000000000
>                   0x0000000000000000 0x0000000000000000  RW     0x10
>
>   Section to Segment mapping:
>    Segment Sections...
>     00     .ro
>     01     .data .stacks .bss .per_cpu .xlat_table .coherent_ram
>     02     .pmusram
>     03     .incbin_sram .text_sram
>     04     .stack_sram
>     05
>
> I can also successfully build u-boot with nanopi-r4s-rk3399_defconfig
> and this bl31.elf, where a 12120 bytes blob goes to atf-3 according to
> mkimage:
>
>  Image 3 (atf-3)
>   Description:  ARM Trusted Firmware
>   Created:      Sat Jul 18 17:02:03 2026
>   Type:         Firmware
>   Compression:  uncompressed
>   Data Size:    12120 Bytes = 11.84 KiB = 0.01 MiB
>   Architecture: AArch64
>   OS:           ARM Trusted Firmware
>   Load Address: 0xff3b0000
>   Hash algo:    sha256
>   Hash value:   bb3956f441de43bdc2b0946e2429f1166b4e54fe67cbca6c9fbfa9371b5ecfc9
>
> Sadly, when I try to boot it from SD card, it fails because of hash
> verification failure for atf-3:
>
>  U-Boot SPL 2026.07 (Jul 17 2026 - 15:40:20 +0200)
>  Trying to boot from MMC2
>  ## Checking hash(es) for config config-1 ... OK
>  ## Checking hash(es) for Image atf-1 ... sha256+ OK
>  ## Checking hash(es) for Image u-boot ... sha256+ OK
>  ## Checking hash(es) for Image fdt-1 ... sha256+ OK
>  ## Checking hash(es) for Image atf-2 ... sha256+ OK
>  ## Checking hash(es) for Image atf-3 ... sha256 error!
>  Bad hash value for 'hash' hash node in 'atf-3' image node
>  spl_load_simple_fit: can't load image loadables index 2 (ret = -1)
>  mmc_load_image_raw_sector: mmc block read error
>
> An easy workaround is to disable FIT verification (SPL_FIT_SIGNATURE
> and CONFIG_SPL_FIT_FULL_CHECK) in the SPL, without these I get a working
> u-boot and smooth running linux-6.18.38 without any signs of trouble:
>
>  U-Boot TPL 2026.07 (Jul 15 2026 - 17:34:15)
>  Trying to boot from BOOTROM
>  Returning to boot ROM...
>
>  U-Boot SPL 2026.07 (Jul 15 2026 - 17:34:15 +0200)
>  Trying to boot from MMC2
>  load_simple_fit: Skip load 'atf-5': image size is 0!
>  NOTICE:  BL31: v2.14.4(release):lts-v2.14.4-3-g4660bf8b7
>  NOTICE:  BL31: Built : 22:54:17, Jul 14 2026
>
>
>  U-Boot 2026.07 (Jul 15 2026 - 17:34:15 +0200)
>
>  SoC: Rockchip rk3399
>  Reset cause: POR
>  Model: FriendlyElec NanoPi R4S
>  DRAM:  4 GiB (total 3.9 GiB)
>  PMIC:  RK808
>  Core:  281 devices, 25 uclasses, devicetree: separate
>  MMC:   mmc@fe320000: 1
>  Loading Environment from <NULL>... OK
>  In:    serial
>  Out:   serial
>  Err:   serial
>  Model: FriendlyElec NanoPi R4S
>  Hit any key to stop autoboot: 0
>  ** Booting bootflow 'mmc@fe320000.bootdev.part_1' with script
>  7211491 bytes read in 310 ms (22.2 MiB/s)
>  62459 bytes read in 5 ms (11.9 MiB/s)
>     Uncompressing Kernel Image to 0
>  ## Flattened Device Tree blob at 12000000
>     Booting using the fdt blob at 0x12000000
>  Working FDT set to 12000000
>     Loading Device Tree to 00000000f4f63000, end 00000000f4f753fa ... OK
>  Working FDT set to f4f63000
>
>  Starting kernel ...
>
> However, the need to disable SPL FIT verifications because of the
> mysterious hash verification failure for atf-3 (which seems to contain
> the PMUSRAM blob whose size I had to change from 8K to 16K to fix the
> TF-A build failure) makes the resulting system considerably less
> trustworthy to me.
>
> I suspect that the PMUSRAM_RSIZE setting in TF-A may have a
> corresponding counterpart in u-boot, which may need to be changed too
> when the TF-A value is raised from 8K to 16K. But I didn't manage to
> find any such setting in u-boot.
>
> Also, I'm also quite confused that despite mainline TF-A failing to
> build for RK3399, there seem to be several people submitting recent
> patches for RK3399 boards to u-boot. As TF-A is required by u-boot for
> RK3399, this makes me wonder what version of TF-A those people use
> and/or how they fix the PMUSRAM region overflow issue.
>
> Any hints or thoughts on what is wrong here will be appreciated.
>
> Vic

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: RK3399 TF-A hash verification failure for atf-3
  2026-07-18 16:03 RK3399 TF-A hash verification failure for atf-3 Vic B
  2026-07-22 16:23 ` Peter Robinson via U-Boot
@ 2026-07-22 17:12 ` Quentin Schulz via U-Boot
  2026-07-22 22:29   ` Peter Robinson
                     ` (2 more replies)
  1 sibling, 3 replies; 12+ messages in thread
From: Quentin Schulz via U-Boot @ 2026-07-22 17:12 UTC (permalink / raw)
  To: Vic B, u-boot

Hi Vic,

On 7/18/26 6:03 PM, Vic B wrote:
> [You don't often get email from u-boot@vicb.net. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ]
> 
> Hi,
> 
> while trying to compile u-boot v2026.07 (or v2026.04) for RK3399-based
> NanoPi R4S, I run into issues with current mainline TF-A (using 2.14, more
> precisely the lts-v2.14.4 tag). I'm cross-compiling both TF-A and u-boot
> using GCC version 14.2.0 (Debian 14.2.0-19) from Debian Trixie.
> 
> First, I encountered TF-A build failure with the
> 
>   region `PMUSRAM' overflowed by 3928 bytes
> 
> error message, which seems to be a long-term issue know since 2018:
> 
>   https://github.com/ARM-software/tf-issues/issues/650
> 
> and recently also mentioned in this mailing list:
> 
>   https://lists.denx.de/pipermail/u-boot/2026-April/613754.html
> 
> Although some discussions suggest that this issue may be compiler or
> toolchain dependent, I've eventually found a solution in Armbian

Debian toolchain issue, reported to TF-A last year, see 
https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/36981/comments/877be809_5abf10d8. 
We wanted to rely on Debian upgrading at some point their TF-A, hitting 
the same issue and working on it but it seems they are stuck on 
lts-v2.12.1 (which is slightly concerning considering we're at 
lts-v2.12.12 already) so this hasn't happened yet. I'm building on 
Fedora and my company's CI has lts-v2.12 pinned to avoid this issue, so 
I'm not going to be chasing this myself. Can you try to work this out 
with Debian maybe? You're not the first, not the last I suspect either.

Cheers,
Quentin

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: RK3399 TF-A hash verification failure for atf-3
  2026-07-22 17:12 ` Quentin Schulz via U-Boot
@ 2026-07-22 22:29   ` Peter Robinson
  2026-07-24 12:38   ` Vic B via U-Boot
  2026-07-30 13:59   ` Peter Robinson
  2 siblings, 0 replies; 12+ messages in thread
From: Peter Robinson @ 2026-07-22 22:29 UTC (permalink / raw)
  To: Quentin Schulz; +Cc: Vic B, u-boot

On Wed, 22 Jul 2026 at 18:13, Quentin Schulz via U-Boot
<u-boot@lists.u-boot-project.org> wrote:
>
> Hi Vic,
>
> On 7/18/26 6:03 PM, Vic B wrote:
> > [You don't often get email from u-boot@vicb.net. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ]
> >
> > Hi,
> >
> > while trying to compile u-boot v2026.07 (or v2026.04) for RK3399-based
> > NanoPi R4S, I run into issues with current mainline TF-A (using 2.14, more
> > precisely the lts-v2.14.4 tag). I'm cross-compiling both TF-A and u-boot
> > using GCC version 14.2.0 (Debian 14.2.0-19) from Debian Trixie.
> >
> > First, I encountered TF-A build failure with the
> >
> >   region `PMUSRAM' overflowed by 3928 bytes
> >
> > error message, which seems to be a long-term issue know since 2018:
> >
> >   https://github.com/ARM-software/tf-issues/issues/650
> >
> > and recently also mentioned in this mailing list:
> >
> >   https://lists.denx.de/pipermail/u-boot/2026-April/613754.html
> >
> > Although some discussions suggest that this issue may be compiler or
> > toolchain dependent, I've eventually found a solution in Armbian
>
> Debian toolchain issue, reported to TF-A last year, see
> https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/36981/comments/877be809_5abf10d8.
> We wanted to rely on Debian upgrading at some point their TF-A, hitting
> the same issue and working on it but it seems they are stuck on
> lts-v2.12.1 (which is slightly concerning considering we're at
> lts-v2.12.12 already) so this hasn't happened yet. I'm building on
> Fedora and my company's CI has lts-v2.12 pinned to avoid this issue, so
> I'm not going to be chasing this myself. Can you try to work this out
> with Debian maybe? You're not the first, not the last I suspect either.

I can see if I can get the arm distro team to assist.

Peter

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: RK3399 TF-A hash verification failure for atf-3
  2026-07-22 16:23 ` Peter Robinson via U-Boot
@ 2026-07-24 10:57   ` Vic B via U-Boot
  0 siblings, 0 replies; 12+ messages in thread
From: Vic B via U-Boot @ 2026-07-24 10:57 UTC (permalink / raw)
  To: Peter Robinson; +Cc: u-boot

On Wed, Jul 22, 2026 at 05:23:58PM +0100, Peter Robinson wrote:
> Hi Vic,

Hi Peter,

> While changing that setting may allow it to build the PMU's SRAM size
> in hardware is fixed, so it will cause real world problems.

I've been trying to figure out whether the PMU SRAM size is fixed
on RK3399, but haven't found the answer.

Unlike e.g. RK3528A, where the block diagram clearly says "PMU_SRAM(8KB)",
RK3399's datasheet only mentions that SRAM size is 200KB and security or
non-security space is software programmable by 4 KB step. I was therefore
hoping that changing PMUSRAM_RSIZE will cause something (TF-A or u-boot)
to adjust the PMU SRAM region automatically, but it's probably better
to assume that it's indeed fixed to 8KiB.

I have also modified boot/image-fit.c to dump whole image on hash
verification failure, and found out that while the original oversized
byte pmusram image (atf-3) of 12120 bytes consist of 3859 mostly
non-zero bytes (looking like code), followed by zero padding up to
offset 8191, some data from offset 8192, followed by zeroes from offset
8508 till the end, the image that u-boot sees in memory during hash
verification has its beginning overwritten by the part which can be seen
at offset 8192 in the original.

This kind of overflow probably also indicates that the limit is 8 KiB
(and also definitely causes me to no longer trust this oversized build
of trusted firmware, despite the fact that the systems seems to run fine
with it).

> The thing to note with the PMU FW is it's built for a Cortex-M0 core
> which means you need to build it with a 32 bit compiler. You likely
> need to add a M0_CROSS_COMPILE=arm-linux-gnu- variable (substitute
> with the string for your armv7 compiler string) to the beginning of
> your make command. EG:
> 
> M0_CROSS_COMPILE=arm-linux-gnu- make HOSTCC="gcc" CROSS_COMPILE=""
> PLAT=rk3399 bl31

I've tried M0_CROSS_COMPILE with both arm-linux-gnuebi- and
arm-none-eabi-, but neither helps.

I also suspects that TF-A 2.14 selects arm-none-eabi- automatically
for M0, as it fails to build without gcc-arm-none-eabi installed (at
least on Debian), and it builds successfully (with increased
PMUSRAM_RSIZE) when installed, without using M0_CROSS_COMPILE.

Also make_helpers/toolchains/rk3399-m0.mk and the last Chris Kays's comment in

https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/36981/comments/877be809_5abf10d8?tab=comments

suggest that arm-none-eabi is the right way to go.

> It works across numerous rk3399 devices for me with the 2.14.1 build
> in Fedora and that firmware is about 5.7K in size.

As Quentin Schulz explained in his reply, the overflow issue is known to
happen with Debian's gcc, and considered to be a Debian bug by some
because it doesn't happen on Fedora.

According to my fiddling with it so far, it appears that Debian's gcc
decides to align a part of pmusram (more precisely, the part called
rk3399m0pmu_bin, which seems to be linked using the recipe in
plat/rockchip/rk3399/drivers/pmu/pmu_fw.S) to 8 KiB boundary, which
causes the overflow.

I also have doubts that this is a bug in Debian's gcc, adjusting the
build/linking of TF-A so that it prevents gcc (or its ld) from aligning
rk3399m0pmu_bin to 8 KiB seems like more promising solution than waiting
for maintainers of Debian's gcc to do something that will fix this
issue.

I'll post more details in reply to Quentin's message.

Vic

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: RK3399 TF-A hash verification failure for atf-3
  2026-07-22 17:12 ` Quentin Schulz via U-Boot
  2026-07-22 22:29   ` Peter Robinson
@ 2026-07-24 12:38   ` Vic B via U-Boot
  2026-07-24 12:55     ` Quentin Schulz
  2026-07-30 13:59   ` Peter Robinson
  2 siblings, 1 reply; 12+ messages in thread
From: Vic B via U-Boot @ 2026-07-24 12:38 UTC (permalink / raw)
  To: Quentin Schulz; +Cc: Peter Robinson, u-boot

On Wed, Jul 22, 2026 at 07:12:42PM +0200, Quentin Schulz wrote:
> Hi Vic,

Hi Quentin,

> 
> Debian toolchain issue, reported to TF-A last year, see https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/36981/comments/877be809_5abf10d8.
> We wanted to rely on Debian upgrading at some point their TF-A, hitting the
> same issue and working on it but it seems they are stuck on lts-v2.12.1
> (which is slightly concerning considering we're at lts-v2.12.12 already) so
> this hasn't happened yet. I'm building on Fedora and my company's CI has
> lts-v2.12 pinned to avoid this issue, so I'm not going to be chasing this
> myself. Can you try to work this out with Debian maybe? You're not the
> first, not the last I suspect either.

Thanks for the link, I think that Chris Kay's comment there is really
valuable, so let me quote it here:

 "It's not necessarily the case that the Debian GCC distribution is buggy!

 What we presume has happened is that an object with a strict page
 alignment has had to shift to the next page due to an increase in
 code/data size. This happens from time to time and is generally
 harmless, but if we we've hit a memory limit somewhere then this is the
 sort of error we see. That we don't see this on other distributions of
 GCC is likely just down to configuration differences."

I think that Chris is right, and have doubts about the assumption that
Debian folks will start working on this issue and fix their gcc after
their TF-A package gets updated. If Debian's maintainers of TF-A happen
to test the new version on RK3399, this path may result in a deadlock
where the new TF-A doesn't get to Debian because it fails to build,
so it won't push Debian do fix their gcc...

The Armbian's attempt to fix the issue by increasing PMUSRAM_RSIZE
in plat/rockchip/rk3399/include/shared/addressmap_shared.h from 8K
to 16K seems like more promising course to me - although the resulting
build with oversized pmusram isn't really usable, it produces much more
material to investigate than the "`PMUSRAM' overflowed by 3928 bytes"
message that one gets without this change.

With the PMUSRAM_RSIZE set to 16K, the build results in bl31.elf with
oversized .pmusram section (which can be extracted with objcopy and
hexdumped to see that something there obviously gets aligned to 8 KiB
boundary), and objdump of bl31.elf shows that this (mis)aligned part at
address 0xff3b2000 is rk3399m0pmu_bin (dump follows below in P.S.), which
seems to be linked using plat/rockchip/rk3399/drivers/pmu/pmu_fw.S,
which only requests it to be aligned to 4 bytes:

 .macro INCBIN file sym sec
         .section \sec, "a"
         .global \sym
         .type \sym, @object
         .align 4
 \sym :
         .incbin "\file"
         .size \sym , .-\sym
         .global \sym\()_end
 \sym\()_end :
 .endm
  
 INCBIN RK3399M0FW, "rk3399m0_bin", ".sram.incbin"
 INCBIN RK3399M0PMUFW, "rk3399m0pmu_bin", ".pmusram.incbin"

So what happens here seems to be gcc aligning to 8 KiB when asked to
align to 4 B. That really looks like page alignment issues as suggested
by Chris, and doesn't necessarily mean a bug in gcc - there's only a
directive to align to 4 B boundary, and that one is fulfilled even
with the 8 KiB alignment; gcc can even be credited for fulfilling the
directive 2048 times...

I'll try to look into this over the weekend and find some linker
options or directives to get the page alignment under control.
As I'm not really familiar with this, suggestions are welcome!

Cheers,

Vic

P.S.: here's the promised dump of the oversized .pmusram section:

 $ aarch64-linux-gnu-objdump -j .pmusram -d build/rk3399/release/bl31/bl31.elf
 
 build/rk3399/release/bl31/bl31.elf:     file format elf64-littleaarch64
 
 
 Disassembly of section .pmusram:
 
 00000000ff3b0000 <pmu_cpuson_entrypoint>:
     ff3b0000:	580000c2 	ldr	x2, ff3b0018 <sys_resume+0x8>
     ff3b0004:	9100005f 	mov	sp, x2
     ff3b0008:	940001d1 	bl	ff3b074c <dmc_resume>
     ff3b000c:	940003bf 	bl	ff3b0f08 <__sram_restore_veneer>
 
 00000000ff3b0010 <sys_resume>:
     ff3b0010:	940003ba 	bl	ff3b0ef8 <__bl31_warm_entrypoint_veneer>
     ff3b0014:	00000000 	udf	#0
     ff3b0018:	ff8c3000 	.word	0xff8c3000
     ff3b001c:	00000000 	.word	0x00000000
 
 00000000ff3b0020 <sram_regcpy>:
     ff3b0020:	cb010000 	sub	x0, x0, x1
     ff3b0024:	51000442 	sub	w2, w2, #0x1
     ff3b0028:	3100045f 	cmn	w2, #0x1
     ff3b002c:	54000041 	b.ne	ff3b0034 <sram_regcpy+0x14>  // b.any
     ff3b0030:	d65f03c0 	ret
     ff3b0034:	b9400023 	ldr	w3, [x1]
     ff3b0038:	b8216803 	str	w3, [x0, x1]
     ff3b003c:	91001021 	add	x1, x1, #0x4
     ff3b0040:	17fffff9 	b	ff3b0024 <sram_regcpy+0x4>
 
 00000000ff3b0044 <sram_udelay>:
     ff3b0044:	d53be021 	mrs	x1, cntpct_el0
     ff3b0048:	7100281f 	cmp	w0, #0xa
     ff3b004c:	52812c02 	mov	w2, #0x960                 	// #2400
     ff3b0050:	52801e00 	mov	w0, #0xf0                  	// #240
     ff3b0054:	1a820000 	csel	w0, w0, w2, eq	// eq = none
     ff3b0058:	d53be023 	mrs	x3, cntpct_el0
     ff3b005c:	6b03003f 	cmp	w1, w3
     ff3b0060:	4b010062 	sub	w2, w3, w1
     ff3b0064:	1a9f97e3 	cset	w3, hi	// hi = pmore
     ff3b0068:	4b030042 	sub	w2, w2, w3
     ff3b006c:	6b00005f 	cmp	w2, w0
     ff3b0070:	54ffff49 	b.ls	ff3b0058 <sram_udelay+0x14>  // b.plast
     ff3b0074:	d65f03c0 	ret
 
 00000000ff3b0078 <rkclk_ddr_reset>:
     ff3b0078:	531e0000 	ubfiz	w0, w0, #2, #1
     ff3b007c:	11002004 	add	w4, w0, #0x8
     ff3b0080:	11006003 	add	w3, w0, #0x18
     ff3b0084:	1ac42021 	lsl	w1, w1, w4
     ff3b0088:	11002404 	add	w4, w0, #0x9
     ff3b008c:	11006400 	add	w0, w0, #0x19
     ff3b0090:	1ac42042 	lsl	w2, w2, w4
     ff3b0094:	2a020021 	orr	w1, w1, w2
     ff3b0098:	52800022 	mov	w2, #0x1                   	// #1
     ff3b009c:	1ac02040 	lsl	w0, w2, w0
     ff3b00a0:	1ac32042 	lsl	w2, w2, w3
     ff3b00a4:	2a020000 	orr	w0, w0, w2
     ff3b00a8:	2a000021 	orr	w1, w1, w0
     ff3b00ac:	d2808200 	mov	x0, #0x410                 	// #1040
     ff3b00b0:	f2bfeec0 	movk	x0, #0xff76, lsl #16
     ff3b00b4:	b9000001 	str	w1, [x0]
     ff3b00b8:	d65f03c0 	ret
 
 00000000ff3b00bc <select_per_cs_training_index>:
     ff3b00bc:	52842a03 	mov	w3, #0x2150                	// #8528
     ff3b00c0:	53114002 	lsl	w2, w0, #15
     ff3b00c4:	72bff503 	movk	w3, #0xffa8, lsl #16
     ff3b00c8:	0b003c60 	add	w0, w3, w0, lsl #15
     ff3b00cc:	b9400000 	ldr	w0, [x0]
     ff3b00d0:	368001c0 	tbz	w0, #16, ff3b0108 <select_per_cs_training_index+0x4c>
     ff3b00d4:	5155f443 	sub	w3, w2, #0x57d, lsl #12
     ff3b00d8:	5155f442 	sub	w2, w2, #0x57d, lsl #12
     ff3b00dc:	53081c21 	lsl	w1, w1, #24
     ff3b00e0:	513f8063 	sub	w3, w3, #0xfe0
     ff3b00e4:	511f8042 	sub	w2, w2, #0x7e0
     ff3b00e8:	2a0303e4 	mov	w4, w3
     ff3b00ec:	11080063 	add	w3, w3, #0x200
     ff3b00f0:	b9400080 	ldr	w0, [x4]
     ff3b00f4:	12077800 	and	w0, w0, #0xfeffffff
     ff3b00f8:	2a010000 	orr	w0, w0, w1
     ff3b00fc:	b9000080 	str	w0, [x4]
     ff3b0100:	6b02007f 	cmp	w3, w2
     ff3b0104:	54ffff21 	b.ne	ff3b00e8 <select_per_cs_training_index+0x2c>  // b.any
     ff3b0108:	d65f03c0 	ret
 
 00000000ff3b010c <data_training.constprop.0>:
     ff3b010c:	2a0003e1 	mov	w1, w0
     ff3b0110:	d2800482 	mov	x2, #0x24                  	// #36
     ff3b0114:	a9be7bfd 	stp	x29, x30, [sp, #-32]!
     ff3b0118:	aa0103e6 	mov	x6, x1
     ff3b011c:	d0000000 	adrp	x0, ff3b2000 <rk3399m0pmu_bin>
     ff3b0120:	9b027c21 	mul	x1, x1, x2
     ff3b0124:	91090000 	add	x0, x0, #0x240
     ff3b0128:	910003fd 	mov	x29, sp
     ff3b012c:	a90153f3 	stp	x19, x20, [sp, #16]
     ff3b0130:	3861680b 	ldrb	w11, [x0, x1]
     ff3b0134:	39413000 	ldrb	w0, [x0, #76]
     ff3b0138:	71001c1f 	cmp	w0, #0x7
     ff3b013c:	540013a1 	b.ne	ff3b03b0 <data_training.constprop.0+0x2a4>  // b.any
     ff3b0140:	7100057f 	cmp	w11, #0x1
     ff3b0144:	528001e9 	mov	w9, #0xf                   	// #15
     ff3b0148:	528000a1 	mov	w1, #0x5                   	// #5
     ff3b014c:	1a811129 	csel	w9, w9, w1, ne	// ne = any
     ff3b0150:	5285cf88 	mov	w8, #0x2e7c                	// #11900
     ff3b0154:	531140c5 	lsl	w5, w6, #15
     ff3b0158:	72bff508 	movk	w8, #0xffa8, lsl #16
     ff3b015c:	0b063d08 	add	w8, w8, w6, lsl #15
     ff3b0160:	b9400101 	ldr	w1, [x8]
     ff3b0164:	320a0021 	orr	w1, w1, #0x400000
     ff3b0168:	b9000101 	str	w1, [x8]
     ff3b016c:	71001c1f 	cmp	w0, #0x7
     ff3b0170:	540013a0 	b.eq	ff3b03e4 <data_training.constprop.0+0x2d8>  // b.none
     ff3b0174:	7100181f 	cmp	w0, #0x6
     ff3b0178:	54001240 	b.eq	ff3b03c0 <data_training.constprop.0+0x2b4>  // b.none
     ff3b017c:	71000c1f 	cmp	w0, #0x3
     ff3b0180:	54001360 	b.eq	ff3b03ec <data_training.constprop.0+0x2e0>  // b.none
     ff3b0184:	52801fea 	mov	w10, #0xff                  	// #255
     ff3b0188:	5155fca7 	sub	w7, w5, #0x57f, lsl #12
     ff3b018c:	5280000c 	mov	w12, #0x0                   	// #0
     ff3b0190:	5119c0e7 	sub	w7, w7, #0x670
     ff3b0194:	5280002d 	mov	w13, #0x1                   	// #1
     ff3b0198:	1acc21a0 	lsl	w0, w13, w12
     ff3b019c:	6a09001f 	tst	w0, w9
     ff3b01a0:	54000540 	b.eq	ff3b0248 <data_training.constprop.0+0x13c>  // b.none
     ff3b01a4:	2a0c03e1 	mov	w1, w12
     ff3b01a8:	2a0603e0 	mov	w0, w6
     ff3b01ac:	97ffffc4 	bl	ff3b00bc <select_per_cs_training_index>
     ff3b01b0:	5155f4ae 	sub	w14, w5, #0x57d, lsl #12
     ff3b01b4:	b94000e0 	ldr	w0, [x7]
     ff3b01b8:	5155fca1 	sub	w1, w5, #0x57f, lsl #12
     ff3b01bc:	511a4021 	sub	w1, w1, #0x690
     ff3b01c0:	5155fca3 	sub	w3, w5, #0x57f, lsl #12
     ff3b01c4:	12167400 	and	w0, w0, #0xfffffcff
     ff3b01c8:	5155f4a4 	sub	w4, w5, #0x57d, lsl #12
     ff3b01cc:	32170000 	orr	w0, w0, #0x200
     ff3b01d0:	b90000e0 	str	w0, [x7]
     ff3b01d4:	5155f4af 	sub	w15, w5, #0x57d, lsl #12
     ff3b01d8:	12a06022 	mov	w2, #0xfcfeffff            	// #-50397185
     ff3b01dc:	b9400020 	ldr	w0, [x1]
     ff3b01e0:	51152063 	sub	w3, w3, #0x548
     ff3b01e4:	511ec084 	sub	w4, w4, #0x7b0
     ff3b01e8:	5116c1ce 	sub	w14, w14, #0x5b0
     ff3b01ec:	0a020000 	and	w0, w0, w2
     ff3b01f0:	510ec1ef 	sub	w15, w15, #0x3b0
     ff3b01f4:	2a0c6000 	orr	w0, w0, w12, lsl #24
     ff3b01f8:	52850410 	mov	w16, #0x2820                	// #10272
     ff3b01fc:	32100000 	orr	w0, w0, #0x10000
     ff3b0200:	52850011 	mov	w17, #0x2800                	// #10240
     ff3b0204:	b9000020 	str	w0, [x1]
     ff3b0208:	b9400062 	ldr	w2, [x3]
     ff3b020c:	b9400080 	ldr	w0, [x4]
     ff3b0210:	b94001d3 	ldr	w19, [x14]
     ff3b0214:	b94001f2 	ldr	w18, [x15]
     ff3b0218:	53087c41 	lsr	w1, w2, #8
     ff3b021c:	2a130000 	orr	w0, w0, w19
     ff3b0220:	0a422202 	and	w2, w16, w2, lsr #8
     ff3b0224:	2a120000 	orr	w0, w0, w18
     ff3b0228:	531e7c00 	lsr	w0, w0, #30
     ff3b022c:	6b11005f 	cmp	w2, w17
     ff3b0230:	54000cc1 	b.ne	ff3b03c8 <data_training.constprop.0+0x2bc>  // b.any
     ff3b0234:	35000d00 	cbnz	w0, ff3b03d4 <data_training.constprop.0+0x2c8>
     ff3b0238:	5155fca0 	sub	w0, w5, #0x57f, lsl #12
     ff3b023c:	5287ef81 	mov	w1, #0x3f7c                	// #16252
     ff3b0240:	51151000 	sub	w0, w0, #0x544
     ff3b0244:	b9000001 	str	w1, [x0]
     ff3b0248:	1100058c 	add	w12, w12, #0x1
     ff3b024c:	7100119f 	cmp	w12, #0x4
     ff3b0250:	54fffa41 	b.ne	ff3b0198 <data_training.constprop.0+0x8c>  // b.any
     ff3b0254:	b94000e0 	ldr	w0, [x7]
     ff3b0258:	12167400 	and	w0, w0, #0xfffffcff
     ff3b025c:	b90000e0 	str	w0, [x7]
     ff3b0260:	5155fca7 	sub	w7, w5, #0x57f, lsl #12
     ff3b0264:	5155f4ad 	sub	w13, w5, #0x57d, lsl #12
     ff3b0268:	5284140e 	mov	w14, #0x20a0                	// #8352
     ff3b026c:	511c40e7 	sub	w7, w7, #0x710
     ff3b0270:	513581ad 	sub	w13, w13, #0xd60
     ff3b0274:	5280000c 	mov	w12, #0x0                   	// #0
     ff3b0278:	72bff50e 	movk	w14, #0xffa8, lsl #16
     ff3b027c:	6b0c017f 	cmp	w11, w12
     ff3b0280:	54000ba8 	b.hi	ff3b03f4 <data_training.constprop.0+0x2e8>  // b.pmore
     ff3b0284:	5155f4a0 	sub	w0, w5, #0x57d, lsl #12
     ff3b0288:	5155f4a3 	sub	w3, w5, #0x57d, lsl #12
     ff3b028c:	513f8000 	sub	w0, w0, #0xfe0
     ff3b0290:	511f8063 	sub	w3, w3, #0x7e0
     ff3b0294:	2a0003e2 	mov	w2, w0
     ff3b0298:	b9400041 	ldr	w1, [x2]
     ff3b029c:	32100021 	orr	w1, w1, #0x10000
     ff3b02a0:	b9000041 	str	w1, [x2]
     ff3b02a4:	11037002 	add	w2, w0, #0xdc
     ff3b02a8:	11080000 	add	w0, w0, #0x200
     ff3b02ac:	b9400041 	ldr	w1, [x2]
     ff3b02b0:	72a04001 	movk	w1, #0x200, lsl #16
     ff3b02b4:	b9000041 	str	w1, [x2]
     ff3b02b8:	6b00007f 	cmp	w3, w0
     ff3b02bc:	54fffec1 	b.ne	ff3b0294 <data_training.constprop.0+0x188>  // b.any
     ff3b02c0:	5155fca0 	sub	w0, w5, #0x57f, lsl #12
     ff3b02c4:	5155f4ad 	sub	w13, w5, #0x57d, lsl #12
     ff3b02c8:	51338000 	sub	w0, w0, #0xce0
     ff3b02cc:	5284158e 	mov	w14, #0x20ac                	// #8364
     ff3b02d0:	513551ad 	sub	w13, w13, #0xd54
     ff3b02d4:	5280000c 	mov	w12, #0x0                   	// #0
     ff3b02d8:	72bff50e 	movk	w14, #0xffa8, lsl #16
     ff3b02dc:	b9400001 	ldr	w1, [x0]
     ff3b02e0:	32180021 	orr	w1, w1, #0x100
     ff3b02e4:	b9000001 	str	w1, [x0]
     ff3b02e8:	b94000e0 	ldr	w0, [x7]
     ff3b02ec:	12167400 	and	w0, w0, #0xfffffcff
     ff3b02f0:	b90000e0 	str	w0, [x7]
     ff3b02f4:	5155fca7 	sub	w7, w5, #0x57f, lsl #12
     ff3b02f8:	511b00e7 	sub	w7, w7, #0x6c0
     ff3b02fc:	6b0c017f 	cmp	w11, w12
     ff3b0300:	54000dc8 	b.hi	ff3b04b8 <data_training.constprop.0+0x3ac>  // b.pmore
     ff3b0304:	b94000e0 	ldr	w0, [x7]
     ff3b0308:	12067400 	and	w0, w0, #0xfcffffff
     ff3b030c:	b90000e0 	str	w0, [x7]
     ff3b0310:	371817aa 	tbnz	w10, #3, ff3b0604 <data_training.constprop.0+0x4f8>
     ff3b0314:	3620198a 	tbz	w10, #4, ff3b0644 <data_training.constprop.0+0x538>
     ff3b0318:	5155fca7 	sub	w7, w5, #0x57f, lsl #12
     ff3b031c:	5280000a 	mov	w10, #0x0                   	// #0
     ff3b0320:	511840e7 	sub	w7, w7, #0x610
     ff3b0324:	5280002b 	mov	w11, #0x1                   	// #1
     ff3b0328:	1aca2160 	lsl	w0, w11, w10
     ff3b032c:	6a09001f 	tst	w0, w9
     ff3b0330:	540017e0 	b.eq	ff3b062c <data_training.constprop.0+0x520>  // b.none
     ff3b0334:	2a0a03e1 	mov	w1, w10
     ff3b0338:	2a0603e0 	mov	w0, w6
     ff3b033c:	97ffff60 	bl	ff3b00bc <select_per_cs_training_index>
     ff3b0340:	5155fca0 	sub	w0, w5, #0x57f, lsl #12
     ff3b0344:	529fdfe2 	mov	w2, #0xfeff                	// #65279
     ff3b0348:	5114b000 	sub	w0, w0, #0x52c
     ff3b034c:	72bfff82 	movk	w2, #0xfffc, lsl #16
     ff3b0350:	52860803 	mov	w3, #0x3040                	// #12352
     ff3b0354:	b9400001 	ldr	w1, [x0]
     ff3b0358:	12177821 	and	w1, w1, #0xfffffeff
     ff3b035c:	b9000001 	str	w1, [x0]
     ff3b0360:	5155fca1 	sub	w1, w5, #0x57f, lsl #12
     ff3b0364:	b94000e0 	ldr	w0, [x7]
     ff3b0368:	51187021 	sub	w1, w1, #0x61c
     ff3b036c:	120e7400 	and	w0, w0, #0xfffcffff
     ff3b0370:	320f0000 	orr	w0, w0, #0x20000
     ff3b0374:	b90000e0 	str	w0, [x7]
     ff3b0378:	b9400020 	ldr	w0, [x1]
     ff3b037c:	0a020000 	and	w0, w0, w2
     ff3b0380:	2a0a4000 	orr	w0, w0, w10, lsl #16
     ff3b0384:	32180000 	orr	w0, w0, #0x100
     ff3b0388:	b9000020 	str	w0, [x1]
     ff3b038c:	5155fca1 	sub	w1, w5, #0x57f, lsl #12
     ff3b0390:	51152021 	sub	w1, w1, #0x548
     ff3b0394:	b9400020 	ldr	w0, [x1]
     ff3b0398:	53087c02 	lsr	w2, w0, #8
     ff3b039c:	0a402060 	and	w0, w3, w0, lsr #8
     ff3b03a0:	71400c1f 	cmp	w0, #0x3, lsl #12
     ff3b03a4:	540013c0 	b.eq	ff3b061c <data_training.constprop.0+0x510>  // b.none
     ff3b03a8:	3637ff62 	tbz	w2, #6, ff3b0394 <data_training.constprop.0+0x288>
     ff3b03ac:	1400000a 	b	ff3b03d4 <data_training.constprop.0+0x2c8>
     ff3b03b0:	7100057f 	cmp	w11, #0x1
     ff3b03b4:	52800069 	mov	w9, #0x3                   	// #3
     ff3b03b8:	1a9f1529 	csinc	w9, w9, wzr, ne	// ne = any
     ff3b03bc:	17ffff65 	b	ff3b0150 <data_training.constprop.0+0x44>
     ff3b03c0:	528000ea 	mov	w10, #0x7                   	// #7
     ff3b03c4:	17ffff71 	b	ff3b0188 <data_training.constprop.0+0x7c>
     ff3b03c8:	121b0021 	and	w1, w1, #0x20
     ff3b03cc:	2a000020 	orr	w0, w1, w0
     ff3b03d0:	34fff1c0 	cbz	w0, ff3b0208 <data_training.constprop.0+0xfc>
     ff3b03d4:	12800000 	mov	w0, #0xffffffff            	// #-1
     ff3b03d8:	a94153f3 	ldp	x19, x20, [sp, #16]
     ff3b03dc:	a8c27bfd 	ldp	x29, x30, [sp], #32
     ff3b03e0:	d65f03c0 	ret
     ff3b03e4:	528003ca 	mov	w10, #0x1e                  	// #30
     ff3b03e8:	17ffff9e 	b	ff3b0260 <data_training.constprop.0+0x154>
     ff3b03ec:	528001ca 	mov	w10, #0xe                   	// #14
     ff3b03f0:	17ffff9c 	b	ff3b0260 <data_training.constprop.0+0x154>
     ff3b03f4:	2a0c03e1 	mov	w1, w12
     ff3b03f8:	2a0603e0 	mov	w0, w6
     ff3b03fc:	97ffff30 	bl	ff3b00bc <select_per_cs_training_index>
     ff3b0400:	5155f4af 	sub	w15, w5, #0x57d, lsl #12
     ff3b0404:	b94000e0 	ldr	w0, [x7]
     ff3b0408:	5155fca1 	sub	w1, w5, #0x57f, lsl #12
     ff3b040c:	511c5021 	sub	w1, w1, #0x714
     ff3b0410:	529fdfe2 	mov	w2, #0xfeff                	// #65279
     ff3b0414:	12167400 	and	w0, w0, #0xfffffcff
     ff3b0418:	5155fca3 	sub	w3, w5, #0x57f, lsl #12
     ff3b041c:	32170000 	orr	w0, w0, #0x200
     ff3b0420:	b90000e0 	str	w0, [x7]
     ff3b0424:	5155f4b0 	sub	w16, w5, #0x57d, lsl #12
     ff3b0428:	72bfff82 	movk	w2, #0xfffc, lsl #16
     ff3b042c:	b9400020 	ldr	w0, [x1]
     ff3b0430:	51152063 	sub	w3, w3, #0x548
     ff3b0434:	0b0e00a4 	add	w4, w5, w14
     ff3b0438:	512d81ef 	sub	w15, w15, #0xb60
     ff3b043c:	0a020000 	and	w0, w0, w2
     ff3b0440:	51258210 	sub	w16, w16, #0x960
     ff3b0444:	2a0c4000 	orr	w0, w0, w12, lsl #16
     ff3b0448:	52848212 	mov	w18, #0x2410                	// #9232
     ff3b044c:	32180000 	orr	w0, w0, #0x100
     ff3b0450:	52848013 	mov	w19, #0x2400                	// #9216
     ff3b0454:	b9000020 	str	w0, [x1]
     ff3b0458:	b9400062 	ldr	w2, [x3]
     ff3b045c:	b9400080 	ldr	w0, [x4]
     ff3b0460:	b94001be 	ldr	w30, [x13]
     ff3b0464:	b94001f1 	ldr	w17, [x15]
     ff3b0468:	53087c41 	lsr	w1, w2, #8
     ff3b046c:	b9400214 	ldr	w20, [x16]
     ff3b0470:	2a1e0000 	orr	w0, w0, w30
     ff3b0474:	0a422242 	and	w2, w18, w2, lsr #8
     ff3b0478:	2a140231 	orr	w17, w17, w20
     ff3b047c:	2a110000 	orr	w0, w0, w17
     ff3b0480:	12140000 	and	w0, w0, #0x1000
     ff3b0484:	6b13005f 	cmp	w2, w19
     ff3b0488:	54000101 	b.ne	ff3b04a8 <data_training.constprop.0+0x39c>  // b.any
     ff3b048c:	35fffa40 	cbnz	w0, ff3b03d4 <data_training.constprop.0+0x2c8>
     ff3b0490:	5155fca0 	sub	w0, w5, #0x57f, lsl #12
     ff3b0494:	5287ef81 	mov	w1, #0x3f7c                	// #16252
     ff3b0498:	51151000 	sub	w0, w0, #0x544
     ff3b049c:	1100058c 	add	w12, w12, #0x1
     ff3b04a0:	b9000001 	str	w1, [x0]
     ff3b04a4:	17ffff76 	b	ff3b027c <data_training.constprop.0+0x170>
     ff3b04a8:	121c0021 	and	w1, w1, #0x10
     ff3b04ac:	2a000020 	orr	w0, w1, w0
     ff3b04b0:	34fffd40 	cbz	w0, ff3b0458 <data_training.constprop.0+0x34c>
     ff3b04b4:	17ffffc8 	b	ff3b03d4 <data_training.constprop.0+0x2c8>
     ff3b04b8:	2a0c03e1 	mov	w1, w12
     ff3b04bc:	2a0603e0 	mov	w0, w6
     ff3b04c0:	97fffeff 	bl	ff3b00bc <select_per_cs_training_index>
     ff3b04c4:	5155f4af 	sub	w15, w5, #0x57d, lsl #12
     ff3b04c8:	b94000e0 	ldr	w0, [x7]
     ff3b04cc:	5155fca1 	sub	w1, w5, #0x57f, lsl #12
     ff3b04d0:	511b6021 	sub	w1, w1, #0x6d8
     ff3b04d4:	5155fca3 	sub	w3, w5, #0x57f, lsl #12
     ff3b04d8:	12067400 	and	w0, w0, #0xfcffffff
     ff3b04dc:	5155f4b0 	sub	w16, w5, #0x57d, lsl #12
     ff3b04e0:	32070000 	orr	w0, w0, #0x2000000
     ff3b04e4:	b90000e0 	str	w0, [x7]
     ff3b04e8:	12a06022 	mov	w2, #0xfcfeffff            	// #-50397185
     ff3b04ec:	51152063 	sub	w3, w3, #0x548
     ff3b04f0:	b9400020 	ldr	w0, [x1]
     ff3b04f4:	0b0e00a4 	add	w4, w5, w14
     ff3b04f8:	512d51ef 	sub	w15, w15, #0xb54
     ff3b04fc:	51255210 	sub	w16, w16, #0x954
     ff3b0500:	0a020000 	and	w0, w0, w2
     ff3b0504:	52844112 	mov	w18, #0x2208                	// #8712
     ff3b0508:	2a0c6000 	orr	w0, w0, w12, lsl #24
     ff3b050c:	5284401e 	mov	w30, #0x2200                	// #8704
     ff3b0510:	32100000 	orr	w0, w0, #0x10000
     ff3b0514:	b9000020 	str	w0, [x1]
     ff3b0518:	b9400062 	ldr	w2, [x3]
     ff3b051c:	b9400080 	ldr	w0, [x4]
     ff3b0520:	b94001b4 	ldr	w20, [x13]
     ff3b0524:	b94001f1 	ldr	w17, [x15]
     ff3b0528:	53087c41 	lsr	w1, w2, #8
     ff3b052c:	b9400213 	ldr	w19, [x16]
     ff3b0530:	2a140000 	orr	w0, w0, w20
     ff3b0534:	0a422242 	and	w2, w18, w2, lsr #8
     ff3b0538:	2a130231 	orr	w17, w17, w19
     ff3b053c:	2a110000 	orr	w0, w0, w17
     ff3b0540:	120a0400 	and	w0, w0, #0xc00000
     ff3b0544:	6b1e005f 	cmp	w2, w30
     ff3b0548:	54000101 	b.ne	ff3b0568 <data_training.constprop.0+0x45c>  // b.any
     ff3b054c:	35fff440 	cbnz	w0, ff3b03d4 <data_training.constprop.0+0x2c8>
     ff3b0550:	5155fca0 	sub	w0, w5, #0x57f, lsl #12
     ff3b0554:	5287ef81 	mov	w1, #0x3f7c                	// #16252
     ff3b0558:	51151000 	sub	w0, w0, #0x544
     ff3b055c:	1100058c 	add	w12, w12, #0x1
     ff3b0560:	b9000001 	str	w1, [x0]
     ff3b0564:	17ffff66 	b	ff3b02fc <data_training.constprop.0+0x1f0>
     ff3b0568:	121d0021 	and	w1, w1, #0x8
     ff3b056c:	2a000020 	orr	w0, w1, w0
     ff3b0570:	34fffd40 	cbz	w0, ff3b0518 <data_training.constprop.0+0x40c>
     ff3b0574:	17ffff98 	b	ff3b03d4 <data_training.constprop.0+0x2c8>
     ff3b0578:	2a0c03e1 	mov	w1, w12
     ff3b057c:	2a0603e0 	mov	w0, w6
     ff3b0580:	97fffecf 	bl	ff3b00bc <select_per_cs_training_index>
     ff3b0584:	b94000e0 	ldr	w0, [x7]
     ff3b0588:	529fdfe1 	mov	w1, #0xfeff                	// #65279
     ff3b058c:	72bf9fe1 	movk	w1, #0xfcff, lsl #16
     ff3b0590:	2a0e03e2 	mov	w2, w14
     ff3b0594:	120e7400 	and	w0, w0, #0xfffcffff
     ff3b0598:	52842083 	mov	w3, #0x2104                	// #8452
     ff3b059c:	320f0000 	orr	w0, w0, #0x20000
     ff3b05a0:	b90000e0 	str	w0, [x7]
     ff3b05a4:	52842004 	mov	w4, #0x2100                	// #8448
     ff3b05a8:	b94001a0 	ldr	w0, [x13]
     ff3b05ac:	0a010000 	and	w0, w0, w1
     ff3b05b0:	2a0c6000 	orr	w0, w0, w12, lsl #24
     ff3b05b4:	32180000 	orr	w0, w0, #0x100
     ff3b05b8:	b90001a0 	str	w0, [x13]
     ff3b05bc:	b9400040 	ldr	w0, [x2]
     ff3b05c0:	53087c01 	lsr	w1, w0, #8
     ff3b05c4:	0a402060 	and	w0, w3, w0, lsr #8
     ff3b05c8:	6b04001f 	cmp	w0, w4
     ff3b05cc:	54000060 	b.eq	ff3b05d8 <data_training.constprop.0+0x4cc>  // b.none
     ff3b05d0:	3617ff61 	tbz	w1, #2, ff3b05bc <data_training.constprop.0+0x4b0>
     ff3b05d4:	17ffff80 	b	ff3b03d4 <data_training.constprop.0+0x2c8>
     ff3b05d8:	5155fca0 	sub	w0, w5, #0x57f, lsl #12
     ff3b05dc:	1100058c 	add	w12, w12, #0x1
     ff3b05e0:	51151000 	sub	w0, w0, #0x544
     ff3b05e4:	5287ef81 	mov	w1, #0x3f7c                	// #16252
     ff3b05e8:	b9000001 	str	w1, [x0]
     ff3b05ec:	6b0c017f 	cmp	w11, w12
     ff3b05f0:	54fffc48 	b.hi	ff3b0578 <data_training.constprop.0+0x46c>  // b.pmore
     ff3b05f4:	b94000e0 	ldr	w0, [x7]
     ff3b05f8:	120e7400 	and	w0, w0, #0xfffcffff
     ff3b05fc:	b90000e0 	str	w0, [x7]
     ff3b0600:	17ffff45 	b	ff3b0314 <data_training.constprop.0+0x208>
     ff3b0604:	5155fcad 	sub	w13, w5, #0x57f, lsl #12
     ff3b0608:	5155fcae 	sub	w14, w5, #0x57f, lsl #12
     ff3b060c:	511b61ad 	sub	w13, w13, #0x6d8
     ff3b0610:	511521ce 	sub	w14, w14, #0x548
     ff3b0614:	5280000c 	mov	w12, #0x0                   	// #0
     ff3b0618:	17fffff5 	b	ff3b05ec <data_training.constprop.0+0x4e0>
     ff3b061c:	5155fca0 	sub	w0, w5, #0x57f, lsl #12
     ff3b0620:	5287ef81 	mov	w1, #0x3f7c                	// #16252
     ff3b0624:	51151000 	sub	w0, w0, #0x544
     ff3b0628:	b9000001 	str	w1, [x0]
     ff3b062c:	1100054a 	add	w10, w10, #0x1
     ff3b0630:	7100115f 	cmp	w10, #0x4
     ff3b0634:	54ffe7a1 	b.ne	ff3b0328 <data_training.constprop.0+0x21c>  // b.any
     ff3b0638:	b94000e0 	ldr	w0, [x7]
     ff3b063c:	120e7400 	and	w0, w0, #0xfffcffff
     ff3b0640:	b90000e0 	str	w0, [x7]
     ff3b0644:	b9400100 	ldr	w0, [x8]
     ff3b0648:	12097800 	and	w0, w0, #0xffbfffff
     ff3b064c:	b9000100 	str	w0, [x8]
     ff3b0650:	52800000 	mov	w0, #0x0                   	// #0
     ff3b0654:	17ffff61 	b	ff3b03d8 <data_training.constprop.0+0x2cc>
 
 00000000ff3b0658 <phy_dll_bypass_set>:
     ff3b0658:	52859182 	mov	w2, #0x2c8c                	// #11404
     ff3b065c:	72bff502 	movk	w2, #0xffa8, lsl #16
     ff3b0660:	0b003c43 	add	w3, w2, w0, lsl #15
     ff3b0664:	51080042 	sub	w2, w2, #0x200
     ff3b0668:	51080044 	sub	w4, w2, #0x200
     ff3b066c:	510cd045 	sub	w5, w2, #0x334
     ff3b0670:	0b003c48 	add	w8, w2, w0, lsl #15
     ff3b0674:	5114d046 	sub	w6, w2, #0x534
     ff3b0678:	511cd047 	sub	w7, w2, #0x734
     ff3b067c:	5124d042 	sub	w2, w2, #0x934
     ff3b0680:	0b003c84 	add	w4, w4, w0, lsl #15
     ff3b0684:	0b003ca5 	add	w5, w5, w0, lsl #15
     ff3b0688:	0b003cc6 	add	w6, w6, w0, lsl #15
     ff3b068c:	0b003ce7 	add	w7, w7, w0, lsl #15
     ff3b0690:	0b003c40 	add	w0, w2, w0, lsl #15
     ff3b0694:	528b2802 	mov	w2, #0x5940                	// #22848
     ff3b0698:	72a0ee62 	movk	w2, #0x773, lsl #16
     ff3b069c:	6b02003f 	cmp	w1, w2
     ff3b06a0:	b9400001 	ldr	w1, [x0]
     ff3b06a4:	540002c8 	b.hi	ff3b06fc <phy_dll_bypass_set+0xa4>  // b.pmore
     ff3b06a8:	32160421 	orr	w1, w1, #0xc00
     ff3b06ac:	b9000001 	str	w1, [x0]
     ff3b06b0:	b94000e0 	ldr	w0, [x7]
     ff3b06b4:	32160400 	orr	w0, w0, #0xc00
     ff3b06b8:	b90000e0 	str	w0, [x7]
     ff3b06bc:	b94000c0 	ldr	w0, [x6]
     ff3b06c0:	32160400 	orr	w0, w0, #0xc00
     ff3b06c4:	b90000c0 	str	w0, [x6]
     ff3b06c8:	b94000a0 	ldr	w0, [x5]
     ff3b06cc:	32160400 	orr	w0, w0, #0xc00
     ff3b06d0:	b90000a0 	str	w0, [x5]
     ff3b06d4:	b9400080 	ldr	w0, [x4]
     ff3b06d8:	320e0400 	orr	w0, w0, #0xc0000
     ff3b06dc:	b9000080 	str	w0, [x4]
     ff3b06e0:	b9400100 	ldr	w0, [x8]
     ff3b06e4:	320e0400 	orr	w0, w0, #0xc0000
     ff3b06e8:	b9000100 	str	w0, [x8]
     ff3b06ec:	b9400060 	ldr	w0, [x3]
     ff3b06f0:	320e0400 	orr	w0, w0, #0xc0000
     ff3b06f4:	b9000060 	str	w0, [x3]
     ff3b06f8:	d65f03c0 	ret
     ff3b06fc:	12147421 	and	w1, w1, #0xfffff3ff
     ff3b0700:	b9000001 	str	w1, [x0]
     ff3b0704:	b94000e0 	ldr	w0, [x7]
     ff3b0708:	12147400 	and	w0, w0, #0xfffff3ff
     ff3b070c:	b90000e0 	str	w0, [x7]
     ff3b0710:	b94000c0 	ldr	w0, [x6]
     ff3b0714:	12147400 	and	w0, w0, #0xfffff3ff
     ff3b0718:	b90000c0 	str	w0, [x6]
     ff3b071c:	b94000a0 	ldr	w0, [x5]
     ff3b0720:	12147400 	and	w0, w0, #0xfffff3ff
     ff3b0724:	b90000a0 	str	w0, [x5]
     ff3b0728:	b9400080 	ldr	w0, [x4]
     ff3b072c:	120c7400 	and	w0, w0, #0xfff3ffff
     ff3b0730:	b9000080 	str	w0, [x4]
     ff3b0734:	b9400100 	ldr	w0, [x8]
     ff3b0738:	120c7400 	and	w0, w0, #0xfff3ffff
     ff3b073c:	b9000100 	str	w0, [x8]
     ff3b0740:	b9400060 	ldr	w0, [x3]
     ff3b0744:	120c7400 	and	w0, w0, #0xfff3ffff
     ff3b0748:	17ffffeb 	b	ff3b06f4 <phy_dll_bypass_set+0x9c>
 
 00000000ff3b074c <dmc_resume>:
     ff3b074c:	a9b97bfd 	stp	x29, x30, [sp, #-112]!
     ff3b0750:	d0000000 	adrp	x0, ff3b2000 <rk3399m0pmu_bin>
     ff3b0754:	910003fd 	mov	x29, sp
     ff3b0758:	397d3000 	ldrb	w0, [x0, #3916]
     ff3b075c:	a90153f3 	stp	x19, x20, [sp, #16]
     ff3b0760:	a9025bf5 	stp	x21, x22, [sp, #32]
     ff3b0764:	a90363f7 	stp	x23, x24, [sp, #48]
     ff3b0768:	a9046bf9 	stp	x25, x26, [sp, #64]
     ff3b076c:	a90573fb 	stp	x27, x28, [sp, #80]
     ff3b0770:	360002a0 	tbz	w0, #0, ff3b07c4 <dmc_resume+0x78>
     ff3b0774:	d280a200 	mov	x0, #0x510                 	// #1296
     ff3b0778:	52800041 	mov	w1, #0x2                   	// #2
     ff3b077c:	f2bfeec0 	movk	x0, #0xff76, lsl #16
     ff3b0780:	b9000001 	str	w1, [x0]
     ff3b0784:	d2900080 	mov	x0, #0x8004                	// #32772
     ff3b0788:	f2bff080 	movk	x0, #0xff84, lsl #16
     ff3b078c:	52800121 	mov	w1, #0x9                   	// #9
     ff3b0790:	b9000001 	str	w1, [x0]
     ff3b0794:	b85fc001 	ldur	w1, [x0, #-4]
     ff3b0798:	32000021 	orr	w1, w1, #0x1
     ff3b079c:	b81fc001 	stur	w1, [x0, #-4]
     ff3b07a0:	52800ec1 	mov	w1, #0x76                  	// #118
     ff3b07a4:	b9000801 	str	w1, [x0, #8]
     ff3b07a8:	940001b1 	bl	ff3b0e6c <secure_watchdog_ungate>
     ff3b07ac:	d2800b81 	mov	x1, #0x5c                  	// #92
     ff3b07b0:	12800282 	mov	w2, #0xffffffeb            	// #-21
     ff3b07b4:	f2bfe621 	movk	x1, #0xff31, lsl #16
     ff3b07b8:	b9400020 	ldr	w0, [x1]
     ff3b07bc:	0a020000 	and	w0, w0, w2
     ff3b07c0:	b9000020 	str	w0, [x1]
     ff3b07c4:	940001ba 	bl	ff3b0eac <pmu_sgrf_rst_hld_release>
     ff3b07c8:	940001be 	bl	ff3b0ec0 <restore_pmu_rsthold>
     ff3b07cc:	940001ad 	bl	ff3b0e80 <sram_secure_timer_init>
     ff3b07d0:	d0000000 	adrp	x0, ff3b2000 <rk3399m0pmu_bin>
     ff3b07d4:	d2802302 	mov	x2, #0x118                 	// #280
     ff3b07d8:	f2bfeec2 	movk	x2, #0xff76, lsl #16
     ff3b07dc:	d0000003 	adrp	x3, ff3b2000 <rk3399m0pmu_bin>
     ff3b07e0:	b94f3001 	ldr	w1, [x0, #3888]
     ff3b07e4:	aa0203e0 	mov	x0, x2
     ff3b07e8:	32103c21 	orr	w1, w1, #0xffff0000
     ff3b07ec:	b8134401 	str	w1, [x0], #-204
     ff3b07f0:	52a06001 	mov	w1, #0x3000000             	// #50331648
     ff3b07f4:	b8134041 	stur	w1, [x2, #-204]
     ff3b07f8:	913cd061 	add	x1, x3, #0xf34
     ff3b07fc:	d1001000 	sub	x0, x0, #0x4
     ff3b0800:	b94f3463 	ldr	w3, [x3, #3892]
     ff3b0804:	32103c63 	orr	w3, w3, #0xffff0000
     ff3b0808:	b81f8003 	stur	w3, [x0, #-8]
     ff3b080c:	b9400423 	ldr	w3, [x1, #4]
     ff3b0810:	32103c63 	orr	w3, w3, #0xffff0000
     ff3b0814:	b81fc003 	stur	w3, [x0, #-4]
     ff3b0818:	b9400823 	ldr	w3, [x1, #8]
     ff3b081c:	b9000003 	str	w3, [x0]
     ff3b0820:	b9401023 	ldr	w3, [x1, #16]
     ff3b0824:	32103c63 	orr	w3, w3, #0xffff0000
     ff3b0828:	b9000803 	str	w3, [x0, #8]
     ff3b082c:	b9401423 	ldr	w3, [x1, #20]
     ff3b0830:	32103c63 	orr	w3, w3, #0xffff0000
     ff3b0834:	b9000c03 	str	w3, [x0, #12]
     ff3b0838:	b9400c21 	ldr	w1, [x1, #12]
     ff3b083c:	32103c21 	orr	w1, w1, #0xffff0000
     ff3b0840:	b8134041 	stur	w1, [x2, #-204]
     ff3b0844:	b9400001 	ldr	w1, [x0]
     ff3b0848:	36ffffe1 	tbz	w1, #31, ff3b0844 <dmc_resume+0xf8>
     ff3b084c:	d2800800 	mov	x0, #0x40                  	// #64
     ff3b0850:	d2802215 	mov	x21, #0x110                 	// #272
     ff3b0854:	f2bfe660 	movk	x0, #0xff33, lsl #16
     ff3b0858:	52984001 	mov	w1, #0xc200                	// #49664
     ff3b085c:	d0000016 	adrp	x22, ff3b2000 <rk3399m0pmu_bin>
     ff3b0860:	f2bff515 	movk	x21, #0xffa8, lsl #16
     ff3b0864:	910902d3 	add	x19, x22, #0x240
     ff3b0868:	914022b7 	add	x23, x21, #0x8, lsl #12
     ff3b086c:	72b84001 	movk	w1, #0xc200, lsl #16
     ff3b0870:	52800014 	mov	w20, #0x0                   	// #0
     ff3b0874:	b9000001 	str	w1, [x0]
     ff3b0878:	52850009 	mov	w9, #0x2800                	// #10240
     ff3b087c:	d000000b 	adrp	x11, ff3b2000 <rk3399m0pmu_bin>
     ff3b0880:	910a516b 	add	x11, x11, #0x294
     ff3b0884:	72bff509 	movk	w9, #0xffa8, lsl #16
     ff3b0888:	5280000a 	mov	w10, #0x0                   	// #0
     ff3b088c:	39413660 	ldrb	w0, [x19, #77]
     ff3b0890:	6b0a001f 	cmp	w0, w10
     ff3b0894:	540004e8 	b.hi	ff3b0930 <dmc_resume+0x1e4>  // b.pmore
     ff3b0898:	39400660 	ldrb	w0, [x19, #1]
     ff3b089c:	34000040 	cbz	w0, ff3b08a4 <dmc_resume+0x158>
     ff3b08a0:	32000294 	orr	w20, w20, #0x1
     ff3b08a4:	39409660 	ldrb	w0, [x19, #37]
     ff3b08a8:	34000040 	cbz	w0, ff3b08b0 <dmc_resume+0x164>
     ff3b08ac:	321f0294 	orr	w20, w20, #0x2
     ff3b08b0:	b94002a0 	ldr	w0, [x21]
     ff3b08b4:	12000281 	and	w1, w20, #0x1
     ff3b08b8:	32100000 	orr	w0, w0, #0x10000
     ff3b08bc:	b90002a0 	str	w0, [x21]
     ff3b08c0:	b94002e0 	ldr	w0, [x23]
     ff3b08c4:	32100000 	orr	w0, w0, #0x10000
     ff3b08c8:	b90002e0 	str	w0, [x23]
     ff3b08cc:	360000d4 	tbz	w20, #0, ff3b08e4 <dmc_resume+0x198>
     ff3b08d0:	d2800402 	mov	x2, #0x20                  	// #32
     ff3b08d4:	f2bfe622 	movk	x2, #0xff31, lsl #16
     ff3b08d8:	b9400040 	ldr	w0, [x2]
     ff3b08dc:	320d0000 	orr	w0, w0, #0x80000
     ff3b08e0:	b9000040 	str	w0, [x2]
     ff3b08e4:	121f0285 	and	w5, w20, #0x2
     ff3b08e8:	36081374 	tbz	w20, #1, ff3b0b54 <dmc_resume+0x408>
     ff3b08ec:	d2800402 	mov	x2, #0x20                  	// #32
     ff3b08f0:	f2bfe622 	movk	x2, #0xff31, lsl #16
     ff3b08f4:	b9400040 	ldr	w0, [x2]
     ff3b08f8:	32090000 	orr	w0, w0, #0x800000
     ff3b08fc:	b9000040 	str	w0, [x2]
     ff3b0900:	35000ea1 	cbnz	w1, ff3b0ad4 <dmc_resume+0x388>
     ff3b0904:	d295de82 	mov	x2, #0xaef4                	// #44788
     ff3b0908:	f2bff502 	movk	x2, #0xffa8, lsl #16
     ff3b090c:	b9400040 	ldr	w0, [x2]
     ff3b0910:	12067400 	and	w0, w0, #0xfcffffff
     ff3b0914:	32070000 	orr	w0, w0, #0x2000000
     ff3b0918:	b9000040 	str	w0, [x2]
     ff3b091c:	35000ea1 	cbnz	w1, ff3b0af0 <dmc_resume+0x3a4>
     ff3b0920:	d2906585 	mov	x5, #0x832c                	// #33580
     ff3b0924:	52800cc4 	mov	w4, #0x66                  	// #102
     ff3b0928:	f2bff505 	movk	x5, #0xffa8, lsl #16
     ff3b092c:	1400010d 	b	ff3b0d60 <dmc_resume+0x614>
     ff3b0930:	52800022 	mov	w2, #0x1                   	// #1
     ff3b0934:	2a0203e1 	mov	w1, w2
     ff3b0938:	2a0a03e0 	mov	w0, w10
     ff3b093c:	97fffdcf 	bl	ff3b0078 <rkclk_ddr_reset>
     ff3b0940:	52800140 	mov	w0, #0xa                   	// #10
     ff3b0944:	97fffdc0 	bl	ff3b0044 <sram_udelay>
     ff3b0948:	52800002 	mov	w2, #0x0                   	// #0
     ff3b094c:	52800021 	mov	w1, #0x1                   	// #1
     ff3b0950:	2a0a03e0 	mov	w0, w10
     ff3b0954:	97fffdc9 	bl	ff3b0078 <rkclk_ddr_reset>
     ff3b0958:	52800140 	mov	w0, #0xa                   	// #10
     ff3b095c:	97fffdba 	bl	ff3b0044 <sram_udelay>
     ff3b0960:	52800002 	mov	w2, #0x0                   	// #0
     ff3b0964:	52800001 	mov	w1, #0x0                   	// #0
     ff3b0968:	2a0a03e0 	mov	w0, w10
     ff3b096c:	97fffdc3 	bl	ff3b0078 <rkclk_ddr_reset>
     ff3b0970:	52800140 	mov	w0, #0xa                   	// #10
     ff3b0974:	97fffdb4 	bl	ff3b0044 <sram_udelay>
     ff3b0978:	39413260 	ldrb	w0, [x19, #76]
     ff3b097c:	71001c1f 	cmp	w0, #0x7
     ff3b0980:	54000081 	b.ne	ff3b0990 <dmc_resume+0x244>  // b.any
     ff3b0984:	b9404a61 	ldr	w1, [x19, #72]
     ff3b0988:	2a0a03e0 	mov	w0, w10
     ff3b098c:	97ffff33 	bl	ff3b0658 <phy_dll_bypass_set>
     ff3b0990:	aa0b03e1 	mov	x1, x11
     ff3b0994:	52802962 	mov	w2, #0x14b                 	// #331
     ff3b0998:	1284ff60 	mov	w0, #0xffffd804            	// #-10236
     ff3b099c:	0b000120 	add	w0, w9, w0
     ff3b09a0:	97fffda0 	bl	ff3b0020 <sram_regcpy>
     ff3b09a4:	51400924 	sub	w4, w9, #0x2, lsl #12
     ff3b09a8:	1284ffe1 	mov	w1, #0xffffd800            	// #-10240
     ff3b09ac:	0b010125 	add	w5, w9, w1
     ff3b09b0:	b9405260 	ldr	w0, [x19, #80]
     ff3b09b4:	52801902 	mov	w2, #0xc8                  	// #200
     ff3b09b8:	d0000001 	adrp	x1, ff3b2000 <rk3399m0pmu_bin>
     ff3b09bc:	911f0021 	add	x1, x1, #0x7c0
     ff3b09c0:	b90000a0 	str	w0, [x5]
     ff3b09c4:	aa0403e0 	mov	x0, x4
     ff3b09c8:	97fffd96 	bl	ff3b0020 <sram_regcpy>
     ff3b09cc:	1118e120 	add	w0, w9, #0x638
     ff3b09d0:	52800062 	mov	w2, #0x3                   	// #3
     ff3b09d4:	d0000001 	adrp	x1, ff3b2000 <rk3399m0pmu_bin>
     ff3b09d8:	91393021 	add	x1, x1, #0xe4c
     ff3b09dc:	97fffd91 	bl	ff3b0020 <sram_regcpy>
     ff3b09e0:	1284dde2 	mov	w2, #0xffffd910            	// #-9968
     ff3b09e4:	0b020121 	add	w1, w9, w2
     ff3b09e8:	b9400020 	ldr	w0, [x1]
     ff3b09ec:	32100000 	orr	w0, w0, #0x10000
     ff3b09f0:	b9000020 	str	w0, [x1]
     ff3b09f4:	111bd121 	add	w1, w9, #0x6f4
     ff3b09f8:	b9400020 	ldr	w0, [x1]
     ff3b09fc:	12067400 	and	w0, w0, #0xfcffffff
     ff3b0a00:	32080000 	orr	w0, w0, #0x1000000
     ff3b0a04:	b9000020 	str	w0, [x1]
     ff3b0a08:	d5033ebf 	dmb	st
     ff3b0a0c:	b9400080 	ldr	w0, [x4]
     ff3b0a10:	11198122 	add	w2, w9, #0x660
     ff3b0a14:	11199123 	add	w3, w9, #0x664
     ff3b0a18:	1118f121 	add	w1, w9, #0x63c
     ff3b0a1c:	32000000 	orr	w0, w0, #0x1
     ff3b0a20:	b9000080 	str	w0, [x4]
     ff3b0a24:	1119a124 	add	w4, w9, #0x668
     ff3b0a28:	b94000a0 	ldr	w0, [x5]
     ff3b0a2c:	32000000 	orr	w0, w0, #0x1
     ff3b0a30:	b90000a0 	str	w0, [x5]
     ff3b0a34:	320083e5 	mov	w5, #0x10001               	// #65537
     ff3b0a38:	b9400047 	ldr	w7, [x2]
     ff3b0a3c:	b9400060 	ldr	w0, [x3]
     ff3b0a40:	b9400086 	ldr	w6, [x4]
     ff3b0a44:	368000a7 	tbz	w7, #16, ff3b0a58 <dmc_resume+0x30c>
     ff3b0a48:	12008000 	and	w0, w0, #0x10001
     ff3b0a4c:	6b05001f 	cmp	w0, w5
     ff3b0a50:	54000041 	b.ne	ff3b0a58 <dmc_resume+0x30c>  // b.any
     ff3b0a54:	37000066 	tbnz	w6, #0, ff3b0a60 <dmc_resume+0x314>
     ff3b0a58:	b9400020 	ldr	w0, [x1]
     ff3b0a5c:	3607fee0 	tbz	w0, #0, ff3b0a38 <dmc_resume+0x2ec>
     ff3b0a60:	d0000005 	adrp	x5, ff3b2000 <rk3399m0pmu_bin>
     ff3b0a64:	11180126 	add	w6, w9, #0x600
     ff3b0a68:	51200124 	sub	w4, w9, #0x800
     ff3b0a6c:	912b80a5 	add	x5, x5, #0xae0
     ff3b0a70:	11180120 	add	w0, w9, #0x600
     ff3b0a74:	528007e2 	mov	w2, #0x3f                  	// #63
     ff3b0a78:	d0000001 	adrp	x1, ff3b2000 <rk3399m0pmu_bin>
     ff3b0a7c:	91385021 	add	x1, x1, #0xe14
     ff3b0a80:	97fffd68 	bl	ff3b0020 <sram_regcpy>
     ff3b0a84:	2a0403e0 	mov	w0, w4
     ff3b0a88:	aa0503e1 	mov	x1, x5
     ff3b0a8c:	52800b62 	mov	w2, #0x5b                  	// #91
     ff3b0a90:	11080084 	add	w4, w4, #0x200
     ff3b0a94:	97fffd63 	bl	ff3b0020 <sram_regcpy>
     ff3b0a98:	6b04013f 	cmp	w9, w4
     ff3b0a9c:	54ffff41 	b.ne	ff3b0a84 <dmc_resume+0x338>  // b.any
     ff3b0aa0:	d0000005 	adrp	x5, ff3b2000 <rk3399m0pmu_bin>
     ff3b0aa4:	913130a5 	add	x5, x5, #0xc4c
     ff3b0aa8:	aa0503e1 	mov	x1, x5
     ff3b0aac:	2a0403e0 	mov	w0, w4
     ff3b0ab0:	528004c2 	mov	w2, #0x26                  	// #38
     ff3b0ab4:	11080084 	add	w4, w4, #0x200
     ff3b0ab8:	97fffd5a 	bl	ff3b0020 <sram_regcpy>
     ff3b0abc:	910260a5 	add	x5, x5, #0x98
     ff3b0ac0:	6b0400df 	cmp	w6, w4
     ff3b0ac4:	54ffff21 	b.ne	ff3b0aa8 <dmc_resume+0x35c>  // b.any
     ff3b0ac8:	1100054a 	add	w10, w10, #0x1
     ff3b0acc:	11402129 	add	w9, w9, #0x8, lsl #12
     ff3b0ad0:	17ffff6f 	b	ff3b088c <dmc_resume+0x140>
     ff3b0ad4:	d285de82 	mov	x2, #0x2ef4                	// #12020
     ff3b0ad8:	f2bff502 	movk	x2, #0xffa8, lsl #16
     ff3b0adc:	b9400040 	ldr	w0, [x2]
     ff3b0ae0:	12067400 	and	w0, w0, #0xfcffffff
     ff3b0ae4:	32070000 	orr	w0, w0, #0x2000000
     ff3b0ae8:	b9000040 	str	w0, [x2]
     ff3b0aec:	35fff0c5 	cbnz	w5, ff3b0904 <dmc_resume+0x1b8>
     ff3b0af0:	d2806586 	mov	x6, #0x32c                 	// #812
     ff3b0af4:	52800cc4 	mov	w4, #0x66                  	// #102
     ff3b0af8:	f2bff506 	movk	x6, #0xffa8, lsl #16
     ff3b0afc:	b94000c0 	ldr	w0, [x6]
     ff3b0b00:	361811e0 	tbz	w0, #3, ff3b0d3c <dmc_resume+0x5f0>
     ff3b0b04:	d2802201 	mov	x1, #0x110                 	// #272
     ff3b0b08:	d0000002 	adrp	x2, ff3b2000 <rk3399m0pmu_bin>
     ff3b0b0c:	f2bff501 	movk	x1, #0xffa8, lsl #16
     ff3b0b10:	913c4042 	add	x2, x2, #0xf10
     ff3b0b14:	b9400020 	ldr	w0, [x1]
     ff3b0b18:	120f7800 	and	w0, w0, #0xfffeffff
     ff3b0b1c:	b9000020 	str	w0, [x1]
     ff3b0b20:	d2841c80 	mov	x0, #0x20e4                	// #8420
     ff3b0b24:	f2bff500 	movk	x0, #0xffa8, lsl #16
     ff3b0b28:	91200003 	add	x3, x0, #0x800
     ff3b0b2c:	b9400001 	ldr	w1, [x0]
     ff3b0b30:	b8404444 	ldr	w4, [x2], #4
     ff3b0b34:	12044c21 	and	w1, w1, #0xf000ffff
     ff3b0b38:	2a040021 	orr	w1, w1, w4
     ff3b0b3c:	b9000001 	str	w1, [x0]
     ff3b0b40:	91080000 	add	x0, x0, #0x200
     ff3b0b44:	eb03001f 	cmp	x0, x3
     ff3b0b48:	54ffff21 	b.ne	ff3b0b2c <dmc_resume+0x3e0>  // b.any
     ff3b0b4c:	35ffeea5 	cbnz	w5, ff3b0920 <dmc_resume+0x1d4>
     ff3b0b50:	14000002 	b	ff3b0b58 <dmc_resume+0x40c>
     ff3b0b54:	35fffc01 	cbnz	w1, ff3b0ad4 <dmc_resume+0x388>
     ff3b0b58:	d288011c 	mov	x28, #0x4008                	// #16392
     ff3b0b5c:	aa1303fa 	mov	x26, x19
     ff3b0b60:	f2bff51c 	movk	x28, #0xffa8, lsl #16
     ff3b0b64:	5280001b 	mov	w27, #0x0                   	// #0
     ff3b0b68:	52800038 	mov	w24, #0x1                   	// #1
     ff3b0b6c:	52800079 	mov	w25, #0x3                   	// #3
     ff3b0b70:	39413662 	ldrb	w2, [x19, #77]
     ff3b0b74:	6b1b005f 	cmp	w2, w27
     ff3b0b78:	540011e8 	b.hi	ff3b0db4 <dmc_resume+0x668>  // b.pmore
     ff3b0b7c:	39400660 	ldrb	w0, [x19, #1]
     ff3b0b80:	340002c0 	cbz	w0, ff3b0bd8 <dmc_resume+0x48c>
     ff3b0b84:	d2880201 	mov	x1, #0x4010                	// #16400
     ff3b0b88:	b9400e63 	ldr	w3, [x19, #12]
     ff3b0b8c:	f2bff501 	movk	x1, #0xffa8, lsl #16
     ff3b0b90:	aa0103e0 	mov	x0, x1
     ff3b0b94:	b8004403 	str	w3, [x0], #4
     ff3b0b98:	b9401263 	ldr	w3, [x19, #16]
     ff3b0b9c:	b9000423 	str	w3, [x1, #4]
     ff3b0ba0:	b9401661 	ldr	w1, [x19, #20]
     ff3b0ba4:	b9000401 	str	w1, [x0, #4]
     ff3b0ba8:	b9401a61 	ldr	w1, [x19, #24]
     ff3b0bac:	b9000801 	str	w1, [x0, #8]
     ff3b0bb0:	b9401e61 	ldr	w1, [x19, #28]
     ff3b0bb4:	b900fc01 	str	w1, [x0, #252]
     ff3b0bb8:	394902c0 	ldrb	w0, [x22, #576]
     ff3b0bbc:	7100041f 	cmp	w0, #0x1
     ff3b0bc0:	540000c1 	b.ne	ff3b0bd8 <dmc_resume+0x48c>  // b.any
     ff3b0bc4:	d2808a01 	mov	x1, #0x450                 	// #1104
     ff3b0bc8:	f2bff501 	movk	x1, #0xffa8, lsl #16
     ff3b0bcc:	b9400020 	ldr	w0, [x1]
     ff3b0bd0:	320f0000 	orr	w0, w0, #0x20000
     ff3b0bd4:	b9000020 	str	w0, [x1]
     ff3b0bd8:	39409660 	ldrb	w0, [x19, #37]
     ff3b0bdc:	340002c0 	cbz	w0, ff3b0c34 <dmc_resume+0x4e8>
     ff3b0be0:	d2980201 	mov	x1, #0xc010                	// #49168
     ff3b0be4:	b9403263 	ldr	w3, [x19, #48]
     ff3b0be8:	f2bff501 	movk	x1, #0xffa8, lsl #16
     ff3b0bec:	aa0103e0 	mov	x0, x1
     ff3b0bf0:	b8004403 	str	w3, [x0], #4
     ff3b0bf4:	b9403663 	ldr	w3, [x19, #52]
     ff3b0bf8:	b9000423 	str	w3, [x1, #4]
     ff3b0bfc:	b9403a61 	ldr	w1, [x19, #56]
     ff3b0c00:	b9000401 	str	w1, [x0, #4]
     ff3b0c04:	b9403e61 	ldr	w1, [x19, #60]
     ff3b0c08:	b9000801 	str	w1, [x0, #8]
     ff3b0c0c:	b9404261 	ldr	w1, [x19, #64]
     ff3b0c10:	b900fc01 	str	w1, [x0, #252]
     ff3b0c14:	39409260 	ldrb	w0, [x19, #36]
     ff3b0c18:	7100041f 	cmp	w0, #0x1
     ff3b0c1c:	540000c1 	b.ne	ff3b0c34 <dmc_resume+0x4e8>  // b.any
     ff3b0c20:	d2908a01 	mov	x1, #0x8450                	// #33872
     ff3b0c24:	f2bff501 	movk	x1, #0xffa8, lsl #16
     ff3b0c28:	b9400020 	ldr	w0, [x1]
     ff3b0c2c:	320f0000 	orr	w0, w0, #0x20000
     ff3b0c30:	b9000020 	str	w0, [x1]
     ff3b0c34:	39413a60 	ldrb	w0, [x19, #78]
     ff3b0c38:	d29c0201 	mov	x1, #0xe010                	// #57360
     ff3b0c3c:	f2bfe661 	movk	x1, #0xff33, lsl #16
     ff3b0c40:	53165400 	lsl	w0, w0, #10
     ff3b0c44:	32061000 	orr	w0, w0, #0x7c000000
     ff3b0c48:	b9000020 	str	w0, [x1]
     ff3b0c4c:	d2802480 	mov	x0, #0x124                 	// #292
     ff3b0c50:	52803001 	mov	w1, #0x180                 	// #384
     ff3b0c54:	f2bfeea0 	movk	x0, #0xff75, lsl #16
     ff3b0c58:	72a03801 	movk	w1, #0x1c0, lsl #16
     ff3b0c5c:	b9000001 	str	w1, [x0]
     ff3b0c60:	d280a201 	mov	x1, #0x510                 	// #1296
     ff3b0c64:	f2bfeec1 	movk	x1, #0xff76, lsl #16
     ff3b0c68:	b9400020 	ldr	w0, [x1]
     ff3b0c6c:	32000400 	orr	w0, w0, #0x3
     ff3b0c70:	b9000020 	str	w0, [x1]
     ff3b0c74:	d2803780 	mov	x0, #0x1bc                 	// #444
     ff3b0c78:	528000a1 	mov	w1, #0x5                   	// #5
     ff3b0c7c:	f2bff500 	movk	x0, #0xffa8, lsl #16
     ff3b0c80:	72a006a1 	movk	w1, #0x35, lsl #16
     ff3b0c84:	b9400000 	ldr	w0, [x0]
     ff3b0c88:	53107c00 	lsr	w0, w0, #16
     ff3b0c8c:	11000400 	add	w0, w0, #0x1
     ff3b0c90:	12000015 	and	w21, w0, #0x1
     ff3b0c94:	531c0000 	ubfiz	w0, w0, #4, #1
     ff3b0c98:	2a010000 	orr	w0, w0, w1
     ff3b0c9c:	d2bfec41 	mov	x1, #0xff620000            	// #4284612608
     ff3b0ca0:	b9000020 	str	w0, [x1]
     ff3b0ca4:	d2800200 	mov	x0, #0x10                  	// #16
     ff3b0ca8:	f2bfec40 	movk	x0, #0xff62, lsl #16
     ff3b0cac:	b9400001 	ldr	w1, [x0]
     ff3b0cb0:	3617ffe1 	tbz	w1, #2, ff3b0cac <dmc_resume+0x560>
     ff3b0cb4:	d2bfec41 	mov	x1, #0xff620000            	// #4284612608
     ff3b0cb8:	320f83e3 	mov	w3, #0x20002               	// #131074
     ff3b0cbc:	b9000023 	str	w3, [x1]
     ff3b0cc0:	b9400001 	ldr	w1, [x0]
     ff3b0cc4:	3607ffe1 	tbz	w1, #0, ff3b0cc0 <dmc_resume+0x574>
     ff3b0cc8:	d285c017 	mov	x23, #0x2e00                	// #11776
     ff3b0ccc:	53185eb5 	lsl	w21, w21, #8
     ff3b0cd0:	d2800014 	mov	x20, #0x0                   	// #0
     ff3b0cd4:	52900016 	mov	w22, #0x8000                	// #32768
     ff3b0cd8:	f2bff517 	movk	x23, #0xffa8, lsl #16
     ff3b0cdc:	12806038 	mov	w24, #0xfffffcfe            	// #-770
     ff3b0ce0:	2a1403e0 	mov	w0, w20
     ff3b0ce4:	6b14005f 	cmp	w2, w20
     ff3b0ce8:	540001c9 	b.ls	ff3b0d20 <dmc_resume+0x5d4>  // b.plast
     ff3b0cec:	39413261 	ldrb	w1, [x19, #76]
     ff3b0cf0:	71001c3f 	cmp	w1, #0x7
     ff3b0cf4:	540000c0 	b.eq	ff3b0d0c <dmc_resume+0x5c0>  // b.none
     ff3b0cf8:	9bb65e83 	umaddl	x3, w20, w22, x23
     ff3b0cfc:	b9400061 	ldr	w1, [x3]
     ff3b0d00:	0a180021 	and	w1, w1, w24
     ff3b0d04:	2a0102a1 	orr	w1, w21, w1
     ff3b0d08:	b9000061 	str	w1, [x3]
     ff3b0d0c:	b9006fe2 	str	w2, [sp, #108]
     ff3b0d10:	97fffcff 	bl	ff3b010c <data_training.constprop.0>
     ff3b0d14:	b9406fe2 	ldr	w2, [sp, #108]
     ff3b0d18:	91000694 	add	x20, x20, #0x1
     ff3b0d1c:	34fffe20 	cbz	w0, ff3b0ce0 <dmc_resume+0x594>
     ff3b0d20:	a94153f3 	ldp	x19, x20, [sp, #16]
     ff3b0d24:	a9425bf5 	ldp	x21, x22, [sp, #32]
     ff3b0d28:	a94363f7 	ldp	x23, x24, [sp, #48]
     ff3b0d2c:	a9446bf9 	ldp	x25, x26, [sp, #64]
     ff3b0d30:	a94573fb 	ldp	x27, x28, [sp, #80]
     ff3b0d34:	a8c77bfd 	ldp	x29, x30, [sp], #112
     ff3b0d38:	d65f03c0 	ret
     ff3b0d3c:	71000484 	subs	w4, w4, #0x1
     ff3b0d40:	54ffd9c0 	b.eq	ff3b0878 <dmc_resume+0x12c>  // b.none
     ff3b0d44:	52800c80 	mov	w0, #0x64                  	// #100
     ff3b0d48:	97fffcbf 	bl	ff3b0044 <sram_udelay>
     ff3b0d4c:	17ffff6c 	b	ff3b0afc <dmc_resume+0x3b0>
     ff3b0d50:	71000484 	subs	w4, w4, #0x1
     ff3b0d54:	54ffd920 	b.eq	ff3b0878 <dmc_resume+0x12c>  // b.none
     ff3b0d58:	52800c80 	mov	w0, #0x64                  	// #100
     ff3b0d5c:	97fffcba 	bl	ff3b0044 <sram_udelay>
     ff3b0d60:	b94000a0 	ldr	w0, [x5]
     ff3b0d64:	361fff60 	tbz	w0, #3, ff3b0d50 <dmc_resume+0x604>
     ff3b0d68:	d2902201 	mov	x1, #0x8110                	// #33040
     ff3b0d6c:	d0000002 	adrp	x2, ff3b2000 <rk3399m0pmu_bin>
     ff3b0d70:	f2bff501 	movk	x1, #0xffa8, lsl #16
     ff3b0d74:	913c8042 	add	x2, x2, #0xf20
     ff3b0d78:	b9400020 	ldr	w0, [x1]
     ff3b0d7c:	120f7800 	and	w0, w0, #0xfffeffff
     ff3b0d80:	b9000020 	str	w0, [x1]
     ff3b0d84:	d2941c80 	mov	x0, #0xa0e4                	// #41188
     ff3b0d88:	f2bff500 	movk	x0, #0xffa8, lsl #16
     ff3b0d8c:	91200003 	add	x3, x0, #0x800
     ff3b0d90:	b9400001 	ldr	w1, [x0]
     ff3b0d94:	b8404444 	ldr	w4, [x2], #4
     ff3b0d98:	12044c21 	and	w1, w1, #0xf000ffff
     ff3b0d9c:	2a040021 	orr	w1, w1, w4
     ff3b0da0:	b9000001 	str	w1, [x0]
     ff3b0da4:	91080000 	add	x0, x0, #0x200
     ff3b0da8:	eb03001f 	cmp	x0, x3
     ff3b0dac:	54ffff21 	b.ne	ff3b0d90 <dmc_resume+0x644>  // b.any
     ff3b0db0:	17ffff6a 	b	ff3b0b58 <dmc_resume+0x40c>
     ff3b0db4:	39413260 	ldrb	w0, [x19, #76]
     ff3b0db8:	7100181f 	cmp	w0, #0x6
     ff3b0dbc:	540000e1 	b.ne	ff3b0dd8 <dmc_resume+0x68c>  // b.any
     ff3b0dc0:	52800140 	mov	w0, #0xa                   	// #10
     ff3b0dc4:	97fffca0 	bl	ff3b0044 <sram_udelay>
     ff3b0dc8:	2a1b03e0 	mov	w0, w27
     ff3b0dcc:	97fffcd0 	bl	ff3b010c <data_training.constprop.0>
     ff3b0dd0:	34000080 	cbz	w0, ff3b0de0 <dmc_resume+0x694>
     ff3b0dd4:	17fffea9 	b	ff3b0878 <dmc_resume+0x12c>
     ff3b0dd8:	71001c1f 	cmp	w0, #0x7
     ff3b0ddc:	54ffff61 	b.ne	ff3b0dc8 <dmc_resume+0x67c>  // b.any
     ff3b0de0:	39401b40 	ldrb	w0, [x26, #6]
     ff3b0de4:	39400741 	ldrb	w1, [x26, #1]
     ff3b0de8:	39400b42 	ldrb	w2, [x26, #2]
     ff3b0dec:	0b000021 	add	w1, w1, w0
     ff3b0df0:	39400344 	ldrb	w4, [x26]
     ff3b0df4:	0b020021 	add	w1, w1, w2
     ff3b0df8:	39400f42 	ldrb	w2, [x26, #3]
     ff3b0dfc:	b9400b43 	ldr	w3, [x26, #8]
     ff3b0e00:	0b020021 	add	w1, w1, w2
     ff3b0e04:	51005021 	sub	w1, w1, #0x14
     ff3b0e08:	1ac12302 	lsl	w2, w24, w1
     ff3b0e0c:	7100049f 	cmp	w4, #0x1
     ff3b0e10:	54000268 	b.hi	ff3b0e5c <dmc_resume+0x710>  // b.pmore
     ff3b0e14:	52800000 	mov	w0, #0x0                   	// #0
     ff3b0e18:	39401744 	ldrb	w4, [x26, #5]
     ff3b0e1c:	340000a4 	cbz	w4, ff3b0e30 <dmc_resume+0x6e4>
     ff3b0e20:	0b000400 	add	w0, w0, w0, lsl #1
     ff3b0e24:	1ac12321 	lsl	w1, w25, w1
     ff3b0e28:	53027c22 	lsr	w2, w1, #2
     ff3b0e2c:	53027c00 	lsr	w0, w0, #2
     ff3b0e30:	53057c00 	lsr	w0, w0, #5
     ff3b0e34:	2a031863 	orr	w3, w3, w3, lsl #6
     ff3b0e38:	d3453042 	ubfx	x2, x2, #5, #8
     ff3b0e3c:	b9000383 	str	w3, [x28]
     ff3b0e40:	53181c00 	ubfiz	w0, w0, #8, #8
     ff3b0e44:	1100077b 	add	w27, w27, #0x1
     ff3b0e48:	2a020000 	orr	w0, w0, w2
     ff3b0e4c:	9100935a 	add	x26, x26, #0x24
     ff3b0e50:	b9000780 	str	w0, [x28, #4]
     ff3b0e54:	9140239c 	add	x28, x28, #0x8, lsl #12
     ff3b0e58:	17ffff46 	b	ff3b0b70 <dmc_resume+0x424>
     ff3b0e5c:	39401f44 	ldrb	w4, [x26, #7]
     ff3b0e60:	4b040000 	sub	w0, w0, w4
     ff3b0e64:	1ac02440 	lsr	w0, w2, w0
     ff3b0e68:	17ffffec 	b	ff3b0e18 <dmc_resume+0x6cc>
 
 00000000ff3b0e6c <secure_watchdog_ungate>:
     ff3b0e6c:	d29c0180 	mov	x0, #0xe00c                	// #57356
     ff3b0e70:	52a0a001 	mov	w1, #0x5000000             	// #83886080
     ff3b0e74:	f2bfe660 	movk	x0, #0xff33, lsl #16
     ff3b0e78:	b9000001 	str	w1, [x0]
     ff3b0e7c:	d65f03c0 	ret
 
 00000000ff3b0e80 <sram_secure_timer_init>:
     ff3b0e80:	d2901401 	mov	x1, #0x80a0                	// #32928
     ff3b0e84:	12800002 	mov	w2, #0xffffffff            	// #-1
     ff3b0e88:	f2bff0c1 	movk	x1, #0xff86, lsl #16
     ff3b0e8c:	aa0103e0 	mov	x0, x1
     ff3b0e90:	b8004402 	str	w2, [x0], #4
     ff3b0e94:	b9000422 	str	w2, [x1, #4]
     ff3b0e98:	52800021 	mov	w1, #0x1                   	// #1
     ff3b0e9c:	b9000c1f 	str	wzr, [x0, #12]
     ff3b0ea0:	b9000c1f 	str	wzr, [x0, #12]
     ff3b0ea4:	b9001801 	str	w1, [x0, #24]
     ff3b0ea8:	d65f03c0 	ret
 
 00000000ff3b0eac <pmu_sgrf_rst_hld_release>:
     ff3b0eac:	d2802480 	mov	x0, #0x124                 	// #292
     ff3b0eb0:	52a00801 	mov	w1, #0x400000              	// #4194304
     ff3b0eb4:	f2bfeea0 	movk	x0, #0xff75, lsl #16
     ff3b0eb8:	b9000001 	str	w1, [x0]
     ff3b0ebc:	d65f03c0 	ret
 
 00000000ff3b0ec0 <restore_pmu_rsthold>:
     ff3b0ec0:	d0000000 	adrp	x0, ff3b2000 <rk3399m0pmu_bin>
     ff3b0ec4:	d2802401 	mov	x1, #0x120                 	// #288
     ff3b0ec8:	913d4002 	add	x2, x0, #0xf50
     ff3b0ecc:	f2bfeea1 	movk	x1, #0xff75, lsl #16
     ff3b0ed0:	b94f5000 	ldr	w0, [x0, #3920]
     ff3b0ed4:	32103c00 	orr	w0, w0, #0xffff0000
     ff3b0ed8:	b9000020 	str	w0, [x1]
     ff3b0edc:	b9400440 	ldr	w0, [x2, #4]
     ff3b0ee0:	32103c00 	orr	w0, w0, #0xffff0000
     ff3b0ee4:	b9000420 	str	w0, [x1, #4]
     ff3b0ee8:	d65f03c0 	ret
     ff3b0eec:	00000000 	udf	#0
     ff3b0ef0:	14000400 	b	ff3b1ef0 <__bl31_pmusram_text_end>
     ff3b0ef4:	d503201f 	nop
 
 00000000ff3b0ef8 <__bl31_warm_entrypoint_veneer>:
     ff3b0ef8:	90806490 	adrp	x16, 40000 <RAM_REGION_START>
     ff3b0efc:	9105c210 	add	x16, x16, #0x170
     ff3b0f00:	d61f0200 	br	x16
     ff3b0f04:	00000000 	udf	#0
 
 00000000ff3b0f08 <__sram_restore_veneer>:
     ff3b0f08:	d0806550 	adrp	x16, 5a000 <pmu_power_domain_ctr.isra.0+0x64>
     ff3b0f0c:	91175210 	add	x16, x16, #0x5d4
     ff3b0f10:	d61f0200 	br	x16
 	...
 
 00000000ff3b1ef0 <__bl31_pmusram_text_end>:
 	...
 
 00000000ff3b2000 <rk3399m0pmu_bin>:
     ff3b2000:	00000240 00000135 00000131 00000131     @...5...1...1...
 	...
     ff3b202c:	00000131 00000000 00000000 00000131     1...........1...
     ff3b203c:	00000131 00000000 00000000 00000000     1...............
 	...
     ff3b20e8:	68134a0e d0fc2b00 4a0d2101 438b6813     .J.h.+...!.J.h.C
     ff3b20f8:	4a0a6013 2b106813 2102d9fc 68134a09     .`.J.h.+...!.J.h
     ff3b2108:	6013430b 68134a05 d9fc2b19 4a052102     .C.`.J.h.+...!.J
     ff3b2118:	438b6813 bf306013 46c0e7fd 47310078     .h.C.`0....Fx.1G
     ff3b2128:	47310020 47310024 46c0e7fe f7ffb510      .1G$.1G...F....
     ff3b2138:	bd10ffd7 00000000 00000000 00000000     ................
 	...
 
 00000000ff3b2240 <sdram_config>:
 	...
 
 00000000ff3b2f30 <cru_clksel_con6>:
     ff3b2f30:	00000000                                ....
 
 00000000ff3b2f34 <dpll_data>:
 	...
 
 00000000ff3b2f4c <pmu_enable_watchdog0>:
     ff3b2f4c:	00000000                                ....
 
 00000000ff3b2f50 <pmu_slp_data>:
 	...






> Quentin
> 

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: RK3399 TF-A hash verification failure for atf-3
  2026-07-24 12:38   ` Vic B via U-Boot
@ 2026-07-24 12:55     ` Quentin Schulz
  2026-07-26 11:46       ` Vic B via U-Boot
  0 siblings, 1 reply; 12+ messages in thread
From: Quentin Schulz @ 2026-07-24 12:55 UTC (permalink / raw)
  To: Vic B; +Cc: Peter Robinson, u-boot

Hi Vic,

Since this is not really a U-Boot issue but rather TF-A as I understood 
it, maybe add (or switch to) the TF-A mailing list in Cc/To? c.f. 
https://lists.trustedfirmware.org/mailman3/lists/tf-a.lists.trustedfirmware.org/

The few times I wrote there I got first support in under a few days.

On 7/24/26 2:38 PM, Vic B wrote:
> [You don't often get email from u-boot@vicb.net. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ]
> 
> On Wed, Jul 22, 2026 at 07:12:42PM +0200, Quentin Schulz wrote:
>> Hi Vic,
> 
> Hi Quentin,
> 
>>
>> Debian toolchain issue, reported to TF-A last year, see https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/36981/comments/877be809_5abf10d8.
>> We wanted to rely on Debian upgrading at some point their TF-A, hitting the
>> same issue and working on it but it seems they are stuck on lts-v2.12.1
>> (which is slightly concerning considering we're at lts-v2.12.12 already) so
>> this hasn't happened yet. I'm building on Fedora and my company's CI has
>> lts-v2.12 pinned to avoid this issue, so I'm not going to be chasing this
>> myself. Can you try to work this out with Debian maybe? You're not the
>> first, not the last I suspect either.
> 
> Thanks for the link, I think that Chris Kay's comment there is really
> valuable, so let me quote it here:
> 
>   "It's not necessarily the case that the Debian GCC distribution is buggy!
> 
>   What we presume has happened is that an object with a strict page
>   alignment has had to shift to the next page due to an increase in
>   code/data size. This happens from time to time and is generally
>   harmless, but if we we've hit a memory limit somewhere then this is the
>   sort of error we see. That we don't see this on other distributions of
>   GCC is likely just down to configuration differences."
> 
> I think that Chris is right, and have doubts about the assumption that
> Debian folks will start working on this issue and fix their gcc after
> their TF-A package gets updated. If Debian's maintainers of TF-A happen
> to test the new version on RK3399, this path may result in a deadlock
> where the new TF-A doesn't get to Debian because it fails to build,
> so it won't push Debian do fix their gcc...
> 
> The Armbian's attempt to fix the issue by increasing PMUSRAM_RSIZE
> in plat/rockchip/rk3399/include/shared/addressmap_shared.h from 8K
> to 16K seems like more promising course to me - although the resulting
> build with oversized pmusram isn't really usable, it produces much more

I don't think generating a broken binary over erroring out is a good 
thing (it seems however to be quite useful for your debugging session :) 
). What I mean is that I don't think this is something we should get 
merged into TF-A.

I have neither the time nor knowledge to look at the rest unfortunately, 
but I really appreciate you giving lots of information and debugging 
output, I'm sure this will help someone help you eventually :)

Cheers,
Quentin

> material to investigate than the "`PMUSRAM' overflowed by 3928 bytes"
> message that one gets without this change.
> 
> With the PMUSRAM_RSIZE set to 16K, the build results in bl31.elf with
> oversized .pmusram section (which can be extracted with objcopy and
> hexdumped to see that something there obviously gets aligned to 8 KiB
> boundary), and objdump of bl31.elf shows that this (mis)aligned part at
> address 0xff3b2000 is rk3399m0pmu_bin (dump follows below in P.S.), which
> seems to be linked using plat/rockchip/rk3399/drivers/pmu/pmu_fw.S,
> which only requests it to be aligned to 4 bytes:
> 
>   .macro INCBIN file sym sec
>           .section \sec, "a"
>           .global \sym
>           .type \sym, @object
>           .align 4
>   \sym :
>           .incbin "\file"
>           .size \sym , .-\sym
>           .global \sym\()_end
>   \sym\()_end :
>   .endm
> 
>   INCBIN RK3399M0FW, "rk3399m0_bin", ".sram.incbin"
>   INCBIN RK3399M0PMUFW, "rk3399m0pmu_bin", ".pmusram.incbin"
> 
> So what happens here seems to be gcc aligning to 8 KiB when asked to
> align to 4 B. That really looks like page alignment issues as suggested
> by Chris, and doesn't necessarily mean a bug in gcc - there's only a
> directive to align to 4 B boundary, and that one is fulfilled even
> with the 8 KiB alignment; gcc can even be credited for fulfilling the
> directive 2048 times...
> 
> I'll try to look into this over the weekend and find some linker
> options or directives to get the page alignment under control.
> As I'm not really familiar with this, suggestions are welcome!
> 
> Cheers,
> 
> Vic
> 
> P.S.: here's the promised dump of the oversized .pmusram section:
> 
>   $ aarch64-linux-gnu-objdump -j .pmusram -d build/rk3399/release/bl31/bl31.elf
> 
>   build/rk3399/release/bl31/bl31.elf:     file format elf64-littleaarch64
> 
> 
>   Disassembly of section .pmusram:
> 
>   00000000ff3b0000 <pmu_cpuson_entrypoint>:
>       ff3b0000:  580000c2        ldr     x2, ff3b0018 <sys_resume+0x8>
>       ff3b0004:  9100005f        mov     sp, x2
>       ff3b0008:  940001d1        bl      ff3b074c <dmc_resume>
>       ff3b000c:  940003bf        bl      ff3b0f08 <__sram_restore_veneer>
> 
>   00000000ff3b0010 <sys_resume>:
>       ff3b0010:  940003ba        bl      ff3b0ef8 <__bl31_warm_entrypoint_veneer>
>       ff3b0014:  00000000        udf     #0
>       ff3b0018:  ff8c3000        .word   0xff8c3000
>       ff3b001c:  00000000        .word   0x00000000
> 
>   00000000ff3b0020 <sram_regcpy>:
>       ff3b0020:  cb010000        sub     x0, x0, x1
>       ff3b0024:  51000442        sub     w2, w2, #0x1
>       ff3b0028:  3100045f        cmn     w2, #0x1
>       ff3b002c:  54000041        b.ne    ff3b0034 <sram_regcpy+0x14>  // b.any
>       ff3b0030:  d65f03c0        ret
>       ff3b0034:  b9400023        ldr     w3, [x1]
>       ff3b0038:  b8216803        str     w3, [x0, x1]
>       ff3b003c:  91001021        add     x1, x1, #0x4
>       ff3b0040:  17fffff9        b       ff3b0024 <sram_regcpy+0x4>
> 
>   00000000ff3b0044 <sram_udelay>:
>       ff3b0044:  d53be021        mrs     x1, cntpct_el0
>       ff3b0048:  7100281f        cmp     w0, #0xa
>       ff3b004c:  52812c02        mov     w2, #0x960                      // #2400
>       ff3b0050:  52801e00        mov     w0, #0xf0                       // #240
>       ff3b0054:  1a820000        csel    w0, w0, w2, eq  // eq = none
>       ff3b0058:  d53be023        mrs     x3, cntpct_el0
>       ff3b005c:  6b03003f        cmp     w1, w3
>       ff3b0060:  4b010062        sub     w2, w3, w1
>       ff3b0064:  1a9f97e3        cset    w3, hi  // hi = pmore
>       ff3b0068:  4b030042        sub     w2, w2, w3
>       ff3b006c:  6b00005f        cmp     w2, w0
>       ff3b0070:  54ffff49        b.ls    ff3b0058 <sram_udelay+0x14>  // b.plast
>       ff3b0074:  d65f03c0        ret
> 
>   00000000ff3b0078 <rkclk_ddr_reset>:
>       ff3b0078:  531e0000        ubfiz   w0, w0, #2, #1
>       ff3b007c:  11002004        add     w4, w0, #0x8
>       ff3b0080:  11006003        add     w3, w0, #0x18
>       ff3b0084:  1ac42021        lsl     w1, w1, w4
>       ff3b0088:  11002404        add     w4, w0, #0x9
>       ff3b008c:  11006400        add     w0, w0, #0x19
>       ff3b0090:  1ac42042        lsl     w2, w2, w4
>       ff3b0094:  2a020021        orr     w1, w1, w2
>       ff3b0098:  52800022        mov     w2, #0x1                        // #1
>       ff3b009c:  1ac02040        lsl     w0, w2, w0
>       ff3b00a0:  1ac32042        lsl     w2, w2, w3
>       ff3b00a4:  2a020000        orr     w0, w0, w2
>       ff3b00a8:  2a000021        orr     w1, w1, w0
>       ff3b00ac:  d2808200        mov     x0, #0x410                      // #1040
>       ff3b00b0:  f2bfeec0        movk    x0, #0xff76, lsl #16
>       ff3b00b4:  b9000001        str     w1, [x0]
>       ff3b00b8:  d65f03c0        ret
> 
>   00000000ff3b00bc <select_per_cs_training_index>:
>       ff3b00bc:  52842a03        mov     w3, #0x2150                     // #8528
>       ff3b00c0:  53114002        lsl     w2, w0, #15
>       ff3b00c4:  72bff503        movk    w3, #0xffa8, lsl #16
>       ff3b00c8:  0b003c60        add     w0, w3, w0, lsl #15
>       ff3b00cc:  b9400000        ldr     w0, [x0]
>       ff3b00d0:  368001c0        tbz     w0, #16, ff3b0108 <select_per_cs_training_index+0x4c>
>       ff3b00d4:  5155f443        sub     w3, w2, #0x57d, lsl #12
>       ff3b00d8:  5155f442        sub     w2, w2, #0x57d, lsl #12
>       ff3b00dc:  53081c21        lsl     w1, w1, #24
>       ff3b00e0:  513f8063        sub     w3, w3, #0xfe0
>       ff3b00e4:  511f8042        sub     w2, w2, #0x7e0
>       ff3b00e8:  2a0303e4        mov     w4, w3
>       ff3b00ec:  11080063        add     w3, w3, #0x200
>       ff3b00f0:  b9400080        ldr     w0, [x4]
>       ff3b00f4:  12077800        and     w0, w0, #0xfeffffff
>       ff3b00f8:  2a010000        orr     w0, w0, w1
>       ff3b00fc:  b9000080        str     w0, [x4]
>       ff3b0100:  6b02007f        cmp     w3, w2
>       ff3b0104:  54ffff21        b.ne    ff3b00e8 <select_per_cs_training_index+0x2c>  // b.any
>       ff3b0108:  d65f03c0        ret
> 
>   00000000ff3b010c <data_training.constprop.0>:
>       ff3b010c:  2a0003e1        mov     w1, w0
>       ff3b0110:  d2800482        mov     x2, #0x24                       // #36
>       ff3b0114:  a9be7bfd        stp     x29, x30, [sp, #-32]!
>       ff3b0118:  aa0103e6        mov     x6, x1
>       ff3b011c:  d0000000        adrp    x0, ff3b2000 <rk3399m0pmu_bin>
>       ff3b0120:  9b027c21        mul     x1, x1, x2
>       ff3b0124:  91090000        add     x0, x0, #0x240
>       ff3b0128:  910003fd        mov     x29, sp
>       ff3b012c:  a90153f3        stp     x19, x20, [sp, #16]
>       ff3b0130:  3861680b        ldrb    w11, [x0, x1]
>       ff3b0134:  39413000        ldrb    w0, [x0, #76]
>       ff3b0138:  71001c1f        cmp     w0, #0x7
>       ff3b013c:  540013a1        b.ne    ff3b03b0 <data_training.constprop.0+0x2a4>  // b.any
>       ff3b0140:  7100057f        cmp     w11, #0x1
>       ff3b0144:  528001e9        mov     w9, #0xf                        // #15
>       ff3b0148:  528000a1        mov     w1, #0x5                        // #5
>       ff3b014c:  1a811129        csel    w9, w9, w1, ne  // ne = any
>       ff3b0150:  5285cf88        mov     w8, #0x2e7c                     // #11900
>       ff3b0154:  531140c5        lsl     w5, w6, #15
>       ff3b0158:  72bff508        movk    w8, #0xffa8, lsl #16
>       ff3b015c:  0b063d08        add     w8, w8, w6, lsl #15
>       ff3b0160:  b9400101        ldr     w1, [x8]
>       ff3b0164:  320a0021        orr     w1, w1, #0x400000
>       ff3b0168:  b9000101        str     w1, [x8]
>       ff3b016c:  71001c1f        cmp     w0, #0x7
>       ff3b0170:  540013a0        b.eq    ff3b03e4 <data_training.constprop.0+0x2d8>  // b.none
>       ff3b0174:  7100181f        cmp     w0, #0x6
>       ff3b0178:  54001240        b.eq    ff3b03c0 <data_training.constprop.0+0x2b4>  // b.none
>       ff3b017c:  71000c1f        cmp     w0, #0x3
>       ff3b0180:  54001360        b.eq    ff3b03ec <data_training.constprop.0+0x2e0>  // b.none
>       ff3b0184:  52801fea        mov     w10, #0xff                      // #255
>       ff3b0188:  5155fca7        sub     w7, w5, #0x57f, lsl #12
>       ff3b018c:  5280000c        mov     w12, #0x0                       // #0
>       ff3b0190:  5119c0e7        sub     w7, w7, #0x670
>       ff3b0194:  5280002d        mov     w13, #0x1                       // #1
>       ff3b0198:  1acc21a0        lsl     w0, w13, w12
>       ff3b019c:  6a09001f        tst     w0, w9
>       ff3b01a0:  54000540        b.eq    ff3b0248 <data_training.constprop.0+0x13c>  // b.none
>       ff3b01a4:  2a0c03e1        mov     w1, w12
>       ff3b01a8:  2a0603e0        mov     w0, w6
>       ff3b01ac:  97ffffc4        bl      ff3b00bc <select_per_cs_training_index>
>       ff3b01b0:  5155f4ae        sub     w14, w5, #0x57d, lsl #12
>       ff3b01b4:  b94000e0        ldr     w0, [x7]
>       ff3b01b8:  5155fca1        sub     w1, w5, #0x57f, lsl #12
>       ff3b01bc:  511a4021        sub     w1, w1, #0x690
>       ff3b01c0:  5155fca3        sub     w3, w5, #0x57f, lsl #12
>       ff3b01c4:  12167400        and     w0, w0, #0xfffffcff
>       ff3b01c8:  5155f4a4        sub     w4, w5, #0x57d, lsl #12
>       ff3b01cc:  32170000        orr     w0, w0, #0x200
>       ff3b01d0:  b90000e0        str     w0, [x7]
>       ff3b01d4:  5155f4af        sub     w15, w5, #0x57d, lsl #12
>       ff3b01d8:  12a06022        mov     w2, #0xfcfeffff                 // #-50397185
>       ff3b01dc:  b9400020        ldr     w0, [x1]
>       ff3b01e0:  51152063        sub     w3, w3, #0x548
>       ff3b01e4:  511ec084        sub     w4, w4, #0x7b0
>       ff3b01e8:  5116c1ce        sub     w14, w14, #0x5b0
>       ff3b01ec:  0a020000        and     w0, w0, w2
>       ff3b01f0:  510ec1ef        sub     w15, w15, #0x3b0
>       ff3b01f4:  2a0c6000        orr     w0, w0, w12, lsl #24
>       ff3b01f8:  52850410        mov     w16, #0x2820                    // #10272
>       ff3b01fc:  32100000        orr     w0, w0, #0x10000
>       ff3b0200:  52850011        mov     w17, #0x2800                    // #10240
>       ff3b0204:  b9000020        str     w0, [x1]
>       ff3b0208:  b9400062        ldr     w2, [x3]
>       ff3b020c:  b9400080        ldr     w0, [x4]
>       ff3b0210:  b94001d3        ldr     w19, [x14]
>       ff3b0214:  b94001f2        ldr     w18, [x15]
>       ff3b0218:  53087c41        lsr     w1, w2, #8
>       ff3b021c:  2a130000        orr     w0, w0, w19
>       ff3b0220:  0a422202        and     w2, w16, w2, lsr #8
>       ff3b0224:  2a120000        orr     w0, w0, w18
>       ff3b0228:  531e7c00        lsr     w0, w0, #30
>       ff3b022c:  6b11005f        cmp     w2, w17
>       ff3b0230:  54000cc1        b.ne    ff3b03c8 <data_training.constprop.0+0x2bc>  // b.any
>       ff3b0234:  35000d00        cbnz    w0, ff3b03d4 <data_training.constprop.0+0x2c8>
>       ff3b0238:  5155fca0        sub     w0, w5, #0x57f, lsl #12
>       ff3b023c:  5287ef81        mov     w1, #0x3f7c                     // #16252
>       ff3b0240:  51151000        sub     w0, w0, #0x544
>       ff3b0244:  b9000001        str     w1, [x0]
>       ff3b0248:  1100058c        add     w12, w12, #0x1
>       ff3b024c:  7100119f        cmp     w12, #0x4
>       ff3b0250:  54fffa41        b.ne    ff3b0198 <data_training.constprop.0+0x8c>  // b.any
>       ff3b0254:  b94000e0        ldr     w0, [x7]
>       ff3b0258:  12167400        and     w0, w0, #0xfffffcff
>       ff3b025c:  b90000e0        str     w0, [x7]
>       ff3b0260:  5155fca7        sub     w7, w5, #0x57f, lsl #12
>       ff3b0264:  5155f4ad        sub     w13, w5, #0x57d, lsl #12
>       ff3b0268:  5284140e        mov     w14, #0x20a0                    // #8352
>       ff3b026c:  511c40e7        sub     w7, w7, #0x710
>       ff3b0270:  513581ad        sub     w13, w13, #0xd60
>       ff3b0274:  5280000c        mov     w12, #0x0                       // #0
>       ff3b0278:  72bff50e        movk    w14, #0xffa8, lsl #16
>       ff3b027c:  6b0c017f        cmp     w11, w12
>       ff3b0280:  54000ba8        b.hi    ff3b03f4 <data_training.constprop.0+0x2e8>  // b.pmore
>       ff3b0284:  5155f4a0        sub     w0, w5, #0x57d, lsl #12
>       ff3b0288:  5155f4a3        sub     w3, w5, #0x57d, lsl #12
>       ff3b028c:  513f8000        sub     w0, w0, #0xfe0
>       ff3b0290:  511f8063        sub     w3, w3, #0x7e0
>       ff3b0294:  2a0003e2        mov     w2, w0
>       ff3b0298:  b9400041        ldr     w1, [x2]
>       ff3b029c:  32100021        orr     w1, w1, #0x10000
>       ff3b02a0:  b9000041        str     w1, [x2]
>       ff3b02a4:  11037002        add     w2, w0, #0xdc
>       ff3b02a8:  11080000        add     w0, w0, #0x200
>       ff3b02ac:  b9400041        ldr     w1, [x2]
>       ff3b02b0:  72a04001        movk    w1, #0x200, lsl #16
>       ff3b02b4:  b9000041        str     w1, [x2]
>       ff3b02b8:  6b00007f        cmp     w3, w0
>       ff3b02bc:  54fffec1        b.ne    ff3b0294 <data_training.constprop.0+0x188>  // b.any
>       ff3b02c0:  5155fca0        sub     w0, w5, #0x57f, lsl #12
>       ff3b02c4:  5155f4ad        sub     w13, w5, #0x57d, lsl #12
>       ff3b02c8:  51338000        sub     w0, w0, #0xce0
>       ff3b02cc:  5284158e        mov     w14, #0x20ac                    // #8364
>       ff3b02d0:  513551ad        sub     w13, w13, #0xd54
>       ff3b02d4:  5280000c        mov     w12, #0x0                       // #0
>       ff3b02d8:  72bff50e        movk    w14, #0xffa8, lsl #16
>       ff3b02dc:  b9400001        ldr     w1, [x0]
>       ff3b02e0:  32180021        orr     w1, w1, #0x100
>       ff3b02e4:  b9000001        str     w1, [x0]
>       ff3b02e8:  b94000e0        ldr     w0, [x7]
>       ff3b02ec:  12167400        and     w0, w0, #0xfffffcff
>       ff3b02f0:  b90000e0        str     w0, [x7]
>       ff3b02f4:  5155fca7        sub     w7, w5, #0x57f, lsl #12
>       ff3b02f8:  511b00e7        sub     w7, w7, #0x6c0
>       ff3b02fc:  6b0c017f        cmp     w11, w12
>       ff3b0300:  54000dc8        b.hi    ff3b04b8 <data_training.constprop.0+0x3ac>  // b.pmore
>       ff3b0304:  b94000e0        ldr     w0, [x7]
>       ff3b0308:  12067400        and     w0, w0, #0xfcffffff
>       ff3b030c:  b90000e0        str     w0, [x7]
>       ff3b0310:  371817aa        tbnz    w10, #3, ff3b0604 <data_training.constprop.0+0x4f8>
>       ff3b0314:  3620198a        tbz     w10, #4, ff3b0644 <data_training.constprop.0+0x538>
>       ff3b0318:  5155fca7        sub     w7, w5, #0x57f, lsl #12
>       ff3b031c:  5280000a        mov     w10, #0x0                       // #0
>       ff3b0320:  511840e7        sub     w7, w7, #0x610
>       ff3b0324:  5280002b        mov     w11, #0x1                       // #1
>       ff3b0328:  1aca2160        lsl     w0, w11, w10
>       ff3b032c:  6a09001f        tst     w0, w9
>       ff3b0330:  540017e0        b.eq    ff3b062c <data_training.constprop.0+0x520>  // b.none
>       ff3b0334:  2a0a03e1        mov     w1, w10
>       ff3b0338:  2a0603e0        mov     w0, w6
>       ff3b033c:  97ffff60        bl      ff3b00bc <select_per_cs_training_index>
>       ff3b0340:  5155fca0        sub     w0, w5, #0x57f, lsl #12
>       ff3b0344:  529fdfe2        mov     w2, #0xfeff                     // #65279
>       ff3b0348:  5114b000        sub     w0, w0, #0x52c
>       ff3b034c:  72bfff82        movk    w2, #0xfffc, lsl #16
>       ff3b0350:  52860803        mov     w3, #0x3040                     // #12352
>       ff3b0354:  b9400001        ldr     w1, [x0]
>       ff3b0358:  12177821        and     w1, w1, #0xfffffeff
>       ff3b035c:  b9000001        str     w1, [x0]
>       ff3b0360:  5155fca1        sub     w1, w5, #0x57f, lsl #12
>       ff3b0364:  b94000e0        ldr     w0, [x7]
>       ff3b0368:  51187021        sub     w1, w1, #0x61c
>       ff3b036c:  120e7400        and     w0, w0, #0xfffcffff
>       ff3b0370:  320f0000        orr     w0, w0, #0x20000
>       ff3b0374:  b90000e0        str     w0, [x7]
>       ff3b0378:  b9400020        ldr     w0, [x1]
>       ff3b037c:  0a020000        and     w0, w0, w2
>       ff3b0380:  2a0a4000        orr     w0, w0, w10, lsl #16
>       ff3b0384:  32180000        orr     w0, w0, #0x100
>       ff3b0388:  b9000020        str     w0, [x1]
>       ff3b038c:  5155fca1        sub     w1, w5, #0x57f, lsl #12
>       ff3b0390:  51152021        sub     w1, w1, #0x548
>       ff3b0394:  b9400020        ldr     w0, [x1]
>       ff3b0398:  53087c02        lsr     w2, w0, #8
>       ff3b039c:  0a402060        and     w0, w3, w0, lsr #8
>       ff3b03a0:  71400c1f        cmp     w0, #0x3, lsl #12
>       ff3b03a4:  540013c0        b.eq    ff3b061c <data_training.constprop.0+0x510>  // b.none
>       ff3b03a8:  3637ff62        tbz     w2, #6, ff3b0394 <data_training.constprop.0+0x288>
>       ff3b03ac:  1400000a        b       ff3b03d4 <data_training.constprop.0+0x2c8>
>       ff3b03b0:  7100057f        cmp     w11, #0x1
>       ff3b03b4:  52800069        mov     w9, #0x3                        // #3
>       ff3b03b8:  1a9f1529        csinc   w9, w9, wzr, ne // ne = any
>       ff3b03bc:  17ffff65        b       ff3b0150 <data_training.constprop.0+0x44>
>       ff3b03c0:  528000ea        mov     w10, #0x7                       // #7
>       ff3b03c4:  17ffff71        b       ff3b0188 <data_training.constprop.0+0x7c>
>       ff3b03c8:  121b0021        and     w1, w1, #0x20
>       ff3b03cc:  2a000020        orr     w0, w1, w0
>       ff3b03d0:  34fff1c0        cbz     w0, ff3b0208 <data_training.constprop.0+0xfc>
>       ff3b03d4:  12800000        mov     w0, #0xffffffff                 // #-1
>       ff3b03d8:  a94153f3        ldp     x19, x20, [sp, #16]
>       ff3b03dc:  a8c27bfd        ldp     x29, x30, [sp], #32
>       ff3b03e0:  d65f03c0        ret
>       ff3b03e4:  528003ca        mov     w10, #0x1e                      // #30
>       ff3b03e8:  17ffff9e        b       ff3b0260 <data_training.constprop.0+0x154>
>       ff3b03ec:  528001ca        mov     w10, #0xe                       // #14
>       ff3b03f0:  17ffff9c        b       ff3b0260 <data_training.constprop.0+0x154>
>       ff3b03f4:  2a0c03e1        mov     w1, w12
>       ff3b03f8:  2a0603e0        mov     w0, w6
>       ff3b03fc:  97ffff30        bl      ff3b00bc <select_per_cs_training_index>
>       ff3b0400:  5155f4af        sub     w15, w5, #0x57d, lsl #12
>       ff3b0404:  b94000e0        ldr     w0, [x7]
>       ff3b0408:  5155fca1        sub     w1, w5, #0x57f, lsl #12
>       ff3b040c:  511c5021        sub     w1, w1, #0x714
>       ff3b0410:  529fdfe2        mov     w2, #0xfeff                     // #65279
>       ff3b0414:  12167400        and     w0, w0, #0xfffffcff
>       ff3b0418:  5155fca3        sub     w3, w5, #0x57f, lsl #12
>       ff3b041c:  32170000        orr     w0, w0, #0x200
>       ff3b0420:  b90000e0        str     w0, [x7]
>       ff3b0424:  5155f4b0        sub     w16, w5, #0x57d, lsl #12
>       ff3b0428:  72bfff82        movk    w2, #0xfffc, lsl #16
>       ff3b042c:  b9400020        ldr     w0, [x1]
>       ff3b0430:  51152063        sub     w3, w3, #0x548
>       ff3b0434:  0b0e00a4        add     w4, w5, w14
>       ff3b0438:  512d81ef        sub     w15, w15, #0xb60
>       ff3b043c:  0a020000        and     w0, w0, w2
>       ff3b0440:  51258210        sub     w16, w16, #0x960
>       ff3b0444:  2a0c4000        orr     w0, w0, w12, lsl #16
>       ff3b0448:  52848212        mov     w18, #0x2410                    // #9232
>       ff3b044c:  32180000        orr     w0, w0, #0x100
>       ff3b0450:  52848013        mov     w19, #0x2400                    // #9216
>       ff3b0454:  b9000020        str     w0, [x1]
>       ff3b0458:  b9400062        ldr     w2, [x3]
>       ff3b045c:  b9400080        ldr     w0, [x4]
>       ff3b0460:  b94001be        ldr     w30, [x13]
>       ff3b0464:  b94001f1        ldr     w17, [x15]
>       ff3b0468:  53087c41        lsr     w1, w2, #8
>       ff3b046c:  b9400214        ldr     w20, [x16]
>       ff3b0470:  2a1e0000        orr     w0, w0, w30
>       ff3b0474:  0a422242        and     w2, w18, w2, lsr #8
>       ff3b0478:  2a140231        orr     w17, w17, w20
>       ff3b047c:  2a110000        orr     w0, w0, w17
>       ff3b0480:  12140000        and     w0, w0, #0x1000
>       ff3b0484:  6b13005f        cmp     w2, w19
>       ff3b0488:  54000101        b.ne    ff3b04a8 <data_training.constprop.0+0x39c>  // b.any
>       ff3b048c:  35fffa40        cbnz    w0, ff3b03d4 <data_training.constprop.0+0x2c8>
>       ff3b0490:  5155fca0        sub     w0, w5, #0x57f, lsl #12
>       ff3b0494:  5287ef81        mov     w1, #0x3f7c                     // #16252
>       ff3b0498:  51151000        sub     w0, w0, #0x544
>       ff3b049c:  1100058c        add     w12, w12, #0x1
>       ff3b04a0:  b9000001        str     w1, [x0]
>       ff3b04a4:  17ffff76        b       ff3b027c <data_training.constprop.0+0x170>
>       ff3b04a8:  121c0021        and     w1, w1, #0x10
>       ff3b04ac:  2a000020        orr     w0, w1, w0
>       ff3b04b0:  34fffd40        cbz     w0, ff3b0458 <data_training.constprop.0+0x34c>
>       ff3b04b4:  17ffffc8        b       ff3b03d4 <data_training.constprop.0+0x2c8>
>       ff3b04b8:  2a0c03e1        mov     w1, w12
>       ff3b04bc:  2a0603e0        mov     w0, w6
>       ff3b04c0:  97fffeff        bl      ff3b00bc <select_per_cs_training_index>
>       ff3b04c4:  5155f4af        sub     w15, w5, #0x57d, lsl #12
>       ff3b04c8:  b94000e0        ldr     w0, [x7]
>       ff3b04cc:  5155fca1        sub     w1, w5, #0x57f, lsl #12
>       ff3b04d0:  511b6021        sub     w1, w1, #0x6d8
>       ff3b04d4:  5155fca3        sub     w3, w5, #0x57f, lsl #12
>       ff3b04d8:  12067400        and     w0, w0, #0xfcffffff
>       ff3b04dc:  5155f4b0        sub     w16, w5, #0x57d, lsl #12
>       ff3b04e0:  32070000        orr     w0, w0, #0x2000000
>       ff3b04e4:  b90000e0        str     w0, [x7]
>       ff3b04e8:  12a06022        mov     w2, #0xfcfeffff                 // #-50397185
>       ff3b04ec:  51152063        sub     w3, w3, #0x548
>       ff3b04f0:  b9400020        ldr     w0, [x1]
>       ff3b04f4:  0b0e00a4        add     w4, w5, w14
>       ff3b04f8:  512d51ef        sub     w15, w15, #0xb54
>       ff3b04fc:  51255210        sub     w16, w16, #0x954
>       ff3b0500:  0a020000        and     w0, w0, w2
>       ff3b0504:  52844112        mov     w18, #0x2208                    // #8712
>       ff3b0508:  2a0c6000        orr     w0, w0, w12, lsl #24
>       ff3b050c:  5284401e        mov     w30, #0x2200                    // #8704
>       ff3b0510:  32100000        orr     w0, w0, #0x10000
>       ff3b0514:  b9000020        str     w0, [x1]
>       ff3b0518:  b9400062        ldr     w2, [x3]
>       ff3b051c:  b9400080        ldr     w0, [x4]
>       ff3b0520:  b94001b4        ldr     w20, [x13]
>       ff3b0524:  b94001f1        ldr     w17, [x15]
>       ff3b0528:  53087c41        lsr     w1, w2, #8
>       ff3b052c:  b9400213        ldr     w19, [x16]
>       ff3b0530:  2a140000        orr     w0, w0, w20
>       ff3b0534:  0a422242        and     w2, w18, w2, lsr #8
>       ff3b0538:  2a130231        orr     w17, w17, w19
>       ff3b053c:  2a110000        orr     w0, w0, w17
>       ff3b0540:  120a0400        and     w0, w0, #0xc00000
>       ff3b0544:  6b1e005f        cmp     w2, w30
>       ff3b0548:  54000101        b.ne    ff3b0568 <data_training.constprop.0+0x45c>  // b.any
>       ff3b054c:  35fff440        cbnz    w0, ff3b03d4 <data_training.constprop.0+0x2c8>
>       ff3b0550:  5155fca0        sub     w0, w5, #0x57f, lsl #12
>       ff3b0554:  5287ef81        mov     w1, #0x3f7c                     // #16252
>       ff3b0558:  51151000        sub     w0, w0, #0x544
>       ff3b055c:  1100058c        add     w12, w12, #0x1
>       ff3b0560:  b9000001        str     w1, [x0]
>       ff3b0564:  17ffff66        b       ff3b02fc <data_training.constprop.0+0x1f0>
>       ff3b0568:  121d0021        and     w1, w1, #0x8
>       ff3b056c:  2a000020        orr     w0, w1, w0
>       ff3b0570:  34fffd40        cbz     w0, ff3b0518 <data_training.constprop.0+0x40c>
>       ff3b0574:  17ffff98        b       ff3b03d4 <data_training.constprop.0+0x2c8>
>       ff3b0578:  2a0c03e1        mov     w1, w12
>       ff3b057c:  2a0603e0        mov     w0, w6
>       ff3b0580:  97fffecf        bl      ff3b00bc <select_per_cs_training_index>
>       ff3b0584:  b94000e0        ldr     w0, [x7]
>       ff3b0588:  529fdfe1        mov     w1, #0xfeff                     // #65279
>       ff3b058c:  72bf9fe1        movk    w1, #0xfcff, lsl #16
>       ff3b0590:  2a0e03e2        mov     w2, w14
>       ff3b0594:  120e7400        and     w0, w0, #0xfffcffff
>       ff3b0598:  52842083        mov     w3, #0x2104                     // #8452
>       ff3b059c:  320f0000        orr     w0, w0, #0x20000
>       ff3b05a0:  b90000e0        str     w0, [x7]
>       ff3b05a4:  52842004        mov     w4, #0x2100                     // #8448
>       ff3b05a8:  b94001a0        ldr     w0, [x13]
>       ff3b05ac:  0a010000        and     w0, w0, w1
>       ff3b05b0:  2a0c6000        orr     w0, w0, w12, lsl #24
>       ff3b05b4:  32180000        orr     w0, w0, #0x100
>       ff3b05b8:  b90001a0        str     w0, [x13]
>       ff3b05bc:  b9400040        ldr     w0, [x2]
>       ff3b05c0:  53087c01        lsr     w1, w0, #8
>       ff3b05c4:  0a402060        and     w0, w3, w0, lsr #8
>       ff3b05c8:  6b04001f        cmp     w0, w4
>       ff3b05cc:  54000060        b.eq    ff3b05d8 <data_training.constprop.0+0x4cc>  // b.none
>       ff3b05d0:  3617ff61        tbz     w1, #2, ff3b05bc <data_training.constprop.0+0x4b0>
>       ff3b05d4:  17ffff80        b       ff3b03d4 <data_training.constprop.0+0x2c8>
>       ff3b05d8:  5155fca0        sub     w0, w5, #0x57f, lsl #12
>       ff3b05dc:  1100058c        add     w12, w12, #0x1
>       ff3b05e0:  51151000        sub     w0, w0, #0x544
>       ff3b05e4:  5287ef81        mov     w1, #0x3f7c                     // #16252
>       ff3b05e8:  b9000001        str     w1, [x0]
>       ff3b05ec:  6b0c017f        cmp     w11, w12
>       ff3b05f0:  54fffc48        b.hi    ff3b0578 <data_training.constprop.0+0x46c>  // b.pmore
>       ff3b05f4:  b94000e0        ldr     w0, [x7]
>       ff3b05f8:  120e7400        and     w0, w0, #0xfffcffff
>       ff3b05fc:  b90000e0        str     w0, [x7]
>       ff3b0600:  17ffff45        b       ff3b0314 <data_training.constprop.0+0x208>
>       ff3b0604:  5155fcad        sub     w13, w5, #0x57f, lsl #12
>       ff3b0608:  5155fcae        sub     w14, w5, #0x57f, lsl #12
>       ff3b060c:  511b61ad        sub     w13, w13, #0x6d8
>       ff3b0610:  511521ce        sub     w14, w14, #0x548
>       ff3b0614:  5280000c        mov     w12, #0x0                       // #0
>       ff3b0618:  17fffff5        b       ff3b05ec <data_training.constprop.0+0x4e0>
>       ff3b061c:  5155fca0        sub     w0, w5, #0x57f, lsl #12
>       ff3b0620:  5287ef81        mov     w1, #0x3f7c                     // #16252
>       ff3b0624:  51151000        sub     w0, w0, #0x544
>       ff3b0628:  b9000001        str     w1, [x0]
>       ff3b062c:  1100054a        add     w10, w10, #0x1
>       ff3b0630:  7100115f        cmp     w10, #0x4
>       ff3b0634:  54ffe7a1        b.ne    ff3b0328 <data_training.constprop.0+0x21c>  // b.any
>       ff3b0638:  b94000e0        ldr     w0, [x7]
>       ff3b063c:  120e7400        and     w0, w0, #0xfffcffff
>       ff3b0640:  b90000e0        str     w0, [x7]
>       ff3b0644:  b9400100        ldr     w0, [x8]
>       ff3b0648:  12097800        and     w0, w0, #0xffbfffff
>       ff3b064c:  b9000100        str     w0, [x8]
>       ff3b0650:  52800000        mov     w0, #0x0                        // #0
>       ff3b0654:  17ffff61        b       ff3b03d8 <data_training.constprop.0+0x2cc>
> 
>   00000000ff3b0658 <phy_dll_bypass_set>:
>       ff3b0658:  52859182        mov     w2, #0x2c8c                     // #11404
>       ff3b065c:  72bff502        movk    w2, #0xffa8, lsl #16
>       ff3b0660:  0b003c43        add     w3, w2, w0, lsl #15
>       ff3b0664:  51080042        sub     w2, w2, #0x200
>       ff3b0668:  51080044        sub     w4, w2, #0x200
>       ff3b066c:  510cd045        sub     w5, w2, #0x334
>       ff3b0670:  0b003c48        add     w8, w2, w0, lsl #15
>       ff3b0674:  5114d046        sub     w6, w2, #0x534
>       ff3b0678:  511cd047        sub     w7, w2, #0x734
>       ff3b067c:  5124d042        sub     w2, w2, #0x934
>       ff3b0680:  0b003c84        add     w4, w4, w0, lsl #15
>       ff3b0684:  0b003ca5        add     w5, w5, w0, lsl #15
>       ff3b0688:  0b003cc6        add     w6, w6, w0, lsl #15
>       ff3b068c:  0b003ce7        add     w7, w7, w0, lsl #15
>       ff3b0690:  0b003c40        add     w0, w2, w0, lsl #15
>       ff3b0694:  528b2802        mov     w2, #0x5940                     // #22848
>       ff3b0698:  72a0ee62        movk    w2, #0x773, lsl #16
>       ff3b069c:  6b02003f        cmp     w1, w2
>       ff3b06a0:  b9400001        ldr     w1, [x0]
>       ff3b06a4:  540002c8        b.hi    ff3b06fc <phy_dll_bypass_set+0xa4>  // b.pmore
>       ff3b06a8:  32160421        orr     w1, w1, #0xc00
>       ff3b06ac:  b9000001        str     w1, [x0]
>       ff3b06b0:  b94000e0        ldr     w0, [x7]
>       ff3b06b4:  32160400        orr     w0, w0, #0xc00
>       ff3b06b8:  b90000e0        str     w0, [x7]
>       ff3b06bc:  b94000c0        ldr     w0, [x6]
>       ff3b06c0:  32160400        orr     w0, w0, #0xc00
>       ff3b06c4:  b90000c0        str     w0, [x6]
>       ff3b06c8:  b94000a0        ldr     w0, [x5]
>       ff3b06cc:  32160400        orr     w0, w0, #0xc00
>       ff3b06d0:  b90000a0        str     w0, [x5]
>       ff3b06d4:  b9400080        ldr     w0, [x4]
>       ff3b06d8:  320e0400        orr     w0, w0, #0xc0000
>       ff3b06dc:  b9000080        str     w0, [x4]
>       ff3b06e0:  b9400100        ldr     w0, [x8]
>       ff3b06e4:  320e0400        orr     w0, w0, #0xc0000
>       ff3b06e8:  b9000100        str     w0, [x8]
>       ff3b06ec:  b9400060        ldr     w0, [x3]
>       ff3b06f0:  320e0400        orr     w0, w0, #0xc0000
>       ff3b06f4:  b9000060        str     w0, [x3]
>       ff3b06f8:  d65f03c0        ret
>       ff3b06fc:  12147421        and     w1, w1, #0xfffff3ff
>       ff3b0700:  b9000001        str     w1, [x0]
>       ff3b0704:  b94000e0        ldr     w0, [x7]
>       ff3b0708:  12147400        and     w0, w0, #0xfffff3ff
>       ff3b070c:  b90000e0        str     w0, [x7]
>       ff3b0710:  b94000c0        ldr     w0, [x6]
>       ff3b0714:  12147400        and     w0, w0, #0xfffff3ff
>       ff3b0718:  b90000c0        str     w0, [x6]
>       ff3b071c:  b94000a0        ldr     w0, [x5]
>       ff3b0720:  12147400        and     w0, w0, #0xfffff3ff
>       ff3b0724:  b90000a0        str     w0, [x5]
>       ff3b0728:  b9400080        ldr     w0, [x4]
>       ff3b072c:  120c7400        and     w0, w0, #0xfff3ffff
>       ff3b0730:  b9000080        str     w0, [x4]
>       ff3b0734:  b9400100        ldr     w0, [x8]
>       ff3b0738:  120c7400        and     w0, w0, #0xfff3ffff
>       ff3b073c:  b9000100        str     w0, [x8]
>       ff3b0740:  b9400060        ldr     w0, [x3]
>       ff3b0744:  120c7400        and     w0, w0, #0xfff3ffff
>       ff3b0748:  17ffffeb        b       ff3b06f4 <phy_dll_bypass_set+0x9c>
> 
>   00000000ff3b074c <dmc_resume>:
>       ff3b074c:  a9b97bfd        stp     x29, x30, [sp, #-112]!
>       ff3b0750:  d0000000        adrp    x0, ff3b2000 <rk3399m0pmu_bin>
>       ff3b0754:  910003fd        mov     x29, sp
>       ff3b0758:  397d3000        ldrb    w0, [x0, #3916]
>       ff3b075c:  a90153f3        stp     x19, x20, [sp, #16]
>       ff3b0760:  a9025bf5        stp     x21, x22, [sp, #32]
>       ff3b0764:  a90363f7        stp     x23, x24, [sp, #48]
>       ff3b0768:  a9046bf9        stp     x25, x26, [sp, #64]
>       ff3b076c:  a90573fb        stp     x27, x28, [sp, #80]
>       ff3b0770:  360002a0        tbz     w0, #0, ff3b07c4 <dmc_resume+0x78>
>       ff3b0774:  d280a200        mov     x0, #0x510                      // #1296
>       ff3b0778:  52800041        mov     w1, #0x2                        // #2
>       ff3b077c:  f2bfeec0        movk    x0, #0xff76, lsl #16
>       ff3b0780:  b9000001        str     w1, [x0]
>       ff3b0784:  d2900080        mov     x0, #0x8004                     // #32772
>       ff3b0788:  f2bff080        movk    x0, #0xff84, lsl #16
>       ff3b078c:  52800121        mov     w1, #0x9                        // #9
>       ff3b0790:  b9000001        str     w1, [x0]
>       ff3b0794:  b85fc001        ldur    w1, [x0, #-4]
>       ff3b0798:  32000021        orr     w1, w1, #0x1
>       ff3b079c:  b81fc001        stur    w1, [x0, #-4]
>       ff3b07a0:  52800ec1        mov     w1, #0x76                       // #118
>       ff3b07a4:  b9000801        str     w1, [x0, #8]
>       ff3b07a8:  940001b1        bl      ff3b0e6c <secure_watchdog_ungate>
>       ff3b07ac:  d2800b81        mov     x1, #0x5c                       // #92
>       ff3b07b0:  12800282        mov     w2, #0xffffffeb                 // #-21
>       ff3b07b4:  f2bfe621        movk    x1, #0xff31, lsl #16
>       ff3b07b8:  b9400020        ldr     w0, [x1]
>       ff3b07bc:  0a020000        and     w0, w0, w2
>       ff3b07c0:  b9000020        str     w0, [x1]
>       ff3b07c4:  940001ba        bl      ff3b0eac <pmu_sgrf_rst_hld_release>
>       ff3b07c8:  940001be        bl      ff3b0ec0 <restore_pmu_rsthold>
>       ff3b07cc:  940001ad        bl      ff3b0e80 <sram_secure_timer_init>
>       ff3b07d0:  d0000000        adrp    x0, ff3b2000 <rk3399m0pmu_bin>
>       ff3b07d4:  d2802302        mov     x2, #0x118                      // #280
>       ff3b07d8:  f2bfeec2        movk    x2, #0xff76, lsl #16
>       ff3b07dc:  d0000003        adrp    x3, ff3b2000 <rk3399m0pmu_bin>
>       ff3b07e0:  b94f3001        ldr     w1, [x0, #3888]
>       ff3b07e4:  aa0203e0        mov     x0, x2
>       ff3b07e8:  32103c21        orr     w1, w1, #0xffff0000
>       ff3b07ec:  b8134401        str     w1, [x0], #-204
>       ff3b07f0:  52a06001        mov     w1, #0x3000000                  // #50331648
>       ff3b07f4:  b8134041        stur    w1, [x2, #-204]
>       ff3b07f8:  913cd061        add     x1, x3, #0xf34
>       ff3b07fc:  d1001000        sub     x0, x0, #0x4
>       ff3b0800:  b94f3463        ldr     w3, [x3, #3892]
>       ff3b0804:  32103c63        orr     w3, w3, #0xffff0000
>       ff3b0808:  b81f8003        stur    w3, [x0, #-8]
>       ff3b080c:  b9400423        ldr     w3, [x1, #4]
>       ff3b0810:  32103c63        orr     w3, w3, #0xffff0000
>       ff3b0814:  b81fc003        stur    w3, [x0, #-4]
>       ff3b0818:  b9400823        ldr     w3, [x1, #8]
>       ff3b081c:  b9000003        str     w3, [x0]
>       ff3b0820:  b9401023        ldr     w3, [x1, #16]
>       ff3b0824:  32103c63        orr     w3, w3, #0xffff0000
>       ff3b0828:  b9000803        str     w3, [x0, #8]
>       ff3b082c:  b9401423        ldr     w3, [x1, #20]
>       ff3b0830:  32103c63        orr     w3, w3, #0xffff0000
>       ff3b0834:  b9000c03        str     w3, [x0, #12]
>       ff3b0838:  b9400c21        ldr     w1, [x1, #12]
>       ff3b083c:  32103c21        orr     w1, w1, #0xffff0000
>       ff3b0840:  b8134041        stur    w1, [x2, #-204]
>       ff3b0844:  b9400001        ldr     w1, [x0]
>       ff3b0848:  36ffffe1        tbz     w1, #31, ff3b0844 <dmc_resume+0xf8>
>       ff3b084c:  d2800800        mov     x0, #0x40                       // #64
>       ff3b0850:  d2802215        mov     x21, #0x110                     // #272
>       ff3b0854:  f2bfe660        movk    x0, #0xff33, lsl #16
>       ff3b0858:  52984001        mov     w1, #0xc200                     // #49664
>       ff3b085c:  d0000016        adrp    x22, ff3b2000 <rk3399m0pmu_bin>
>       ff3b0860:  f2bff515        movk    x21, #0xffa8, lsl #16
>       ff3b0864:  910902d3        add     x19, x22, #0x240
>       ff3b0868:  914022b7        add     x23, x21, #0x8, lsl #12
>       ff3b086c:  72b84001        movk    w1, #0xc200, lsl #16
>       ff3b0870:  52800014        mov     w20, #0x0                       // #0
>       ff3b0874:  b9000001        str     w1, [x0]
>       ff3b0878:  52850009        mov     w9, #0x2800                     // #10240
>       ff3b087c:  d000000b        adrp    x11, ff3b2000 <rk3399m0pmu_bin>
>       ff3b0880:  910a516b        add     x11, x11, #0x294
>       ff3b0884:  72bff509        movk    w9, #0xffa8, lsl #16
>       ff3b0888:  5280000a        mov     w10, #0x0                       // #0
>       ff3b088c:  39413660        ldrb    w0, [x19, #77]
>       ff3b0890:  6b0a001f        cmp     w0, w10
>       ff3b0894:  540004e8        b.hi    ff3b0930 <dmc_resume+0x1e4>  // b.pmore
>       ff3b0898:  39400660        ldrb    w0, [x19, #1]
>       ff3b089c:  34000040        cbz     w0, ff3b08a4 <dmc_resume+0x158>
>       ff3b08a0:  32000294        orr     w20, w20, #0x1
>       ff3b08a4:  39409660        ldrb    w0, [x19, #37]
>       ff3b08a8:  34000040        cbz     w0, ff3b08b0 <dmc_resume+0x164>
>       ff3b08ac:  321f0294        orr     w20, w20, #0x2
>       ff3b08b0:  b94002a0        ldr     w0, [x21]
>       ff3b08b4:  12000281        and     w1, w20, #0x1
>       ff3b08b8:  32100000        orr     w0, w0, #0x10000
>       ff3b08bc:  b90002a0        str     w0, [x21]
>       ff3b08c0:  b94002e0        ldr     w0, [x23]
>       ff3b08c4:  32100000        orr     w0, w0, #0x10000
>       ff3b08c8:  b90002e0        str     w0, [x23]
>       ff3b08cc:  360000d4        tbz     w20, #0, ff3b08e4 <dmc_resume+0x198>
>       ff3b08d0:  d2800402        mov     x2, #0x20                       // #32
>       ff3b08d4:  f2bfe622        movk    x2, #0xff31, lsl #16
>       ff3b08d8:  b9400040        ldr     w0, [x2]
>       ff3b08dc:  320d0000        orr     w0, w0, #0x80000
>       ff3b08e0:  b9000040        str     w0, [x2]
>       ff3b08e4:  121f0285        and     w5, w20, #0x2
>       ff3b08e8:  36081374        tbz     w20, #1, ff3b0b54 <dmc_resume+0x408>
>       ff3b08ec:  d2800402        mov     x2, #0x20                       // #32
>       ff3b08f0:  f2bfe622        movk    x2, #0xff31, lsl #16
>       ff3b08f4:  b9400040        ldr     w0, [x2]
>       ff3b08f8:  32090000        orr     w0, w0, #0x800000
>       ff3b08fc:  b9000040        str     w0, [x2]
>       ff3b0900:  35000ea1        cbnz    w1, ff3b0ad4 <dmc_resume+0x388>
>       ff3b0904:  d295de82        mov     x2, #0xaef4                     // #44788
>       ff3b0908:  f2bff502        movk    x2, #0xffa8, lsl #16
>       ff3b090c:  b9400040        ldr     w0, [x2]
>       ff3b0910:  12067400        and     w0, w0, #0xfcffffff
>       ff3b0914:  32070000        orr     w0, w0, #0x2000000
>       ff3b0918:  b9000040        str     w0, [x2]
>       ff3b091c:  35000ea1        cbnz    w1, ff3b0af0 <dmc_resume+0x3a4>
>       ff3b0920:  d2906585        mov     x5, #0x832c                     // #33580
>       ff3b0924:  52800cc4        mov     w4, #0x66                       // #102
>       ff3b0928:  f2bff505        movk    x5, #0xffa8, lsl #16
>       ff3b092c:  1400010d        b       ff3b0d60 <dmc_resume+0x614>
>       ff3b0930:  52800022        mov     w2, #0x1                        // #1
>       ff3b0934:  2a0203e1        mov     w1, w2
>       ff3b0938:  2a0a03e0        mov     w0, w10
>       ff3b093c:  97fffdcf        bl      ff3b0078 <rkclk_ddr_reset>
>       ff3b0940:  52800140        mov     w0, #0xa                        // #10
>       ff3b0944:  97fffdc0        bl      ff3b0044 <sram_udelay>
>       ff3b0948:  52800002        mov     w2, #0x0                        // #0
>       ff3b094c:  52800021        mov     w1, #0x1                        // #1
>       ff3b0950:  2a0a03e0        mov     w0, w10
>       ff3b0954:  97fffdc9        bl      ff3b0078 <rkclk_ddr_reset>
>       ff3b0958:  52800140        mov     w0, #0xa                        // #10
>       ff3b095c:  97fffdba        bl      ff3b0044 <sram_udelay>
>       ff3b0960:  52800002        mov     w2, #0x0                        // #0
>       ff3b0964:  52800001        mov     w1, #0x0                        // #0
>       ff3b0968:  2a0a03e0        mov     w0, w10
>       ff3b096c:  97fffdc3        bl      ff3b0078 <rkclk_ddr_reset>
>       ff3b0970:  52800140        mov     w0, #0xa                        // #10
>       ff3b0974:  97fffdb4        bl      ff3b0044 <sram_udelay>
>       ff3b0978:  39413260        ldrb    w0, [x19, #76]
>       ff3b097c:  71001c1f        cmp     w0, #0x7
>       ff3b0980:  54000081        b.ne    ff3b0990 <dmc_resume+0x244>  // b.any
>       ff3b0984:  b9404a61        ldr     w1, [x19, #72]
>       ff3b0988:  2a0a03e0        mov     w0, w10
>       ff3b098c:  97ffff33        bl      ff3b0658 <phy_dll_bypass_set>
>       ff3b0990:  aa0b03e1        mov     x1, x11
>       ff3b0994:  52802962        mov     w2, #0x14b                      // #331
>       ff3b0998:  1284ff60        mov     w0, #0xffffd804                 // #-10236
>       ff3b099c:  0b000120        add     w0, w9, w0
>       ff3b09a0:  97fffda0        bl      ff3b0020 <sram_regcpy>
>       ff3b09a4:  51400924        sub     w4, w9, #0x2, lsl #12
>       ff3b09a8:  1284ffe1        mov     w1, #0xffffd800                 // #-10240
>       ff3b09ac:  0b010125        add     w5, w9, w1
>       ff3b09b0:  b9405260        ldr     w0, [x19, #80]
>       ff3b09b4:  52801902        mov     w2, #0xc8                       // #200
>       ff3b09b8:  d0000001        adrp    x1, ff3b2000 <rk3399m0pmu_bin>
>       ff3b09bc:  911f0021        add     x1, x1, #0x7c0
>       ff3b09c0:  b90000a0        str     w0, [x5]
>       ff3b09c4:  aa0403e0        mov     x0, x4
>       ff3b09c8:  97fffd96        bl      ff3b0020 <sram_regcpy>
>       ff3b09cc:  1118e120        add     w0, w9, #0x638
>       ff3b09d0:  52800062        mov     w2, #0x3                        // #3
>       ff3b09d4:  d0000001        adrp    x1, ff3b2000 <rk3399m0pmu_bin>
>       ff3b09d8:  91393021        add     x1, x1, #0xe4c
>       ff3b09dc:  97fffd91        bl      ff3b0020 <sram_regcpy>
>       ff3b09e0:  1284dde2        mov     w2, #0xffffd910                 // #-9968
>       ff3b09e4:  0b020121        add     w1, w9, w2
>       ff3b09e8:  b9400020        ldr     w0, [x1]
>       ff3b09ec:  32100000        orr     w0, w0, #0x10000
>       ff3b09f0:  b9000020        str     w0, [x1]
>       ff3b09f4:  111bd121        add     w1, w9, #0x6f4
>       ff3b09f8:  b9400020        ldr     w0, [x1]
>       ff3b09fc:  12067400        and     w0, w0, #0xfcffffff
>       ff3b0a00:  32080000        orr     w0, w0, #0x1000000
>       ff3b0a04:  b9000020        str     w0, [x1]
>       ff3b0a08:  d5033ebf        dmb     st
>       ff3b0a0c:  b9400080        ldr     w0, [x4]
>       ff3b0a10:  11198122        add     w2, w9, #0x660
>       ff3b0a14:  11199123        add     w3, w9, #0x664
>       ff3b0a18:  1118f121        add     w1, w9, #0x63c
>       ff3b0a1c:  32000000        orr     w0, w0, #0x1
>       ff3b0a20:  b9000080        str     w0, [x4]
>       ff3b0a24:  1119a124        add     w4, w9, #0x668
>       ff3b0a28:  b94000a0        ldr     w0, [x5]
>       ff3b0a2c:  32000000        orr     w0, w0, #0x1
>       ff3b0a30:  b90000a0        str     w0, [x5]
>       ff3b0a34:  320083e5        mov     w5, #0x10001                    // #65537
>       ff3b0a38:  b9400047        ldr     w7, [x2]
>       ff3b0a3c:  b9400060        ldr     w0, [x3]
>       ff3b0a40:  b9400086        ldr     w6, [x4]
>       ff3b0a44:  368000a7        tbz     w7, #16, ff3b0a58 <dmc_resume+0x30c>
>       ff3b0a48:  12008000        and     w0, w0, #0x10001
>       ff3b0a4c:  6b05001f        cmp     w0, w5
>       ff3b0a50:  54000041        b.ne    ff3b0a58 <dmc_resume+0x30c>  // b.any
>       ff3b0a54:  37000066        tbnz    w6, #0, ff3b0a60 <dmc_resume+0x314>
>       ff3b0a58:  b9400020        ldr     w0, [x1]
>       ff3b0a5c:  3607fee0        tbz     w0, #0, ff3b0a38 <dmc_resume+0x2ec>
>       ff3b0a60:  d0000005        adrp    x5, ff3b2000 <rk3399m0pmu_bin>
>       ff3b0a64:  11180126        add     w6, w9, #0x600
>       ff3b0a68:  51200124        sub     w4, w9, #0x800
>       ff3b0a6c:  912b80a5        add     x5, x5, #0xae0
>       ff3b0a70:  11180120        add     w0, w9, #0x600
>       ff3b0a74:  528007e2        mov     w2, #0x3f                       // #63
>       ff3b0a78:  d0000001        adrp    x1, ff3b2000 <rk3399m0pmu_bin>
>       ff3b0a7c:  91385021        add     x1, x1, #0xe14
>       ff3b0a80:  97fffd68        bl      ff3b0020 <sram_regcpy>
>       ff3b0a84:  2a0403e0        mov     w0, w4
>       ff3b0a88:  aa0503e1        mov     x1, x5
>       ff3b0a8c:  52800b62        mov     w2, #0x5b                       // #91
>       ff3b0a90:  11080084        add     w4, w4, #0x200
>       ff3b0a94:  97fffd63        bl      ff3b0020 <sram_regcpy>
>       ff3b0a98:  6b04013f        cmp     w9, w4
>       ff3b0a9c:  54ffff41        b.ne    ff3b0a84 <dmc_resume+0x338>  // b.any
>       ff3b0aa0:  d0000005        adrp    x5, ff3b2000 <rk3399m0pmu_bin>
>       ff3b0aa4:  913130a5        add     x5, x5, #0xc4c
>       ff3b0aa8:  aa0503e1        mov     x1, x5
>       ff3b0aac:  2a0403e0        mov     w0, w4
>       ff3b0ab0:  528004c2        mov     w2, #0x26                       // #38
>       ff3b0ab4:  11080084        add     w4, w4, #0x200
>       ff3b0ab8:  97fffd5a        bl      ff3b0020 <sram_regcpy>
>       ff3b0abc:  910260a5        add     x5, x5, #0x98
>       ff3b0ac0:  6b0400df        cmp     w6, w4
>       ff3b0ac4:  54ffff21        b.ne    ff3b0aa8 <dmc_resume+0x35c>  // b.any
>       ff3b0ac8:  1100054a        add     w10, w10, #0x1
>       ff3b0acc:  11402129        add     w9, w9, #0x8, lsl #12
>       ff3b0ad0:  17ffff6f        b       ff3b088c <dmc_resume+0x140>
>       ff3b0ad4:  d285de82        mov     x2, #0x2ef4                     // #12020
>       ff3b0ad8:  f2bff502        movk    x2, #0xffa8, lsl #16
>       ff3b0adc:  b9400040        ldr     w0, [x2]
>       ff3b0ae0:  12067400        and     w0, w0, #0xfcffffff
>       ff3b0ae4:  32070000        orr     w0, w0, #0x2000000
>       ff3b0ae8:  b9000040        str     w0, [x2]
>       ff3b0aec:  35fff0c5        cbnz    w5, ff3b0904 <dmc_resume+0x1b8>
>       ff3b0af0:  d2806586        mov     x6, #0x32c                      // #812
>       ff3b0af4:  52800cc4        mov     w4, #0x66                       // #102
>       ff3b0af8:  f2bff506        movk    x6, #0xffa8, lsl #16
>       ff3b0afc:  b94000c0        ldr     w0, [x6]
>       ff3b0b00:  361811e0        tbz     w0, #3, ff3b0d3c <dmc_resume+0x5f0>
>       ff3b0b04:  d2802201        mov     x1, #0x110                      // #272
>       ff3b0b08:  d0000002        adrp    x2, ff3b2000 <rk3399m0pmu_bin>
>       ff3b0b0c:  f2bff501        movk    x1, #0xffa8, lsl #16
>       ff3b0b10:  913c4042        add     x2, x2, #0xf10
>       ff3b0b14:  b9400020        ldr     w0, [x1]
>       ff3b0b18:  120f7800        and     w0, w0, #0xfffeffff
>       ff3b0b1c:  b9000020        str     w0, [x1]
>       ff3b0b20:  d2841c80        mov     x0, #0x20e4                     // #8420
>       ff3b0b24:  f2bff500        movk    x0, #0xffa8, lsl #16
>       ff3b0b28:  91200003        add     x3, x0, #0x800
>       ff3b0b2c:  b9400001        ldr     w1, [x0]
>       ff3b0b30:  b8404444        ldr     w4, [x2], #4
>       ff3b0b34:  12044c21        and     w1, w1, #0xf000ffff
>       ff3b0b38:  2a040021        orr     w1, w1, w4
>       ff3b0b3c:  b9000001        str     w1, [x0]
>       ff3b0b40:  91080000        add     x0, x0, #0x200
>       ff3b0b44:  eb03001f        cmp     x0, x3
>       ff3b0b48:  54ffff21        b.ne    ff3b0b2c <dmc_resume+0x3e0>  // b.any
>       ff3b0b4c:  35ffeea5        cbnz    w5, ff3b0920 <dmc_resume+0x1d4>
>       ff3b0b50:  14000002        b       ff3b0b58 <dmc_resume+0x40c>
>       ff3b0b54:  35fffc01        cbnz    w1, ff3b0ad4 <dmc_resume+0x388>
>       ff3b0b58:  d288011c        mov     x28, #0x4008                    // #16392
>       ff3b0b5c:  aa1303fa        mov     x26, x19
>       ff3b0b60:  f2bff51c        movk    x28, #0xffa8, lsl #16
>       ff3b0b64:  5280001b        mov     w27, #0x0                       // #0
>       ff3b0b68:  52800038        mov     w24, #0x1                       // #1
>       ff3b0b6c:  52800079        mov     w25, #0x3                       // #3
>       ff3b0b70:  39413662        ldrb    w2, [x19, #77]
>       ff3b0b74:  6b1b005f        cmp     w2, w27
>       ff3b0b78:  540011e8        b.hi    ff3b0db4 <dmc_resume+0x668>  // b.pmore
>       ff3b0b7c:  39400660        ldrb    w0, [x19, #1]
>       ff3b0b80:  340002c0        cbz     w0, ff3b0bd8 <dmc_resume+0x48c>
>       ff3b0b84:  d2880201        mov     x1, #0x4010                     // #16400
>       ff3b0b88:  b9400e63        ldr     w3, [x19, #12]
>       ff3b0b8c:  f2bff501        movk    x1, #0xffa8, lsl #16
>       ff3b0b90:  aa0103e0        mov     x0, x1
>       ff3b0b94:  b8004403        str     w3, [x0], #4
>       ff3b0b98:  b9401263        ldr     w3, [x19, #16]
>       ff3b0b9c:  b9000423        str     w3, [x1, #4]
>       ff3b0ba0:  b9401661        ldr     w1, [x19, #20]
>       ff3b0ba4:  b9000401        str     w1, [x0, #4]
>       ff3b0ba8:  b9401a61        ldr     w1, [x19, #24]
>       ff3b0bac:  b9000801        str     w1, [x0, #8]
>       ff3b0bb0:  b9401e61        ldr     w1, [x19, #28]
>       ff3b0bb4:  b900fc01        str     w1, [x0, #252]
>       ff3b0bb8:  394902c0        ldrb    w0, [x22, #576]
>       ff3b0bbc:  7100041f        cmp     w0, #0x1
>       ff3b0bc0:  540000c1        b.ne    ff3b0bd8 <dmc_resume+0x48c>  // b.any
>       ff3b0bc4:  d2808a01        mov     x1, #0x450                      // #1104
>       ff3b0bc8:  f2bff501        movk    x1, #0xffa8, lsl #16
>       ff3b0bcc:  b9400020        ldr     w0, [x1]
>       ff3b0bd0:  320f0000        orr     w0, w0, #0x20000
>       ff3b0bd4:  b9000020        str     w0, [x1]
>       ff3b0bd8:  39409660        ldrb    w0, [x19, #37]
>       ff3b0bdc:  340002c0        cbz     w0, ff3b0c34 <dmc_resume+0x4e8>
>       ff3b0be0:  d2980201        mov     x1, #0xc010                     // #49168
>       ff3b0be4:  b9403263        ldr     w3, [x19, #48]
>       ff3b0be8:  f2bff501        movk    x1, #0xffa8, lsl #16
>       ff3b0bec:  aa0103e0        mov     x0, x1
>       ff3b0bf0:  b8004403        str     w3, [x0], #4
>       ff3b0bf4:  b9403663        ldr     w3, [x19, #52]
>       ff3b0bf8:  b9000423        str     w3, [x1, #4]
>       ff3b0bfc:  b9403a61        ldr     w1, [x19, #56]
>       ff3b0c00:  b9000401        str     w1, [x0, #4]
>       ff3b0c04:  b9403e61        ldr     w1, [x19, #60]
>       ff3b0c08:  b9000801        str     w1, [x0, #8]
>       ff3b0c0c:  b9404261        ldr     w1, [x19, #64]
>       ff3b0c10:  b900fc01        str     w1, [x0, #252]
>       ff3b0c14:  39409260        ldrb    w0, [x19, #36]
>       ff3b0c18:  7100041f        cmp     w0, #0x1
>       ff3b0c1c:  540000c1        b.ne    ff3b0c34 <dmc_resume+0x4e8>  // b.any
>       ff3b0c20:  d2908a01        mov     x1, #0x8450                     // #33872
>       ff3b0c24:  f2bff501        movk    x1, #0xffa8, lsl #16
>       ff3b0c28:  b9400020        ldr     w0, [x1]
>       ff3b0c2c:  320f0000        orr     w0, w0, #0x20000
>       ff3b0c30:  b9000020        str     w0, [x1]
>       ff3b0c34:  39413a60        ldrb    w0, [x19, #78]
>       ff3b0c38:  d29c0201        mov     x1, #0xe010                     // #57360
>       ff3b0c3c:  f2bfe661        movk    x1, #0xff33, lsl #16
>       ff3b0c40:  53165400        lsl     w0, w0, #10
>       ff3b0c44:  32061000        orr     w0, w0, #0x7c000000
>       ff3b0c48:  b9000020        str     w0, [x1]
>       ff3b0c4c:  d2802480        mov     x0, #0x124                      // #292
>       ff3b0c50:  52803001        mov     w1, #0x180                      // #384
>       ff3b0c54:  f2bfeea0        movk    x0, #0xff75, lsl #16
>       ff3b0c58:  72a03801        movk    w1, #0x1c0, lsl #16
>       ff3b0c5c:  b9000001        str     w1, [x0]
>       ff3b0c60:  d280a201        mov     x1, #0x510                      // #1296
>       ff3b0c64:  f2bfeec1        movk    x1, #0xff76, lsl #16
>       ff3b0c68:  b9400020        ldr     w0, [x1]
>       ff3b0c6c:  32000400        orr     w0, w0, #0x3
>       ff3b0c70:  b9000020        str     w0, [x1]
>       ff3b0c74:  d2803780        mov     x0, #0x1bc                      // #444
>       ff3b0c78:  528000a1        mov     w1, #0x5                        // #5
>       ff3b0c7c:  f2bff500        movk    x0, #0xffa8, lsl #16
>       ff3b0c80:  72a006a1        movk    w1, #0x35, lsl #16
>       ff3b0c84:  b9400000        ldr     w0, [x0]
>       ff3b0c88:  53107c00        lsr     w0, w0, #16
>       ff3b0c8c:  11000400        add     w0, w0, #0x1
>       ff3b0c90:  12000015        and     w21, w0, #0x1
>       ff3b0c94:  531c0000        ubfiz   w0, w0, #4, #1
>       ff3b0c98:  2a010000        orr     w0, w0, w1
>       ff3b0c9c:  d2bfec41        mov     x1, #0xff620000                 // #4284612608
>       ff3b0ca0:  b9000020        str     w0, [x1]
>       ff3b0ca4:  d2800200        mov     x0, #0x10                       // #16
>       ff3b0ca8:  f2bfec40        movk    x0, #0xff62, lsl #16
>       ff3b0cac:  b9400001        ldr     w1, [x0]
>       ff3b0cb0:  3617ffe1        tbz     w1, #2, ff3b0cac <dmc_resume+0x560>
>       ff3b0cb4:  d2bfec41        mov     x1, #0xff620000                 // #4284612608
>       ff3b0cb8:  320f83e3        mov     w3, #0x20002                    // #131074
>       ff3b0cbc:  b9000023        str     w3, [x1]
>       ff3b0cc0:  b9400001        ldr     w1, [x0]
>       ff3b0cc4:  3607ffe1        tbz     w1, #0, ff3b0cc0 <dmc_resume+0x574>
>       ff3b0cc8:  d285c017        mov     x23, #0x2e00                    // #11776
>       ff3b0ccc:  53185eb5        lsl     w21, w21, #8
>       ff3b0cd0:  d2800014        mov     x20, #0x0                       // #0
>       ff3b0cd4:  52900016        mov     w22, #0x8000                    // #32768
>       ff3b0cd8:  f2bff517        movk    x23, #0xffa8, lsl #16
>       ff3b0cdc:  12806038        mov     w24, #0xfffffcfe                // #-770
>       ff3b0ce0:  2a1403e0        mov     w0, w20
>       ff3b0ce4:  6b14005f        cmp     w2, w20
>       ff3b0ce8:  540001c9        b.ls    ff3b0d20 <dmc_resume+0x5d4>  // b.plast
>       ff3b0cec:  39413261        ldrb    w1, [x19, #76]
>       ff3b0cf0:  71001c3f        cmp     w1, #0x7
>       ff3b0cf4:  540000c0        b.eq    ff3b0d0c <dmc_resume+0x5c0>  // b.none
>       ff3b0cf8:  9bb65e83        umaddl  x3, w20, w22, x23
>       ff3b0cfc:  b9400061        ldr     w1, [x3]
>       ff3b0d00:  0a180021        and     w1, w1, w24
>       ff3b0d04:  2a0102a1        orr     w1, w21, w1
>       ff3b0d08:  b9000061        str     w1, [x3]
>       ff3b0d0c:  b9006fe2        str     w2, [sp, #108]
>       ff3b0d10:  97fffcff        bl      ff3b010c <data_training.constprop.0>
>       ff3b0d14:  b9406fe2        ldr     w2, [sp, #108]
>       ff3b0d18:  91000694        add     x20, x20, #0x1
>       ff3b0d1c:  34fffe20        cbz     w0, ff3b0ce0 <dmc_resume+0x594>
>       ff3b0d20:  a94153f3        ldp     x19, x20, [sp, #16]
>       ff3b0d24:  a9425bf5        ldp     x21, x22, [sp, #32]
>       ff3b0d28:  a94363f7        ldp     x23, x24, [sp, #48]
>       ff3b0d2c:  a9446bf9        ldp     x25, x26, [sp, #64]
>       ff3b0d30:  a94573fb        ldp     x27, x28, [sp, #80]
>       ff3b0d34:  a8c77bfd        ldp     x29, x30, [sp], #112
>       ff3b0d38:  d65f03c0        ret
>       ff3b0d3c:  71000484        subs    w4, w4, #0x1
>       ff3b0d40:  54ffd9c0        b.eq    ff3b0878 <dmc_resume+0x12c>  // b.none
>       ff3b0d44:  52800c80        mov     w0, #0x64                       // #100
>       ff3b0d48:  97fffcbf        bl      ff3b0044 <sram_udelay>
>       ff3b0d4c:  17ffff6c        b       ff3b0afc <dmc_resume+0x3b0>
>       ff3b0d50:  71000484        subs    w4, w4, #0x1
>       ff3b0d54:  54ffd920        b.eq    ff3b0878 <dmc_resume+0x12c>  // b.none
>       ff3b0d58:  52800c80        mov     w0, #0x64                       // #100
>       ff3b0d5c:  97fffcba        bl      ff3b0044 <sram_udelay>
>       ff3b0d60:  b94000a0        ldr     w0, [x5]
>       ff3b0d64:  361fff60        tbz     w0, #3, ff3b0d50 <dmc_resume+0x604>
>       ff3b0d68:  d2902201        mov     x1, #0x8110                     // #33040
>       ff3b0d6c:  d0000002        adrp    x2, ff3b2000 <rk3399m0pmu_bin>
>       ff3b0d70:  f2bff501        movk    x1, #0xffa8, lsl #16
>       ff3b0d74:  913c8042        add     x2, x2, #0xf20
>       ff3b0d78:  b9400020        ldr     w0, [x1]
>       ff3b0d7c:  120f7800        and     w0, w0, #0xfffeffff
>       ff3b0d80:  b9000020        str     w0, [x1]
>       ff3b0d84:  d2941c80        mov     x0, #0xa0e4                     // #41188
>       ff3b0d88:  f2bff500        movk    x0, #0xffa8, lsl #16
>       ff3b0d8c:  91200003        add     x3, x0, #0x800
>       ff3b0d90:  b9400001        ldr     w1, [x0]
>       ff3b0d94:  b8404444        ldr     w4, [x2], #4
>       ff3b0d98:  12044c21        and     w1, w1, #0xf000ffff
>       ff3b0d9c:  2a040021        orr     w1, w1, w4
>       ff3b0da0:  b9000001        str     w1, [x0]
>       ff3b0da4:  91080000        add     x0, x0, #0x200
>       ff3b0da8:  eb03001f        cmp     x0, x3
>       ff3b0dac:  54ffff21        b.ne    ff3b0d90 <dmc_resume+0x644>  // b.any
>       ff3b0db0:  17ffff6a        b       ff3b0b58 <dmc_resume+0x40c>
>       ff3b0db4:  39413260        ldrb    w0, [x19, #76]
>       ff3b0db8:  7100181f        cmp     w0, #0x6
>       ff3b0dbc:  540000e1        b.ne    ff3b0dd8 <dmc_resume+0x68c>  // b.any
>       ff3b0dc0:  52800140        mov     w0, #0xa                        // #10
>       ff3b0dc4:  97fffca0        bl      ff3b0044 <sram_udelay>
>       ff3b0dc8:  2a1b03e0        mov     w0, w27
>       ff3b0dcc:  97fffcd0        bl      ff3b010c <data_training.constprop.0>
>       ff3b0dd0:  34000080        cbz     w0, ff3b0de0 <dmc_resume+0x694>
>       ff3b0dd4:  17fffea9        b       ff3b0878 <dmc_resume+0x12c>
>       ff3b0dd8:  71001c1f        cmp     w0, #0x7
>       ff3b0ddc:  54ffff61        b.ne    ff3b0dc8 <dmc_resume+0x67c>  // b.any
>       ff3b0de0:  39401b40        ldrb    w0, [x26, #6]
>       ff3b0de4:  39400741        ldrb    w1, [x26, #1]
>       ff3b0de8:  39400b42        ldrb    w2, [x26, #2]
>       ff3b0dec:  0b000021        add     w1, w1, w0
>       ff3b0df0:  39400344        ldrb    w4, [x26]
>       ff3b0df4:  0b020021        add     w1, w1, w2
>       ff3b0df8:  39400f42        ldrb    w2, [x26, #3]
>       ff3b0dfc:  b9400b43        ldr     w3, [x26, #8]
>       ff3b0e00:  0b020021        add     w1, w1, w2
>       ff3b0e04:  51005021        sub     w1, w1, #0x14
>       ff3b0e08:  1ac12302        lsl     w2, w24, w1
>       ff3b0e0c:  7100049f        cmp     w4, #0x1
>       ff3b0e10:  54000268        b.hi    ff3b0e5c <dmc_resume+0x710>  // b.pmore
>       ff3b0e14:  52800000        mov     w0, #0x0                        // #0
>       ff3b0e18:  39401744        ldrb    w4, [x26, #5]
>       ff3b0e1c:  340000a4        cbz     w4, ff3b0e30 <dmc_resume+0x6e4>
>       ff3b0e20:  0b000400        add     w0, w0, w0, lsl #1
>       ff3b0e24:  1ac12321        lsl     w1, w25, w1
>       ff3b0e28:  53027c22        lsr     w2, w1, #2
>       ff3b0e2c:  53027c00        lsr     w0, w0, #2
>       ff3b0e30:  53057c00        lsr     w0, w0, #5
>       ff3b0e34:  2a031863        orr     w3, w3, w3, lsl #6
>       ff3b0e38:  d3453042        ubfx    x2, x2, #5, #8
>       ff3b0e3c:  b9000383        str     w3, [x28]
>       ff3b0e40:  53181c00        ubfiz   w0, w0, #8, #8
>       ff3b0e44:  1100077b        add     w27, w27, #0x1
>       ff3b0e48:  2a020000        orr     w0, w0, w2
>       ff3b0e4c:  9100935a        add     x26, x26, #0x24
>       ff3b0e50:  b9000780        str     w0, [x28, #4]
>       ff3b0e54:  9140239c        add     x28, x28, #0x8, lsl #12
>       ff3b0e58:  17ffff46        b       ff3b0b70 <dmc_resume+0x424>
>       ff3b0e5c:  39401f44        ldrb    w4, [x26, #7]
>       ff3b0e60:  4b040000        sub     w0, w0, w4
>       ff3b0e64:  1ac02440        lsr     w0, w2, w0
>       ff3b0e68:  17ffffec        b       ff3b0e18 <dmc_resume+0x6cc>
> 
>   00000000ff3b0e6c <secure_watchdog_ungate>:
>       ff3b0e6c:  d29c0180        mov     x0, #0xe00c                     // #57356
>       ff3b0e70:  52a0a001        mov     w1, #0x5000000                  // #83886080
>       ff3b0e74:  f2bfe660        movk    x0, #0xff33, lsl #16
>       ff3b0e78:  b9000001        str     w1, [x0]
>       ff3b0e7c:  d65f03c0        ret
> 
>   00000000ff3b0e80 <sram_secure_timer_init>:
>       ff3b0e80:  d2901401        mov     x1, #0x80a0                     // #32928
>       ff3b0e84:  12800002        mov     w2, #0xffffffff                 // #-1
>       ff3b0e88:  f2bff0c1        movk    x1, #0xff86, lsl #16
>       ff3b0e8c:  aa0103e0        mov     x0, x1
>       ff3b0e90:  b8004402        str     w2, [x0], #4
>       ff3b0e94:  b9000422        str     w2, [x1, #4]
>       ff3b0e98:  52800021        mov     w1, #0x1                        // #1
>       ff3b0e9c:  b9000c1f        str     wzr, [x0, #12]
>       ff3b0ea0:  b9000c1f        str     wzr, [x0, #12]
>       ff3b0ea4:  b9001801        str     w1, [x0, #24]
>       ff3b0ea8:  d65f03c0        ret
> 
>   00000000ff3b0eac <pmu_sgrf_rst_hld_release>:
>       ff3b0eac:  d2802480        mov     x0, #0x124                      // #292
>       ff3b0eb0:  52a00801        mov     w1, #0x400000                   // #4194304
>       ff3b0eb4:  f2bfeea0        movk    x0, #0xff75, lsl #16
>       ff3b0eb8:  b9000001        str     w1, [x0]
>       ff3b0ebc:  d65f03c0        ret
> 
>   00000000ff3b0ec0 <restore_pmu_rsthold>:
>       ff3b0ec0:  d0000000        adrp    x0, ff3b2000 <rk3399m0pmu_bin>
>       ff3b0ec4:  d2802401        mov     x1, #0x120                      // #288
>       ff3b0ec8:  913d4002        add     x2, x0, #0xf50
>       ff3b0ecc:  f2bfeea1        movk    x1, #0xff75, lsl #16
>       ff3b0ed0:  b94f5000        ldr     w0, [x0, #3920]
>       ff3b0ed4:  32103c00        orr     w0, w0, #0xffff0000
>       ff3b0ed8:  b9000020        str     w0, [x1]
>       ff3b0edc:  b9400440        ldr     w0, [x2, #4]
>       ff3b0ee0:  32103c00        orr     w0, w0, #0xffff0000
>       ff3b0ee4:  b9000420        str     w0, [x1, #4]
>       ff3b0ee8:  d65f03c0        ret
>       ff3b0eec:  00000000        udf     #0
>       ff3b0ef0:  14000400        b       ff3b1ef0 <__bl31_pmusram_text_end>
>       ff3b0ef4:  d503201f        nop
> 
>   00000000ff3b0ef8 <__bl31_warm_entrypoint_veneer>:
>       ff3b0ef8:  90806490        adrp    x16, 40000 <RAM_REGION_START>
>       ff3b0efc:  9105c210        add     x16, x16, #0x170
>       ff3b0f00:  d61f0200        br      x16
>       ff3b0f04:  00000000        udf     #0
> 
>   00000000ff3b0f08 <__sram_restore_veneer>:
>       ff3b0f08:  d0806550        adrp    x16, 5a000 <pmu_power_domain_ctr.isra.0+0x64>
>       ff3b0f0c:  91175210        add     x16, x16, #0x5d4
>       ff3b0f10:  d61f0200        br      x16
>          ...
> 
>   00000000ff3b1ef0 <__bl31_pmusram_text_end>:
>          ...
> 
>   00000000ff3b2000 <rk3399m0pmu_bin>:
>       ff3b2000:  00000240 00000135 00000131 00000131     @...5...1...1...
>          ...
>       ff3b202c:  00000131 00000000 00000000 00000131     1...........1...
>       ff3b203c:  00000131 00000000 00000000 00000000     1...............
>          ...
>       ff3b20e8:  68134a0e d0fc2b00 4a0d2101 438b6813     .J.h.+...!.J.h.C
>       ff3b20f8:  4a0a6013 2b106813 2102d9fc 68134a09     .`.J.h.+...!.J.h
>       ff3b2108:  6013430b 68134a05 d9fc2b19 4a052102     .C.`.J.h.+...!.J
>       ff3b2118:  438b6813 bf306013 46c0e7fd 47310078     .h.C.`0....Fx.1G
>       ff3b2128:  47310020 47310024 46c0e7fe f7ffb510      .1G$.1G...F....
>       ff3b2138:  bd10ffd7 00000000 00000000 00000000     ................
>          ...
> 
>   00000000ff3b2240 <sdram_config>:
>          ...
> 
>   00000000ff3b2f30 <cru_clksel_con6>:
>       ff3b2f30:  00000000                                ....
> 
>   00000000ff3b2f34 <dpll_data>:
>          ...
> 
>   00000000ff3b2f4c <pmu_enable_watchdog0>:
>       ff3b2f4c:  00000000                                ....
> 
>   00000000ff3b2f50 <pmu_slp_data>:
>          ...
> 
> 
> 
> 
> 
> 
>> Quentin
>>


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: RK3399 TF-A hash verification failure for atf-3
  2026-07-24 12:55     ` Quentin Schulz
@ 2026-07-26 11:46       ` Vic B via U-Boot
  2026-07-27 12:12         ` Peter Robinson
  0 siblings, 1 reply; 12+ messages in thread
From: Vic B via U-Boot @ 2026-07-26 11:46 UTC (permalink / raw)
  To: Quentin Schulz; +Cc: Peter Robinson, u-boot

On Fri, Jul 24, 2026 at 02:55:20PM +0200, Quentin Schulz wrote:
> Hi Vic,

Hi Quentin,

> Since this is not really a U-Boot issue but rather TF-A as I understood it,
> maybe add (or switch to) the TF-A mailing list in Cc/To? c.f. https://lists.trustedfirmware.org/mailman3/lists/tf-a.lists.trustedfirmware.org/
> 
> The few times I wrote there I got first support in under a few days.

Yes, switching to TF-A mailing at this point is obviously the best way
to go now.

Although GCC 14.2 from Debian's stable which hits this issue is no longer
supported by TF-A (according to TF-A docs, minimal supported version GCC
version is 14.3), the same failure also happens on Debian testing with GCC
15.2, which is another reason to continue with TF-A folks rather than
let this go.

> > The Armbian's attempt to fix the issue by increasing PMUSRAM_RSIZE
> > in plat/rockchip/rk3399/include/shared/addressmap_shared.h from 8K
> > to 16K seems like more promising course to me - although the resulting
> > build with oversized pmusram isn't really usable, it produces much more
> 
> I don't think generating a broken binary over erroring out is a good thing
> (it seems however to be quite useful for your debugging session :) ). What I
> mean is that I don't think this is something we should get merged into TF-A.

I'm sure this one shouldn't get merged, although it is useful for
debugging, when the broken binary gets loaded by u-boot (which is
possible after disabling hash verification), it most probably results
in the M0 PMU running garbage after having the first half of its code
overwritten by the overflowing part.

But despite the M0 PMU running garbage and most probably not working at
all, the system appears stable even with this obviously broken binary.

And this is IMHO yet another reason to ask for help from TF-A folks, as I
have no idea how to determine whether the resulting PMUSRAM image works
as expected.

Cheers,

Vic

> I have neither the time nor knowledge to look at the rest unfortunately, but
> I really appreciate you giving lots of information and debugging output, I'm
> sure this will help someone help you eventually :)
> 
> Cheers,
> Quentin

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: RK3399 TF-A hash verification failure for atf-3
  2026-07-26 11:46       ` Vic B via U-Boot
@ 2026-07-27 12:12         ` Peter Robinson
  2026-07-27 20:15           ` Vic B via U-Boot
  0 siblings, 1 reply; 12+ messages in thread
From: Peter Robinson @ 2026-07-27 12:12 UTC (permalink / raw)
  To: Vic B; +Cc: Quentin Schulz, u-boot

On Sun, 26 Jul 2026 at 12:46, Vic B <u-boot@vicb.net> wrote:
>
> On Fri, Jul 24, 2026 at 02:55:20PM +0200, Quentin Schulz wrote:
> > Hi Vic,
>
> Hi Quentin,
>
> > Since this is not really a U-Boot issue but rather TF-A as I understood it,
> > maybe add (or switch to) the TF-A mailing list in Cc/To? c.f. https://lists.trustedfirmware.org/mailman3/lists/tf-a.lists.trustedfirmware.org/
> >
> > The few times I wrote there I got first support in under a few days.
>
> Yes, switching to TF-A mailing at this point is obviously the best way
> to go now.
>
> Although GCC 14.2 from Debian's stable which hits this issue is no longer
> supported by TF-A (according to TF-A docs, minimal supported version GCC
> version is 14.3), the same failure also happens on Debian testing with GCC
> 15.2, which is another reason to continue with TF-A folks rather than
> let this go.

The thing to note is it builds and works fine using the Fedora gcc
toolchain so it might not be considered a TF-A problem by the upstream
project. Now many that comes down the debian build options, or
settings in TF-A code, or some random combination of pieces is what
needs to be worked out.

> > > The Armbian's attempt to fix the issue by increasing PMUSRAM_RSIZE
> > > in plat/rockchip/rk3399/include/shared/addressmap_shared.h from 8K
> > > to 16K seems like more promising course to me - although the resulting
> > > build with oversized pmusram isn't really usable, it produces much more
> >
> > I don't think generating a broken binary over erroring out is a good thing
> > (it seems however to be quite useful for your debugging session :) ). What I
> > mean is that I don't think this is something we should get merged into TF-A.
>
> I'm sure this one shouldn't get merged, although it is useful for
> debugging, when the broken binary gets loaded by u-boot (which is
> possible after disabling hash verification), it most probably results
> in the M0 PMU running garbage after having the first half of its code
> overwritten by the overflowing part.
>
> But despite the M0 PMU running garbage and most probably not working at
> all, the system appears stable even with this obviously broken binary.
>
> And this is IMHO yet another reason to ask for help from TF-A folks, as I
> have no idea how to determine whether the resulting PMUSRAM image works
> as expected.
>
> Cheers,
>
> Vic
>
> > I have neither the time nor knowledge to look at the rest unfortunately, but
> > I really appreciate you giving lots of information and debugging output, I'm
> > sure this will help someone help you eventually :)
> >
> > Cheers,
> > Quentin

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: RK3399 TF-A hash verification failure for atf-3
  2026-07-27 12:12         ` Peter Robinson
@ 2026-07-27 20:15           ` Vic B via U-Boot
  0 siblings, 0 replies; 12+ messages in thread
From: Vic B via U-Boot @ 2026-07-27 20:15 UTC (permalink / raw)
  To: Peter Robinson; +Cc: Quentin Schulz, u-boot

On Mon, Jul 27, 2026 at 01:12:58PM +0100, Peter Robinson wrote:

Hi Pete,

> > Although GCC 14.2 from Debian's stable which hits this issue is no longer
> > supported by TF-A (according to TF-A docs, minimal supported version GCC
> > version is 14.3), the same failure also happens on Debian testing with GCC
> > 15.2, which is another reason to continue with TF-A folks rather than
> > let this go.
> 
> The thing to note is it builds and works fine using the Fedora gcc
> toolchain so it might not be considered a TF-A problem by the upstream
> project. Now many that comes down the debian build options, or
> settings in TF-A code, or some random combination of pieces is what
> needs to be worked out.

I agree, finding the option that causes the difference is what needs to
be worked out in the first place (at least for those of us who use
GCC on Debian or Debian-based distros and need to compile TF-A for
RK3399; other people aren't affected, so they don't have to care).

After this gets clarified, that option may be either added to the long
list of compiler/linker options that TF-A already uses (and make it
support GCC regardless of its distribution-dependent default
configuration), or adjusted in Debian's GCC package (which works for
everything else except TF-A for RK3399, so the motivation for such
adjustment is probably quite low).

My findings so far indicate that the TF-A build system is complex enough
to make the first step (i.e., finding the option that differs between
GCC's default configuration of Fedora and Debian and causes this issue
to happen) a non-trivial task for someone who isn't familiar with the
internals of TF-A's build, and the size and alignment requirements add
another non-trivial part hidden inside the M0 code and its makefiles and
linkerscripts.

This makes me believe that the authors of TF-A's M0 code for RK3399 (who
already have full understanding of how the M0 code works with the HW
while providing all required APIs to other components and meeting the
size and alignment requirements, and also of how it gets built) are much
more qualified to help with this than Debian's GCC maintainers.

On the other hand, I fully understand that TF-A team, despite listing
GCC as one of the supported compilers, don't actively chase this issue
on their own; after all, the fact that TF-A can be compiled with GCC on
Fedora without problems confirms that GCC support in TF-A is fine.

So in the end, it's not surprising that this issue persists since 2018
and seems to be heading into Debian's upcoming release and future TF-A
versions as well :(

Vic

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: RK3399 TF-A hash verification failure for atf-3
  2026-07-22 17:12 ` Quentin Schulz via U-Boot
  2026-07-22 22:29   ` Peter Robinson
  2026-07-24 12:38   ` Vic B via U-Boot
@ 2026-07-30 13:59   ` Peter Robinson
  2026-07-30 23:01     ` Vic B via U-Boot
  2 siblings, 1 reply; 12+ messages in thread
From: Peter Robinson @ 2026-07-30 13:59 UTC (permalink / raw)
  To: Quentin Schulz; +Cc: Vic B, u-boot

On Wed, 22 Jul 2026 at 18:13, Quentin Schulz via U-Boot
<u-boot@lists.u-boot-project.org> wrote:
>
> Hi Vic,
>
> On 7/18/26 6:03 PM, Vic B wrote:
> > [You don't often get email from u-boot@vicb.net. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ]
> >
> > Hi,
> >
> > while trying to compile u-boot v2026.07 (or v2026.04) for RK3399-based
> > NanoPi R4S, I run into issues with current mainline TF-A (using 2.14, more
> > precisely the lts-v2.14.4 tag). I'm cross-compiling both TF-A and u-boot
> > using GCC version 14.2.0 (Debian 14.2.0-19) from Debian Trixie.
> >
> > First, I encountered TF-A build failure with the
> >
> >   region `PMUSRAM' overflowed by 3928 bytes
> >
> > error message, which seems to be a long-term issue know since 2018:
> >
> >   https://github.com/ARM-software/tf-issues/issues/650
> >
> > and recently also mentioned in this mailing list:
> >
> >   https://lists.denx.de/pipermail/u-boot/2026-April/613754.html
> >
> > Although some discussions suggest that this issue may be compiler or
> > toolchain dependent, I've eventually found a solution in Armbian
>
> Debian toolchain issue, reported to TF-A last year, see
> https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/36981/comments/877be809_5abf10d8.
> We wanted to rely on Debian upgrading at some point their TF-A, hitting
> the same issue and working on it but it seems they are stuck on
> lts-v2.12.1 (which is slightly concerning considering we're at
> lts-v2.12.12 already) so this hasn't happened yet. I'm building on
> Fedora and my company's CI has lts-v2.12 pinned to avoid this issue, so
> I'm not going to be chasing this myself. Can you try to work this out
> with Debian maybe? You're not the first, not the last I suspect either.

The distro team got to the bottom of the problem, it's an issue with
the TF-A linker [1] not getting that CPU errata may well be enabled by
default in a compiler options. The patch I think should apply to most
branches of TF-A.

[1] https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/53010

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: RK3399 TF-A hash verification failure for atf-3
  2026-07-30 13:59   ` Peter Robinson
@ 2026-07-30 23:01     ` Vic B via U-Boot
  0 siblings, 0 replies; 12+ messages in thread
From: Vic B via U-Boot @ 2026-07-30 23:01 UTC (permalink / raw)
  To: Peter Robinson; +Cc: Quentin Schulz, u-boot

On Thu, Jul 30, 2026 at 02:59:05PM +0100, Peter Robinson wrote:
> > Debian toolchain issue, reported to TF-A last year, see
> > https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/36981/comments/877be809_5abf10d8.
> > We wanted to rely on Debian upgrading at some point their TF-A, hitting
> > the same issue and working on it but it seems they are stuck on
> > lts-v2.12.1 (which is slightly concerning considering we're at
> > lts-v2.12.12 already) so this hasn't happened yet. I'm building on
> > Fedora and my company's CI has lts-v2.12 pinned to avoid this issue, so
> > I'm not going to be chasing this myself. Can you try to work this out
> > with Debian maybe? You're not the first, not the last I suspect either.
> 
> The distro team got to the bottom of the problem, it's an issue with
> the TF-A linker [1] not getting that CPU errata may well be enabled by
> default in a compiler options. The patch I think should apply to most
> branches of TF-A.
> 
> [1] https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/53010

Works like a charm, thanks!

Vic

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2026-07-30 23:01 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-18 16:03 RK3399 TF-A hash verification failure for atf-3 Vic B
2026-07-22 16:23 ` Peter Robinson via U-Boot
2026-07-24 10:57   ` Vic B via U-Boot
2026-07-22 17:12 ` Quentin Schulz via U-Boot
2026-07-22 22:29   ` Peter Robinson
2026-07-24 12:38   ` Vic B via U-Boot
2026-07-24 12:55     ` Quentin Schulz
2026-07-26 11:46       ` Vic B via U-Boot
2026-07-27 12:12         ` Peter Robinson
2026-07-27 20:15           ` Vic B via U-Boot
2026-07-30 13:59   ` Peter Robinson
2026-07-30 23:01     ` Vic B via U-Boot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.