[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <fa686aa41002090928o6911d095ydca1e1e670a0fc22@mail.gmail.com>
Date: Tue, 9 Feb 2010 10:28:15 -0700
From: Grant Likely <grant.likely@...retlab.ca>
To: Anton Vorontsov <avorontsov@...mvista.com>
Cc: David Brownell <dbrownell@...rs.sourceforge.net>,
Benjamin Herrenschmidt <benh@...nel.crashing.org>,
David Miller <davem@...emloft.net>,
Michal Simek <monstr@...str.eu>, linuxppc-dev@...abs.org,
linux-kernel@...r.kernel.org, devicetree-discuss@...ts.ozlabs.org,
microblaze-uclinux@...e.uq.edu.au
Subject: Re: [PATCH 3/3] of/gpio: Introduce of_put_gpio(), add ref counting
for OF GPIO chips
On Fri, Feb 5, 2010 at 1:50 PM, Anton Vorontsov
<avorontsov@...mvista.com> wrote:
> 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.
>
> With this patch that situation is no longer possible. Though drivers
> will need to learn to put GPIOs back, so that GPIO controllers could
> be removed.
>
> Signed-off-by: Anton Vorontsov <avorontsov@...mvista.com>
Rather than having a lock at the device tree data pointer level which
mixes usage with potentially many other drivers; wouldn't it make more
sense to use a mutex at the of_gc subsystem context?
g.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists