> -----Original Message----- > From: linux-scsi-owner@xxxxxxxxxxxxxxx [mailto:linux-scsi- > owner@xxxxxxxxxxxxxxx] On Behalf Of Tomas Henzl ... > + /* kdump kernel is loading, we don't know in which state is > + * the pci interface. The dev->enable_cnt is equal zero > + * so we call enable+disable, wait a while and switch it on. > + */ > + rc = pci_enable_device(pdev); > + if (rc) { > + dev_warn(&pdev->dev, "Failed to enable PCI device\n"); > + return -ENODEV; > + } > + pci_disable_device(pdev); > + msleep(260); /* a randomly chosen number */ > + rc = pci_enable_device(pdev); > + if (rc) { > + dev_warn(&pdev->dev, "failed to enable device.\n"); > + return -ENODEV; > + } > + > /* Reset the controller with a PCI power-cycle or via doorbell > */ I tested this patch by adding: reset_devices to the kernel command line, which sets a kernel global variable that triggers the driver to take this path. Controller initialization failed with: [ 21.822789] hpsa 0000:02:00.0: Waiting for controller to respond to no-op [ 121.822219] hpsa 0000:02:00.0: controller message 03:00 timed out [ 121.854814] hpsa 0000:02:00.0: no-op failed; re-trying ... The reason is that pci_disable_device clears the Bus Master Enable bit, and there is no call to pci_set_master after pci_enable. The controller is unable to return the response for the command sent by hpsa_noop down below. Adding pci_set_master(pdev) got it working. A call to pci_request_regions is also missing (that's supposed to be called before accessing the controller's memory space), but that's not fatal here. --- Rob Elliott HP Server Storage -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html