lkml.org 
[lkml]   [2017]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.10 149/250] scsi: aacraid: Reorder Adapter status check
    Date
    From: Raghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>

    commit c421530bf848604e97d0785a03b3fe2c62775083 upstream.

    The driver currently checks the SELF_TEST_FAILED first and then
    KERNEL_PANIC next. Under error conditions(boot code failure) both
    SELF_TEST_FAILED and KERNEL_PANIC can be set at the same time.

    The driver has the capability to reset the controller on an KERNEL_PANIC,
    but not on SELF_TEST_FAILED.

    Fixed by first checking KERNEL_PANIC and then the others.

    Fixes: e8b12f0fb835223752 ([SCSI] aacraid: Add new code for PMC-Sierra's SRC base controller family)
    Signed-off-by: Raghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
    Reviewed-by: David Carroll <David.Carroll@microsemi.com>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>
    ---
    drivers/scsi/aacraid/src.c | 21 +++++++++++++++++----
    1 file changed, 17 insertions(+), 4 deletions(-)

    diff --git a/drivers/scsi/aacraid/src.c b/drivers/scsi/aacraid/src.c
    index 7e17107..05c9994 100644
    --- a/drivers/scsi/aacraid/src.c
    +++ b/drivers/scsi/aacraid/src.c
    @@ -359,16 +359,23 @@ static int aac_src_check_health(struct aac_dev *dev)
    u32 status = src_readl(dev, MUnit.OMR);

    /*
    + * Check to see if the board panic'd.
    + */
    + if (unlikely(status & KERNEL_PANIC))
    + goto err_blink;
    +
    + /*
    * Check to see if the board failed any self tests.
    */
    if (unlikely(status & SELF_TEST_FAILED))
    - return -1;
    + goto err_out;

    /*
    - * Check to see if the board panic'd.
    + * Check to see if the board failed any self tests.
    */
    - if (unlikely(status & KERNEL_PANIC))
    - return (status >> 16) & 0xFF;
    + if (unlikely(status & MONITOR_PANIC))
    + goto err_out;
    +
    /*
    * Wait for the adapter to be up and running.
    */
    @@ -378,6 +385,12 @@ static int aac_src_check_health(struct aac_dev *dev)
    * Everything is OK
    */
    return 0;
    +
    +err_out:
    + return -1;
    +
    +err_blink:
    + return (status > 16) & 0xFF;
    }

    /**
    --
    2.8.0.rc2.1.gbe9624a
    \
     
     \ /
      Last update: 2017-06-12 01:14    [W:4.069 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site