2014-01-28 08:51:04

by Pan Xinhui

[permalink] [raw]
Subject: [PATCH] gpio-intel-mid: fix the incorrect return of idle callback

From: "xinhui.pan" <[email protected]>

intel_gpio_runtime_idle should return correct error code if it do fail.
make it more correct even though -EBUSY is the most possible return value.

Signed-off-by: bo.he <[email protected]>
Signed-off-by: xinhui.pan <[email protected]>
---
drivers/gpio/gpio-intel-mid.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/gpio/gpio-intel-mid.c b/drivers/gpio/gpio-intel-mid.c
index d1b50ef..05749a3 100644
--- a/drivers/gpio/gpio-intel-mid.c
+++ b/drivers/gpio/gpio-intel-mid.c
@@ -394,7 +394,9 @@ static const struct irq_domain_ops intel_gpio_irq_ops = {

static int intel_gpio_runtime_idle(struct device *dev)
{
- pm_schedule_suspend(dev, 500);
+ int err = pm_schedule_suspend(dev, 500);
+ if (err)
+ return err;
return -EBUSY;
}

--
1.7.9.5


2014-01-28 16:42:57

by David Cohen

[permalink] [raw]
Subject: Re: [PATCH] gpio-intel-mid: fix the incorrect return of idle callback

Hi,

Thanks for the patch :)

On Tue, Jan 28, 2014 at 04:50:57PM +0800, xinhui.pan wrote:
> From: "xinhui.pan" <[email protected]>
>
> intel_gpio_runtime_idle should return correct error code if it do fail.
> make it more correct even though -EBUSY is the most possible return value.
>
> Signed-off-by: bo.he <[email protected]>
> Signed-off-by: xinhui.pan <[email protected]>

Acked-by: David Cohen <[email protected]>

2014-01-28 16:51:00

by Felipe Balbi

[permalink] [raw]
Subject: Re: [PATCH] gpio-intel-mid: fix the incorrect return of idle callback

On Tue, Jan 28, 2014 at 04:50:57PM +0800, xinhui.pan wrote:
> From: "xinhui.pan" <[email protected]>
>
> intel_gpio_runtime_idle should return correct error code if it do fail.
> make it more correct even though -EBUSY is the most possible return value.
>
> Signed-off-by: bo.he <[email protected]>
> Signed-off-by: xinhui.pan <[email protected]>
> ---
> drivers/gpio/gpio-intel-mid.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpio/gpio-intel-mid.c b/drivers/gpio/gpio-intel-mid.c
> index d1b50ef..05749a3 100644
> --- a/drivers/gpio/gpio-intel-mid.c
> +++ b/drivers/gpio/gpio-intel-mid.c
> @@ -394,7 +394,9 @@ static const struct irq_domain_ops intel_gpio_irq_ops = {
>
> static int intel_gpio_runtime_idle(struct device *dev)
> {
> - pm_schedule_suspend(dev, 500);
> + int err = pm_schedule_suspend(dev, 500);
> + if (err)
> + return err;
> return -EBUSY;

wait, is it only me or this would look a lot better as:

static int intel_gpio_runtime_idle(struct device *dev)
{
return pm_schedule_suspend(dev, 500);
}

cheers

--
balbi


Attachments:
(No filename) (1.07 kB)
signature.asc (819.00 B)
Digital signature
Download all attachments

2014-01-28 17:19:32

by David Cohen

[permalink] [raw]
Subject: Re: [PATCH] gpio-intel-mid: fix the incorrect return of idle callback

On Tue, Jan 28, 2014 at 10:49:37AM -0600, Felipe Balbi wrote:
> On Tue, Jan 28, 2014 at 04:50:57PM +0800, xinhui.pan wrote:
> > From: "xinhui.pan" <[email protected]>
> >
> > intel_gpio_runtime_idle should return correct error code if it do fail.
> > make it more correct even though -EBUSY is the most possible return value.
> >
> > Signed-off-by: bo.he <[email protected]>
> > Signed-off-by: xinhui.pan <[email protected]>
> > ---
> > drivers/gpio/gpio-intel-mid.c | 4 +++-
> > 1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpio/gpio-intel-mid.c b/drivers/gpio/gpio-intel-mid.c
> > index d1b50ef..05749a3 100644
> > --- a/drivers/gpio/gpio-intel-mid.c
> > +++ b/drivers/gpio/gpio-intel-mid.c
> > @@ -394,7 +394,9 @@ static const struct irq_domain_ops intel_gpio_irq_ops = {
> >
> > static int intel_gpio_runtime_idle(struct device *dev)
> > {
> > - pm_schedule_suspend(dev, 500);
> > + int err = pm_schedule_suspend(dev, 500);
> > + if (err)
> > + return err;
> > return -EBUSY;
>
> wait, is it only me or this would look a lot better as:
>
> static int intel_gpio_runtime_idle(struct device *dev)
> {
> return pm_schedule_suspend(dev, 500);
> }

The reply to your suggestion is probably in this commit :)

---
commit 45f0a85c8258741d11bda25c0a5669c06267204a
Author: Rafael J. Wysocki <[email protected]>
Date: Mon Jun 3 21:49:52 2013 +0200

PM / Runtime: Rework the "runtime idle" helper routine
---

We won't return 0 from here.

Br, David

>
> cheers
>
> --
> balbi

2014-01-28 18:13:27

by Felipe Balbi

[permalink] [raw]
Subject: Re: [PATCH] gpio-intel-mid: fix the incorrect return of idle callback

On Tue, Jan 28, 2014 at 09:24:13AM -0800, David Cohen wrote:
> On Tue, Jan 28, 2014 at 10:49:37AM -0600, Felipe Balbi wrote:
> > On Tue, Jan 28, 2014 at 04:50:57PM +0800, xinhui.pan wrote:
> > > From: "xinhui.pan" <[email protected]>
> > >
> > > intel_gpio_runtime_idle should return correct error code if it do fail.
> > > make it more correct even though -EBUSY is the most possible return value.
> > >
> > > Signed-off-by: bo.he <[email protected]>
> > > Signed-off-by: xinhui.pan <[email protected]>
> > > ---
> > > drivers/gpio/gpio-intel-mid.c | 4 +++-
> > > 1 file changed, 3 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/gpio/gpio-intel-mid.c b/drivers/gpio/gpio-intel-mid.c
> > > index d1b50ef..05749a3 100644
> > > --- a/drivers/gpio/gpio-intel-mid.c
> > > +++ b/drivers/gpio/gpio-intel-mid.c
> > > @@ -394,7 +394,9 @@ static const struct irq_domain_ops intel_gpio_irq_ops = {
> > >
> > > static int intel_gpio_runtime_idle(struct device *dev)
> > > {
> > > - pm_schedule_suspend(dev, 500);
> > > + int err = pm_schedule_suspend(dev, 500);
> > > + if (err)
> > > + return err;
> > > return -EBUSY;
> >
> > wait, is it only me or this would look a lot better as:
> >
> > static int intel_gpio_runtime_idle(struct device *dev)
> > {
> > return pm_schedule_suspend(dev, 500);
> > }
>
> The reply to your suggestion is probably in this commit :)
>
> ---
> commit 45f0a85c8258741d11bda25c0a5669c06267204a
> Author: Rafael J. Wysocki <[email protected]>
> Date: Mon Jun 3 21:49:52 2013 +0200
>
> PM / Runtime: Rework the "runtime idle" helper routine
> ---
>
> We won't return 0 from here.

so you never want to return 0, why don't you, then:

static int intel_gpio_runtime_idle(struct device *dev)
{
pm_schedule_suspend(dev, 500);
return -EBUSY;
}

just like drivers/tty/serial/mfd.c::serial_hsu_runtime_idle() is doing ?

--
balbi


Attachments:
(No filename) (1.85 kB)
signature.asc (819.00 B)
Digital signature
Download all attachments

2014-01-29 00:08:47

by David Cohen

[permalink] [raw]
Subject: Re: [PATCH] gpio-intel-mid: fix the incorrect return of idle callback

On Tue, Jan 28, 2014 at 12:12:06PM -0600, Felipe Balbi wrote:
> On Tue, Jan 28, 2014 at 09:24:13AM -0800, David Cohen wrote:
> > On Tue, Jan 28, 2014 at 10:49:37AM -0600, Felipe Balbi wrote:
> > > On Tue, Jan 28, 2014 at 04:50:57PM +0800, xinhui.pan wrote:
> > > > From: "xinhui.pan" <[email protected]>
> > > >
> > > > intel_gpio_runtime_idle should return correct error code if it do fail.
> > > > make it more correct even though -EBUSY is the most possible return value.
> > > >
> > > > Signed-off-by: bo.he <[email protected]>
> > > > Signed-off-by: xinhui.pan <[email protected]>
> > > > ---
> > > > drivers/gpio/gpio-intel-mid.c | 4 +++-
> > > > 1 file changed, 3 insertions(+), 1 deletion(-)
> > > >
> > > > diff --git a/drivers/gpio/gpio-intel-mid.c b/drivers/gpio/gpio-intel-mid.c
> > > > index d1b50ef..05749a3 100644
> > > > --- a/drivers/gpio/gpio-intel-mid.c
> > > > +++ b/drivers/gpio/gpio-intel-mid.c
> > > > @@ -394,7 +394,9 @@ static const struct irq_domain_ops intel_gpio_irq_ops = {
> > > >
> > > > static int intel_gpio_runtime_idle(struct device *dev)
> > > > {
> > > > - pm_schedule_suspend(dev, 500);
> > > > + int err = pm_schedule_suspend(dev, 500);
> > > > + if (err)
> > > > + return err;
> > > > return -EBUSY;
> > >
> > > wait, is it only me or this would look a lot better as:
> > >
> > > static int intel_gpio_runtime_idle(struct device *dev)
> > > {
> > > return pm_schedule_suspend(dev, 500);
> > > }
> >
> > The reply to your suggestion is probably in this commit :)
> >
> > ---
> > commit 45f0a85c8258741d11bda25c0a5669c06267204a
> > Author: Rafael J. Wysocki <[email protected]>
> > Date: Mon Jun 3 21:49:52 2013 +0200
> >
> > PM / Runtime: Rework the "runtime idle" helper routine
> > ---
> >
> > We won't return 0 from here.
>
> so you never want to return 0, why don't you, then:
>
> static int intel_gpio_runtime_idle(struct device *dev)
> {
> pm_schedule_suspend(dev, 500);
> return -EBUSY;
> }

That's how it is currently :)

But this patch is making the function to return a different code in case
of error. IMHO there is not much fuctional gain with it, but I see
perhaps one extra info for tracing during development.

Anyway, I'll let Xinhui to do further comment since he's the author.

Br, David

>
> just like drivers/tty/serial/mfd.c::serial_hsu_runtime_idle() is doing ?
>
> --
> balbi

2014-01-29 07:23:48

by Pan Xinhui

[permalink] [raw]
Subject: Re: [PATCH] gpio-intel-mid: fix the incorrect return of idle callback


于 2014年01月29日 08:13, David Cohen 写道:
> On Tue, Jan 28, 2014 at 12:12:06PM -0600, Felipe Balbi wrote:
>> On Tue, Jan 28, 2014 at 09:24:13AM -0800, David Cohen wrote:
>>> On Tue, Jan 28, 2014 at 10:49:37AM -0600, Felipe Balbi wrote:
>>>> On Tue, Jan 28, 2014 at 04:50:57PM +0800, xinhui.pan wrote:
>>>>> From: "xinhui.pan" <[email protected]>
>>>>>
>>>>> intel_gpio_runtime_idle should return correct error code if it do fail.
>>>>> make it more correct even though -EBUSY is the most possible return value.
>>>>>
>>>>> Signed-off-by: bo.he <[email protected]>
>>>>> Signed-off-by: xinhui.pan <[email protected]>
>>>>> ---
>>>>> drivers/gpio/gpio-intel-mid.c | 4 +++-
>>>>> 1 file changed, 3 insertions(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/drivers/gpio/gpio-intel-mid.c b/drivers/gpio/gpio-intel-mid.c
>>>>> index d1b50ef..05749a3 100644
>>>>> --- a/drivers/gpio/gpio-intel-mid.c
>>>>> +++ b/drivers/gpio/gpio-intel-mid.c
>>>>> @@ -394,7 +394,9 @@ static const struct irq_domain_ops intel_gpio_irq_ops = {
>>>>>
>>>>> static int intel_gpio_runtime_idle(struct device *dev)
>>>>> {
>>>>> - pm_schedule_suspend(dev, 500);
>>>>> + int err = pm_schedule_suspend(dev, 500);
>>>>> + if (err)
>>>>> + return err;
>>>>> return -EBUSY;
>>>>
>>>> wait, is it only me or this would look a lot better as:
>>>>
>>>> static int intel_gpio_runtime_idle(struct device *dev)
>>>> {
>>>> return pm_schedule_suspend(dev, 500);
>>>> }
>>>
>>> The reply to your suggestion is probably in this commit :)
>>>
>>> ---
>>> commit 45f0a85c8258741d11bda25c0a5669c06267204a
>>> Author: Rafael J. Wysocki <[email protected]>
>>> Date: Mon Jun 3 21:49:52 2013 +0200
>>>
>>> PM / Runtime: Rework the "runtime idle" helper routine
>>> ---
>>>
>>> We won't return 0 from here.
>>
>> so you never want to return 0, why don't you, then:
>>
>> static int intel_gpio_runtime_idle(struct device *dev)
>> {
>> pm_schedule_suspend(dev, 500);
>> return -EBUSY;
>> }
>
> That's how it is currently :)
>
> But this patch is making the function to return a different code in case
> of error. IMHO there is not much fuctional gain with it, but I see
> perhaps one extra info for tracing during development.
>
> Anyway, I'll let Xinhui to do further comment since he's the author.
>
> Br, David
>
hi ,David & Balbi
I checked several drivers yesterday to see how they use pm_schedule_suspend
then found one bug in i2c. Also I noticed gpio.
I think returning a correct error code is important.So I change -EBUSY
to *err*. To be honest,current code works well.
>>
>> just like drivers/tty/serial/mfd.c::serial_hsu_runtime_idle() is doing ?
>>
>> --
>> balbi
>
>

2014-01-29 19:07:47

by David Cohen

[permalink] [raw]
Subject: Re: [PATCH] gpio-intel-mid: fix the incorrect return of idle callback

On Wed, Jan 29, 2014 at 03:23:40PM +0800, xinhui.pan wrote:
>
> 于 2014年01月29日 08:13, David Cohen 写道:
> > On Tue, Jan 28, 2014 at 12:12:06PM -0600, Felipe Balbi wrote:
> >> On Tue, Jan 28, 2014 at 09:24:13AM -0800, David Cohen wrote:
> >>> On Tue, Jan 28, 2014 at 10:49:37AM -0600, Felipe Balbi wrote:
> >>>> On Tue, Jan 28, 2014 at 04:50:57PM +0800, xinhui.pan wrote:
> >>>>> From: "xinhui.pan" <[email protected]>
> >>>>>
> >>>>> intel_gpio_runtime_idle should return correct error code if it do fail.
> >>>>> make it more correct even though -EBUSY is the most possible return value.
> >>>>>
> >>>>> Signed-off-by: bo.he <[email protected]>
> >>>>> Signed-off-by: xinhui.pan <[email protected]>
> >>>>> ---
> >>>>> drivers/gpio/gpio-intel-mid.c | 4 +++-
> >>>>> 1 file changed, 3 insertions(+), 1 deletion(-)
> >>>>>
> >>>>> diff --git a/drivers/gpio/gpio-intel-mid.c b/drivers/gpio/gpio-intel-mid.c
> >>>>> index d1b50ef..05749a3 100644
> >>>>> --- a/drivers/gpio/gpio-intel-mid.c
> >>>>> +++ b/drivers/gpio/gpio-intel-mid.c
> >>>>> @@ -394,7 +394,9 @@ static const struct irq_domain_ops intel_gpio_irq_ops = {
> >>>>>
> >>>>> static int intel_gpio_runtime_idle(struct device *dev)
> >>>>> {
> >>>>> - pm_schedule_suspend(dev, 500);
> >>>>> + int err = pm_schedule_suspend(dev, 500);
> >>>>> + if (err)
> >>>>> + return err;
> >>>>> return -EBUSY;
> >>>>
> >>>> wait, is it only me or this would look a lot better as:
> >>>>
> >>>> static int intel_gpio_runtime_idle(struct device *dev)
> >>>> {
> >>>> return pm_schedule_suspend(dev, 500);
> >>>> }
> >>>
> >>> The reply to your suggestion is probably in this commit :)
> >>>
> >>> ---
> >>> commit 45f0a85c8258741d11bda25c0a5669c06267204a
> >>> Author: Rafael J. Wysocki <[email protected]>
> >>> Date: Mon Jun 3 21:49:52 2013 +0200
> >>>
> >>> PM / Runtime: Rework the "runtime idle" helper routine
> >>> ---
> >>>
> >>> We won't return 0 from here.
> >>
> >> so you never want to return 0, why don't you, then:
> >>
> >> static int intel_gpio_runtime_idle(struct device *dev)
> >> {
> >> pm_schedule_suspend(dev, 500);
> >> return -EBUSY;
> >> }
> >
> > That's how it is currently :)
> >
> > But this patch is making the function to return a different code in case
> > of error. IMHO there is not much fuctional gain with it, but I see
> > perhaps one extra info for tracing during development.
> >
> > Anyway, I'll let Xinhui to do further comment since he's the author.
> >
> > Br, David
> >
> hi ,David & Balbi
> I checked several drivers yesterday to see how they use pm_schedule_suspend
> then found one bug in i2c. Also I noticed gpio.
> I think returning a correct error code is important.So I change -EBUSY
> to *err*. To be honest,current code works well.

In my experience, when I'm using fancy things like lauterbach a proper
error code may save couple of minutes in my life :)

I keep my ack here.

Br, David

> >>
> >> just like drivers/tty/serial/mfd.c::serial_hsu_runtime_idle() is doing ?
> >>
> >> --
> >> balbi
> >
> >

2014-01-29 19:53:51

by Felipe Balbi

[permalink] [raw]
Subject: Re: [PATCH] gpio-intel-mid: fix the incorrect return of idle callback

On Wed, Jan 29, 2014 at 11:12:32AM -0800, David Cohen wrote:
> On Wed, Jan 29, 2014 at 03:23:40PM +0800, xinhui.pan wrote:
> >
> > 于 2014年01月29日 08:13, David Cohen 写道:
> > > On Tue, Jan 28, 2014 at 12:12:06PM -0600, Felipe Balbi wrote:
> > >> On Tue, Jan 28, 2014 at 09:24:13AM -0800, David Cohen wrote:
> > >>> On Tue, Jan 28, 2014 at 10:49:37AM -0600, Felipe Balbi wrote:
> > >>>> On Tue, Jan 28, 2014 at 04:50:57PM +0800, xinhui.pan wrote:
> > >>>>> From: "xinhui.pan" <[email protected]>
> > >>>>>
> > >>>>> intel_gpio_runtime_idle should return correct error code if it do fail.
> > >>>>> make it more correct even though -EBUSY is the most possible return value.
> > >>>>>
> > >>>>> Signed-off-by: bo.he <[email protected]>
> > >>>>> Signed-off-by: xinhui.pan <[email protected]>
> > >>>>> ---
> > >>>>> drivers/gpio/gpio-intel-mid.c | 4 +++-
> > >>>>> 1 file changed, 3 insertions(+), 1 deletion(-)
> > >>>>>
> > >>>>> diff --git a/drivers/gpio/gpio-intel-mid.c b/drivers/gpio/gpio-intel-mid.c
> > >>>>> index d1b50ef..05749a3 100644
> > >>>>> --- a/drivers/gpio/gpio-intel-mid.c
> > >>>>> +++ b/drivers/gpio/gpio-intel-mid.c
> > >>>>> @@ -394,7 +394,9 @@ static const struct irq_domain_ops intel_gpio_irq_ops = {
> > >>>>>
> > >>>>> static int intel_gpio_runtime_idle(struct device *dev)
> > >>>>> {
> > >>>>> - pm_schedule_suspend(dev, 500);
> > >>>>> + int err = pm_schedule_suspend(dev, 500);
> > >>>>> + if (err)
> > >>>>> + return err;
> > >>>>> return -EBUSY;
> > >>>>
> > >>>> wait, is it only me or this would look a lot better as:
> > >>>>
> > >>>> static int intel_gpio_runtime_idle(struct device *dev)
> > >>>> {
> > >>>> return pm_schedule_suspend(dev, 500);
> > >>>> }
> > >>>
> > >>> The reply to your suggestion is probably in this commit :)
> > >>>
> > >>> ---
> > >>> commit 45f0a85c8258741d11bda25c0a5669c06267204a
> > >>> Author: Rafael J. Wysocki <[email protected]>
> > >>> Date: Mon Jun 3 21:49:52 2013 +0200
> > >>>
> > >>> PM / Runtime: Rework the "runtime idle" helper routine
> > >>> ---
> > >>>
> > >>> We won't return 0 from here.
> > >>
> > >> so you never want to return 0, why don't you, then:
> > >>
> > >> static int intel_gpio_runtime_idle(struct device *dev)
> > >> {
> > >> pm_schedule_suspend(dev, 500);
> > >> return -EBUSY;
> > >> }
> > >
> > > That's how it is currently :)
> > >
> > > But this patch is making the function to return a different code in case
> > > of error. IMHO there is not much fuctional gain with it, but I see
> > > perhaps one extra info for tracing during development.
> > >
> > > Anyway, I'll let Xinhui to do further comment since he's the author.
> > >
> > > Br, David
> > >
> > hi ,David & Balbi
> > I checked several drivers yesterday to see how they use pm_schedule_suspend
> > then found one bug in i2c. Also I noticed gpio.
> > I think returning a correct error code is important.So I change -EBUSY
> > to *err*. To be honest,current code works well.
>
> In my experience, when I'm using fancy things like lauterbach a proper
> error code may save couple of minutes in my life :)
>
> I keep my ack here.

fair enough, sorry for the noise ;-) It could still be simplified a bit:

return err ?: -EBUSY;

--
balbi


Attachments:
(No filename) (3.18 kB)
signature.asc (819.00 B)
Digital signature
Download all attachments

2014-01-29 21:01:13

by David Cohen

[permalink] [raw]
Subject: Re: [PATCH] gpio-intel-mid: fix the incorrect return of idle callback

On Wed, Jan 29, 2014 at 01:52:30PM -0600, Felipe Balbi wrote:
> On Wed, Jan 29, 2014 at 11:12:32AM -0800, David Cohen wrote:
> > On Wed, Jan 29, 2014 at 03:23:40PM +0800, xinhui.pan wrote:
> > >
> > > 于 2014年01月29日 08:13, David Cohen 写道:
> > > > On Tue, Jan 28, 2014 at 12:12:06PM -0600, Felipe Balbi wrote:
> > > >> On Tue, Jan 28, 2014 at 09:24:13AM -0800, David Cohen wrote:
> > > >>> On Tue, Jan 28, 2014 at 10:49:37AM -0600, Felipe Balbi wrote:
> > > >>>> On Tue, Jan 28, 2014 at 04:50:57PM +0800, xinhui.pan wrote:
> > > >>>>> From: "xinhui.pan" <[email protected]>
> > > >>>>>
> > > >>>>> intel_gpio_runtime_idle should return correct error code if it do fail.
> > > >>>>> make it more correct even though -EBUSY is the most possible return value.
> > > >>>>>
> > > >>>>> Signed-off-by: bo.he <[email protected]>
> > > >>>>> Signed-off-by: xinhui.pan <[email protected]>
> > > >>>>> ---
> > > >>>>> drivers/gpio/gpio-intel-mid.c | 4 +++-
> > > >>>>> 1 file changed, 3 insertions(+), 1 deletion(-)
> > > >>>>>
> > > >>>>> diff --git a/drivers/gpio/gpio-intel-mid.c b/drivers/gpio/gpio-intel-mid.c
> > > >>>>> index d1b50ef..05749a3 100644
> > > >>>>> --- a/drivers/gpio/gpio-intel-mid.c
> > > >>>>> +++ b/drivers/gpio/gpio-intel-mid.c
> > > >>>>> @@ -394,7 +394,9 @@ static const struct irq_domain_ops intel_gpio_irq_ops = {
> > > >>>>>
> > > >>>>> static int intel_gpio_runtime_idle(struct device *dev)
> > > >>>>> {
> > > >>>>> - pm_schedule_suspend(dev, 500);
> > > >>>>> + int err = pm_schedule_suspend(dev, 500);
> > > >>>>> + if (err)
> > > >>>>> + return err;
> > > >>>>> return -EBUSY;
> > > >>>>
> > > >>>> wait, is it only me or this would look a lot better as:
> > > >>>>
> > > >>>> static int intel_gpio_runtime_idle(struct device *dev)
> > > >>>> {
> > > >>>> return pm_schedule_suspend(dev, 500);
> > > >>>> }
> > > >>>
> > > >>> The reply to your suggestion is probably in this commit :)
> > > >>>
> > > >>> ---
> > > >>> commit 45f0a85c8258741d11bda25c0a5669c06267204a
> > > >>> Author: Rafael J. Wysocki <[email protected]>
> > > >>> Date: Mon Jun 3 21:49:52 2013 +0200
> > > >>>
> > > >>> PM / Runtime: Rework the "runtime idle" helper routine
> > > >>> ---
> > > >>>
> > > >>> We won't return 0 from here.
> > > >>
> > > >> so you never want to return 0, why don't you, then:
> > > >>
> > > >> static int intel_gpio_runtime_idle(struct device *dev)
> > > >> {
> > > >> pm_schedule_suspend(dev, 500);
> > > >> return -EBUSY;
> > > >> }
> > > >
> > > > That's how it is currently :)
> > > >
> > > > But this patch is making the function to return a different code in case
> > > > of error. IMHO there is not much fuctional gain with it, but I see
> > > > perhaps one extra info for tracing during development.
> > > >
> > > > Anyway, I'll let Xinhui to do further comment since he's the author.
> > > >
> > > > Br, David
> > > >
> > > hi ,David & Balbi
> > > I checked several drivers yesterday to see how they use pm_schedule_suspend
> > > then found one bug in i2c. Also I noticed gpio.
> > > I think returning a correct error code is important.So I change -EBUSY
> > > to *err*. To be honest,current code works well.
> >
> > In my experience, when I'm using fancy things like lauterbach a proper
> > error code may save couple of minutes in my life :)
> >
> > I keep my ack here.
>
> fair enough, sorry for the noise ;-) It could still be simplified a bit:
>
> return err ?: -EBUSY;

Agreed :)
Xinhui, could we have this suggestion in your patch?

Br, David

>
> --
> balbi

2014-01-30 12:15:21

by xinhui

[permalink] [raw]
Subject: Re: [PATCH] gpio-intel-mid: fix the incorrect return of idle callback

On Wed, 29 Jan 2014 13:06, David Cohen wrote:
> On Wed, Jan 29, 2014 at 01:52:30PM -0600, Felipe Balbi wrote:
>> On Wed, Jan 29, 2014 at 11:12:32AM -0800, David Cohen wrote:
>>> On Wed, Jan 29, 2014 at 03:23:40PM +0800, xinhui.pan wrote:
>>>>
>>>> 于 2014年01月29日 08:13, David Cohen 写道:
>>>>> On Tue, Jan 28, 2014 at 12:12:06PM -0600, Felipe Balbi wrote:
>>>>>> On Tue, Jan 28, 2014 at 09:24:13AM -0800, David Cohen wrote:
>>>>>>> On Tue, Jan 28, 2014 at 10:49:37AM -0600, Felipe Balbi wrote:
>>>>>>>> On Tue, Jan 28, 2014 at 04:50:57PM +0800, xinhui.pan wrote:
>>>>>>>>> From: "xinhui.pan" <[email protected]>
>>>>>>>>>
>>>>>>>>> intel_gpio_runtime_idle should return correct error code if it do fail.
>>>>>>>>> make it more correct even though -EBUSY is the most possible return value.
>>>>>>>>>
>>>>>>>>> Signed-off-by: bo.he <[email protected]>
>>>>>>>>> Signed-off-by: xinhui.pan <[email protected]>
>>>>>>>>> ---
>>>>>>>>> drivers/gpio/gpio-intel-mid.c | 4 +++-
>>>>>>>>> 1 file changed, 3 insertions(+), 1 deletion(-)
>>>>>>>>>
>>>>>>>>> diff --git a/drivers/gpio/gpio-intel-mid.c b/drivers/gpio/gpio-intel-mid.c
>>>>>>>>> index d1b50ef..05749a3 100644
>>>>>>>>> --- a/drivers/gpio/gpio-intel-mid.c
>>>>>>>>> +++ b/drivers/gpio/gpio-intel-mid.c
>>>>>>>>> @@ -394,7 +394,9 @@ static const struct irq_domain_ops intel_gpio_irq_ops = {
>>>>>>>>>
>>>>>>>>> static int intel_gpio_runtime_idle(struct device *dev)
>>>>>>>>> {
>>>>>>>>> - pm_schedule_suspend(dev, 500);
>>>>>>>>> + int err = pm_schedule_suspend(dev, 500);
>>>>>>>>> + if (err)
>>>>>>>>> + return err;
>>>>>>>>> return -EBUSY;
>>>>>>>>
>>>>>>>> wait, is it only me or this would look a lot better as:
>>>>>>>>
>>>>>>>> static int intel_gpio_runtime_idle(struct device *dev)
>>>>>>>> {
>>>>>>>> return pm_schedule_suspend(dev, 500);
>>>>>>>> }
>>>>>>>
>>>>>>> The reply to your suggestion is probably in this commit :)
>>>>>>>
>>>>>>> ---
>>>>>>> commit 45f0a85c8258741d11bda25c0a5669c06267204a
>>>>>>> Author: Rafael J. Wysocki <[email protected]>
>>>>>>> Date: Mon Jun 3 21:49:52 2013 +0200
>>>>>>>
>>>>>>> PM / Runtime: Rework the "runtime idle" helper routine
>>>>>>> ---
>>>>>>>
>>>>>>> We won't return 0 from here.
>>>>>>
>>>>>> so you never want to return 0, why don't you, then:
>>>>>>
>>>>>> static int intel_gpio_runtime_idle(struct device *dev)
>>>>>> {
>>>>>> pm_schedule_suspend(dev, 500);
>>>>>> return -EBUSY;
>>>>>> }
>>>>>
>>>>> That's how it is currently :)
>>>>>
>>>>> But this patch is making the function to return a different code in case
>>>>> of error. IMHO there is not much fuctional gain with it, but I see
>>>>> perhaps one extra info for tracing during development.
>>>>>
>>>>> Anyway, I'll let Xinhui to do further comment since he's the author.
>>>>>
>>>>> Br, David
>>>>>
>>>> hi ,David & Balbi
>>>> I checked several drivers yesterday to see how they use pm_schedule_suspend
>>>> then found one bug in i2c. Also I noticed gpio.
>>>> I think returning a correct error code is important.So I change -EBUSY
>>>> to *err*. To be honest,current code works well.
>>>
>>> In my experience, when I'm using fancy things like lauterbach a proper
>>> error code may save couple of minutes in my life :)
>>>
>>> I keep my ack here.
>>
>> fair enough, sorry for the noise ;-) It could still be simplified a bit:
>>
>> return err ?: -EBUSY;
>
> Agreed :)
> Xinhui, could we have this suggestion in your patch?
>
> Br, David
>

Hi all,
I am xinhui pan. Thanks to the VPN problem, I can't access Intel's network. So I have to send you this email by personal email address.
I am on Spring Festival vacation until Feb 9th. Sorry for that.
Your suggestion is very nice,thanks :)
I will generate V2 patch ASAP when my vocation is over. Thanks for all your help.

>>
>> --
>> balbi
>

2014-01-31 20:44:55

by David Cohen

[permalink] [raw]
Subject: Re: [PATCH] gpio-intel-mid: fix the incorrect return of idle callback

Hi Xinhui,

> Hi all,
> I am xinhui pan. Thanks to the VPN problem, I can't access Intel's
> network. So I have to send you this email by personal email address.
> I am on Spring Festival vacation until Feb 9th. Sorry for that.
> Your suggestion is very nice,thanks :)
> I will generate V2 patch ASAP when my vocation is over. Thanks for
> all your help.

