Re: [PATCH] gpio: devres: Handle nonexclusive GPIOs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Linus,

On 2018-12-04 14:38, Linus Walleij wrote:
> On Tue, Dec 4, 2018 at 2:16 PM Marek Szyprowski
> <m.szyprowski@xxxxxxxxxxx> wrote:
>
>> gpiod_get_from_of_node() still needs a fix for non-exclusive access
>> (current linux-next lacks code for it), but I assume it will be handled
>> by separate patch.
> Yes but since that is not a regression I am just including it in
> the repost of the fixup series.
>
>> The only problem I predict is the lack of refcounting. Assuming that you
>> would like to continue 'Regulator ena_gpiod fixups' approach, the first
>> call to devm_gpiod_unhinge() will remove 'all allocated instances', so
>> if the same descriptor will be used for more than one regulator, it must
>> be somehow handled...
> I looked closer at it... so if you try to remove a resource from
> devres handling that is not handled by devres, it will return -ENOENT
> which spits a warning, so I will augment the patch adding
> the gpiod_unhinge() so it ignores this error.
>
> Since at that point we will immediately handle over the first
> user of the GPIO descriptor to the regulator core, the first call
> effectively transfers the ownership of *all* users of this descriptor
> to the regulator core.
>
> When the second descriptor is unhinged, nothing will happen
> (as it is no longer under managed resources) then it is passed
> to the regulator core that will identify that it is already managing
> this descriptor, and simply increase the refcount to 1.
>
> This happens in regulator_ena_gpio_request() where the
> regulator_ena_gpio_list is traversed and if the gpio desc
> is already in used it simply results in
> pin->request_count++.
>
> So AFAICT it is going to work just fine if I just make sure
> that devm_gpiod_unhinge() ignores -ENOENT.
>
> Adding this!

It is still something wrong there, because I get a warning from
devm_gpiod_unhinge() two times. If I got it right, I should only get one
such warning with this patch.

Best regards
-- 
Marek Szyprowski, PhD
Samsung R&D Institute Poland




[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux