Skip to content

Commit

Permalink
atl1: explain 32-bit DMA restriction
Browse files Browse the repository at this point in the history
Document the fact that atl1 uses a single shared register for the high 32
bits of 64-bit DMA addresses, making 64-bit DMA more trouble than it's worth.

Signed-off-by: Chris Snook <[email protected]>
Signed-off-by: Jeff Garzik <[email protected]>
  • Loading branch information
Chris Snook authored and David S. Miller committed Oct 10, 2007
1 parent 01faccb commit cdcc520
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions drivers/net/atl1/atl1_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -2209,8 +2209,14 @@ static int __devinit atl1_probe(struct pci_dev *pdev,
return err;

/*
* 64-bit DMA currently has data corruption problems, so let's just
* use 32-bit DMA for now. This is a big hack that is probably wrong.
* The atl1 chip can DMA to 64-bit addresses, but it uses a single
* shared register for the high 32 bits, so only a single, aligned,
* 4 GB physical address range can be used at a time.
*
* Supporting 64-bit DMA on this hardware is more trouble than it's
* worth. It is far easier to limit to 32-bit DMA than update
* various kernel subsystems to support the mechanics required by a
* fixed-high-32-bit system.
*/
err = pci_set_dma_mask(pdev, DMA_32BIT_MASK);
if (err) {
Expand Down

0 comments on commit cdcc520

Please sign in to comment.