• Bruce Allan's avatar
    e1000e: If ASPM L0s needs to be disabled, do it prior to enabling device · 78cd29d5
    Bruce Allan authored
    Based on a patch from Naga Chumbalkar <nagananda.chumbalkar@hp.com>:
    
    If ASPM L0s needs to be disabled due to HW errata, do it prior to
    "enabling" the device. This way if the kernel ever defaults its
    aspm_policy to POLICY_POWERSAVE, then the e1000e driver will get a
    chance to disable ASPM on the misbehaving device *prior* to calling
    pci_enable_device_mem(). This will be useful in situations
    where the BIOS indicates ASPM support on the server by clearing the
    ACPI FADT "ASPM Controls" bit.
    
    Note:
    The kernel (2.6.38) currently uses the BIOS "default" as its aspm_policy.
    However, Linux distros can diverge from that and set the default to
    "powersave".
    
    v2: o cleanup namespace pollution of e1000e_disable_aspm(),
        o fix type and initialization of the new aspm_disable_flag in a few
          functions, and
        o redefine FLAG2_DISABLE_ASPM_L0S to the first unused bit in
          adapter->flags2.
    Signed-off-by: default avatarBruce Allan <bruce.w.allan@intel.com>
    Cc: Naga Chumbalkar <nagananda.chumbalkar@hp.com>
    Tested-by: default avatarAaron Brown <aaron.f.brown@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    78cd29d5
82571.c 54.7 KB