Hi Paul, On Sun, 2026-06-14 at 23:06 +0200, Paul Kocialkowski wrote: > > > But another thing we do overwrite current is the cpu idle states, which > > > are added by fdt_add_cpu_idle_states in tf-a. These are only set when the > > > SCP firmware is available (which is checked at run-time) and they are > > > never propagated to the final device-tree. Including the definitions > > > statically would result in cpu idle calls done even without the SCP > > > firmware, which would probably fail (although maybe some states can > > > still be supported). > > > > Do you refer to some unmerged code? Didn't find it in the current TF-A > > sources... > > fdt_add_cpu_idle_states is in common/fdt_fixup.c and it is called by the > common allwinner code in plat/allwinner/common/sunxi_prepare_dtb.c based > on the sunxi_psci_is_scpi check (which currently always returns false > for A133).
sorry, I misunderstood you initially, I though there are some data structures of the SCP firmware which are being overwritten by Linux, but it turns out, you refer to idle-states node and compatible = "arm,idle-state" subnodes... But contrary to /reserved-memory nodes for TF-A, these are fixed for a SoC model, even if you'd like to load SCP firmware at a different address, right? It looks to me that all other machines/SoCs do define this stuff statically in the Linux DT. I have a feeling, that idle-states node is more like a "contract" or an API between FW and Linux and is supposed to change less frequently, while loading TF-A to a completely different address would be transparent to Linux, as long as we properly copy /reserved-memory nodes. -- Alexander Sverdlin.

