Re: [PATCH 3/4] myri10ge - Driver core
- From: Brice Goglin <brice@xxxxxxxx>
- Date: Wed, 24 May 2006 10:04:28 +0200
Anton Blanchard wrote:
+/*
+ * Set of routunes to get a new receive buffer. Any buffer which
+ * crosses a 4KB boundary must start on a 4KB boundary due to PCIe
+ * wdma restrictions. We also try to align any smaller allocation to
+ * at least a 16 byte boundary for efficiency. We assume the linux
+ * memory allocator works by powers of 2, and will not return memory
+ * smaller than 2KB which crosses a 4KB boundary. If it does, we fall
+ * back to allocating 2x as much space as required.
+ *
+ * We intend to replace large (>4KB) skb allocations by using
+ * pages directly and building a fraglist in the near future.
+ */
You go to a lot of trouble to align things. One thing on ppc64 is that
we really want to start all DMA writes on a cacheline boundary. We
enforce that in network drivers by making NET_IP_ALIGN = 0 and having
the drivers do:
skb_reserve(skb, NET_IP_ALIGN);
It sounds like your small allocations will be only aligned to 16 bytes.
We didn't get any ppc64 with PCI-E to run Linux so far. What performance
drop should we expect with our current code ?
Id suggest using the dma API instead of the pci API. We have seen
machines in the field that have failed large pci_alloc_consistent calls
because it always asks for GFP_ATOMIC memory (it presumes the worst).
The dma API allows you to pass a GFP_ flag in which will have a much
better chance of succeeding when you dont need GFP_ATOMIC memory.
Good idea, thanks,
+#ifdef CONFIG_MTRR...
+ mgp->mtrr = mtrr_add(mgp->iomem_base, mgp->board_span,
+ MTRR_TYPE_WRCOMB, 1);
+#endif
+ mgp->sram = ioremap(mgp->iomem_base, mgp->board_span);
Not sure how we are meant to specify write through in drivers. Any ideas Ben?
I am not sure what you mean.
The only ppc64 with PCI-E that we have seen so far (a G5) couldn't do
write combining according to Apple.
Thanks,
Brice
-
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/
- Follow-Ups:
- Re: [PATCH 3/4] myri10ge - Driver core
- From: Benjamin Herrenschmidt
- Re: [PATCH 3/4] myri10ge - Driver core
- From: Anton Blanchard
- Re: [PATCH 3/4] myri10ge - Driver core
- References:
- [PATCH 0/4] myri10ge - Myri-10G Ethernet driver - v2
- From: Brice Goglin
- [PATCH 3/4] myri10ge - Driver core
- From: Brice Goglin
- Re: [PATCH 3/4] myri10ge - Driver core
- From: Anton Blanchard
- [PATCH 0/4] myri10ge - Myri-10G Ethernet driver - v2
- Prev by Date: Fwd: Felony Case
- Next by Date: RE: APIC error on CPUx
- Previous by thread: Re: [PATCH 3/4] myri10ge - Driver core
- Next by thread: Re: [PATCH 3/4] myri10ge - Driver core
- Index(es):
Relevant Pages
|