bool kfd_dbgmgr_create(struct kfd_dbgmgr **ppmgr, struct kfd_dev *pdev) { enum DBGDEV_TYPE type = DBGDEV_TYPE_DIQ; struct kfd_dbgmgr *new_buff; BUG_ON(pdev == NULL); BUG_ON(!pdev->init_complete); new_buff = kfd_alloc_struct(new_buff); if (!new_buff) { pr_err("amdkfd: Failed to allocate dbgmgr instance\n"); return false; } new_buff->pasid = 0; new_buff->dev = pdev; new_buff->dbgdev = kfd_alloc_struct(new_buff->dbgdev); if (!new_buff->dbgdev) { pr_err("amdkfd: Failed to allocate dbgdev instance\n"); kfree(new_buff); return false; } /* get actual type of DBGDevice cpsch or not */ if (sched_policy == KFD_SCHED_POLICY_NO_HWS) type = DBGDEV_TYPE_NODIQ; kfd_dbgdev_init(new_buff->dbgdev, pdev, type); *ppmgr = new_buff; return true; }
struct kfd_topology_device *kfd_create_topology_device( struct list_head *device_list) { struct kfd_topology_device *dev; dev = kfd_alloc_struct(dev); if (!dev) { pr_err("No memory to allocate a topology device"); return NULL; } INIT_LIST_HEAD(&dev->mem_props); INIT_LIST_HEAD(&dev->cache_props); INIT_LIST_HEAD(&dev->io_link_props); INIT_LIST_HEAD(&dev->perf_props); list_add_tail(&dev->list, device_list); return dev; }