Re: [Linux-ia64] Proper fix for sym53c8xx_2 driver and dma64_addr_t

David S. Miller
2002-02-07T02:09:15Z

From: Christoph Hellwig <hch@caldera.de>
Date: Wed, 6 Feb 2002 18:10:42 +0100

When the sym2 driver is configured with SYM_CONF_DMA_ADDRESSING_MOD > 1
it uses DAC accessing and needs dma64_addr_t. It doesn't use it
when using the default addressing mode.

NO it damn well does not! If the platform is NEVER GOING TO GIVE the
driver a 64-bit address (because, for example, it has IOMMU hardware),
dma_addr_t need only be 32-bits and that it how it is declared on
several platforms.

Please read the DMA API documentation.

dma64_addr_t is _ONLY_, I REPEAT _ONLY_ to be used when the driver
is making use of the following routines for it's DMA usage:

pci_dac_page_to_dma
pci_dac_dma_to_page
pci_dac_dma_to_offset
pci_dac_dma_sync_single

And NO SCSI OR NET driver should ever use these routines.

In fact, no driver in the tree right now should be using this.
The only known example that needs those interfaces are clustering
cards. And thats it!

Everything in the tree right now should use only pci_map_single and
friends, and it should set the device DMA mask bits properly to
indicate DAC capability. Do you see any pci_map_single, pci_map_sg,
etc. implementation working with dma64_addr_t arguments? If so, thats
a huge bug and it must be fixed.