linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Saravana Kannan <saravanak@google.com>
To: John Stultz <john.stultz@linaro.org>
Cc: Thomas Gleixner <tglx@linutronix.de>,
	Jason Cooper <jason@lakedaemon.net>,
	Marc Zyngier <maz@kernel.org>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	Andy Gross <agross@kernel.org>,
	Bjorn Andersson <bjorn.andersson@linaro.org>,
	Android Kernel Team <kernel-team@android.com>,
	lkml <linux-kernel@vger.kernel.org>,
	linux-arm-kernel <linux-arm-kernel@lists.infradead.org>,
	"moderated list:ARM/Mediatek SoC support" 
	<linux-mediatek@lists.infradead.org>,
	linux-arm-msm <linux-arm-msm@vger.kernel.org>,
	Hanks Chen <hanks.chen@mediatek.com>,
	CC Hwang <cc.hwang@mediatek.com>,
	Loda Chou <loda.chou@mediatek.com>
Subject: Re: [PATCH v3 2/4] irqchip/qcom-pdc: Switch to using IRQCHIP_PLATFORM_DRIVER helper macros
Date: Wed, 5 Aug 2020 13:19:10 -0700	[thread overview]
Message-ID: <CAGETcx_rkK3-bKhDP_N4n_WyXLXFPoaUV9rbY_Y+H1Joj=dCyw@mail.gmail.com> (raw)
In-Reply-To: <CALAqxLVZ+rFE+hM9OtQ46NqpTHeLu6oKLNWKstLv1U5zbwyq7g@mail.gmail.com>

