diff options
author | Bjorn Helgaas <bhelgaas@google.com> | 2015-06-15 17:28:29 -0400 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2015-06-17 18:35:28 -0400 |
commit | 3784e0c6b02d4fa0966abb01b74eedeb8cd64603 (patch) | |
tree | 0ee36d5e1e1e62547049c8a540e05e758dd1926e | |
parent | a5dd4b4b0570b3bf880d563969b245dfbd170c1e (diff) |
PCI: pciehp: Clean up debug logging
The pciehp debug logging is overly verbose and often redundant. Almost all
of the information printed by dbg_ctrl() is also printed by the normal PCI
core enumeration code and by pcie_init().
Remove the redundant debug info.
When claiming a pciehp bridge, we print the slot characteristics, e.g.,
Slot #6 AttnBtn- AttnInd- PwrInd- PwrCtrl- MRL- Interlock- NoCompl+ LLActRep+
Add the Hot-Plug Capable and Hot-Plug Surprise bits to this information,
and print it all in the same order as lspci does.
No functional change except the message text changes.
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Rajat Jain <rajatja@google.com>
Acked-by: Yinghai Lu <yinghai@kernel.org>
-rw-r--r-- | drivers/pci/hotplug/pciehp_core.c | 39 | ||||
-rw-r--r-- | drivers/pci/hotplug/pciehp_ctrl.c | 38 | ||||
-rw-r--r-- | drivers/pci/hotplug/pciehp_hpc.c | 54 |
3 files changed, 20 insertions, 111 deletions
diff --git a/drivers/pci/hotplug/pciehp_core.c b/drivers/pci/hotplug/pciehp_core.c index 4597f6bd1958..612b21a14df5 100644 --- a/drivers/pci/hotplug/pciehp_core.c +++ b/drivers/pci/hotplug/pciehp_core.c | |||
@@ -77,11 +77,6 @@ static int reset_slot (struct hotplug_slot *slot, int probe); | |||
77 | */ | 77 | */ |
78 | static void release_slot(struct hotplug_slot *hotplug_slot) | 78 | static void release_slot(struct hotplug_slot *hotplug_slot) |
79 | { | 79 | { |
80 | struct slot *slot = hotplug_slot->private; | ||
81 | |||
82 | ctrl_dbg(slot->ctrl, "%s: physical_slot = %s\n", | ||
83 | __func__, hotplug_slot_name(hotplug_slot)); | ||
84 | |||
85 | kfree(hotplug_slot->ops); | 80 | kfree(hotplug_slot->ops); |
86 | kfree(hotplug_slot->info); | 81 | kfree(hotplug_slot->info); |
87 | kfree(hotplug_slot); | 82 | kfree(hotplug_slot); |
@@ -129,14 +124,10 @@ static int init_slot(struct controller *ctrl) | |||
129 | slot->hotplug_slot = hotplug; | 124 | slot->hotplug_slot = hotplug; |
130 | snprintf(name, SLOT_NAME_SIZE, "%u", PSN(ctrl)); | 125 | snprintf(name, SLOT_NAME_SIZE, "%u", PSN(ctrl)); |
131 | 126 | ||
132 | ctrl_dbg(ctrl, "Registering domain:bus:dev=%04x:%02x:00 sun=%x\n", | ||
133 | pci_domain_nr(ctrl->pcie->port->subordinate), | ||
134 | ctrl->pcie->port->subordinate->number, PSN(ctrl)); | ||
135 | retval = pci_hp_register(hotplug, | 127 | retval = pci_hp_register(hotplug, |
136 | ctrl->pcie->port->subordinate, 0, name); | 128 | ctrl->pcie->port->subordinate, 0, name); |
137 | if (retval) | 129 | if (retval) |
138 | ctrl_err(ctrl, | 130 | ctrl_err(ctrl, "pci_hp_register failed: error %d\n", retval); |
139 | "pci_hp_register failed with error %d\n", retval); | ||
140 | out: | 131 | out: |
141 | if (retval) { | 132 | if (retval) { |
142 | kfree(ops); | 133 | kfree(ops); |
@@ -158,9 +149,6 @@ static int set_attention_status(struct hotplug_slot *hotplug_slot, u8 status) | |||
158 | { | 149 | { |
159 | struct slot *slot = hotplug_slot->private; | 150 | struct slot *slot = hotplug_slot->private; |
160 | 151 | ||
161 | ctrl_dbg(slot->ctrl, "%s: physical_slot = %s\n", | ||
162 | __func__, slot_name(slot)); | ||
163 | |||
164 | pciehp_set_attention_status(slot, status); | 152 | pciehp_set_attention_status(slot, status); |
165 | return 0; | 153 | return 0; |
166 | } | 154 | } |
@@ -170,9 +158,6 @@ static int enable_slot(struct hotplug_slot *hotplug_slot) | |||
170 | { | 158 | { |
171 | struct slot *slot = hotplug_slot->private; | 159 | struct slot *slot = hotplug_slot->private; |
172 | 160 | ||
173 | ctrl_dbg(slot->ctrl, "%s: physical_slot = %s\n", | ||
174 | __func__, slot_name(slot)); | ||
175 | |||
176 | return pciehp_sysfs_enable_slot(slot); | 161 | return pciehp_sysfs_enable_slot(slot); |
177 | } | 162 | } |
178 | 163 | ||
@@ -181,9 +166,6 @@ static int disable_slot(struct hotplug_slot *hotplug_slot) | |||
181 | { | 166 | { |
182 | struct slot *slot = hotplug_slot->private; | 167 | struct slot *slot = hotplug_slot->private; |
183 | 168 | ||
184 | ctrl_dbg(slot->ctrl, "%s: physical_slot = %s\n", | ||
185 | __func__, slot_name(slot)); | ||
186 | |||
187 | return pciehp_sysfs_disable_slot(slot); | 169 | return pciehp_sysfs_disable_slot(slot); |
188 | } | 170 | } |
189 | 171 | ||
@@ -191,9 +173,6 @@ static int get_power_status(struct hotplug_slot *hotplug_slot, u8 *value) | |||
191 | { | 173 | { |
192 | struct slot *slot = hotplug_slot->private; | 174 | struct slot *slot = hotplug_slot->private; |
193 | 175 | ||
194 | ctrl_dbg(slot->ctrl, "%s: physical_slot = %s\n", | ||
195 | __func__, slot_name(slot)); | ||
196 | |||
197 | pciehp_get_power_status(slot, value); | 176 | pciehp_get_power_status(slot, value); |
198 | return 0; | 177 | return 0; |
199 | } | 178 | } |
@@ -202,9 +181,6 @@ static int get_attention_status(struct hotplug_slot *hotplug_slot, u8 *value) | |||
202 | { | 181 | { |
203 | struct slot *slot = hotplug_slot->private; | 182 | struct slot *slot = hotplug_slot->private; |
204 | 183 | ||
205 | ctrl_dbg(slot->ctrl, "%s: physical_slot = %s\n", | ||
206 | __func__, slot_name(slot)); | ||
207 | |||
208 | pciehp_get_attention_status(slot, value); | 184 | pciehp_get_attention_status(slot, value); |
209 | return 0; | 185 | return 0; |
210 | } | 186 | } |
@@ -213,9 +189,6 @@ static int get_latch_status(struct hotplug_slot *hotplug_slot, u8 *value) | |||
213 | { | 189 | { |
214 | struct slot *slot = hotplug_slot->private; | 190 | struct slot *slot = hotplug_slot->private; |
215 | 191 | ||
216 | ctrl_dbg(slot->ctrl, "%s: physical_slot = %s\n", | ||
217 | __func__, slot_name(slot)); | ||
218 | |||
219 | pciehp_get_latch_status(slot, value); | 192 | pciehp_get_latch_status(slot, value); |
220 | return 0; | 193 | return 0; |
221 | } | 194 | } |
@@ -224,9 +197,6 @@ static int get_adapter_status(struct hotplug_slot *hotplug_slot, u8 *value) | |||
224 | { | 197 | { |
225 | struct slot *slot = hotplug_slot->private; | 198 | struct slot *slot = hotplug_slot->private; |
226 | 199 | ||
227 | ctrl_dbg(slot->ctrl, "%s: physical_slot = %s\n", | ||
228 | __func__, slot_name(slot)); | ||
229 | |||
230 | pciehp_get_adapter_status(slot, value); | 200 | pciehp_get_adapter_status(slot, value); |
231 | return 0; | 201 | return 0; |
232 | } | 202 | } |
@@ -235,9 +205,6 @@ static int reset_slot(struct hotplug_slot *hotplug_slot, int probe) | |||
235 | { | 205 | { |
236 | struct slot *slot = hotplug_slot->private; | 206 | struct slot *slot = hotplug_slot->private; |
237 | 207 | ||
238 | ctrl_dbg(slot->ctrl, "%s: physical_slot = %s\n", | ||
239 | __func__, slot_name(slot)); | ||
240 | |||
241 | return pciehp_reset_slot(slot, probe); | 208 | return pciehp_reset_slot(slot, probe); |
242 | } | 209 | } |
243 | 210 | ||
@@ -272,14 +239,14 @@ static int pciehp_probe(struct pcie_device *dev) | |||
272 | if (rc == -EBUSY) | 239 | if (rc == -EBUSY) |
273 | ctrl_warn(ctrl, "Slot already registered by another hotplug driver\n"); | 240 | ctrl_warn(ctrl, "Slot already registered by another hotplug driver\n"); |
274 | else | 241 | else |
275 | ctrl_err(ctrl, "Slot initialization failed\n"); | 242 | ctrl_err(ctrl, "Slot initialization failed (%d)\n", rc); |
276 | goto err_out_release_ctlr; | 243 | goto err_out_release_ctlr; |
277 | } | 244 | } |
278 | 245 | ||
279 | /* Enable events after we have setup the data structures */ | 246 | /* Enable events after we have setup the data structures */ |
280 | rc = pcie_init_notification(ctrl); | 247 | rc = pcie_init_notification(ctrl); |
281 | if (rc) { | 248 | if (rc) { |
282 | ctrl_err(ctrl, "Notification initialization failed\n"); | 249 | ctrl_err(ctrl, "Notification initialization failed (%d)\n", rc); |
283 | goto err_out_free_ctrl_slot; | 250 | goto err_out_free_ctrl_slot; |
284 | } | 251 | } |
285 | 252 | ||
diff --git a/drivers/pci/hotplug/pciehp_ctrl.c b/drivers/pci/hotplug/pciehp_ctrl.c index f052e951b23e..4bdaf62b4e29 100644 --- a/drivers/pci/hotplug/pciehp_ctrl.c +++ b/drivers/pci/hotplug/pciehp_ctrl.c | |||
@@ -59,9 +59,6 @@ u8 pciehp_handle_attention_button(struct slot *p_slot) | |||
59 | u32 event_type; | 59 | u32 event_type; |
60 | struct controller *ctrl = p_slot->ctrl; | 60 | struct controller *ctrl = p_slot->ctrl; |
61 | 61 | ||
62 | /* Attention Button Change */ | ||
63 | ctrl_dbg(ctrl, "Attention button interrupt received\n"); | ||
64 | |||
65 | /* | 62 | /* |
66 | * Button pressed - See if need to TAKE ACTION!!! | 63 | * Button pressed - See if need to TAKE ACTION!!! |
67 | */ | 64 | */ |
@@ -79,9 +76,6 @@ u8 pciehp_handle_switch_change(struct slot *p_slot) | |||
79 | u32 event_type; | 76 | u32 event_type; |
80 | struct controller *ctrl = p_slot->ctrl; | 77 | struct controller *ctrl = p_slot->ctrl; |
81 | 78 | ||
82 | /* Switch Change */ | ||
83 | ctrl_dbg(ctrl, "Switch interrupt received\n"); | ||
84 | |||
85 | pciehp_get_latch_status(p_slot, &getstatus); | 79 | pciehp_get_latch_status(p_slot, &getstatus); |
86 | if (getstatus) { | 80 | if (getstatus) { |
87 | /* | 81 | /* |
@@ -108,9 +102,6 @@ u8 pciehp_handle_presence_change(struct slot *p_slot) | |||
108 | u8 presence_save; | 102 | u8 presence_save; |
109 | struct controller *ctrl = p_slot->ctrl; | 103 | struct controller *ctrl = p_slot->ctrl; |
110 | 104 | ||
111 | /* Presence Change */ | ||
112 | ctrl_dbg(ctrl, "Presence/Notify input change\n"); | ||
113 | |||
114 | /* Switch is open, assume a presence change | 105 | /* Switch is open, assume a presence change |
115 | * Save the presence state | 106 | * Save the presence state |
116 | */ | 107 | */ |
@@ -140,8 +131,6 @@ u8 pciehp_handle_power_fault(struct slot *p_slot) | |||
140 | u32 event_type; | 131 | u32 event_type; |
141 | struct controller *ctrl = p_slot->ctrl; | 132 | struct controller *ctrl = p_slot->ctrl; |
142 | 133 | ||
143 | /* power fault */ | ||
144 | ctrl_dbg(ctrl, "Power fault interrupt received\n"); | ||
145 | ctrl_err(ctrl, "Power fault on slot %s\n", slot_name(p_slot)); | 134 | ctrl_err(ctrl, "Power fault on slot %s\n", slot_name(p_slot)); |
146 | event_type = INT_POWER_FAULT; | 135 | event_type = INT_POWER_FAULT; |
147 | ctrl_info(ctrl, "Power fault bit %x set\n", 0); | 136 | ctrl_info(ctrl, "Power fault bit %x set\n", 0); |
@@ -155,9 +144,6 @@ void pciehp_handle_linkstate_change(struct slot *p_slot) | |||
155 | u32 event_type; | 144 | u32 event_type; |
156 | struct controller *ctrl = p_slot->ctrl; | 145 | struct controller *ctrl = p_slot->ctrl; |
157 | 146 | ||
158 | /* Link Status Change */ | ||
159 | ctrl_dbg(ctrl, "Data Link Layer State change\n"); | ||
160 | |||
161 | if (pciehp_check_link_active(ctrl)) { | 147 | if (pciehp_check_link_active(ctrl)) { |
162 | ctrl_info(ctrl, "slot(%s): Link Up event\n", | 148 | ctrl_info(ctrl, "slot(%s): Link Up event\n", |
163 | slot_name(p_slot)); | 149 | slot_name(p_slot)); |
@@ -298,10 +284,6 @@ static void pciehp_power_thread(struct work_struct *work) | |||
298 | 284 | ||
299 | switch (info->req) { | 285 | switch (info->req) { |
300 | case DISABLE_REQ: | 286 | case DISABLE_REQ: |
301 | ctrl_dbg(p_slot->ctrl, | ||
302 | "Disabling domain:bus:device=%04x:%02x:00\n", | ||
303 | pci_domain_nr(p_slot->ctrl->pcie->port->subordinate), | ||
304 | p_slot->ctrl->pcie->port->subordinate->number); | ||
305 | mutex_lock(&p_slot->hotplug_lock); | 287 | mutex_lock(&p_slot->hotplug_lock); |
306 | pciehp_disable_slot(p_slot); | 288 | pciehp_disable_slot(p_slot); |
307 | mutex_unlock(&p_slot->hotplug_lock); | 289 | mutex_unlock(&p_slot->hotplug_lock); |
@@ -310,10 +292,6 @@ static void pciehp_power_thread(struct work_struct *work) | |||
310 | mutex_unlock(&p_slot->lock); | 292 | mutex_unlock(&p_slot->lock); |
311 | break; | 293 | break; |
312 | case ENABLE_REQ: | 294 | case ENABLE_REQ: |
313 | ctrl_dbg(p_slot->ctrl, | ||
314 | "Enabling domain:bus:device=%04x:%02x:00\n", | ||
315 | pci_domain_nr(p_slot->ctrl->pcie->port->subordinate), | ||
316 | p_slot->ctrl->pcie->port->subordinate->number); | ||
317 | mutex_lock(&p_slot->hotplug_lock); | 295 | mutex_lock(&p_slot->hotplug_lock); |
318 | ret = pciehp_enable_slot(p_slot); | 296 | ret = pciehp_enable_slot(p_slot); |
319 | mutex_unlock(&p_slot->hotplug_lock); | 297 | mutex_unlock(&p_slot->hotplug_lock); |
@@ -416,7 +394,7 @@ static void handle_button_press_event(struct slot *p_slot) | |||
416 | ctrl_info(ctrl, "Button ignore on Slot(%s)\n", slot_name(p_slot)); | 394 | ctrl_info(ctrl, "Button ignore on Slot(%s)\n", slot_name(p_slot)); |
417 | break; | 395 | break; |
418 | default: | 396 | default: |
419 | ctrl_warn(ctrl, "Not a valid state\n"); | 397 | ctrl_warn(ctrl, "ignoring invalid state %#x\n", p_slot->state); |
420 | break; | 398 | break; |
421 | } | 399 | } |
422 | } | 400 | } |
@@ -507,8 +485,8 @@ static void handle_link_event(struct slot *p_slot, u32 event) | |||
507 | } | 485 | } |
508 | break; | 486 | break; |
509 | default: | 487 | default: |
510 | ctrl_err(ctrl, "Not a valid state on slot(%s)\n", | 488 | ctrl_err(ctrl, "ignoring invalid state %#x on slot(%s)\n", |
511 | slot_name(p_slot)); | 489 | p_slot->state, slot_name(p_slot)); |
512 | kfree(info); | 490 | kfree(info); |
513 | break; | 491 | break; |
514 | } | 492 | } |
@@ -532,7 +510,6 @@ static void interrupt_event_handler(struct work_struct *work) | |||
532 | pciehp_green_led_off(p_slot); | 510 | pciehp_green_led_off(p_slot); |
533 | break; | 511 | break; |
534 | case INT_PRESENCE_ON: | 512 | case INT_PRESENCE_ON: |
535 | ctrl_dbg(ctrl, "Surprise Insertion\n"); | ||
536 | handle_surprise_event(p_slot); | 513 | handle_surprise_event(p_slot); |
537 | break; | 514 | break; |
538 | case INT_PRESENCE_OFF: | 515 | case INT_PRESENCE_OFF: |
@@ -540,7 +517,6 @@ static void interrupt_event_handler(struct work_struct *work) | |||
540 | * Regardless of surprise capability, we need to | 517 | * Regardless of surprise capability, we need to |
541 | * definitely remove a card that has been pulled out! | 518 | * definitely remove a card that has been pulled out! |
542 | */ | 519 | */ |
543 | ctrl_dbg(ctrl, "Surprise Removal\n"); | ||
544 | handle_surprise_event(p_slot); | 520 | handle_surprise_event(p_slot); |
545 | break; | 521 | break; |
546 | case INT_LINK_UP: | 522 | case INT_LINK_UP: |
@@ -647,8 +623,8 @@ int pciehp_sysfs_enable_slot(struct slot *p_slot) | |||
647 | slot_name(p_slot)); | 623 | slot_name(p_slot)); |
648 | break; | 624 | break; |
649 | default: | 625 | default: |
650 | ctrl_err(ctrl, "Not a valid state on slot %s\n", | 626 | ctrl_err(ctrl, "invalid state %#x on slot %s\n", |
651 | slot_name(p_slot)); | 627 | p_slot->state, slot_name(p_slot)); |
652 | break; | 628 | break; |
653 | } | 629 | } |
654 | mutex_unlock(&p_slot->lock); | 630 | mutex_unlock(&p_slot->lock); |
@@ -682,8 +658,8 @@ int pciehp_sysfs_disable_slot(struct slot *p_slot) | |||
682 | slot_name(p_slot)); | 658 | slot_name(p_slot)); |
683 | break; | 659 | break; |
684 | default: | 660 | default: |
685 | ctrl_err(ctrl, "Not a valid state on slot %s\n", | 661 | ctrl_err(ctrl, "invalid state %#x on slot %s\n", |
686 | slot_name(p_slot)); | 662 | p_slot->state, slot_name(p_slot)); |
687 | break; | 663 | break; |
688 | } | 664 | } |
689 | mutex_unlock(&p_slot->lock); | 665 | mutex_unlock(&p_slot->lock); |
diff --git a/drivers/pci/hotplug/pciehp_hpc.c b/drivers/pci/hotplug/pciehp_hpc.c index 6d6868811e56..e9daaa370047 100644 --- a/drivers/pci/hotplug/pciehp_hpc.c +++ b/drivers/pci/hotplug/pciehp_hpc.c | |||
@@ -312,7 +312,8 @@ int pciehp_check_link_status(struct controller *ctrl) | |||
312 | ctrl_dbg(ctrl, "%s: lnk_status = %x\n", __func__, lnk_status); | 312 | ctrl_dbg(ctrl, "%s: lnk_status = %x\n", __func__, lnk_status); |
313 | if ((lnk_status & PCI_EXP_LNKSTA_LT) || | 313 | if ((lnk_status & PCI_EXP_LNKSTA_LT) || |
314 | !(lnk_status & PCI_EXP_LNKSTA_NLW)) { | 314 | !(lnk_status & PCI_EXP_LNKSTA_NLW)) { |
315 | ctrl_err(ctrl, "Link Training Error occurs\n"); | 315 | ctrl_err(ctrl, "link training error: status %#06x\n", |
316 | lnk_status); | ||
316 | return -1; | 317 | return -1; |
317 | } | 318 | } |
318 | 319 | ||
@@ -556,7 +557,7 @@ static irqreturn_t pcie_isr(int irq, void *dev_id) | |||
556 | intr_loc); | 557 | intr_loc); |
557 | } while (detected); | 558 | } while (detected); |
558 | 559 | ||
559 | ctrl_dbg(ctrl, "%s: intr_loc %x\n", __func__, intr_loc); | 560 | ctrl_dbg(ctrl, "pending interrupts %#06x from Slot Status\n", intr_loc); |
560 | 561 | ||
561 | /* Check Command Complete Interrupt Pending */ | 562 | /* Check Command Complete Interrupt Pending */ |
562 | if (intr_loc & PCI_EXP_SLTSTA_CC) { | 563 | if (intr_loc & PCI_EXP_SLTSTA_CC) { |
@@ -748,48 +749,13 @@ static void pcie_cleanup_slot(struct controller *ctrl) | |||
748 | 749 | ||
749 | static inline void dbg_ctrl(struct controller *ctrl) | 750 | static inline void dbg_ctrl(struct controller *ctrl) |
750 | { | 751 | { |
751 | int i; | ||
752 | u16 reg16; | ||
753 | struct pci_dev *pdev = ctrl->pcie->port; | 752 | struct pci_dev *pdev = ctrl->pcie->port; |
753 | u16 reg16; | ||
754 | 754 | ||
755 | if (!pciehp_debug) | 755 | if (!pciehp_debug) |
756 | return; | 756 | return; |
757 | 757 | ||
758 | ctrl_info(ctrl, "Hotplug Controller:\n"); | ||
759 | ctrl_info(ctrl, " Seg/Bus/Dev/Func/IRQ : %s IRQ %d\n", | ||
760 | pci_name(pdev), pdev->irq); | ||
761 | ctrl_info(ctrl, " Vendor ID : 0x%04x\n", pdev->vendor); | ||
762 | ctrl_info(ctrl, " Device ID : 0x%04x\n", pdev->device); | ||
763 | ctrl_info(ctrl, " Subsystem ID : 0x%04x\n", | ||
764 | pdev->subsystem_device); | ||
765 | ctrl_info(ctrl, " Subsystem Vendor ID : 0x%04x\n", | ||
766 | pdev->subsystem_vendor); | ||
767 | ctrl_info(ctrl, " PCIe Cap offset : 0x%02x\n", | ||
768 | pci_pcie_cap(pdev)); | ||
769 | for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) { | ||
770 | if (!pci_resource_len(pdev, i)) | ||
771 | continue; | ||
772 | ctrl_info(ctrl, " PCI resource [%d] : %pR\n", | ||
773 | i, &pdev->resource[i]); | ||
774 | } | ||
775 | ctrl_info(ctrl, "Slot Capabilities : 0x%08x\n", ctrl->slot_cap); | 758 | ctrl_info(ctrl, "Slot Capabilities : 0x%08x\n", ctrl->slot_cap); |
776 | ctrl_info(ctrl, " Physical Slot Number : %d\n", PSN(ctrl)); | ||
777 | ctrl_info(ctrl, " Attention Button : %3s\n", | ||
778 | ATTN_BUTTN(ctrl) ? "yes" : "no"); | ||
779 | ctrl_info(ctrl, " Power Controller : %3s\n", | ||
780 | POWER_CTRL(ctrl) ? "yes" : "no"); | ||
781 | ctrl_info(ctrl, " MRL Sensor : %3s\n", | ||
782 | MRL_SENS(ctrl) ? "yes" : "no"); | ||
783 | ctrl_info(ctrl, " Attention Indicator : %3s\n", | ||
784 | ATTN_LED(ctrl) ? "yes" : "no"); | ||
785 | ctrl_info(ctrl, " Power Indicator : %3s\n", | ||
786 | PWR_LED(ctrl) ? "yes" : "no"); | ||
787 | ctrl_info(ctrl, " Hot-Plug Surprise : %3s\n", | ||
788 | HP_SUPR_RM(ctrl) ? "yes" : "no"); | ||
789 | ctrl_info(ctrl, " EMI Present : %3s\n", | ||
790 | EMI(ctrl) ? "yes" : "no"); | ||
791 | ctrl_info(ctrl, " Command Completed : %3s\n", | ||
792 | NO_CMD_CMPL(ctrl) ? "no" : "yes"); | ||
793 | pcie_capability_read_word(pdev, PCI_EXP_SLTSTA, ®16); | 759 | pcie_capability_read_word(pdev, PCI_EXP_SLTSTA, ®16); |
794 | ctrl_info(ctrl, "Slot Status : 0x%04x\n", reg16); | 760 | ctrl_info(ctrl, "Slot Status : 0x%04x\n", reg16); |
795 | pcie_capability_read_word(pdev, PCI_EXP_SLTCTL, ®16); | 761 | pcie_capability_read_word(pdev, PCI_EXP_SLTCTL, ®16); |
@@ -818,10 +784,8 @@ struct controller *pcie_init(struct pcie_device *dev) | |||
818 | 784 | ||
819 | /* Check if Data Link Layer Link Active Reporting is implemented */ | 785 | /* Check if Data Link Layer Link Active Reporting is implemented */ |
820 | pcie_capability_read_dword(pdev, PCI_EXP_LNKCAP, &link_cap); | 786 | pcie_capability_read_dword(pdev, PCI_EXP_LNKCAP, &link_cap); |
821 | if (link_cap & PCI_EXP_LNKCAP_DLLLARC) { | 787 | if (link_cap & PCI_EXP_LNKCAP_DLLLARC) |
822 | ctrl_dbg(ctrl, "Link Active Reporting supported\n"); | ||
823 | ctrl->link_active_reporting = 1; | 788 | ctrl->link_active_reporting = 1; |
824 | } | ||
825 | 789 | ||
826 | /* Clear all remaining event bits in Slot Status register */ | 790 | /* Clear all remaining event bits in Slot Status register */ |
827 | pcie_capability_write_word(pdev, PCI_EXP_SLTSTA, | 791 | pcie_capability_write_word(pdev, PCI_EXP_SLTSTA, |
@@ -829,13 +793,15 @@ struct controller *pcie_init(struct pcie_device *dev) | |||
829 | PCI_EXP_SLTSTA_MRLSC | PCI_EXP_SLTSTA_PDC | | 793 | PCI_EXP_SLTSTA_MRLSC | PCI_EXP_SLTSTA_PDC | |
830 | PCI_EXP_SLTSTA_CC | PCI_EXP_SLTSTA_DLLSC); | 794 | PCI_EXP_SLTSTA_CC | PCI_EXP_SLTSTA_DLLSC); |
831 | 795 | ||
832 | ctrl_info(ctrl, "Slot #%d AttnBtn%c AttnInd%c PwrInd%c PwrCtrl%c MRL%c Interlock%c NoCompl%c LLActRep%c\n", | 796 | ctrl_info(ctrl, "Slot #%d AttnBtn%c PwrCtrl%c MRL%c AttnInd%c PwrInd%c HotPlug%c Surprise%c Interlock%c NoCompl%c LLActRep%c\n", |
833 | (slot_cap & PCI_EXP_SLTCAP_PSN) >> 19, | 797 | (slot_cap & PCI_EXP_SLTCAP_PSN) >> 19, |
834 | FLAG(slot_cap, PCI_EXP_SLTCAP_ABP), | 798 | FLAG(slot_cap, PCI_EXP_SLTCAP_ABP), |
835 | FLAG(slot_cap, PCI_EXP_SLTCAP_AIP), | ||
836 | FLAG(slot_cap, PCI_EXP_SLTCAP_PIP), | ||
837 | FLAG(slot_cap, PCI_EXP_SLTCAP_PCP), | 799 | FLAG(slot_cap, PCI_EXP_SLTCAP_PCP), |
838 | FLAG(slot_cap, PCI_EXP_SLTCAP_MRLSP), | 800 | FLAG(slot_cap, PCI_EXP_SLTCAP_MRLSP), |
801 | FLAG(slot_cap, PCI_EXP_SLTCAP_AIP), | ||
802 | FLAG(slot_cap, PCI_EXP_SLTCAP_PIP), | ||
803 | FLAG(slot_cap, PCI_EXP_SLTCAP_HPC), | ||
804 | FLAG(slot_cap, PCI_EXP_SLTCAP_HPS), | ||
839 | FLAG(slot_cap, PCI_EXP_SLTCAP_EIP), | 805 | FLAG(slot_cap, PCI_EXP_SLTCAP_EIP), |
840 | FLAG(slot_cap, PCI_EXP_SLTCAP_NCCS), | 806 | FLAG(slot_cap, PCI_EXP_SLTCAP_NCCS), |
841 | FLAG(link_cap, PCI_EXP_LNKCAP_DLLLARC)); | 807 | FLAG(link_cap, PCI_EXP_LNKCAP_DLLLARC)); |