All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Turquette <mturquette@linaro.org>
To: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Cc: linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, shawn.guo@freescale.com
Subject: Re: [PATCH v10 2/9] clk: Move all drivers to use internal API
Date: Tue, 09 Sep 2014 12:25:03 -0700	[thread overview]
Message-ID: <20140909192503.19023.33476@quantum> (raw)
In-Reply-To: <20140909191205.19023.61366@quantum>

Quoting Mike Turquette (2014-09-09 12:12:05)
> Quoting Tomeu Vizoso (2014-09-09 07:04:57)
> > In preparation to change the public API to return a per-user clk structure,
> > remove any usage of this public API from the clock implementations.
> > 
> > The reason for having this in a separate commit from the one that introduces
> > the implementation of the new functions is to separate the changes generated
> > with Coccinelle from the rest, and keep the patches' size reasonable.
> > 
> > Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
> > Tested-by: Boris Brezillon <boris.brezillon@free-electrons.com>
> > Tested-by: Heiko Stuebner <heiko@sntech.de>
> > Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com>
> > 
> > ---
> > 
> > v10: * Add a few more files to be converted
> >      * Re-generate the patch on top of the latest changes
> 
> Hi Tomeu,
> 
> Generating this on top of linux-next is a no-go. I can't apply it to my
> tree. The best thing is to generate it on top of -rc4, and that is what
> I will merge.
> 
> Running the script against linux-next is still very useful and lets us
> patch up the stuff that is not going through the clk tree. E.g. the LPSS
> driver is already in mainline, so just running the semantic patch
> against -rc4 is sufficient for it. However a patch like Shawn's "ARM:
> imx: add an exclusive gate clock type" came in through the i.MX tree and
> we'll need to patch it after the fact.
> 
> The best way to do that is for me to host a branch with just your
> changes in it that everyone can pull in as a dependency with the same
> commit ids.
> 
> <snip>
> 
> > diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c
> > index bcbdbd2..f4c6ccf 100644
> > --- a/drivers/acpi/acpi_lpss.c
> > +++ b/drivers/acpi/acpi_lpss.c
> > @@ -11,7 +11,6 @@
> >   */
> >  
> >  #include <linux/acpi.h>
> > -#include <linux/clk.h>
> >  #include <linux/clkdev.h>
> >  #include <linux/clk-provider.h>
> >  #include <linux/err.h>
> > @@ -78,7 +77,7 @@ struct lpss_private_data {
> >         void __iomem *mmio_base;
> >         resource_size_t mmio_size;
> >         unsigned int fixed_clk_rate;
> > -       struct clk *clk;
> > +       struct clk_core *clk;
> >         const struct lpss_device_desc *dev_desc;
> >         u32 prv_reg_ctx[LPSS_PRV_REG_COUNT];
> >  };
> > @@ -229,7 +228,7 @@ static int register_device_clock(struct acpi_device *adev,
> >  {
> >         const struct lpss_device_desc *dev_desc = pdata->dev_desc;
> >         const char *devname = dev_name(&adev->dev);
> > -       struct clk *clk = ERR_PTR(-ENODEV);
> > +       struct clk_core *clk = ERR_PTR(-ENODEV);
> >         struct lpss_clk_data *clk_data;
> >         const char *parent, *clk_name;
> >         void __iomem *prv_base;
> 
> I think the following hunk is missing from your change:
> 
> --- a/drivers/acpi/acpi_lpss.c
> +++ b/drivers/acpi/acpi_lpss.c
> @@ -57,7 +57,7 @@ ACPI_MODULE_NAME("acpi_lpss");
>  struct lpss_shared_clock {
>         const char *name;
>         unsigned long rate;
> -       struct clk *clk;
> +       struct clk_core *clk;
>  };

Looks like this hunk is missing as well:

diff --git a/include/linux/platform_data/clk-lpss.h b/include/linux/platform_data/clk-lpss.h
index 2390199..3c3237c 100644
--- a/include/linux/platform_data/clk-lpss.h
+++ b/include/linux/platform_data/clk-lpss.h
@@ -15,7 +15,7 @@

 struct lpss_clk_data {
        const char *name;
-       struct clk *clk;
+       struct clk_core *clk;
 };



Without that change the following code will explode:


static int register_device_clock(struct acpi_device *adev,
                                 struct lpss_private_data *pdata)
{
        const struct lpss_device_desc *dev_desc = pdata->dev_desc;
        struct lpss_shared_clock *shared_clock = dev_desc->shared_clock;
        const char *devname = dev_name(&adev->dev);
        struct clk_core *clk = ERR_PTR(-ENODEV);
        struct lpss_clk_data *clk_data;
        const char *parent, *clk_name;
        void __iomem *prv_base;

        if (!lpss_clk_dev)
                lpt_register_clock_device();

        clk_data = platform_get_drvdata(lpss_clk_dev);
        if (!clk_data)
                return -ENODEV;

        if (dev_desc->clkdev_name) {
                clk_register_clkdev(clk_data->clk, dev_desc->clkdev_name,
                                    devname);
                return 0;
        }



I'm starting to get nervous about this Coccinelle script... Seems like a
lot of things are slipping through.

Regards,
Mike

> 
> 
> Otherwise register_device_clock will blow up because we are assigning a
> struct clk * to a struct clk_core *.
> 
> Do you mind testing with ARCH=x86_64 and allmodconfig? That will help
> catch issues like this.
> 
> Regards,
> Mike

WARNING: multiple messages have this Message-ID (diff)
From: mturquette@linaro.org (Mike Turquette)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v10 2/9] clk: Move all drivers to use internal API
Date: Tue, 09 Sep 2014 12:25:03 -0700	[thread overview]
Message-ID: <20140909192503.19023.33476@quantum> (raw)
In-Reply-To: <20140909191205.19023.61366@quantum>

Quoting Mike Turquette (2014-09-09 12:12:05)
> Quoting Tomeu Vizoso (2014-09-09 07:04:57)
> > In preparation to change the public API to return a per-user clk structure,
> > remove any usage of this public API from the clock implementations.
> > 
> > The reason for having this in a separate commit from the one that introduces
> > the implementation of the new functions is to separate the changes generated
> > with Coccinelle from the rest, and keep the patches' size reasonable.
> > 
> > Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
> > Tested-by: Boris Brezillon <boris.brezillon@free-electrons.com>
> > Tested-by: Heiko Stuebner <heiko@sntech.de>
> > Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com>
> > 
> > ---
> > 
> > v10: * Add a few more files to be converted
> >      * Re-generate the patch on top of the latest changes
> 
> Hi Tomeu,
> 
> Generating this on top of linux-next is a no-go. I can't apply it to my
> tree. The best thing is to generate it on top of -rc4, and that is what
> I will merge.
> 
> Running the script against linux-next is still very useful and lets us
> patch up the stuff that is not going through the clk tree. E.g. the LPSS
> driver is already in mainline, so just running the semantic patch
> against -rc4 is sufficient for it. However a patch like Shawn's "ARM:
> imx: add an exclusive gate clock type" came in through the i.MX tree and
> we'll need to patch it after the fact.
> 
> The best way to do that is for me to host a branch with just your
> changes in it that everyone can pull in as a dependency with the same
> commit ids.
> 
> <snip>
> 
> > diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c
> > index bcbdbd2..f4c6ccf 100644
> > --- a/drivers/acpi/acpi_lpss.c
> > +++ b/drivers/acpi/acpi_lpss.c
> > @@ -11,7 +11,6 @@
> >   */
> >  
> >  #include <linux/acpi.h>
> > -#include <linux/clk.h>
> >  #include <linux/clkdev.h>
> >  #include <linux/clk-provider.h>
> >  #include <linux/err.h>
> > @@ -78,7 +77,7 @@ struct lpss_private_data {
> >         void __iomem *mmio_base;
> >         resource_size_t mmio_size;
> >         unsigned int fixed_clk_rate;
> > -       struct clk *clk;
> > +       struct clk_core *clk;
> >         const struct lpss_device_desc *dev_desc;
> >         u32 prv_reg_ctx[LPSS_PRV_REG_COUNT];
> >  };
> > @@ -229,7 +228,7 @@ static int register_device_clock(struct acpi_device *adev,
> >  {
> >         const struct lpss_device_desc *dev_desc = pdata->dev_desc;
> >         const char *devname = dev_name(&adev->dev);
> > -       struct clk *clk = ERR_PTR(-ENODEV);
> > +       struct clk_core *clk = ERR_PTR(-ENODEV);
> >         struct lpss_clk_data *clk_data;
> >         const char *parent, *clk_name;
> >         void __iomem *prv_base;
> 
> I think the following hunk is missing from your change:
> 
> --- a/drivers/acpi/acpi_lpss.c
> +++ b/drivers/acpi/acpi_lpss.c
> @@ -57,7 +57,7 @@ ACPI_MODULE_NAME("acpi_lpss");
>  struct lpss_shared_clock {
>         const char *name;
>         unsigned long rate;
> -       struct clk *clk;
> +       struct clk_core *clk;
>  };

Looks like this hunk is missing as well:

diff --git a/include/linux/platform_data/clk-lpss.h b/include/linux/platform_data/clk-lpss.h
index 2390199..3c3237c 100644
--- a/include/linux/platform_data/clk-lpss.h
+++ b/include/linux/platform_data/clk-lpss.h
@@ -15,7 +15,7 @@

 struct lpss_clk_data {
        const char *name;
-       struct clk *clk;
+       struct clk_core *clk;
 };



Without that change the following code will explode:


static int register_device_clock(struct acpi_device *adev,
                                 struct lpss_private_data *pdata)
{
        const struct lpss_device_desc *dev_desc = pdata->dev_desc;
        struct lpss_shared_clock *shared_clock = dev_desc->shared_clock;
        const char *devname = dev_name(&adev->dev);
        struct clk_core *clk = ERR_PTR(-ENODEV);
        struct lpss_clk_data *clk_data;
        const char *parent, *clk_name;
        void __iomem *prv_base;

        if (!lpss_clk_dev)
                lpt_register_clock_device();

        clk_data = platform_get_drvdata(lpss_clk_dev);
        if (!clk_data)
                return -ENODEV;

        if (dev_desc->clkdev_name) {
                clk_register_clkdev(clk_data->clk, dev_desc->clkdev_name,
                                    devname);
                return 0;
        }



I'm starting to get nervous about this Coccinelle script... Seems like a
lot of things are slipping through.

Regards,
Mike

> 
> 
> Otherwise register_device_clock will blow up because we are assigning a
> struct clk * to a struct clk_core *.
> 
> Do you mind testing with ARCH=x86_64 and allmodconfig? That will help
> catch issues like this.
> 
> Regards,
> Mike

  reply	other threads:[~2014-09-09 19:25 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-09 14:02 [PATCH v10 0/9] Per-user clock constraints Tomeu Vizoso
2014-09-09 14:02 ` Tomeu Vizoso
2014-09-09 14:02 ` [PATCH v10 1/9] clk: Add temporary mapping to the existing API Tomeu Vizoso
2014-09-09 14:02   ` Tomeu Vizoso
2014-09-09 14:04 ` [PATCH v10 2/9] clk: Move all drivers to use internal API Tomeu Vizoso
2014-09-09 14:04   ` Tomeu Vizoso
2014-09-09 19:12   ` Mike Turquette
2014-09-09 19:12     ` Mike Turquette
2014-09-09 19:25     ` Mike Turquette [this message]
2014-09-09 19:25       ` Mike Turquette
2014-09-10  1:53       ` Stephen Boyd
2014-09-10  1:53         ` Stephen Boyd
2014-09-10  8:38       ` Tomeu Vizoso
2014-09-10  8:38         ` Tomeu Vizoso
2014-09-10 13:20         ` Tomeu Vizoso
2014-09-10 13:20           ` Tomeu Vizoso
2014-09-10  7:36     ` Tomeu Vizoso
2014-09-10  7:36       ` Tomeu Vizoso
2014-09-09 14:06 ` [PATCH v10 3/9] clk: use struct clk only for external API Tomeu Vizoso
2014-09-09 14:06   ` Tomeu Vizoso
2014-09-09 14:06   ` [PATCH v10 4/9] clk: per-user clock accounting for debug Tomeu Vizoso
2014-09-09 14:06     ` Tomeu Vizoso
2014-09-09 14:06   ` [PATCH v10 5/9] clk: Add floor and ceiling constraints to clock rates Tomeu Vizoso
2014-09-09 14:06     ` Tomeu Vizoso
2014-09-09 14:06   ` [PATCH v10 6/9] clk: Warn of unbalanced clk_prepare() calls Tomeu Vizoso
2014-09-09 14:06     ` Tomeu Vizoso
2014-09-09 14:06   ` [PATCH v10 7/9] clk: Take the prepare lock when updating the list of per-user clks Tomeu Vizoso
2014-09-09 14:06     ` Tomeu Vizoso
2014-09-09 14:06   ` [PATCH v10 8/9] clk: Take the prepare lock when updating the per-user constraints Tomeu Vizoso
2014-09-09 14:06     ` Tomeu Vizoso
2014-09-09 14:06   ` [PATCH v10 9/9] clk: Add docs about calling clk_put after clk_get_parent Tomeu Vizoso
2014-09-09 14:06     ` Tomeu Vizoso

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=20140909192503.19023.33476@quantum \
    --to=mturquette@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=shawn.guo@freescale.com \
    --cc=tomeu.vizoso@collabora.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.