All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peng Fan <peng.fan@nxp.com>
To: Aisheng Dong <aisheng.dong@nxp.com>,
	"shawnguo@kernel.org" <shawnguo@kernel.org>,
	"s.hauer@pengutronix.de" <s.hauer@pengutronix.de>,
	"kernel@pengutronix.de" <kernel@pengutronix.de>,
	"festevam@gmail.com" <festevam@gmail.com>,
	dl-linux-imx <linux-imx@nxp.com>,
	Anson Huang <anson.huang@nxp.com>,
	"arnd@arndb.de" <arnd@arndb.de>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Cc: "van.freenix@gmail.com" <van.freenix@gmail.com>
Subject: RE: [PATCH 1/2] ARM: imx: drop uneccessary of_platform_default_populate
Date: Fri, 15 Mar 2019 12:56:06 +0000	[thread overview]
Message-ID: <AM0PR04MB4481232D83340F894644673C88440@AM0PR04MB4481.eurprd04.prod.outlook.com> (raw)
In-Reply-To: <AM0PR04MB4211DC74D7E72F886A4333D680440@AM0PR04MB4211.eurprd04.prod.outlook.com>

Hi Aisheng,

> -----Original Message-----
> From: Aisheng Dong
> Sent: 2019年3月15日 18:17
> To: Peng Fan <peng.fan@nxp.com>; shawnguo@kernel.org;
> s.hauer@pengutronix.de; kernel@pengutronix.de; festevam@gmail.com;
> dl-linux-imx <linux-imx@nxp.com>; Anson Huang <anson.huang@nxp.com>;
> arnd@arndb.de; linux-arm-kernel@lists.infradead.org;
> linux-kernel@vger.kernel.org
> Cc: van.freenix@gmail.com
> Subject: RE: [PATCH 1/2] ARM: imx: drop uneccessary
> of_platform_default_populate
> 
> > From: Peng Fan
> >
> > "arch_initcall_sync(of_platform_default_populate_init);" could be used
> > to populate the device tree, there is no need to call
> > of_platform_default_populate in machine code.
> >
> > Tested on i.MX6Q-SDB i.MX6SL-EVK i.MX6UL-EVK board.
> >
> > Signed-off-by: Peng Fan <peng.fan@nxp.com>
> > ---
> >  arch/arm/mach-imx/mach-imx6q.c  | 2 --
> > arch/arm/mach-imx/mach-imx6sl.c | 2 --
> > arch/arm/mach-imx/mach-imx6sx.c | 2 --
> > arch/arm/mach-imx/mach-imx6ul.c | 1 -
> >  4 files changed, 7 deletions(-)
> >
> > diff --git a/arch/arm/mach-imx/mach-imx6q.c
> > b/arch/arm/mach-imx/mach-imx6q.c index 7d80a0ae723c..655398c20256
> > 100644
> > --- a/arch/arm/mach-imx/mach-imx6q.c
> > +++ b/arch/arm/mach-imx/mach-imx6q.c
> > @@ -278,8 +278,6 @@ static void __init imx6q_init_machine(void)
> >
> >  	imx6q_enet_phy_init();
> >
> > -	of_platform_default_populate(NULL, NULL, parent);
> > -
> 
> This slightly change the device register sequence as well as possible driver
> probe sequence as a consequence.

This patch is inspired from patch:

commit 850bea2335e42780a0752a75860d3fbcc3d12d6e
Author: Kefeng Wang <wangkefeng.wang@huawei.com>
Date:   Wed Jun 1 14:52:56 2016 +0800

    arm: Remove unnecessary of_platform_populate with default match table

    After patch "of/platform: Add common method to populate default bus",
    it is possible for arch code to remove unnecessary callers of
    of_platform_populate with default match table.

> 
> Originally devices are registered in arch_initcall. Now it will be a bit later in
> arch_initcall_sync and this may cause a bit risk if the code under the
> default_populate want to access the device service provided by early probe.
> 
> Probably it's more safe to leave as it is unless you can double confirm there're
> no such code depends on accessing early probed devices as follows before we
> can make the change.

This has been boot tested on 6Q-SDB/6UL-EVK/6SL-EVK board.
For i.MX, I only see pinctrl driver use arch_initcall from the link,
https://elixir.bootlin.com/linux/latest/ident/arch_initcall

From my boot test, the pinctrl driver probe will be delayed a bit, but I do
not see issues.

The common code is introduced by this patch, one thing need to consider
is the of_iommu_init and swiotlb_late_init on aarch64. My patch
is only for i.MX6/7, so I think there is no such issue.
commit 44a7185c2ae6383c88ff5b1ef2e2969f35d7b8b7
Author: Kefeng Wang <wangkefeng.wang@huawei.com>
Date:   Wed Jun 1 14:52:54 2016 +0800

    of/platform: Add common method to populate default bus

    The arch code calls of_platform_populate() with default match table
    when it wants to populate default bus.

    This patch introduce a new of_platform_default_populate_init() and make it
    arch_initcall_sync(it should be later than some iommu configration, eg,
    of_iommu_init() and swiotlb_late_init in arm64), then we can finish above
    job in common method.

    In order to avoid the default bus being populated twice, simply checking
    the flag of bus node whether has be set OF_POPULATED_BUS or not.

    After that, we can safely remove the caller in arch code.

    Btw, add debug print in of_platform_populate(), and use __func__ to
    print function's name of of_platform_bus_create().


Thanks,
Peng.

> 
> >  	imx_anatop_init();
> >  	cpu_is_imx6q() ?  imx6q_pm_init() : imx6dl_pm_init();
> >  	imx6q_1588_init();
> 
> Regards
> Dong Aisheng
> 
> > diff --git a/arch/arm/mach-imx/mach-imx6sl.c
> > b/arch/arm/mach-imx/mach-imx6sl.c index 99be4225297a..9743bdbb68fa
> > 100644
> > --- a/arch/arm/mach-imx/mach-imx6sl.c
> > +++ b/arch/arm/mach-imx/mach-imx6sl.c
> > @@ -56,8 +56,6 @@ static void __init imx6sl_init_machine(void)
> >  	if (parent == NULL)
> >  		pr_warn("failed to initialize soc device\n");
> >
> > -	of_platform_default_populate(NULL, NULL, parent);
> > -
> >  	if (cpu_is_imx6sl())
> >  		imx6sl_fec_init();
> >  	imx_anatop_init();
> > diff --git a/arch/arm/mach-imx/mach-imx6sx.c
> > b/arch/arm/mach-imx/mach-imx6sx.c index 7f52d9b1e8a4..19b9f2dd309e
> > 100644
> > --- a/arch/arm/mach-imx/mach-imx6sx.c
> > +++ b/arch/arm/mach-imx/mach-imx6sx.c
> > @@ -72,8 +72,6 @@ static void __init imx6sx_init_machine(void)
> >  	if (parent == NULL)
> >  		pr_warn("failed to initialize soc device\n");
> >
> > -	of_platform_default_populate(NULL, NULL, parent);
> > -
> >  	imx6sx_enet_init();
> >  	imx_anatop_init();
> >  	imx6sx_pm_init();
> > diff --git a/arch/arm/mach-imx/mach-imx6ul.c
> > b/arch/arm/mach-imx/mach-imx6ul.c index 6cb8a22b617d..c57b9df791b1
> > 100644
> > --- a/arch/arm/mach-imx/mach-imx6ul.c
> > +++ b/arch/arm/mach-imx/mach-imx6ul.c
> > @@ -65,7 +65,6 @@ static void __init imx6ul_init_machine(void)
> >  	if (parent == NULL)
> >  		pr_warn("failed to initialize soc device\n");
> >
> > -	of_platform_default_populate(NULL, NULL, parent);
> >  	imx6ul_enet_init();
> >  	imx_anatop_init();
> >  	imx6ul_pm_init();
> > --
> > 2.16.4


WARNING: multiple messages have this Message-ID (diff)
From: Peng Fan <peng.fan@nxp.com>
To: Aisheng Dong <aisheng.dong@nxp.com>,
	"shawnguo@kernel.org" <shawnguo@kernel.org>,
	"s.hauer@pengutronix.de" <s.hauer@pengutronix.de>,
	"kernel@pengutronix.de" <kernel@pengutronix.de>,
	"festevam@gmail.com" <festevam@gmail.com>,
	dl-linux-imx <linux-imx@nxp.com>,
	Anson Huang <anson.huang@nxp.com>,
	"arnd@arndb.de" <arnd@arndb.de>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Cc: "van.freenix@gmail.com" <van.freenix@gmail.com>
Subject: RE: [PATCH 1/2] ARM: imx: drop uneccessary of_platform_default_populate
Date: Fri, 15 Mar 2019 12:56:06 +0000	[thread overview]
Message-ID: <AM0PR04MB4481232D83340F894644673C88440@AM0PR04MB4481.eurprd04.prod.outlook.com> (raw)
In-Reply-To: <AM0PR04MB4211DC74D7E72F886A4333D680440@AM0PR04MB4211.eurprd04.prod.outlook.com>

