linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] add might_sleep() to all implementations of gpio_free
       [not found] <200807230916.48056.david-b@pacbell.net>
@ 2008-07-24  7:28 ` Uwe Kleine-König
  2008-07-24  7:33   ` Uwe Kleine-König
  2008-09-15 20:02   ` [PATCH] gpio_free might sleep, generic part Uwe Kleine-König
  0 siblings, 2 replies; 14+ messages in thread
From: Uwe Kleine-König @ 2008-07-24  7:28 UTC (permalink / raw)
  To: linux-kernel
  Cc: David Brownell, Guennadi Liakhovetski, Greg KH, Kay Sievers,
	Andrew Morton, Russell King

According to Documentation gpio_free should only be called from task
context.  To make this more explicit add a might_sleep.

Signed-off-by: Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com>
Cc: David Brownell <david-b@pacbell.net>
Cc: Guennadi Liakhovetski <g.liakhovetski@pengutronix.de>
Cc: Greg KH <greg@kroah.com>
Cc: Kay Sievers <kay.sievers@vrfy.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
---
Hello,

I added #include <linux/kernel.h> for all files that didn't already have
it.  And note I didn't test these changes.

Best regards
Uwe

 arch/arm/mach-davinci/gpio.c         |    2 ++
 arch/arm/mach-ns9xxx/gpio.c          |    2 ++
 arch/arm/mach-orion5x/gpio.c         |    2 ++
 drivers/gpio/gpiolib.c               |    2 ++
 include/asm-arm/arch-at91/gpio.h     |    2 ++
 include/asm-arm/arch-imx/gpio.h      |    3 +++
 include/asm-arm/arch-ixp4xx/gpio.h   |    3 +++
 include/asm-arm/arch-ks8695/gpio.h   |    3 +++
 include/asm-mips/mach-au1x00/gpio.h  |    2 ++
 include/asm-mips/mach-bcm47xx/gpio.h |    3 +++
 include/asm-mips/mach-rc32434/gpio.h |    2 ++
 include/asm-x86/mach-rdc321x/gpio.h  |    3 +++
 include/linux/gpio.h                 |    3 +++
 13 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-davinci/gpio.c b/arch/arm/mach-davinci/gpio.c
index 9c67886..663e621 100644
--- a/arch/arm/mach-davinci/gpio.c
+++ b/arch/arm/mach-davinci/gpio.c
@@ -43,6 +43,8 @@ EXPORT_SYMBOL(gpio_request);
 
 void gpio_free(unsigned gpio)
 {
+	might_sleep();
+
 	if (gpio >= DAVINCI_N_GPIO)
 		return;
 
diff --git a/arch/arm/mach-ns9xxx/gpio.c b/arch/arm/mach-ns9xxx/gpio.c
index b3c963b..cc7141c 100644
--- a/arch/arm/mach-ns9xxx/gpio.c
+++ b/arch/arm/mach-ns9xxx/gpio.c
@@ -12,6 +12,7 @@
 #include <linux/init.h>
 #include <linux/spinlock.h>
 #include <linux/module.h>
+#include <linux/kernel.h>
 
 #include <asm/arch-ns9xxx/gpio.h>
 #include <asm/arch-ns9xxx/processor.h>
@@ -63,6 +64,7 @@ EXPORT_SYMBOL(gpio_request);
 
 void gpio_free(unsigned gpio)
 {
+	might_sleep();
 	clear_bit(gpio, gpiores);
 	return;
 }
diff --git a/arch/arm/mach-orion5x/gpio.c b/arch/arm/mach-orion5x/gpio.c
index d097979..f0ff5af 100644
--- a/arch/arm/mach-orion5x/gpio.c
+++ b/arch/arm/mach-orion5x/gpio.c
@@ -165,6 +165,8 @@ EXPORT_SYMBOL(gpio_request);
 
 void gpio_free(unsigned pin)
 {
+	might_sleep();
+
 	if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) {
 		pr_debug("%s: invalid GPIO %d\n", __func__, pin);
 		return;
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index beaf6b3..049d37d 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -291,6 +291,8 @@ void gpio_free(unsigned gpio)
 	unsigned long		flags;
 	struct gpio_desc	*desc;
 
+	might_sleep();
+
 	if (!gpio_is_valid(gpio)) {
 		WARN_ON(extra_checks);
 		return;
diff --git a/include/asm-arm/arch-at91/gpio.h b/include/asm-arm/arch-at91/gpio.h
index 0a241e2..2fd7a83 100644
--- a/include/asm-arm/arch-at91/gpio.h
+++ b/include/asm-arm/arch-at91/gpio.h
@@ -13,6 +13,7 @@
 #ifndef __ASM_ARCH_AT91RM9200_GPIO_H
 #define __ASM_ARCH_AT91RM9200_GPIO_H
 
+#include <linux/kernel.h>
 #include <asm/irq.h>
 
 #define PIN_BASE		NR_AIC_IRQS
@@ -220,6 +221,7 @@ static inline int gpio_request(unsigned gpio, const char *label)
 
 static inline void gpio_free(unsigned gpio)
 {
+	might_sleep();
 }
 
 extern int gpio_direction_input(unsigned gpio);
diff --git a/include/asm-arm/arch-imx/gpio.h b/include/asm-arm/arch-imx/gpio.h
index 4860232..55b896e 100644
--- a/include/asm-arm/arch-imx/gpio.h
+++ b/include/asm-arm/arch-imx/gpio.h
@@ -1,5 +1,6 @@
 #ifndef _IMX_GPIO_H
 
+#include <linux/kernel.h>
 #include <asm/arch/imx-regs.h>
 
 #define IMX_GPIO_ALLOC_MODE_NORMAL	0
@@ -63,6 +64,8 @@ static inline int gpio_request(unsigned gpio, const char *label)
 
 static inline void gpio_free(unsigned gpio)
 {
+	might_sleep();
+
 	imx_gpio_free(gpio);
 }
 
diff --git a/include/asm-arm/arch-ixp4xx/gpio.h b/include/asm-arm/arch-ixp4xx/gpio.h
index 3a4c5b8..d804661 100644
--- a/include/asm-arm/arch-ixp4xx/gpio.h
+++ b/include/asm-arm/arch-ixp4xx/gpio.h
@@ -25,6 +25,7 @@
 #ifndef __ASM_ARCH_IXP4XX_GPIO_H
 #define __ASM_ARCH_IXP4XX_GPIO_H
 
+#include <linux/kernel.h>
 #include <asm/hardware.h>
 
 static inline int gpio_request(unsigned gpio, const char *label)
@@ -34,6 +35,8 @@ static inline int gpio_request(unsigned gpio, const char *label)
 
 static inline void gpio_free(unsigned gpio)
 {
+	might_sleep();
+
 	return;
 }
 
diff --git a/include/asm-arm/arch-ks8695/gpio.h b/include/asm-arm/arch-ks8695/gpio.h
index 65ceea2..758df66 100644
--- a/include/asm-arm/arch-ks8695/gpio.h
+++ b/include/asm-arm/arch-ks8695/gpio.h
@@ -11,6 +11,8 @@
 #ifndef __ASM_ARCH_GPIO_H_
 #define __ASM_ARCH_GPIO_H_
 
+#include <linux/kernel.h>
+
 #define KS8695_GPIO_0		0
 #define KS8695_GPIO_1		1
 #define KS8695_GPIO_2		2
@@ -74,6 +76,7 @@ static inline int gpio_request(unsigned int pin, const char *label)
 
 static inline void gpio_free(unsigned int pin)
 {
+	might_sleep();
 }
 
 #endif
diff --git a/include/asm-mips/mach-au1x00/gpio.h b/include/asm-mips/mach-au1x00/gpio.h
index 2dc61e0..31eddba 100644
--- a/include/asm-mips/mach-au1x00/gpio.h
+++ b/include/asm-mips/mach-au1x00/gpio.h
@@ -1,6 +1,7 @@
 #ifndef _AU1XXX_GPIO_H_
 #define _AU1XXX_GPIO_H_
 
+#include <linux/kernel.h>
 #include <linux/types.h>
 
 #define AU1XXX_GPIO_BASE	200
@@ -31,6 +32,7 @@ static inline int gpio_request(unsigned gpio, const char *label)
 static inline void gpio_free(unsigned gpio)
 {
 	/* Not yet implemented */
+	might_sleep();
 }
 
 static inline int gpio_direction_input(unsigned gpio)
diff --git a/include/asm-mips/mach-bcm47xx/gpio.h b/include/asm-mips/mach-bcm47xx/gpio.h
index cfc8f4d..af17ccd 100644
--- a/include/asm-mips/mach-bcm47xx/gpio.h
+++ b/include/asm-mips/mach-bcm47xx/gpio.h
@@ -9,6 +9,8 @@
 #ifndef __BCM47XX_GPIO_H
 #define __BCM47XX_GPIO_H
 
+#include <linux/kernel.h>
+
 #define BCM47XX_EXTIF_GPIO_LINES	5
 #define BCM47XX_CHIPCO_GPIO_LINES	16
 
@@ -25,6 +27,7 @@ static inline int gpio_request(unsigned gpio, const char *label)
 
 static inline void gpio_free(unsigned gpio)
 {
+	might_sleep();
 }
 
 static inline int gpio_to_irq(unsigned gpio)
diff --git a/include/asm-mips/mach-rc32434/gpio.h b/include/asm-mips/mach-rc32434/gpio.h
index f946f5f..9b4722e 100644
--- a/include/asm-mips/mach-rc32434/gpio.h
+++ b/include/asm-mips/mach-rc32434/gpio.h
@@ -13,6 +13,7 @@
 #ifndef _RC32434_GPIO_H_
 #define _RC32434_GPIO_H_
 
+#include <linux/kernel.h>
 #include <linux/types.h>
 
 struct rb532_gpio_reg {
@@ -88,6 +89,7 @@ static inline int gpio_request(unsigned gpio, const char *label)
 static inline void gpio_free(unsigned gpio)
 {
 	/* Not yet implemented */
+	might_sleep();
 }
 
 static inline int gpio_direction_input(unsigned gpio)
diff --git a/include/asm-x86/mach-rdc321x/gpio.h b/include/asm-x86/mach-rdc321x/gpio.h
index acce0b7..3639ece 100644
--- a/include/asm-x86/mach-rdc321x/gpio.h
+++ b/include/asm-x86/mach-rdc321x/gpio.h
@@ -1,6 +1,8 @@
 #ifndef _RDC321X_GPIO_H
 #define _RDC321X_GPIO_H
 
+#include <linux/kernel.h>
+
 extern int rdc_gpio_get_value(unsigned gpio);
 extern void rdc_gpio_set_value(unsigned gpio, int value);
 extern int rdc_gpio_direction_input(unsigned gpio);
@@ -18,6 +20,7 @@ static inline int gpio_request(unsigned gpio, const char *label)
 
 static inline void gpio_free(unsigned gpio)
 {
+	might_sleep();
 	rdc_gpio_free(gpio);
 }
 
diff --git a/include/linux/gpio.h b/include/linux/gpio.h
index 98be6c5..570a4f3 100644
--- a/include/linux/gpio.h
+++ b/include/linux/gpio.h
@@ -8,6 +8,7 @@
 
 #else
 
+#include <linux/kernel.h>
 #include <linux/types.h>
 #include <linux/errno.h>
 
@@ -32,6 +33,8 @@ static inline int gpio_request(unsigned gpio, const char *label)
 
 static inline void gpio_free(unsigned gpio)
 {
+	might_sleep();
+
 	/* GPIO can never have been requested */
 	WARN_ON(1);
 }
-- 
1.5.6.3


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH] add might_sleep() to all implementations of gpio_free
  2008-07-24  7:28 ` [PATCH] add might_sleep() to all implementations of gpio_free Uwe Kleine-König
