On Sat, 18 Dec 2021 at 14:00, Daniel Lezcano <daniel.lezcano@xxxxxxxxxx> wrote: > > The dtpm table is used to let the different dtpm backends to register > their setup callbacks in a single place and preventing to export > multiple functions all around the kernel. That allows the dtpm code to > be self-encapsulated. Well, that's not entirely true. The dtpm code and its backends (or ops, whatever we call them) are already maintained from a single place, the /drivers/powercap/* directory. I assume we intend to keep it like this going forward too, right? That is also what patch4 with the devfreq backend continues to conform to. > > The dtpm hierarchy will be passed as a parameter by a platform > specific code and that will lead to the creation of the different dtpm > nodes. > > The function creating the hierarchy could be called from a module at > init time or when it is loaded. However, at this moment the table is > already freed as it belongs to the init section and the creation will > lead to a invalid memory access. > > Fix this by moving the table to the data section. With the above said, I find it a bit odd to put a table in the data section like this. Especially, since the only remaining argument for why, is to avoid exporting functions, which isn't needed anyway. I mean, it would be silly if we should continue to put subsystem specific tables in here, to just let them contain a set of subsystem specific callbacks. > > Signed-off-by: Daniel Lezcano <daniel.lezcano@xxxxxxxxxx> Kind regards Uffe > --- > include/asm-generic/vmlinux.lds.h | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h > index 42f3866bca69..50d494d94d6c 100644 > --- a/include/asm-generic/vmlinux.lds.h > +++ b/include/asm-generic/vmlinux.lds.h > @@ -362,7 +362,8 @@ > BRANCH_PROFILE() \ > TRACE_PRINTKS() \ > BPF_RAW_TP() \ > - TRACEPOINT_STR() > + TRACEPOINT_STR() \ > + DTPM_TABLE() > > /* > * Data section helpers > @@ -723,7 +724,6 @@ > ACPI_PROBE_TABLE(irqchip) \ > ACPI_PROBE_TABLE(timer) \ > THERMAL_TABLE(governor) \ > - DTPM_TABLE() \ > EARLYCON_TABLE() \ > LSM_TABLE() \ > EARLY_LSM_TABLE() \ > -- > 2.25.1 >