* unmap memory mapped with devm_ioremap_resource
@ 2022-12-02 17:24 Adrian Fiergolski
2022-12-02 18:01 ` Constantine Shulyupin
0 siblings, 1 reply; 8+ messages in thread
From: Adrian Fiergolski @ 2022-12-02 17:24 UTC (permalink / raw)
To: kernelnewbies
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@kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: unmap memory mapped with devm_ioremap_resource
2022-12-02 17:24 unmap memory mapped with devm_ioremap_resource Adrian Fiergolski
@ 2022-12-02 18:01 ` Constantine Shulyupin
2022-12-06 21:23 ` Adrian Fiergolski
0 siblings, 1 reply; 8+ messages in thread
From: Constantine Shulyupin @ 2022-12-02 18:01 UTC (permalink / raw)
To: Adrian Fiergolski; +Cc: kernelnewbies
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@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@kernelnewbies.org
> https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
--
Constantine Shulyupin
_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: unmap memory mapped with devm_ioremap_resource
2022-12-02 18:01 ` Constantine Shulyupin
@ 2022-12-06 21:23 ` Adrian Fiergolski
2022-12-09 16:14 ` Adrian Fiergolski
0 siblings, 1 reply; 8+ messages in thread
From: Adrian Fiergolski @ 2022-12-06 21:23 UTC (permalink / raw)
To: Constantine Shulyupin; +Cc: kernelnewbies
[-- Attachment #1.1: Type: text/plain, Size: 2170 bytes --]
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@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@kernelnewbies.org
>> https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>
>
[-- Attachment #1.2: Type: text/html, Size: 3281 bytes --]
[-- Attachment #2: Type: text/plain, Size: 170 bytes --]
_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: unmap memory mapped with devm_ioremap_resource
2022-12-06 21:23 ` Adrian Fiergolski
@ 2022-12-09 16:14 ` Adrian Fiergolski
2022-12-09 19:58 ` jim.cromie
0 siblings, 1 reply; 8+ messages in thread
From: Adrian Fiergolski @ 2022-12-09 16:14 UTC (permalink / raw)
To: Constantine Shulyupin; +Cc: kernelnewbies
[-- Attachment #1.1: Type: text/plain, Size: 2410 bytes --]
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@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@kernelnewbies.org
>>> https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
[-- Attachment #1.2: Type: text/html, Size: 3855 bytes --]
[-- Attachment #2: Type: text/plain, Size: 170 bytes --]
_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: unmap memory mapped with devm_ioremap_resource
2022-12-09 16:14 ` Adrian Fiergolski
@ 2022-12-09 19:58 ` jim.cromie
2022-12-09 20:35 ` Valdis Klētnieks
0 siblings, 1 reply; 8+ messages in thread
From: jim.cromie @ 2022-12-09 19:58 UTC (permalink / raw)
To: Adrian Fiergolski; +Cc: Constantine Shulyupin, kernelnewbies
On Fri, Dec 9, 2022 at 9:14 AM Adrian Fiergolski
<adrian.fiergolski@fastree3d.com> wrote:
>
> Hi,
>
> Does the community have any other ideas? Or I am wrong, and devm_iounmap is enough?
>
I dunno, but it says you asked ~4 hrs ago.
I bet you could just try it and get an answer faster.
Do feel free to report back.
> 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) which calls eventually __devm_request_region (link) and __devm_ioremap (link). Those two will allocate 2 devres: devm_region_release and devm_ioremap_release.
>
> The proposed devm_iounmap (link) 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@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@kernelnewbies.org
> https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies@kernelnewbies.org
> https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: unmap memory mapped with devm_ioremap_resource
2022-12-09 19:58 ` jim.cromie
@ 2022-12-09 20:35 ` Valdis Klētnieks
2022-12-09 22:52 ` Adrian Fiergolski
0 siblings, 1 reply; 8+ messages in thread
From: Valdis Klētnieks @ 2022-12-09 20:35 UTC (permalink / raw)
To: jim.cromie; +Cc: Constantine Shulyupin, kernelnewbies, Adrian Fiergolski
[-- Attachment #1.1: Type: text/plain, Size: 892 bytes --]
On Fri, 09 Dec 2022 12:58:20 -0700, jim.cromie@gmail.com said:
> On Fri, Dec 9, 2022 at 9:14 AM Adrian Fiergolski <adrian.fiergolski@fastree3d.com> wrote:
> > Does the community have any other ideas? Or I am wrong, and devm_iounmap is enough?
> I dunno, but it says you asked ~4 hrs ago.
> I bet you could just try it and get an answer faster.
> Do feel free to report back.
Note that it *is* possible for something to *look* like it works, but it leaves
dangling pointers or other hidden corruption that takes a while to surface. I
once had to troubleshoot a userspace bug that worked fine on one system but
blew up on another with a different malloc() - some 6 million malloc calls
after the bug hit.
Fortunately, the vast majority of kernel functions will return an error code if
anything at all fishy happened, so just checking return codes on *everything* is
usually good enough...
[-- Attachment #1.2: Type: application/pgp-signature, Size: 494 bytes --]
[-- Attachment #2: Type: text/plain, Size: 170 bytes --]
_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: unmap memory mapped with devm_ioremap_resource
2022-12-09 20:35 ` Valdis Klētnieks
@ 2022-12-09 22:52 ` Adrian Fiergolski
2022-12-10 6:53 ` Constantine Shulyupin
0 siblings, 1 reply; 8+ messages in thread
From: Adrian Fiergolski @ 2022-12-09 22:52 UTC (permalink / raw)
To: Valdis Klētnieks, jim.cromie; +Cc: Constantine Shulyupin, kernelnewbies
Hi,
I checked the kernel source code and, as I wrote, in my opinion, the
proposed devm_iounmap doesn't seem to release all resources allocated
with devm_ioremap_resource. Thus, I don't see a point in testing it, and
I am still looking for the proper solution.
Jim, the original question is more than a week old.
Regards,
Adrian
On 9.12.2022 at 21:35, Valdis Klētnieks wrote:
> On Fri, 09 Dec 2022 12:58:20 -0700, jim.cromie@gmail.com said:
>> On Fri, Dec 9, 2022 at 9:14 AM Adrian Fiergolski <adrian.fiergolski@fastree3d.com> wrote:
>>> Does the community have any other ideas? Or I am wrong, and devm_iounmap is enough?
>> I dunno, but it says you asked ~4 hrs ago.
>> I bet you could just try it and get an answer faster.
>> Do feel free to report back.
> Note that it *is* possible for something to *look* like it works, but it leaves
> dangling pointers or other hidden corruption that takes a while to surface. I
> once had to troubleshoot a userspace bug that worked fine on one system but
> blew up on another with a different malloc() - some 6 million malloc calls
> after the bug hit.
>
> Fortunately, the vast majority of kernel functions will return an error code if
> anything at all fishy happened, so just checking return codes on *everything* is
> usually good enough...
>
_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: unmap memory mapped with devm_ioremap_resource
2022-12-09 22:52 ` Adrian Fiergolski
@ 2022-12-10 6:53 ` Constantine Shulyupin
0 siblings, 0 replies; 8+ messages in thread
From: Constantine Shulyupin @ 2022-12-10 6:53 UTC (permalink / raw)
To: Adrian Fiergolski; +Cc: jim.cromie, Valdis Klētnieks, kernelnewbies
It looks like the proper solution is to use two functions:
devm_iounmap and devm_release_mem_region. There are a lot of examples
in the kernel.
Regards,
Costa
On Sat, 10 Dec 2022 at 00:52, Adrian Fiergolski
<adrian.fiergolski@fastree3d.com> wrote:
>
> Hi,
>
> I checked the kernel source code and, as I wrote, in my opinion, the
> proposed devm_iounmap doesn't seem to release all resources allocated
> with devm_ioremap_resource. Thus, I don't see a point in testing it, and
> I am still looking for the proper solution.
>
> Jim, the original question is more than a week old.
>
> Regards,
> Adrian
>
> On 9.12.2022 at 21:35, Valdis Klētnieks wrote:
> > On Fri, 09 Dec 2022 12:58:20 -0700, jim.cromie@gmail.com said:
> >> On Fri, Dec 9, 2022 at 9:14 AM Adrian Fiergolski <adrian.fiergolski@fastree3d.com> wrote:
> >>> Does the community have any other ideas? Or I am wrong, and devm_iounmap is enough?
> >> I dunno, but it says you asked ~4 hrs ago.
> >> I bet you could just try it and get an answer faster.
> >> Do feel free to report back.
> > Note that it *is* possible for something to *look* like it works, but it leaves
> > dangling pointers or other hidden corruption that takes a while to surface. I
> > once had to troubleshoot a userspace bug that worked fine on one system but
> > blew up on another with a different malloc() - some 6 million malloc calls
> > after the bug hit.
> >
> > Fortunately, the vast majority of kernel functions will return an error code if
> > anything at all fishy happened, so just checking return codes on *everything* is
> > usually good enough...
> >
--
Constantine Shulyupin
_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2022-12-10 6:53 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-12-02 17:24 unmap memory mapped with devm_ioremap_resource Adrian Fiergolski
2022-12-02 18:01 ` Constantine Shulyupin
2022-12-06 21:23 ` Adrian Fiergolski
2022-12-09 16:14 ` Adrian Fiergolski
2022-12-09 19:58 ` jim.cromie
2022-12-09 20:35 ` Valdis Klētnieks
2022-12-09 22:52 ` Adrian Fiergolski
2022-12-10 6:53 ` Constantine Shulyupin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox