Re: unmap memory mapped with devm_ioremap_resource

2022-12-09 Thread Constantine Shulyupin
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
 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.cro...@gmail.com said:
> >> On Fri, Dec 9, 2022 at 9:14 AM Adrian Fiergolski 
> >>  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


Re: unmap memory mapped with devm_ioremap_resource

2022-12-09 Thread Adrian Fiergolski

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.cro...@gmail.com said:

On Fri, Dec 9, 2022 at 9:14 AM Adrian Fiergolski 
 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


Re: unmap memory mapped with devm_ioremap_resource

2022-12-09 Thread Valdis Klētnieks
On Fri, 09 Dec 2022 12:58:20 -0700, jim.cro...@gmail.com said:
> On Fri, Dec 9, 2022 at 9:14 AM Adrian Fiergolski 
>  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...



pgpD8hzxtHnvq.pgp
Description: PGP signature
___
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies


Re: unmap memory mapped with devm_ioremap_resource

2022-12-09 Thread jim . cromie
On Fri, Dec 9, 2022 at 9:14 AM Adrian Fiergolski
 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,
>  >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
>  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


Re: unmap memory mapped with devm_ioremap_resource

2022-12-09 Thread Adrian Fiergolski

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 
) 
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,
  >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
  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


Re: unmap memory mapped with devm_ioremap_resource

2022-12-06 Thread Adrian Fiergolski

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,
  >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
  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


Re: unmap memory mapped with devm_ioremap_resource

2022-12-02 Thread Constantine Shulyupin
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,
 >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
 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