Re: [PATCH] ARM: rockchip: smp: enable CPU1 for rk3066a
From: Heiko Stübner
Date: Fri Oct 02 2026 - 09:21:47 EST
Hi Johan,
Am Sonntag, 30. August 2026, 13:17:15 Mitteleuropäische Sommerzeit schrieb Johan Jonker:
> On 8/29/26 23:59, Heiko Stübner wrote:
> > Am Samstag, 29. August 2026, 01:40:57 Mitteleuropäische Sommerzeit schrieb Johan Jonker via B4 Relay:
> >> From: Hüseyin BIYIK <boogiepop@xxxxxxx>
> >>
> >> RK3066a CPU1 fails to come online. Fix by using
> >> a similar mailbox construction as in use with
> >> other Rockchip SoCs.
> >
>
> > "RK3066 CPU1 fails to come online with recent kernels....[rest]" or so
>
> Not recent..
>
> > and also please use the line length up a resonable length like around 70> to 75 characters.
> >
> > Also, is it known, why that happens - i.e. what changed?
>
>
> What loader chain did you use then?
>
> This guessing!!!:
> From TRM: RK PX2/rk3066a supports to boot from internal bootrom or embedded SRAM
> Currently rk3066 U-boot doesn't remap, so we end up in ROM code waiting for deadbeaf:
>
> void main(void)
> {
> deadbeaf = 1;
> if ( !(__mrc(15, 0, 0, 0, 5) & 0xF) )
> {
> __set_CPSR(0xD2u);
> __set_CPSR(0xD3u);
> DELAY_write(24);
> CRU_CLKSEL();
> DELAY(10000);
> MAIN_LOOP1x4();
> DNL_LOOP();
> while ( 1 )
> ;
> }
> __set_CPSR(0xD3u);
> while ( deadbeaf != 0xDEADBEAF )
> __wfe();
> secondary_startup();
> }
>
> Can't put a precise time tag on it since when.
> Let us lead by what current available open source loaders solutions can do.
> Please advise here.
> How far does a fixes tag have to go back?
So ... found time to test a bit:
- Both my Marsboard (RK3066) and Radxa Rock (RK3188) currently have a
u-boot that is really old ... 2017.09 / 2017.11 to be exact.
- Both boards can bring up the other cores just fine
- It seems there the remap was still enabled:
https://git.u-boot-project.org/u-boot/u-boot/-/blob/v2017.11/arch/arm/mach-rockchip/rk3188-board.c?ref_type=tags#L31
- You cannot require people to update their bootloader, only work around
old versions.
Right now you end up with a meshup of different parts.
In the old codepath, sram_addr+4 contains the kernel-start-address, which
now gets overwritten, breaking older loaders.
So the way forward would be:
- add code that disables remap on both rk3066+rk3188, hopefully resulting
in the same behaviour indepent of the loader used
- change to use the bootrom path for all socs in rockchip_boot_secondary()
so just remove the conditional around it
- drop the rockchip_smp_prepare_sram() part, as it's not needed anymore
Heiko