WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

RE: [Xen-devel] DMA trouble with current xen-sparse

Hi,

On Fri, 2005-11-04 at 14:50 +0000, Ian Pratt wrote:

>  > Sure, took a bit of time to recompile the kernel (I didn't do 
> > this for years) and it crashed as expected, here are the info:
> > 
> >   ptr: f160ed8e 1514
> > 
> > the size looks a full ethernet frame, i.e. 1500 of payload, 2 
> > ethernet addresses and the 2bytes for the ethernet type, that 
> > looks kosher to me but clearly it is not aligned.
> 
> Please can you try using either our -xen or -xen0 kernel config. I
> strongly suspect there's something in your config that is breaking this
> for you, just not sure what.

I just tried to build it; it would not boot.  That was building the
2.6.12 xen-sparse w/ gcc4; retrying with gcc32 now.

But I suspect that the problem is CONFIG_SLAB_DEBUG.  That sets up slab
redzoning which checks for buffer overruns.  One consequence is that
cached objects grow very slightly --- enough that the 2k kmalloc cache
gets created with 3 objects per order-2 slab, ie. all MTU-sized frames
are going to be allocated from an 8k slab and one in three will straddle
the page boundary.

I may not have time to verify that today, but it sounds like a likely
explanation for what we're seeing.

NB. even without redzoning, the slab allocator will try both order-1 and
order-2 slab sizes to see what minimises the wasted space in a slab, so
any subsystem that's doing its own allocation of objects from a pool
outside kmalloc may hit a size that creates these page-straddling
caches.  

There's a hacky quick-fix, which is to change

#define BREAK_GFP_ORDER_HI       1

from 1 to 0 in mm/slab.c.  But that's just going to waste more slab
cache space for many caches.   Without that change, the fact is that an
important debugging option is creating cross-page objects routinely, and
that the slab allocator can create such objects quite normally even
without that option; so it may end up being something that Xen just has
to deal with.

--Stephen



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel