Re: PCI-DMA: Out of IOMMU space on x86-64 (Athlon64x2), with solution

From: Jeff Garzik
Date: Thu Mar 02 2006 - 07:31:14 EST


Andi Kleen wrote:
On Thursday 02 March 2006 13:16, Jeff Garzik wrote:


Yes I've been thinking about adding a new sleeping interface to the IOMMU
that would block for new space to handle this. If I did that - would
libata be able to use it?

No :( We map inside a spin_lock_irqsave.


Would it be easily possible to change that or is it difficult?

Also with the blocking interface there might be possible deadlock issues because it will be essentially similar to allocating memory during IO.
But I think it's probably safe.

The SCSI layer submits stuff to libata inside spin_lock_irqsave(), and from there we DMA-map and send straight to hardware.

So, changing the hot path to permit sleeping would be difficult and add needless complexity, IMO.

I would rather pay the penalty of resubmitting if the map-inside-spinlock fails, than to slow down the hot path.

Jeff



-
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/