CC: [email protected]
In-Reply-To: <[email protected]>
References: <[email protected]>
TO: Bhaumik Bhatt <[email protected]>
TO: [email protected]
CC: [email protected]
CC: [email protected]
CC: [email protected]
CC: [email protected]
CC: [email protected]
CC: [email protected]
CC: [email protected]
CC: Bhaumik Bhatt <[email protected]>

Hi Bhaumik,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on linus/master]
[also build test WARNING on v5.11 next-20210224]
[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/Bhaumik-Bhatt/Polling-for-MHI-ready/20210224-114954
base:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
c03c21ba6f4e95e406a1a7b4c34ef334b977c194
:::::: branch date: 9 hours ago
:::::: commit date: 9 hours ago
config: riscv-randconfig-m031-20210224 (attached as .config)
compiler: riscv64-linux-gcc (GCC) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

New smatch warnings:
drivers/bus/mhi/core/pm.c:239 mhi_ready_state_transition() warn: inconsistent 
returns '&mhi_cntrl->pm_lock'.

Old smatch warnings:
drivers/bus/mhi/core/pm.c:308 mhi_pm_m0_transition() warn: inconsistent returns 
'&mhi_cntrl->pm_lock'.
drivers/bus/mhi/core/pm.c:442 mhi_pm_mission_mode_transition() warn: 
inconsistent returns '&mhi_cntrl->pm_lock'.
drivers/bus/mhi/core/pm.c:859 mhi_pm_suspend() warn: inconsistent returns 
'&mhi_cntrl->pm_lock'.
arch/riscv/include/asm/atomic.h:204 atomic_fetch_add_unless() warn: 
inconsistent indenting

vim +239 drivers/bus/mhi/core/pm.c

3000f85b8f47b2 Manivannan Sadhasivam 2020-02-20  152  
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  153  /* Handle device ready 
state transition */
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  154  int 
mhi_ready_state_transition(struct mhi_controller *mhi_cntrl)
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  155  {
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  156    struct mhi_event 
*mhi_event;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  157    enum mhi_pm_state 
cur_state;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  158    struct device *dev = 
&mhi_cntrl->mhi_dev->dev;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  159    int ret, i;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  160  
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  161    /* Check if device 
entered error state */
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  162    if 
(MHI_PM_IN_FATAL_STATE(mhi_cntrl->pm_state)) {
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  163            dev_err(dev, 
"Device link is not accessible\n");
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  164            return -EIO;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  165    }
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  166  
112aa8cd374eda Bhaumik Bhatt         2021-02-23  167    /* Wait for RESET to be 
cleared and READY bit to be set by the device */
112aa8cd374eda Bhaumik Bhatt         2021-02-23  168    ret = 
mhi_poll_reg_field(mhi_cntrl, mhi_cntrl->regs, MHICTRL,
112aa8cd374eda Bhaumik Bhatt         2021-02-23  169                            
 MHICTRL_RESET_MASK, MHICTRL_RESET_SHIFT, 0,
112aa8cd374eda Bhaumik Bhatt         2021-02-23  170                            
 25000);
112aa8cd374eda Bhaumik Bhatt         2021-02-23  171    if (ret) {
112aa8cd374eda Bhaumik Bhatt         2021-02-23  172            dev_err(dev, 
"Device failed to clear MHI Reset\n");
112aa8cd374eda Bhaumik Bhatt         2021-02-23  173            return 
-ETIMEDOUT;
112aa8cd374eda Bhaumik Bhatt         2021-02-23  174    }
112aa8cd374eda Bhaumik Bhatt         2021-02-23  175  
112aa8cd374eda Bhaumik Bhatt         2021-02-23  176    ret = 
mhi_poll_reg_field(mhi_cntrl, mhi_cntrl->regs, MHISTATUS,
112aa8cd374eda Bhaumik Bhatt         2021-02-23  177                            
 MHISTATUS_READY_MASK, MHISTATUS_READY_SHIFT, 1,
112aa8cd374eda Bhaumik Bhatt         2021-02-23  178                            
 25000);
112aa8cd374eda Bhaumik Bhatt         2021-02-23  179    if (ret) {
112aa8cd374eda Bhaumik Bhatt         2021-02-23  180            dev_err(dev, 
"Device failed to enter MHI Ready\n");
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  181            return 
-ETIMEDOUT;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  182    }
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  183  
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  184    dev_dbg(dev, "Device in 
READY State\n");
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  185    
write_lock_irq(&mhi_cntrl->pm_lock);
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  186    cur_state = 
mhi_tryset_pm_state(mhi_cntrl, MHI_PM_POR);
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  187    mhi_cntrl->dev_state = 
MHI_STATE_READY;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  188    
write_unlock_irq(&mhi_cntrl->pm_lock);
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  189  
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  190    if (cur_state != 
MHI_PM_POR) {
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  191            dev_err(dev, 
"Error moving to state %s from %s\n",
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  192                    
to_mhi_pm_state_str(MHI_PM_POR),
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  193                    
to_mhi_pm_state_str(cur_state));
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  194            return -EIO;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  195    }
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  196  
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  197    
read_lock_bh(&mhi_cntrl->pm_lock);
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  198    if 
(!MHI_REG_ACCESS_VALID(mhi_cntrl->pm_state)) {
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  199            dev_err(dev, 
"Device registers not accessible\n");
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  200            goto error_mmio;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  201    }
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  202  
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  203    /* Configure MMIO 
registers */
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  204    ret = 
mhi_init_mmio(mhi_cntrl);
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  205    if (ret) {
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  206            dev_err(dev, 
"Error configuring MMIO registers\n");
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  207            goto error_mmio;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  208    }
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  209  
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  210    /* Add elements to all 
SW event rings */
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  211    mhi_event = 
mhi_cntrl->mhi_event;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  212    for (i = 0; i < 
mhi_cntrl->total_ev_rings; i++, mhi_event++) {
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  213            struct mhi_ring 
*ring = &mhi_event->ring;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  214  
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  215            /* Skip if this 
is an offload or HW event */
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  216            if 
(mhi_event->offload_ev || mhi_event->hw_ring)
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  217                    
continue;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  218  
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  219            ring->wp = 
ring->base + ring->len - ring->el_size;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  220            *ring->ctxt_wp 
= ring->iommu_base + ring->len - ring->el_size;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  221            /* Update all 
cores */
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  222            smp_wmb();
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  223  
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  224            /* Ring the 
event ring db */
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  225            
spin_lock_irq(&mhi_event->lock);
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  226            
mhi_ring_er_db(mhi_event);
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  227            
spin_unlock_irq(&mhi_event->lock);
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  228    }
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  229  
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  230    /* Set MHI to M0 state 
*/
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  231    
mhi_set_mhi_state(mhi_cntrl, MHI_STATE_M0);
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  232    
read_unlock_bh(&mhi_cntrl->pm_lock);
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  233  
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  234    return 0;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  235  
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  236  error_mmio:
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  237    
read_unlock_bh(&mhi_cntrl->pm_lock);
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  238  
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20 @239    return -EIO;
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  240  }
a6e2e3522f2914 Manivannan Sadhasivam 2020-02-20  241  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to