• Jesse Brandeburg's avatar
    e1000: fix Tx hangs by disabling 64-bit DMA · e508be17
    Jesse Brandeburg authored
    Several users report issues with 32-bit adapters when plugged
    into PCI slots in machines with >= 4GB ram.  In particular AMD
    systems with HyperTransport to PCI bridges seem to trigger the
    issue, but it isn't limited to only them.
    
    This issue is not easily reproducible here, yet still continues
    to occur in the field.  For e1000 on PCI devices, just disable DMA
    addresses over the 4GB boundary when in PCI (not PCI-X) mode, to
    prevent the issue from continuing to pop up.  The performance
    impact for this is negligible.
    
    The code was refactored to move the init of the hw struct to its
    own function. This allows the init to be called very early in
    probe, which then allows using hw-> members for this fix.
    
    A slight refactor to the DMA mask code was done for minor
    correctness based on the instructions in DMA-API-HOWTO.
    Signed-off-by: default avatarJesse Brandeburg <jesse.brandeburg@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    e508be17
e1000_main.c 132 KB