@ 2008-07-24  7:33   ` Uwe Kleine-König
  2008-09-15 20:02   ` [PATCH] gpio_free might sleep, generic part Uwe Kleine-König
  1 sibling, 0 replies; 14+ messages in thread
From: Uwe Kleine-König @ 2008-07-24  7:33 UTC (permalink / raw)
  To: linux-kernel
  Cc: David Brownell, Guennadi Liakhovetski, Greg KH, Kay Sievers,
	Andrew Morton, Russell King

Hello,

Uwe Kleine-König wrote:
> According to Documentation gpio_free should only be called from task
> context.  To make this more explicit add a might_sleep.
I just now noticed that I forgot to include my changes to
arch/blackfin/kernel/bfin_gpio.c in my patch.
Will fix that when/if resending the patch.

Best regards
Uwe

-- 
Uwe Kleine-König, Software Engineer
Digi International GmbH Branch Breisach, Küferstrasse 8, 79206 Breisach, Germany
Tax: 315/5781/0242 / VAT: DE153662976 / Reg. Amtsgericht Dortmund HRB 13962

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH] gpio_free might sleep, generic part
  2008-07-24  7:28 ` [PATCH] add might_sleep() to all implementations of gpio_free Uwe Kleine-König
  2008-07-24  7:33   ` Uwe Kleine-König