Since I got your ack you agree with this change, I can resend on behalf
of you. Just enjoy your holidays :)

Br, David

2014-01-31 21:02:59

by David Cohen

[permalink] [raw]
Subject: [PATCH v2] gpio-intel-mid: fix the incorrect return of idle callback

From: "xinhui.pan" <[email protected]>

intel_gpio_runtime_idle should return correct error code if it do fail.
make it more correct even though -EBUSY is the most possible return value.

Signed-off-by: bo.he <[email protected]>
Signed-off-by: xinhui.pan <[email protected]>
Signed-off-by: David Cohen <[email protected]>
Cc: Felibe Balbi <[email protected]>
---
drivers/gpio/gpio-intel-mid.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpio/gpio-intel-mid.c b/drivers/gpio/gpio-intel-mid.c
index 41218e93b9fe..55688d0548e9 100644
--- a/drivers/gpio/gpio-intel-mid.c
+++ b/drivers/gpio/gpio-intel-mid.c
@@ -369,8 +369,8 @@ static const struct irq_domain_ops intel_gpio_irq_ops = {

static int intel_gpio_runtime_idle(struct device *dev)
{
- pm_schedule_suspend(dev, 500);
- return -EBUSY;
+ int err = pm_schedule_suspend(dev, 500);
+ return err ?: -EBUSY;
}

static const struct dev_pm_ops intel_gpio_pm_ops = {
--
1.8.4.2

2014-01-31 21:27:50

by Felipe Balbi

[permalink] [raw]
Subject: Re: [PATCH v2] gpio-intel-mid: fix the incorrect return of idle callback

On Fri, Jan 31, 2014 at 01:08:01PM -0800, David Cohen wrote:
> From: "xinhui.pan" <[email protected]>
>
> intel_gpio_runtime_idle should return correct error code if it do fail.
> make it more correct even though -EBUSY is the most possible return value.
>
> Signed-off-by: bo.he <[email protected]>
> Signed-off-by: xinhui.pan <[email protected]>
> Signed-off-by: David Cohen <[email protected]>
> Cc: Felibe Balbi <[email protected]>

Reviewed-by: Felipe Balbi <[email protected]>

> ---
> drivers/gpio/gpio-intel-mid.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpio/gpio-intel-mid.c b/drivers/gpio/gpio-intel-mid.c
> index 41218e93b9fe..55688d0548e9 100644
> --- a/drivers/gpio/gpio-intel-mid.c
> +++ b/drivers/gpio/gpio-intel-mid.c
> @@ -369,8 +369,8 @@ static const struct irq_domain_ops intel_gpio_irq_ops = {
>
> static int intel_gpio_runtime_idle(struct device *dev)
> {
> - pm_schedule_suspend(dev, 500);
> - return -EBUSY;
> + int err = pm_schedule_suspend(dev, 500);
> + return err ?: -EBUSY;
> }
>
> static const struct dev_pm_ops intel_gpio_pm_ops = {
> --
> 1.8.4.2
>

--
balbi


Attachments:
(No filename) (1.13 kB)
signature.asc (819.00 B)
Digital signature
Download all attachments

2014-02-05 09:37:53

by Linus Walleij

[permalink] [raw]
Subject: Re: [PATCH v2] gpio-intel-mid: fix the incorrect return of idle callback

On Fri, Jan 31, 2014 at 10:08 PM, David Cohen
<[email protected]> wrote:

> From: "xinhui.pan" <[email protected]>
>
> intel_gpio_runtime_idle should return correct error code if it do fail.
> make it more correct even though -EBUSY is the most possible return value.
>
> Signed-off-by: bo.he <[email protected]>
> Signed-off-by: xinhui.pan <[email protected]>
> Signed-off-by: David Cohen <[email protected]>
> Cc: Felibe Balbi <[email protected]>

Patch applied with Felipe's Reviewed-by tag.

Yours,
Linus Walleij