linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Viresh Kumar <viresh.kumar@linaro.org>
Cc: Vincent Guittot <vincent.guittot@linaro.org>,
	Stephen Boyd <sboyd@codeaurora.org>,
	Rajendra Nayak <rnayak@codeaurora.org>,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, robdclark@gmail.com,
	s.hauer@pengutronix.de, l.stach@pengutronix.de,
	shawnguo@kernel.org, fabio.estevam@nxp.com, nm@ti.com,
	xuwei5@hisilicon.com, robh+dt@kernel.org
Subject: Re: [PATCH V4 08/12] boot_constraint: Manage deferrable constraints
Date: Wed, 13 Dec 2017 10:53:45 +0100	[thread overview]
Message-ID: <20171213095345.GJ13194@kroah.com> (raw)
In-Reply-To: <88c7a0a6421d267c118f501ea1e920b04649002d.1509284255.git.viresh.kumar@linaro.org>

On Sun, Oct 29, 2017 at 07:18:56PM +0530, Viresh Kumar wrote:
> It is possible that some of the resources aren't available at the time
> constraints are getting set and the boot constraints core will return
> -EPROBE_DEFER for them. In order to retry adding the constraints at a
> later point of time (after the resource is added and before any of its
> users come up), this patch proposes two things:
> 
> - Each constraint is represented by a virtual platform device, so that
>   it is re-probed again until the time all the dependencies aren't met.
>   The platform device is removed along with the constraint, with help of
>   the free_resources() callback.
> 
> - Enable early defer probing support by calling
>   driver_enable_deferred_probe(), so that the core retries probing
>   deferred devices every time any device is bound to a driver. This
>   makes sure that the constraint is set before any of the users of the
>   resources come up.
> 
> This is tested on ARM64 Hikey board where probe was deferred for a
> device.
> 
> Tested-by: Rajendra Nayak <rnayak@codeaurora.org>
> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
> ---
>  drivers/base/dd.c                         |  12 ++
>  drivers/boot_constraints/Makefile         |   2 +-
>  drivers/boot_constraints/deferrable_dev.c | 235 ++++++++++++++++++++++++++++++
>  include/linux/boot_constraint.h           |  14 ++
>  4 files changed, 262 insertions(+), 1 deletion(-)
>  create mode 100644 drivers/boot_constraints/deferrable_dev.c
> 
> diff --git a/drivers/base/dd.c b/drivers/base/dd.c
> index 4eec27fe2b2b..19eff5d08b9a 100644
> --- a/drivers/base/dd.c
> +++ b/drivers/base/dd.c
> @@ -228,6 +228,18 @@ void device_unblock_probing(void)
>  	driver_deferred_probe_trigger();
>  }
>  
> +/**
> + * driver_enable_deferred_probe() - Enable probing of deferred devices
> + *
> + * We don't want to get in the way when the bulk of drivers are getting probed
> + * and so deferred probe is disabled in the beginning. Enable it now because we
> + * need it.
> + */
> +void driver_enable_deferred_probe(void)
> +{
> +	driver_deferred_probe_enable = true;
> +}
> +
>  /**
>   * deferred_probe_initcall() - Enable probing of deferred devices
>   *
> diff --git a/drivers/boot_constraints/Makefile b/drivers/boot_constraints/Makefile
> index b7ade1a7afb5..a765094623a3 100644
> --- a/drivers/boot_constraints/Makefile
> +++ b/drivers/boot_constraints/Makefile
> @@ -1,3 +1,3 @@
>  # Makefile for device boot constraints
>  
> -obj-y := clk.o core.o pm.o supply.o
> +obj-y := clk.o deferrable_dev.o core.o pm.o supply.o
> diff --git a/drivers/boot_constraints/deferrable_dev.c b/drivers/boot_constraints/deferrable_dev.c
> new file mode 100644
> index 000000000000..04056f317aff
> --- /dev/null
> +++ b/drivers/boot_constraints/deferrable_dev.c
> @@ -0,0 +1,235 @@
> +/*
> + * Copyright (C) 2017 Linaro.
> + * Viresh Kumar <viresh.kumar@linaro.org>
> + *
> + * This file is released under the GPLv2.
> + */
> +
> +#define pr_fmt(fmt) "Boot Constraints: " fmt

Hey, you use this one!

But you shouldn't :)

