Re: memblock_reserve or memblock_remove to reserve a page

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

This is the hole that we see in system RAM.
Shouldn't the 0xA4D page be out of limit for Linux Kernel?

# cat /proc/iomem 
00000000-00a4cfff : System RAM
00a4d000-00a4dfff : csSIGILL 
00a4e000-bfffffff : System RAM

-Regards
Nikhil

On Wed, Sep 28, 2016 at 6:55 PM, Nikhil Utane <nikhil.subscribed@xxxxxxxxx> wrote:
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@xxxxxxxxxxxxxxxxg
>> > https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>> >
>
>


_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux