Skip to contentSkip to conversation

gpio-intel-mid: fix the incorrect return of idle callback

PATCH In review xinhui.pan 4 participants 5 messages Jan 30, 2014 – Feb 5, 2014 GPIO

lore
Share & tools
lore

xinhui.pan

author
#0 lore raw
Quoted 82 lines · David Cohen
Quoted 81 lines · Felipe Balbi
Quoted 79 lines · David Cohen
Quoted 66 lines · xinhui.pan
Quoted 64 lines · David Cohen
Quoted 47 lines · Felipe Balbi
Quoted 38 lines · David Cohen
Quoted 28 lines · Felipe Balbi
Quoted 16 lines · xinhui.pan

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.

---
 drivers/gpio/gpio-intel-mid.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/gpio/gpio-intel-mid.c +0 -0
index d1b50ef..05749a3 100644

drivers/gpio/gpio-intel-mid.c static const struct irq_domain_ops intel_gpio_irq_ops = { · line 400

Quoted 8 lines
drivers/gpio/gpio-intel-mid.c +3 -1
@@ -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:

Quoted 4 lines

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

Quoted 7 lines
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.

Quoted 7 lines

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.

Quoted 7 lines
Quoted 2 lines

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.

Quoted 9 lines
Quoted 3 lines

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.

Quoted 4 lines
Quoted 3 lines
Signature · 2 lines
-- 
balbi

--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

#1 lore raw

Hi Xinhui,

Quoted 7 lines

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

#2 lore raw

PATCH v2 1/1 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.

---
 drivers/gpio/gpio-intel-mid.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/gpio/gpio-intel-mid.c +2 -2
index 41218e93b9fe..55688d0548e9 100644
@@ -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 = {
Signature · 1 line
1.8.4.2
Reviewed-by on v2 1/1
#3 lore raw
Quoted 9 lines · David Cohen

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.

Quoted 22 lines
---
 drivers/gpio/gpio-intel-mid.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/gpio/gpio-intel-mid.c +2 -2
index 41218e93b9fe..55688d0548e9 100644
@@ -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 = {
Signature · 1 line
1.8.4.2
Signature · 1 line
balbi
#4 lore raw
In reply to David Cohen
Quoted 9 lines · David Cohen

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.

Patch applied with Felipe's Reviewed-by tag.

Yours,
Linus Walleij