[PATCH] qe_lib: Set gpio data before changing the direction to output
Michael Barkowski
michaelbarkowski at ruggedcom.com
Wed Aug 19 07:23:32 EST 2009
Timur Tabi wrote:
> Michael Barkowski wrote:
>
>> diff --git a/arch/powerpc/sysdev/qe_lib/gpio.c b/arch/powerpc/sysdev/qe_lib/gpio.c
>> index 3485288..e7bf136 100644
>> --- a/arch/powerpc/sysdev/qe_lib/gpio.c
>> +++ b/arch/powerpc/sysdev/qe_lib/gpio.c
>> @@ -107,12 +107,11 @@ static int qe_gpio_dir_out(struct gpio_chip *gc, unsigned int gpio, int val)
>>
>> spin_lock_irqsave(&qe_gc->lock, flags);
>>
>> + qe_gpio_set(gc, gpio, val);
>
> qe_gpio_set already calls spin_lock_irqsave(), so you'll have nested spinlocks, which will lock up on SMP.
>
> Let me guess, you didn't test this on a dual-core system?
That is correct. See v2 and please test, YMMV, etc
--
Michael Barkowski
More information about the Linuxppc-dev
mailing list