On Fri, Apr 21, 2023 at 10:56:41AM +0800, Rongguang Wei wrote: > --- a/drivers/pci/hotplug/pciehp_ctrl.c > +++ b/drivers/pci/hotplug/pciehp_ctrl.c > @@ -256,6 +256,7 @@ void pciehp_handle_presence_or_link_change(struct controller *ctrl, u32 events) > present = pciehp_card_present(ctrl); > link_active = pciehp_check_link_active(ctrl); > if (present <= 0 && link_active <= 0) { > + ctrl->state = OFF_STATE; > mutex_unlock(&ctrl->state_lock); > return; > } It has occurred to me that we also need to turn off the Power Indicator, lest it continues blinking after the 5 second interval. Sorry for not spotting this earlier. And I'm thinking that making the state change conditional on BLINKINGON_STATE would serve clarity. So could you please amend the above as follows and verify it fixes the issue for you? if (present <= 0 && link_active <= 0) { + if (ctrl->state == BLINKINGON_STATE) { + ctrl->state = OFF_STATE; + pciehp_set_indicators(ctrl, PCI_EXP_SLTCTL_PWR_IND_OFF, + INDICATOR_NOOP); + } mutex_unlock(&ctrl->state_lock); return; } Thanks! Lukas