Skip to content

Commit db5ccb2

Browse files
committed
Merge branch 'pci/hotplug'
- Simplify Attention Button logging (Bjorn Helgaas) - Cancel bringup sequence if card is not present, to keep from blinking Power Indicator indefinitely (Rongguang Wei) - Reassign bridge resources if necessary for ACPI hotplug (Igor Mammedov) * pci/hotplug: PCI: acpiphp: Reassign resources on bridge if necessary PCI: pciehp: Cancel bringup sequence if card is not present PCI: pciehp: Simplify Attention Button logging
2 parents 1abb473 + 40613da commit db5ccb2

File tree

3 files changed

+17
-14
lines changed

3 files changed

+17
-14
lines changed

drivers/pci/hotplug/acpiphp_glue.c

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -498,7 +498,6 @@ static void enable_slot(struct acpiphp_slot *slot, bool bridge)
498498
acpiphp_native_scan_bridge(dev);
499499
}
500500
} else {
501-
LIST_HEAD(add_list);
502501
int max, pass;
503502

504503
acpiphp_rescan_slot(slot);
@@ -512,12 +511,10 @@ static void enable_slot(struct acpiphp_slot *slot, bool bridge)
512511
if (pass && dev->subordinate) {
513512
check_hotplug_bridge(slot, dev);
514513
pcibios_resource_survey_bus(dev->subordinate);
515-
__pci_bus_size_bridges(dev->subordinate,
516-
&add_list);
517514
}
518515
}
519516
}
520-
__pci_bus_assign_resources(bus, &add_list, NULL);
517+
pci_assign_unassigned_bridge_resources(bus->self);
521518
}
522519

523520
acpiphp_sanitize_bus(bus);

drivers/pci/hotplug/pciehp_ctrl.c

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -166,11 +166,11 @@ void pciehp_handle_button_press(struct controller *ctrl)
166166
case ON_STATE:
167167
if (ctrl->state == ON_STATE) {
168168
ctrl->state = BLINKINGOFF_STATE;
169-
ctrl_info(ctrl, "Slot(%s): Powering off due to button press\n",
169+
ctrl_info(ctrl, "Slot(%s): Button press: will power off in 5 sec\n",
170170
slot_name(ctrl));
171171
} else {
172172
ctrl->state = BLINKINGON_STATE;
173-
ctrl_info(ctrl, "Slot(%s) Powering on due to button press\n",
173+
ctrl_info(ctrl, "Slot(%s): Button press: will power on in 5 sec\n",
174174
slot_name(ctrl));
175175
}
176176
/* blink power indicator and turn off attention */
@@ -185,22 +185,23 @@ void pciehp_handle_button_press(struct controller *ctrl)
185185
* press the attention again before the 5 sec. limit
186186
* expires to cancel hot-add or hot-remove
187187
*/
188-
ctrl_info(ctrl, "Slot(%s): Button cancel\n", slot_name(ctrl));
189188
cancel_delayed_work(&ctrl->button_work);
190189
if (ctrl->state == BLINKINGOFF_STATE) {
191190
ctrl->state = ON_STATE;
192191
pciehp_set_indicators(ctrl, PCI_EXP_SLTCTL_PWR_IND_ON,
193192
PCI_EXP_SLTCTL_ATTN_IND_OFF);
193+
ctrl_info(ctrl, "Slot(%s): Button press: canceling request to power off\n",
194+
slot_name(ctrl));
194195
} else {
195196
ctrl->state = OFF_STATE;
196197
pciehp_set_indicators(ctrl, PCI_EXP_SLTCTL_PWR_IND_OFF,
197198
PCI_EXP_SLTCTL_ATTN_IND_OFF);
199+
ctrl_info(ctrl, "Slot(%s): Button press: canceling request to power on\n",
200+
slot_name(ctrl));
198201
}
199-
ctrl_info(ctrl, "Slot(%s): Action canceled due to button press\n",
200-
slot_name(ctrl));
201202
break;
202203
default:
203-
ctrl_err(ctrl, "Slot(%s): Ignoring invalid state %#x\n",
204+
ctrl_err(ctrl, "Slot(%s): Button press: ignoring invalid state %#x\n",
204205
slot_name(ctrl), ctrl->state);
205206
break;
206207
}
@@ -256,6 +257,14 @@ void pciehp_handle_presence_or_link_change(struct controller *ctrl, u32 events)
256257
present = pciehp_card_present(ctrl);
257258
link_active = pciehp_check_link_active(ctrl);
258259
if (present <= 0 && link_active <= 0) {
260+
if (ctrl->state == BLINKINGON_STATE) {
261+
ctrl->state = OFF_STATE;
262+
cancel_delayed_work(&ctrl->button_work);
263+
pciehp_set_indicators(ctrl, PCI_EXP_SLTCTL_PWR_IND_OFF,
264+
INDICATOR_NOOP);
265+
ctrl_info(ctrl, "Slot(%s): Card not present\n",
266+
slot_name(ctrl));
267+
}
259268
mutex_unlock(&ctrl->state_lock);
260269
return;
261270
}

drivers/pci/hotplug/pciehp_hpc.c

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -722,11 +722,8 @@ static irqreturn_t pciehp_ist(int irq, void *dev_id)
722722
}
723723

724724
/* Check Attention Button Pressed */
725-
if (events & PCI_EXP_SLTSTA_ABP) {
726-
ctrl_info(ctrl, "Slot(%s): Attention button pressed\n",
727-
slot_name(ctrl));
725+
if (events & PCI_EXP_SLTSTA_ABP)
728726
pciehp_handle_button_press(ctrl);
729-
}
730727

731728
/* Check Power Fault Detected */
732729
if (events & PCI_EXP_SLTSTA_PFD) {

0 commit comments

Comments
 (0)