Hello Zhu Lingshan,
The patch 79333575b8bd: "vDPA/ifcvf: implement shared IRQ feature"
from Feb 22, 2022, leads to the following Smatch static checker
warning:
drivers/vdpa/ifcvf/ifcvf_main.c:306 ifcvf_request_config_irq()
error: uninitialized symbol 'config_vector'.
drivers/vdpa/ifcvf/ifcvf_main.c
287 static int ifcvf_request_config_irq(struct ifcvf_adapter *adapter)
288 {
289 struct pci_dev *pdev = adapter->pdev;
290 struct ifcvf_hw *vf = &adapter->vf;
291 int config_vector, ret;
292
293 if (vf->msix_vector_status == MSIX_VECTOR_DEV_SHARED)
294 return 0;
295
296 if (vf->msix_vector_status == MSIX_VECTOR_PER_VQ_AND_CONFIG)
297 /* vector 0 ~ vf->nr_vring for vqs, num
vf->nr_vring vector for config interrupt */
298 config_vector = vf->nr_vring;
Set here.
299
300 if (vf->msix_vector_status ==
MSIX_VECTOR_SHARED_VQ_AND_CONFIG)
301 /* vector 0 for vqs and 1 for config interrupt */
302 config_vector = 1;
And here. But no else path.
303
304 snprintf(vf->config_msix_name, 256,
"ifcvf[%s]-config\n",
305 pci_name(pdev));
--> 306 vf->config_irq = pci_irq_vector(pdev, config_vector);
307 ret = devm_request_irq(&pdev->dev, vf->config_irq,
308 ifcvf_config_changed, 0,
309 vf->config_msix_name, vf);
310 if (ret) {
311 IFCVF_ERR(pdev, "Failed to request config
irq\n");
312 goto err;
313 }
314
315 ret = ifcvf_set_config_vector(vf, config_vector);
316 if (ret == VIRTIO_MSI_NO_VECTOR) {
317 IFCVF_ERR(pdev, "No msix vector for device
config\n");
318 goto err;
319 }
320
321 return 0;
322 err:
323 ifcvf_free_irq(adapter);
324
325 return -EFAULT;
326 }
regards,
dan carpenter