lkml.org 
[lkml]   [2008]   [Apr]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [patch] mm: node-setup agnostic free_bootmem()

* Johannes Weiner <hannes@saeurebad.de> wrote:

> > void __init free_bootmem(unsigned long addr, unsigned long size)
> > {
> > bootmem_data_t *bdata;
> > - list_for_each_entry(bdata, &bdata_list, list)
> > - free_bootmem_core(bdata, addr, size);
> > + unsigned long pos = addr;
> > + unsigned long partsize = size;
> > +
> > + list_for_each_entry(bdata, &bdata_list, list) {
> > + unsigned long remainder = 0;
> > +
> > + if (pos < bdata->node_boot_start)
> > + continue;
> > +
> > + if (PFN_DOWN(pos + partsize) > bdata->node_low_pfn) {
> > + remainder = PFN_DOWN(pos + partsize) - bdata->node_low_pfn;
> > + partsize -= remainder;
> > + }
> > +
> > + free_bootmem_core(bdata, pos, partsize);
> > +
> > + if (!remainder)
> > + return;
> > +
> > + pos = PFN_PHYS(bdata->node_low_pfn + 1);
> > + }
> > + printk(KERN_ERR "free_bootmem: request: addr=%lx, size=%lx, "
> > + "state: pos=%lx, partsize=%lx\n", addr, size,
> > + pos, partsize);
> > + BUG();
> > }
> >
> > unsigned long __init free_all_bootmem(void)
>
> Yes, looks good. But needs explicit testing, I guess.

yep, but as Yinghai Lu has pointed it out, this removes a cross-node
allocation fix. That fix has to be preserved in any cleanup, agreed?

in general bootmem should assume the weirdest of NUMA topologies and be
defensive about them. Topologies will only become more complex, never
less complex.

Ingo


\
 
 \ /
  Last update: 2008-04-29 16:29    [W:0.135 / U:1.044 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site