Could we, instead, just have a mem= boot time command line parameter?

ron

On Mon, Feb 29, 2016 at 11:02 AM 'Kanoj Sarcar' via Akaros <
[email protected]> wrote:

> Developer tool to limit RAM used (eg to restrict to only node0 memory etc).
>
> Signed-off-by: Kanoj Sarcar <[email protected]>
> ---
>  kern/arch/x86/page_alloc.c | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
>
> diff --git a/kern/arch/x86/page_alloc.c b/kern/arch/x86/page_alloc.c
> index da3d8b0..ad0aaa4 100644
> --- a/kern/arch/x86/page_alloc.c
> +++ b/kern/arch/x86/page_alloc.c
> @@ -48,6 +48,10 @@ static bool pa64_is_in_kernel(uint64_t paddr)
>         return (EXTPHYSMEM <= paddr) && (paddr < PADDR(end));
>  }
>
> +#define        MAX_LIMIT_RAM   0xFFFFFFFFFFFFFFFFULL
> +static uint64_t max_usable_paddr = MAX_LIMIT_RAM;      /* cmdline option?
> */
> +#define        USABLE_RAM(_pa_)        ((_pa_) < max_usable_paddr)
> +
>  /* Helper.  For every page in the entry, this will determine whether or
> not the
>   * page is free, and handle accordingly.  All pages are marked as busy by
>   * default, and we're just determining which of them could be free. */
> @@ -89,6 +93,11 @@ static void parse_mboot_region(struct
> multiboot_mmap_entry *entry, void *data)
>                  * bootzone.  If it was in the bootzone, we already
> skipped it. */
>                 if (pa64_is_in_kernel(i))
>                         continue;
> +
> +               /* If beyond what we want to allocate, give up */
> +               if (!USABLE_RAM(i))
> +                       return;
> +
>                 track_free_page(pa64_to_page(i));
>         }
>  }
> @@ -98,6 +107,10 @@ static void check_range(uint64_t start, uint64_t end,
> int expect)
>         int ref;
>         if (PGOFF(start))
>                 printk("Warning: check_range given unaligned addr
> 0x%016llx\n", start);
> +
> +       if ((expect == 0) && (!USABLE_RAM(end)))
> +               end = max_usable_paddr;
> +
>         for (uint64_t i = start; i < end; i += PGSIZE)  {
>                 ref = kref_refcnt(&pa64_to_page(i)->pg_kref);
>                 if (ref != expect) {
>
> --
> You received this message because you are subscribed to the Google Groups
> "Akaros" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Akaros" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to