Hi Aisheng,

> -----Original Message-----
> From: Aisheng Dong
> Sent: 2019年3月15日 18:17
> To: Peng Fan <peng.fan@nxp.com>; shawnguo@kernel.org;
> s.hauer@pengutronix.de; kernel@pengutronix.de; festevam@gmail.com;
> dl-linux-imx <linux-imx@nxp.com>; Anson Huang <anson.huang@nxp.com>;
> arnd@arndb.de; linux-arm-kernel@lists.infradead.org;
> linux-kernel@vger.kernel.org
> Cc: van.freenix@gmail.com
> Subject: RE: [PATCH 1/2] ARM: imx: drop uneccessary
> of_platform_default_populate
> 
> > From: Peng Fan
> >
> > "arch_initcall_sync(of_platform_default_populate_init);" could be used
> > to populate the device tree, there is no need to call
> > of_platform_default_populate in machine code.
> >
> > Tested on i.MX6Q-SDB i.MX6SL-EVK i.MX6UL-EVK board.
> >
> > Signed-off-by: Peng Fan <peng.fan@nxp.com>
> > ---
> >  arch/arm/mach-imx/mach-imx6q.c  | 2 --
> > arch/arm/mach-imx/mach-imx6sl.c | 2 --
> > arch/arm/mach-imx/mach-imx6sx.c | 2 --
> > arch/arm/mach-imx/mach-imx6ul.c | 1 -
> >  4 files changed, 7 deletions(-)
> >
> > diff --git a/arch/arm/mach-imx/mach-imx6q.c
> > b/arch/arm/mach-imx/mach-imx6q.c index 7d80a0ae723c..655398c20256
> > 100644
> > --- a/arch/arm/mach-imx/mach-imx6q.c
> > +++ b/arch/arm/mach-imx/mach-imx6q.c
> > @@ -278,8 +278,6 @@ static void __init imx6q_init_machine(void)
> >
> >  	imx6q_enet_phy_init();
> >
> > -	of_platform_default_populate(NULL, NULL, parent);
> > -
> 
> This slightly change the device register sequence as well as possible driver
> probe sequence as a consequence.

This patch is inspired from patch:

commit 850bea2335e42780a0752a75860d3fbcc3d12d6e
Author: Kefeng Wang <wangkefeng.wang@huawei.com>
Date:   Wed Jun 1 14:52:56 2016 +0800

    arm: Remove unnecessary of_platform_populate with default match table

    After patch "of/platform: Add common method to populate default bus",
    it is possible for arch code to remove unnecessary callers of
    of_platform_populate with default match table.

> 
> Originally devices are registered in arch_initcall. Now it will be a bit later in
> arch_initcall_sync and this may cause a bit risk if the code under the
> default_populate want to access the device service provided by early probe.
> 
> Probably it's more safe to leave as it is unless you can double confirm there're
> no such code depends on accessing early probed devices as follows before we
> can make the change.

This has been boot tested on 6Q-SDB/6UL-EVK/6SL-EVK board.
For i.MX, I only see pinctrl driver use arch_initcall from the link,
https://elixir.bootlin.com/linux/latest/ident/arch_initcall

From my boot test, the pinctrl driver probe will be delayed a bit, but I do
not see issues.

The common code is introduced by this patch, one thing need to consider
is the of_iommu_init and swiotlb_late_init on aarch64. My patch
is only for i.MX6/7, so I think there is no such issue.
commit 44a7185c2ae6383c88ff5b1ef2e2969f35d7b8b7
Author: Kefeng Wang <wangkefeng.wang@huawei.com>
Date:   Wed Jun 1 14:52:54 2016 +0800

    of/platform: Add common method to populate default bus

    The arch code calls of_platform_populate() with default match table
    when it wants to populate default bus.

    This patch introduce a new of_platform_default_populate_init() and make it
    arch_initcall_sync(it should be later than some iommu configration, eg,
    of_iommu_init() and swiotlb_late_init in arm64), then we can finish above
    job in common method.

    In order to avoid the default bus being populated twice, simply checking
    the flag of bus node whether has be set OF_POPULATED_BUS or not.

    After that, we can safely remove the caller in arch code.

    Btw, add debug print in of_platform_populate(), and use __func__ to
    print function's name of of_platform_bus_create().


Thanks,
Peng.

> 
> >  	imx_anatop_init();
> >  	cpu_is_imx6q() ?  imx6q_pm_init() : imx6dl_pm_init();
> >  	imx6q_1588_init();
> 
> Regards
> Dong Aisheng
> 
> > diff --git a/arch/arm/mach-imx/mach-imx6sl.c
> > b/arch/arm/mach-imx/mach-imx6sl.c index 99be4225297a..9743bdbb68fa
> > 100644
> > --- a/arch/arm/mach-imx/mach-imx6sl.c
> > +++ b/arch/arm/mach-imx/mach-imx6sl.c
> > @@ -56,8 +56,6 @@ static void __init imx6sl_init_machine(void)
> >  	if (parent == NULL)
> >  		pr_warn("failed to initialize soc device\n");
> >
> > -	of_platform_default_populate(NULL, NULL, parent);
> > -
> >  	if (cpu_is_imx6sl())
> >  		imx6sl_fec_init();
> >  	imx_anatop_init();
> > diff --git a/arch/arm/mach-imx/mach-imx6sx.c
> > b/arch/arm/mach-imx/mach-imx6sx.c index 7f52d9b1e8a4..19b9f2dd309e
> > 100644
> > --- a/arch/arm/mach-imx/mach-imx6sx.c
> > +++ b/arch/arm/mach-imx/mach-imx6sx.c
> > @@ -72,8 +72,6 @@ static void __init imx6sx_init_machine(void)
> >  	if (parent == NULL)
> >  		pr_warn("failed to initialize soc device\n");
> >
> > -	of_platform_default_populate(NULL, NULL, parent);
> > -
> >  	imx6sx_enet_init();
> >  	imx_anatop_init();
> >  	imx6sx_pm_init();
> > diff --git a/arch/arm/mach-imx/mach-imx6ul.c
> > b/arch/arm/mach-imx/mach-imx6ul.c index 6cb8a22b617d..c57b9df791b1
> > 100644
> > --- a/arch/arm/mach-imx/mach-imx6ul.c
> > +++ b/arch/arm/mach-imx/mach-imx6ul.c
> > @@ -65,7 +65,6 @@ static void __init imx6ul_init_machine(void)
> >  	if (parent == NULL)
> >  		pr_warn("failed to initialize soc device\n");
> >
> > -	of_platform_default_populate(NULL, NULL, parent);
> >  	imx6ul_enet_init();
> >  	imx_anatop_init();
> >  	imx6ul_pm_init();
> > --
> > 2.16.4

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2019-03-15 12:56 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-13  9:05 [PATCH 1/2] ARM: imx: drop uneccessary of_platform_default_populate Peng Fan
2019-03-13  9:05 ` Peng Fan
2019-03-13  9:05 ` [PATCH 2/2] ARM: imx: mach-imx7ulp: warn when imx_soc_device_init fail Peng Fan
2019-03-13  9:05   ` Peng Fan
2019-03-15 10:22   ` Aisheng Dong
2019-03-15 10:22     ` Aisheng Dong
2019-03-15 12:58     ` Peng Fan
2019-03-15 12:58       ` Peng Fan
2019-03-15 13:40       ` Aisheng Dong
2019-03-15 13:40         ` Aisheng Dong
2019-03-19 12:28         ` Peng Fan
2019-03-19 12:28           ` Peng Fan
2019-03-20  4:57           ` Aisheng Dong
2019-03-20  4:57             ` Aisheng Dong
2019-03-15 10:16 ` [PATCH 1/2] ARM: imx: drop uneccessary of_platform_default_populate Aisheng Dong
2019-03-15 10:16   ` Aisheng Dong
2019-03-15 12:56   ` Peng Fan [this message]
2019-03-15 12:56     ` Peng Fan
2019-03-15 13:38     ` Aisheng Dong
2019-03-15 13:38       ` Aisheng Dong
2019-03-18  2:31       ` Peng Fan
2019-03-18  2:31         ` Peng Fan
2019-03-21  9:15         ` Shawn Guo
2019-03-21  9:15           ` Shawn Guo
2019-03-21  9:10 ` Shawn Guo
2019-03-21  9:10   ` Shawn Guo

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=AM0PR04MB4481232D83340F894644673C88440@AM0PR04MB4481.eurprd04.prod.outlook.com \
    --to=peng.fan@nxp.com \
    --cc=aisheng.dong@nxp.com \
    --cc=anson.huang@nxp.com \
    --cc=arnd@arndb.de \
    --cc=festevam@gmail.com \
    --cc=kernel@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-imx@nxp.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=s.hauer@pengutronix.de \
    --cc=shawnguo@kernel.org \
    --cc=van.freenix@gmail.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
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.