• Lukas Wunner's avatar
    PCI: pciehp: Track enable/disable status · 9590192f
    Lukas Wunner authored
    handle_button_press_event() currently determines whether the slot has
    been turned on or off by looking at the Power Controller Control bit in
    the Slot Control register.  This assumes that an attention button
    implies presence of a power controller even though that's not mandated
    by the spec.  Moreover the Power Controller Control bit is unreliable
    when a power fault occurs (PCIe r4.0, sec 6.7.1.8).  This issue has
    existed since the driver was introduced in 2004.
    
    Fix by replacing STATIC_STATE with ON_STATE and OFF_STATE and tracking
    whether the slot has been turned on or off.  This is also a required
    ingredient to make pciehp resilient to missed events, which is the
    object of an upcoming commit.
    Signed-off-by: default avatarLukas Wunner <lukas@wunner.de>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    9590192f
pciehp_ctrl.c 10.4 KB