• Matthew Garrett's avatar
    ASPM: Fix pcie devices with non-pcie children · c9651e70
    Matthew Garrett authored
    Since 3.2.12 and 3.3, some systems are failing to boot with a BUG_ON.
    Some other systems using the pata_jmicron driver fail to boot because no
    disks are detected.  Passing pcie_aspm=force on the kernel command line
    works around it.
    
    The cause: commit 4949be16 ("PCI: ignore pre-1.1 ASPM quirking when
    ASPM is disabled") changed the behaviour of pcie_aspm_sanity_check() to
    always return 0 if aspm is disabled, in order to avoid cases where we
    changed ASPM state on pre-PCIe 1.1 devices.
    
    This skipped the secondary function of pcie_aspm_sanity_check which was
    to avoid us enabling ASPM on devices that had non-PCIe children, causing
    trouble later on.  Move the aspm_disabled check so we continue to honour
    that scenario.
    
    Addresses https://bugzilla.kernel.org/show_bug.cgi?id=42979 and
              http://bugs.debian.org/665420
    
    Reported-by: Romain Francoise <romain@orebokech.com> # kernel panic
    Reported-by: Chris Holland <bandidoirlandes@gmail.com> # disk detection trouble
    Signed-off-by: default avatarMatthew Garrett <mjg@redhat.com>
    Cc: stable@vger.kernel.org
    Tested-by: Hatem Masmoudi <hatem.masmoudi@gmail.com> # Dell Latitude E5520
    Tested-by: janek <jan0x6c@gmail.com> # pata_jmicron with JMB362/JMB363
    [jn: with more symptoms in log message]
    Signed-off-by: default avatarJonathan Nieder <jrnieder@gmail.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    c9651e70
aspm.c 27.5 KB