* [PATCH 2/3] be2iscsi: Adding a shutdown Routine
[not found] <1314032910-2304-1-git-send-email-jayamohan.kallickal@emulex.com>
@ 2011-08-22 17:08 ` Jayamohan Kallickal
2011-08-23 21:20 ` Mike Christie
2011-08-22 17:08 ` [PATCH 3/3] be2iscsi: Add pci_disable device Jayamohan Kallickal
2011-08-22 17:08 ` be2iscsi: Patches for inclusion Jayamohan Kallickal
2 siblings, 1 reply; 5+ messages in thread
From: Jayamohan Kallickal @ 2011-08-22 17:08 UTC (permalink / raw)
To: James.Bottomley, linux-scsi, michaelc; +Cc: Jayamohan Kallickal
This patch adds a shutdown routine. It fixes a bug where when be2net
and be2iscsi are both used be2iscsi was not cleaning up its resources
properly causing be2net to fail to get loaded when the system is
rebooted.
Signed-off-by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
---
drivers/scsi/be2iscsi/be_main.c | 38 ++++++++++++++++++++++++++++++--------
1 files changed, 30 insertions(+), 8 deletions(-)
diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c
index 92b9a10..4fef262 100644
--- a/drivers/scsi/be2iscsi/be_main.c
+++ b/drivers/scsi/be2iscsi/be_main.c
@@ -4118,9 +4118,8 @@ static int beiscsi_task_xmit(struct iscsi_task *task)
return beiscsi_iotask(task, sg, num_sg, xferlen, writedir);
}
-static void beiscsi_remove(struct pci_dev *pcidev)
+static void beiscsi_quiesce(struct beiscsi_hba *phba)
{
- struct beiscsi_hba *phba = NULL;
struct hwi_controller *phwi_ctrlr;
struct hwi_context_memory *phwi_context;
struct be_eq_obj *pbe_eq;
@@ -4128,12 +4127,6 @@ static void beiscsi_remove(struct pci_dev *pcidev)
u8 *real_offset = 0;
u32 value = 0;
- phba = (struct beiscsi_hba *)pci_get_drvdata(pcidev);
- if (!phba) {
- dev_err(&pcidev->dev, "beiscsi_remove called with no phba\n");
- return;
- }
-
phwi_ctrlr = phba->phwi_ctrlr;
phwi_context = phwi_ctrlr->phwi_ctxt;
hwi_disable_intr(phba);
@@ -4169,12 +4162,40 @@ static void beiscsi_remove(struct pci_dev *pcidev)
phba->ctrl.mbox_mem_alloced.size,
phba->ctrl.mbox_mem_alloced.va,
phba->ctrl.mbox_mem_alloced.dma);
+}
+
+static void beiscsi_remove(struct pci_dev *pcidev)
+{
+
+ struct beiscsi_hba *phba = NULL;
+
+ phba = pci_get_drvdata(pcidev);
+ if (!phba) {
+ dev_err(&pcidev->dev, "beiscsi_remove called with no phba\n");
+ return;
+ }
+
+ beiscsi_quiesce(phba);
iscsi_boot_destroy_kset(phba->boot_kset);
iscsi_host_remove(phba->shost);
pci_dev_put(phba->pcidev);
iscsi_host_free(phba->shost);
}
+static void beiscsi_shutdown(struct pci_dev *pcidev)
+{
+
+ struct beiscsi_hba *phba = NULL;
+
+ phba = (struct beiscsi_hba *)pci_get_drvdata(pcidev);
+ if (!phba) {
+ dev_err(&pcidev->dev, "beiscsi_shutdown called with no phba\n");
+ return;
+ }
+
+ beiscsi_quiesce(phba);
+}
+
static void beiscsi_msix_enable(struct beiscsi_hba *phba)
{
int i, status;
@@ -4435,6 +4456,7 @@ static struct pci_driver beiscsi_pci_driver = {
.name = DRV_NAME,
.probe = beiscsi_dev_probe,
.remove = beiscsi_remove,
+ .shutdown = beiscsi_shutdown,
.id_table = beiscsi_pci_id_table
};
--
1.7.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 3/3] be2iscsi: Add pci_disable device
[not found] <1314032910-2304-1-git-send-email-jayamohan.kallickal@emulex.com>
2011-08-22 17:08 ` [PATCH 2/3] be2iscsi: Adding a shutdown Routine Jayamohan Kallickal
@ 2011-08-22 17:08 ` Jayamohan Kallickal
2011-08-22 17:08 ` be2iscsi: Patches for inclusion Jayamohan Kallickal
2 siblings, 0 replies; 5+ messages in thread
From: Jayamohan Kallickal @ 2011-08-22 17:08 UTC (permalink / raw)
To: James.Bottomley, linux-scsi, michaelc; +Cc: Jayamohan Kallickal
This patch adds call to pci_disable_device during
rmmod and shutdown. The lack of this call was causing hang in
insmod - rmmod loop test
Signed-off-by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
---
drivers/scsi/be2iscsi/be_main.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/drivers/scsi/be2iscsi/be_main.c b/drivers/scsi/be2iscsi/be_main.c
index 4fef262..7bcbeca 100644
--- a/drivers/scsi/be2iscsi/be_main.c
+++ b/drivers/scsi/be2iscsi/be_main.c
@@ -4180,6 +4180,7 @@ static void beiscsi_remove(struct pci_dev *pcidev)
iscsi_host_remove(phba->shost);
pci_dev_put(phba->pcidev);
iscsi_host_free(phba->shost);
+ pci_disable_device(pcidev);
}
static void beiscsi_shutdown(struct pci_dev *pcidev)
@@ -4194,6 +4195,7 @@ static void beiscsi_shutdown(struct pci_dev *pcidev)
}
beiscsi_quiesce(phba);
+ pci_disable_device(pcidev);
}
static void beiscsi_msix_enable(struct beiscsi_hba *phba)
--
1.7.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* be2iscsi: Patches for inclusion
[not found] <1314032910-2304-1-git-send-email-jayamohan.kallickal@emulex.com>
2011-08-22 17:08 ` [PATCH 2/3] be2iscsi: Adding a shutdown Routine Jayamohan Kallickal
2011-08-22 17:08 ` [PATCH 3/3] be2iscsi: Add pci_disable device Jayamohan Kallickal
@ 2011-08-22 17:08 ` Jayamohan Kallickal
2 siblings, 0 replies; 5+ messages in thread
From: Jayamohan Kallickal @ 2011-08-22 17:08 UTC (permalink / raw)
To: James.Bottomley, linux-scsi, michaelc; +Cc: Jayamohan Kallickal
Hi
These set of patches have been made on
latest scsi-misc tree
Jayamohan Kallickal (3):
be2iscsi: Fixing the /proc/interrupts problem to avoid
corruption in /proc/interrupts
be2iscsi: Adding a shutdown routine as be2iscsi was not doing a
cleanup during kexec
be2iscsi: Add call to pci_disable device during rmmod and shutdown
Thanks
Jayamohan Kallickal
Signed off by: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
---
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/3] be2iscsi: Adding a shutdown Routine
2011-08-22 17:08 ` [PATCH 2/3] be2iscsi: Adding a shutdown Routine Jayamohan Kallickal
@ 2011-08-23 21:20 ` Mike Christie
2011-08-24 8:53 ` Rolf Eike Beer
0 siblings, 1 reply; 5+ messages in thread
From: Mike Christie @ 2011-08-23 21:20 UTC (permalink / raw)
To: Jayamohan Kallickal; +Cc: James.Bottomley, linux-scsi
On 08/22/2011 12:08 PM, Jayamohan Kallickal wrote:
> +static void beiscsi_remove(struct pci_dev *pcidev)
> +{
> +
> + struct beiscsi_hba *phba = NULL;
> +
> + phba = pci_get_drvdata(pcidev);
> +static void beiscsi_shutdown(struct pci_dev *pcidev)
> +{
> +
> + struct beiscsi_hba *phba = NULL;
> +
> + phba = (struct beiscsi_hba *)pci_get_drvdata(pcidev);
No need for casting.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/3] be2iscsi: Adding a shutdown Routine
2011-08-23 21:20 ` Mike Christie
@ 2011-08-24 8:53 ` Rolf Eike Beer
0 siblings, 0 replies; 5+ messages in thread
From: Rolf Eike Beer @ 2011-08-24 8:53 UTC (permalink / raw)
To: Mike Christie; +Cc: Jayamohan Kallickal, james.bottomley, linux-scsi
> On 08/22/2011 12:08 PM, Jayamohan Kallickal wrote:
>> +static void beiscsi_remove(struct pci_dev *pcidev)
>> +{
>> +
>> + struct beiscsi_hba *phba = NULL;
>> +
>> + phba = pci_get_drvdata(pcidev);
>
>
>> +static void beiscsi_shutdown(struct pci_dev *pcidev)
>> +{
>> +
>> + struct beiscsi_hba *phba = NULL;
>> +
>> + phba = (struct beiscsi_hba *)pci_get_drvdata(pcidev);
>
>
> No need for casting.
And no need to initialize to NULL either. Best would be
struct beiscsi_hba *phba = pci_get_drvdata(pcidev);
in both cases.
Eike
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2011-08-24 8:53 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1314032910-2304-1-git-send-email-jayamohan.kallickal@emulex.com>
2011-08-22 17:08 ` [PATCH 2/3] be2iscsi: Adding a shutdown Routine Jayamohan Kallickal
2011-08-23 21:20 ` Mike Christie
2011-08-24 8:53 ` Rolf Eike Beer
2011-08-22 17:08 ` [PATCH 3/3] be2iscsi: Add pci_disable device Jayamohan Kallickal
2011-08-22 17:08 ` be2iscsi: Patches for inclusion Jayamohan Kallickal
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox