I just did that test, I removed that 1.5GB hardcoding from mainline u-boot 
build as of current 
memsz = 2048UL * 1024UL * 1024UL * 3 / 4;

patched the hacked u-boot into my Armbian (Debian bookworm, linux 6.7) 
image.

I got the same
U-Boot 2024.04-00757-FixOPiZero3_1.5G 
...
Starting kernel ...

[    2.145316] thermal thermal_zone0: gpu-thermal: critical temperature 
reached, shutting down
[    2.153753] reboot: HARDWARE PROTECTION shutdown (Temperature too high)
[    2.180852] reboot: Power down

message on a 2 GB board, so I'm missing something that is there in Armbian 
u-boot 

On Thursday, April 25, 2024 at 2:19:01 PM UTC+8 andrew g wrote:

> the statment 
> >> if it is run with the mainline u-boot without this hack and the 
> 'standard' boards e.g. 2G, 4G, it boots just fine. But that with the hack 
> and on 1.5G Orange Pi Zero 3 board (I've only 1 of that) I get this gpu 
> overheating goof on boot.
>
> isn't really correct, with *stock* Armbian u-boot (which is based on 
> mainline) it boots 1G, 2G, 4G 'standard' H618 (Orange Pi Zero 3) boards.
> I'm not too sure if I'd build mainline u-boot from the trunk as of 
> current, if that 'just works'.
> that 'gpu overheating' thing is seen after I 'solved' the '1.5G issue' 
> with the hack, then comes the 'gpu overheating' message, and it is 
> reproducible on my 1.5G board practically for all boots.
> I simply install and replace u-boot over that in the distribution in the 
> sd-card.
>
> On Thursday, April 25, 2024 at 2:07:45 PM UTC+8 andrew g wrote:
>
>> on a 'longer term', if after all this *hack* (hard coding memory size) 
>> works,  I'd guess a possible way is to read custom memory size from an 
>> 'environment variable' say set by scripts in /boot/boot.scr or 
>> /boot/boot.cmd in the root partition
>> or perhaps in a DTS overlay. There is a 'chicken and egg' problem as 
>> u-boot needs to setup and initialize dram and relocate itself into dram to 
>> run for H616 and H618. The hack by hardcoding dram works, but I'd guess 
>> that reading /parsing /boot/boot.scr or /boot/boot.cmd would need to be 
>> done in the relocated u-boot.
>>
>> On Thursday, April 25, 2024 at 1:49:28 PM UTC+8 andrew g wrote:
>>
>>> oops the 1st link should be
>>>
>>> https://forum.armbian.com/topic/29202-orange-pi-zero-3/page/20/#comment-188030
>>> with the spoiler in it
>>>
>>> the comment ref should be 188030 rather than 188328
>>>
>>>
>>> On Thursday, April 25, 2024 at 1:45:06 PM UTC+8 andrew g wrote:
>>>
>>> hi Andre Przywara,
>>>
>>> Thanks for your response.
>>>
>>> According to this thread, the author who has worked on the H616 and H618 
>>> dram codes including that '1.5G issue'
>>> https://forum.openwrt.org/t/can-someone-make-a-build-for-
>>> orange-pi-zero-3/168930/38?u=ag1233
>>>
>>> For DDR4 (chips, and I'm not sure if it is that chip or all chips), 
>>> because address wraps around to some unknown address. Hence, it is not 
>>> possible to make generic codes that possibly caters to some (other) 
>>> combination of memory size.
>>> And 'hacks' is about the only way.
>>>
>>> I (we (in Armbian forums)) tried some stuff:
>>>
>>> I did this hack
>>> https://forum.armbian.com/topic/29202-orange-pi-zero-3/
>>> page/20/#comment-188328
>>> static unsigned long mctl_calc_size(const struct dram_config *config)
>>> {
>>>         u8 width = config->bus_full_width ? 4 : 2;
>>>
>>>         /* 8 banks */
>>>         unsigned long long memsz = (1ULL << (config->cols + config->rows 
>>> + 3))
>>>                 * width * config->ranks;
>>>         log_info("detected memsize %d M\n", (int)(memsz >> 20));
>>>         /* 1.5 GB hardcoded */
>>>         memsz = 2048UL * 1024UL * 1024UL * 3 / 4;
>>>         return memsz;
>>> }
>>>
>>> 1.5G is *hardcoded*, build a custom u-boot and we (in Armbian forums) 
>>> ventured with some experiments:
>>> in the same comment 
>>> https://forum.armbian.com/topic/29202-orange-pi-zero-3/
>>> page/20/#comment-188328
>>> Unhide the spoiler, for Armbian distribution built based on Debian 
>>> bookwork and mainline Linux 6.7 kernel (possibly with a patched DTS as 
>>> well, on top of that already there for Zero 3 and Zero 2W).
>>>
>>> Currently that causes during linux boot:
>>> [    2.144698] thermal thermal_zone0: gpu-thermal: critical temperature 
>>> reached, shutting down
>>> [    2.153147] reboot: HARDWARE PROTECTION shutdown (Temperature too 
>>> high)
>>> [    2.192185] reboot: Power down
>>>
>>> if it is run with the mainline u-boot without this hack and the 
>>> 'standard' boards e.g. 2G, 4G, it boots just fine. But that with the hack 
>>> and on 1.5G Orange Pi Zero 3 board (I've only 1 of that) I get this gpu 
>>> overheating goof on boot.
>>>
>>> Someone else who had some issues detecting memory size with the Orange 
>>> Pi vendor distributions (based on 6.1 kernels I think)
>>> , tried the 1.5 G hacked u-boot replacing that in (patched into) Orange 
>>> Pi vendor distributions.
>>> https://forum.armbian.com/topic/29202-orange-pi-zero-3/?
>>> do=findComment&comment=188078
>>> Unfortunately, it turns out that (Orange Pi's distributed) u-boot is 
>>> customized / different and it 'crashes' when (this hacked mainline) u-boot 
>>> tries to include/call /boot/boot.scr (or /boot/boot.cmd) scripts in the 
>>> root filesystem.
>>>
>>> This is currently the 'state of art' and I'm yet to figure out that 'gpu 
>>> overheating' bug, which is obviously a bug (perhaps I've not considered 
>>> some things)
>>>
>>> On Monday, April 22, 2024 at 10:15:37 PM UTC+8 Andre Przywara wrote:
>>>
>>> On Thu, 18 Apr 2024 22:40:59 -0700 (PDT) 
>>> "'andrew g' via linux-sunxi" <linux...@googlegroups.com> wrote: 
>>>
>>> Hi Andrew, 
>>>
>>> > background: 
>>> > 
>>> > currently Armbian linux use the 'mainline u-boot' 
>>> > https://source.denx.de/u-boot/u-boot 
>>>
>>> Thanks for using mainline! 
>>>
>>> > however, it has a '1.5GB' problem in that boards with 1.5GB DRAM is 
>>> > detected incorrectly. 
>>> > It detects 2GB instead possibly due to address wraparound, so the boot 
>>> > crashes mid stream. 
>>> > I'm trying to build a custom u-boot for a 'hack' i.e. to return 1.5GB 
>>> dram 
>>> > from the memory initialization and setup functions. in part to explore 
>>> > solutions 
>>>
>>> So yes, as you figured, the 1.5GB setup is not supported yet, mostly 
>>> because no one with a board fixed that and sent a proper patch. 
>>>
>>> There is this patch here - but please note that this is hack: 
>>>
>>> https://lore.kernel.org/u-boot/20240413134352...@189.cn/T/#u 
>>> <https://lore.kernel.org/u-boot/20240413134352.46495-1-da...@189.cn/T/#u> 
>>>
>>>
>>> However in his reply Jernej gives some hints on what to do for a proper 
>>> solution. 
>>>
>>> So you might want to try this. Bonus points for trying to follow 
>>> Jernej's 
>>> hints and implementing that! 
>>>
>>> Cheers, 
>>> Andre 
>>>
>>> P.S. Your build sequence below looks correct, and nice work on digging 
>>> into 
>>> the sequence. I sketched the U-Boot early code flow here: 
>>> https://linux-sunxi.org/U-Boot/Boot_process 
>>>
>>> > 
>>> > what I tried and issues: 
>>> > I'm building u-boot from 
>>> > https://source.denx.de/u-boot/u-boot 
>>> > basically following these instructions 
>>> > https://docs.u-boot.org/en/latest/board/allwinner/sunxi.html 
>>> > 
>>> > my shell script ot build u-boot is like 
>>> > #!/usr/bin/bash 
>>> > export BL31=../arm-trusted-firmware/build/sun50i_h616/release/bl31.bin 
>>>
>>> > make orangepi_zero3_defconfig 
>>> > CROSS_COMPILE=aarch64-linux-gnu- make 
>>> > 
>>> > where the bl31 module from arm-trusted-firmware is in its own 
>>> directory 
>>> > build with 
>>> > make CROSS_COMPILE=aarch64-linux-gnu- PLAT=sun50i_h616 
>>> > 
>>> > I did succeed with building u-boot and flashed the u-boot SPL into the 
>>> sd 
>>> > card 
>>> > sudo dd if=u-boot-sunxi-with-spl.bin of=/de 
>>> > v/sde bs=1024 seek=8 
>>> > 
>>> > and it actually boots, but : 
>>> > U-Boot SPL 2024.04-00757-gbeac958153-dirty (Apr 19 2024 - 12:46:06 
>>> +0800) 
>>> > DRAM: 0 MiB 
>>> > Trying to boot from MMC1 
>>> > NOTICE: BL31: v2.10.0(release):v2.10.0-729-gc8be7c08c 
>>> > NOTICE: BL31: Built : 23:11:18, Apr 18 2024 
>>> > NOTICE: BL31: Detected Allwinner H616 SoC (1823) 
>>> > NOTICE: BL31: Found U-Boot DTB at 0x4a0be348, model: OrangePi Zero3 
>>> > ERROR: RSB: set run-time address: 0x10003 
>>> > U-Boot 2024.04-00757-gbeac958153-dirty (Apr 19 2024 - 12:46:06 +0800) 
>>> > Allwinner Technology 
>>> > 
>>> > size=30, ptr=590, limit=2000: 26370 
>>> > CPU: Allwinner H616 (SUN50I) 
>>> > Model: OrangePi Zero3 
>>> > DRAM: 0 Bytes 
>>> > 
>>> > So apparently the DRAM is not detected. I tried tracing flow execution 
>>> by 
>>> > placing 
>>> > debug("tag"); or log_info("tag") in 
>>> > board_init_f() 
>>> > https://source.denx.de/u-boot/u-boot/-/blob/master/arch/arm/
>>> mach-sunxi/board.c?ref_type=heads#L457 
>>> > and 
>>> > sunxi_dram_init() 
>>> > https://source.denx.de/u-boot/u-boot/-/blob/master/arch/arm/
>>> mach-sunxi/dram_sun50i_h616.c?ref_type=heads#L1377 
>>> > 
>>> > however, none of my tags are printed, which implies that the 
>>> initialization 
>>> > routines for both the board and sunxi_dram_init() are not called. 
>>> > 
>>> > I did configure logging to be pretty verbose in .config 
>>> > # 
>>> > # Logging 
>>> > # 
>>> > CONFIG_LOG=y 
>>> > CONFIG_LOG_MAX_LEVEL=8 
>>> > CONFIG_LOG_DEFAULT_LEVEL=8 
>>> > CONFIG_LOG_CONSOLE=y 
>>> > 
>>> > I'm not sure what else could be wrong or how to go about it further. 
>>> > 
>>> > 
>>>
>>>

-- 
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to linux-sunxi+unsubscr...@googlegroups.com.
To view this discussion on the web, visit 
https://groups.google.com/d/msgid/linux-sunxi/d6076daf-a32c-4f86-ade6-a564fdbe78d2n%40googlegroups.com.

Reply via email to