RE: [PATCH 06/13] qla4xxx: Prevent other port reinitialization during remove_adapter

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>-----Original Message-----
>From: linux-scsi-owner@xxxxxxxxxxxxxxx [mailto:linux-scsi-
>owner@xxxxxxxxxxxxxxx] On Behalf Of Mike Christie
>Sent: Tuesday, March 15, 2011 3:37 AM
>To: Vikas Chaudhary
>Cc: James Bottomley; linux-scsi@xxxxxxxxxxxxxxx; Ravi Anand; Lalit
>Chandivade; Karen Higgins
>Subject: Re: [PATCH 06/13] qla4xxx: Prevent other port reinitialization
>during remove_adapter
>
>On 03/14/2011 12:24 AM, Vikas Chaudhary wrote:
>> index 6068f80..59c5552 100644
>> --- a/drivers/scsi/qla4xxx/ql4_os.c
>> +++ b/drivers/scsi/qla4xxx/ql4_os.c
>> @@ -27,6 +27,11 @@ static char qla4xxx_version_str[40];
>>   static struct kmem_cache *srb_cachep;
>>
>>   /*
>> + * List of host adapters
>> + */
>> +static struct klist qla4xxx_hostlist;
>> +
>
>
>
>>
>>   /**
>> + * qla4xxx_prevent_other_port_reinit - Mark the other ISP-4xxx port to
>indicate
>> + * that the driver is being removed, so that the other port will not
>> + * re-initialize while in the process of removing the ha due to driver
>unload
>> + * or hba hotplug.
>
>For docbook comments you use a one line description on the first line,
>then add more informative stuff after the params.
>

Ok, I will be sending updated patch in next email.

>
>> + * @ha: pointer to adapter structure
>> + **/
>> +static void qla4xxx_prevent_other_port_reinit(struct scsi_qla_host *ha)
>> +{
>> +       struct scsi_qla_host *ha_listp;
>> +       struct klist_iter i;
>> +       struct klist_node *n;
>> +
>> +       klist_iter_init(&qla4xxx_hostlist,&i);
>> +       while ((n = klist_next(&i)) != NULL) {
>> +               ha_listp = container_of(n, struct scsi_qla_host, node);
>> +               if (ha == ha_listp)
>> +                       continue;
>> +
>> +               if ((pci_domain_nr(ha->pdev->bus) ==
>> +                   pci_domain_nr(ha_listp->pdev->bus))&&
>> +                   (ha->pdev->bus->number ==
>> +                   ha_listp->pdev->bus->number)&&
>> +                   (PCI_SLOT(ha->pdev->devfn) ==
>> +                   PCI_SLOT(ha_listp->pdev->devfn))) {
>> +
>
>Is there a qla4xxx specific reason why you need to prevent other ports
>from re-initing when removing a port? Does the hardware cause the other
>ports to be disrupted and that causes them to run the re-init code?

Yes, its ISP40XX specific. While unloading driver we make call to function
"qla4xxx_hw_reset" from "qla4xxx_free_adapter". When driver do hw_reset
for one port, hardware will generate interrupt for other ports to inform
reset is about to happen. After this interrupt driver will schedule reset
for other port by setting dpc flag "DPC_RESET_HA_INTR" in function
"qla4xxx_intr_handler" this will cause re-initialization of other port
after reset, but while unloading driver we don't want to schedule reset
for the other port as other port does not need re-initialization".

This message and any attached documents contain information from QLogic Corporation or its wholly-owned subsidiaries that may be confidential. If you are not the intended recipient, you may not read, copy, distribute, or use this information. If you have received this transmission in error, please notify the sender immediately by reply e-mail and then delete this message.

--
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


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux