[U-Boot] pine64 and "sunxi: Move the SPL stack top to 0x1A000 on Allwinner A64/A80"
Tom Rini
trini at konsulko.com
Thu Aug 4 23:05:18 CEST 2016
On Thu, Aug 04, 2016 at 10:58:30PM +0300, Siarhei Siamashka wrote:
> On Thu, 4 Aug 2016 11:40:25 -0400
> Tom Rini <trini at konsulko.com> wrote:
>
> > On Thu, Aug 04, 2016 at 11:36:01AM -0400, Tom Rini wrote:
> > > On Thu, Aug 04, 2016 at 04:14:21PM +0100, Andre Przywara wrote:
> > > > Hi,
> > > >
> > > > On 04/08/16 16:01, Tom Rini wrote:
> > > > > Hey guys,
> > > > >
> > > > > I just started trying out my Pine64 1GB and mainline U-Boot and I've
> > > > > found that:
> > > > > commit 1a83fb4a17d959d7b037999ab7ed7e62429abe34
> > > > > Author: Siarhei Siamashka <siarhei.siamashka at gmail.com>
> > > > > Date: Tue May 31 01:48:06 2016 +0300
> > > > >
> > > > > sunxi: Move the SPL stack top to 0x1A000 on Allwinner A64/A80
> > > > >
> > > > > is breaking boot for me. boot0 seems to run fine and then the last bit
> > > > > of output that I get is:
> > > > > boot0: start load other image
> > > > > boot0: Loading BL3-1
> > > > > Loading file 0 at address 0x40000000,size 0x00000200 success
> > > > > boot0: Loading scp
> > > > > Loading file 2 at address 0x00040000,size 0x0000c200 success
> > > > > set arisc reset to de-assert state
> > > > > Ready to disable icache.
> > > > > Jump to secend Boot.
> > > > > NOTICE: BL3-1: Running in SRAM A2 (@0x44000)
> > > > > NOTICE: Configuring SPC Controller
> > > > > NOTICE: BL3-1: v1.0(debug):d697594
> > > > > NOTICE: BL3-1: Built : 09:15:57, Aug 4 2016
> > > > > NOTICE: Configuring AXP PMIC
> > > > > NOTICE: PMIC: already configured for RSB
> > > > > NOTICE: PMIC: setup successful
> > > > > INFO: BL3-1: Initializing runtime services
> > > > > INFO: BL3-1: Preparing for EL3 exit to normal world
> > > > > INFO: BL3-1: Next image address: 0x4a000000, SPSR: 0x3c9
> > > > >
> > > > > I'm using d697594 from
> > > > > https://github.com/apritzel/arm-trusted-firmware.git for ATF and
> > > > > boot0.img from the 20160701 Debian "longsleep" image. Any ideas?
> > > >
> > > > Yes, we were experiencing similar issues, basically it's stuck in
> > > > start.S, as far as I could quickly check.
> > > > Siarhei and I were doubtful that this commit (which we eyed at before)
> > > > could be the culprit, as it _should_ affect only SPL code, which we
> > > > don't use atm.
>
> Well, it does affect the main U-Boot binary too, as we checked some
> days ago on IRC. I was about to send some patches to address this issue.
>
> > > It's not touching SPL code tho. You're changing CONFIG_SYS_INIT_SP_ADDR
> > > which is the start of _main in arch/arm/lib/crt0_64.S
> > >
> >
> > Or to be extra clear:
> > @@ -100,7 +100,7 @@
> > * the 1 actually activates the mapping of the first 32 KiB to 0x00000000.
> > */
> > #define CONFIG_SYS_INIT_RAM_ADDR 0x10000
> > -#define CONFIG_SYS_INIT_RAM_SIZE 0x08000 /* FIXME: 40 KiB ? */
> > +#define CONFIG_SYS_INIT_RAM_SIZE 0xA000 /* 40 KiB */
> > #else
> > #define CONFIG_SYS_INIT_RAM_ADDR 0x0
> > #define CONFIG_SYS_INIT_RAM_SIZE 0x8000 /* 32 KiB */
> >
> > is changing CONFIG_SYS_INIT_SP_ADDR which is in U-Boot proper. To
> > change the SPL stack pointer you use CONFIG_SPL_STACK which is what the
> > second hunk tweaks.
>
> Yes, except that apparently there is a bug in
> "arch/arm/cpu/armv7/lowlevel_init.S" and it also uses
> CONFIG_SYS_INIT_SP_ADDR for the SPL.
That particular set of code could use yet another thinking over and
checking, yeah.
> It is safe to revert this patch right now and come up with a better fix
> later. The patch only tries to ensure the availability of more space
> for the SPL, because the SPL code size was bigger than 24K on
> Pine64 before switching to tiny printf.
OK. Can you please send a revert? Or shall I?
> The root cause of all these troubles is that on Allwinner A64 the
> SRAM C is apparently temporarily leased from the Cedar VE accelerator
> during the boot time. This was a relatively recent discovery:
>
> http://irclog.whitequark.org/linux-sunxi/2016-06-29#16862925;
>
> And an ugly part of it is that accessing SRAM C directly by the CPU
> is unreliable if AHB1 is clocked at 200MHz (default when running the
> Allwinner's Linux kernel). But the SRAM C works fine with AHB1 clocked
> at 100MHz (which is, for example the default clock speed in the
> FEL mode). So after AHB1 is reclocked (by boot0), nobody can safely
> access SRAM C anymore.
Ah, that is interesting and good to know. Thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20160804/01d00116/attachment.sig>
More information about the U-Boot
mailing list