[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20080429142520.GE26461@elte.hu>
Date: Tue, 29 Apr 2008 16:25:20 +0200
From: Ingo Molnar <mingo@...e.hu>
To: Johannes Weiner <hannes@...urebad.de>
Cc: Linus Torvalds <torvalds@...ux-foundation.org>,
linux-kernel@...r.kernel.org,
Andrew Morton <akpm@...ux-foundation.org>,
Thomas Gleixner <tglx@...utronix.de>,
"H. Peter Anvin" <hpa@...or.com>, Yinghai Lu <yinghai.lu@....com>,
Yinghai Lu <yhlu.kernel@...il.com>, jbarnes@...tuousgeek.org
Subject: Re: [patch] mm: node-setup agnostic free_bootmem()
* Johannes Weiner <hannes@...urebad.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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists