CC: [email protected]
In-Reply-To: <[email protected]>
References: <[email protected]>
TO: Jonathan Cameron <[email protected]>

Hi Jonathan,

[FYI, it's a private test report for your RFC patch.]
[auto build test WARNING on pci/next]
[also build test WARNING on linus/master v5.12-rc7]
[cannot apply to next-20210413]
[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/Jonathan-Cameron/PCI-Data-Object-Exchange-support-CXL-CDAT/20210414-000832
base:   https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git next
:::::: branch date: 12 hours ago
:::::: commit date: 12 hours ago
config: x86_64-randconfig-m001-20210413 (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 <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

smatch warnings:
drivers/pci/pcie/doe.c:350 doe_statemachine_work() error: uninitialized symbol 
'rc'.

vim +/rc +350 drivers/pci/pcie/doe.c

9d119b6670629a Jonathan Cameron 2021-04-14  204  
9d119b6670629a Jonathan Cameron 2021-04-14  205  static void 
doe_statemachine_work(struct work_struct *work)
9d119b6670629a Jonathan Cameron 2021-04-14  206  {
9d119b6670629a Jonathan Cameron 2021-04-14  207         struct delayed_work *w 
= to_delayed_work(work);
9d119b6670629a Jonathan Cameron 2021-04-14  208         struct pcie_doe *doe = 
container_of(w, struct pcie_doe, statemachine);
9d119b6670629a Jonathan Cameron 2021-04-14  209         struct pci_dev *pdev = 
doe->pdev;
9d119b6670629a Jonathan Cameron 2021-04-14  210         struct pcie_doe_task 
*task;
9d119b6670629a Jonathan Cameron 2021-04-14  211         bool abort;
9d119b6670629a Jonathan Cameron 2021-04-14  212         u32 val;
9d119b6670629a Jonathan Cameron 2021-04-14  213         int rc;
9d119b6670629a Jonathan Cameron 2021-04-14  214  
9d119b6670629a Jonathan Cameron 2021-04-14  215         
mutex_lock(&doe->tasks_lock);
9d119b6670629a Jonathan Cameron 2021-04-14  216         task = 
list_first_entry_or_null(&doe->tasks, struct pcie_doe_task, h);
9d119b6670629a Jonathan Cameron 2021-04-14  217         abort = doe->abort;
9d119b6670629a Jonathan Cameron 2021-04-14  218         doe->abort = false;
9d119b6670629a Jonathan Cameron 2021-04-14  219         
mutex_unlock(&doe->tasks_lock);
9d119b6670629a Jonathan Cameron 2021-04-14  220  
9d119b6670629a Jonathan Cameron 2021-04-14  221         if (abort) {
9d119b6670629a Jonathan Cameron 2021-04-14  222                 /*
9d119b6670629a Jonathan Cameron 2021-04-14  223                  * Currently 
only used during init - care needed if we want to generally
9d119b6670629a Jonathan Cameron 2021-04-14  224                  * expose 
pcie_doe_abort() as it would impact queries in flight.
9d119b6670629a Jonathan Cameron 2021-04-14  225                  */
9d119b6670629a Jonathan Cameron 2021-04-14  226                 WARN_ON(task);
9d119b6670629a Jonathan Cameron 2021-04-14  227                 doe->state = 
DOE_WAIT_ABORT;
9d119b6670629a Jonathan Cameron 2021-04-14  228                 
pcie_doe_abort_start(doe);
9d119b6670629a Jonathan Cameron 2021-04-14  229                 return;
9d119b6670629a Jonathan Cameron 2021-04-14  230         }
9d119b6670629a Jonathan Cameron 2021-04-14  231  
9d119b6670629a Jonathan Cameron 2021-04-14  232         switch (doe->state) {
9d119b6670629a Jonathan Cameron 2021-04-14  233         case DOE_IDLE:
9d119b6670629a Jonathan Cameron 2021-04-14  234                 if (task == 
NULL)
9d119b6670629a Jonathan Cameron 2021-04-14  235                         return;
9d119b6670629a Jonathan Cameron 2021-04-14  236  
9d119b6670629a Jonathan Cameron 2021-04-14  237                 /* Nothing 
currently in flight so queue a task */
9d119b6670629a Jonathan Cameron 2021-04-14  238                 rc = 
pcie_doe_send_req(doe, task->ex);
9d119b6670629a Jonathan Cameron 2021-04-14  239                 /*
9d119b6670629a Jonathan Cameron 2021-04-14  240                  * The 
specification does not provide any guidance on how long some other
9d119b6670629a Jonathan Cameron 2021-04-14  241                  * entity could 
keep the DOE busy, so try for 1 second then fail.
9d119b6670629a Jonathan Cameron 2021-04-14  242                  * Busy 
handling is best effort only, because there is not way of avoiding
9d119b6670629a Jonathan Cameron 2021-04-14  243                  * racing 
against another user of the DOE.
9d119b6670629a Jonathan Cameron 2021-04-14  244                  */
9d119b6670629a Jonathan Cameron 2021-04-14  245                 if (rc == 
-EBUSY) {
9d119b6670629a Jonathan Cameron 2021-04-14  246                         
doe->busy_retries++;
9d119b6670629a Jonathan Cameron 2021-04-14  247                         if 
(doe->busy_retries == PCI_DOE_BUSY_MAX_RETRIES) {
9d119b6670629a Jonathan Cameron 2021-04-14  248                                 
/* Long enough, fail this request */
9d119b6670629a Jonathan Cameron 2021-04-14  249                                 
doe->busy_retries = 0;
9d119b6670629a Jonathan Cameron 2021-04-14  250                                 
goto busy;
9d119b6670629a Jonathan Cameron 2021-04-14  251                         }
9d119b6670629a Jonathan Cameron 2021-04-14  252                         
schedule_delayed_work(w, HZ / PCI_DOE_BUSY_MAX_RETRIES);
9d119b6670629a Jonathan Cameron 2021-04-14  253                         return;
9d119b6670629a Jonathan Cameron 2021-04-14  254                 }
9d119b6670629a Jonathan Cameron 2021-04-14  255                 if (rc)
9d119b6670629a Jonathan Cameron 2021-04-14  256                         goto 
abort;
9d119b6670629a Jonathan Cameron 2021-04-14  257                 
doe->busy_retries = 0;
9d119b6670629a Jonathan Cameron 2021-04-14  258  
9d119b6670629a Jonathan Cameron 2021-04-14  259                 doe->state = 
DOE_WAIT_RESP;
9d119b6670629a Jonathan Cameron 2021-04-14  260                 
doe->timeout_jiffies = jiffies + HZ;
9d119b6670629a Jonathan Cameron 2021-04-14  261                 /* Now poll or 
wait for IRQ with timeout */
9d119b6670629a Jonathan Cameron 2021-04-14  262                 if (doe->irq > 
0)
9d119b6670629a Jonathan Cameron 2021-04-14  263                         
schedule_delayed_work(w, PCI_DOE_TIMEOUT);
9d119b6670629a Jonathan Cameron 2021-04-14  264                 else
9d119b6670629a Jonathan Cameron 2021-04-14  265                         
schedule_delayed_work(w, PCI_DOE_POLL_INTERVAL);
9d119b6670629a Jonathan Cameron 2021-04-14  266                 return;
9d119b6670629a Jonathan Cameron 2021-04-14  267  
9d119b6670629a Jonathan Cameron 2021-04-14  268         case DOE_WAIT_RESP:
9d119b6670629a Jonathan Cameron 2021-04-14  269                 /* Not possible 
to get here with NULL task */
9d119b6670629a Jonathan Cameron 2021-04-14  270                 
pci_read_config_dword(pdev, doe->cap + PCI_DOE_STATUS, &val);
9d119b6670629a Jonathan Cameron 2021-04-14  271                 if 
(FIELD_GET(PCI_DOE_STATUS_ERROR, val)) {
9d119b6670629a Jonathan Cameron 2021-04-14  272                         rc = 
-EIO;
9d119b6670629a Jonathan Cameron 2021-04-14  273                         goto 
abort;
9d119b6670629a Jonathan Cameron 2021-04-14  274                 }
9d119b6670629a Jonathan Cameron 2021-04-14  275  
9d119b6670629a Jonathan Cameron 2021-04-14  276                 if 
(!FIELD_GET(PCI_DOE_STATUS_DATA_OBJECT_READY, val)) {
9d119b6670629a Jonathan Cameron 2021-04-14  277                         /* If 
not yet at timeout reschedule otherwise abort */
9d119b6670629a Jonathan Cameron 2021-04-14  278                         if 
(time_after(jiffies, doe->timeout_jiffies)) {
9d119b6670629a Jonathan Cameron 2021-04-14  279                                 
rc = -ETIMEDOUT;
9d119b6670629a Jonathan Cameron 2021-04-14  280                                 
goto abort;
9d119b6670629a Jonathan Cameron 2021-04-14  281                         }
9d119b6670629a Jonathan Cameron 2021-04-14  282                         
schedule_delayed_work(w, PCI_DOE_POLL_INTERVAL);
9d119b6670629a Jonathan Cameron 2021-04-14  283                         return;
9d119b6670629a Jonathan Cameron 2021-04-14  284                 }
9d119b6670629a Jonathan Cameron 2021-04-14  285  
9d119b6670629a Jonathan Cameron 2021-04-14  286                 rc  = 
pcie_doe_recv_resp(doe, task->ex);
9d119b6670629a Jonathan Cameron 2021-04-14  287                 if (rc < 0)
9d119b6670629a Jonathan Cameron 2021-04-14  288                         goto 
abort;
9d119b6670629a Jonathan Cameron 2021-04-14  289  
9d119b6670629a Jonathan Cameron 2021-04-14  290                 doe->state = 
DOE_IDLE;
9d119b6670629a Jonathan Cameron 2021-04-14  291  
9d119b6670629a Jonathan Cameron 2021-04-14  292                 
mutex_lock(&doe->tasks_lock);
9d119b6670629a Jonathan Cameron 2021-04-14  293                 
list_del(&task->h);
9d119b6670629a Jonathan Cameron 2021-04-14  294                 if 
(!list_empty(&doe->tasks))
9d119b6670629a Jonathan Cameron 2021-04-14  295                         
schedule_delayed_work(w, 0);
9d119b6670629a Jonathan Cameron 2021-04-14  296                 
mutex_unlock(&doe->tasks_lock);
9d119b6670629a Jonathan Cameron 2021-04-14  297  
9d119b6670629a Jonathan Cameron 2021-04-14  298                 /* Set the 
return value to the length of received payload */
9d119b6670629a Jonathan Cameron 2021-04-14  299                 task->rv = rc;
9d119b6670629a Jonathan Cameron 2021-04-14  300                 
task->cb(task->private);
9d119b6670629a Jonathan Cameron 2021-04-14  301                 return;
9d119b6670629a Jonathan Cameron 2021-04-14  302  
9d119b6670629a Jonathan Cameron 2021-04-14  303         case DOE_WAIT_ABORT:
9d119b6670629a Jonathan Cameron 2021-04-14  304         case 
DOE_WAIT_ABORT_ON_ERR:
9d119b6670629a Jonathan Cameron 2021-04-14  305                 
pci_read_config_dword(pdev, doe->cap + PCI_DOE_STATUS, &val);
9d119b6670629a Jonathan Cameron 2021-04-14  306  
9d119b6670629a Jonathan Cameron 2021-04-14  307                 if 
(!FIELD_GET(PCI_DOE_STATUS_ERROR, val) &&
9d119b6670629a Jonathan Cameron 2021-04-14  308                     
!FIELD_GET(PCI_DOE_STATUS_BUSY, val)) {
9d119b6670629a Jonathan Cameron 2021-04-14  309                         /* Back 
to normal state - carry on */
9d119b6670629a Jonathan Cameron 2021-04-14  310                         
mutex_lock(&doe->tasks_lock);
9d119b6670629a Jonathan Cameron 2021-04-14  311                         if 
(!list_empty(&doe->tasks))
9d119b6670629a Jonathan Cameron 2021-04-14  312                                 
schedule_delayed_work(w, 0);
9d119b6670629a Jonathan Cameron 2021-04-14  313                         
mutex_unlock(&doe->tasks_lock);
9d119b6670629a Jonathan Cameron 2021-04-14  314  
9d119b6670629a Jonathan Cameron 2021-04-14  315                         /* For 
deliberately triggered abort, someone is waiting */
9d119b6670629a Jonathan Cameron 2021-04-14  316                         if 
(doe->state == DOE_WAIT_ABORT)
9d119b6670629a Jonathan Cameron 2021-04-14  317                                 
complete(&doe->abort_c);
9d119b6670629a Jonathan Cameron 2021-04-14  318                         
doe->state = DOE_IDLE;
9d119b6670629a Jonathan Cameron 2021-04-14  319  
9d119b6670629a Jonathan Cameron 2021-04-14  320                         return;
9d119b6670629a Jonathan Cameron 2021-04-14  321                 }
9d119b6670629a Jonathan Cameron 2021-04-14  322                 if 
(time_after(jiffies, doe->timeout_jiffies)) {
9d119b6670629a Jonathan Cameron 2021-04-14  323                         struct 
pcie_doe_task *t, *n;
9d119b6670629a Jonathan Cameron 2021-04-14  324  
9d119b6670629a Jonathan Cameron 2021-04-14  325                         /* We 
are dead - abort all queued tasks */
9d119b6670629a Jonathan Cameron 2021-04-14  326                         
dev_err(&pdev->dev, "DOE ABORT timed out\n");
9d119b6670629a Jonathan Cameron 2021-04-14  327                         
mutex_lock(&doe->tasks_lock);
9d119b6670629a Jonathan Cameron 2021-04-14  328                         
doe->dead = true;
9d119b6670629a Jonathan Cameron 2021-04-14  329                         
list_for_each_entry_safe(t, n, &doe->tasks, h) {
9d119b6670629a Jonathan Cameron 2021-04-14  330                                 
t->rv = -EIO;
9d119b6670629a Jonathan Cameron 2021-04-14  331                                 
t->cb(t->private);
9d119b6670629a Jonathan Cameron 2021-04-14  332                                 
list_del(&t->h);
9d119b6670629a Jonathan Cameron 2021-04-14  333                         }
9d119b6670629a Jonathan Cameron 2021-04-14  334  
9d119b6670629a Jonathan Cameron 2021-04-14  335                         
mutex_unlock(&doe->tasks_lock);
9d119b6670629a Jonathan Cameron 2021-04-14  336                         if 
(doe->state == DOE_WAIT_ABORT)
9d119b6670629a Jonathan Cameron 2021-04-14  337                                 
complete(&doe->abort_c);
9d119b6670629a Jonathan Cameron 2021-04-14  338                 }
9d119b6670629a Jonathan Cameron 2021-04-14  339                 return;
9d119b6670629a Jonathan Cameron 2021-04-14  340         }
9d119b6670629a Jonathan Cameron 2021-04-14  341  
9d119b6670629a Jonathan Cameron 2021-04-14  342  abort:
9d119b6670629a Jonathan Cameron 2021-04-14  343         
pcie_doe_abort_start(doe);
9d119b6670629a Jonathan Cameron 2021-04-14  344         doe->state = 
DOE_WAIT_ABORT_ON_ERR;
9d119b6670629a Jonathan Cameron 2021-04-14  345  busy:
9d119b6670629a Jonathan Cameron 2021-04-14  346         
mutex_lock(&doe->tasks_lock);
9d119b6670629a Jonathan Cameron 2021-04-14  347         list_del(&task->h);
9d119b6670629a Jonathan Cameron 2021-04-14  348         
mutex_unlock(&doe->tasks_lock);
9d119b6670629a Jonathan Cameron 2021-04-14  349  
9d119b6670629a Jonathan Cameron 2021-04-14 @350         task->rv = rc;
9d119b6670629a Jonathan Cameron 2021-04-14  351         task->cb(task->private);
9d119b6670629a Jonathan Cameron 2021-04-14  352         /* If we got here via 
busy, and the queue isn't empty then we need to go again */
9d119b6670629a Jonathan Cameron 2021-04-14  353         if (doe->state == 
DOE_IDLE) {
9d119b6670629a Jonathan Cameron 2021-04-14  354                 
mutex_lock(&doe->tasks_lock);
9d119b6670629a Jonathan Cameron 2021-04-14  355                 if 
(!list_empty(&doe->tasks))
9d119b6670629a Jonathan Cameron 2021-04-14  356                         
schedule_delayed_work(w, 0);
9d119b6670629a Jonathan Cameron 2021-04-14  357                 
mutex_unlock(&doe->tasks_lock);
9d119b6670629a Jonathan Cameron 2021-04-14  358         }
9d119b6670629a Jonathan Cameron 2021-04-14  359  }
9d119b6670629a Jonathan Cameron 2021-04-14  360  

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