[bug report] drm/amdkfd: Have kfd driver use same PASID values from graphic driver

Dan Carpenter dan.carpenter at linaro.org
Sun Feb 16 21:28:03 UTC 2025


Hello Xiaogang Chen,

Commit 8544374c0f82 ("drm/amdkfd: Have kfd driver use same PASID
values from graphic driver") from Jan 13, 2025 (linux-next), leads to
the following Smatch static checker warning:

	drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_process.c:1694 kfd_process_device_init_vm()
	warn: missing error code 'ret'

drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_process.c
    1647 int kfd_process_device_init_vm(struct kfd_process_device *pdd,
    1648                                struct file *drm_file)
    1649 {
    1650         struct amdgpu_fpriv *drv_priv;
    1651         struct amdgpu_vm *avm;
    1652         struct kfd_process *p;
    1653         struct dma_fence *ef;
    1654         struct kfd_node *dev;
    1655         int ret;
    1656 
    1657         if (!drm_file)
    1658                 return -EINVAL;
    1659 
    1660         if (pdd->drm_priv)
    1661                 return -EBUSY;
    1662 
    1663         ret = amdgpu_file_to_fpriv(drm_file, &drv_priv);
    1664         if (ret)
    1665                 return ret;
    1666         avm = &drv_priv->vm;
    1667 
    1668         p = pdd->process;
    1669         dev = pdd->dev;
    1670 
    1671         ret = amdgpu_amdkfd_gpuvm_acquire_process_vm(dev->adev, avm,
    1672                                                      &p->kgd_process_info,
    1673                                                      p->ef ? NULL : &ef);
    1674         if (ret) {
    1675                 dev_err(dev->adev->dev, "Failed to create process VM object\n");
    1676                 return ret;
    1677         }
    1678 
    1679         if (!p->ef)
    1680                 RCU_INIT_POINTER(p->ef, ef);
    1681 
    1682         pdd->drm_priv = drm_file->private_data;
    1683 
    1684         ret = kfd_process_device_reserve_ib_mem(pdd);
    1685         if (ret)
    1686                 goto err_reserve_ib_mem;
    1687         ret = kfd_process_device_init_cwsr_dgpu(pdd);
    1688         if (ret)
    1689                 goto err_init_cwsr;
    1690 
    1691         if (unlikely(!avm->pasid)) {
    1692                 dev_warn(pdd->dev->adev->dev, "WARN: vm %p has no pasid associated",
    1693                                  avm);
--> 1694                 goto err_get_pasid;

ret = -EINVAL?

    1695         }
    1696 
    1697         pdd->pasid = avm->pasid;
    1698         pdd->drm_file = drm_file;
    1699 
    1700         return 0;
    1701 
    1702 err_get_pasid:
    1703         kfd_process_device_destroy_cwsr_dgpu(pdd);
    1704 err_init_cwsr:
    1705         kfd_process_device_destroy_ib_mem(pdd);
    1706 err_reserve_ib_mem:
    1707         pdd->drm_priv = NULL;
    1708         amdgpu_amdkfd_gpuvm_destroy_cb(dev->adev, avm);
    1709 
    1710         return ret;
    1711 }

regards,
dan carpenter


More information about the amd-gfx mailing list