On Wed, Aug 5, 2020 at 12:44 AM John Stultz <john.stultz@linaro.org> wrote:
>
> On Fri, Jul 17, 2020 at 5:06 PM Saravana Kannan <saravanak@google.com> wrote:
> >
> > Switch the driver to use the helper macros. In addition to reducing the
> > number of lines, this also adds module unload protection (if the driver
> > is compiled as a module) by switching from module_platform_driver to
> > builtin_platform_driver.
> >
> > Signed-off-by: Saravana Kannan <saravanak@google.com>
> > ---
> >  drivers/irqchip/qcom-pdc.c | 26 +++-----------------------
> >  1 file changed, 3 insertions(+), 23 deletions(-)
> >
> > diff --git a/drivers/irqchip/qcom-pdc.c b/drivers/irqchip/qcom-pdc.c
> > index 5b624e3295e4..c1c5dfad57cc 100644
> > --- a/drivers/irqchip/qcom-pdc.c
> > +++ b/drivers/irqchip/qcom-pdc.c
> > @@ -432,28 +432,8 @@ static int qcom_pdc_init(struct device_node *node, struct device_node *parent)
> >         return ret;
> >  }
> >
> > -static int qcom_pdc_probe(struct platform_device *pdev)
> > -{
> > -       struct device_node *np = pdev->dev.of_node;
> > -       struct device_node *parent = of_irq_find_parent(np);
> > -
> > -       return qcom_pdc_init(np, parent);
> > -}
> > -
> > -static const struct of_device_id qcom_pdc_match_table[] = {
> > -       { .compatible = "qcom,pdc" },
> > -       {}
> > -};
> > -MODULE_DEVICE_TABLE(of, qcom_pdc_match_table);
> > -
> > -static struct platform_driver qcom_pdc_driver = {
> > -       .probe = qcom_pdc_probe,
> > -       .driver = {
> > -               .name = "qcom-pdc",
> > -               .of_match_table = qcom_pdc_match_table,
> > -               .suppress_bind_attrs = true,
> > -       },
> > -};
> > -module_platform_driver(qcom_pdc_driver);
> > +IRQCHIP_PLATFORM_DRIVER_BEGIN(qcom_pdc)
> > +IRQCHIP_MATCH("qcom,pdc", qcom_pdc_init)
> > +IRQCHIP_PLATFORM_DRIVER_END(qcom_pdc)
> >  MODULE_DESCRIPTION("Qualcomm Technologies, Inc. Power Domain Controller");
> >  MODULE_LICENSE("GPL v2");
>
> <sigh>
> So this is where I bashfully admit I didn't get a chance to try this
> patch series out, as I had success with a much older version of
> Saravana's macro magic.
>
> But unfortunately, now that this has landed in mainline, I'm seeing
> boot regressions on db845c. :( This is in the non-modular case,
> building the driver in.

Does that mean the modular version is working? Or you haven't tried
that yet? I'll wait for your reply before I try to fix it. I don't
have the hardware, but it should be easy to guess this issue looking
at the code delta.

The only significant change from what your probe function is doing is
this snippet. But it'd be surprising if this only affects the builtin
case.

+ if (par_np == np)
+         par_np = NULL;
+
+ /*
+ * If there's a parent interrupt controller and  none of the parent irq
+ * domains have been registered, that means the parent interrupt
+ * controller has not been initialized yet.  it's not time for this
+ * interrupt controller to initialize. So, defer probe of this
+ * interrupt controller. The actual initialization callback of this
+ * interrupt controller can check for specific domains as necessary.
+ */
+ if (par_np && !irq_find_matching_host(np, DOMAIN_BUS_ANY))
+         return -EPROBE_DEFER;

> I managed to bisect it down to this patch, and reverting it avoids the
> issue. I don't see what is wrong right off, but I really need to get
> to bed, so I'll dig further tomorrow.
>
> Saravana: Apologies for not getting around to testing this beforehand!

No worries. Apologies for breaking it accidentally.

-Saravana

  reply	other threads:[~2020-08-05 20:19 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-18  0:06 [PATCH v3 0/4] irqchip: Add IRQCHIP_PLATFORM_DRIVER helper macros Saravana Kannan
2020-07-18  0:06 ` [PATCH v3 1/4] irqchip: Add IRQCHIP_PLATFORM_DRIVER_BEGIN/END and IRQCHIP_MATCH " Saravana Kannan
2020-07-18  0:06 ` [PATCH v3 2/4] irqchip/qcom-pdc: Switch to using IRQCHIP_PLATFORM_DRIVER " Saravana Kannan
2020-08-05  7:44   ` John Stultz
2020-08-05 20:19     ` Saravana Kannan [this message]
2020-08-05 21:16       ` Steev Klimaszewski
2020-08-05 21:47         ` Steev Klimaszewski
2020-08-05 21:57           ` John Stultz
2020-08-07  0:40             ` Bjorn Andersson
2020-08-07  1:22               ` John Stultz
2020-08-07  1:39                 ` Bjorn Andersson
2020-08-07  2:48                   ` John Stultz
2020-08-07  3:02                     ` Saravana Kannan
2020-08-07  3:09                       ` John Stultz
2020-08-07  3:12                         ` Saravana Kannan
2020-08-07  5:58                     ` Bjorn Andersson
2020-08-07  6:22                       ` Saravana Kannan
2020-08-06  1:24       ` John Stultz
2020-08-06  8:49         ` Marc Zyngier
2020-08-06 18:05           ` Saravana Kannan
2020-08-06 19:59             ` Marc Zyngier
2020-08-06 20:09               ` John Stultz
2020-08-06 20:31                 ` Marc Zyngier
2020-08-06 21:16                   ` Saravana Kannan
2020-07-18  0:06 ` [PATCH v3 3/4] irqchip/mtk-sysirq: Convert to a platform driver Saravana Kannan
2020-07-23 11:42   ` Hanks Chen
2020-07-18  0:06 ` [PATCH v3 4/4] irqchip/mtk-cirq: " Saravana Kannan
2020-07-23 11:46   ` Hanks Chen
2020-07-23 17:37     ` Saravana Kannan
2020-07-25 14:23 ` [PATCH v3 0/4] irqchip: Add IRQCHIP_PLATFORM_DRIVER helper macros Marc Zyngier
2020-07-26  3:58   ` Saravana Kannan

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='CAGETcx_rkK3-bKhDP_N4n_WyXLXFPoaUV9rbY_Y+H1Joj=dCyw@mail.gmail.com' \
    --to=saravanak@google.com \
    --cc=agross@kernel.org \
    --cc=bjorn.andersson@linaro.org \
    --cc=cc.hwang@mediatek.com \
    --cc=hanks.chen@mediatek.com \
    --cc=jason@lakedaemon.net \
    --cc=john.stultz@linaro.org \
    --cc=kernel-team@android.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=loda.chou@mediatek.com \
    --cc=matthias.bgg@gmail.com \
    --cc=maz@kernel.org \
    --cc=tglx@linutronix.de \
    /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).