• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/sys/dev/mlx5/mlx5_core/

Lines Matching refs:fwp

51 	struct mlx5_fw_page *fwp;
54 fwp = (struct mlx5_fw_page *)arg;
55 owned = MLX5_DMA_OWNED(fwp->dev);
58 MLX5_DMA_LOCK(fwp->dev);
62 fwp->dma_addr = segs->ds_addr;
63 fwp->load_done = MLX5_LOAD_ST_SUCCESS;
65 fwp->load_done = MLX5_LOAD_ST_FAILURE;
67 MLX5_DMA_DONE(fwp->dev);
70 MLX5_DMA_UNLOCK(fwp->dev);
74 mlx5_fwp_flush(struct mlx5_fw_page *fwp)
76 unsigned num = fwp->numpages;
79 bus_dmamap_sync(fwp[num].dev->cmd.dma_tag, fwp[num].dma_map, BUS_DMASYNC_PREWRITE);
83 mlx5_fwp_invalidate(struct mlx5_fw_page *fwp)
85 unsigned num = fwp->numpages;
88 bus_dmamap_sync(fwp[num].dev->cmd.dma_tag, fwp[num].dma_map, BUS_DMASYNC_POSTREAD);
89 bus_dmamap_sync(fwp[num].dev->cmd.dma_tag, fwp[num].dma_map, BUS_DMASYNC_PREREAD);
96 struct mlx5_fw_page *fwp;
102 fwp = kzalloc(sizeof(*fwp), flags);
103 if (fwp != NULL)
104 fwp->dev = dev;
105 return (fwp);
112 fwp = kzalloc(sizeof(*fwp) * num, flags);
119 fwp[x].dev = dev;
121 fwp[x].numpages = num - x;
124 err = bus_dmamem_alloc(dev->cmd.dma_tag, &fwp[x].virt_addr,
125 BUS_DMA_WAITOK | BUS_DMA_COHERENT, &fwp[x].dma_map);
132 dev->cmd.dma_tag, fwp[x].dma_map, fwp[x].virt_addr,
134 fwp + x, BUS_DMA_WAITOK | BUS_DMA_COHERENT);
136 while (fwp[x].load_done == MLX5_LOAD_ST_NONE)
141 if (fwp[x].load_done != MLX5_LOAD_ST_SUCCESS) {
142 bus_dmamem_free(dev->cmd.dma_tag, fwp[x].virt_addr,
143 fwp[x].dma_map);
148 return (fwp);
152 bus_dmamap_unload(dev->cmd.dma_tag, fwp[x].dma_map);
153 bus_dmamem_free(dev->cmd.dma_tag, fwp[x].virt_addr, fwp[x].dma_map);
156 kfree(fwp);
161 mlx5_fwp_free(struct mlx5_fw_page *fwp)
167 if (fwp == NULL)
171 if (fwp->numpages == 0) {
172 kfree(fwp);
176 num = fwp->numpages;
177 dev = fwp->dev;
180 bus_dmamap_unload(dev->cmd.dma_tag, fwp[num].dma_map);
181 bus_dmamem_free(dev->cmd.dma_tag, fwp[num].virt_addr, fwp[num].dma_map);
184 kfree(fwp);
188 mlx5_fwp_get_dma(struct mlx5_fw_page *fwp, size_t offset)
191 KASSERT(index < fwp->numpages, ("Invalid offset: %lld", (long long)offset));
193 return ((fwp + index)->dma_addr + (offset % MLX5_ADAPTER_PAGE_SIZE));
197 mlx5_fwp_get_virt(struct mlx5_fw_page *fwp, size_t offset)
200 KASSERT(index < fwp->numpages, ("Invalid offset: %lld", (long long)offset));
202 return ((char *)(fwp + index)->virt_addr + (offset % MLX5_ADAPTER_PAGE_SIZE));
255 struct mlx5_fw_page *fwp;
258 fwp = mlx5_fwp_alloc(dev, GFP_KERNEL, 1);
259 if (fwp == NULL)
262 fwp->func_id = func_id;
265 err = mlx5_insert_fw_page_locked(dev, fwp);
269 mlx5_fwp_free(fwp);
272 mlx5_fwp_invalidate(fwp);
275 *addr = fwp->dma_addr;
283 struct mlx5_fw_page *fwp;
286 fwp = mlx5_remove_fw_page_locked(dev, addr);
289 if (fwp == NULL) {
293 mlx5_fwp_free(fwp);
387 struct mlx5_fw_page *fwp;
402 fwp = rb_entry(p, struct mlx5_fw_page, rb_node);
404 if (fwp->func_id != func_id)
407 MLX5_ARRAY_SET64(manage_pages_out, out, pas, i, fwp->dma_addr);
557 struct mlx5_fw_page *fwp;
565 fwp = rb_entry(p, struct mlx5_fw_page, rb_node);
566 err = reclaim_pages(dev, fwp->func_id,