All of lore.kernel.org
 help / color / mirror / Atom feed
* Question about the "Dynamic reserved memory" patch
@ 2020-03-13  3:06 양원혁
  2020-03-13  3:54 ` Valdis Klētnieks
  0 siblings, 1 reply; 3+ messages in thread
From: 양원혁 @ 2020-03-13  3:06 UTC (permalink / raw)
  To: kernelnewbies

Hi. 

Recently, I read about the "Dynamic reserved memory" patch.

In the __reserved_mem_reserve_reg() function, I found something that 
I couldn't easily understand. 

To get help, I sent an e-mail to this mailing list.

I attached the code below.

static int __init __reserved_mem_reserve_reg(unsigned long node,
                                             const char *uname)
{
        int t_len = (dt_root_addr_cells + dt_root_size_cells) * sizeof(__be32);
        phys_addr_t base, size;
        int len;
        const __be32 *prop;
        int nomap, first = 1;
        prop = of_get_flat_dt_prop(node, "reg", &len);
        if (!prop)
                return -ENOENT;
        if (len && len % t_len != 0) {
                pr_err("Reserved memory: invalid reg property in '%s',skipping node.\n",
                       uname);
                return -EINVAL;
        }
        nomap = of_get_flat_dt_prop(node, "no-map", NULL) != NULL;
        while (len >= t_len) {
                base = dt_mem_next_cell(dt_root_addr_cells, &prop);
                size = dt_mem_next_cell(dt_root_size_cells, &prop);
                if (size &&
                    early_init_dt_reserve_memory_arch(base, size, nomap) == 0)
                        pr_debug("Reserved memory: reserved region for node '%s': base %pa, size %ld MiB\n",
                                uname, &base, (unsigned long)size / SZ_1M);
                else
                        pr_info("Reserved memory: failed to reserve memory for node '%s': base %pa, size %ld MiB\n",
                                uname, &base, (unsigned long)size / SZ_1M);
                len -= t_len;
                if (first) {
                        fdt_reserved_mem_save_node(node, uname, base, size);
                        first = 0;
                }
        }
        return 0;
}

I found that fdt_reserved_mem_save_node() is called the regardless of
memblock remove/reserve success.

I think early_init_dt_reserve_memory_arch() can fail.(ex. for the lack
of memblock's region)

So I wonder there will be a situation where reserved_mem
initialization will be executed without memory reservation.

I would appreciate it if you let me know if I missed anything :)
_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-03-13  5:14 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-03-13  3:06 Question about the "Dynamic reserved memory" patch 양원혁
2020-03-13  3:54 ` Valdis Klētnieks
2020-03-13  5:13   ` 양원혁

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.