* [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, 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-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, 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
* 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
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