Commit 4fa604e1 authored by Robert Elliott's avatar Robert Elliott Committed by Christoph Hellwig

hpsa: always call pci_set_master after pci_enable_device

If the kernel is booted with the reset_device parameter, which
is done for kdump, then the driver needs to call pci_set_master
after pci_enable_device to reenable bus mastering (since
the preceding pci_disable_device call disables bus mastering).

Also, place that after pci_request_regions both in the
kdump code and the normal pci_init code.

Remove the comment summarizing what pci_set_master
does, with the incomplete commentary on the impact of
pci_disable_device.
Signed-off-by: default avatarRobert Elliott <elliott@hp.com>
Signed-off-by: default avatarDon Brace <don.brace@pmcs.com>
Reviewed-by: default avatarDon Brace <don.brace@pmcs.com>
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
parent 763aadbf
...@@ -6363,15 +6363,15 @@ static int hpsa_pci_init(struct ctlr_info *h) ...@@ -6363,15 +6363,15 @@ static int hpsa_pci_init(struct ctlr_info *h)
return err; return err;
} }
/* Enable bus mastering (pci_disable_device may disable this) */
pci_set_master(h->pdev);
err = pci_request_regions(h->pdev, HPSA); err = pci_request_regions(h->pdev, HPSA);
if (err) { if (err) {
dev_err(&h->pdev->dev, dev_err(&h->pdev->dev,
"cannot obtain PCI resources, aborting\n"); "cannot obtain PCI resources, aborting\n");
return err; return err;
} }
pci_set_master(h->pdev);
hpsa_interrupt_mode(h); hpsa_interrupt_mode(h);
err = hpsa_pci_find_memory_BAR(h->pdev, &h->paddr); err = hpsa_pci_find_memory_BAR(h->pdev, &h->paddr);
if (err) if (err)
...@@ -6451,7 +6451,9 @@ static int hpsa_init_reset_devices(struct pci_dev *pdev) ...@@ -6451,7 +6451,9 @@ static int hpsa_init_reset_devices(struct pci_dev *pdev)
dev_warn(&pdev->dev, "failed to enable device.\n"); dev_warn(&pdev->dev, "failed to enable device.\n");
return -ENODEV; return -ENODEV;
} }
pci_set_master(pdev); pci_set_master(pdev);
/* Reset the controller with a PCI power-cycle or via doorbell */ /* Reset the controller with a PCI power-cycle or via doorbell */
rc = hpsa_kdump_hard_reset_controller(pdev); rc = hpsa_kdump_hard_reset_controller(pdev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment