Linux-Clk Archive on lore.kernel.org
 help / color / Atom feed
From: Anson Huang <anson.huang@nxp.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: Russell King - ARM Linux <linux@armlinux.org.uk>,
	Shawn Guo <shawnguo@kernel.org>,
	Sascha Hauer <s.hauer@pengutronix.de>,
	Sascha Hauer <kernel@pengutronix.de>,
	Fabio Estevam <festevam@gmail.com>,
	Michael Turquette <mturquette@baylibre.com>,
	Stephen Boyd <sboyd@kernel.org>,
	"oleksandr.suvorov@toradex.com" <oleksandr.suvorov@toradex.com>,
	Stefan Agner <stefan.agner@toradex.com>,
	Peng Fan <peng.fan@nxp.com>, Abel Vesa <abel.vesa@nxp.com>,
	Aisheng Dong <aisheng.dong@nxp.com>,
	Andy Duan <fugang.duan@nxp.com>,
	Daniel Baluta <daniel.baluta@nxp.com>,
	YueHaibing <yuehaibing@huawei.com>,
	Stephen Rothwell <sfr@canb.auug.org.au>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Linux ARM <linux-arm-kernel@lists.infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	linux-clk <linux-clk@vger.kernel.org>,
	dl-linux-imx <linux-imx@nxp.com>
Subject: RE: [PATCH V3 02/10] init.h: Fix the __setup_param() macro for module build
Date: Wed, 1 Jul 2020 09:27:07 +0000
Message-ID: <DB3PR0402MB3916F746C792CB2BC876715BF56C0@DB3PR0402MB3916.eurprd04.prod.outlook.com> (raw)
In-Reply-To: <CAK8P3a3FueW3JSLO4RV4WV3C-UP_5y5UA1WGs+gaQGaPaafaUA@mail.gmail.com>

Hi, Arnd


> Subject: Re: [PATCH V3 02/10] init.h: Fix the __setup_param() macro for
> module build
> 
> On Wed, Jul 1, 2020 at 7:14 AM Anson Huang <anson.huang@nxp.com>
> wrote:
> > > Subject: Re: [PATCH V3 02/10] init.h: Fix the __setup_param() macro
> > > for module build On Mon, Jun 29, 2020 at 1:40 PM Anson Huang
> > > <anson.huang@nxp.com>
> > > wrote:
> > > > It makes sense to drop the __setup() and __serup_param() in the
> > > > #else block, just use one definition for all cases, if no one
> > > > objects, I will remove
> > > them in next patch series.
> > >
> > > Ok, sounds good. Note that there may be users of the plain __setup()
> > > that just get turned into nops right now. Usually those are already
> > > enclosed in "#ifndef MODULE", but if they are not, then removing the
> > > definition would cause a build error.
> > >
> > > Have a look if you can find such instances, and either change the
> > > patch to add the missing "#ifndef MODULE" checks, or just drop the
> > > __setup_param() and leave the __setup() if it gets too complicated.
> >
> > Looks like the __setup_param() defined in "#ifndef MODULE" can NOT be
> > used for MODULE build at all, so sharing same implementation is NOT
> > available, so if it is NOT that critical, I plan to keep the #else
> > block in this patch, let me know if you have further concern or any
> > other suggestion, below is the build error reported for module build
> > using
> > __setup_param() implementation for built in.
> 
> I don't understand what your plan is here. Do you mean you will leave that
> part of the clk driver as built-in?

I meant I will leave the #else block of __setup_param() defined as nothing as below to
make module build passed.

#define __setup_param(str, unique_id, fn, early)        /* nothing */

> 
> > In file included from ./arch/arm64/include/asm/alternative.h:12,
> >                  from ./arch/arm64/include/asm/lse.h:15,
> >                  from ./arch/arm64/include/asm/cmpxchg.h:14,
> >                  from ./arch/arm64/include/asm/atomic.h:16,
> >                  from ./include/linux/atomic.h:7,
> >                  from ./include/asm-generic/bitops/atomic.h:5,
> >                  from ./arch/arm64/include/asm/bitops.h:26,
> >                  from ./include/linux/bitops.h:29,
> >                  from ./include/linux/kernel.h:12,
> >                  from ./include/linux/clk.h:13,
> >                  from drivers/clk/imx/clk.c:2:
> > ./include/linux/init.h:177:16: error: variable
> ‘__setup_imx_keep_uart_earlycon’ has initializer but incomplete type
> >   177 |  static struct obs_kernel_param __setup_##unique_id  \
> >       |                ^~~~~~~~~~~~~~~~
> > drivers/clk/imx/clk.c:157:1: note: in expansion of macro ‘__setup_param’
> >   157 | __setup_param("earlycon", imx_keep_uart_earlycon,
> >       | ^~~~~~~~~~~~~
> > ./include/linux/init.h:180:7: warning: excess elements in struct initializer
> >   180 |   = { __setup_str_##unique_id, fn, early }
> >       |       ^~~~~~~~~~~~
> > drivers/clk/imx/clk.c:157:1: note: in expansion of macro ‘__setup_param’
> >   157 | __setup_param("earlycon", imx_keep_uart_earlycon,
> >       | ^~~~~~~~~~~~~
> > ./include/linux/init.h:180:7: note: (near initialization for
> > ‘__setup_imx_keep_uart_earlycon’)
> 
> This error just means you can't have a __setup_param() call in a loadable
> module, which we already knew. If you need to do something with the clocks
> early on, that has to be in built-in code and cannot be in a module. If you don't
> need that code, then you should just remove it from both the modular version
> and the built-in version.
> 
> What is the purpose of that __setup_param() argument parsing in the clock
> driver?
> 

We need the code for proper uart clock management of earlycon, from the code, it
is trying to keep console uart clock enabled during kernel boot up. 

Thanks,
Anson

  reply index

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-29  5:53 [PATCH V3 00/10] Support building i.MX8 SoCs clock driver as module Anson Huang
2020-06-29  5:53 ` [PATCH V3 01/10] clk: composite: Export clk_hw_register_composite() Anson Huang
2020-06-29  5:53 ` [PATCH V3 02/10] init.h: Fix the __setup_param() macro for module build Anson Huang
2020-06-29 11:33   ` Arnd Bergmann
2020-06-29 11:40     ` Anson Huang
2020-06-29 11:58       ` Arnd Bergmann
2020-07-01  5:14         ` Anson Huang
2020-07-01  8:37           ` Arnd Bergmann
2020-07-01  9:27             ` Anson Huang [this message]
2020-07-01  9:53               ` Arnd Bergmann
2020-07-01 10:02                 ` Anson Huang
2020-07-01 10:13                   ` Arnd Bergmann
2020-07-01 10:20                     ` Anson Huang
2020-06-29  5:53 ` [PATCH V3 03/10] ARM: imx: Select MXC_CLK for each SoC Anson Huang
2020-06-29  7:27   ` Aisheng Dong
2020-06-29  8:21     ` Anson Huang
2020-06-29  5:53 ` [PATCH V3 04/10] clk: imx: Support building SCU clock driver as module Anson Huang
2020-06-29 11:37   ` Arnd Bergmann
2020-06-29 12:53     ` Anson Huang
2020-06-29 13:20       ` Arnd Bergmann
2020-06-29 14:52         ` Anson Huang
2020-06-29 15:08           ` Arnd Bergmann
2020-06-29 15:19             ` Anson Huang
2020-06-30  3:55               ` Dong Aisheng
2020-07-01  7:19                 ` Anson Huang
2020-07-01  8:46                   ` Arnd Bergmann
2020-07-01  9:28                     ` Anson Huang
2020-07-01  9:40                       ` Anson Huang
2020-07-01  9:54                         ` Arnd Bergmann
2020-06-30  3:36         ` Dong Aisheng
2020-06-29  5:53 ` [PATCH V3 05/10] clk: imx: Support building i.MX common " Anson Huang
2020-06-29  5:53 ` [PATCH V3 06/10] clk: imx8mm: Support module build Anson Huang
2020-06-29  5:53 ` [PATCH V3 07/10] clk: imx8mn: " Anson Huang
2020-06-29  5:54 ` [PATCH V3 08/10] clk: imx8mp: " Anson Huang
2020-06-29  5:54 ` [PATCH V3 09/10] clk: imx8mq: " Anson Huang
2020-06-29  5:54 ` [PATCH V3 10/10] clk: imx8qxp: " Anson Huang
2020-06-29 11:40   ` Arnd Bergmann
2020-06-29 11:43     ` Anson Huang
2020-06-29 11:58       ` Arnd Bergmann

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=DB3PR0402MB3916F746C792CB2BC876715BF56C0@DB3PR0402MB3916.eurprd04.prod.outlook.com \
    --to=anson.huang@nxp.com \
    --cc=abel.vesa@nxp.com \
    --cc=aisheng.dong@nxp.com \
    --cc=arnd@arndb.de \
    --cc=daniel.baluta@nxp.com \
    --cc=festevam@gmail.com \
    --cc=fugang.duan@nxp.com \
    --cc=kernel@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-imx@nxp.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=mturquette@baylibre.com \
    --cc=oleksandr.suvorov@toradex.com \
    --cc=peng.fan@nxp.com \
    --cc=s.hauer@pengutronix.de \
    --cc=sboyd@kernel.org \
    --cc=sfr@canb.auug.org.au \
    --cc=shawnguo@kernel.org \
    --cc=stefan.agner@toradex.com \
    --cc=viro@zeniv.linux.org.uk \
    --cc=yuehaibing@huawei.com \
    /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

Linux-Clk Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-clk/0 linux-clk/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-clk linux-clk/ https://lore.kernel.org/linux-clk \
		linux-clk@vger.kernel.org
	public-inbox-index linux-clk

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-clk


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git