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 <getaru...@gmail.com> wrote: > Hello Nikhil, > > On Wed, Sep 28, 2016 at 2:41 PM, Nikhil Utane > <nikhil.subscri...@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 <getaru...@gmail.com> > wrote: > >> > >> Hello Nikhil, > >> > >> On Fri, Sep 9, 2016 at 7:01 AM, Nikhil Utane > >> <nikhil.subscri...@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@kernelnewbies.org > >> > https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies > >> > > > > > >
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies