unmap memory mapped with devm_ioremap_resource

Adrian Fiergolski adrian.fiergolski at fastree3d.com
Fri Dec 9 11:14:14 EST 2022


Hi,

Does the community have any other ideas? Or I am wrong, and devm_iounmap 
is enough?

Regards,
Adrian

On 6.12.2022 22:23, Adrian Fiergolski wrote:
>
> Hi Costa,
>
> Thank you for your reply.
>
> I saw 'devm_iounmap' , but, correct me if I am wrong, I think is not 
> enough.
>
> devm_ioremap_resource calls __devm_ioremap_resource (link 
> <https://elixir.bootlin.com/linux/v5.10.157/source/lib/devres.c#L117>) 
> which calls eventually __devm_request_region (link 
> <https://elixir.bootlin.com/linux/v5.10.157/source/kernel/resource.c#L1520>) 
> and __devm_ioremap (link 
> <https://elixir.bootlin.com/linux/v5.10.157/source/lib/devres.c#L25>). 
> Those two will allocate 2 devres: devm_region_release and 
> devm_ioremap_release.
>
> The proposed devm_iounmap (link 
> <https://elixir.bootlin.com/linux/v5.10.157/source/lib/devres.c#L108>) 
> seems to destroy only devm_ioremap_release devres.
>
> Regards,
> Adrian
>
> On 2.12.2022 19:01, Constantine Shulyupin wrote:
>> Hi,
>>
>> I suppose you are looking for `devm_iounmap`.
>> You can find example of usage in `drivers/fpga/dfl.c`:
>>
>> ...
>>                          feature->ioaddr =
>>                                 devm_ioremap_resource(binfo->dev,
>>                                                       &finfo->mmio_res);
>> ...
>>
>> static void build_info_complete(struct build_feature_devs_info *binfo)
>> {
>>         devm_iounmap(binfo->dev, binfo->ioaddr);
>>         devm_release_mem_region(binfo->dev, binfo->start, binfo->len);
>> }
>>
>> Regards,
>> Costa
>>
>>
>> On Fri, 2 Dec 2022 at 19:25, Adrian Fiergolski
>> <adrian.fiergolski at fastree3d.com>  wrote:
>>> Hello,
>>>
>>> I am extending xilinx-hls driver
>>> (https://github.com/Xilinx/linux-xlnx/blob/master/drivers/media/platform/xilinx/xilinx-hls.c)
>>> to support of_overlay.
>>>
>>> In order to reflect in the driver changes being applied by the overlay
>>> to the device tree, I need to unmap first the memory mapped with
>>> devm_ioremap_resource. How to do it properly?
>>>
>>> I think it's uncommon, as normally kernel (devm_* functions) manages
>>> those resources itself with devres, so I can't find inspiration in other
>>> drivers.
>>>
>>> Regards,
>>> Adrian
>>>
>>>
>>>
>>> _______________________________________________
>>> Kernelnewbies mailing list
>>> Kernelnewbies at kernelnewbies.org
>>> https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20221209/297c230a/attachment.html>


More information about the Kernelnewbies mailing list