All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sreekanth Reddy <sreekanth.reddy@avagotech.com>
To: Tomas Henzl <thenzl@redhat.com>
Cc: "jejb@kernel.org" <jejb@kernel.org>,
	Christoph Hellwig <hch@infradead.org>,
	"Martin K. Petersen" <martin.petersen@oracle.com>,
	"linux-scsi@vger.kernel.org" <linux-scsi@vger.kernel.org>,
	"James E.J. Bottomley" <JBottomley@parallels.com>,
	Sathya Prakash <Sathya.Prakash@avagotech.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 02/20] [SCSI] mpt3sas: Get IOC_FACTS information using handshake protocol only after HBA card gets into READY or Operational state.
Date: Wed, 17 Jun 2015 14:38:44 +0530	[thread overview]
Message-ID: <CAK=zhgruSPM5VKemaQ0D=jPOVUr5xNMqhSHmA-hUbJECbZspjA@mail.gmail.com> (raw)
In-Reply-To: <558047E7.6000901@redhat.com>

On Tue, Jun 16, 2015 at 9:29 PM, Tomas Henzl <thenzl@redhat.com> wrote:
> On 06/12/2015 11:42 AM, Sreekanth Reddy wrote:
>> Driver initialization fails if driver tries to send IOC facts request message when the IOC is in reset or in a fault state.
>>
>> This patch will make sure that
>>  1.Driver to send IOC facts request message only if HBA is in operational or ready state.
>>  2.If IOC is in fault state, a diagnostic reset would be issued.
>>  3.If IOC is in reset state then driver will wait for 10 seconds to exit out of reset state.
>>    If the HBA continues to be in reset state, then the HBA wouldn't be claimed by the driver.
>>
>> Signed-off-by: Sreekanth Reddy <Sreekanth.Reddy@avagotech.com>
>> ---
>>  drivers/scsi/mpt3sas/mpt3sas_base.c | 65 +++++++++++++++++++++++++++++++++++++
>>  1 file changed, 65 insertions(+)
>>
>> diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c b/drivers/scsi/mpt3sas/mpt3sas_base.c
>> index c13a365..ce57320 100644
>> --- a/drivers/scsi/mpt3sas/mpt3sas_base.c
>> +++ b/drivers/scsi/mpt3sas/mpt3sas_base.c
>> @@ -3169,6 +3169,9 @@ _base_wait_on_iocstate(struct MPT3SAS_ADAPTER *ioc, u32 ioc_state, int timeout,
>>   * Notes: MPI2_HIS_IOC2SYS_DB_STATUS - set to one when IOC writes to doorbell.
>>   */
>>  static int
>> +_base_diag_reset(struct MPT3SAS_ADAPTER *ioc, int sleep_flag);
>> +
>> +static int
>>  _base_wait_for_doorbell_int(struct MPT3SAS_ADAPTER *ioc, int timeout,
>>       int sleep_flag)
>>  {
>> @@ -3711,6 +3714,61 @@ _base_get_port_facts(struct MPT3SAS_ADAPTER *ioc, int port, int sleep_flag)
>>  }
>>
>>  /**
>> + * _base_wait_for_iocstate - Wait until the card is in READY or OPERATIONAL
>> + * @ioc: per adapter object
>> + * @timeout:
>> + * @sleep_flag: CAN_SLEEP or NO_SLEEP
>> + *
>> + * Returns 0 for success, non-zero for failure.
>> + */
>> +static int
>> +_base_wait_for_iocstate(struct MPT3SAS_ADAPTER *ioc, int timeout,
>> +     int sleep_flag)
>> +{
>> +     u32 ioc_state;
>> +     int rc;
>> +
>> +     dinitprintk(ioc, printk(MPT3SAS_FMT "%s\n", ioc->name,
>> +         __func__));
>> +
>> +     if (ioc->pci_error_recovery)
>> +             return 0;
> Hi Sreekanth, isn't that^ an error condition - 'return -EFAULT;'
> would be better?
> Tomas

Accepted. I will post the next version of this patch with this change.

Thanks,
Sreekanth
>> +
>> +     ioc_state = mpt3sas_base_get_iocstate(ioc, 0);
>> +     dhsprintk(ioc, printk(MPT3SAS_FMT "%s: ioc_state(0x%08x)\n",
>> +         ioc->name, __func__, ioc_state));
>> +
>> +     if (((ioc_state & MPI2_IOC_STATE_MASK) == MPI2_IOC_STATE_READY) ||
>> +         (ioc_state & MPI2_IOC_STATE_MASK) == MPI2_IOC_STATE_OPERATIONAL)
>> +             return 0;
>> +
>> +     if (ioc_state & MPI2_DOORBELL_USED) {
>> +             dhsprintk(ioc, printk(MPT3SAS_FMT
>> +                 "unexpected doorbell active!\n", ioc->name));
>> +             goto issue_diag_reset;
>> +     }
>> +
>> +     if ((ioc_state & MPI2_IOC_STATE_MASK) == MPI2_IOC_STATE_FAULT) {
>> +             mpt3sas_base_fault_info(ioc, ioc_state &
>> +                 MPI2_DOORBELL_DATA_MASK);
>> +             goto issue_diag_reset;
>> +     }
>> +
>> +     ioc_state = _base_wait_on_iocstate(ioc, MPI2_IOC_STATE_READY,
>> +         timeout, sleep_flag);
>> +     if (ioc_state) {
>> +             dfailprintk(ioc, printk(MPT3SAS_FMT
>> +                 "%s: failed going to ready state (ioc_state=0x%x)\n",
>> +                 ioc->name, __func__, ioc_state));
>> +             return -EFAULT;
>> +     }
>> +
>> + issue_diag_reset:
>> +     rc = _base_diag_reset(ioc, sleep_flag);
>> +     return rc;
>> +}
>> +
>> +/**
>>   * _base_get_ioc_facts - obtain ioc facts reply and save in ioc
>>   * @ioc: per adapter object
>>   * @sleep_flag: CAN_SLEEP or NO_SLEEP
>> @@ -3728,6 +3786,13 @@ _base_get_ioc_facts(struct MPT3SAS_ADAPTER *ioc, int sleep_flag)
>>       dinitprintk(ioc, pr_info(MPT3SAS_FMT "%s\n", ioc->name,
>>           __func__));
>>
>> +     r = _base_wait_for_iocstate(ioc, 10, sleep_flag);
>> +     if (r) {
>> +             dfailprintk(ioc, printk(MPT3SAS_FMT
>> +                 "%s: failed getting to correct state\n",
>> +                 ioc->name, __func__));
>> +             return r;
>> +     }
>>       mpi_reply_sz = sizeof(Mpi2IOCFactsReply_t);
>>       mpi_request_sz = sizeof(Mpi2IOCFactsRequest_t);
>>       memset(&mpi_request, 0, mpi_request_sz);
>>
>



-- 

Regards,
Sreekanth

  reply	other threads:[~2015-06-17  9:08 UTC|newest]

Thread overview: 119+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-12  9:42 [PATCH 00/20] mpt3sas: driver update Sreekanth Reddy
2015-06-12  9:42 ` [PATCH 01/20] [SCSI] mpt3sas: Added Combined Reply Queue feature to extend up-to 96 MSIX vector support Sreekanth Reddy
2015-06-12 11:09   ` Johannes Thumshirn
2015-06-12 11:16     ` Sreekanth Reddy
2015-06-12 11:16       ` Sreekanth Reddy
2015-06-18  9:57       ` Sreekanth Reddy
2015-06-18  9:57         ` Sreekanth Reddy
2015-06-19  9:14         ` Johannes Thumshirn
2015-06-19  9:14           ` Johannes Thumshirn
2015-06-19  9:21           ` Sreekanth Reddy
2015-06-19  9:21             ` Sreekanth Reddy
2015-06-19  9:55             ` Johannes Thumshirn
2015-06-19  9:55               ` Johannes Thumshirn
2015-06-12  9:42 ` [PATCH 02/20] [SCSI] mpt3sas: Get IOC_FACTS information using handshake protocol only after HBA card gets into READY or Operational state Sreekanth Reddy
2015-06-16 15:59   ` Tomas Henzl
2015-06-17  9:08     ` Sreekanth Reddy [this message]
2015-06-12  9:42 ` [PATCH 03/20] [SCSI] mpt3sas: Don't block the drive when drive addition under the control of SML Sreekanth Reddy
2015-06-19 15:05   ` Martin K. Petersen
2015-06-19 15:05     ` Martin K. Petersen
2015-06-12  9:42 ` [PATCH 04/20] [SCSI] mpt3sas: Remove redundancy code while freeing the controller resources Sreekanth Reddy
2015-06-12 11:28   ` Johannes Thumshirn
2015-06-12 12:18     ` Sreekanth Reddy
2015-06-12 12:40       ` Johannes Thumshirn
2015-06-15 10:26         ` Sreekanth Reddy
2015-06-15 10:26           ` Sreekanth Reddy
2015-06-15 10:48           ` Johannes Thumshirn
2015-06-15 10:48             ` Johannes Thumshirn
2015-06-18  9:52             ` Sreekanth Reddy
2015-06-18  9:52               ` Sreekanth Reddy
2015-06-18 10:08   ` Johannes Thumshirn
2015-06-19 15:09   ` Martin K. Petersen
2015-06-19 15:09     ` Martin K. Petersen
2015-06-12  9:42 ` [PATCH 05/20] [SCSI] mpt3sas: MPI 2.5 Rev I (2.5.4) specifications Sreekanth Reddy
2015-06-15  9:51   ` Johannes Thumshirn
2015-06-19 15:10   ` Martin K. Petersen
2015-06-19 15:10     ` Martin K. Petersen
2015-06-12  9:42 ` [PATCH 06/20] [SCSI] mpt3sas: Provides the physical location of sas drives Sreekanth Reddy
2015-06-18  9:56   ` Sreekanth Reddy
2015-06-19  9:19   ` Johannes Thumshirn
2015-06-19  9:19     ` Johannes Thumshirn
2015-06-19 10:53     ` Sreekanth Reddy
2015-06-19 10:53       ` Sreekanth Reddy
2015-06-12  9:42 ` [PATCH 07/20] [SCSI] mpt3sas: Bump mpt3sas Driver version to v5.100.00.00 Sreekanth Reddy
2015-06-15  9:52   ` Johannes Thumshirn
2015-06-19 20:22   ` Martin K. Petersen
2015-06-19 20:22     ` Martin K. Petersen
2015-06-12  9:42 ` [PATCH 08/20] [SCSI] mpt3sas: Update MPI2 strings to MPI2.5 Sreekanth Reddy
2015-06-15  9:52   ` Johannes Thumshirn
2015-06-15  9:52     ` Johannes Thumshirn
2015-06-19 20:24   ` Martin K. Petersen
2015-06-19 20:24     ` Martin K. Petersen
2015-06-12  9:42 ` [PATCH 09/20] [SCSI] mpt3sas: MPI 2.5 Rev J (2.5.5) specification and 2.00.34 header files Sreekanth Reddy
2015-06-15  9:53   ` Johannes Thumshirn
2015-06-15  9:53     ` Johannes Thumshirn
2015-06-19 20:27   ` Martin K. Petersen
2015-06-19 20:27     ` Martin K. Petersen
2015-06-22 12:18     ` Sreekanth Reddy
2015-06-22 12:18       ` Sreekanth Reddy
2015-06-12  9:42 ` [PATCH 10/20] [SCSI] mpt3sas: Add branding string support for OEM's HBA Sreekanth Reddy
2015-06-15  9:46   ` Johannes Thumshirn
2015-06-15  9:46     ` Johannes Thumshirn
2015-06-15 11:11     ` Sreekanth Reddy
2015-06-15 11:11       ` Sreekanth Reddy
2015-06-15 11:53       ` Johannes Thumshirn
2015-06-15 12:00         ` Sreekanth Reddy
2015-06-18  9:51           ` Sreekanth Reddy
2015-06-18 10:09   ` Johannes Thumshirn
2015-06-18 10:09     ` Johannes Thumshirn
2015-06-19 20:30   ` Martin K. Petersen
2015-06-19 20:30     ` Martin K. Petersen
2015-06-12  9:42 ` [PATCH 11/20] [SCSI] mpt3sas: Add branding string support for OEM custom HBA Sreekanth Reddy
2015-06-18  9:55   ` Sreekanth Reddy
2015-06-19 20:34   ` Martin K. Petersen
2015-06-19 20:34     ` Martin K. Petersen
2015-06-12  9:42 ` [PATCH 12/20] [SCSI] mpt3sas: Bump mpt3sas driver version to v6.100.00.00 Sreekanth Reddy
2015-06-15  9:53   ` Johannes Thumshirn
2015-06-15  9:53     ` Johannes Thumshirn
2015-06-19 20:35   ` Martin K. Petersen
2015-06-19 20:35     ` Martin K. Petersen
2015-06-12  9:42 ` [PATCH 13/20] [SCSI] mpt3sas: MPI 2.5 Rev K (2.5.6) specifications Sreekanth Reddy
2015-06-15  9:54   ` Johannes Thumshirn
2015-06-15  9:54     ` Johannes Thumshirn
2015-06-19 20:36   ` Martin K. Petersen
2015-06-19 20:36     ` Martin K. Petersen
2015-06-12  9:42 ` [PATCH 14/20] [SCSI] mpt3sas: Complete the SCSI command with DID_RESET status for log_info value 0x0x32010081 Sreekanth Reddy
2015-06-15 10:01   ` Johannes Thumshirn
2015-06-15 11:01     ` Sreekanth Reddy
2015-06-15 11:01       ` Sreekanth Reddy
2015-06-12  9:42 ` [PATCH 15/20] [SCSI] mpt3sas: Return host busy error status to SML when DMA mapping of scatter gather list fails for a SCSI command Sreekanth Reddy
2015-06-15  9:54   ` Johannes Thumshirn
2015-06-19 20:40   ` Martin K. Petersen
2015-06-19 20:40     ` Martin K. Petersen
2015-06-12  9:42 ` [PATCH 16/20] [SCSI] mpt3sas: Added support for customer specific branding Sreekanth Reddy
2015-06-18  9:53   ` Sreekanth Reddy
2015-06-19 20:44   ` Martin K. Petersen
2015-06-19 20:44     ` Martin K. Petersen
2015-06-22 12:26     ` Sreekanth Reddy
2015-06-22 12:26       ` Sreekanth Reddy
2015-06-22 20:36       ` Martin K. Petersen
2015-06-22 20:36         ` Martin K. Petersen
2015-06-25 13:40         ` Sreekanth Reddy
2015-06-12  9:42 ` [PATCH 17/20] [SCSI] mpt3sas: Use alloc_ordered_workqueue() API instead of create_singlethread_workqueue() API Sreekanth Reddy
2015-06-12 21:03   ` Joe Lawrence
2015-06-12 21:03     ` Joe Lawrence
2015-06-15 10:56     ` Sreekanth Reddy
2015-06-15 21:05       ` James Bottomley
2015-06-16  5:03         ` Sreekanth Reddy
2015-06-12  9:42 ` [PATCH 18/20] [SCSI] mpt3sas: Call dma_mapping_error() API after mapping an address with dma_map_single() API Sreekanth Reddy
2015-06-15  9:55   ` Johannes Thumshirn
2015-06-19 20:47   ` Martin K. Petersen
2015-06-19 20:47     ` Martin K. Petersen
2015-06-12  9:42 ` [PATCH 19/20] [SCSI] mpt3sas: When device is blocked followed by unblock fails, unfreeze the I/Os Sreekanth Reddy
2015-06-15  9:58   ` Johannes Thumshirn
2015-06-12  9:42 ` [PATCH 20/20] [SCSI] mpt3sas : Bump mpt3sas driver version to 9.100.00.00 Sreekanth Reddy
2015-06-15  9:56   ` Johannes Thumshirn
2015-06-19 21:01   ` Martin K. Petersen
2015-06-19 21:01     ` Martin K. Petersen
  -- strict thread matches above, loose matches on Subject: below --
2015-03-30 13:55 [PATCH 00/20] mpt3sas: driver update Sreekanth Reddy
2015-03-30 13:55 ` [PATCH 02/20] [SCSI] mpt3sas: Get IOC_FACTS information using handshake protocol only after HBA card gets into READY or Operational state Sreekanth Reddy
2015-06-18 10:00   ` Sreekanth Reddy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAK=zhgruSPM5VKemaQ0D=jPOVUr5xNMqhSHmA-hUbJECbZspjA@mail.gmail.com' \
    --to=sreekanth.reddy@avagotech.com \
    --cc=JBottomley@parallels.com \
    --cc=Sathya.Prakash@avagotech.com \
    --cc=hch@infradead.org \
    --cc=jejb@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=thenzl@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.