]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/net/atl1/atl1_main.c
atl1: explain 32-bit DMA restriction
[linux-2.6-omap-h63xx.git] / drivers / net / atl1 / atl1_main.c
index f23e13c8f9a6e75ce0d9614bcb68d85c287ccd49..4c728f1169c450a4f423dae036dcbbd168772793 100644 (file)
@@ -76,7 +76,6 @@
 #include <linux/compiler.h>
 #include <linux/delay.h>
 #include <linux/mii.h>
-#include <linux/interrupt.h>
 #include <net/checksum.h>
 
 #include <asm/atomic.h>
@@ -2210,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) {
@@ -2235,7 +2240,6 @@ static int __devinit atl1_probe(struct pci_dev *pdev,
                err = -ENOMEM;
                goto err_alloc_etherdev;
        }
-       SET_MODULE_OWNER(netdev);
        SET_NETDEV_DEV(netdev, &pdev->dev);
 
        pci_set_drvdata(pdev, netdev);