Beispiel #1
0
static int
gf100_bar_kmap(struct nvkm_bar *bar, struct nvkm_mem *mem, u32 flags,
	       struct nvkm_vma *vma)
{
	struct gf100_bar_priv *priv = (void *)bar;
	int ret;

	ret = nvkm_vm_get(priv->bar[0].vm, mem->size << 12, 12, flags, vma);
	if (ret)
		return ret;

	nvkm_vm_map(vma, mem);
	return 0;
}
Beispiel #2
0
static int
nv04_sgdma_bind(struct ttm_tt *ttm, struct ttm_mem_reg *reg)
{
	struct nouveau_sgdma_be *nvbe = (struct nouveau_sgdma_be *)ttm;
	struct nvkm_mem *node = reg->mm_node;

	if (ttm->sg) {
		node->sg    = ttm->sg;
		node->pages = NULL;
	} else {
		node->sg    = NULL;
		node->pages = nvbe->ttm.dma_address;
	}
	node->size = (reg->num_pages << PAGE_SHIFT) >> 12;

	nvkm_vm_map(&node->vma[0], node);
	nvbe->node = node;
	return 0;
}