Re: [PATCH RFC 0/3] Implement refcounting for OF GPIO chips

From: Michal Simek
Date: Tue Feb 09 2010 - 04:43:32 EST


Anton Vorontsov wrote:
Hi all,

OF GPIO infrastructure is using dynamic GPIO bases, so it is possible
that of_get_gpio()'s returned GPIO number will be no longer valid, or
worse, it may point to an unexpected GPIO controller.

This scenario is possible:

driver A: driver B: driver C:
--------- --------- ---------
gpiochip_add()
gpio = of_get_gpio()
gpiochip_remove()
gpiochip_add()
gpio_request(gpio);
gpio_set_value(gpio);

That is, driver A assumes that it is working with GPIO from driver B,
but in practice it may disappear and driver C will take its GPIO base
number, so it will provide the same GPIO numbers.

The above situation is hard to trigger, but the issue is there
nonetheless, and so needs fixing.


I tested xilinx gpio driver, heartbeat trigger and access through sysfs and I haven't found any problem. There is only small part of code for Microblaze and it is the same with PowerPC. If is Ben OK with it, I am ok too.

Thanks,
Michal



Thanks,

p.s. The patches are based on top of
'[PATCH v2 0/4] OF GPIO integration for I2C/SPI GPIO chips'
http://lkml.org/lkml/2010/2/5/243



--
Michal Simek, Ing. (M.Eng)
PetaLogix - Linux Solutions for a Reconfigurable World
w: www.petalogix.com p: +61-7-30090663,+42-0-721842854 f: +61-7-30090663
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/