Skip to contentSkip to conversation

fixing errors handling during pci_driver resume stage [fusion]

PATCH In review Dmitriy Monakhov 1 participant 1 message Jan 9, 2007

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

PATCH 3/5 fixing errors handling during pci_driver resume stage [fusion]

fusion pci drivers have to return correct error code during resume stage in case of errors.

-----

drivers/message/fusion/mptbase.c +6 -2
index 6e068cf..51a3621 100644
@@ -1524,7 +1524,7 @@ mpt_resume(struct pci_dev *pdev)
 {
 	MPT_ADAPTER *ioc = pci_get_drvdata(pdev);
 	u32 device_state = pdev->current_state;
-	int recovery_state;
+	int recovery_state, err;
 
 	printk(MYIOC_s_INFO_FMT
 	"pci-resume: pdev=0x%p, slot=%s, Previous operating state [D%d]\n",
@@ -1532,7 +1532,11 @@ mpt_resume(struct pci_dev *pdev)
 
 	pci_set_power_state(pdev, 0);
 	pci_restore_state(pdev);
-	pci_enable_device(pdev);
+	err = pci_enable_device(pdev);
+	if (err) {
+		dev_err(&pdev->dev, "Cannot enable PCI device, aborting.\n");
+		return err;
+	}
 
 	/* enable interrupts */
 	CHIPREG_WRITE32(&ioc->chip->IntMask, MPI_HIM_DIM);
drivers/message/fusion/mptscsih.c +3 -1
index 2c72c36..5324866 100644
@@ -1120,8 +1120,10 @@ mptscsih_resume(struct pci_dev *pdev)
 	MPT_ADAPTER 		*ioc = pci_get_drvdata(pdev);
 	struct Scsi_Host 	*host = ioc->sh;
 	MPT_SCSI_HOST		*hd;
+	int err;
 
-	mpt_resume(pdev);
+	if ((err = mpt_resume(pdev)))
+		return err;
 
 	if(!host)
 		return 0;