@ 2008-09-15 20:02   ` Uwe Kleine-König
  2008-09-15 20:02     ` [PATCH] gpio_free might sleep, arm architecture Uwe Kleine-König
  1 sibling, 1 reply; 14+ messages in thread
From: Uwe Kleine-König @ 2008-09-15 20:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: David Brownell, Guennadi Liakhovetski, Greg KH, Kay Sievers,
	Andrew Morton, Russell King

According to the documentation gpio_free should only be called from task
context only.  To make this more explicit add a might sleep to all
implementations.

This is the generic part which changes gpiolib and the fallback
implementation only.

Signed-off-by: Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de>
Cc: David Brownell <david-b@pacbell.net>
Cc: Guennadi Liakhovetski <g.liakhovetski@pengutronix.de>
Cc: Greg KH <greg@kroah.com>
Cc: Kay Sievers <kay.sievers@vrfy.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
---
Hello,

this is a new version of the patch I sent on 2008-07-24 07:28:35 GMT
(http://thread.gmane.org/gmane.linux.kernel/711078)

David Brownell suggested (via private mail) to split the patch along
arch lines.  I did that, added Blackfin (which I missed last time) and
left out DaVinci (in ARCH=arm) on Dave's request.

Something that really made me happy is that git managed to use the old
patch although many includes for arm changed location with only three
conflicts.

Note the series is not compile tested because I only have an x86
compiler handy at the moment.

Best regards
Uwe

 drivers/gpio/gpiolib.c |    2 ++
 include/linux/gpio.h   |    3 +++
 2 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index 8d29405..317004f 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -792,6 +792,8 @@ void gpio_free(unsigned gpio)
 	unsigned long		flags;
 	struct gpio_desc	*desc;
 
+	might_sleep();
+
 	if (!gpio_is_valid(gpio)) {
 		WARN_ON(extra_checks);
 		return;
diff --git a/include/linux/gpio.h b/include/linux/gpio.h
index 730a20b..e10c49a 100644
--- a/include/linux/gpio.h
+++ b/include/linux/gpio.h
@@ -8,6 +8,7 @@
 
 #else
 
+#include <linux/kernel.h>
 #include <linux/types.h>
 #include <linux/errno.h>
 
@@ -32,6 +33,8 @@ static inline int gpio_request(unsigned gpio, const char *label)
 
 static inline void gpio_free(unsigned gpio)
 {
+	might_sleep();
+
 	/* GPIO can never have been requested */
 	WARN_ON(1);
 }
-- 
1.5.6.5


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH] gpio_free might sleep, arm architecture
  2008-09-15 20:02   ` [PATCH] gpio_free might sleep, generic part Uwe Kleine-König
@ 2008-09-15 20:02     ` Uwe Kleine-König
  2008-09-15 20:02       ` [PATCH] gpio_free might sleep, mips architecture Uwe Kleine-König
  2008-09-15 21:21       ` [PATCH] gpio_free might sleep, arm architecture David Brownell
  0 siblings, 2 replies; 14+ messages in thread
From: Uwe Kleine-König @ 2008-09-15 20:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: David Brownell, Andrew Victor, Haavard Skinnemoen, Sascha Hauer,
	Guennadi Liakhovetski, Greg KH, Kay Sievers, Andrew Morton,
	Russell King, arm-linux-kernel

According to the documentation gpio_free should only be called from task
context only.  To make this more explicit add a might sleep to all
implementations.

This patch changes the gpio_free implementations for the arm
architecture.  DaVinci is skipped on purpose to simplify the merge
process for patches switching it over to use gpiolib as per request by
David Brownell.

Signed-off-by: Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de>
Cc: David Brownell <david-b@pacbell.net>
Cc: Andrew Victor <linux@maxim.org.za>
Cc: Haavard Skinnemoen <hskinnemoen@atmel.com>
Cc: Sascha Hauer <kernel@pengutronix.de>
Cc: Guennadi Liakhovetski <g.liakhovetski@pengutronix.de>
Cc: Greg KH <greg@kroah.com>
Cc: Kay Sievers <kay.sievers@vrfy.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
Cc: arm-linux-kernel@arm.linux.org.uk
---
 arch/arm/mach-at91/include/mach/gpio.h   |    2 ++
 arch/arm/mach-imx/include/mach/gpio.h    |    3 +++
 arch/arm/mach-ixp4xx/include/mach/gpio.h |    3 +++
 arch/arm/mach-ks8695/include/mach/gpio.h |    3 +++
 arch/arm/mach-ns9xxx/gpio.c              |    2 ++
 arch/arm/mach-orion5x/gpio.c             |    2 ++
 6 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-at91/include/mach/gpio.h b/arch/arm/mach-at91/include/mach/gpio.h
index 76d76e2..bffa674 100644
--- a/arch/arm/mach-at91/include/mach/gpio.h
+++ b/arch/arm/mach-at91/include/mach/gpio.h
@@ -13,6 +13,7 @@
 #ifndef __ASM_ARCH_AT91RM9200_GPIO_H
 #define __ASM_ARCH_AT91RM9200_GPIO_H
 
+#include <linux/kernel.h>
 #include <asm/irq.h>
 
 #define PIN_BASE		NR_AIC_IRQS
@@ -220,6 +221,7 @@ static inline int gpio_request(unsigned gpio, const char *label)
 
 static inline void gpio_free(unsigned gpio)
 {
+	might_sleep();
 }
 
 extern int gpio_direction_input(unsigned gpio);
diff --git a/arch/arm/mach-imx/include/mach/gpio.h b/arch/arm/mach-imx/include/mach/gpio.h
index 6e3d795..502d5aa 100644
--- a/arch/arm/mach-imx/include/mach/gpio.h
+++ b/arch/arm/mach-imx/include/mach/gpio.h
@@ -1,5 +1,6 @@
 #ifndef _IMX_GPIO_H
 
+#include <linux/kernel.h>
 #include <mach/imx-regs.h>
 
 #define IMX_GPIO_ALLOC_MODE_NORMAL	0
@@ -63,6 +64,8 @@ static inline int gpio_request(unsigned gpio, const char *label)
 
 static inline void gpio_free(unsigned gpio)
 {
+	might_sleep();
+
 	imx_gpio_free(gpio);
 }
 
diff --git a/arch/arm/mach-ixp4xx/include/mach/gpio.h b/arch/arm/mach-ixp4xx/include/mach/gpio.h
index 9fbde17..cd5aec2 100644
--- a/arch/arm/mach-ixp4xx/include/mach/gpio.h
+++ b/arch/arm/mach-ixp4xx/include/mach/gpio.h
@@ -25,6 +25,7 @@
 #ifndef __ASM_ARCH_IXP4XX_GPIO_H
 #define __ASM_ARCH_IXP4XX_GPIO_H
 
+#include <linux/kernel.h>
 #include <mach/hardware.h>
 
 static inline int gpio_request(unsigned gpio, const char *label)
@@ -34,6 +35,8 @@ static inline int gpio_request(unsigned gpio, const char *label)
 
 static inline void gpio_free(unsigned gpio)
 {
+	might_sleep();
+
 	return;
 }
 
diff --git a/arch/arm/mach-ks8695/include/mach/gpio.h b/arch/arm/mach-ks8695/include/mach/gpio.h
index 73c8416..d4af5c3 100644
--- a/arch/arm/mach-ks8695/include/mach/gpio.h
+++ b/arch/arm/mach-ks8695/include/mach/gpio.h
@@ -11,6 +11,8 @@
 #ifndef __ASM_ARCH_GPIO_H_
 #define __ASM_ARCH_GPIO_H_
 
+#include <linux/kernel.h>
+
 #define KS8695_GPIO_0		0
 #define KS8695_GPIO_1		1
 #define KS8695_GPIO_2		2
@@ -74,6 +76,7 @@ static inline int gpio_request(unsigned int pin, const char *label)
 
 static inline void gpio_free(unsigned int pin)
 {
+	might_sleep();
 }
 
 #endif
diff --git a/arch/arm/mach-ns9xxx/gpio.c b/arch/arm/mach-ns9xxx/gpio.c
index 804c300..9e088c4 100644
--- a/arch/arm/mach-ns9xxx/gpio.c
+++ b/arch/arm/mach-ns9xxx/gpio.c
@@ -12,6 +12,7 @@
 #include <linux/init.h>
 #include <linux/spinlock.h>
 #include <linux/module.h>
+#include <linux/kernel.h>
 
 #include <mach/gpio.h>
 #include <mach/processor.h>
@@ -63,6 +64,7 @@ EXPORT_SYMBOL(gpio_request);
 
 void gpio_free(unsigned gpio)
 {
+	might_sleep();
 	clear_bit(gpio, gpiores);
 	return;
 }
diff --git a/arch/arm/mach-orion5x/gpio.c b/arch/arm/mach-orion5x/gpio.c
index cd8a16f..3bdfd0a 100644
--- a/arch/arm/mach-orion5x/gpio.c
+++ b/arch/arm/mach-orion5x/gpio.c
@@ -165,6 +165,8 @@ EXPORT_SYMBOL(gpio_request);
 
 void gpio_free(unsigned pin)
 {
+	might_sleep();
+
 	if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) {
 		pr_debug("%s: invalid GPIO %d\n", __func__, pin);
 		return;
-- 
1.5.6.5


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH] gpio_free might sleep, mips architecture
  2008-09-15 20:02     ` [PATCH] gpio_free might sleep, arm architecture Uwe Kleine-König
@ 2008-09-15 20:02       ` Uwe Kleine-König
  2008-09-15 20:02         ` [PATCH] gpio_free might sleep, blackfin architecture Uwe Kleine-König
  2008-09-17 21:39         ` [PATCH] gpio_free might sleep, mips architecture Andrew Morton
  2008-09-15 21:21       ` [PATCH] gpio_free might sleep, arm architecture David Brownell
  1 sibling, 2 replies; 14+ messages in thread
From: Uwe Kleine-König @ 2008-09-15 20:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: David Brownell, Ralf Baechle, linux-mips, Guennadi Liakhovetski,
	Greg KH, Kay Sievers, Andrew Morton, Russell King

According to the documentation gpio_free should only be called from task
context only.  To make this more explicit add a might sleep to all
implementations.

This patch changes the gpio_free implementations for the mips
architecture.

Signed-off-by: Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de>
Cc: David Brownell <david-b@pacbell.net>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: linux-mips@linux-mips.org
Cc: Guennadi Liakhovetski <g.liakhovetski@pengutronix.de>
Cc: Greg KH <greg@kroah.com>
Cc: Kay Sievers <kay.sievers@vrfy.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
---
 include/asm-mips/mach-au1x00/gpio.h  |    2 ++
 include/asm-mips/mach-bcm47xx/gpio.h |    3 +++
 include/asm-mips/mach-rc32434/gpio.h |    2 ++
 3 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/include/asm-mips/mach-au1x00/gpio.h b/include/asm-mips/mach-au1x00/gpio.h
index 2dc61e0..31eddba 100644
--- a/include/asm-mips/mach-au1x00/gpio.h
+++ b/include/asm-mips/mach-au1x00/gpio.h
@@ -1,6 +1,7 @@
 #ifndef _AU1XXX_GPIO_H_
 #define _AU1XXX_GPIO_H_
 
+#include <linux/kernel.h>
 #include <linux/types.h>
 
 #define AU1XXX_GPIO_BASE	200
@@ -31,6 +32,7 @@ static inline int gpio_request(unsigned gpio, const char *label)
 static inline void gpio_free(unsigned gpio)
 {
 	/* Not yet implemented */
+	might_sleep();
 }
 
 static inline int gpio_direction_input(unsigned gpio)
diff --git a/include/asm-mips/mach-bcm47xx/gpio.h b/include/asm-mips/mach-bcm47xx/gpio.h
index cfc8f4d..af17ccd 100644
--- a/include/asm-mips/mach-bcm47xx/gpio.h
+++ b/include/asm-mips/mach-bcm47xx/gpio.h
@@ -9,6 +9,8 @@
 #ifndef __BCM47XX_GPIO_H
 #define __BCM47XX_GPIO_H
 
+#include <linux/kernel.h>
+
 #define BCM47XX_EXTIF_GPIO_LINES	5
 #define BCM47XX_CHIPCO_GPIO_LINES	16
 
@@ -25,6 +27,7 @@ static inline int gpio_request(unsigned gpio, const char *label)
 
 static inline void gpio_free(unsigned gpio)
 {
+	might_sleep();
 }
 
 static inline int gpio_to_irq(unsigned gpio)
diff --git a/include/asm-mips/mach-rc32434/gpio.h b/include/asm-mips/mach-rc32434/gpio.h
index f946f5f..9b4722e 100644
--- a/include/asm-mips/mach-rc32434/gpio.h
+++ b/include/asm-mips/mach-rc32434/gpio.h
@@ -13,6 +13,7 @@
 #ifndef _RC32434_GPIO_H_
 #define _RC32434_GPIO_H_
 
+#include <linux/kernel.h>
 #include <linux/types.h>
 
 struct rb532_gpio_reg {
@@ -88,6 +89,7 @@ static inline int gpio_request(unsigned gpio, const char *label)
 static inline void gpio_free(unsigned gpio)
 {
 	/* Not yet implemented */
+	might_sleep();
 }
 
 static inline int gpio_direction_input(unsigned gpio)
-- 
1.5.6.5


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH] gpio_free might sleep, blackfin architecture
  2008-09-15 20:02       ` [PATCH] gpio_free might sleep, mips architecture Uwe Kleine-König
@ 2008-09-15 20:02         ` Uwe Kleine-König
  2008-09-15 20:02           ` [PATCH] gpio_free might sleep, x86 architecture Uwe Kleine-König
  2008-09-16  2:16           ` [PATCH] gpio_free might sleep, blackfin architecture Bryan Wu
  2008-09-17 21:39         ` [PATCH] gpio_free might sleep, mips architecture Andrew Morton
  1 sibling, 2 replies; 14+ messages in thread
From: Uwe Kleine-König @ 2008-09-15 20:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: David Brownell, uclinux-dist-devel, Guennadi Liakhovetski,
	Greg KH, Kay Sievers, Andrew Morton, Russell King

According to the documentation gpio_free should only be called from task
context only.  To make this more explicit add a might sleep to all
implementations.

This patch changes the gpio_free implementations for the blackfin
architecture.

Signed-off-by: Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de>
Cc: David Brownell <david-b@pacbell.net>
Cc: Bryan Wu <cooloney@kernel.org
Cc: uclinux-dist-devel@blackfin.uclinux.org
Cc: Guennadi Liakhovetski <g.liakhovetski@pengutronix.de>
Cc: Greg KH <greg@kroah.com>
Cc: Kay Sievers <kay.sievers@vrfy.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
---
 arch/blackfin/kernel/bfin_gpio.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/arch/blackfin/kernel/bfin_gpio.c b/arch/blackfin/kernel/bfin_gpio.c
index ecbd141..394006d 100644
--- a/arch/blackfin/kernel/bfin_gpio.c
+++ b/arch/blackfin/kernel/bfin_gpio.c
@@ -1151,6 +1151,8 @@ void gpio_free(unsigned gpio)
 	if (check_gpio(gpio) < 0)
 		return;
 
+	might_sleep();
+
 	local_irq_save(flags);
 
 	if (unlikely(!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio)))) {
-- 
1.5.6.5


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH] gpio_free might sleep, x86 architecture
  2008-09-15 20:02         ` [PATCH] gpio_free might sleep, blackfin architecture Uwe Kleine-König
@ 2008-09-15 20:02           ` Uwe Kleine-König
  2008-09-17 12:59             ` Ingo Molnar
  2008-09-16  2:16           ` [PATCH] gpio_free might sleep, blackfin architecture Bryan Wu
  1 sibling, 1 reply; 14+ messages in thread
From: Uwe Kleine-König @ 2008-09-15 20:02 UTC (permalink / raw)
  To: linux-kernel
  Cc: David Brownell, Thomas Gleixner, Ingo Molnar, H. Peter Anvin,
	Guennadi Liakhovetski, Greg KH, Kay Sievers, Andrew Morton,
	Russell King

According to the documentation gpio_free should only be called from task
context only.  To make this more explicit add a might sleep to all
implementations.

This patch changes the gpio_free implementations for the x86
architecture.

Signed-off-by: Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de>
Cc: David Brownell <david-b@pacbell.net>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Guennadi Liakhovetski <g.liakhovetski@pengutronix.de>
Cc: Greg KH <greg@kroah.com>
Cc: Kay Sievers <kay.sievers@vrfy.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
---
 include/asm-x86/mach-rdc321x/gpio.h |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/include/asm-x86/mach-rdc321x/gpio.h b/include/asm-x86/mach-rdc321x/gpio.h
index acce0b7..3639ece 100644
--- a/include/asm-x86/mach-rdc321x/gpio.h
+++ b/include/asm-x86/mach-rdc321x/gpio.h
@@ -1,6 +1,8 @@
 #ifndef _RDC321X_GPIO_H
 #define _RDC321X_GPIO_H
 
+#include <linux/kernel.h>
+
 extern int rdc_gpio_get_value(unsigned gpio);
 extern void rdc_gpio_set_value(unsigned gpio, int value);
 extern int rdc_gpio_direction_input(unsigned gpio);
@@ -18,6 +20,7 @@ static inline int gpio_request(unsigned gpio, const char *label)
 
 static inline void gpio_free(unsigned gpio)
 {
+	might_sleep();
 	rdc_gpio_free(gpio);
 }
 
-- 
1.5.6.5


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH] gpio_free might sleep, arm architecture
  2008-09-15 20:02     ` [PATCH] gpio_free might sleep, arm architecture Uwe Kleine-König
  2008-09-15 20:02       ` [PATCH] gpio_free might sleep, mips architecture Uwe Kleine-König
@ 2008-09-15 21:21       ` David Brownell
  1 sibling, 0 replies; 14+ messages in thread
From: David Brownell @ 2008-09-15 21:21 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: linux-kernel, Andrew Victor, Haavard Skinnemoen, Sascha Hauer,
	Guennadi Liakhovetski, Greg KH, Kay Sievers, Andrew Morton,
	Russell King, arm-linux-kernel

On Monday 15 September 2008, Uwe Kleine-König wrote:
> According to the documentation gpio_free should only be called from task
> context only.  To make this more explicit add a might sleep to all
> implementations.
> 
> This patch changes the gpio_free implementations for the arm
> architecture.  DaVinci is skipped on purpose to simplify the merge
> process for patches switching it over to use gpiolib as per request by
> David Brownell.
> 
> Signed-off-by: Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de>

Acked-by: David Brownell <dbrownell@users.sourceforge.net>

Not dependent on anything else, FWIW (and Kevin already sent
the DaVinci patch for review) ... so IMO this is ready to
merge as soon as Russell agrees.

Consider this also an ack for the MIPS, Blackfin, and x86
arch-specific updates.  (Which are likewise ripe for merge.)

(These patches are not a 2.6.27 priority, of course...)

> Cc: David Brownell <david-b@pacbell.net>
> Cc: Andrew Victor <linux@maxim.org.za>
> Cc: Haavard Skinnemoen <hskinnemoen@atmel.com>
> Cc: Sascha Hauer <kernel@pengutronix.de>
> Cc: Guennadi Liakhovetski <g.liakhovetski@pengutronix.de>
> Cc: Greg KH <greg@kroah.com>
> Cc: Kay Sievers <kay.sievers@vrfy.org>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: Russell King <rmk+kernel@arm.linux.org.uk>
> Cc: arm-linux-kernel@arm.linux.org.uk
> ---
>  arch/arm/mach-at91/include/mach/gpio.h   |    2 ++
>  arch/arm/mach-imx/include/mach/gpio.h    |    3 +++
>  arch/arm/mach-ixp4xx/include/mach/gpio.h |    3 +++
>  arch/arm/mach-ks8695/include/mach/gpio.h |    3 +++
>  arch/arm/mach-ns9xxx/gpio.c              |    2 ++
>  arch/arm/mach-orion5x/gpio.c             |    2 ++
>  6 files changed, 15 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/arm/mach-at91/include/mach/gpio.h b/arch/arm/mach-at91/include/mach/gpio.h
> index 76d76e2..bffa674 100644
> --- a/arch/arm/mach-at91/include/mach/gpio.h
> +++ b/arch/arm/mach-at91/include/mach/gpio.h
> @@ -13,6 +13,7 @@
>  #ifndef __ASM_ARCH_AT91RM9200_GPIO_H
>  #define __ASM_ARCH_AT91RM9200_GPIO_H
>  
> +#include <linux/kernel.h>
>  #include <asm/irq.h>
>  
>  #define PIN_BASE		NR_AIC_IRQS
> @@ -220,6 +221,7 @@ static inline int gpio_request(unsigned gpio, const char *label)
>  
>  static inline void gpio_free(unsigned gpio)
>  {
> +	might_sleep();
>  }
>  
>  extern int gpio_direction_input(unsigned gpio);
> diff --git a/arch/arm/mach-imx/include/mach/gpio.h b/arch/arm/mach-imx/include/mach/gpio.h
> index 6e3d795..502d5aa 100644
> --- a/arch/arm/mach-imx/include/mach/gpio.h
> +++ b/arch/arm/mach-imx/include/mach/gpio.h
> @@ -1,5 +1,6 @@
>  #ifndef _IMX_GPIO_H
>  
> +#include <linux/kernel.h>
>  #include <mach/imx-regs.h>
>  
>  #define IMX_GPIO_ALLOC_MODE_NORMAL	0
> @@ -63,6 +64,8 @@ static inline int gpio_request(unsigned gpio, const char *label)
>  
>  static inline void gpio_free(unsigned gpio)
>  {
> +	might_sleep();
> +
>  	imx_gpio_free(gpio);
>  }
>  
> diff --git a/arch/arm/mach-ixp4xx/include/mach/gpio.h b/arch/arm/mach-ixp4xx/include/mach/gpio.h
> index 9fbde17..cd5aec2 100644
> --- a/arch/arm/mach-ixp4xx/include/mach/gpio.h
> +++ b/arch/arm/mach-ixp4xx/include/mach/gpio.h
> @@ -25,6 +25,7 @@
>  #ifndef __ASM_ARCH_IXP4XX_GPIO_H
>  #define __ASM_ARCH_IXP4XX_GPIO_H
>  
> +#include <linux/kernel.h>
>  #include <mach/hardware.h>
>  
>  static inline int gpio_request(unsigned gpio, const char *label)
> @@ -34,6 +35,8 @@ static inline int gpio_request(unsigned gpio, const char *label)
>  
>  static inline void gpio_free(unsigned gpio)
>  {
> +	might_sleep();
> +
>  	return;
>  }
>  
> diff --git a/arch/arm/mach-ks8695/include/mach/gpio.h b/arch/arm/mach-ks8695/include/mach/gpio.h
> index 73c8416..d4af5c3 100644
> --- a/arch/arm/mach-ks8695/include/mach/gpio.h
> +++ b/arch/arm/mach-ks8695/include/mach/gpio.h
> @@ -11,6 +11,8 @@
>  #ifndef __ASM_ARCH_GPIO_H_
>  #define __ASM_ARCH_GPIO_H_
>  
> +#include <linux/kernel.h>
> +
>  #define KS8695_GPIO_0		0
>  #define KS8695_GPIO_1		1
>  #define KS8695_GPIO_2		2
> @@ -74,6 +76,7 @@ static inline int gpio_request(unsigned int pin, const char *label)
>  
>  static inline void gpio_free(unsigned int pin)
>  {
> +	might_sleep();
>  }
>  
>  #endif
> diff --git a/arch/arm/mach-ns9xxx/gpio.c b/arch/arm/mach-ns9xxx/gpio.c
> index 804c300..9e088c4 100644
> --- a/arch/arm/mach-ns9xxx/gpio.c
> +++ b/arch/arm/mach-ns9xxx/gpio.c
> @@ -12,6 +12,7 @@
>  #include <linux/init.h>
>  #include <linux/spinlock.h>
>  #include <linux/module.h>
> +#include <linux/kernel.h>
>  
>  #include <mach/gpio.h>
>  #include <mach/processor.h>
> @@ -63,6 +64,7 @@ EXPORT_SYMBOL(gpio_request);
>  
>  void gpio_free(unsigned gpio)
>  {
> +	might_sleep();
>  	clear_bit(gpio, gpiores);
>  	return;
>  }
> diff --git a/arch/arm/mach-orion5x/gpio.c b/arch/arm/mach-orion5x/gpio.c
> index cd8a16f..3bdfd0a 100644
> --- a/arch/arm/mach-orion5x/gpio.c
> +++ b/arch/arm/mach-orion5x/gpio.c
> @@ -165,6 +165,8 @@ EXPORT_SYMBOL(gpio_request);
>  
>  void gpio_free(unsigned pin)
>  {
> +	might_sleep();
> +
>  	if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) {
>  		pr_debug("%s: invalid GPIO %d\n", __func__, pin);
>  		return;
> -- 
> 1.5.6.5
> 
> 



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] gpio_free might sleep, blackfin architecture
  2008-09-15 20:02         ` [PATCH] gpio_free might sleep, blackfin architecture Uwe Kleine-König
  2008-09-15 20:02           ` [PATCH] gpio_free might sleep, x86 architecture Uwe Kleine-König
@ 2008-09-16  2:16           ` Bryan Wu
  2008-09-17 19:30             ` Uwe Kleine-König
  1 sibling, 1 reply; 14+ messages in thread
From: Bryan Wu @ 2008-09-16  2:16 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: linux-kernel, David Brownell, uclinux-dist-devel,
	Guennadi Liakhovetski, Greg KH, Kay Sievers, Andrew Morton,
	Russell King

On Tue, Sep 16, 2008 at 4:02 AM, Uwe Kleine-König
<ukleinek@informatik.uni-freiburg.de> wrote:
> According to the documentation gpio_free should only be called from task
> context only.  To make this more explicit add a might sleep to all
> implementations.
>
> This patch changes the gpio_free implementations for the blackfin
> architecture.
>

It looks fine for me, thanks a lot.

Acked-by: Bryan Wu <cooloney@kernel.org>


> Signed-off-by: Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de>
> Cc: David Brownell <david-b@pacbell.net>
> Cc: Bryan Wu <cooloney@kernel.org
> Cc: uclinux-dist-devel@blackfin.uclinux.org
> Cc: Guennadi Liakhovetski <g.liakhovetski@pengutronix.de>
> Cc: Greg KH <greg@kroah.com>
> Cc: Kay Sievers <kay.sievers@vrfy.org>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: Russell King <rmk+kernel@arm.linux.org.uk>
> ---
>  arch/blackfin/kernel/bfin_gpio.c |    2 ++
>  1 files changed, 2 insertions(+), 0 deletions(-)
>
> diff --git a/arch/blackfin/kernel/bfin_gpio.c b/arch/blackfin/kernel/bfin_gpio.c
> index ecbd141..394006d 100644
> --- a/arch/blackfin/kernel/bfin_gpio.c
> +++ b/arch/blackfin/kernel/bfin_gpio.c
> @@ -1151,6 +1151,8 @@ void gpio_free(unsigned gpio)
>        if (check_gpio(gpio) < 0)
>                return;
>
> +       might_sleep();
> +
>        local_irq_save(flags);
>
>        if (unlikely(!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio)))) {
> --
> 1.5.6.5
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] gpio_free might sleep, x86 architecture
  2008-09-15 20:02           ` [PATCH] gpio_free might sleep, x86 architecture Uwe Kleine-König
@ 2008-09-17 12:59             ` Ingo Molnar
  0 siblings, 0 replies; 14+ messages in thread
From: Ingo Molnar @ 2008-09-17 12:59 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: linux-kernel, David Brownell, Thomas Gleixner, Ingo Molnar,
	H. Peter Anvin, Guennadi Liakhovetski, Greg KH, Kay Sievers,
	Andrew Morton, Russell King


* Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de> wrote:

> According to the documentation gpio_free should only be called from task
> context only.  To make this more explicit add a might sleep to all
> implementations.
> 
> This patch changes the gpio_free implementations for the x86
> architecture.

applied to tip/x86/debug, thanks Uwe,

	Ingo

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] gpio_free might sleep, blackfin architecture
  2008-09-16  2:16           ` [PATCH] gpio_free might sleep, blackfin architecture Bryan Wu
@ 2008-09-17 19:30             ` Uwe Kleine-König
  0 siblings, 0 replies; 14+ messages in thread
From: Uwe Kleine-König @ 2008-09-17 19:30 UTC (permalink / raw)
  To: Bryan Wu
  Cc: linux-kernel, David Brownell, uclinux-dist-devel,
	Guennadi Liakhovetski, Greg KH, Kay Sievers, Andrew Morton,
	Russell King

Hello Bryan,

Bryan Wu wrote:
> On Tue, Sep 16, 2008 at 4:02 AM, Uwe Kleine-König
> <ukleinek@informatik.uni-freiburg.de> wrote:
> > According to the documentation gpio_free should only be called from task
> > context only.  To make this more explicit add a might sleep to all
> > implementations.
> >
> > This patch changes the gpio_free implementations for the blackfin
> > architecture.
> >
> 
> It looks fine for me, thanks a lot.
> 
> Acked-by: Bryan Wu <cooloney@kernel.org>
I suspect David suggested to split my initial patch at arch lines
because then the patches can go via the arch trees into vanilla.

Best regards and thanks,
Uwe

-- 
Uwe Kleine-König

http://www.google.com/search?q=0+degree+Celsius+in+kelvin

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] gpio_free might sleep, mips architecture
  2008-09-15 20:02       ` [PATCH] gpio_free might sleep, mips architecture Uwe Kleine-König
  2008-09-15 20:02         ` [PATCH] gpio_free might sleep, blackfin architecture Uwe Kleine-König
@ 2008-09-17 21:39         ` Andrew Morton
  2008-09-18  9:32           ` Uwe Kleine-König
  1 sibling, 1 reply; 14+ messages in thread
From: Andrew Morton @ 2008-09-17 21:39 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: linux-kernel, david-b, ralf, linux-mips, g.liakhovetski, greg,
	kay.sievers, rmk+kernel

On Mon, 15 Sep 2008 22:02:41 +0200
Uwe Kleine-K__nig <ukleinek@informatik.uni-freiburg.de> wrote:

> According to the documentation gpio_free should only be called from task
> context only.  To make this more explicit add a might sleep to all
> implementations.
> 
> This patch changes the gpio_free implementations for the mips
> architecture.
> 
> Signed-off-by: Uwe Kleine-K__nig <ukleinek@informatik.uni-freiburg.de>
> Cc: David Brownell <david-b@pacbell.net>
> Cc: Ralf Baechle <ralf@linux-mips.org>
> Cc: linux-mips@linux-mips.org
> Cc: Guennadi Liakhovetski <g.liakhovetski@pengutronix.de>
> Cc: Greg KH <greg@kroah.com>
> Cc: Kay Sievers <kay.sievers@vrfy.org>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: Russell King <rmk+kernel@arm.linux.org.uk>
> ---
>  include/asm-mips/mach-au1x00/gpio.h  |    2 ++
>  include/asm-mips/mach-bcm47xx/gpio.h |    3 +++
>  include/asm-mips/mach-rc32434/gpio.h |    2 ++
>  3 files changed, 7 insertions(+), 0 deletions(-)
> 
> diff --git a/include/asm-mips/mach-au1x00/gpio.h b/include/asm-mips/mach-au1x00/gpio.h
> index 2dc61e0..31eddba 100644
> --- a/include/asm-mips/mach-au1x00/gpio.h
> +++ b/include/asm-mips/mach-au1x00/gpio.h
> @@ -1,6 +1,7 @@
>  #ifndef _AU1XXX_GPIO_H_
>  #define _AU1XXX_GPIO_H_
>  
> +#include <linux/kernel.h>
>  #include <linux/types.h>
>  
>  #define AU1XXX_GPIO_BASE	200
> @@ -31,6 +32,7 @@ static inline int gpio_request(unsigned gpio, const char *label)
>  static inline void gpio_free(unsigned gpio)
>  {
>  	/* Not yet implemented */
> +	might_sleep();
>  }
>  
>  static inline int gpio_direction_input(unsigned gpio)
> diff --git a/include/asm-mips/mach-bcm47xx/gpio.h b/include/asm-mips/mach-bcm47xx/gpio.h
> index cfc8f4d..af17ccd 100644
> --- a/include/asm-mips/mach-bcm47xx/gpio.h
> +++ b/include/asm-mips/mach-bcm47xx/gpio.h
> @@ -9,6 +9,8 @@
>  #ifndef __BCM47XX_GPIO_H
>  #define __BCM47XX_GPIO_H
>  
> +#include <linux/kernel.h>
> +
>  #define BCM47XX_EXTIF_GPIO_LINES	5
>  #define BCM47XX_CHIPCO_GPIO_LINES	16
>  
> @@ -25,6 +27,7 @@ static inline int gpio_request(unsigned gpio, const char *label)
>  
>  static inline void gpio_free(unsigned gpio)
>  {
> +	might_sleep();
>  }
>  
>  static inline int gpio_to_irq(unsigned gpio)
> diff --git a/include/asm-mips/mach-rc32434/gpio.h b/include/asm-mips/mach-rc32434/gpio.h
> index f946f5f..9b4722e 100644
> --- a/include/asm-mips/mach-rc32434/gpio.h
> +++ b/include/asm-mips/mach-rc32434/gpio.h
> @@ -13,6 +13,7 @@
>  #ifndef _RC32434_GPIO_H_
>  #define _RC32434_GPIO_H_
>  
> +#include <linux/kernel.h>
>  #include <linux/types.h>
>  
>  struct rb532_gpio_reg {
> @@ -88,6 +89,7 @@ static inline int gpio_request(unsigned gpio, const char *label)
>  static inline void gpio_free(unsigned gpio)
>  {
>  	/* Not yet implemented */
> +	might_sleep();
>  }
>  

There is no gpio_free() in linux-next's include/asm-mips/mach-rc32434/gpio.h

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] gpio_free might sleep, mips architecture
  2008-09-17 21:39         ` [PATCH] gpio_free might sleep, mips architecture Andrew Morton
@ 2008-09-18  9:32           ` Uwe Kleine-König
  2008-09-18 13:59             ` Ralf Baechle
  0 siblings, 1 reply; 14+ messages in thread
From: Uwe Kleine-König @ 2008-09-18  9:32 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-kernel, david-b, ralf, linux-mips, g.liakhovetski, greg,
	kay.sievers, rmk+kernel

Hello,

Andrew Morton wrote:
> > diff --git a/include/asm-mips/mach-rc32434/gpio.h b/include/asm-mips/mach-rc32434/gpio.h
> > index f946f5f..9b4722e 100644
> > --- a/include/asm-mips/mach-rc32434/gpio.h
> > +++ b/include/asm-mips/mach-rc32434/gpio.h
> > @@ -13,6 +13,7 @@
> >  #ifndef _RC32434_GPIO_H_
> >  #define _RC32434_GPIO_H_
> >  
> > +#include <linux/kernel.h>
> >  #include <linux/types.h>
> >  
> >  struct rb532_gpio_reg {
> > @@ -88,6 +89,7 @@ static inline int gpio_request(unsigned gpio, const char *label)
> >  static inline void gpio_free(unsigned gpio)
> >  {
> >  	/* Not yet implemented */
> > +	might_sleep();
> >  }
> >  
> 
> There is no gpio_free() in linux-next's include/asm-mips/mach-rc32434/gpio.h
This is OK.  This machine type is converted to GPIO lib in linus-next.
So just drop the two hunks for this file.  (Note, you only dropped the
addition of might_sleep, but then including linux/kernel.h isn't needed
either.)

Best regards and thanks
Uwe

-- 
Uwe Kleine-König

exit vi, lesson II:
: w q ! <CR>

NB: write the current file

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] gpio_free might sleep, mips architecture
  2008-09-18  9:32           ` Uwe Kleine-König
@ 2008-09-18 13:59             ` Ralf Baechle
  0 siblings, 0 replies; 14+ messages in thread
