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@xxxxxxxxx> wrote:
Hello Nikhil,
On Wed, Sep 28, 2016 at 2:41 PM, Nikhil Utane
<nikhil.subscribed@xxxxxxxxx> 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@xxxxxxxxx> wrote:
>>
>> Hello Nikhil,
>>
>> On Fri, Sep 9, 2016 at 7:01 AM, Nikhil Utane
>> <nikhil.subscribed@xxxxxxxxx> 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@xxxxxxxxxxxxxxxxx https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies