aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorHidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>2010-04-15 00:16:52 -0400
committerJesse Barnes <jbarnes@virtuousgeek.org>2010-05-11 15:01:33 -0400
commit17e21854bd59862f4ee47d1c7e828549f782711b (patch)
treeb1d7db096b4fa24e0522aa33de2710d2039924d0 /drivers
parent88da13bfabbffb8f89574eb168b9da9a0abc693f (diff)
PCI: aerdrv: rework do_recovery
Move dev_printks for debug into do_recovery(). This allows do_recovery() to return void. Signed-off-by: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com> Reviewed-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/pci/pcie/aer/aerdrv_core.c38
1 files changed, 17 insertions, 21 deletions
diff --git a/drivers/pci/pcie/aer/aerdrv_core.c b/drivers/pci/pcie/aer/aerdrv_core.c
index 210e53c2fdc..9dcd3aeeafb 100644
--- a/drivers/pci/pcie/aer/aerdrv_core.c
+++ b/drivers/pci/pcie/aer/aerdrv_core.c
@@ -465,8 +465,7 @@ static pci_ers_result_t reset_link(struct pcie_device *aerdev,
465 * error detected message to all downstream drivers within a hierarchy in 465 * error detected message to all downstream drivers within a hierarchy in
466 * question and return the returned code. 466 * question and return the returned code.
467 */ 467 */
468static pci_ers_result_t do_recovery(struct pcie_device *aerdev, 468static void do_recovery(struct pcie_device *aerdev, struct pci_dev *dev,
469 struct pci_dev *dev,
470 int severity) 469 int severity)
471{ 470{
472 pci_ers_result_t status, result = PCI_ERS_RESULT_RECOVERED; 471 pci_ers_result_t status, result = PCI_ERS_RESULT_RECOVERED;
@@ -484,10 +483,8 @@ static pci_ers_result_t do_recovery(struct pcie_device *aerdev,
484 483
485 if (severity == AER_FATAL) { 484 if (severity == AER_FATAL) {
486 result = reset_link(aerdev, dev); 485 result = reset_link(aerdev, dev);
487 if (result != PCI_ERS_RESULT_RECOVERED) { 486 if (result != PCI_ERS_RESULT_RECOVERED)
488 /* TODO: Should panic here? */ 487 goto failed;
489 return result;
490 }
491 } 488 }
492 489
493 if (status == PCI_ERS_RESULT_CAN_RECOVER) 490 if (status == PCI_ERS_RESULT_CAN_RECOVER)
@@ -508,13 +505,22 @@ static pci_ers_result_t do_recovery(struct pcie_device *aerdev,
508 report_slot_reset); 505 report_slot_reset);
509 } 506 }
510 507
511 if (status == PCI_ERS_RESULT_RECOVERED) 508 if (status != PCI_ERS_RESULT_RECOVERED)
512 broadcast_error_message(dev, 509 goto failed;
510
511 broadcast_error_message(dev,
513 state, 512 state,
514 "resume", 513 "resume",
515 report_resume); 514 report_resume);
516 515
517 return status; 516 dev_printk(KERN_DEBUG, &dev->dev,
517 "AER driver successfully recovered\n");
518 return;
519
520failed:
521 /* TODO: Should kernel panic here? */
522 dev_printk(KERN_DEBUG, &dev->dev,
523 "AER driver didn't recover\n");
518} 524}
519 525
520/** 526/**
@@ -529,7 +535,6 @@ static void handle_error_source(struct pcie_device *aerdev,
529 struct pci_dev *dev, 535 struct pci_dev *dev,
530 struct aer_err_info *info) 536 struct aer_err_info *info)
531{ 537{
532 pci_ers_result_t status = 0;
533 int pos; 538 int pos;
534 539
535 if (info->severity == AER_CORRECTABLE) { 540 if (info->severity == AER_CORRECTABLE) {
@@ -541,17 +546,8 @@ static void handle_error_source(struct pcie_device *aerdev,
541 if (pos) 546 if (pos)
542 pci_write_config_dword(dev, pos + PCI_ERR_COR_STATUS, 547 pci_write_config_dword(dev, pos + PCI_ERR_COR_STATUS,
543 info->status); 548 info->status);
544 } else { 549 } else
545 status = do_recovery(aerdev, dev, info->severity); 550 do_recovery(aerdev, dev, info->severity);
546 if (status == PCI_ERS_RESULT_RECOVERED) {
547 dev_printk(KERN_DEBUG, &dev->dev, "AER driver "
548 "successfully recovered\n");
549 } else {
550 /* TODO: Should kernel panic here? */
551 dev_printk(KERN_DEBUG, &dev->dev, "AER driver didn't "
552 "recover\n");
553 }
554 }
555} 551}
556 552
557/** 553/**