Thread (2 messages) 2 messages, 2 authors, 2006-11-28

Re: [PATCH 3/3] NetXen: 64-bit memory fixes, driver cleanup

From: Stephen Hemminger <hidden>
Date: 2006-11-28 19:05:46

On Tue, 28 Nov 2006 08:04:40 -0800 (PST)
"Amit S. Kale" [off-list ref] wrote:
Hi Stephen,

<SNIP>
quoted
quoted
quoted
you need explicit bounce buffers.  If you can't DMA from unaligned 
address,
quoted
quoted
quoted
quoted
the write a small routine to copy the skb to a new one.

The hardware supports DMA into 35 bit addresses. The intent is to
enable DMA into addresses upto 32G.
You should then set the same value for pci_set_dma_mask, because then 
the IOMMU
quoted
quoted
can help. See both b44 or tg3 drivers, they have to deal with odd size 
masks.
quoted
quoted
I don't think you have to do all the bounce buffer work in the driver.
Using bounce buffers has following tradeoffs:
1. Overhead of code maintenance.
2. Slow performance.
Also on some ia64 machines we saw reduced performance because of larger 
ring sizes.

But if we remove bounce buffers and use IOMMU instead, it might not 
work for some Opteron configurations. On one of our Opterons we could not 
set the IOMMU from kernel command line (it asked to set it from the BIOS where there was no 
such option in the BIOS)

So what do you suggest, should we use the IOMMU or should we keep the 
bounce buffers as they are?

Thanks,
Amit Kale.

I don't mind workarounds, it is just that the problem is not unique to your driver
and we need a platform or general solution. There are lots of devices that stupid
hardware and need smaller masks.

-- 
Stephen Hemminger [off-list ref]
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help