[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