[Linux-ia64] Re: 64 Bits DMA Addresses for Alloc Consistent Interfaces.

Jesse Barnes
2003-05-15T20:24:12Z

On Thu, May 15, 2003 at 01:07:39PM -0700, David S. Miller wrote:
> From: Colin Ngam <cngam@sgi.com>
> Date: Thu, 15 May 2003 08:17:58 -0500
>
> Anyway, to make a long story short, we like to "extend" these
> interfaces to return DMA addresses of 64 bits if and when the
> driver has the full capabality to support DAC - via it's
> DMA mask capability setting.
>
> All devices I am aware of do not support 64-bit addresses for their
> descriptors, only 32-bit.

PCI-X devices are required to support 64 bit addrs. They'll only
generate SAC if the top 32 bits are 0, but our platform is incapable
of handling this, since the IOMMU can't be used in PCI-X mode (i.e. we
need high order bits for PCI-X devices).

> There is a huge difference between using a "64-bit address" and
> requiring to generate a DAC cycle, the latter of which is
> probably what you need and that is independant of what kind of
> address pci_alloc_consistent() is giving you.

Unfortunately, we need both for PCI-X on Altix. How about this:
drivers that support PCI-X cards are required to program the full 64
bits of a pci_alloc_consistent DMA address, the top 32 bits of which
can be zero for most platforms. That means that the device will only
generate a SAC for most platforms, but on platforms like ours, the top
32 bits will contain useful information, so a DAC will be generated.

Thanks,
Jesse