Hi Manivannan,

I love your patch! Perhaps something to improve:

[auto build test WARNING on linus/master]
[also build test WARNING on v5.12-rc6 next-20210408]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    
https://github.com/0day-ci/linux/commits/Manivannan-Sadhasivam/bus-mhi-core-Fix-shadow-declarations/20210408-213242
base:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
454859c552da78b0f587205d308401922b56863e
config: um-randconfig-c024-20210408 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <l...@intel.com>


cocci warnings: (new ones prefixed by >>)
>> drivers/bus/mhi/core/main.c:599:2-19: ERROR: nested lock+irqsave that reuses 
>> flags from line 521.

vim +599 drivers/bus/mhi/core/main.c

1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  496  
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  497  static int 
parse_xfer_event(struct mhi_controller *mhi_cntrl,
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  498                        
struct mhi_tre *event,
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  499                        
struct mhi_chan *mhi_chan)
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  500  {
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  501    struct mhi_ring 
*buf_ring, *tre_ring;
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  502    struct device *dev = 
&mhi_cntrl->mhi_dev->dev;
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  503    struct mhi_result 
result;
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  504    unsigned long flags = 0;
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  505    u32 ev_code;
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  506  
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  507    ev_code = 
MHI_TRE_GET_EV_CODE(event);
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  508    buf_ring = 
&mhi_chan->buf_ring;
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  509    tre_ring = 
&mhi_chan->tre_ring;
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  510  
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  511    
result.transaction_status = (ev_code == MHI_EV_CC_OVERFLOW) ?
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  512            -EOVERFLOW : 0;
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  513  
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  514    /*
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  515     * If it's a DB Event 
then we need to grab the lock
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  516     * with preemption 
disabled and as a write because we
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  517     * have to update db 
register and there are chances that
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  518     * another thread could 
be doing the same.
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  519     */
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  520    if (ev_code >= 
MHI_EV_CC_OOB)
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20 @521            
write_lock_irqsave(&mhi_chan->lock, flags);
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  522    else
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  523            
read_lock_bh(&mhi_chan->lock);
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  524  
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  525    if (mhi_chan->ch_state 
!= MHI_CH_STATE_ENABLED)
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  526            goto 
end_process_tx_event;
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  527  
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  528    switch (ev_code) {
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  529    case MHI_EV_CC_OVERFLOW:
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  530    case MHI_EV_CC_EOB:
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  531    case MHI_EV_CC_EOT:
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  532    {
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  533            dma_addr_t ptr 
= MHI_TRE_GET_EV_PTR(event);
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  534            struct mhi_tre 
*local_rp, *ev_tre;
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  535            void *dev_rp;
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  536            struct 
mhi_buf_info *buf_info;
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  537            u16 xfer_len;
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  538  
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  539            /* Get the TRB 
this event points to */
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  540            ev_tre = 
mhi_to_virtual(tre_ring, ptr);
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  541  
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  542            dev_rp = ev_tre 
+ 1;
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  543            if (dev_rp >= 
(tre_ring->base + tre_ring->len))
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  544                    dev_rp 
= tre_ring->base;
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  545  
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  546            result.dir = 
mhi_chan->dir;
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  547  
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  548            local_rp = 
tre_ring->rp;
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  549            while (local_rp 
!= dev_rp) {
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  550                    
buf_info = buf_ring->rp;
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  551                    /* If 
it's the last TRE, get length from the event */
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  552                    if 
(local_rp == ev_tre)
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  553                            
xfer_len = MHI_TRE_GET_EV_LEN(event);
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  554                    else
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  555                            
xfer_len = buf_info->len;
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  556  
189ff97cca53e3 Manivannan Sadhasivam 2020-02-20  557                    /* 
Unmap if it's not pre-mapped by client */
189ff97cca53e3 Manivannan Sadhasivam 2020-02-20  558                    if 
(likely(!buf_info->pre_mapped))
189ff97cca53e3 Manivannan Sadhasivam 2020-02-20  559                            
mhi_cntrl->unmap_single(mhi_cntrl, buf_info);
189ff97cca53e3 Manivannan Sadhasivam 2020-02-20  560  
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  561                    
result.buf_addr = buf_info->cb_buf;
ee75cedf82d832 Hemant Kumar          2020-05-21  562  
ee75cedf82d832 Hemant Kumar          2020-05-21  563                    /* 
truncate to buf len if xfer_len is larger */
ee75cedf82d832 Hemant Kumar          2020-05-21  564                    
result.bytes_xferd =
ee75cedf82d832 Hemant Kumar          2020-05-21  565                            
min_t(u16, xfer_len, buf_info->len);
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  566                    
mhi_del_ring_element(mhi_cntrl, buf_ring);
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  567                    
mhi_del_ring_element(mhi_cntrl, tre_ring);
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  568                    
local_rp = tre_ring->rp;
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  569  
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  570                    /* 
notify client */
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  571                    
mhi_chan->xfer_cb(mhi_chan->mhi_dev, &result);
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  572  
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  573                    if 
(mhi_chan->dir == DMA_TO_DEVICE)
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  574                            
atomic_dec(&mhi_cntrl->pending_pkts);
189ff97cca53e3 Manivannan Sadhasivam 2020-02-20  575  
189ff97cca53e3 Manivannan Sadhasivam 2020-02-20  576                    /*
189ff97cca53e3 Manivannan Sadhasivam 2020-02-20  577                     * 
Recycle the buffer if buffer is pre-allocated,
189ff97cca53e3 Manivannan Sadhasivam 2020-02-20  578                     * if 
there is an error, not much we can do apart
189ff97cca53e3 Manivannan Sadhasivam 2020-02-20  579                     * from 
dropping the packet
189ff97cca53e3 Manivannan Sadhasivam 2020-02-20  580                     */
189ff97cca53e3 Manivannan Sadhasivam 2020-02-20  581                    if 
(mhi_chan->pre_alloc) {
189ff97cca53e3 Manivannan Sadhasivam 2020-02-20  582                            
if (mhi_queue_buf(mhi_chan->mhi_dev,
189ff97cca53e3 Manivannan Sadhasivam 2020-02-20  583                            
                  mhi_chan->dir,
189ff97cca53e3 Manivannan Sadhasivam 2020-02-20  584                            
                  buf_info->cb_buf,
189ff97cca53e3 Manivannan Sadhasivam 2020-02-20  585                            
                  buf_info->len, MHI_EOT)) {
189ff97cca53e3 Manivannan Sadhasivam 2020-02-20  586                            
        dev_err(dev,
189ff97cca53e3 Manivannan Sadhasivam 2020-02-20  587                            
                "Error recycling buffer for chan:%d\n",
189ff97cca53e3 Manivannan Sadhasivam 2020-02-20  588                            
                mhi_chan->chan);
189ff97cca53e3 Manivannan Sadhasivam 2020-02-20  589                            
        kfree(buf_info->cb_buf);
189ff97cca53e3 Manivannan Sadhasivam 2020-02-20  590                            
}
189ff97cca53e3 Manivannan Sadhasivam 2020-02-20  591                    }
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  592            }
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  593            break;
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  594    } /* CC_EOT */
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  595    case MHI_EV_CC_OOB:
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  596    case MHI_EV_CC_DB_MODE:
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  597    {
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  598            
mhi_chan->db_cfg.db_mode = 1;
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20 @599            
read_lock_irqsave(&mhi_cntrl->pm_lock, flags);
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  600            if 
(tre_ring->wp != tre_ring->rp &&
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  601                
MHI_DB_ACCESS_VALID(mhi_cntrl)) {
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  602                    
mhi_ring_chan_db(mhi_cntrl, mhi_chan);
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  603            }
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  604            
read_unlock_irqrestore(&mhi_cntrl->pm_lock, flags);
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  605            break;
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  606    }
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  607    case MHI_EV_CC_BAD_TRE:
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  608    default:
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  609            dev_err(dev, 
"Unknown event 0x%x\n", ev_code);
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  610            break;
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  611    } /* 
switch(MHI_EV_READ_CODE(EV_TRB_CODE,event)) */
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  612  
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  613  end_process_tx_event:
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  614    if (ev_code >= 
MHI_EV_CC_OOB)
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  615            
write_unlock_irqrestore(&mhi_chan->lock, flags);
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  616    else
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  617            
read_unlock_bh(&mhi_chan->lock);
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  618  
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  619    return 0;
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  620  }
1d3173a3bae703 Manivannan Sadhasivam 2020-02-20  621  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org

Attachment: .config.gz
Description: application/gzip

Reply via email to