From: Ralf Baechle @ 2008-09-18 13:59 UTC (permalink / raw)
  To: Uwe Kleine-König, Andrew Morton, linux-kernel, david-b,
	linux-mips, g.liakhovetski, greg, kay.sievers, rmk+kernel

On Thu, Sep 18, 2008 at 11:32:42AM +0200, Uwe Kleine-König wrote:

> Andrew Morton wrote:
> > > diff --git a/include/asm-mips/mach-rc32434/gpio.h b/include/asm-mips/mach-rc32434/gpio.h
> > > index f946f5f..9b4722e 100644
> > > --- a/include/asm-mips/mach-rc32434/gpio.h
> > > +++ b/include/asm-mips/mach-rc32434/gpio.h
> > > @@ -13,6 +13,7 @@
> > >  #ifndef _RC32434_GPIO_H_
> > >  #define _RC32434_GPIO_H_
> > >  
> > > +#include <linux/kernel.h>
> > >  #include <linux/types.h>
> > >  
> > >  struct rb532_gpio_reg {
> > > @@ -88,6 +89,7 @@ static inline int gpio_request(unsigned gpio, const char *label)
> > >  static inline void gpio_free(unsigned gpio)
> > >  {
> > >  	/* Not yet implemented */
> > > +	might_sleep();
> > >  }
> > >  
> > 
> > There is no gpio_free() in linux-next's include/asm-mips/mach-rc32434/gpio.h
> This is OK.  This machine type is converted to GPIO lib in linus-next.
> So just drop the two hunks for this file.  (Note, you only dropped the
> addition of might_sleep, but then including linux/kernel.h isn't needed
> either.)

A few days ago I've put a patch to move include/asm-mips/ to arch/ like
several other architectures already did so you patch may conflict ...

  Ralf

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2008-09-18 14:00 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <200807230916.48056.david-b@pacbell.net>
2008-07-24  7:28 ` [PATCH] add might_sleep() to all implementations of gpio_free Uwe Kleine-König
2008-07-24  7:33   ` Uwe Kleine-König
2008-09-15 20:02   ` [PATCH] gpio_free might sleep, generic part Uwe Kleine-König
2008-09-15 20:02     ` [PATCH] gpio_free might sleep, arm architecture Uwe Kleine-König
2008-09-15 20:02       ` [PATCH] gpio_free might sleep, mips architecture Uwe Kleine-König
2008-09-15 20:02         ` [PATCH] gpio_free might sleep, blackfin architecture Uwe Kleine-König
2008-09-15 20:02           ` [PATCH] gpio_free might sleep, x86 architecture Uwe Kleine-König
2008-09-17 12:59             ` Ingo Molnar
2008-09-16  2:16           ` [PATCH] gpio_free might sleep, blackfin architecture Bryan Wu
2008-09-17 19:30             ` Uwe Kleine-König
2008-09-17 21:39         ` [PATCH] gpio_free might sleep, mips architecture Andrew Morton
2008-09-18  9:32           ` Uwe Kleine-König
2008-09-18 13:59             ` Ralf Baechle
2008-09-15 21:21       ` [PATCH] gpio_free might sleep, arm architecture David Brownell

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).