lkml.org 
[lkml]   [2012]   [Feb]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 1/2] [SCSI] pm8001: Fix bogus interrupt state flag issue.
    On Sun, Feb 26, 2012 at 07:03:30PM +0530, santosh nayak wrote:
    > From: Santosh Nayak <santoshprasadnayak@gmail.com>
    >
    > Static checker is giving following warning:
    > " error: calling 'spin_unlock_irqrestore()' with bogus flags"
    >
    > The code flow is as shown below:
    > process_oq() --> process_one_iomb --> mpi_sata_completion
    >
    > In 'mpi_sata_completion'
    > the first call for 'spin_unlock_irqrestore()' is with flags=0,
    > which is as good as 'spin_unlock_irq()' ( unconditional interrupt
    > enabling).
    >
    > So for better performance 'spin_unlock_irqrestore()' can be replaced
    > with 'spin_unlock_irq()' and 'spin_lock_irqsave()' can be replaced by
    > 'spin_lock_irq()'.
    >

    process_oq() is called from the interrupt handler pm8001_chip_isr()
    with interrupts disabled.

    drivers/scsi/pm8001/pm8001_hwi.c
    4301 spin_lock_irqsave(&pm8001_ha->lock, flags);
    4302 pm8001_chip_interrupt_disable(pm8001_ha);
    4303 process_oq(pm8001_ha);
    4304 pm8001_chip_interrupt_enable(pm8001_ha);
    4305 spin_unlock_irqrestore(&pm8001_ha->lock, flags);

    Probably we should just be doing a spin_lock() and spin_unlock()
    without re-enabling the IRQs. Should we even be doing that in the
    irq handler anyway?

    regards,
    dan carpenter

    [unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2012-02-26 16:07    [W:0.021 / U:60.584 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site