Re: With Daniel Phillips Patch

David S. Miller
2001-08-22T15:06:47Z

From: "Justin T. Gibbs" <gibbs@scsiguy.com>
Date: Wed, 22 Aug 2001 07:24:29 -0600

Is this somehow different than how large DMA is done on the ia64
port? All I do is look at the size of dma_addr_t to decide whether
to enable high address support in my driver. If dma_addr_t's size
changes, then 64bit addressing will work the same as on every other
Linux port.

It is totally different.

The ia64 method, while it worked for ia64, could not work properly on
just about any other platform. For example, it assumed that any
physical address could be represented by a kernel virtual address.
This is not true on 32-bit HIGHMEM systems. It also assumed that
using SAC or DAC addressing was simply a matter of "does the device
support it", and the world is far from being that simple :-)

Please see the pci64 patches for details:

ftp://ftp.kernel.org/pub/linux/kernel/people/davem/PCI64/*.gz

There are Documentation/DMA-mapping.txt updates, where you can read
how to use the interfaces properly. A handful of net and scsi drivers
were updated to use the new API, you have examples to work with as
well.

I note that the aic7xxx won't be usable for DAC cycles on many
platforms since not all 64-bits are significant :-( SYM53C8XX
has a similar limitation. Surprisingly, the network PCI cards
have been the absolute best about this, supporting the full 64-bits
of DAC address in all card instances I delved into.

Later,
David S. Miller
davem@redhat.com