memblock_reserve or memblock_remove to reserve a page
Nikhil Utane
nikhil.subscribed at gmail.com
Wed Sep 28 09:25:55 EDT 2016
base1 = 0xA4D000; size1=0x1000;
memblock_reserve (base1, size1);
(In a separate static driver code)
request_mem_region_exclusive (0x00A4D000, 4096, "csSIGILL")
If a driver requests for a memory region, shouldn't the kernel then not
allocate it for any other purpose?
-Regards
Nikhil
On Wed, Sep 28, 2016 at 3:12 PM, Arun Sudhilal <getarunks at gmail.com> wrote:
> Hello Nikhil,
>
> On Wed, Sep 28, 2016 at 2:41 PM, Nikhil Utane
> <nikhil.subscribed at gmail.com> wrote:
> > Arun,
> >
> > What seems to have done the trick is calling memblock_remove() followed
> by a
> > call to request_mem_region(). This creates a hole which can be confirmed
> in
> > the output of /proc/iomem.
> >
> > Do you see any issue with this approach?
>
> I really don't know how it works for you. Marking address of a page as
> iomem. How buddy allocator ignores this page?
> request_mem_region() is a way of managing IO resource memory, to avoid
> two drivers using same IO memory. It has not relation with buddy
> allocator.
>
> Can you post code snippet?
>
> Regards,
> Arun
>
> >
> > -Thanks
> > Nikhil
> >
> > On Tue, Sep 27, 2016 at 4:14 PM, Arun Sudhilal <getarunks at gmail.com>
> wrote:
> >>
> >> Hello Nikhil,
> >>
> >> On Fri, Sep 9, 2016 at 7:01 AM, Nikhil Utane
> >> <nikhil.subscribed at gmail.com> wrote:
> >> > I want to reserve a physical memory page with a fixed PFN. I do not
> want
> >> > this page to be used by anyone else. I am calling memblock_reserve()
> to
> >> > supposedly reserve the page. I am writing some content into this page.
> >> > What
> >> > I see is that during some runs the content of this page is modified
> >> > (either
> >> > fully or sometimes partially). In few runs, I see it as intact. Is it
> >> > expected that even after calling memblock_reserve() the kernel can
> >> > allocate
> >> > this physical page for any other purpose? How is memblock_remove()
> >> > different
> >> > from memblock_reserve? I tried reading up but didn't see any useful
> >> > information. What I understood is memblock_remove will completely
> remove
> >> > from kernel's allocation mechanism. Should I then be using remove
> >> > instead of
> >> > reserve?
> >>
> >> when a DT entry is added to #reserved-memory node, what
> >> drivers/of/fdt.c does is to call memblock_remove() and
> >> memblock_reserve().
> >> This happens after the memblock driver is initialized but before buddy
> >> allocator up. Did you try this approach? This should work for you.
> >>
> >> Only option once the kernel boot is complete is to try out the
> >> technique what mm/memory_hotplug.c does while offline memory.
> >> isolate_page_range and then migrate.
> >>
> >> Regards,
> >> Arun
> >>
> >>
> >> >
> >> > -Thanks
> >> > Nikhil
> >> >
> >> > _______________________________________________
> >> > 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/20160928/236b960d/attachment.html
More information about the Kernelnewbies
mailing list