Commit 8a4df120 authored by Tomohiro Kusumi's avatar Tomohiro Kusumi Committed by James Bottomley

[SCSI] lpfc 8.2.4 : Make lpfc legacy I/O port free

This is a patch written by Tomohiro Kusumi and submitted to
linux-scsi:

http://marc.info/?l=linux-scsi&m=118673720712152&w=2

The original patch comment:

This patch makes Emulex lpfc driver legacy I/O port free.
It has already been acked quite long time ago.
So I resubmit the patch.
http://lkml.org/lkml/2006/11/22/28

Current lpfc driver is already using pci_select_bars()
and pci_enable_device_bars() when the PCI bus has been reset.
So I think this patch should also be acked.
Signed-off-by: default avatarTomohiro Kusumi <kusumi.tomohiro@jp.fujitsu.com>
Signed-off-by: default avatarJames Smart <James.Smart@emulex.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
parent 09372820
...@@ -1892,10 +1892,11 @@ lpfc_pci_probe_one(struct pci_dev *pdev, const struct pci_device_id *pid) ...@@ -1892,10 +1892,11 @@ lpfc_pci_probe_one(struct pci_dev *pdev, const struct pci_device_id *pid)
int error = -ENODEV, retval; int error = -ENODEV, retval;
int i, hbq_count; int i, hbq_count;
uint16_t iotag; uint16_t iotag;
int bars = pci_select_bars(pdev, IORESOURCE_MEM);
if (pci_enable_device(pdev)) if (pci_enable_device_bars(pdev, bars))
goto out; goto out;
if (pci_request_regions(pdev, LPFC_DRIVER_NAME)) if (pci_request_selected_regions(pdev, bars, LPFC_DRIVER_NAME))
goto out_disable_device; goto out_disable_device;
phba = kzalloc(sizeof (struct lpfc_hba), GFP_KERNEL); phba = kzalloc(sizeof (struct lpfc_hba), GFP_KERNEL);
...@@ -2167,7 +2168,7 @@ out_idr_remove: ...@@ -2167,7 +2168,7 @@ out_idr_remove:
out_free_phba: out_free_phba:
kfree(phba); kfree(phba);
out_release_regions: out_release_regions:
pci_release_regions(pdev); pci_release_selected_regions(pdev, bars);
out_disable_device: out_disable_device:
pci_disable_device(pdev); pci_disable_device(pdev);
out: out:
...@@ -2183,6 +2184,8 @@ lpfc_pci_remove_one(struct pci_dev *pdev) ...@@ -2183,6 +2184,8 @@ lpfc_pci_remove_one(struct pci_dev *pdev)
struct Scsi_Host *shost = pci_get_drvdata(pdev); struct Scsi_Host *shost = pci_get_drvdata(pdev);
struct lpfc_vport *vport = (struct lpfc_vport *) shost->hostdata; struct lpfc_vport *vport = (struct lpfc_vport *) shost->hostdata;
struct lpfc_hba *phba = vport->phba; struct lpfc_hba *phba = vport->phba;
int bars = pci_select_bars(pdev, IORESOURCE_MEM);
spin_lock_irq(&phba->hbalock); spin_lock_irq(&phba->hbalock);
vport->load_flag |= FC_UNLOADING; vport->load_flag |= FC_UNLOADING;
spin_unlock_irq(&phba->hbalock); spin_unlock_irq(&phba->hbalock);
...@@ -2241,7 +2244,7 @@ lpfc_pci_remove_one(struct pci_dev *pdev) ...@@ -2241,7 +2244,7 @@ lpfc_pci_remove_one(struct pci_dev *pdev)
kfree(phba); kfree(phba);
pci_release_regions(pdev); pci_release_selected_regions(pdev, bars);
pci_disable_device(pdev); pci_disable_device(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