From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Grant Likely <grant.likely@secretlab.ca>
Cc: Pantelis Antoniou <pantelis.antoniou@konsulko.com>,
Wolfram Sang <wsa@the-dreams.de>,
devicetree@vger.kernel.org, linux-sh@vger.kernel.org,
Magnus Damm <magnus.damm@gmail.com>,
Simon Horman <horms@verge.net.au>,
Geert Uytterhoeven <geert@linux-m68k.org>,
Rob Herring <robh+dt@kernel.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] TESTCASE: of: OOPS when disabling node via OF_DYNAMIC
Date: Tue, 09 Jun 2015 16:50:26 +0000 [thread overview]
Message-ID: <2309597.bA1dyPGh92@avalon> (raw)
In-Reply-To: <20150607111632.CC7A4C410F0@trevor.secretlab.ca>
Hi Grant,
On Sunday 07 June 2015 12:16:32 Grant Likely wrote:
> On Wed, 22 Apr 2015 15:30:28 +0300, Pantelis Antoniou wrote:
> > > On Apr 14, 2015, at 16:27 , Wolfram Sang <wsa@the-dreams.de> wrote:
> > >
> > > Hi Pantelis,
> > >
> > > thanks for your prompt reply. Unfortunately, I had to wait until I could
> > > access the test system again.
> >
> > [snip]
> >
> > Sorry for the non-prompt reply; but just for kicks, can you try the
> > attached patch?
> >
> > I have a hunch this might be the problem.
> >
> > Regards
> >
> > — Pantelis
>
> I played around with this some today. If I'm reading it correctly, the
> following patch reproduces the same problem:
>
> (continued below patch)
> ---
> diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c
> index 18016341d5a9..0a27b38c3041 100644
> --- a/drivers/of/unittest.c
> +++ b/drivers/of/unittest.c
> @@ -753,6 +753,11 @@ static void __init of_unittest_match_node(void)
> }
> }
>
> +static struct resource test_bus_res = {
> + .start = 0xfffffff8,
> + .end = 0xfffffff9,
> + .flags = IORESOURCE_MEM,
> +};
> static const struct platform_device_info test_bus_info = {
> .name = "unittest-bus",
> };
> @@ -795,6 +800,7 @@ static void __init of_unittest_platform_populate(void)
> if (rc)
> return;
> test_bus->dev.of_node = np;
> + platform_device_add_resources(test_bus, &test_bus_res, 1);
>
> of_platform_populate(np, match, NULL, &test_bus->dev);
> for_each_child_of_node(np, child) {
>
> ---
>
> I think the fixup patch boils down to the following. It's hard to tell
> because it combines refactoring with the bug fix. Do I have it correct?
> If so, I'd rather commit the simple fix which can be committed now for
> v4.1, and the refactoring can be pushed for v4.2
The patch below looks equivalent to Pantelis' patch if we remove the
refactoring, but I don't immediately see how r->parent can be NULL in
platform_device_del() if type is equal to IORESOURCE_MEM or IORESOURCE_IO, as
platform_device_add() will have called insert_resource() in those cases, which
should set the resource parent pointer. I must be missing something as the
patch fixes Wolfram's issue, so an explanation in the commit message would be
welcome.
> ---
>
> diff --git a/drivers/base/platform.c b/drivers/base/platform.c
> index ebf034b97278..b3042e6ee3ef 100644
> --- a/drivers/base/platform.c
> +++ b/drivers/base/platform.c
> @@ -377,7 +377,7 @@ int platform_device_add(struct platform_device *pdev)
> struct resource *r = &pdev->resource[i];
> unsigned long type = resource_type(r);
>
> - if (type = IORESOURCE_MEM || type = IORESOURCE_IO)
> + if (r->parent)
> release_resource(r);
> }
>
> @@ -410,7 +410,7 @@ void platform_device_del(struct platform_device *pdev)
> struct resource *r = &pdev->resource[i];
> unsigned long type = resource_type(r);
>
> - if (type = IORESOURCE_MEM || type = IORESOURCE_IO)
> + if (r->parent)
> release_resource(r);
> }
> }
--
Regards,
Laurent Pinchart
WARNING: multiple messages have this Message-ID (diff)
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Grant Likely <grant.likely@secretlab.ca>
Cc: Pantelis Antoniou <pantelis.antoniou@konsulko.com>,
Wolfram Sang <wsa@the-dreams.de>,
devicetree@vger.kernel.org, linux-sh@vger.kernel.org,
Magnus Damm <magnus.damm@gmail.com>,
Simon Horman <horms@verge.net.au>,
Geert Uytterhoeven <geert@linux-m68k.org>,
Rob Herring <robh+dt@kernel.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] TESTCASE: of: OOPS when disabling node via OF_DYNAMIC
Date: Tue, 09 Jun 2015 19:50:26 +0300 [thread overview]
Message-ID: <2309597.bA1dyPGh92@avalon> (raw)
In-Reply-To: <20150607111632.CC7A4C410F0@trevor.secretlab.ca>
Hi Grant,
On Sunday 07 June 2015 12:16:32 Grant Likely wrote:
> On Wed, 22 Apr 2015 15:30:28 +0300, Pantelis Antoniou wrote:
> > > On Apr 14, 2015, at 16:27 , Wolfram Sang <wsa@the-dreams.de> wrote:
> > >
> > > Hi Pantelis,
> > >
> > > thanks for your prompt reply. Unfortunately, I had to wait until I could
> > > access the test system again.
> >
> > [snip]
> >
> > Sorry for the non-prompt reply; but just for kicks, can you try the
> > attached patch?
> >
> > I have a hunch this might be the problem.
> >
> > Regards
> >
> > â Pantelis
>
> I played around with this some today. If I'm reading it correctly, the
> following patch reproduces the same problem:
>
> (continued below patch)
> ---
> diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c
> index 18016341d5a9..0a27b38c3041 100644
> --- a/drivers/of/unittest.c
> +++ b/drivers/of/unittest.c
> @@ -753,6 +753,11 @@ static void __init of_unittest_match_node(void)
> }
> }
>
> +static struct resource test_bus_res = {
> + .start = 0xfffffff8,
> + .end = 0xfffffff9,
> + .flags = IORESOURCE_MEM,
> +};
> static const struct platform_device_info test_bus_info = {
> .name = "unittest-bus",
> };
> @@ -795,6 +800,7 @@ static void __init of_unittest_platform_populate(void)
> if (rc)
> return;
> test_bus->dev.of_node = np;
> + platform_device_add_resources(test_bus, &test_bus_res, 1);
>
> of_platform_populate(np, match, NULL, &test_bus->dev);
> for_each_child_of_node(np, child) {
>
> ---
>
> I think the fixup patch boils down to the following. It's hard to tell
> because it combines refactoring with the bug fix. Do I have it correct?
> If so, I'd rather commit the simple fix which can be committed now for
> v4.1, and the refactoring can be pushed for v4.2
The patch below looks equivalent to Pantelis' patch if we remove the
refactoring, but I don't immediately see how r->parent can be NULL in
platform_device_del() if type is equal to IORESOURCE_MEM or IORESOURCE_IO, as
platform_device_add() will have called insert_resource() in those cases, which
should set the resource parent pointer. I must be missing something as the
patch fixes Wolfram's issue, so an explanation in the commit message would be
welcome.
> ---
>
> diff --git a/drivers/base/platform.c b/drivers/base/platform.c
> index ebf034b97278..b3042e6ee3ef 100644
> --- a/drivers/base/platform.c
> +++ b/drivers/base/platform.c
> @@ -377,7 +377,7 @@ int platform_device_add(struct platform_device *pdev)
> struct resource *r = &pdev->resource[i];
> unsigned long type = resource_type(r);
>
> - if (type == IORESOURCE_MEM || type == IORESOURCE_IO)
> + if (r->parent)
> release_resource(r);
> }
>
> @@ -410,7 +410,7 @@ void platform_device_del(struct platform_device *pdev)
> struct resource *r = &pdev->resource[i];
> unsigned long type = resource_type(r);
>
> - if (type == IORESOURCE_MEM || type == IORESOURCE_IO)
> + if (r->parent)
> release_resource(r);
> }
> }
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2015-06-09 16:50 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-31 15:12 [PATCH] TESTCASE: of: OOPS when disabling node via OF_DYNAMIC Wolfram Sang
2015-03-31 15:12 ` Wolfram Sang
2015-03-31 16:23 ` Pantelis Antoniou
2015-03-31 16:23 ` Pantelis Antoniou
2015-04-14 13:27 ` Wolfram Sang
2015-04-14 13:27 ` Wolfram Sang
2015-04-22 12:30 ` Pantelis Antoniou
2015-04-22 12:30 ` Pantelis Antoniou
2015-04-23 8:33 ` Wolfram Sang
2015-04-23 8:33 ` Wolfram Sang
2015-04-23 8:41 ` Pantelis Antoniou
2015-04-23 8:41 ` Pantelis Antoniou
2015-04-23 8:49 ` Wolfram Sang
2015-04-23 8:49 ` Wolfram Sang
[not found] ` <83B5C458-8D49-4EF6-9F4A-6C0E2579AB9F-OWPKS81ov/FWk0Htik3J/w@public.gmane.org>
2015-06-07 11:16 ` Grant Likely
2015-06-07 11:16 ` Grant Likely
2015-06-07 11:16 ` Grant Likely
2015-06-09 16:50 ` Laurent Pinchart [this message]
2015-06-09 16:50 ` Laurent Pinchart
2015-06-10 16:53 ` Grant Likely
2015-06-10 16:53 ` Grant Likely
2015-06-10 16:53 ` Grant Likely
2015-06-11 11:14 ` Pantelis Antoniou
2015-06-11 11:14 ` Pantelis Antoniou
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=2309597.bA1dyPGh92@avalon \
--to=laurent.pinchart@ideasonboard.com \
--cc=devicetree@vger.kernel.org \
--cc=geert@linux-m68k.org \
--cc=grant.likely@secretlab.ca \
--cc=horms@verge.net.au \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=magnus.damm@gmail.com \
--cc=pantelis.antoniou@konsulko.com \
--cc=robh+dt@kernel.org \
--cc=wsa@the-dreams.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 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.