From: Zhang Rui <rui.zhang@intel.com>
To: Daniel Lezcano <daniel.lezcano@linaro.org>
Cc: linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org,
amit.kucheria@linaro.org
Subject: Re: [PATCH 1/2] thermal/drivers/core: Add init section table for self-encapsulation
Date: Thu, 27 Jun 2019 21:21:32 +0800 [thread overview]
Message-ID: <1561641692.2096.3.camel@intel.com> (raw)
In-Reply-To: <b6bbd5f4-a86a-d649-e3c0-2156f7975291@linaro.org>
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()
> >
> >
>
next prev parent reply other threads:[~2019-06-27 13:21 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-12 20:13 [PATCH 1/2] thermal/drivers/core: Add init section table for self-encapsulation Daniel Lezcano
2019-06-12 20:13 ` [PATCH 2/2] thermal/drivers/core: Use governor table to initialize Daniel Lezcano
2019-06-24 7:32 ` [PATCH 1/2] thermal/drivers/core: Add init section table for self-encapsulation Daniel Lezcano
2019-06-27 13:21 ` Zhang Rui [this message]
2019-06-27 13:31 ` Daniel Lezcano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1561641692.2096.3.camel@intel.com \
--to=rui.zhang@intel.com \
--cc=amit.kucheria@linaro.org \
--cc=daniel.lezcano@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.