diff options
author | Robert Elliott <elliott@hp.com> | 2015-01-23 22:42:06 (GMT) |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2015-02-02 17:57:37 (GMT) |
commit | 60f923b940246422c7da6fec5b0636822115e5ce (patch) | |
tree | f39c775a1932c088fe6004c09cf16d0c92112391 /drivers/scsi/hpsa.c | |
parent | adf1b3a31bdf4ca1e0dfb0afd8cb551053944db9 (diff) | |
download | linux-60f923b940246422c7da6fec5b0636822115e5ce.tar.xz |
hpsa: propagate return value from board ID lookup
If the board ID lookup function fails, return the return
code rather than return -ENODEV.
The only board ID failure reason right now is -ENODEV,
so this just provides more informative prints in kdump
and adapts to future changes.
Tested with error injection while booting with
reset_devices
on the kernel command line:
[ 62.804324] injecting error in inj_hpsa_lookup_board_id: 1 11
[ 62.804423] hpsa 0000:04:00.0: Board ID not found
(the pci probe layer does not print an additional
message if -ENODEV is the reason)
Reviewed-by: Scott Teel <scott.teel@pmcs.com>
Signed-off-by: Robert Elliott <elliott@hp.com>
Signed-off-by: Don Brace <don.brace@pmcs.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'drivers/scsi/hpsa.c')
-rw-r--r-- | drivers/scsi/hpsa.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c index 92ac76a..85b3d73 100644 --- a/drivers/scsi/hpsa.c +++ b/drivers/scsi/hpsa.c @@ -5812,8 +5812,12 @@ static int hpsa_kdump_hard_reset_controller(struct pci_dev *pdev) */ rc = hpsa_lookup_board_id(pdev, &board_id); - if (rc < 0 || !ctlr_is_resettable(board_id)) { - dev_warn(&pdev->dev, "Not resetting device.\n"); + if (rc < 0) { + dev_warn(&pdev->dev, "Board ID not found\n"); + return rc; + } + if (!ctlr_is_resettable(board_id)) { + dev_warn(&pdev->dev, "Controller not resettable\n"); return -ENODEV; } @@ -6295,7 +6299,7 @@ static int hpsa_pci_init(struct ctlr_info *h) prod_index = hpsa_lookup_board_id(h->pdev, &h->board_id); if (prod_index < 0) - return -ENODEV; + return prod_index; h->product_name = products[prod_index].product_name; h->access = *(products[prod_index].access); |