Lines Matching refs:hdev
84 struct hl_device *hdev; in hl_device_open() local
89 hdev = idr_find(&hl_devs_idr, iminor(inode)); in hl_device_open()
92 if (!hdev) { in hl_device_open()
102 hpriv->hdev = hdev; in hl_device_open()
114 mutex_lock(&hdev->fpriv_list_lock); in hl_device_open()
116 if (hl_device_disabled_or_in_reset(hdev)) { in hl_device_open()
117 dev_err_ratelimited(hdev->dev, in hl_device_open()
119 dev_name(hdev->dev)); in hl_device_open()
124 if (hdev->in_debug) { in hl_device_open()
125 dev_err_ratelimited(hdev->dev, in hl_device_open()
127 dev_name(hdev->dev)); in hl_device_open()
132 if (hdev->compute_ctx) { in hl_device_open()
133 dev_dbg_ratelimited(hdev->dev, in hl_device_open()
135 dev_name(hdev->dev)); in hl_device_open()
140 rc = hl_ctx_create(hdev, hpriv); in hl_device_open()
142 dev_err(hdev->dev, "Failed to create context %d\n", rc); in hl_device_open()
151 hl_device_set_frequency(hdev, PLL_HIGH); in hl_device_open()
153 list_add(&hpriv->dev_node, &hdev->fpriv_list); in hl_device_open()
154 mutex_unlock(&hdev->fpriv_list_lock); in hl_device_open()
161 mutex_unlock(&hdev->fpriv_list_lock); in hl_device_open()
163 hl_cb_mgr_fini(hpriv->hdev, &hpriv->cb_mgr); in hl_device_open()
164 hl_ctx_mgr_fini(hpriv->hdev, &hpriv->ctx_mgr); in hl_device_open()
175 struct hl_device *hdev; in hl_device_open_ctrl() local
180 hdev = idr_find(&hl_devs_idr, iminor(inode)); in hl_device_open_ctrl()
183 if (!hdev) { in hl_device_open_ctrl()
193 mutex_lock(&hdev->fpriv_list_lock); in hl_device_open_ctrl()
195 if (hl_device_disabled_or_in_reset(hdev)) { in hl_device_open_ctrl()
196 dev_err_ratelimited(hdev->dev_ctrl, in hl_device_open_ctrl()
198 dev_name(hdev->dev_ctrl)); in hl_device_open_ctrl()
203 list_add(&hpriv->dev_node, &hdev->fpriv_list); in hl_device_open_ctrl()
204 mutex_unlock(&hdev->fpriv_list_lock); in hl_device_open_ctrl()
206 hpriv->hdev = hdev; in hl_device_open_ctrl()
217 mutex_unlock(&hdev->fpriv_list_lock); in hl_device_open_ctrl()
222 static void set_driver_behavior_per_device(struct hl_device *hdev) in set_driver_behavior_per_device() argument
224 hdev->mmu_enable = 1; in set_driver_behavior_per_device()
225 hdev->cpu_enable = 1; in set_driver_behavior_per_device()
226 hdev->fw_loading = 1; in set_driver_behavior_per_device()
227 hdev->cpu_queues_enable = 1; in set_driver_behavior_per_device()
228 hdev->heartbeat = 1; in set_driver_behavior_per_device()
230 hdev->reset_pcilink = 0; in set_driver_behavior_per_device()
248 struct hl_device *hdev; in create_hdev() local
253 hdev = kzalloc(sizeof(*hdev), GFP_KERNEL); in create_hdev()
254 if (!hdev) in create_hdev()
261 hdev->asic_type = get_asic_type(pdev->device); in create_hdev()
262 if (hdev->asic_type == ASIC_INVALID) { in create_hdev()
268 hdev->asic_type = asic_type; in create_hdev()
271 hdev->major = hl_major; in create_hdev()
272 hdev->reset_on_lockup = reset_on_lockup; in create_hdev()
273 hdev->pldm = 0; in create_hdev()
275 set_driver_behavior_per_device(hdev); in create_hdev()
278 hdev->timeout_jiffies = msecs_to_jiffies(timeout_locked * 1000); in create_hdev()
280 hdev->timeout_jiffies = MAX_SCHEDULE_TIMEOUT; in create_hdev()
282 hdev->disabled = true; in create_hdev()
283 hdev->pdev = pdev; /* can be NULL in case of simulator device */ in create_hdev()
286 hdev->dma_mask = 32; in create_hdev()
293 main_id = idr_alloc(&hl_devs_idr, hdev, 0, HL_MAX_MINORS, in create_hdev()
297 ctrl_id = idr_alloc(&hl_devs_idr, hdev, main_id + 1, in create_hdev()
316 hdev->id = main_id; in create_hdev()
317 hdev->id_control = ctrl_id; in create_hdev()
319 *dev = hdev; in create_hdev()
324 kfree(hdev); in create_hdev()
334 void destroy_hdev(struct hl_device *hdev) in destroy_hdev() argument
338 idr_remove(&hl_devs_idr, hdev->id); in destroy_hdev()
339 idr_remove(&hl_devs_idr, hdev->id_control); in destroy_hdev()
342 kfree(hdev); in destroy_hdev()
347 struct hl_device *hdev = dev_get_drvdata(dev); in hl_pmops_suspend() local
351 if (!hdev) { in hl_pmops_suspend()
356 return hl_device_suspend(hdev); in hl_pmops_suspend()
361 struct hl_device *hdev = dev_get_drvdata(dev); in hl_pmops_resume() local
365 if (!hdev) { in hl_pmops_resume()
370 return hl_device_resume(hdev); in hl_pmops_resume()
386 struct hl_device *hdev; in hl_pci_probe() local
393 rc = create_hdev(&hdev, pdev, ASIC_INVALID, -1); in hl_pci_probe()
397 pci_set_drvdata(pdev, hdev); in hl_pci_probe()
399 rc = hl_device_init(hdev, hl_class); in hl_pci_probe()
410 destroy_hdev(hdev); in hl_pci_probe()
424 struct hl_device *hdev; in hl_pci_remove() local
426 hdev = pci_get_drvdata(pdev); in hl_pci_remove()
427 if (!hdev) in hl_pci_remove()
430 hl_device_fini(hdev); in hl_pci_remove()
433 destroy_hdev(hdev); in hl_pci_remove()