Andi Kleen wrote:

It's more than 82 bytes but less than 86. I didn't run the binary
search further.

My guess: with 86 byte additional padding, you end up doing kmalloc(2049), and thus with a 4 kB allocation. On my setup, padding 64 results in a 1984 byte kmalloc call: dev_kfree_skb for 1628 bytes, but then the network layer adds an skb_shared_info structure. The size-2048 uses 2 pages for one slab, with 3 objects in each slab. Thus there are objects that cross a page boundary.

2) Andi - does your system have more than 4 GB memory? As I noticed yesterday, all pci_map_single() calls from the rx codepath actually called pci_map_single() with size==0.

Yes, it has and I'm also running with iommu=force which forces
all IO through the IOMMU. But the x86-64 AGP IOMMU code
always rounds up to a page, so even with 0 size it should be ok as long as the MTU+overhead is <4K.

Or if a pointer crosses a page boundary, correct? I added printks to the forcedeth code, and there were pointers that cross a page boundary:

 forcedeth rx alloc: ptr ffff81001f2b4bf0 alloc len 1628

--
   Manfred

-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to