Re: alpha iommu fixes

David S. Miller (davem@redhat.com)
Mon, 21 May 2001 02:30:09 -0700 (PDT)


Andi Kleen writes:
> On the topic of to the PCI DMA code: one thing I'm missing
> are pci_map_single()/pci_map_sg() that take struct page * instead of
> of direct pointers. Currently I don't see how you would implement IO-MMU IO
> on a 32bit box with more than 4GB of memory, because the address won't
> fit into the pointer.

How does the buffer get there in the first place? :-)

Yes, the zerocopy stuff is capable of doing this. But the block
I/O layer is not, neither is any other subsystem to my knowledge.

Certainly, when this changes, we can make the interfaces adapt to
this.

Because of this, for example, the sbus IOMMU stuff on sparc32 still
uses HIGHMEM exactly because of this pointer limitation. In fact,
any machine using >4GB of memory currently cannot be supported without
highmem enabled, which is going to enable bounce buffering in the block
I/O layer, etc.

Later,
David S. Miller
davem@redhat.com
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/