On Tue, 15 Aug 2023 13:17:33 -0600 Sam Edwards <cfswo...@gmail.com> wrote:
Hi Sam, > On 8/14/23 08:16, Andre Przywara wrote: > > Hi Sam, > > > >> This patch adds the necessary code to make nonsec booting and PSCI > >> secondary core management functional on the R528/T113. > > > > Unfortunately this patch breaks the build on older 32-bit SoCs, as > > SUNXI_CPUX_BASE is not defined there. That's a typical problem of the > > "C-if" approach, but typically there is a clean, albeit not trivial, > > solution: > > > > It seems like SUNXI_CPUX_BASE and SUNXI_CPUCFG_BASE are mutually > > exclusive, and I actually carry a "#define SUNXI_CPUCFG_BASE 0" hack in my > > patches already. > > So I wonder if we should unify those two into SUNXI_CPUCFG_BASE, with the > > following rework: > > The SUNXI_CPUX_BASE -> SUNXI_CPUCFG_BASE rename worked excellently. > We're having the same problem with SUNXI_R_CPUCFG_BASE as well, though. > How do you want to handle that? So that's a bit more nasty indeed. I don't even know if R_CPUCFG really makes sense here, as the _R_ term typically refers to the management processor, which the D1/R528 don't have. Or at least the always-on power domain, but then again this hardly relates to the secondary entry point. I think the name was just used because the address matches the one used in the H6. Anyway, I got the impression that Allwinner just uses registers wherever they find them, and that they don't care too much about logical grouping or compatibility. So taking a step back, I wonder if we should actually just define a CONFIG_SUNXI_CPU_SOFT_ENTRY (or so) *Kconfig* symbol, which holds that address, and let the per-SoC definition be solved in Kconfig instead. Because SUNXI_R_CPUCFG_BASE and also SUNXI_RTC_BASE seem to be just used as the base address for that purpose, with some magic offset added, across all of U-Boot (ARMv8 FEL and v7 PSCI). So can you try to work on that base? I will take care of armv8/fel_utils.S, which uses some post-increment assembly trick to keep the code small, which wouldn't work anymore. But I have an idea how to solve this. Cheers, Andre