As platform_get_irq() now prints an error when the interrupt
does not exist, a scary warning may be printed for a non-existing
interrupt:
platform testcase-data:testcase-device2: IRQ index 0 not found
Fix this by calling platform_get_irq_optional() instead.
Fixes: 7723f4c5ecdb8d83 ("driver core: platform: Add an error message to platform_get_irq*()")
Signed-off-by: Geert Uytterhoeven <[email protected]>
---
This is a fix for v5.4.
---
drivers/of/unittest.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c
index 9efae29722588a35..34da22f8b0660989 100644
--- a/drivers/of/unittest.c
+++ b/drivers/of/unittest.c
@@ -1121,7 +1121,7 @@ static void __init of_unittest_platform_populate(void)
np = of_find_node_by_path("/testcase-data/testcase-device2");
pdev = of_find_device_by_node(np);
unittest(pdev, "device 2 creation failed\n");
- irq = platform_get_irq(pdev, 0);
+ irq = platform_get_irq_optional(pdev, 0);
unittest(irq < 0 && irq != -EPROBE_DEFER,
"device parsing error failed - %d\n", irq);
}
--
2.17.1
Quoting Geert Uytterhoeven (2019-10-16 07:31:42)
> diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c
> index 9efae29722588a35..34da22f8b0660989 100644
> --- a/drivers/of/unittest.c
> +++ b/drivers/of/unittest.c
> @@ -1121,7 +1121,7 @@ static void __init of_unittest_platform_populate(void)
> np = of_find_node_by_path("/testcase-data/testcase-device2");
> pdev = of_find_device_by_node(np);
> unittest(pdev, "device 2 creation failed\n");
> - irq = platform_get_irq(pdev, 0);
> + irq = platform_get_irq_optional(pdev, 0);
> unittest(irq < 0 && irq != -EPROBE_DEFER,
This is a test to make sure that irq failure doesn't return probe defer.
Do we want to silence the error message that we're expecting to see?
Hi Stephen,
On Thu, Oct 17, 2019 at 1:23 AM Stephen Boyd <[email protected]> wrote:
> Quoting Geert Uytterhoeven (2019-10-16 07:31:42)
> > diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c
> > index 9efae29722588a35..34da22f8b0660989 100644
> > --- a/drivers/of/unittest.c
> > +++ b/drivers/of/unittest.c
> > @@ -1121,7 +1121,7 @@ static void __init of_unittest_platform_populate(void)
> > np = of_find_node_by_path("/testcase-data/testcase-device2");
> > pdev = of_find_device_by_node(np);
> > unittest(pdev, "device 2 creation failed\n");
> > - irq = platform_get_irq(pdev, 0);
> > + irq = platform_get_irq_optional(pdev, 0);
> > unittest(irq < 0 && irq != -EPROBE_DEFER,
>
> This is a test to make sure that irq failure doesn't return probe defer.
> Do we want to silence the error message that we're expecting to see?
I think so. We're not interested in error messages for expected failures,
only in error messages for unittest() failures.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
On Thu, Oct 17, 2019 at 1:59 AM Geert Uytterhoeven <[email protected]> wrote:
>
> Hi Stephen,
>
> On Thu, Oct 17, 2019 at 1:23 AM Stephen Boyd <[email protected]> wrote:
> > Quoting Geert Uytterhoeven (2019-10-16 07:31:42)
> > > diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c
> > > index 9efae29722588a35..34da22f8b0660989 100644
> > > --- a/drivers/of/unittest.c
> > > +++ b/drivers/of/unittest.c
> > > @@ -1121,7 +1121,7 @@ static void __init of_unittest_platform_populate(void)
> > > np = of_find_node_by_path("/testcase-data/testcase-device2");
> > > pdev = of_find_device_by_node(np);
> > > unittest(pdev, "device 2 creation failed\n");
> > > - irq = platform_get_irq(pdev, 0);
> > > + irq = platform_get_irq_optional(pdev, 0);
> > > unittest(irq < 0 && irq != -EPROBE_DEFER,
> >
> > This is a test to make sure that irq failure doesn't return probe defer.
> > Do we want to silence the error message that we're expecting to see?
>
> I think so. We're not interested in error messages for expected failures,
> only in error messages for unittest() failures.
The unittests start with a warning that error messages will be seen.
OTOH, we didn't get a message here before.
Rob
On 10/17/2019 07:51, Rob Herring wrote:
> On Thu, Oct 17, 2019 at 1:59 AM Geert Uytterhoeven <[email protected]> wrote:
>>
>> Hi Stephen,
>>
>> On Thu, Oct 17, 2019 at 1:23 AM Stephen Boyd <[email protected]> wrote:
>>> Quoting Geert Uytterhoeven (2019-10-16 07:31:42)
>>>> diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c
>>>> index 9efae29722588a35..34da22f8b0660989 100644
>>>> --- a/drivers/of/unittest.c
>>>> +++ b/drivers/of/unittest.c
>>>> @@ -1121,7 +1121,7 @@ static void __init of_unittest_platform_populate(void)
>>>> np = of_find_node_by_path("/testcase-data/testcase-device2");
>>>> pdev = of_find_device_by_node(np);
>>>> unittest(pdev, "device 2 creation failed\n");
>>>> - irq = platform_get_irq(pdev, 0);
>>>> + irq = platform_get_irq_optional(pdev, 0);
>>>> unittest(irq < 0 && irq != -EPROBE_DEFER,
>>>
>>> This is a test to make sure that irq failure doesn't return probe defer.
>>> Do we want to silence the error message that we're expecting to see?
No, we do not want to silence an error message that we are expecting to see.
>>
>> I think so. We're not interested in error messages for expected failures,
>> only in error messages for unittest() failures.
platform_get_irq() is precisely the function that we are trying to test here.
>
> The unittests start with a warning that error messages will be seen.
> OTOH, we didn't get a message here before.
Getting error messages from places outside of unittest.c is just the
nature of the devicetree selftest beast.
-Frank
>
> Rob
>