Re: [discuss] Re: x86_64: 2.6.14-rc4 swiotlb broken

From: Alex Williamson
Date: Tue Oct 18 2005 - 16:28:59 EST


On Tue, 2005-10-18 at 12:54 -0700, Ravikiran G Thirumalai wrote:
> On Tue, Oct 18, 2005 at 08:50:18AM -0700, Linus Torvalds wrote:
> >
> >
> > On Tue, 18 Oct 2005, Linus Torvalds wrote:
> > >
> > > I vote for this one, assuming everybody who can test is happy.
> >
> > Of course, just after sending the patch I noticed that there was a new
> > version, even simpler. Can people test that one?
> >
>
> This version should work for everyone. It falls back to the old 2.6.13
> behaviour when it does not find suitable memory from any of the nodes.
>
> Yasunori-san, Alex, can you confirm. (Please use stock 2.6.14)

Oops, I used 2.6.14-rc4-mm1, I'll retest. However, this does work on
the Superdome. Not because of the iterating over the nodes code, but
because of the call to alloc_bootmem_low_pages() fallback case. Adding
a printk(), I get this:

Node 0: 0xe000074104e6b200
Node 1: 0xe000082080723000
Node 2: 0xe000000101532000 *Note this is the interleaved memory node
Placing software IO TLB between 0x4cdc000 - 0x8cdc000

Looking at the memory map of the system, I see these major ranges:

Node 2:
0x00000000000 - 0x0007ffdefff (~2GB)
0x00100000000 - 0x0017fffffff (2GB)
0x04080000000 - 0x040f0000000 (2GB)
Node 0:
0x74100000000 - 0x741fbbfffff (~4GB)
Node 1:
0x82080000000 - 0x820fb453fff (~2GB)

So, it looks like we're iterating over the nodes, but
alloc_bootmem_node() isn't even guaranteed to try to get memory from the
low memory on that node. Thanks,

Alex



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/