> +/* This only creates platform devices for now */
> +static void add_deferrable_of_single(struct device_node *np,
> +				     struct dev_boot_constraint *constraints,
> +				     int count)
> +{
> +	struct device *dev;
> +	int ret;
> +
> +	if (!of_device_is_available(np))
> +		return;
> +
> +	ret = of_platform_bus_create(np, NULL, NULL, NULL, false);
> +	if (ret)
> +		return;
> +
> +	if (of_device_is_compatible(np, "arm,primecell")) {

Why is "arm,primecell" in the core code here?

> +		struct amba_device *adev = of_find_amba_device_by_node(np);
> +
> +		if (!adev) {
> +			pr_err("Failed to find amba dev: %s\n", np->full_name);

Never use pr_* when you have a valid struct device to use.  Don't you
have one from the struct device_node * passed in here?

> +			return;
> +		}
> +		dev = &adev->dev;
> +	} else {
> +		struct platform_device *pdev = of_find_device_by_node(np);
> +
> +		if (!pdev) {
> +			pr_err("Failed to find pdev: %s\n", np->full_name);

Same here.

thanks,

greg k-h

  parent reply	other threads:[~2017-12-13  9:53 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-29 13:48 [PATCH V4 00/12] drivers: Boot Constraints core Viresh Kumar
2017-10-29 13:48 ` [PATCH V4 01/12] of: platform: Add of_find_amba_device_by_node() Viresh Kumar
2017-10-29 13:48 ` [PATCH V4 02/12] of: platform: Make of_platform_bus_create() global Viresh Kumar
2017-10-29 13:48 ` [PATCH V4 03/12] drivers: Add boot constraints core Viresh Kumar
2017-12-13  9:42   ` Greg Kroah-Hartman
2017-12-13  9:59     ` Viresh Kumar
2017-12-13  9:42   ` Greg Kroah-Hartman
2017-12-13 10:00     ` Viresh Kumar
2017-10-29 13:48 ` [PATCH V4 04/12] boot_constraint: Add support for supply constraints Viresh Kumar
2017-12-13  9:48   ` Greg Kroah-Hartman
2017-10-29 13:48 ` [PATCH V4 05/12] boot_constraint: Add support for clk constraints Viresh Kumar
2017-12-13  9:48   ` Greg Kroah-Hartman
2017-10-29 13:48 ` [PATCH V4 06/12] boot_constraint: Add support for PM constraints Viresh Kumar
2017-12-13  9:48   ` Greg Kroah-Hartman
2017-10-29 13:48 ` [PATCH V4 07/12] boot_constraint: Add debugfs support Viresh Kumar
2017-10-29 15:09   ` Randy Dunlap
2017-10-30  3:37     ` Viresh Kumar
2017-10-30  3:43       ` Randy Dunlap
2017-12-13  9:50   ` Greg Kroah-Hartman
2017-10-29 13:48 ` [PATCH V4 08/12] boot_constraint: Manage deferrable constraints Viresh Kumar
2017-10-31 16:20   ` Rob Herring
2017-11-01  2:29     ` Viresh Kumar
2017-12-13  9:53   ` Greg Kroah-Hartman [this message]
2017-12-13 10:27     ` Viresh Kumar
2017-12-13 10:33       ` Russell King - ARM Linux
2017-12-13 14:39         ` Viresh Kumar
2017-10-29 13:48 ` [PATCH V4 09/12] boot_constraint: Add earlycon helper Viresh Kumar
2017-12-13  9:44   ` Greg Kroah-Hartman
2017-12-14  5:22     ` Viresh Kumar
2017-10-29 13:48 ` [PATCH V4 10/12] boot_constraint: Add support for Hisilicon platforms Viresh Kumar
2017-12-13  9:47   ` Greg Kroah-Hartman
2017-12-13 10:13     ` Viresh Kumar
2017-10-29 13:48 ` [PATCH V4 11/12] boot_constraint: Add support for IMX platform Viresh Kumar
2017-11-03  8:58   ` Sascha Hauer
2017-10-29 13:49 ` [PATCH V4 12/12] boot_constraint: Add Qualcomm display controller constraints Viresh Kumar
2017-10-30 22:07 ` [PATCH V4 00/12] drivers: Boot Constraints core Rob Herring
2017-10-31 10:01   ` Viresh Kumar
2017-11-28  4:18 ` Viresh Kumar
2017-12-13  9:55   ` Greg Kroah-Hartman
2017-12-13 10:27     ` Viresh Kumar

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=20171213095345.GJ13194@kroah.com \
    --to=gregkh@linuxfoundation.org \
    --cc=fabio.estevam@nxp.com \
    --cc=l.stach@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nm@ti.com \
    --cc=rnayak@codeaurora.org \
    --cc=robdclark@gmail.com \
    --cc=robh+dt@kernel.org \
    --cc=s.hauer@pengutronix.de \
    --cc=sboyd@codeaurora.org \
    --cc=shawnguo@kernel.org \
    --cc=vincent.guittot@linaro.org \
    --cc=viresh.kumar@linaro.org \
    --cc=xuwei5@hisilicon.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).