Commit 66192dfe authored by adam radford's avatar adam radford Committed by James Bottomley

[SCSI] megaraid_sas: Fix probe_one to clear MSI-X flags in kdump

The following patch for megaraid_sas fixes megasas_probe_one() to
clear MSI-X flags in kdump when the 'reset_devices' kernel parameter
is passed in.
Signed-off-by: default avatarAdam Radford <aradford@gmail.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
parent e1419191
...@@ -1477,4 +1477,7 @@ struct megasas_mgmt_info { ...@@ -1477,4 +1477,7 @@ struct megasas_mgmt_info {
int max_index; int max_index;
}; };
#define msi_control_reg(base) (base + PCI_MSI_FLAGS)
#define PCI_MSIX_FLAGS_ENABLE (1 << 15)
#endif /*LSI_MEGARAID_SAS_H */ #endif /*LSI_MEGARAID_SAS_H */
...@@ -3901,9 +3901,26 @@ megasas_set_dma_mask(struct pci_dev *pdev) ...@@ -3901,9 +3901,26 @@ megasas_set_dma_mask(struct pci_dev *pdev)
static int __devinit static int __devinit
megasas_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) megasas_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
{ {
int rval; int rval, pos;
struct Scsi_Host *host; struct Scsi_Host *host;
struct megasas_instance *instance; struct megasas_instance *instance;
u16 control = 0;
/* Reset MSI-X in the kdump kernel */
if (reset_devices) {
pos = pci_find_capability(pdev, PCI_CAP_ID_MSIX);
if (pos) {
pci_read_config_word(pdev, msi_control_reg(pos),
&control);
if (control & PCI_MSIX_FLAGS_ENABLE) {
dev_info(&pdev->dev, "resetting MSI-X\n");
pci_write_config_word(pdev,
msi_control_reg(pos),
control &
~PCI_MSIX_FLAGS_ENABLE);
}
}
}
/* /*
* Announce PCI information * Announce PCI information
......
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