tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   00e4db51259a5f936fec1424b884f029479d3981
commit: f0325e38ab39c2e270770b72c79795772ac3b49e wlcore: Use spin_trylock in 
wlcore_irq_locked() for running the queue
date:   4 weeks ago
config: mips-randconfig-s032-20200811 (attached as .config)
compiler: mips64-linux-gcc (GCC) 9.3.0
reproduce:
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # apt-get install sparse
        # sparse version: v0.6.2-168-g9554805c-dirty
        git checkout f0325e38ab39c2e270770b72c79795772ac3b49e
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 
CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=mips 

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


sparse warnings: (new ones prefixed by >>)

>> drivers/net/wireless/ti/wlcore/main.c:643:34: sparse: sparse: context 
>> imbalance in 'wlcore_irq_locked' - different lock contexts for basic block

vim +/wlcore_irq_locked +643 drivers/net/wireless/ti/wlcore/main.c

1e73eb62cec7cf drivers/net/wireless/wl12xx/wl1271_main.c Juuso Oikarinen 
2010-02-22  518  
b5b45b3cbd5616 drivers/net/wireless/ti/wlcore/main.c     Arik Nemtsov    
2012-06-21  519  static int wlcore_irq_locked(struct wl1271 *wl)
f5fc0f86b02afe drivers/net/wireless/wl12xx/wl1271_main.c Luciano Coelho  
2009-08-06  520  {
b5b45b3cbd5616 drivers/net/wireless/ti/wlcore/main.c     Arik Nemtsov    
2012-06-21  521        int ret = 0;
c15f63bffabb99 drivers/net/wireless/wl12xx/wl1271_main.c Juuso Oikarinen 
2009-10-12  522        u32 intr;
1e73eb62cec7cf drivers/net/wireless/wl12xx/wl1271_main.c Juuso Oikarinen 
2010-02-22  523        int loopcount = WL1271_IRQ_MAX_LOOPS;
f0325e38ab39c2 drivers/net/wireless/ti/wlcore/main.c     Tony Lindgren   
2020-07-02  524        bool run_tx_queue = true;
a620865edf62ea drivers/net/wireless/wl12xx/main.c        Ido Yariv       
2011-03-01  525        bool done = false;
a620865edf62ea drivers/net/wireless/wl12xx/main.c        Ido Yariv       
2011-03-01  526        unsigned int defer_count;
b07d4037051318 drivers/net/wireless/wl12xx/main.c        Ido Yariv       
2011-03-01  527        unsigned long flags;
b07d4037051318 drivers/net/wireless/wl12xx/main.c        Ido Yariv       
2011-03-01  528  
341b7cde6ccc60 drivers/net/wireless/wl12xx/main.c        Ido Yariv       
2011-03-31  529        /*
341b7cde6ccc60 drivers/net/wireless/wl12xx/main.c        Ido Yariv       
2011-03-31  530         * In case edge triggered interrupt must be used, we 
cannot iterate
341b7cde6ccc60 drivers/net/wireless/wl12xx/main.c        Ido Yariv       
2011-03-31  531         * more than once without introducing race conditions 
with the hardirq.
341b7cde6ccc60 drivers/net/wireless/wl12xx/main.c        Ido Yariv       
2011-03-31  532         */
6f921fab584494 drivers/net/wireless/ti/wlcore/main.c     Luciano Coelho  
2015-03-18  533        if (wl->irq_flags & (IRQF_TRIGGER_RISING | 
IRQF_TRIGGER_FALLING))
341b7cde6ccc60 drivers/net/wireless/wl12xx/main.c        Ido Yariv       
2011-03-31  534                loopcount = 1;
341b7cde6ccc60 drivers/net/wireless/wl12xx/main.c        Ido Yariv       
2011-03-31  535  
f5fc0f86b02afe drivers/net/wireless/wl12xx/wl1271_main.c Luciano Coelho  
2009-08-06  536        wl1271_debug(DEBUG_IRQ, "IRQ work");
f5fc0f86b02afe drivers/net/wireless/wl12xx/wl1271_main.c Luciano Coelho  
2009-08-06  537  
4cc533830b7e6b drivers/net/wireless/ti/wlcore/main.c     Ido Yariv       
2012-07-24  538        if (unlikely(wl->state != WLCORE_STATE_ON))
f5fc0f86b02afe drivers/net/wireless/wl12xx/wl1271_main.c Luciano Coelho  
2009-08-06  539                goto out;
f5fc0f86b02afe drivers/net/wireless/wl12xx/wl1271_main.c Luciano Coelho  
2009-08-06  540  
fa2648a34e73fb drivers/net/wireless/ti/wlcore/main.c     Tony Lindgren   
2018-06-19  541        ret = pm_runtime_get_sync(wl->dev);
fa2648a34e73fb drivers/net/wireless/ti/wlcore/main.c     Tony Lindgren   
2018-06-19  542        if (ret < 0) {
fa2648a34e73fb drivers/net/wireless/ti/wlcore/main.c     Tony Lindgren   
2018-06-19  543                pm_runtime_put_noidle(wl->dev);
f5fc0f86b02afe drivers/net/wireless/wl12xx/wl1271_main.c Luciano Coelho  
2009-08-06  544                goto out;
fa2648a34e73fb drivers/net/wireless/ti/wlcore/main.c     Tony Lindgren   
2018-06-19  545        }
f5fc0f86b02afe drivers/net/wireless/wl12xx/wl1271_main.c Luciano Coelho  
2009-08-06  546  
a620865edf62ea drivers/net/wireless/wl12xx/main.c        Ido Yariv       
2011-03-01  547        while (!done && loopcount--) {
4e857c58efeb99 drivers/net/wireless/ti/wlcore/main.c     Peter Zijlstra  
2014-03-17  548                smp_mb__after_atomic();
1e73eb62cec7cf drivers/net/wireless/wl12xx/wl1271_main.c Juuso Oikarinen 
2010-02-22  549  
75fb4df7f80422 drivers/net/wireless/ti/wlcore/main.c     Eliad Peller    
2014-02-10  550                ret = wlcore_fw_status(wl, wl->fw_status);
b5b45b3cbd5616 drivers/net/wireless/ti/wlcore/main.c     Arik Nemtsov    
2012-06-21  551                if (ret < 0)
da74b6933b3ba2 drivers/net/wireless/ti/wlcore/main.c     Dinghao Liu     
2020-05-22  552                        goto err_ret;
53d67a50cd17ac drivers/net/wireless/ti/wlcore/main.c     Arik Nemtsov    
2011-12-12  553  
53d67a50cd17ac drivers/net/wireless/ti/wlcore/main.c     Arik Nemtsov    
2011-12-12  554                wlcore_hw_tx_immediate_compl(wl);
53d67a50cd17ac drivers/net/wireless/ti/wlcore/main.c     Arik Nemtsov    
2011-12-12  555  
75fb4df7f80422 drivers/net/wireless/ti/wlcore/main.c     Eliad Peller    
2014-02-10  556                intr = wl->fw_status->intr;
f5755fe96cb010 drivers/net/wireless/ti/wlcore/main.c     Ido Reis        
2012-04-23  557                intr &= WLCORE_ALL_INTR_MASK;
f5fc0f86b02afe drivers/net/wireless/wl12xx/wl1271_main.c Luciano Coelho  
2009-08-06  558                if (!intr) {
a620865edf62ea drivers/net/wireless/wl12xx/main.c        Ido Yariv       
2011-03-01  559                        done = true;
1e73eb62cec7cf drivers/net/wireless/wl12xx/wl1271_main.c Juuso Oikarinen 
2010-02-22  560                        continue;
f5fc0f86b02afe drivers/net/wireless/wl12xx/wl1271_main.c Luciano Coelho  
2009-08-06  561                }
f5fc0f86b02afe drivers/net/wireless/wl12xx/wl1271_main.c Luciano Coelho  
2009-08-06  562  
ccc83b046c0337 drivers/net/wireless/wl12xx/wl1271_main.c Eliad Peller    
2010-10-27  563                if (unlikely(intr & WL1271_ACX_INTR_WATCHDOG)) {
f5755fe96cb010 drivers/net/wireless/ti/wlcore/main.c     Ido Reis        
2012-04-23  564                        wl1271_error("HW watchdog interrupt 
received! starting recovery.");
f5755fe96cb010 drivers/net/wireless/ti/wlcore/main.c     Ido Reis        
2012-04-23  565                        wl->watchdog_recovery = true;
b5b45b3cbd5616 drivers/net/wireless/ti/wlcore/main.c     Arik Nemtsov    
2012-06-21  566                        ret = -EIO;
f5755fe96cb010 drivers/net/wireless/ti/wlcore/main.c     Ido Reis        
2012-04-23  567  
f5755fe96cb010 drivers/net/wireless/ti/wlcore/main.c     Ido Reis        
2012-04-23  568                        /* restarting the chip. ignore any other 
interrupt. */
da74b6933b3ba2 drivers/net/wireless/ti/wlcore/main.c     Dinghao Liu     
2020-05-22  569                        goto err_ret;
f5755fe96cb010 drivers/net/wireless/ti/wlcore/main.c     Ido Reis        
2012-04-23  570                }
f5755fe96cb010 drivers/net/wireless/ti/wlcore/main.c     Ido Reis        
2012-04-23  571  
f5755fe96cb010 drivers/net/wireless/ti/wlcore/main.c     Ido Reis        
2012-04-23  572                if (unlikely(intr & 
WL1271_ACX_SW_INTR_WATCHDOG)) {
f5755fe96cb010 drivers/net/wireless/ti/wlcore/main.c     Ido Reis        
2012-04-23  573                        wl1271_error("SW watchdog interrupt 
received! "
ccc83b046c0337 drivers/net/wireless/wl12xx/wl1271_main.c Eliad Peller    
2010-10-27  574                                     "starting recovery.");
afbe37185c0eca drivers/net/wireless/ti/wlcore/main.c     Yoni Divinsky   
2012-05-16  575                        wl->watchdog_recovery = true;
b5b45b3cbd5616 drivers/net/wireless/ti/wlcore/main.c     Arik Nemtsov    
2012-06-21  576                        ret = -EIO;
ccc83b046c0337 drivers/net/wireless/wl12xx/wl1271_main.c Eliad Peller    
2010-10-27  577  
ccc83b046c0337 drivers/net/wireless/wl12xx/wl1271_main.c Eliad Peller    
2010-10-27  578                        /* restarting the chip. ignore any other 
interrupt. */
da74b6933b3ba2 drivers/net/wireless/ti/wlcore/main.c     Dinghao Liu     
2020-05-22  579                        goto err_ret;
ccc83b046c0337 drivers/net/wireless/wl12xx/wl1271_main.c Eliad Peller    
2010-10-27  580                }
ccc83b046c0337 drivers/net/wireless/wl12xx/wl1271_main.c Eliad Peller    
2010-10-27  581  
a620865edf62ea drivers/net/wireless/wl12xx/main.c        Ido Yariv       
2011-03-01  582                if (likely(intr & WL1271_ACX_INTR_DATA)) {
1e73eb62cec7cf drivers/net/wireless/wl12xx/wl1271_main.c Juuso Oikarinen 
2010-02-22  583                        wl1271_debug(DEBUG_IRQ, 
"WL1271_ACX_INTR_DATA");
1e73eb62cec7cf drivers/net/wireless/wl12xx/wl1271_main.c Juuso Oikarinen 
2010-02-22  584  
75fb4df7f80422 drivers/net/wireless/ti/wlcore/main.c     Eliad Peller    
2014-02-10  585                        ret = wlcore_rx(wl, wl->fw_status);
b5b45b3cbd5616 drivers/net/wireless/ti/wlcore/main.c     Arik Nemtsov    
2012-06-21  586                        if (ret < 0)
da74b6933b3ba2 drivers/net/wireless/ti/wlcore/main.c     Dinghao Liu     
2020-05-22  587                                goto err_ret;
1e73eb62cec7cf drivers/net/wireless/wl12xx/wl1271_main.c Juuso Oikarinen 
2010-02-22  588  
a522550a283de3 drivers/net/wireless/wl12xx/wl1271_main.c Ido Yariv       
2010-10-12  589                        /* Check if any tx blocks were freed */
f0325e38ab39c2 drivers/net/wireless/ti/wlcore/main.c     Tony Lindgren   
2020-07-02  590                        if (!test_bit(WL1271_FLAG_FW_TX_BUSY, 
&wl->flags)) {
f0325e38ab39c2 drivers/net/wireless/ti/wlcore/main.c     Tony Lindgren   
2020-07-02  591                                if 
(spin_trylock_irqsave(&wl->wl_lock, flags)) {
f0325e38ab39c2 drivers/net/wireless/ti/wlcore/main.c     Tony Lindgren   
2020-07-02  592                                        if 
(!wl1271_tx_total_queue_count(wl))
f0325e38ab39c2 drivers/net/wireless/ti/wlcore/main.c     Tony Lindgren   
2020-07-02  593                                                run_tx_queue = 
false;
b07d4037051318 drivers/net/wireless/wl12xx/main.c        Ido Yariv       
2011-03-01  594                                        
spin_unlock_irqrestore(&wl->wl_lock, flags);
f0325e38ab39c2 drivers/net/wireless/ti/wlcore/main.c     Tony Lindgren   
2020-07-02  595                                }
f0325e38ab39c2 drivers/net/wireless/ti/wlcore/main.c     Tony Lindgren   
2020-07-02  596  
a522550a283de3 drivers/net/wireless/wl12xx/wl1271_main.c Ido Yariv       
2010-10-12  597                                /*
a522550a283de3 drivers/net/wireless/wl12xx/wl1271_main.c Ido Yariv       
2010-10-12  598                                 * In order to avoid starvation 
of the TX path,
a522550a283de3 drivers/net/wireless/wl12xx/wl1271_main.c Ido Yariv       
2010-10-12  599                                 * call the work function 
directly.
a522550a283de3 drivers/net/wireless/wl12xx/wl1271_main.c Ido Yariv       
2010-10-12  600                                 */
f0325e38ab39c2 drivers/net/wireless/ti/wlcore/main.c     Tony Lindgren   
2020-07-02  601                                if (run_tx_queue) {
eb96f841b9563b drivers/net/wireless/ti/wlcore/main.c     Ido Yariv       
2012-06-18  602                                        ret = 
wlcore_tx_work_locked(wl);
b5b45b3cbd5616 drivers/net/wireless/ti/wlcore/main.c     Arik Nemtsov    
2012-06-21  603                                        if (ret < 0)
da74b6933b3ba2 drivers/net/wireless/ti/wlcore/main.c     Dinghao Liu     
2020-05-22  604                                                goto err_ret;
f0325e38ab39c2 drivers/net/wireless/ti/wlcore/main.c     Tony Lindgren   
2020-07-02  605                                }
a522550a283de3 drivers/net/wireless/wl12xx/wl1271_main.c Ido Yariv       
2010-10-12  606                        }
a522550a283de3 drivers/net/wireless/wl12xx/wl1271_main.c Ido Yariv       
2010-10-12  607  
8aad24642a7c06 drivers/net/wireless/wl12xx/main.c        Ido Yariv       
2011-03-01  608                        /* check for tx results */
045b9b5f4172b2 drivers/net/wireless/ti/wlcore/main.c     Ido Yariv       
2012-06-18  609                        ret = wlcore_hw_tx_delayed_compl(wl);
b5b45b3cbd5616 drivers/net/wireless/ti/wlcore/main.c     Arik Nemtsov    
2012-06-21  610                        if (ret < 0)
da74b6933b3ba2 drivers/net/wireless/ti/wlcore/main.c     Dinghao Liu     
2020-05-22  611                                goto err_ret;
a620865edf62ea drivers/net/wireless/wl12xx/main.c        Ido Yariv       
2011-03-01  612  
a620865edf62ea drivers/net/wireless/wl12xx/main.c        Ido Yariv       
2011-03-01  613                        /* Make sure the deferred queues don't 
get too long */
a620865edf62ea drivers/net/wireless/wl12xx/main.c        Ido Yariv       
2011-03-01  614                        defer_count = 
skb_queue_len(&wl->deferred_tx_queue) +
a620865edf62ea drivers/net/wireless/wl12xx/main.c        Ido Yariv       
2011-03-01  615                                      
skb_queue_len(&wl->deferred_rx_queue);
a620865edf62ea drivers/net/wireless/wl12xx/main.c        Ido Yariv       
2011-03-01  616                        if (defer_count > 
WL1271_DEFERRED_QUEUE_LIMIT)
a620865edf62ea drivers/net/wireless/wl12xx/main.c        Ido Yariv       
2011-03-01  617                                wl1271_flush_deferred_work(wl);
1e73eb62cec7cf drivers/net/wireless/wl12xx/wl1271_main.c Juuso Oikarinen 
2010-02-22  618                }
1e73eb62cec7cf drivers/net/wireless/wl12xx/wl1271_main.c Juuso Oikarinen 
2010-02-22  619  
1fd2794f369139 drivers/net/wireless/wl12xx/wl1271_main.c Juuso Oikarinen 
2009-10-13  620                if (intr & WL1271_ACX_INTR_EVENT_A) {
1fd2794f369139 drivers/net/wireless/wl12xx/wl1271_main.c Juuso Oikarinen 
2009-10-13  621                        wl1271_debug(DEBUG_IRQ, 
"WL1271_ACX_INTR_EVENT_A");
045b9b5f4172b2 drivers/net/wireless/ti/wlcore/main.c     Ido Yariv       
2012-06-18  622                        ret = wl1271_event_handle(wl, 0);
b5b45b3cbd5616 drivers/net/wireless/ti/wlcore/main.c     Arik Nemtsov    
2012-06-21  623                        if (ret < 0)
da74b6933b3ba2 drivers/net/wireless/ti/wlcore/main.c     Dinghao Liu     
2020-05-22  624                                goto err_ret;
1fd2794f369139 drivers/net/wireless/wl12xx/wl1271_main.c Juuso Oikarinen 
2009-10-13  625                }
1fd2794f369139 drivers/net/wireless/wl12xx/wl1271_main.c Juuso Oikarinen 
2009-10-13  626  
1fd2794f369139 drivers/net/wireless/wl12xx/wl1271_main.c Juuso Oikarinen 
2009-10-13  627                if (intr & WL1271_ACX_INTR_EVENT_B) {
1fd2794f369139 drivers/net/wireless/wl12xx/wl1271_main.c Juuso Oikarinen 
2009-10-13  628                        wl1271_debug(DEBUG_IRQ, 
"WL1271_ACX_INTR_EVENT_B");
045b9b5f4172b2 drivers/net/wireless/ti/wlcore/main.c     Ido Yariv       
2012-06-18  629                        ret = wl1271_event_handle(wl, 1);
b5b45b3cbd5616 drivers/net/wireless/ti/wlcore/main.c     Arik Nemtsov    
2012-06-21  630                        if (ret < 0)
da74b6933b3ba2 drivers/net/wireless/ti/wlcore/main.c     Dinghao Liu     
2020-05-22  631                                goto err_ret;
f5fc0f86b02afe drivers/net/wireless/wl12xx/wl1271_main.c Luciano Coelho  
2009-08-06  632                }
f5fc0f86b02afe drivers/net/wireless/wl12xx/wl1271_main.c Luciano Coelho  
2009-08-06  633  
f5fc0f86b02afe drivers/net/wireless/wl12xx/wl1271_main.c Luciano Coelho  
2009-08-06  634                if (intr & WL1271_ACX_INTR_INIT_COMPLETE)
f5fc0f86b02afe drivers/net/wireless/wl12xx/wl1271_main.c Luciano Coelho  
2009-08-06  635                        wl1271_debug(DEBUG_IRQ,
f5fc0f86b02afe drivers/net/wireless/wl12xx/wl1271_main.c Luciano Coelho  
2009-08-06  636                                     
"WL1271_ACX_INTR_INIT_COMPLETE");
f5fc0f86b02afe drivers/net/wireless/wl12xx/wl1271_main.c Luciano Coelho  
2009-08-06  637  
f5fc0f86b02afe drivers/net/wireless/wl12xx/wl1271_main.c Luciano Coelho  
2009-08-06  638                if (intr & WL1271_ACX_INTR_HW_AVAILABLE)
f5fc0f86b02afe drivers/net/wireless/wl12xx/wl1271_main.c Luciano Coelho  
2009-08-06  639                        wl1271_debug(DEBUG_IRQ, 
"WL1271_ACX_INTR_HW_AVAILABLE");
f5fc0f86b02afe drivers/net/wireless/wl12xx/wl1271_main.c Luciano Coelho  
2009-08-06  640        }
f5fc0f86b02afe drivers/net/wireless/wl12xx/wl1271_main.c Luciano Coelho  
2009-08-06  641  
da74b6933b3ba2 drivers/net/wireless/ti/wlcore/main.c     Dinghao Liu     
2020-05-22  642  err_ret:
9b71578de08748 drivers/net/wireless/ti/wlcore/main.c     Tony Lindgren   
2018-06-19 @643        pm_runtime_mark_last_busy(wl->dev);
9b71578de08748 drivers/net/wireless/ti/wlcore/main.c     Tony Lindgren   
2018-06-19  644        pm_runtime_put_autosuspend(wl->dev);
f5fc0f86b02afe drivers/net/wireless/wl12xx/wl1271_main.c Luciano Coelho  
2009-08-06  645  
f5fc0f86b02afe drivers/net/wireless/wl12xx/wl1271_main.c Luciano Coelho  
2009-08-06  646  out:
b5b45b3cbd5616 drivers/net/wireless/ti/wlcore/main.c     Arik Nemtsov    
2012-06-21  647        return ret;
b5b45b3cbd5616 drivers/net/wireless/ti/wlcore/main.c     Arik Nemtsov    
2012-06-21  648  }
b5b45b3cbd5616 drivers/net/wireless/ti/wlcore/main.c     Arik Nemtsov    
2012-06-21  649  

:::::: The code at line 643 was first introduced by commit
:::::: 9b71578de08748defb3bcae3ce8ed1a75cb6a8d7 wlcore: Enable runtime PM 
autosuspend support

:::::: TO: Tony Lindgren <t...@atomide.com>
:::::: CC: Kalle Valo <kv...@codeaurora.org>

---
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