Lines Matching refs:gc
23 struct gdma_context *gc = pci_get_drvdata(pdev); in mana_gd_init_registers() local
25 gc->db_page_size = mana_gd_r32(gc, GDMA_REG_DB_PAGE_SIZE) & 0xFFFF; in mana_gd_init_registers()
27 gc->db_page_base = gc->bar0_va + in mana_gd_init_registers()
28 mana_gd_r64(gc, GDMA_REG_DB_PAGE_OFFSET); in mana_gd_init_registers()
30 gc->shm_base = gc->bar0_va + mana_gd_r64(gc, GDMA_REG_SHM_OFFSET); in mana_gd_init_registers()
35 struct gdma_context *gc = pci_get_drvdata(pdev); in mana_gd_query_max_resources() local
43 err = mana_gd_send_request(gc, sizeof(req), &req, sizeof(resp), &resp); in mana_gd_query_max_resources()
45 dev_err(gc->dev, "Failed to query resource info: %d, 0x%x\n", in mana_gd_query_max_resources()
50 if (gc->num_msix_usable > resp.max_msix) in mana_gd_query_max_resources()
51 gc->num_msix_usable = resp.max_msix; in mana_gd_query_max_resources()
53 if (gc->num_msix_usable <= 1) in mana_gd_query_max_resources()
56 gc->max_num_queues = num_online_cpus(); in mana_gd_query_max_resources()
57 if (gc->max_num_queues > MANA_MAX_NUM_QUEUES) in mana_gd_query_max_resources()
58 gc->max_num_queues = MANA_MAX_NUM_QUEUES; in mana_gd_query_max_resources()
60 if (gc->max_num_queues > resp.max_eq) in mana_gd_query_max_resources()
61 gc->max_num_queues = resp.max_eq; in mana_gd_query_max_resources()
63 if (gc->max_num_queues > resp.max_cq) in mana_gd_query_max_resources()
64 gc->max_num_queues = resp.max_cq; in mana_gd_query_max_resources()
66 if (gc->max_num_queues > resp.max_sq) in mana_gd_query_max_resources()
67 gc->max_num_queues = resp.max_sq; in mana_gd_query_max_resources()
69 if (gc->max_num_queues > resp.max_rq) in mana_gd_query_max_resources()
70 gc->max_num_queues = resp.max_rq; in mana_gd_query_max_resources()
73 if (gc->max_num_queues > gc->num_msix_usable - 1) in mana_gd_query_max_resources()
74 gc->max_num_queues = gc->num_msix_usable - 1; in mana_gd_query_max_resources()
81 struct gdma_context *gc = pci_get_drvdata(pdev); in mana_gd_detect_devices() local
92 err = mana_gd_send_request(gc, sizeof(req), &req, sizeof(resp), &resp); in mana_gd_detect_devices()
94 dev_err(gc->dev, "Failed to detect devices: %d, 0x%x\n", err, in mana_gd_detect_devices()
110 gc->mana.gdma_context = gc; in mana_gd_detect_devices()
111 gc->mana.dev_id = dev; in mana_gd_detect_devices()
115 return gc->mana.dev_id.type == 0 ? -ENODEV : 0; in mana_gd_detect_devices()
118 int mana_gd_send_request(struct gdma_context *gc, u32 req_len, const void *req, in mana_gd_send_request() argument
121 struct hw_channel_context *hwc = gc->hwc.driver_data; in mana_gd_send_request()
126 int mana_gd_alloc_memory(struct gdma_context *gc, unsigned int length, in mana_gd_alloc_memory() argument
135 gmi->dev = gc->dev; in mana_gd_alloc_memory()
153 static int mana_gd_create_hw_eq(struct gdma_context *gc, in mana_gd_create_hw_eq() argument
175 err = mana_gd_send_request(gc, sizeof(req), &req, sizeof(resp), &resp); in mana_gd_create_hw_eq()
177 dev_err(gc->dev, "Failed to create queue: %d, 0x%x\n", err, in mana_gd_create_hw_eq()
190 struct gdma_context *gc = queue->gdma_dev->gdma_context; in mana_gd_disable_queue() local
205 err = mana_gd_send_request(gc, sizeof(req), &req, sizeof(resp), &resp); in mana_gd_disable_queue()
207 dev_err(gc->dev, "Failed to disable queue: %d, 0x%x\n", err, in mana_gd_disable_queue()
220 static void mana_gd_ring_doorbell(struct gdma_context *gc, u32 db_index, in mana_gd_ring_doorbell() argument
224 void __iomem *addr = gc->db_page_base + gc->db_page_size * db_index; in mana_gd_ring_doorbell()
270 void mana_gd_wq_ring_doorbell(struct gdma_context *gc, struct gdma_queue *queue) in mana_gd_wq_ring_doorbell() argument
272 mana_gd_ring_doorbell(gc, queue->gdma_dev->doorbell, queue->type, in mana_gd_wq_ring_doorbell()
278 struct gdma_context *gc = cq->gdma_dev->gdma_context; in mana_gd_ring_cq() local
284 mana_gd_ring_doorbell(gc, cq->gdma_dev->doorbell, cq->type, cq->id, in mana_gd_ring_cq()
291 struct gdma_context *gc = eq->gdma_dev->gdma_context; in mana_gd_process_eqe() local
307 if (WARN_ON_ONCE(cq_id >= gc->max_num_cqs)) in mana_gd_process_eqe()
310 cq = gc->cq_table[cq_id]; in mana_gd_process_eqe()
320 gc->test_event_eq_id = eq->id; in mana_gd_process_eqe()
321 complete(&gc->eq_test_event); in mana_gd_process_eqe()
346 struct gdma_context *gc; in mana_gd_process_eq_events() local
351 gc = eq->gdma_dev->gdma_context; in mana_gd_process_eq_events()
369 dev_err(gc->dev, "EQ %d: overflow detected\n", eq->id); in mana_gd_process_eq_events()
380 mana_gd_ring_doorbell(gc, eq->gdma_dev->doorbell, eq->type, eq->id, in mana_gd_process_eq_events()
389 struct gdma_context *gc; in mana_gd_register_irq() local
396 gc = gd->gdma_context; in mana_gd_register_irq()
397 r = &gc->msix_resource; in mana_gd_register_irq()
398 dev = gc->dev; in mana_gd_register_irq()
403 if (msi_index >= r->size || msi_index >= gc->num_msix_usable) { in mana_gd_register_irq()
414 err, msi_index, r->size, gc->num_msix_usable); in mana_gd_register_irq()
419 gic = &gc->irq_contexts[msi_index]; in mana_gd_register_irq()
434 struct gdma_context *gc; in mana_gd_deregiser_irq() local
439 gc = gd->gdma_context; in mana_gd_deregiser_irq()
440 r = &gc->msix_resource; in mana_gd_deregiser_irq()
444 if (WARN_ON(msix_index >= gc->num_msix_usable)) in mana_gd_deregiser_irq()
447 gic = &gc->irq_contexts[msix_index]; in mana_gd_deregiser_irq()
458 int mana_gd_test_eq(struct gdma_context *gc, struct gdma_queue *eq) in mana_gd_test_eq() argument
462 struct device *dev = gc->dev; in mana_gd_test_eq()
465 mutex_lock(&gc->eq_test_event_mutex); in mana_gd_test_eq()
467 init_completion(&gc->eq_test_event); in mana_gd_test_eq()
468 gc->test_event_eq_id = INVALID_QUEUE_ID; in mana_gd_test_eq()
476 err = mana_gd_send_request(gc, sizeof(req), &req, sizeof(resp), &resp); in mana_gd_test_eq()
489 if (!wait_for_completion_timeout(&gc->eq_test_event, 30 * HZ)) { in mana_gd_test_eq()
494 if (eq->id != gc->test_event_eq_id) { in mana_gd_test_eq()
496 gc->test_event_eq_id, eq->id); in mana_gd_test_eq()
502 mutex_unlock(&gc->eq_test_event_mutex); in mana_gd_test_eq()
506 static void mana_gd_destroy_eq(struct gdma_context *gc, bool flush_evenets, in mana_gd_destroy_eq() argument
512 err = mana_gd_test_eq(gc, queue); in mana_gd_destroy_eq()
514 dev_warn(gc->dev, "Failed to flush EQ: %d\n", err); in mana_gd_destroy_eq()
527 struct gdma_context *gc = gd->gdma_context; in mana_gd_create_eq() local
528 struct device *dev = gc->dev; in mana_gd_create_eq()
554 err = mana_gd_create_hw_eq(gc, queue); in mana_gd_create_eq()
558 err = mana_gd_test_eq(gc, queue); in mana_gd_create_eq()
566 mana_gd_destroy_eq(gc, false, queue); in mana_gd_create_eq()
581 static void mana_gd_destroy_cq(struct gdma_context *gc, in mana_gd_destroy_cq() argument
586 if (id >= gc->max_num_cqs) in mana_gd_destroy_cq()
589 if (!gc->cq_table[id]) in mana_gd_destroy_cq()
592 gc->cq_table[id] = NULL; in mana_gd_destroy_cq()
599 struct gdma_context *gc = gd->gdma_context; in mana_gd_create_hwc_queue() local
609 err = mana_gd_alloc_memory(gc, spec->queue_size, gmi); in mana_gd_create_hwc_queue()
638 static void mana_gd_destroy_dma_region(struct gdma_context *gc, u64 gdma_region) in mana_gd_destroy_dma_region() argument
651 err = mana_gd_send_request(gc, sizeof(req), &req, sizeof(resp), &resp); in mana_gd_destroy_dma_region()
653 dev_err(gc->dev, "Failed to destroy DMA region: %d, 0x%x\n", in mana_gd_destroy_dma_region()
663 struct gdma_context *gc = gd->gdma_context; in mana_gd_create_dma_region() local
676 hwc = gc->hwc.driver_data; in mana_gd_create_dma_region()
696 err = mana_gd_send_request(gc, req_msg_size, req, sizeof(resp), &resp); in mana_gd_create_dma_region()
701 dev_err(gc->dev, "Failed to create DMA region: 0x%x\n", in mana_gd_create_dma_region()
717 struct gdma_context *gc = gd->gdma_context; in mana_gd_create_mana_eq() local
730 err = mana_gd_alloc_memory(gc, spec->queue_size, gmi); in mana_gd_create_mana_eq()
763 struct gdma_context *gc = gd->gdma_context; in mana_gd_create_mana_wq_cq() local
777 err = mana_gd_alloc_memory(gc, spec->queue_size, gmi); in mana_gd_create_mana_wq_cq()
805 void mana_gd_destroy_queue(struct gdma_context *gc, struct gdma_queue *queue) in mana_gd_destroy_queue() argument
811 mana_gd_destroy_eq(gc, queue->eq.disable_needed, queue); in mana_gd_destroy_queue()
815 mana_gd_destroy_cq(gc, queue); in mana_gd_destroy_queue()
825 dev_err(gc->dev, "Can't destroy unknown queue: type=%d\n", in mana_gd_destroy_queue()
830 mana_gd_destroy_dma_region(gc, gmi->gdma_region); in mana_gd_destroy_queue()
837 struct gdma_context *gc = pci_get_drvdata(pdev); in mana_gd_verify_vf_version() local
862 err = mana_gd_send_request(gc, sizeof(req), &req, sizeof(resp), &resp); in mana_gd_verify_vf_version()
864 dev_err(gc->dev, "VfVerifyVersionOutput: %d, status=0x%x\n", in mana_gd_verify_vf_version()
874 struct gdma_context *gc = gd->gdma_context; in mana_gd_register_device() local
888 err = mana_gd_send_request(gc, sizeof(req), &req, sizeof(resp), &resp); in mana_gd_register_device()
890 dev_err(gc->dev, "gdma_register_device_resp failed: %d, 0x%x\n", in mana_gd_register_device()
904 struct gdma_context *gc = gd->gdma_context; in mana_gd_deregister_device() local
917 err = mana_gd_send_request(gc, sizeof(req), &req, sizeof(resp), &resp); in mana_gd_deregister_device()
919 dev_err(gc->dev, "Failed to deregister device: %d, 0x%x\n", in mana_gd_deregister_device()
1022 struct gdma_context *gc; in mana_gd_post_work_request() local
1053 gc = wq->gdma_dev->gdma_context; in mana_gd_post_work_request()
1054 dev_err(gc->dev, "unsuccessful flow control!\n"); in mana_gd_post_work_request()
1078 struct gdma_context *gc = queue->gdma_dev->gdma_context; in mana_gd_post_and_ring() local
1085 mana_gd_wq_ring_doorbell(gc, queue); in mana_gd_post_and_ring()
1171 struct gdma_context *gc = pci_get_drvdata(pdev); in mana_gd_setup_irqs() local
1187 gc->irq_contexts = kcalloc(nvec, sizeof(struct gdma_irq_context), in mana_gd_setup_irqs()
1189 if (!gc->irq_contexts) { in mana_gd_setup_irqs()
1195 gic = &gc->irq_contexts[i]; in mana_gd_setup_irqs()
1210 err = mana_gd_alloc_res_map(nvec, &gc->msix_resource); in mana_gd_setup_irqs()
1214 gc->max_num_msix = nvec; in mana_gd_setup_irqs()
1215 gc->num_msix_usable = nvec; in mana_gd_setup_irqs()
1222 gic = &gc->irq_contexts[j]; in mana_gd_setup_irqs()
1226 kfree(gc->irq_contexts); in mana_gd_setup_irqs()
1227 gc->irq_contexts = NULL; in mana_gd_setup_irqs()
1235 struct gdma_context *gc = pci_get_drvdata(pdev); in mana_gd_remove_irqs() local
1239 if (gc->max_num_msix < 1) in mana_gd_remove_irqs()
1242 mana_gd_free_res_map(&gc->msix_resource); in mana_gd_remove_irqs()
1244 for (i = 0; i < gc->max_num_msix; i++) { in mana_gd_remove_irqs()
1249 gic = &gc->irq_contexts[i]; in mana_gd_remove_irqs()
1255 gc->max_num_msix = 0; in mana_gd_remove_irqs()
1256 gc->num_msix_usable = 0; in mana_gd_remove_irqs()
1257 kfree(gc->irq_contexts); in mana_gd_remove_irqs()
1258 gc->irq_contexts = NULL; in mana_gd_remove_irqs()
1263 struct gdma_context *gc = pci_get_drvdata(pdev); in mana_gd_setup() local
1267 mana_smc_init(&gc->shm_channel, gc->dev, gc->shm_base); in mana_gd_setup()
1273 err = mana_hwc_create_channel(gc); in mana_gd_setup()
1292 mana_hwc_destroy_channel(gc); in mana_gd_setup()
1300 struct gdma_context *gc = pci_get_drvdata(pdev); in mana_gd_cleanup() local
1302 mana_hwc_destroy_channel(gc); in mana_gd_cleanup()
1309 struct gdma_context *gc; in mana_gd_probe() local
1332 gc = vzalloc(sizeof(*gc)); in mana_gd_probe()
1333 if (!gc) in mana_gd_probe()
1336 mutex_init(&gc->eq_test_event_mutex); in mana_gd_probe()
1337 pci_set_drvdata(pdev, gc); in mana_gd_probe()
1343 gc->bar0_va = bar0_va; in mana_gd_probe()
1344 gc->dev = &pdev->dev; in mana_gd_probe()
1351 err = mana_probe(&gc->mana, false); in mana_gd_probe()
1363 vfree(gc); in mana_gd_probe()
1375 struct gdma_context *gc = pci_get_drvdata(pdev); in mana_gd_remove() local
1377 mana_remove(&gc->mana, false); in mana_gd_remove()
1381 pci_iounmap(pdev, gc->bar0_va); in mana_gd_remove()
1383 vfree(gc); in mana_gd_remove()
1393 struct gdma_context *gc = pci_get_drvdata(pdev); in mana_gd_suspend() local
1395 mana_remove(&gc->mana, true); in mana_gd_suspend()
1408 struct gdma_context *gc = pci_get_drvdata(pdev); in mana_gd_resume() local
1415 err = mana_probe(&gc->mana, true); in mana_gd_resume()
1425 struct gdma_context *gc = pci_get_drvdata(pdev); in mana_gd_shutdown() local
1429 mana_remove(&gc->mana, true); in mana_gd_shutdown()