dmamem
struct rtkit_dmamem dmamem[32];
if (state->ndmamem >= nitems(state->dmamem))
state->dmamem[state->ndmamem].rdm_map = map;
state->dmamem[state->ndmamem].rdm_seg = seg;
state->dmamem[state->ndmamem].rdm_size = size;
state->dmamem[state->ndmamem].rdm_kva = kva;
state->dmamem[i].rdm_seg.ds_addr,
state->dmamem[i].rdm_seg.ds_len);
bus_dmamap_unload(rk->rk_dmat, state->dmamem[i].rdm_map);
bus_dmamap_destroy(rk->rk_dmat, state->dmamem[i].rdm_map);
bus_dmamem_unmap(rk->rk_dmat, state->dmamem[i].rdm_kva,
state->dmamem[i].rdm_size);
bus_dmamem_free(rk->rk_dmat, &state->dmamem[i].rdm_seg, 1);
htole32((((DMAADDR(mem->dmamem) +
return (KERNADDR(mem->dmamem));
return (KERNADDR(mem->dmamem));
if (KERNADDR(mem->dmamem) != ptr)
DMAADDR(mem->dmamem));
if (KERNADDR(mem->dmamem) != ptr)
numblocks = DMASIZE(mem->dmamem) / EMU_PTESIZE;
if (DMASIZE(mem->dmamem) % EMU_PTESIZE)
emuxki_dmamem_delete(struct dmamem *mem, int type)
struct dmamem *
struct dmamem *mem;
emuxki_dmamem_free(struct dmamem *mem, int type)
struct dmamem *emuxki_dmamem_alloc(bus_dma_tag_t, size_t, bus_size_t,
void emuxki_dmamem_free(struct dmamem *, int);
void emuxki_dmamem_delete(struct dmamem *mem, int type);
if ((mem->dmamem = emuxki_dmamem_alloc(sc->sc_dmat, size,
emuxki_dmamem_free(mem->dmamem, type);
struct dmamem *ptb;
struct dmamem *silentpage;
struct dmamem *dmamem;
} __packed *dmamem;
sc->sc_ctx = nxe_dmamem_alloc(sc, sizeof(*dmamem), PAGE_SIZE);
dmamem = NXE_DMA_KVA(sc->sc_ctx);
ctx = &dmamem->ctx;
ctx->ctx_cmd_consumer_addr = htole64(dva + sizeof(dmamem->ctx));
sc->sc_cmd_consumer = &dmamem->cmd_consumer;
if (ring->dmamem) {
qwx_dmamem_free(sc->sc_dmat, ring->dmamem);
ring->dmamem = NULL;
ring->dmamem = qwx_dmamem_alloc(sc->sc_dmat, size, size);
if (ring->dmamem == NULL)
if (ring->dmamem) {
qwx_dmamem_free(sc->sc_dmat, ring->dmamem);
ring->dmamem = NULL;
ring->dmamem = qwx_dmamem_alloc(sc->sc_dmat, size, size);
if (ring->dmamem == NULL)
if (ring->dmamem)
qwx_dmamem_free(sc->sc_dmat, ring->dmamem);
ring->dmamem = qwx_dmamem_alloc(sc->sc_dmat, ring->size, ring->size);
if (ring->dmamem == NULL)
paddr = QWX_DMA_DVA(ring->dmamem);
paddr = QWX_DMA_DVA(ring->dmamem);
uint64_t base = QWX_DMA_DVA(ring->dmamem), offset;
return QWX_DMA_KVA(ring->dmamem) + offset;
uint64_t base = QWX_DMA_DVA(ring->dmamem);
uint64_t base = QWX_DMA_DVA(ring->dmamem), offset;
void *addr = QWX_DMA_KVA(ring->dmamem);
uint64_t base = QWX_DMA_DVA(ring->dmamem), offset;
bus_dmamap_sync(sc->sc_dmat, QWX_DMA_MAP(ring->dmamem),
0, QWX_DMA_LEN(ring->dmamem), BUS_DMASYNC_PREWRITE);
base = QWX_DMA_DVA(ring->dmamem);
struct qwx_dmamem *dmamem;
paddr = QWX_DMA_DVA(ring->dmamem);
uint64_t wp = QWX_DMA_DVA(ring->dmamem);
bus_dmamap_sync(sc->sc_dmat, QWX_DMA_MAP(ring->dmamem), 0,
QWX_DMA_LEN(ring->dmamem), BUS_DMASYNC_PREWRITE);
struct qwx_dmamem *dmamem;
struct qwx_dmamem *dmamem;
uint64_t base = QWX_DMA_DVA(ring->dmamem), offset;
void *addr = QWX_DMA_KVA(ring->dmamem);
uint64_t base = QWX_DMA_DVA(cmd_ring->dmamem);
base = QWX_DMA_DVA(ring->dmamem);
bus_dmamap_sync(sc->sc_dmat, QWX_DMA_MAP(ring->dmamem),
0, QWX_DMA_LEN(ring->dmamem), BUS_DMASYNC_POSTREAD);
base = QWX_DMA_DVA(ring->dmamem);
base = QWX_DMA_DVA(ring->dmamem);
bus_dmamap_sync(sc->sc_dmat, QWX_DMA_MAP(ring->dmamem),
0, QWX_DMA_LEN(ring->dmamem), BUS_DMASYNC_POSTREAD);
if (ring->dmamem) {
qwz_dmamem_free(sc->sc_dmat, ring->dmamem);
ring->dmamem = NULL;
ring->dmamem = qwz_dmamem_alloc(sc->sc_dmat, size, size);
if (ring->dmamem == NULL)
if (ring->dmamem) {
qwz_dmamem_free(sc->sc_dmat, ring->dmamem);
ring->dmamem = NULL;
ring->dmamem = qwz_dmamem_alloc(sc->sc_dmat, size, size);
if (ring->dmamem == NULL)
if (ring->dmamem)
qwz_dmamem_free(sc->sc_dmat, ring->dmamem);
ring->dmamem = qwz_dmamem_alloc(sc->sc_dmat, ring->size, ring->size);
if (ring->dmamem == NULL)
paddr = QWZ_DMA_DVA(ring->dmamem);
paddr = QWZ_DMA_DVA(ring->dmamem);
uint64_t base = QWZ_DMA_DVA(ring->dmamem), offset;
return QWZ_DMA_KVA(ring->dmamem) + offset;
uint64_t base = QWZ_DMA_DVA(ring->dmamem);
uint64_t base = QWZ_DMA_DVA(ring->dmamem), offset;
void *addr = QWZ_DMA_KVA(ring->dmamem);
uint64_t base = QWZ_DMA_DVA(ring->dmamem), offset;
bus_dmamap_sync(sc->sc_dmat, QWZ_DMA_MAP(ring->dmamem),
0, QWZ_DMA_LEN(ring->dmamem), BUS_DMASYNC_PREWRITE);
base = QWZ_DMA_DVA(ring->dmamem);
paddr = QWZ_DMA_DVA(ring->dmamem);
uint64_t wp = QWZ_DMA_DVA(ring->dmamem);
bus_dmamap_sync(sc->sc_dmat, QWZ_DMA_MAP(ring->dmamem), 0,
QWZ_DMA_LEN(ring->dmamem), BUS_DMASYNC_PREWRITE);
struct qwz_dmamem *dmamem;
struct qwz_dmamem *dmamem;
struct qwz_dmamem *dmamem;
uint64_t base = QWZ_DMA_DVA(ring->dmamem), offset;
void *addr = QWZ_DMA_KVA(ring->dmamem);
uint64_t base = QWZ_DMA_DVA(cmd_ring->dmamem);
base = QWZ_DMA_DVA(ring->dmamem);
bus_dmamap_sync(sc->sc_dmat, QWZ_DMA_MAP(ring->dmamem),
0, QWZ_DMA_LEN(ring->dmamem), BUS_DMASYNC_POSTREAD);
base = QWZ_DMA_DVA(ring->dmamem);
base = QWZ_DMA_DVA(ring->dmamem);
bus_dmamap_sync(sc->sc_dmat, QWZ_DMA_MAP(ring->dmamem),
0, QWZ_DMA_LEN(ring->dmamem), BUS_DMASYNC_POSTREAD);
bus_dmamap_sync(sc->sc_dmat, VMX_DMA_MAP(&comp_ring->dmamem),
0, VMX_DMA_LEN(&comp_ring->dmamem), BUS_DMASYNC_POSTREAD);
bus_dmamap_sync(sc->sc_dmat, VMX_DMA_MAP(&comp_ring->dmamem),
0, VMX_DMA_LEN(&comp_ring->dmamem), BUS_DMASYNC_PREREAD);
struct vmx_dmamem dmamem;
bus_dmamap_sync(sc->sc_dmat, VMX_DMA_MAP(&comp_ring->dmamem),
0, VMX_DMA_LEN(&comp_ring->dmamem), BUS_DMASYNC_POSTREAD);
bus_dmamap_sync(sc->sc_dmat, VMX_DMA_MAP(&comp_ring->dmamem),
0, VMX_DMA_LEN(&comp_ring->dmamem), BUS_DMASYNC_PREREAD);
bus_dmamap_sync(sc->sc_dmat, VMX_DMA_MAP(&ring->dmamem),
0, VMX_DMA_LEN(&ring->dmamem), BUS_DMASYNC_POSTWRITE);
bus_dmamap_sync(sc->sc_dmat, VMX_DMA_MAP(&ring->dmamem),
0, VMX_DMA_LEN(&ring->dmamem),
bus_dmamap_sync(sc->sc_dmat, VMX_DMA_MAP(&ring->dmamem),
0, VMX_DMA_LEN(&ring->dmamem), BUS_DMASYNC_PREWRITE);
if (vmx_dmamem_alloc(sc, &ring->dmamem,
ring->txd = VMX_DMA_KVA(&ring->dmamem);
if (vmx_dmamem_alloc(sc, &comp_ring->dmamem,
comp_ring->txcd = VMX_DMA_KVA(&comp_ring->dmamem);
ts->cmd_ring = VMX_DMA_DVA(&ring->dmamem);
ts->comp_ring = VMX_DMA_DVA(&comp_ring->dmamem);
if (vmx_dmamem_alloc(sc, &ring->dmamem,
ring->rxd = VMX_DMA_KVA(&ring->dmamem);
if (vmx_dmamem_alloc(sc, &comp_ring->dmamem,
comp_ring->rxcd = VMX_DMA_KVA(&comp_ring->dmamem);
rs->cmd_ring[0] = VMX_DMA_DVA(&rq->cmd_ring[0].dmamem);
rs->cmd_ring[1] = VMX_DMA_DVA(&rq->cmd_ring[1].dmamem);
rs->comp_ring = VMX_DMA_DVA(&comp_ring->dmamem);
memset(VMX_DMA_KVA(&ring->dmamem), 0,
VMX_DMA_LEN(&ring->dmamem));
bus_dmamap_sync(sc->sc_dmat, VMX_DMA_MAP(&ring->dmamem),
0, VMX_DMA_LEN(&ring->dmamem), BUS_DMASYNC_PREWRITE);
memset(VMX_DMA_KVA(&comp_ring->dmamem), 0,
VMX_DMA_LEN(&comp_ring->dmamem));
bus_dmamap_sync(sc->sc_dmat, VMX_DMA_MAP(&comp_ring->dmamem),
0, VMX_DMA_LEN(&comp_ring->dmamem), BUS_DMASYNC_PREREAD);
bus_dmamap_sync(sc->sc_dmat, VMX_DMA_MAP(&ring->dmamem),
0, VMX_DMA_LEN(&ring->dmamem), BUS_DMASYNC_POSTWRITE);
bus_dmamap_sync(sc->sc_dmat, VMX_DMA_MAP(&ring->dmamem),
0, VMX_DMA_LEN(&ring->dmamem),
bus_dmamap_sync(sc->sc_dmat, VMX_DMA_MAP(&ring->dmamem),
0, VMX_DMA_LEN(&ring->dmamem), BUS_DMASYNC_PREWRITE);
memset(VMX_DMA_KVA(&ring->dmamem), 0,
VMX_DMA_LEN(&ring->dmamem));
bus_dmamap_sync(sc->sc_dmat, VMX_DMA_MAP(&ring->dmamem),
0, VMX_DMA_LEN(&ring->dmamem), BUS_DMASYNC_PREWRITE);
memset(VMX_DMA_KVA(&comp_ring->dmamem), 0,
VMX_DMA_LEN(&comp_ring->dmamem));
bus_dmamap_sync(sc->sc_dmat, VMX_DMA_MAP(&comp_ring->dmamem),
0, VMX_DMA_LEN(&comp_ring->dmamem), BUS_DMASYNC_PREREAD);
struct vmx_dmamem dmamem;
bus_dmamap_sync(sc->sc_dmat, VMX_DMA_MAP(&comp_ring->dmamem),
0, VMX_DMA_LEN(&comp_ring->dmamem), BUS_DMASYNC_POSTREAD);
bus_dmamap_sync(sc->sc_dmat, VMX_DMA_MAP(&ring->dmamem),
0, VMX_DMA_LEN(&ring->dmamem), BUS_DMASYNC_POSTWRITE);
bus_dmamap_sync(sc->sc_dmat, VMX_DMA_MAP(&comp_ring->dmamem),
0, VMX_DMA_LEN(&comp_ring->dmamem), BUS_DMASYNC_POSTREAD);
bus_dmamap_sync(sc->sc_dmat, VMX_DMA_MAP(&ring->dmamem),
0, VMX_DMA_LEN(&ring->dmamem), BUS_DMASYNC_POSTWRITE);
struct vmx_dmamem dmamem;
ips_dmamem_alloc(struct dmamem *dm, bus_dma_tag_t tag, bus_size_t size)
ips_dmamem_free(struct dmamem *dm)
struct dmamem sc_infom;
struct dmamem sc_cmdbm;
struct dmamem sc_sqm;
int ips_dmamem_alloc(struct dmamem *, bus_dma_tag_t, bus_size_t);
void ips_dmamem_free(struct dmamem *);