Messages in this thread Patch in this message | | | Subject | Re: [PATCH 1/2] thermal/drivers/core: Add init section table for self-encapsulation | From | Zhang Rui <> | Date | Thu, 27 Jun 2019 21:21:32 +0800 |
| |
On 一, 2019-06-24 at 09:32 +0200, Daniel Lezcano wrote: > Any chance this patch gets merged for v5.4? > > Thanks > -- Daniel >
have you run compile test for the patch? I got the following errors when compiling.
In file included from drivers/thermal/fair_share.c:16:0: drivers/thermal/thermal_core.h:23:3: error: expected identifier or ‘(’ before ‘static’ (static typeof(name) *__thermal_table_entry_##name \ ^ drivers/thermal/thermal_core.h:26:40: note: in expansion of macro ‘THERMAL_TABLE_ENTRY’ #define THERMAL_GOVERNOR_DECLARE(name) THERMAL_TABLE_ENTRY(governor, name) ^ drivers/thermal/fair_share.c:120:1: note: in expansion of macro ‘THERMAL_GOVERNOR_DECLARE’ THERMAL_GOVERNOR_DECLARE(thermal_gov_fair_share); ^ drivers/thermal/fair_share.c:116:32: warning: ‘thermal_gov_fair_share’ defined but not used [-Wunused-variable] static struct thermal_governor thermal_gov_fair_share = { ^ make[2]: *** [drivers/thermal/fair_share.o] Error 1 make[2]: *** Waiting for unfinished jobs.... In file included from drivers/thermal/gov_bang_bang.c:14:0: drivers/thermal/thermal_core.h:23:3: error: expected identifier or ‘(’ before ‘static’ (static typeof(name) *__thermal_table_entry_##name \ ^ drivers/thermal/thermal_core.h:26:40: note: in expansion of macro ‘THERMAL_TABLE_ENTRY’ #define THERMAL_GOVERNOR_DECLARE(name) THERMAL_TABLE_ENTRY(governor, name) ^ drivers/thermal/gov_bang_bang.c:119:1: note: in expansion of macro ‘THERMAL_GOVERNOR_DECLARE’ THERMAL_GOVERNOR_DECLARE(thermal_gov_bang_bang); ^ drivers/thermal/gov_bang_bang.c:115:32: warning: ‘thermal_gov_bang_bang’ defined but not used [-Wunused-variable] static struct thermal_governor thermal_gov_bang_bang = { ^ make[2]: *** [drivers/thermal/gov_bang_bang.o] Error 1 make[1]: *** [drivers/thermal] Error 2 make[1]: *** Waiting for unfinished jobs.... make: *** [drivers] Error 2
Fix the problem by removing the round brackets of THERMAL_TABLE_ENTRY(), and applied.
thanks, rui > On 12/06/2019 22:13, Daniel Lezcano wrote: > > > > Currently the governors are declared in their respective files but > > they > > export their [un]register functions which in turn call the > > [un]register > > governors core's functions. That implies a cyclic dependency which > > is > > not desirable. There is a way to self-encapsulate the governors by > > letting > > them to declare themselves in a __init section table. > > > > Define the table in the asm generic linker description like the > > other > > tables and provide the specific macros to deal with. > > > > Reviewed-by: Amit Kucheria <amit.kucheria@linaro.org> > > Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> > > --- > > drivers/thermal/thermal_core.h | 15 +++++++++++++++ > > include/asm-generic/vmlinux.lds.h | 11 +++++++++++ > > 2 files changed, 26 insertions(+) > > > > diff --git a/drivers/thermal/thermal_core.h > > b/drivers/thermal/thermal_core.h > > index 0df190ed82a7..be901e84aa65 100644 > > --- a/drivers/thermal/thermal_core.h > > +++ b/drivers/thermal/thermal_core.h > > @@ -15,6 +15,21 @@ > > /* Initial state of a cooling device during binding */ > > #define THERMAL_NO_TARGET -1UL > > > > +/* Init section thermal table */ > > +extern struct thermal_governor *__governor_thermal_table[]; > > +extern struct thermal_governor *__governor_thermal_table_end[]; > > + > > +#define THERMAL_TABLE_ENTRY(table, name) \ > > + (static typeof(name) *__thermal_table_entry_##name > > \ > > + __used __section(__##table##_thermal_table) = &name) > > + > > +#define THERMAL_GOVERNOR_DECLARE(name) THERMAL_TABLE_ENTRY( > > governor, name) > > + > > +#define for_each_governor_table(__governor) \ > > + for (__governor = __governor_thermal_table; \ > > + __governor < __governor_thermal_table_end; \ > > + __governor++) > > + > > /* > > * This structure is used to describe the behavior of > > * a certain cooling device on a certain trip point > > diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm- > > generic/vmlinux.lds.h > > index f8f6f04c4453..8312fdc2b2fa 100644 > > --- a/include/asm-generic/vmlinux.lds.h > > +++ b/include/asm-generic/vmlinux.lds.h > > @@ -239,6 +239,16 @@ > > #define ACPI_PROBE_TABLE(name) > > #endif > > > > +#ifdef CONFIG_THERMAL > > +#define THERMAL_TABLE(name) > > \ > > + . = ALIGN(8); > > \ > > + __##name##_thermal_table = .; > > \ > > + KEEP(*(__##name##_thermal_table)) > > \ > > + __##name##_thermal_table_end = .; > > +#else > > +#define THERMAL_TABLE(name) > > +#endif > > + > > #define KERNEL_DTB() > > \ > > STRUCT_ALIGN(); > > \ > > __dtb_start = .; > > \ > > @@ -609,6 +619,7 @@ > > IRQCHIP_OF_MATCH_TABLE() > > \ > > ACPI_PROBE_TABLE(irqchip) > > \ > > ACPI_PROBE_TABLE(timer) > > \ > > + THERMAL_TABLE(governor) > > \ > > EARLYCON_TABLE() > > \ > > LSM_TABLE() > > > > >
| |